定时器T1每0.05秒中断一次,单片机P1口接8个发光二极管LED0~LED7,编写程序,使发光

定时器T1每0.05秒中断一次,单片机P1口接8个发光二极管LED0~LED7,编写程序,使发光二极管有规律地循环点亮。例如:开机后,第一秒钟LED0、LED2亮,第二秒钟LED1、LED3亮,第三秒钟LED4、LED6亮,第四秒钟LED5、LED7亮,第五秒钟LED0、LED2、LED4、LED6亮,第六秒钟LED1、LED3、LED5、LED7亮,第七秒钟全亮,第八秒钟全灭;再从头开始一直循环下去。

太简单了,顺手做一个给你吧
//51单片机
//11.0592MHz
#include <reg51.h>
unsigned char temp;
main()
{
TMOD=0x10;//定时器1 方式1:16位
TH1=0x3C;//3CAF=15535=65535-50000
TL1=0xAF;
TR1=1; //打开定时器1
ET1=1;//允许定时器1中断
EA=1;//打开总中断
while(1);
}
void timer1() interrupt 3
{
statc unsigned char t;
t++;
TH1=0x3C; //重装
TL1=0xAF;
if(t==20)//定时器为50000us,即进来定时器20次为1秒
{
//没说明LED另一端接地或接VCC,假设接地
P1=0x03;//先亮前两个
temp=0x03;
temp<<=2;//temp左移两位给P1口循环点亮两个LED
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-24
这个用延时的话估计好写一点,我对定时器用的不是很熟,所以我建议你用一下延时看看,那样实现的话比较简单本回答被网友采纳
第2个回答  2010-11-24
0.05秒中断一次?
相似回答