1、添加头文件<stc8h.h>,必须是小写,不然keil不认。(不知道为什么keil不认小写,反正能用就行)
#include <stc8h.h>
1.1、若要使用空指令“_nop_()”作为软件延迟,记得添加#include <intrins.h>
#include "intrins.h"
2、使用STC-ISP 内的软件计时器生成延迟代码,我是用的stc8h系列,指令集选择stc-v6;系统频率我选的是24Mhz。(好多人都用24M,那我也用吧)
2.2、将延迟函数重写,便于随时修改延迟。
void delay_ms(unsigned int i)
{
do
{
unsigned char i, j;
_nop_();
i = 32;
j = 40;
do
{
while (--j);
} while (--i);
}
while(i--);
}
3、主函数内实现LED闪烁
注意:
1、一定要“使能访问XFR”,这样软件延迟才准确!!!
2、IO口需要设置为 准双向口 或 推挽模式。
3、开天斧的OLED正极接在VCC上,负极通过限流电阻接在IO上,LED亮起需要将IO拉低。
void main()
{
P_SW2 |= 0x80; //使能访问XFR
// P2M0 = 0x1; //设置P21为推挽输出
// P2M1 = 0x0; //设置P21为推挽输出
P2M0 = 0x00; //设置P20-P27为双向口模式
P2M1 = 0x00; //设置P20-P27为双向口模式
while(1)
{
P20 = 0;
delay_ms(250);
P20= 1;
delay_ms(250);
}
}
具体的四种模式看说明手册👇:
4、结束
别问为啥这么写,我啥也不知道。