52单片机重新上电后不执行while(1)语句 (重新上电8个数码管只显示:85-62-32) 而重新烧录程式会显示 00-00-00
按道理重新上电显示 00-00-00 才是正确的啊
void main()
{
InitTIMER0(); //定时器0初始化
a_tmpdisplay[0]= 2; //数据的转换,因我们采用数码管1~9的显示,将数据分开
a_tmpdisplay[1]= 3;
a_tmpdisplay[2]= 10;
a_tmpdisplay[3]= 2;
a_tmpdisplay[4]= 6;
a_tmpdisplay[5]= 10;
a_tmpdisplay[6]= 5;
a_tmpdisplay[7]= 8; //初始化不能放在while 语句里,如放在while语句里数码管会不显示
while(1)
{
if(ReadRTC_Flag)
{
ReadRTC_Flag = 0 ;
tiaoshi();
a_tmpdisplay[0]= miao%10; //数据的转换,因我们采用数码管1~9的显示,将数据分开
a_tmpdisplay[1]= miao/10;
a_tmpdisplay[2]= 10;
a_tmpdisplay[3]= fen%10;
a_tmpdisplay[4]= fen/10;
a_tmpdisplay[5]= 10;
a_tmpdisplay[6]= shi%10;
a_tmpdisplay[7]= shi/10;
if(shan==1)
{
shanshuo();
if(mie==1)
{
// if(xuan>3) xuan=1;
switch(xuan)
{
case 1: a_tmpdisplay[7]=11,a_tmpdisplay[6]=11;break;
case 2: a_tmpdisplay[4]=11,a_tmpdisplay[3]=11;break;
case 3: a_tmpdisplay[1]=11,a_tmpdisplay[0]=11;break;
}
}
}
}
}
}
void tim(void) interrupt 1 using 1 //中断,用于数码管扫描
{
static unsigned char i,num;
TH0=0xf5;
TL0=0xe0;
P0=smgduan[a_tmpdisplay[i]]; //查表法得到要显示数字的数码段
switch(i)
{
case(0):
LC = 0; LB = 0; LA = 0; break;
case(1):
LC = 0; LB = 0; LA = 1; break;
case(2):
LC = 0; LB = 1; LA = 0; break;
case(3):
LC = 0; LB = 1; LA = 1; break;
case(4):
LC = 1; LB = 0; LA = 0; break;
case(5):
LC = 1; LB = 0; LA = 1; break;
case(6):
LC = 1; LB = 1; LA = 0; break;
case(7):
LC = 1; LB = 1; LA = 1; break;
}
i++;
if(i==8)
{
i=0;
num++;
if(10==num) // 隔断时间读取1302数据, 时间间隔可以调整
{
ReadRTC_Flag=1; //使用标志位判断
num=0;
}
}
|