久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機52定時器2的原理和詳解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:151846 發(fā)表于 2021-2-20 09:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
定時器2的使用前言
52單片機比51單片機不只是在容量上提升,還多一個定時器2。定時器 T2的功能比 T1、T0都強大,但描述它的資料不多, 可能是使用得比較少的緣故吧。但好用的東西怎樣放過,下面來盤盤定時器2。
概述
定時器 T2是一個 16 位的具有自動重裝和捕獲能力的定時 / 計數(shù)器,它的計數(shù)時鐘源可以是內(nèi)部的機器周期,也可以是 P1.0 輸入的外部時鐘脈沖。它由兩個寄存器控制,他們是寄存器 T2CON,寄存器T2MOD。內(nèi)部還有一個陷阱寄存器( RCAPXL,PXAPXH)與之相關(guān)。T2定時器有三種工作模式,分別是捕獲,自動重裝和波特率發(fā)生器。
寄存器介紹
定時器2控制寄存器T2CON
定時器2控制寄存器T2CON是定時器2的設(shè)置寄存器,用來設(shè)定與定時器2的一些相關(guān)操作。字節(jié)地址位C8H,可位尋址。
定時器2控制寄存器T2CON
TF2:定時/ 計數(shù)器 2 溢出標志,T2溢出時置位, 并申請中斷。 只能用軟件清除
但 T2 作為波特率發(fā)生器使用的時候, ( 即 RCLK=1或 TCLK=1),T2溢出時不對 TF2置位。
EXF2:當 EXEN2=1時,且 T2EX引腳(P1.0)出現(xiàn)負跳變而造成 T2的捕獲或重裝
的時候, EXF2置位并申請中斷。 EXF2也是只能通過軟件來清除的。
RCLK:串行接收時鐘標志, 只能通過軟件的置位或清除; 用來選擇 T1(RCLK=0 )還是 T2(RCLK=1 )來作為串行接收的波特率產(chǎn)生器
TCLK:串行發(fā)送時鐘標志, 只能通過軟件的置位或清除; 用來選擇 T1(TCLK=0 )
還是 T2(TCLK=1 )來作為串行發(fā)送的波特率產(chǎn)生器
EXEN2 :T2的外部允許標志,只能通過軟件的置位或清除; EXEN2=0 :禁止外部
時鐘觸發(fā) T2;EXEN2=1 :當 T2未用作串行波特率發(fā)生器時,允許外部時鐘觸發(fā) T2,當 T2EX引腳輸入一個負跳變的時候,將引起 T2的捕獲或重裝,并置位EXF2,申請中斷。
TR2:T2的啟動控制標志; TR2=0:停止 T2;TR2=1:啟動 T2
C/T2:T2 的定時方式或計數(shù)方式選擇位。 只能通過軟件的置位或清除; C/T2=0 :
選擇 T2 為定時器方式; C/T2=1 :選擇 T2 為計數(shù)器方式, 下降沿觸發(fā)。
CP/RT2 :捕獲/重裝載標志,只能通過軟件的置位或清除。 CP/RT2=0 時,選擇重裝載方式,這時若 T2 溢出( EXEN2=0 時)或者 T2EX 引腳(P1.0)出現(xiàn)負跳變(EXEN2=1 時),將會引起 T2 重裝載; CP/RT2=1 時,選擇捕獲方式,這時若 T2EX 引腳( P1.0)出現(xiàn)負跳變( EXEN2=1 時),將會引起 T2 捕獲操作。但是如果 RCLK=1 或 TCLK=1 時,CP/RT2 控制位不起作用的,被強制工作于定時器溢出自動重裝載模式。
工作模式設(shè)置圖如下,x表示無效,無論高低電平。
工作模式設(shè)置
定時器2控制寄存器T2MOD
定時器2控制寄存器T2MOD用來設(shè)定定時器2自動重轉(zhuǎn)模式遞增或遞減模式,字節(jié)地址為C9H, 不可位尋址,且可能在頭文件沒有定義,需要自行定義。--表示保留未使用。
定時器2控制寄存器T2MOD
T2OE :T2 輸出允許位,當 T2OE=1 的時候,允許時鐘輸出到 P1.0。(僅對
80C54/80C58 有效)
DCEN:向下計數(shù)允許位。 DCEN=1 是允許 T2 向下計數(shù),否則向上計數(shù)。
自動重裝模式
這個工作模式與8位自動重裝一樣,只是定時器2是16位。還有功能更加強大。可以是正常的遞增計數(shù),也可以是遞減計數(shù)。遞增遞減控制位位于寄存器T2MOD的DCEN位。下圖是自動重裝模式邏輯圖。
自動重裝模式
TH2,TL2構(gòu)成16位加1計數(shù)器
RCAP2H,RCAP2L構(gòu)成16位初值寄存器
T2EX引腳即P1.0引腳
當定時器 2 工作于 16 位自動重裝載方式時,能對其編程為向上或向下計數(shù)方式, 這個功能可通過特殊功能寄存器 T2MOD的 DCEN 位(允許向下計數(shù))來選擇的。復(fù)位時, DCEN 位置“ 0”,定時器 2 默認設(shè)置為向上計數(shù)。(遞增計數(shù))當 DCEN置位時,定時器 2 既可向上計數(shù)也可向下計數(shù),這取決于 T2EX(P1.1)引腳的值。當 DCEN=0 時,定時器 2 自動設(shè)置為向上計數(shù),在這種方式下, T2CON 中的 EXEN2 控制位有兩種選擇,若 EXEN2=0,定時器 2 為向上計數(shù)至 0FFFFH (65535)溢出,置位 TF2 激活中斷,同時把 16 位計數(shù)寄存器 RCAP2H 和 RCAP2L重裝載, RCAP2H 和 RCAP2L 的值軟件預(yù)置。若EXEN2=1,定時器 2 的 16 位重裝載由溢出或外部輸入端 T2EX 從 1 至0 的下降沿觸發(fā)。這個脈沖使 EXF2 置位,如果中斷允許,同樣產(chǎn)生中斷。
當 DCEN=1 時,允許定時器 2 向上或向下計數(shù),這種方式下, T2EX 引腳控制計數(shù)器方向。 T2EX 引腳為邏輯“ 1”時,定時器向上計數(shù),當計數(shù) 0FFFFH 向上溢出時,置位 TF2,同時把 16 位計數(shù)寄存器RCAP2H 和 RCAP2L重裝載到 TH2 和 TL2 中。 T2EX 引腳為邏輯“ 0”時,定時器 2 向下計數(shù), 當 TH2 和 TL2中的數(shù)值等于 RCAP2H 和RCAP2L中的值時,計數(shù)溢出,置位 TF2,同時將 0FFFFH 數(shù)值重新裝入定時寄存器中。
當定時 / 計數(shù)器 2 向上溢出或向下溢出時,置位 EXF2 位。
寄存器,原理都說完,只差實戰(zhàn)。
示例
#include<reg52.h>
sbit led=P1^1;        //位定義
sfr T2MOD=0XC9;        //寄存器T2MOD定義
main()
{
                     //50微秒@11.0592MHz
    T2MOD = 0;      //---- --00  初始化模式寄存器  默認向上計數(shù)
    T2CON = 0;      //0000 0000  初始化控制寄存器 一個中斷源,16位自動重裝模式
    TL2 = 0x00;     //設(shè)置定時初值
    TH2 = 0x4C;     //設(shè)置定時初值
    RCAP2L = 0x00;      //設(shè)置定時重載值
    RCAP2H = 0x4C;      //設(shè)置定時重載值
    TR2 = 1;        //定時器2開始計時
    IE=0XA0;        //1010 0000 打開全局中斷,定時器2中斷
    while(1);
}
void timer_T2() interrupt 5       //中斷函數(shù)
{
    static unsigned char count;     //定義變量,記錄中斷次數(shù)
    TF2=0;              //軟件清零定時器2溢出標志位
    count++;
    if(count==20)       //時間為1秒
    {
        count=0;         //清零
        led=~led;        //狀態(tài)取反
    }
}
本程序講解定時器2,16位自動重裝模式,只是簡單示范如何操作,更多其他功能就不展示,希望能融會貫通,解鎖更多新技能。
捕獲模式
介紹捕獲模式前,先看一下捕獲的意思。捕獲 ,就是捕捉某一瞬間的值。這個模式通常是用來測量外部某個脈沖的的寬度或周期。使用捕獲功能可以非常準確測量出脈沖寬度或周期。
捕獲模式
工作原理
在捕獲模式下,定時器計數(shù),當與捕獲功能相關(guān)的引腳產(chǎn)生負跳變時(P1.1),捕獲會會立即將計數(shù)器寄存器中的數(shù)值準確的獲取,并且存入陷阱寄存器(RCAPXH,RCAPXL),同時向CPU申請中斷,方便軟件記錄。當該引腳產(chǎn)生下一次負跳變,便會產(chǎn)生另一個捕獲,再次向CPU申請中斷,軟件記錄兩次數(shù)據(jù),便可得出脈沖周期。
使用
在捕獲方式下,通過 T2CON 控制位 EXEN2 來選擇兩種方式。如果EXEN2=0,定時器 2 是一個 16 位定時器或計數(shù)器, 計數(shù)溢出時, 對 T2CON 的溢出標志TF2 置位,同時激活中斷。如果 EXEN2=1,定時器 2 完成相同的操作,而當 T2EX(P1.1) 引腳外部輸入信號發(fā)生 1 至 0 負跳變時,也出現(xiàn) TH2 和TL2 中的值分別被捕獲到 RCAP2H 和 RCAP2L 中。另外, T2EX 引腳信號的跳變使得 T2CON 中的 EXF2 置位,與 TF2 相仿, EXF2 也會激活中斷。
示例
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag=0;
uint high,low,value;      //定義變量高位,低位,輸出值
main()
{
    uint temp_1,temp_2,result;
    T2CON=0X09;        // 0000 1001 設(shè)定捕獲模式
    IE=0XA0;          //1010 0000  打開總中斷,定時器2中斷
    TR2=1;           //啟動定時器2中斷
    while(1)
    {
        if(flag==1)
        {
            temp_1=value;     //記錄第一次值
        }
        if(flag==2)
        {
            temp_2=value;      //記錄第二次直
            TR2=0;             //關(guān)閉定時器
            flag=0;
        }
        result=temp_1+temp_2;   //最終脈沖周期
    }
}
void timer2_T2() interrupt 5
{
    EXF2=0;        //軟件置定時器外部標志0
    flag++;
    high=RCAP2H;    //讀取寄存器值
    low=RCAP2L;
    value=high*256+low;    //轉(zhuǎn)化為16位
    RCAP2L=0x00;    //清零
    RCAP2H=0x00;
}
波特率發(fā)生器模式
波特率發(fā)生器模式邏輯結(jié)構(gòu)
當 T2CON 中的 TCLK 和 RCLK 置位時,定時 / 計數(shù)器 2 作為 波特率發(fā)生器使用。如果定時 / 計數(shù)器 2 作為發(fā)送器或接收器,其發(fā)送和接收的波特率可以是不同的。
TCLK 置位,則定時器 2 工作于 波特率發(fā)生器 方式。波特率發(fā)生器的方式與自動重裝載方式相仿,在此方式下, TH2 翻轉(zhuǎn)使定時器 2 的寄存器用 RCAP2H和 RCAP2L 中的 16 位數(shù)值重新裝載,該數(shù)值由軟件設(shè)置。
當定時器配置為計數(shù)方式時,外部時鐘信號由T2引腳進入。在方式 1 和方式 3 中,波特率由定時器 2 的溢出速率根據(jù)下式確定:
方式 1 和 3 的波特率 =定時器的溢出率 /16
波特率
定時器既能工作于定時方式也能工作于計數(shù)方式,在大多數(shù)的應(yīng)用中,是工作在定時方式( C/T2=0)。定時器 2 作為波特率發(fā)生器時,與作為定時器的操作是不同的,通常作為定時器時,在每個機器周期( 1/12 振蕩頻率)寄存器的值加 1,而作為波特率發(fā)生器使用時, 在每個狀態(tài)時間 (1/2 振蕩頻率)寄存器的值加 1。波特率的計算公式如下:
方式 1 和 3 的波特率 =振蕩頻率 /{32*[65536-(RCP2H,RCP2L)]}
波特率
式中(RCAP2H ,RCAP2L)是 RCAP2H和 RCAP2L中的 16 位無符號數(shù)。
T2CON 中的RCLK 或 TCLK=1 時,波特率工作方式才有效。 在波特率發(fā)生器工作方式中,TH2 翻轉(zhuǎn)不能使 TF2 置位,故而不產(chǎn)生中斷。 但若 EXEN2 置位,且 T2EX 端產(chǎn)生由 1 至 0 的負跳變,則會使 EXF2 置位,此時并不能將 (RCAP2H,RCAP2L)的內(nèi)容重新裝入 TH2 和 TL2 中。所以,當定時器 2 作為波特率發(fā)生器使用時,T2EX 可作為附加的外部中斷源來使用。
需要注意的是,當定時器 2 工作于波特率器時,作為定時器運行( TR2=1)時,并不能訪問 TH2 和 TL2。因為此時每個狀態(tài) 時間定時器 都會加 1,對其讀寫將得到一個不確定的數(shù)值。然而,對 RCAP2 則可讀而不可寫,因為寫入操作將是重新裝載,寫入操作可能令寫和 / 或重裝載出錯。在訪問定時器 2 或RCAP2 寄存器之前,應(yīng)將定時器關(guān)閉(清除 TR2)。
## 示例
void UartInit(void)        //9600bps@11.0592MHz
{
    SCON = 0x50;        // 0000 0101  串行口方式一
    TL2 = 0xE8;     //設(shè)定定時初值
    TH2= 0xFF;      //設(shè)定定時初值
    TH2=RCAP2H;      //賦值陷阱寄存器
    TL2=RCAP2L;
    T2CON=0X34;     //0011 0100  波特率發(fā)生器模式   
                    //TH2溢出不產(chǎn)生中斷,不用設(shè)置中斷
}
貼出波特率發(fā)生器模式初始化代碼,需要什么功能自行添加。
結(jié)束語
定時器2的講解結(jié)束,確實使用比定時器0,1稍微困難,但它功能強大,能解決很多問題。在定時器不夠用的情況下,定時器2不失為一個好的備用方案。

以上的Word格式文檔51黑下載地址:
新建 Microsoft Word 文檔.doc (1.46 MB, 下載次數(shù): 20)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:968159 發(fā)表于 2021-11-30 12:08 | 只看該作者
TF2=0; 這個我沒寫 QAQ
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 极品粉嫩国产48尤物在线播放 | 午夜手机在线视频 | 亚洲第一区国产精品 | 欧美日韩一区二区三区在线观看 | 国产福利在线视频 | 久久国产精品久久久久久 | 亚洲国产精品久久久久秋霞不卡 | 亚洲人一区 | 男人天堂av网站 | av中文在线 | 国产精品久久久久久久久久尿 | 亚洲精品2区 | 日本黄色大片免费看 | 久久首页| 日韩在线免费 | 国产亚洲精品久久19p | 国产在线观看福利 | 国产精品久久久久久久久久了 | 精品久久久一区 | а天堂中文最新一区二区三区 | 欧洲成人午夜免费大片 | 亚州精品天堂中文字幕 | 色综合99 | 欧美一级免费观看 | 亚州综合一区 | 亚洲国产成人精 | 麻豆久久久久久 | 91九色网站 | 国产欧美一区二区三区久久 | 91亚洲国产成人久久精品网站 | 亚洲精品久久久久久久不卡四虎 | a在线免费观看视频 | 日本爱爱视频 | 国产欧美日韩二区 | 精品亚洲一区二区三区四区五区 | 欧美一区二区三区久久精品视 | 日本偷偷操 | 中文字幕高清av | 中文字幕第一页在线 | 99久久精品视频免费 | 大久|