本节需要注意的点包括:
(1)LED每隔500ms闪烁一次。 可以利用STC-ISP工具软件中的“软件延时计算器”功能,设置好晶振频率(本芯片是12MHz)与产生的延时值,同时选择“8051指令集”选项为“STC-Y1”,具体选择与其支持的系列有关。
(2)上述自动生成的延时函数中,有一个_nop_()函数,需要引用头文件 #include <INTRINS.H> 。
关于 nop()函数,C语言中没有_nop_()函数,该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令。
nop()函数相当于一个空操作(可以理解为NOP空操作指令),而_nop_()函数的空操作产生的时间与晶振有关:
晶振属性 | 延长时间 |
---|---|
6M | 2μs |
12M | 1μs |
24M | 0.5μs |
比如,STC89Cxx系列的100us延时参考程序(晶振为12M)如下:
//100us
void Delay100us() //@12.000MHz
{
unsigned char i;
_nop_();
i = 47;
while (--i);
}