程序沒有報錯,也沒有警告,運行只能顯示00 00 00,實在搞不明白了,請教各位師傅。
P0是數碼管段位,P2是位位。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char code table[16]={ //共陰數碼管
0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char code dizhi[6]={ //時分秒地址
0xfe,0xfd,0xf7,0xef,0xbf,0x7f};
uchar num,hour1,min1,sec1;
void delays(uint);
void display(uchar hour,uchar min,uchar sec)
{
uchar m1,m2,f1,f2,s1,s2;
m1=sec/10;
m2=sec%10;
f1=min/10;
f2=min%10;
s1=hour/10;
s2=hour%10;
P0=table[m1];
P2=dizhi[0];
delays(5);
P0=table[m2];
P2=dizhi[1];
delays(5);
P0=table[f1];
P2=dizhi[2];
delays(5);
P0=table[f2];
P2=dizhi[3];
delays(5);
P0=table[s1];
P2=dizhi[4];
delays(5);
P0=table[s2];
P2=dizhi[5];
delays(5);
}
void delays(uint xms) //延時
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init() //初始化函數
{
TMOD=0x01; //設置定時器0工作方式1
TH0=(65536-45872)/256; //定時50ms
TL0=(65536-45872)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
}
void main() //主函數
{
init();
while(1)
{
display(hour1, min1, sec1);
}
}
void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20) //如果到了20次說明1秒到
{
num=0; //然后把num清0,重新再計算20次
sec1++;
if(sec1==60); //如果到了60次說明到1分鐘
{
sec1=0; //然后把miao清0,重新再計算60次
min1++;
if(min1==60); //如果到了60次,說明到1小時
{
min1=0; //清0,重新再計算60次
hour1++;
if(hour1==24); //如果到了24次,說明1天結束
{
hour1=0; //清0
}
}
}
}
}
數碼管只顯示00 00 00,是什么問題啊?謝謝
|