新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機的簡介——定時器、計數器

        51單片機的簡介——定時器、計數器

        作者: 時間:2016-11-24 來源:網絡 收藏
        8051有兩個16位的定時器/計數器T0、T1,8052還有第三個定時器/計數器T2,通過內部編程都可以設定為內部定時器和外部計數器。
        1、方式寄存器TMOD
        特殊功能寄存器TMOD是TO、T1的工作方式寄存器,其格式如下:
        TMOD低四位為T0方式字段,高四位為T1方式字段。復位時TMOD的所有位置0。
        (1)工作方式選擇位M1、M0
        定時器/計數器有四種工作方式,它們由M1、M0的取值決定,對應關系如下圖:
        (2) 方式選擇位C/T
        C/T=0為定時器方式,以fosc(晶振頻率)的12分頻作為計數信號,即每個機器周期定時器加1。
        C/T=1為計數器方式,以外部引腳(T0為P3.4,T1為P3.5)上輸入的脈沖為輸入信號,當外部信號發生負跳變時加1,外部事件計數的最高頻率為fosc的1/24。
        (3) 門控位GATE
        當GATE=1時,由外部中斷引腳INT0、INT1和內部TR0、TR1位來啟動定時器。當INT0為高電平且TR0置位時,啟動定時器T0。定時器T1的啟動同T0。
        當GATE=0時,僅由TR0和TR1置位來啟動定時器T0和T1。
        2、控制寄存器TCON
        特殊功能寄存器TCON的高4位存放著定時器的運行控制和溢出標志,低4位存放外部中斷的觸發方式控制位和鎖存外部中斷請求源。TCON的格式如下:
        (1)定時器T0的運行控制位TR0
        TR0由軟件置位或者清0。當門控位GATE=0時,TO計數器僅由TR0控制,TR0=1啟動計數,TR0=0時停止。當門控位GATE=1時,T0計數器由INT0和TR0共同控制,當INT0=1且TR0=1時啟動T0計數器。
        (2)定時器T0溢出標志位TF0
        當T0溢出時TF0=1,并向CPU申請中斷,CPU響應中斷后由硬件將TF0清0,也可以由軟件查詢方式將TF0清0。
        (3)定時器T1的運行控制位TR1
        功能同TR0。
        (4)定時器T1溢出標志為TF1
        功能同TF1。
        (5)外部中斷源1(INT1、P3.3)中斷請求標志IE1
        IE1=1時外部中斷源1正在向CPU請求中斷,當CPU響應該中斷時由硬件將IE1清0(下降沿觸發方式)。
        (6)外部中斷源1觸發方式選擇位IT1
        IT1=0時外部中斷源1選擇電平觸發方式,當輸入低電平時置位IE1;IT1=1時外部中斷源1選擇下降沿觸發方式,當中斷源由高電平變低電平時置位IE1,向CPU請求中斷。
        (7)外部中斷源0(INT0、P3.2)中斷請求標志IE0
        功能類同IE1。
        (8)外部中斷源0觸發方式選擇位IT0
        功能類同IT1。
        3、定時器工作方式
        如上所述,定時器有4種工作方式,它們由TMOD寄存器中的M1、M0兩位決定。注意:只有T0才有工作方式3。
        (1)工作方式0
        當TMOD寄存器中的M1、M0為00時,定時器工作在方式0。下圖以定時器T1來示例說明:
        計數時,TL1的低5位溢出后向TH1進位,TH1溢出后將TF1置位,并向CPU發出中斷請求。注意:在方式0時,TL1只用到了低5位,高3位內容不定不能使用,控制邏輯計數的允許/禁止并不改變計數值。
        (2)工作方式1
        當TMOD寄存器中M1、M0的值為01時,定時器工作于方式1。工作方式1和工作方式0的唯一區別在于,工作方式1可以實現16位計數,其它都和工作方式0相同。如果以定時器T1為例來圖示講解,可如下:
        (3)工作方式2
        當TMOD寄存器的M1、M0位值為10時,定時器工作于工作方式2。方式2為自動恢復初值的8位計數器,TL1作為8位計數寄存器,TH1作為8位計數常數寄存器,當TL1溢出時,一方面將TF1置位,并向CPU發出中斷請求,另一方面將預設在TH1中的常數重新裝入TL1,繼續計數。重新裝入不會影響TH1的內容。其結構簡圖如下:

        在方式2中通過改變TH1的值可以改變計數次數。
        (4)工作方式3
        方式3只適用于T0,此時T1停止計數。
        4、定時器/計數器溢出率的計算
        定時器/計數器在工作之前必須先設定計數初始值Ta。初值計數公式如下:
        在給定時間t后,求初值的公式如下:
        5、總結
        對定時器/計數器編程的步驟如下:
        a、寫TMOD,設定工作方式、定時/計數方式、啟動哪個定時器(開啟相應的門控位GATE);
        b、將初值寫入對于寄存器;
        c、定時器中斷開或關;
        d、啟動定時器,即向TCON寫入數據。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 枣阳市| 通州市| 临沭县| 喀喇沁旗| 丹凤县| 罗山县| 东莞市| 化德县| 永德县| 安达市| 邛崃市| 阿图什市| 锡林浩特市| 呼和浩特市| 陇南市| 罗源县| 柘荣县| 霍山县| 诏安县| 太原市| 乌拉特后旗| 蓝山县| 永吉县| 刚察县| 资阳市| 泊头市| 蒲城县| 锦州市| 仁怀市| 左权县| 济阳县| 黔江区| 乡宁县| 兴文县| 兴隆县| 长泰县| 宜丰县| 乐业县| 阳山县| 和平县| 汉源县|