很多网友都对流水灯感兴趣,给2个流水灯程序
下面给出两个程序。
//================================================
//利用单片机定时器中断,使P0口外接的8个发光二极管以1位1s的速度,轮流发光。
//================================================
#include
#include
#define ucha unsigned char
#define uint unsigned int
void init();
ucha b = 0;
//----------------------------
main()
{
ucha a = 0xfe;
P0 = a;
init();
while(1) {
if(b == 20) { //如果中断了20次.
b = 0; //就是1s
a = _crol_(a, 1);//移位
P0 = a; //输出
}
}
}
//----------------------------
void init()
{
TMOD = 0x01; //T0定时方式0
TH0 = (65536 - 50000) / 256; //定时
TL0 = (65536 - 50000) % 256;
TR0 = 1; //启动
ET0 = 1; //开放中断
EA = 1;
}
//----------------------------
void timer0() interrupt 1 //每隔50ms中断一次
{
TH0 = (65536 - 50000) / 256; //恢复初始值
TL0 = (65536 - 50000) % 256;
b++; //中断次数加一
}
/*
//================================================
//利用单片机软件延时,使P0口外接的8个发光二极管以1位1s的速度,轮流发光。
//================================================
#include
#include
#define ucha unsigned char
#define uint unsigned int
//----------------------------
ucha a;
//----------------------------
void main()
{
uint i, j;
a = 0xfe;
while(1) {
a = _crol_(a, 1);
P0 = a;
for(i = 250; i > 0; i--) //多次循环,目的是延时
for(j = 500; j > 0; j--);
}
}
//============================
*/
上述两个程序,可以用PROTEUS仿真,截屏画面如下:
编辑:admin 最后修改时间:2018-05-18