C51求助[求助]
我写了24小时时间在6个数码管上显示
我在防真器上运行是对的,但我用at89c51单片机
时,就不对了,数码管就显示为8了。但可以看出程序运行是对的,时间在走,
就是数码管显示为8,我不知道为是为什么?
我的程序如下,工在线等了
#include <display.h>
unsigned idata diss[]={11,11,11,11,11,10};
unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x00};
//------------------------
void main()
{ IPL_8279();
TMOD =0X01;
TH0 =-46080/256;
TL0 =-46080/256;
EA =1;
TR0 =1;
EX0 =1;
ET0 =1;
LED =1;
EA=1;
for(;;){;}
}
//-------------------------
//初始化8279,并显示P
void IPL_8279()
{ //unsigned char i;
com8279=0x00;
do{
ACC=com8279;
}
while(ACC^7==1);
com8279=0x00;
com8279=0x3f;
com8279 =0x90;
dissplay(diss);
}
//----------------------------
void delay(unsigned char number)
{ unsigned char data i;
i=number;
while(i--!=0);
return;
}
//-----显示程序-------------
void dissplay(unsigned idata *d)
{ unsigned char i;
com8279 =0x90;
for(i=0;i <6;i++)
{
com8279 =i+0x80;
data8279 =table[*d];
d++;
}
}
//------时间码---------------
time0() interrupt 1
{ TH0 =-46080/256;
TL0 =-46080/256;
if(++time_data==20)
{ time_data=0;
if(++time[5]==10)
{ time[5]=0;
if((++time[4])==6)
{ time[4]=0;
if((++time[3])==10)
{ time[3]=0;
if((++time[2])==6)
{time[2]=0;
if(((++time[1])==10)||(time[1]==4 && time[0]==2))
{time[1]=0;
if((++time[0]==2)&&time[1]==4)
{time[0]==0;}
}
}
}
}
dissplay(time);
}
}
}
发表时间:2003年7月10日11:39:02