如下这段程序是用T0定时器来让动态数码管间隔0.5s显示1到8;程序编译没有错误,但就是无法运行,数码管一直不亮灯。
请教下这是哪里的问题?谢谢!
单片机源程序如下:
#include <reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uint tt,a;
sbit LSA=P1^0;
sbit LSB=P1^1;
sbit LSC=P1^2;
uchar code DM[8]={0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F}; //共阴数码管
void main()
{
while(1)
{
TMOD=0x01; //设置定时器0的工作方式
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开启总中断,
ET0=1; //开启T0的中断
TR0=1; //开启定时器T0;
tt=0;
P0=0x00;
a=0;
tt=0;
if(tt==10)
{
switch(a)
{
case 0:LSA=0;LSB=0;LSC=0;break;
case 1:LSA=0;LSB=0;LSC=1;break;
case 2:LSA=0;LSB=1;LSC=0;break;
case 3:LSA=0;LSB=1;LSC=1;break;
case 4:LSA=1;LSB=0;LSC=0;break;
case 5:LSA=1;LSB=0;LSC=1;break;
case 6:LSA=1;LSB=1;LSC=0;break;
case 7:LSA=1;LSB=1;LSC=1;break;
}
P0=DM[a];
a++;
if(a>7) a=0;
tt=0;
}
}
}
void T0l() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //定时器设置50ms
tt++;
}
|