找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机4位数码管程序 2位做递增 2位做递减,小白求大神指点一二

[复制链接]
跳转到指定楼层
楼主
ID:235095 发表于 2021-7-16 00:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;

                 }
}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235095 发表于 2021-7-16 00:54 | 只看该作者
本帖最后由 dididada 于 2021-7-16 01:01 编辑

已解决,发个贴瞬间觉悟
if(o==0) 不能小于,小于就是char最大值了,进入死循环了。
下面if(o==0) 等于了 上面的就不能这么写if(i>3),也必须用==,不然会少if(==)会少执行一次

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:887202 发表于 2021-7-16 10:54 | 只看该作者
你也是牛啊,半夜一点还在搞。发生这种问题就是在提醒你,对数据操作的时候时刻要注意溢出的问题,一个8位的变量最大就表示到255,所以你在操作的时候就要注意我这样子操作会不会溢出,溢出后会对我的程序造成什么影响,我需不需要规避这个溢出,怎么去规避

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:88256 发表于 2021-7-16 11:37 | 只看该作者
要对255之类的数值敏感,看到这类数值就有个大概的方向了
回复

使用道具 举报

5#
ID:161164 发表于 2021-7-16 11:45 | 只看该作者
dididada 发表于 2021-7-16 00:54
已解决,发个贴瞬间觉悟
if(o==0) 不能小于,小于就是char最大值了,进入死循环了。
下面if(o==0) 等于了 ...

原程序也可以用
把o 定义为signed char(-128~127)就可以了
回复

使用道具 举报

6#
ID:123289 发表于 2021-7-16 14:55 | 只看该作者
如果你能把【4位数码管】看成32个LED灯来做事,则什么问题也不存在了。
递增递减与LED无关。你只有做两个存储单元(变量)就可以了,一个增,一个减。而后再显示这两个值。
放在哪位显示,则随你高兴。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:887202 发表于 2021-7-16 19:32 | 只看该作者
yzwzfyz 发表于 2021-7-16 14:55
如果你能把【4位数码管】看成32个LED灯来做事,则什么问题也不存在了。
递增递减与LED无关。你只有做两个 ...

处处都有大佬的身影
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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