欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機4位數碼管程序 2位做遞增 2位做遞減,小白求大神指點一二 [打印本頁]

作者: dididada    時間: 2021-7-16 00:53
標題: 單片機4位數碼管程序 2位做遞增 2位做遞減,小白求大神指點一二
4位數碼管 2位做遞增 2位做遞減
我定義o=4 做遞減 第一次循環執行正常 第二次循環 調試看到o變成255了 這里不是賦值4了嗎怎么還會變成255?
求大神指點。


void main()
{
unsigned int i;
unsigned char t= 00;
unsigned char o= 04;
for(i=0;i<500;i++)
{

  display(); //初始化上電顯示 8888

}

while(1)
                {
               
            led[0]=o/10%10;
            led[1]=o%10;

                led[2]=t/10%10;
                led[3]=t%10;
                for(i=0;i<500;i++)
                  {

                  display();

                  }
                t++;
                o--;
                if(t>3)
                {
                                 t=0;
                                 
                 }
                 if(o<0)
                 {
                  o=4;

                 }
}
}


作者: dididada    時間: 2021-7-16 00:54
本帖最后由 dididada 于 2021-7-16 01:01 編輯

已解決,發個貼瞬間覺悟
if(o==0) 不能小于,小于就是char最大值了,進入死循環了。
下面if(o==0) 等于了 上面的就不能這么寫if(i>3),也必須用==,不然會少if(==)會少執行一次
作者: sadv    時間: 2021-7-16 10:54
你也是牛啊,半夜一點還在搞。發生這種問題就是在提醒你,對數據操作的時候時刻要注意溢出的問題,一個8位的變量最大就表示到255,所以你在操作的時候就要注意我這樣子操作會不會溢出,溢出后會對我的程序造成什么影響,我需不需要規避這個溢出,怎么去規避
作者: hhdsdy    時間: 2021-7-16 11:37
要對255之類的數值敏感,看到這類數值就有個大概的方向了
作者: lkc8210    時間: 2021-7-16 11:45
dididada 發表于 2021-7-16 00:54
已解決,發個貼瞬間覺悟
if(o==0) 不能小于,小于就是char最大值了,進入死循環了。
下面if(o==0) 等于了 ...

原程序也可以用
把o 定義為signed char(-128~127)就可以了
作者: yzwzfyz    時間: 2021-7-16 14:55
如果你能把【4位數碼管】看成32個LED燈來做事,則什么問題也不存在了。
遞增遞減與LED無關。你只有做兩個存儲單元(變量)就可以了,一個增,一個減。而后再顯示這兩個值。
放在哪位顯示,則隨你高興。

作者: sadv    時間: 2021-7-16 19:32
yzwzfyz 發表于 2021-7-16 14:55
如果你能把【4位數碼管】看成32個LED燈來做事,則什么問題也不存在了。
遞增遞減與LED無關。你只有做兩個 ...

處處都有大佬的身影




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1