子函数是这样的:
//***数据拆分****
*void sujufenxi()
{suju_suzu[0] = number%10;
suju_suzu[1] = number/10%10;
suju_suzu[2] = number/100%10;
suju_suzu[3] = number/1000%10;
suju_suzu[4] = number/10000%10;
suju_suzu[5] = number/100000%10;
suju_suzu[6] = number/1000000%10;
sju_suzu[7] = number/10000000%10;
//位数判断*****
if (number<10) weisu = 1;
else if(10<=number&&number<100)weisu = 2;
else if(100<=number&&number<1000)weisu = 3;
else if(1000<=number&&number<10000)weisu = 4;
else if(10000<=number&&number<100000)weisu = 5;
else if(100000<=number&&number<1000000)weisu = 6;
else if(1000000<=number&&number<10000000)weisu = 7;
else if(10000000<=number&&number<100000000)weisu = 8;number++;}
定时器0中断函数:
void Timer0() interrupt 1 using 1
{ static uint16 ab;
//abr = ~abr;
TH0 = 0xfc;
TL0 = 0x18;
if (ab == 1000)
{sujufenxi();
abr = ~abr;
ab =0;
}
ab++;
refresh(); //刷新数码管
}
这样的话suju_suzu[]里面的值一直是0,改成这样就正常了:
void Timer0() interrupt 1 using 1
{ static uint16 ab;
//abr = ~abr;
TH0 = 0xfc;
TL0 = 0x18;
if (ab == 1000)
{
//sujufenxi();
abr = ~abr;
ab =0;
suju_suzu[0] = number%10;
suju_suzu[1] = number/10%10;
suju_suzu[2] = number/100%10;
suju_suzu[3] = number/1000%10;
suju_suzu[4] = number/10000%10;
suju_suzu[5] = number/100000%10;
suju_suzu[6] = number/1000000%10;
suju_suzu[7] = number/10000000%10;
//位数判断*****
if (number<10) weisu = 1;
else if(10<=number&&number<100)weisu = 2;
else if(100<=number&&number<1000)weisu = 3;
else if(1000<=number&&number<10000)weisu = 4;
else if(10000<=number&&number<100000)weisu = 5;
else if(100000<=number&&number<1000000)weisu = 6;
else if(1000000<=number&&number<10000000)weisu = 7;
else if(10000000<=number&&number<100000000)weisu = 8;
number++;
}
ab++;refresh();//刷新数码管
}
那个位高手分析分析这是为什么
//***数据拆分****
*void sujufenxi()
{suju_suzu[0] = number%10;
suju_suzu[1] = number/10%10;
suju_suzu[2] = number/100%10;
suju_suzu[3] = number/1000%10;
suju_suzu[4] = number/10000%10;
suju_suzu[5] = number/100000%10;
suju_suzu[6] = number/1000000%10;
sju_suzu[7] = number/10000000%10;
//位数判断*****
if (number<10) weisu = 1;
else if(10<=number&&number<100)weisu = 2;
else if(100<=number&&number<1000)weisu = 3;
else if(1000<=number&&number<10000)weisu = 4;
else if(10000<=number&&number<100000)weisu = 5;
else if(100000<=number&&number<1000000)weisu = 6;
else if(1000000<=number&&number<10000000)weisu = 7;
else if(10000000<=number&&number<100000000)weisu = 8;number++;}
定时器0中断函数:
void Timer0() interrupt 1 using 1
{ static uint16 ab;
//abr = ~abr;
TH0 = 0xfc;
TL0 = 0x18;
if (ab == 1000)
{sujufenxi();
abr = ~abr;
ab =0;
}
ab++;
refresh(); //刷新数码管
}
这样的话suju_suzu[]里面的值一直是0,改成这样就正常了:
void Timer0() interrupt 1 using 1
{ static uint16 ab;
//abr = ~abr;
TH0 = 0xfc;
TL0 = 0x18;
if (ab == 1000)
{
//sujufenxi();
abr = ~abr;
ab =0;
suju_suzu[0] = number%10;
suju_suzu[1] = number/10%10;
suju_suzu[2] = number/100%10;
suju_suzu[3] = number/1000%10;
suju_suzu[4] = number/10000%10;
suju_suzu[5] = number/100000%10;
suju_suzu[6] = number/1000000%10;
suju_suzu[7] = number/10000000%10;
//位数判断*****
if (number<10) weisu = 1;
else if(10<=number&&number<100)weisu = 2;
else if(100<=number&&number<1000)weisu = 3;
else if(1000<=number&&number<10000)weisu = 4;
else if(10000<=number&&number<100000)weisu = 5;
else if(100000<=number&&number<1000000)weisu = 6;
else if(1000000<=number&&number<10000000)weisu = 7;
else if(10000000<=number&&number<100000000)weisu = 8;
number++;
}
ab++;refresh();//刷新数码管
}
那个位高手分析分析这是为什么

