久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1270|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教下單片機(jī)堆塔跑馬燈代碼異常問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1005692 發(fā)表于 2022-6-9 17:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
遇到個(gè)項(xiàng)目  國(guó)產(chǎn)8位單片機(jī)沒(méi)AD  充電LED顯示這里卡住了 共有4顆LED 分別 LED1、LED2、LED3、LED4  //D1  D2  D3  D4
堆塔跑馬燈 4顆燈跑馬燈,定時(shí)一段時(shí)間 LED1燈常亮其余跑馬燈 后續(xù)定時(shí)一段時(shí)間 依次類推 到最后一顆LED4閃爍,滿電燈全亮。 我寫(xiě)了的這個(gè)在while里面有問(wèn)題,定時(shí)函數(shù)里面寫(xiě)的標(biāo)志位 沒(méi)作用
代碼進(jìn)到跑馬燈void ledpmd()里面第一個(gè)if,后面else if 跑不起來(lái) 求大佬指教一下

void  ledpmd(void)
{   
        if(cm_ledfag==1)   // 充電開(kāi)啟 前2分鐘流水跑馬燈
        {
             if(cn1s)
            {
                time1s++;
                cn1s=0;
            }
            if(time1s>40)  //定時(shí)1s
            {
                time1s=0;
               
                if(ledcn++>4)

                ledcn=0;

                    switch(ledcn)
                    {
                        case 0:     
                                    D1=1;
                                    D2=1;
                                    D3=1;        
                                    D4=1;
                        break;

                        case 1:                                            
                                     D1=0;                                                                     
                        break;

                        case 2:
                                     D2=0;                                                                                                                              
                        break;

                        case 3:            
                                     D3=0;                                                                                                         
                        break;

                        case 4:            
                                     D4=0;                                                                                                         
                        break;        

                        default:


                        break;

                    }  //switch
                }   
            }  //  
   
        else if(led_state==2)  // 定時(shí)2分鐘標(biāo)志位  LED1常亮 LED2-LED4流水跑馬燈
        {
            if(cn1s)
            {
                time1s++;
                cn1s=0;
            }
            if(time1s>40)   //定時(shí)1s
            {
                time1s=0;
                              
                    if(ledcn++>4)
                                
                        ledcn=0;
                                                
                    switch(ledcn)
                    {
                        case 0:     
                             D1=0;
                             D2=1;
                             D3=1;        
                             D4=1;
                        break;

                        case 1:                                            
                              D1=0;                                                                     
                        break;

                        case 2:
                              D2=0;                                                                                                                              
                        break;

                        case 3:            
                              D3=0;                                                                                                         
                        break;

                        case 4:            
                              D4=0;                                                                                                         
                        break;        

                        default:
                                                  

                        break;

                    }  //switch
                                             
              }   
           }  //  2分鐘
   
        else if(led_state==3)   // 定時(shí)20分鐘標(biāo)志位  LED1-LED2常亮 LED3-LED4流水跑馬燈
        {
            if(cn1s)
            {
                time1s++;
                cn1s=0;
            }
            if(time1s>40)  //定時(shí)1s
            {
                time1s=0;
                       
                    if(ledcn++>4)
                                
                        ledcn=0;
                                                
                    switch(ledcn)
                    {
                        case 0:     
                             D1=0;
                             D2=0;
                             D3=1;        
                             D4=1;
                        break;

                        case 1:                                            
                              D1=0;                                                                     
                        break;

                        case 2:
                              D2=0;                                                                                                                              
                        break;

                        case 3:            
                              D3=0;                                                                                                         
                        break;

                        case 4:            
                              D4=0;                                                                                                         
                        break;        

                        default:
                                                  

                        break;

                    }  //switch
                                             
              }   
           }        //  20分鐘

          else if(led_state==4)    // 定時(shí)30分鐘標(biāo)志位  LED1-LED3常亮  LED4閃燈
           {
            if(cn1s)
            {
                time1s++;
                cn1s=0;
            }
            if(time1s>40)  //定時(shí)1s
            {
                time1s=0;
                       
                    if(ledcn++>4)
                                
                        ledcn=0;
                                                
                    switch(ledcn)
                    {
                        case 0:     
                             D1=0;
                             D2=0;
                             D3=0;        
                             D4=1;
                        break;

                        case 1:                                            
                              D1=0;                                                                     
                        break;

                        case 2:
                              D2=0;                                                                                                                              
                        break;

                        case 3:            
                              D3=0;                                                                                                         
                        break;

                        case 4:            
                              D4=0;                                                                                                         
                        break;        

                        default:
                                                  

                        break;

                    }  //switch
                                             
              }   
           }
}

void main()
{
    POWER_INITIAL();        //系統(tǒng)初始化
    PWM1_INITIAL();          //初始化T2
    TIMER0_INITIAL();  
     GIE = 1; //開(kāi)中斷
     T0IE = 1;
     
   // LED燈初始化           
        D1=0;     //=1置高  關(guān)閉LED   
        D2=0;
        D3=0;
        D4=0;        
        PR2L=0;
        led_state=0;
        ledpmd();
        
     while(1)
     {
         MCLRWDT();          //清看門(mén)狗
         
            if(flag2s)  //關(guān)閉開(kāi)機(jī)畫(huà)面
            {
               flag2s=0;
                D1=1;
                D2=1;
                D3=1;   
                D4=1;
            }
          //--------------------------------  
            if(CH) //充電高電平
            {
                MCLRWDT();
                             
            //-------跑馬燈入口----------
                    ledpmd();     
            //------------------------------            
                cm_ledfag=1;         //狀態(tài)位   
        //----------2min------------------   
                if(flag_m1)     // 中斷函數(shù)里面1分鐘 flag_m1 置一次1
                {
                    min2++;
                    flag_m1=0;
                }
                if(min2>1)
                {
                    min2=0;
                    flag_m1=0;
                    cm_ledfag=0;
                    led_state=2;    //狀態(tài)位                           
                    cn5s=0;
                    flag5s=0;
                }   
       //------------20min-----------------         
                if(flag_m1)
                {
                    min20++;
                    flag_m1=0;
                }
                if(min20>19)
                {
                    min20=0;
                    flag_m1=0;
                    cm_ledfag=0;
                    led_state=3;    //狀態(tài)位                           
                    cn5s=0;
                    flag5s=0;
                }   
        //--------------30min----------------
                if(flag_m1)
                {
                    min30++;
                    flag_m1=0;
                }
                if(min30>29)
                {
                    min30=0;
                    flag_m1=0;
                    cm_ledfag=0;
                    led_state=4;        //狀態(tài)位                    
                    cn5s=0;
                    flag5s=0;
                }  
        //-------------------------------------
            }
      
   } //while
      
}  //main


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:301191 發(fā)表于 2022-6-10 16:26 | 只看該作者
頂一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:161164 發(fā)表于 2022-6-10 16:50 | 只看該作者
你只用一個(gè) flag_m1來(lái)判斷1分鐘
第一個(gè)if判斷完后就清零
下面的if進(jìn)不去

而且你把cm_ledfag=1;放在while(1)里
那他就永遠(yuǎn)等于1了
下面的if當(dāng)然進(jìn)不去

  1.      cm_ledfag=1;         //狀態(tài)位   
  2.      while(1)
  3.      {
  4.          MCLRWDT();          //清看門(mén)狗
  5.          
  6.             if(flag2s)  //關(guān)閉開(kāi)機(jī)畫(huà)面
  7.             {
  8.                flag2s=0;
  9.                 D1=1;
  10.                 D2=1;
  11.                 D3=1;   
  12.                 D4=1;
  13.             }
  14.           //--------------------------------  
  15.             if(CH) //充電高電平
  16.             {
  17.                 MCLRWDT();
  18.                              
  19.             //-------跑馬燈入口----------
  20.                     ledpmd();     
  21.             //------------------------------            
  22.                 if(flag_m1)     // 中斷函數(shù)里面1分鐘 flag_m1 置一次1
  23.                 {
  24.                     if(minCnt<30)minCnt++;
  25.                     flag_m1=0;
  26.                 }
  27.         //----------2min------------------   
  28.                 if(minCnt==2 && led_state!=2)
  29.                 {
  30.                     cm_ledfag=0;
  31.                     led_state=2;    //狀態(tài)位                           
  32.                     cn5s=0;
  33.                     flag5s=0;
  34.                 }   
  35.        //------------20min-----------------   
  36.                 if(minCnt==20 && led_state!=3)
  37.                 {
  38.                     cm_ledfag=0;
  39.                     led_state=3;    //狀態(tài)位                           
  40.                     cn5s=0;
  41.                     flag5s=0;
  42.                 }   
  43.         //--------------30min----------------
  44.                 if(minCnt==30 && led_state!=4)
  45.                 {
  46.                     cm_ledfag=0;
  47.                     led_state=4;        //狀態(tài)位                    
  48.                     cn5s=0;
  49.                     flag5s=0;
  50.                 }  
  51.         //-------------------------------------
  52.             }
  53.       
  54.    } //while
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

地板
ID:609524 發(fā)表于 2022-6-11 17:56 | 只看該作者
lkc8210 發(fā)表于 2022-6-10 16:50
你只用一個(gè) flag_m1來(lái)判斷1分鐘
第一個(gè)if判斷完后就清零
下面的if進(jìn)不去

單片機(jī)也沒(méi)比較器嗎,如果有的話可以用比較器做,這樣效果會(huì)好一點(diǎn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日操网站 | 一区二区免费在线观看 | 久久99精品国产麻豆婷婷 | 亚洲一区二区三区在线观看免费 | 东京久久 | 欧美一区在线看 | 四虎最新视频 | 久久久久网站 | 天天拍天天操 | 精品一区二区电影 | 午夜小视频免费观看 | 国产高清视频在线观看播放 | 福利社午夜影院 | 日韩精品中文字幕在线 | 成人在线免费 | 免费超碰 | 99精品一区二区 | 国产精品日韩欧美一区二区三区 | 亚洲视频在线播放 | 成人av免费播放 | 久久久国产一区二区三区 | 亚洲一区国产精品 | 国产在线精品一区二区三区 | 91免费版在线观看 | 国产 欧美 日韩 一区 | 久久久青草婷婷精品综合日韩 | 亚洲人成人一区二区在线观看 | 国产精品久久久久久久免费大片 | 天堂一区二区三区 | 欧美日韩免费一区二区三区 | 韩日av在线 | 黄色亚洲 | 欧美一极视频 | 亚洲综合婷婷 | 国产乱码精品一区二三赶尸艳谈 | 99视频在线免费观看 | 亚洲网址在线观看 | 一区二区av | 国产精品久久av | 亚洲国产网站 | 在线一区二区三区 |