问题描述:流水灯只依次循环点亮一遍。我想让它一直在循环点亮。
题目:如图8-3所示,P1口外接8个LED灯,要求编程实现循环流水灯功能,时间间隔0.5s,单片机外接晶振12MHz。
(所用实现方法:用定时器T0实现精确定时0.5s,将0.5s分解为100个5000us,用定时器T0的方式0实现。)
#include < reg51.h>
unsigned char count=0,i=0;
unsigned char s=0xfe;
//主函数
main ( )
{
P1=0xfe;
TMOD=0x00;
TH0=0x63;
TL0=0x18;
ET0=1;
EA=1;
TR0=1;
while(1);
}
//服务函数
void Timer0_int( ) interrupt 1
{
count++;
if (count==100)
{
count=0;
i++;
if(i<8)
{
s=s<<1;
s=s^0x01;
P1=s;
}
else
i=0;
}
TH0=0x63;
TL0=0x18;
}
|