在做数码管显示99到00的过程中,出现了问题。
例1是不能显示00;
例2是对例1的修正,但例2是99捡到00并且都能显示,之后就会出现8.9-8.0之间的循环显示。
例3是对例2的修正即num> -1,结果正确。
例4的错误是在第一次减到00后开始从98减到0的循环 。
为了解决例4的问题,修改得到例5、6、7的结果都是正确的。
注意num的取值范围。本实验设置uint num(或uchar num),所以例3,例7虽然结果正确,但是不符合语法。
只有例5、6是正确的了。比较得到,例6最好。
欢迎留言点评或探讨。
例1:
for(num=99;num>0;num--)
{
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
}
例2:
for(num=99;num>=0;num--)
{
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
}
例3:
for(num=99;num>-1;num--) //num> -1
{
for(i=0;i<50;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
}
例4:
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
if(num==0)
num=99;
num--; //必须放在if(num==0)num=99;之后,否则不显示00
例5:
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
if(num==0)
{
num=99;
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
}
num--;
例6:
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
if(num>0) //等同于 if(num==0)
num--; // num=999;
else // else
num=99; // num--;
例7:
for(i=0;i<100;i++)
{
Data[0]=duanma[num/10];
Data[1]=duanma[num%10];
smg_display(2,2);
}
num--;
if(num==-1)
num=99;
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。