您当前的位置:首页 > 基础知识 > 单片机  > 单片机常见问题

很多网友都对流水灯感兴趣,给2个流水灯程序

来源:21ic 关键字:流水灯   

 下面给出两个程序。

//================================================

//利用单片机定时器中断,使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仿真,截屏画面如下:

1.png