百度知道 - 信息提示
8051单片机,用P0口控制8个LED实现循环彩灯。
跑马灯。网上一大把。
我就解释下间隔一秒的那个,时间常数。
看你用的定时器方式。一般用方式1。若频率是24mhz,机器周期为0.5us。所以计数次数为1s/0.5us=200000次超过了范围。所以用循环。可以50000循环4次或其他次数。算出技术初值。
8051单片机,用P0口控制8个LED实现循环彩灯.循环显示规律为:全亮,全灭,依次点亮全灭。 间隔时间1秒。
#include
#define uchar unsigned char
uchar times,cnt;
uchar led[]={0x00,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(times>=40)
{
times=0;
P0=led[cnt];
cnt++;
cnt%=11;
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
//程序很简单,你自己加注释和完成其他工作吧。