• <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>
  • 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    單片機定時器0工作模式1(16位模式)

    作者:佚名   來源:本站原創   點擊數:  更新時間:2009年06月17日   【字體:

       51單片機的定時器0工作模式1(16位模式),外中斷INT0(P3_2引腳)控制T0(P3_4引腳)的按鍵信號,按鍵(P3_4引腳)作為T0時鐘信號輸入定時器0。若是INT0為1,則按鍵的狀態(不斷的按下然后抬起按鍵),使定時/計數器0計數,溢出中斷引起P2.0引腳相連的LED燈閃爍。
    //本程序出自:51hei單片機網
    #include "reg_c51.h"
    unsigned char hex[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
    0x88,0x83,0xC6,0xA1,0x86,0x8E};  //數碼管十六進制譯碼表
    void main(void)
    {
    TMOD &= 0xF0;   //定時/計數器0運行在模式1,16位模式
    TMOD |= 0x0D;   //GATE0=1; C/T0#=1; M1=0; M0=1;
    TH0 = 0xff;     //設置初值,初值=(65536-7)/256=FFH
    TL0 = 0xf9;     //設置初值,初值=(65536-7)%256=F9H
                    //初值為65529,只需要再計7個數,定時/計數器就可以溢出
    ET0=1;  //允許定時/計數器0中斷
    EA=1;   //允許總中斷
    TR0=1;  //啟動定時/計數器
    while(1);     //無限循環
    {
    P1=hex[TL0/16];    //顯示TL0的高位
    P0=hex[TL0%16];    //顯示TL0的低位
    }}
    void it_timer0(void) interrupt 1   //定時/計數器0中斷服務程序
    {
    P2_0 = ~P2_0;     //每次中斷將P2_0引腳取反,就是使LED燈閃爍
    TH0 = 0xff;       //重置初值
    TL0 = 0xf9;       //重置初值
    }

    關閉窗口

    相關文章

    国产A片好看
  • <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>