欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 小白一枚,STC15W408as單片機倒計時程序問題 [打印本頁]

作者: dpj888888    時間: 2020-9-29 20:27
標題: 小白一枚,STC15W408as單片機倒計時程序問題
目標:啟動時LED閃爍,倒計時15秒, 轉5秒、停5秒、再轉5秒   
遇到困難:LED不閃爍,倒計時15秒直接跳過去了,直接到蜂鳴器滴滴叫了,求助!


定時器初始化子程序  5毫秒
------------------------------------------------*/

單片機源程序如下:

void initT0()
{
            AUXR |= 0x80;                //定時器時鐘1T模式
            TMOD &= 0xF0;                //設置定時器模式
           TH0=(65536-55296)/256; //5ms
           TL0=(65536-55296)%256;
            TF0 = 0;       //清除TF0標志
               EA = 1;
               ET0 = 1;
               TR0 = 1;        //定時器0開始計時         
}


void LEDshan()   //這里LED閃爍不了????不知道為什么
{        
    if(MScnt==100)
      {
      LED1 = ~LED1;
      LED2 = ~LED2;
      MScnt=0;
      }
}


void main()
{         
        initT0();
        LEDshan();
        while(1)   
   {  
            
         if(sec<=15)
      {
          TR0=1;
          if(sec<5)
          {DJ=0;    //電機轉動
          }
         if(sec>=5&&sec<=10)
         {DJ=1;   //電機停止
          }
         if(sec>10&&sec<=15)
         {DJ=0;   //電機轉動
          }
           buzzer=0;
           sec=0;         
        }   


}


/* 定時器0中斷服務函數 */
void T0int( ) interrupt 1
{  
        TL0 = 0x00;                //設置定時初值
        TH0 = 0x28;                //設置定時初值
                LEDSMGscan();
                KeyScan();
                MScnt++;       //中斷次數計數值加1
    if (MScnt > 201)  //中斷200次即1秒
    {        
        MScnt = 0;      //清零計數值以重新開始下1秒計時
                sec--;
    }

}



作者: 滄興電子    時間: 2020-9-30 08:26
建議把 LEDshan();放到主程序while里面。你選擇這這個程序放在T0初始化后面,只檢測  if(MScnt==100)這個條件一遍,就跳過了,即使條件滿族也不會閃爍,何況該條件有99.99%的概率條件不會滿足。
作者: man1234567    時間: 2020-9-30 09:12
如果 MScnt==100 時反轉后 MScnt 歸零,那么 MScnt > 201 又如何判斷 ?
還有就這么點程序是不能正常運行的,如有保密部分可以用星號或說明一下。
作者: aayon1979    時間: 2020-9-30 12:00
LEDshan();放的位置不對,應該要在while(1)里面。
作者: dpj888888    時間: 2020-9-30 13:04
man1234567 發表于 2020-9-30 09:12
如果 MScnt==100 時反轉后 MScnt 歸零,那么 MScnt > 201 又如何判斷 ?
還有就這么點程序是不能正常運行 ...

沒有保密成分,因為是自己想實現一個功能
作者: dpj888888    時間: 2020-9-30 13:06
滄興電子 發表于 2020-9-30 08:26
建議把 LEDshan();放到主程序while里面。你選擇這這個程序放在T0初始化后面,只檢測  if(MScnt==100)這個條 ...

請問電機轉動那個呢?轉動不了,沒有進行倒計時
作者: c20160526    時間: 2020-10-4 07:21
我有疑問,如果說5秒,電機轉,5-10聽,10-15轉,根據你寫的,我覺得把sec--改成++
作者: c20160526    時間: 2020-10-4 07:23
就算你sec是從15開始倒退的,那么你的控制是有矛盾的
作者: 6620680    時間: 2020-12-5 11:08
while(1)后面還加不少語句!




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1