8051单片机,用P0口控制8个LED实现循环彩灯.循环显示规律为:全亮,全灭,依次点亮全灭。 间隔时间1秒。

时钟频率为24MHz,采用定时器1.要求:
——画出单片机和LED连接的示意图
——设计定时中断方案(用哪些寄存器、如何实现1秒定时等),算出定时常数
——画出C应用程序的流程图
——写出带有注释的相应C程序。

#include<reg51.h>
#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);
}
//程序很简单,你自己加注释和完成其他工作吧。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答