51单片机学习笔记———8.点亮流水灯的一种奇葩算法
51单片机学习笔记———8.点亮流水灯的一种奇葩算法
最近学习51
单片机的过程发现了一种脑洞大开点亮流水灯的方法,于此分享一下源码:
#include<reg52.h>
sbit LED0 = P0^0;
sbit LED1 = P0^1;
sbit LED2 = P0^2;
sbit LED3 = P0^3;
sbit LED4 = P0^4;
sbit LED5 = P0^5;
sbit LED6 = P0^6;
sbit LED7 = P0^7;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void Delay2000ms() //@11.0592MHz
{unsigned char i, j, k;i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}
void main()
{unsigned char i = 0;ENLED = 0;ADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0; while(1){i++;LED0 = (i)%8;LED1 = (i+1)%8;LED2 = (i+2)%8;LED3 = (i+3)%8;LED4 = (i+4)%8;LED5 = (i+5)%8;LED6 = (i+6)%8;LED7 = (i+7)%8; Delay2000ms();}
}
值得博主一提的是,最近观看网上的视频发现了一种计算延时的方法,输入想要延时的秒数,然后软件自动生成C
代码,用的是STC-ISP
烧录软件里面的小程序,具体方法如下:
不过需要注意的是:
里面有一段代码需要引入头文件,刚开始学习的能会找不到该头文件,于是可以将上面的代码删掉一句:
_nop_();
编译的时候就不会提示缺少头文件了,而且还能正常运行。
发布评论