一、新建工程
二、流水灯代码
#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xFE;//1111 1110
Delay500ms();
P2=0xFD;//1111 1101
Delay500ms();
P2=0xFB;//1111 1011
Delay500ms();
P2=0xF7;//1111 0111
Delay500ms();
P2=0xEF;//1110 1111
Delay500ms();
P2=0xDF;//1101 1111
Delay500ms();
P2=0xBF;//1011 1111
Delay500ms();
P2=0x7F;//0111 1111
Delay500ms();
}
}
三、如果想改延时时长,又要重新在延时计算器输入,十分不灵活;所以设计方法,通过改变参数来改变延时时长。
1.先生成延时1ms的代码
说明:
单片机是存储代码执行代码的工作,所以变量的计算就尤为重要,比如让单片机执行1+1,首先要有能力把1和相加的结果存储下来,于是就有存数据的小盒子
改进后代码:
#include <REGX52.H>
#include <INTRINS.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=0xFE;
Delay1ms(900);传参
P2=0xFD;
Delay1ms(900);
P2=0xFB;
Delay1ms(900);
P2=0xF7;
Delay1ms(900);
P2=0xEF;
Delay1ms(900);
P2=0xDF;
Delay1ms(900);
P2=0xBF;
Delay1ms(900);
P2=0x7F;
Delay1ms(900);
}
}