我们先生成一个1ms延迟的延迟函数
#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms(unsigned int x) //@11.0592MHz
{
unsigned char i, j;
while(x){
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
x--;
}
}
void main() {
while (1) {
P2 = 0xFE; // 1111 1110
Delay1ms(100);
P2 = 0xFD; // 1111 1101
Delay1ms(100);
P2 = 0xFB; // 1111 1011
Delay1ms(100);
P2 = 0xF7; // 1111 0111
Delay1ms(100);
P2 = 0xEF; // 1110 1111
Delay1ms(100);
P2 = 0xDF; // 1101 1111
Delay1ms(100);
P2 = 0xBF; // 1011 1111
Delay1ms(100);
P2 = 0x7F; // 0111 1111
Delay1ms(100);
}
}
在Delay1ms函数中我们将由stc-isp生成的函数内容发放到了while循环中,循环变量为我们设置的x这样
我们只需要改变x的数值,就可以控制流水灯的延时时长。