jamasliu 发表于 2014-3-21 15:51:08

C51计数器困惑

为什么,我按递减按键到0了还会继续显示出最大数字,请教怎么修改代码,谢谢!!!



煮酒fu 发表于 2014-3-21 16:05:09

你还不如贴出来源码呢,不然没人看的,小哥。

tam2907 发表于 2014-3-21 16:05:30

本帖最后由 tam2907 于 2014-3-21 16:08 编辑

16位无符号数 0-1=65535 ,同样65535+1=0
counter--;——>if(counter)counter--;

waterghost 发表于 2014-3-21 16:08:54

void int_1(void) interrupt 2
{
        if(counter>0)
        {       
                counter--;
        }       

}

linbin250 发表于 2014-3-21 16:11:15

电脑里面的数是循环的。所以下面的这个是一直循环的。也就是说。
当这个数据达到最小的数后,再减一,就会直接到最大。
当这个数据达到最大的数后,再加一,就会直接到最小。

void int_0(void) interrupt 0
{
        counter++;
      // 换成
      if (counter < 65530) counter++;
}
void int_1(void) interrupt 2
{
        counter--;
      // 换成
      if (counter > 0) counter--;
}

mcu5i51 发表于 2014-3-21 16:27:46

限制数据范围,达到0时不在减就好了,加法相同

jamasliu 发表于 2014-3-21 23:18:55

谢谢各位的回复,问题解决。。{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}
页: [1]
查看完整版本: C51计数器困惑