數(shù)碼管個位能正常顯示,十位一閃一閃的,想問一下怎么解決?
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code zixingma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
sbit P20=P2^0;
sbit P21=P2^1;
uchar s,k;
void delay5ms()
{
uchar i,j;
for(i=10;i>0;i--)
for(j=248;j>0;j--);
}
void t_0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
k--;
if(k==0)
{
s++;
k=20;
SBUF=s;
if(s==10)
{
s=0;
}
}
}
void tr() interrupt 4
{
if(TI)
{
TI=0;
}
if(RI)
{
RI=0;
P0=0xff;
P20=1;
P21=0;
P0=zixingma[SBUF/10];
delay5ms();
P0=0xff;
P20=0;
P21=1;
P0=zixingma[SBUF%10];
delay5ms();
}
}
void main()
{
s=0;
k=20;
SCON=0x50;
TMOD=0x21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0xfd;
TL1=0xfd;
TR0=1;
TR1=1;
EA=1;
ES=1;
ET0=1;
while(1);
}
|