|
|
如下這段程序是用T0定時(shí)器來(lái)讓動(dòng)態(tài)數(shù)碼管間隔0.5s顯示1到8;程序編譯沒(méi)有錯(cuò)誤,但就是無(wú)法運(yùn)行,數(shù)碼管一直不亮燈。
請(qǐng)教下這是哪里的問(wèn)題?謝謝!
單片機(jī)源程序如下:
#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}; //共陰數(shù)碼管
void main()
{
while(1)
{
TMOD=0x01; //設(shè)置定時(shí)器0的工作方式
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //開(kāi)啟總中斷,
ET0=1; //開(kāi)啟T0的中斷
TR0=1; //開(kāi)啟定時(shí)器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; //定時(shí)器設(shè)置50ms
tt++;
}
|
|