找回密码
 立即注册
查看: 99|回复: 1

求助帖,数码管 | 问题已解决

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:22
  • 最近打卡:2026-01-02 14:48:10
已绑定手机

16

主题

42

回帖

221

积分

中级会员

积分
221
发表于 2025-12-26 23:17:33 | 显示全部楼层 |阅读模式
现象:



这里为什么分钟加不上去呢?

void Seg_Task(void)
{
        /*
                SEG_num[SEG_no+1]   |指0+1这个加出来就是1,,0x06
                SEG_num[SEG_no]+1  |指0x3f+1这个加出来就不对了
        */
//        Display_Seg(SEG_num[SEG_no+1],~T_num[SEG_no]);        //SEG_no指索引的第零位
//        SEG_no++;
//        if(SEG_no>7)
//        SEG_no = 0;


//        Display_Seg(SEG_num[SEG_no+1],~T_num[SEG_no]);        //SEG_no指索引的第零位
//        SEG_no++;
        if(SEG_no == 0)
        {
                num = shi/10;                                                                //分的十位
                Display_Seg(SEG_num[num],~T_num[0]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 1)
        {
                num = shi%10;
                Display_Seg(SEG_num[num],~T_num[1]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 2)
        {
                Display_Seg(SEG_num[16],~T_num[2]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 3)
        {
                num = fen/10;                                                                //分的十位
                Display_Seg(SEG_num[num],~T_num[3]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 4)
        {
                num = fen%10;
                Display_Seg(SEG_num[num],~T_num[4]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 5)
        {
                Display_Seg(SEG_num[16],~T_num[5]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 6)
        {
                num = miao/10;                                                        //秒的十位
                Display_Seg(SEG_num[num],~T_num[6]);        //SEG_no指索引的第零位
        }
        else if(SEG_no == 7)
        {
                num = miao%10;                                                        //秒的个位
                Display_Seg(SEG_num[num],~T_num[7]);        //SEG_no指索引的第零位
        }
        else
        {
        
        }
        SEG_no ++;
        if(SEG_no >7 )
          SEG_no = 0;
}

void TIMECOUNT_Task(void)
{
        miao ++;
        if( miao> 59)
        {
                                miao = 0;
                                fen++;
                if(fen> 59);
                {
                                shi++;
                                fen = 0;
                if(shi> 23);
                {
                                shi = 0;
                }
                }
        }


}


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:22
  • 最近打卡:2026-01-02 14:48:10
已绑定手机

16

主题

42

回帖

221

积分

中级会员

积分
221
发表于 2025-12-26 23:19:22 | 显示全部楼层
问题已解决:
在TIMECOUNT_Task里的if语句后面多写了分号;,这是 C 语言里典型的语法陷阱:
if(fen> 59); 这个分号会让if的 “判断体” 变成空语句,后面的{}代码块会不受条件限制,每次都会执行;
但更关键的是:秒数累加到 60 时,先把秒归 0、分钟 + 1,然后不管分钟是否到 60,都会立刻执行fen = 0,相当于分钟刚加 1 就被清零,所以就导致看到分钟永远加不上去。
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-23 23:09 , Processed in 0.116776 second(s), 50 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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