找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,單片機(jī)程序燒進(jìn)去以后定時器好像沒開啟

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:592558 發(fā)表于 2020-1-8 09:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如果在主程序里面循環(huán)前面加上TR0=0,定時器運(yùn)行正常;現(xiàn)在是按鍵以后也無法觸發(fā)計時。多個定時器同時開啟的話,會有相互干擾的問題嗎?
  1. #include<reg52.h>

  2. #define uint unsigned int  //定義常用數(shù)據(jù)類型替代碼
  3. #define uchar unsigned char

  4. uchar t0;     //定時器累加位


  5. sbit K1=P3^2;    //按鍵輸入
  6. sbit beep=P1^0;  //蜂鳴器模擬標(biāo)記輸出
  7. sbit relay=P1^7;

  8. void IntConfiguration();  //設(shè)置定時器初始值
  9. void Delay(uint n);       //延時函數(shù)


  10. void main()
  11. {
  12.    uint i;
  13.    IntConfiguration();

  14.    while(1)
  15.   {

  16.    if(K1==0)          //是否有種莖進(jìn)入
  17.   {
  18.     TR0=0;    //關(guān)閉定時器0
  19.     TR1=0;     //關(guān)閉定時器1
  20.     t0=0;

  21.     relay=1;
  22.     beep=1;                   //關(guān)閉標(biāo)記裝置
  23.     while((i<50)&&(K1==0))     //判斷種莖是否離開
  24.    {

  25.      Delay(1);
  26.      i++;


  27.    }
  28.    i=0;
  29.    IntConfiguration();
  30.    TR0=1;

  31.   }  





  32.   else
  33. {
  34.     if(t0==1296)   //定時器0計時1.08s
  35.    {
  36.      t0=0;  
  37.      beep=0;  //打開標(biāo)記裝置
  38.      relay=0;
  39.    }

  40.   }  





  41. }

  42. }




  43. void IntConfiguration()
  44. {


  45.    //設(shè)置定時器
  46.    TMOD=0x11; //設(shè)置定時器0和1均為工作方式1


  47.    TH0=0xfc;  //定時器0定時50ms初值
  48.    TL0=0x66;
  49.    ET0=1;   //開定時器0中斷





  50.    EA=1;   //打開總中斷
  51. }





  52. void Timer0()  interrupt 1          //定時器0中斷函數(shù)
  53. {
  54.    TH0=0xfc;
  55.    TL0=0x66;
  56.    t0++;   //計算定時5ms的個數(shù)



  57. }






  58. void Delay(uint n)              //延時50us誤差0us
  59. {

  60.    unsigned char a,b;
  61.    for(;n>0;n--)
  62.    {
  63.      for(b=1;b>0;b--)
  64.      for(a=22;a>0;a--);

  65.    }



  66. }
復(fù)制代碼





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

使用道具 舉報

沙發(fā)
ID:152164 發(fā)表于 2020-1-8 12:21 來自觸屏版 | 只看該作者
程序有問題吧。我開了3個定時器也沒影響。如果有屏幕,可以顯示下定時器狀態(tài),沒有屏幕的話用LED顯示下定時器狀態(tài)就知道定時器有沒有工作正常了。
回復(fù)

使用道具 舉報

板凳
ID:592558 發(fā)表于 2020-1-8 15:25 | 只看該作者
ziiyn 發(fā)表于 2020-1-8 12:21
程序有問題吧。我開了3個定時器也沒影響。如果有屏幕,可以顯示下定時器狀態(tài),沒有屏幕的話用LED顯示下定時 ...

拿LED顯示了一下,定時器0開啟時LED亮,F(xiàn)在LED不亮;如果在while循環(huán)之前加TR0=1,LED會亮,但是不會滅,應(yīng)該是沒有進(jìn)入循環(huán)體里面。但是還不知道怎么改
回復(fù)

使用道具 舉報

地板
ID:395068 發(fā)表于 2020-1-9 13:45 | 只看該作者
首先你的按鍵要去抖,其次你定義的定時器累加位是一個unsigned char 的變量,最大為255,而你主程序里判斷的是t0==1296,肯定是不行的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表