第一种:函数方式
延迟函数(根据视觉暂停的原理,通过延迟,从而达到灯逐个点亮的效果)
void Delay1ms(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms)
{ i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
延迟函数代码可以在烧录软件中实现(如图所示)
需要注意的地方:
1.8051指令集选择与自己板子型号相同的
2.生成的C语言代码中,直接编译会报错。因为里面有一个nop()函数,这个是可以使延迟的时间更加精准,如果没有特别高的要求,可以直接把这个函数删掉。
3.如果想自己控制延时的时间,可以在延时函数中加一个形参,例如延时函数代码所示
完整代码:
#include <REGX52.H>
void Delay1ms(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms)
{ i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
P2=0xf