单片机
回帖(1)
2021-10-13 15:34:36
最近自学51单片机编程,看大神http://home.eeworld.com.cn/home.php?mod=space&uid=139222&do=blog&classid=988&view=me 的文章,看了前几个,迫不及待的上手,写了一个流水灯的小程序,开始也看了一些算法,看不懂,所以自己研究,写了个算法,算法不好,但好在好理解。
我的第一个单片机程序,让八个灯循环闪烁。
#include
#define TIME 5
void delay(int time){ //延时代码
int i,j;
for(i=1000; i>0; i--)
for(j=time; j>0; j--);
}
int diff(int count){ //算2的i次方
int i,rs = 1;
for (i = 0; i < count; i++) {
rs *= 2;
}
return rs;
}
void flicker(int time){ //闪烁算法
int i,j = -1;
for(i = 254; i>0; i = (i - diff(j))){
P1 = i;
delay(time);
P1 = 0xff;
delay(time);
j++;
}
}
void main(void) //主程序,无限循环
{
while(1){
flicker(TIME);
}
}

254-2^i即为要亮的灯。
最近自学51单片机编程,看大神http://home.eeworld.com.cn/home.php?mod=space&uid=139222&do=blog&classid=988&view=me 的文章,看了前几个,迫不及待的上手,写了一个流水灯的小程序,开始也看了一些算法,看不懂,所以自己研究,写了个算法,算法不好,但好在好理解。
我的第一个单片机程序,让八个灯循环闪烁。
#include
#define TIME 5
void delay(int time){ //延时代码
int i,j;
for(i=1000; i>0; i--)
for(j=time; j>0; j--);
}
int diff(int count){ //算2的i次方
int i,rs = 1;
for (i = 0; i < count; i++) {
rs *= 2;
}
return rs;
}
void flicker(int time){ //闪烁算法
int i,j = -1;
for(i = 254; i>0; i = (i - diff(j))){
P1 = i;
delay(time);
P1 = 0xff;
delay(time);
j++;
}
}
void main(void) //主程序,无限循环
{
while(1){
flicker(TIME);
}
}

254-2^i即为要亮的灯。
举报
更多回帖