请教,很简单的定时器刷新数码管显示程序,为什么不能从0-60依次显示
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit P15=P1^5;
sbit P20=P2^0;
sbit P21=P2^1;
uint Count=0,Second=0;
uchar code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
uchar dis[]={1,2};
void T0_init()
{
TMOD=0x01;
TH0=(65536-50000);
TL0=(65536-50000);
IE=0x82;
TR0=1;
}
void delay(uint x)
{ uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void Time0( ) interrupt 1
{
TH0=(65536-50000);
TL0=(65536-50000);
if(++Count==20)
{Count=0;
Second++;
if(Second==60)
Second=0;
}
}
/* 显示函数*/
void display()
{
uchar i,temp=0x01;
dis[1]=Second/10; //取计数值的整数位
dis[0]=Second%10; //取计数值的余数位
for(i=0;i<2;i++)
{
P1=TAB[dis[i]];
P2=temp;
delay(5);
P1=0xff;
P2=0xff;
temp<<=1;
}
}
main()
{
void T0_init();
while(1)
{
Display();
}
}
定时器
[解决办法]
粗看代码没发现什么问题,LZ还是说一下问题症状吧
[解决办法]
中断过程中的Second和Display()过程中的Second你做下同步处理,要不就把Display();放到中断里面显示。