奶爸業餘單片機學習之:定時器使用方法——非中斷,TF值軟體重設法

來源:互聯網
上載者:User

標籤:使用   strong   ar   div   工作   時間   sp   ad   on   

============定時器使用方法——非中斷,TF值軟體重設法======== 第一:設定特殊功能寄存器TMOD,配置好工作模式。 第二:設定計數寄存器TH0和TL0的初值。 第三:設定TCON,通過TR0置1來讓定時器開始計數。 第四:判斷TCON寄存器的TF0位,監測定時器溢出情況。    執行個體:

//LED由三極體及73HC138控制
//用定時器0實現亮與滅之間的1秒時

# include <reg52.h>

sbit led2 = P0^0;

sbit addr0 = P1^0;
sbit addr1 = P1^1;
sbit addr2 = P1^2;
sbit addr3 = P1^3;
sbit enled1 = P1^4;

int main()
{
  unsigned char time0 = 0;

  addr0 = 0, addr1= 1, addr2 = 1,addr3 = 1, enled1 = 0; //38解碼器控制led2時的I/O狀態(原理圖)
  led2 = 0;//先點亮LED2


  TR0 = 1;//啟動定時器0
  TMOD = 0x01;//定時器0、工作方式1
  TH0 = 0xB8;TL0 = 0x00;//已20ms定時時,裝入的初值
  TF0 = 0;//單片機上電後,TF0/1預設為0,因此此步可省略。


  while(1)//主程式大迴圈
  {
    if(TF0 == 1)//判斷TF0是否為1(溢出),若溢出則執行if內語句
    {
      TF0 = 0;//TF0軟體重設
      TH0 = 0xB8;TL0 = 0x00;//給定時器0儲存寄存器裝入計數值為20ms時的初值(初值=65536-計數值)
      time0++;//TF0每溢出一次(20ms),變數time0加1,
      if(time0 >= 50)//當time0從0變50時,則1秒時間已到
      {
        time0 = 0;//time0清零,重新計數
        led2 = ~led2;//led2取反,實現亮滅之間1秒變化
      }
    }
  }
  return 0;
}

奶爸業餘單片機學習之:定時器使用方法——非中斷,TF值軟體重設法

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.