很多網(wǎng)友都對(duì)流水燈感興趣,給2個(gè)流水燈程序
下面給出兩個(gè)程序。
//================================================
//利用單片機(jī)定時(shí)器中斷,使P0口外接的8個(gè)發(fā)光二極管以1位1s的速度,輪流發(fā)光。
//================================================
#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定時(shí)方式0
TH0 = (65536 - 50000) / 256; //定時(shí)
TL0 = (65536 - 50000) % 256;
TR0 = 1; //啟動(dòng)
ET0 = 1; //開放中斷
EA = 1;
}
//----------------------------
void timer0() interrupt 1 //每隔50ms中斷一次
{
TH0 = (65536 - 50000) / 256; //恢復(fù)初始值
TL0 = (65536 - 50000) % 256;
b++; //中斷次數(shù)加一
}
/*
//================================================
//利用單片機(jī)軟件延時(shí),使P0口外接的8個(gè)發(fā)光二極管以1位1s的速度,輪流發(fā)光。
//================================================
#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--) //多次循環(huán),目的是延時(shí)
for(j = 500; j > 0; j--);
}
}
//============================
*/
上述兩個(gè)程序,可以用PROTEUS仿真,截屏畫面如下:
編輯:admin 最后修改時(shí)間:2018-05-18