找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1449|回复: 8
打印 上一主题 下一主题
收起左侧

单片机1602按键显示程序逻辑问题

[复制链接]
跳转到指定楼层
楼主
ID:319133 发表于 2019-3-21 09:53 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义一个unsigned char x=10    按键按下一次x-1,if(x<0)  x=0  可是当显示为0的时候再按下按键他就变成I5  I4  不是一直保持0
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:319133 发表于 2019-3-21 10:27 来自手机 | 只看该作者
有没有大神
回复

使用道具 举报

板凳
ID:410399 发表于 2019-3-21 10:52 | 只看该作者
unsigned 是没有<0的,你直接if(x == 0)
回复

使用道具 举报

地板
ID:319133 发表于 2019-3-21 11:50 | 只看该作者

x==0也不行,到0再减一还是变成I5
回复

使用道具 举报

5#
ID:410399 发表于 2019-3-21 13:39 | 只看该作者
罗富永1 发表于 2019-3-21 11:50
x==0也不行,到0再减一还是变成I5

你的if在哪里的,最好在x-1之前
你贴那段代码出来啊
这样盲猜很难猜啊
回复

使用道具 举报

6#
ID:383721 发表于 2019-3-21 13:42 | 只看该作者
不如在对X减一之前判断,比如:
if(x>0)
  x--;
当x=0时就不会再减了
回复

使用道具 举报

7#
ID:473758 发表于 2019-3-21 15:25 来自手机 | 只看该作者
unsigned都是大于0的数
回复

使用道具 举报

8#
ID:303196 发表于 2019-3-21 21:17 | 只看该作者
unsigned char  是大于零的数,0再减的话又会变成正数。  进不去if(x<0)中的语句。  把unsigned删掉,就可以了
回复

使用道具 举报

9#
ID:234075 发表于 2019-3-21 21:54 | 只看该作者
这个问题是非常明显是变量定义和取值的问题,既然定义了unsigned char x,则x=0~255,就不会有<0的情况,所以你的判断语句if(x<0)就不可能成立;如果你在x=0后再减1,或者x=255再加1,都会造成数据的溢出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表