这段程序作用 把传进来的num 按位存储到buf[ ]中,然后把高位零进行清除,最后把buf[ ] 进行传递给 全局变量
eg:num=000567 -> buf[0]=7; buf[1]=6; buf[2]=5; buf[3]=0; buf[4]=0; buf[5]=0;
LedBuf[0]=7; LedBuf[1]=6; LedBuf[2]=5; LedBuf[3]=0xff; LedBuf[4]=0xff; LedBuf[5]=0xff;
问题代码如下
void ShowNum(unsigned long num)
{
unsigned char i;
unsigned char buf[6];
for(i=0;i<=5;i++)
{
buf[i]=num%10;
num=num/10;
}
for(i=5;i>=1;i--)
{
if(buf[i]==0) LedBuf[i]=0xff;
else break;
}
for(;i>=0;i--)
{
LedBuf[i]=LedChar[buf[i]];
}
看出来了吗?
void ShowNum(unsigned long num)
{
unsigned char i; //这个定义存在问题,i 定义为unsigned 永远不会小于0 在第三条for语句会死循环。
unsigned char buf[6];
for(i=0;i<=5;i++)
{
buf[i]=num%10;
num=num/10;
}
for(i=5;i>=1;i--)
{
if(buf[i]==0) LedBuf[i]=0xff;
else break;
}
for(;i>=0;i--)
{
LedBuf[i]=LedChar[buf[i]];
}