找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1554|回复: 7
收起左侧

单片机C语言程序搞不懂为什么经常选择NUM = 0;难道真的判断失败吗?

[复制链接]
ID:103131 发表于 2022-4-22 15:01 | 显示全部楼层 |阅读模式
  void AD_TEST(void){

  Fireset = 0;

     if(num == 200)
          {
                        num = 0;
                  
                        if(fdaiti<4)
                        
                  {
                          fdaiti++;
                  }
         
           
         }
           

        
         if(KEY_INFO==0 && locks2==2)
                   {
                            locks2=1;        
                            change2++;
                              //printf(" locks2 = %d\r\n",locks2);
                         //  printf(" change2 = %d\r\n",change2);
                         }
                        if(change2>3){change2=1;}
                          
                  

                           if(KEY_INFO==1)
                        {        
                                locks2=2;        
                        }        
                                                   
                  if(change2 == 1)
                                                                {               
                                                                        ZERO_MODE(fdaiti);
                                                                }
                                                                    
                      if(change2==2)
                        {
                                 
                                                         ZERO_MODE(fdaiti);
                                                  
                        }
                                                                                                                                       
                                                
                                       
                                          if(change2 == 3)
                                          {
                                                        num2++;
                                                            if(num2 == 100)
                             {
                                        num2 = 0;
               
                                      GET_AD = Get_AD(CHANNEL_0);
               
                                      APEI = abs(GET_AD*15/1023+6-28);
                                                              
                                                    }
                                                                                            
                                                              LCD_OUT(APEI);
                                                                                           printf("APEI =  %d\r\n",APEI);         
                                          
                                          
                         }
                                       
                                                               
                                
                           
                   if(fdaiti == 0)
                      {
                         if(IN_S == 0)
                                                 {
                                                         RELAY_SWITCH();
                                                           fdaiti = 1;
                                                           //printf("IN_S =  %d\r\n",IN_S);
                                                           
                                                           FAULT = 0;
                            Lgnition2 = 0;                 
                             V1 = 0;
                             Lgnition = 0;
                             WORK = 0;
                                                 }
                                                 else
                                                 {
                                                         
                                                         num = 0;
                                                         //printf("num =  %d\r\n",num);
                                                 }

                       }
             else if(fdaiti == 1)
               {
                                         
                                            if(APEI > 5)
                                                 {
                             fdaiti = 2;
                                                 }
                                                 else
                                                {
                                                         alarm = 1;
                                                 }
               }
                  else if(fdaiti == 2)
               {
                          if(APEI >15)
                                                        {
                                                                //RELAY_SWITCH();
                                             
                                                                V1 = 1;
                                                               
                                                                Lgnition2 = 1;
                                              Lgnition = 1;
                                             
                                                        }
                                                        else
                                                        {
                                                                alarm = 1;
                                                        }
               }
                 else if(fdaiti == 3)
               {
               
                        
               }
         
                  else if(fdaiti == 4)
               {  
                 
                        
                           
                           
               }
         

}
请问各位大神帮我解决,if经常选择否则那项,而不是选择第一行


回复

使用道具 举报

ID:139866 发表于 2022-4-22 15:32 | 显示全部楼层
不明白程序里写那么多fdaiti是什么意思?建议你先提升素质,再提升技术

评分

参与人数 1黑币 +9 收起 理由
AAA_MCU + 9

查看全部评分

回复

使用道具 举报

ID:103131 发表于 2022-4-22 15:41 | 显示全部楼层
天ノ忆 发表于 2022-4-22 15:32
不明白程序里写那么多

fdaiti变量指的是定时器跑数码管的数值
回复

使用道具 举报

ID:103131 发表于 2022-4-22 15:41 | 显示全部楼层
天ノ忆 发表于 2022-4-22 15:32
不明白程序里写那么多

if(num == 200)
          {
                        num = 0;
                  
                        if(fdait<4)
                        
                  {
                          fdaiti++;
                  }
         
           
         
回复

使用道具 举报

ID:824490 发表于 2022-4-22 15:49 | 显示全部楼层

建议变量名要有实际意义,这样后来者能明白代码的本意,不然就让人笑话了。
你这个变量用别的改一下吧,哪怕是拼音SMG_RUN_TIME都行。
回复

使用道具 举报

ID:401564 发表于 2022-4-22 16:36 | 显示全部楼层
goldbirderman 发表于 2022-4-22 15:41
if(num == 200)
          {
                        num = 0;

是不是还有变量名叫s某的?
或者是叫d某
数码管的值哪怕是叫shu_ma_guan
它也行呀,没有规定要英语的吧
用啥不好,非得f某某
回到正题:
==是查找,如果这个变量在其它地方被改变,一旦错过了就没了,如果不是循环,那就永远找不着了
>=是比较,如果这个变量在其它地方被改变,最多就差一两个数字量,程序逻辑没有变化的
回复

使用道具 举报

ID:103131 发表于 2022-4-22 16:44 | 显示全部楼层
Y_G_G 发表于 2022-4-22 16:36
是不是还有变量名叫

谢谢大家 随便使用,只是拿来做测试,到正式用不是这样名称
回复

使用道具 举报

ID:491577 发表于 2022-4-24 20:29 | 显示全部楼层
使用switch()语句,方便理解。这么多else if,看得眼花
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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