我用定时器扫描数码管,编写一个时钟的程序时,数码管上只有那个秒的个位是亮的,而其它都是很暗,这是什么原因???求大神。。。。下面是代码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar duan[8];
uchar h,m,s;
/*void delay(uint t)
{
while(t--);
} */
void T_0()
{
TMOD|=0x01;
//TH0=0x00;
//TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
main()
{
void display(uchar f,uchar n);
T_0();
while(1)
{
duan[0]=table[h/10];
duan[1]=table[h%10];
duan[2]=0x40;
duan[3]=table[m/10];
duan[4]=table[m%10];
duan[5]=0x40;
duan[6]=table[s/10];
duan[7]=table[s%10];
}
}
void display(uchar f,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
P0=0x00;
P1=wei[i+f];
P0=duan
;
}
}
void Te_0() interrupt 1
{
static uint t;
TH0=(65536-2000)/256; //2ms
TL0=(65536-2000)%256;
display(0,8);
t++;
if(t==500)
{
t=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}
}
但是如果这样:
void display(uchar f,uchar n)
{
uchar i,j=20;
for(i=0;i<n;i++)
{
P0=0x00;
P1=wei[i+f];
P0=duan;
while(j--);
}
那么那个秒就变得很慢了,与真正的一秒相差很远。。。
一周热门 更多>