導航:首頁 > 操作系統 > 單片機t2定時器

單片機t2定時器

發布時間:2023-09-25 09:34:22

⑴ 52單片機定時器T2的TF2不清零會一直執行中斷程序嗎

TF2 是T2 定時器的中斷標志位,是T2 寄存器中的一位(bit),要軟體清零,TF2 = 0 ,就是在中斷子程序內的清零命令

⑵ c51單片機中斷程序中的interrupt1,2,3是由什麼決定的

中斷是指由於某種事件的發生(硬體或者軟體的),計算機暫停執行當前的程序,轉而執行另一程序,以處理發生的事件,處理完畢後又返回原程序繼續作業的過程。中斷是處理器一種工作狀態的描述。


1、INT0——外部中斷0,由P3.2埠引入,低電平或下降沿引起。默認優先順序最高。

2、INT1——外部中斷1,由P3.3埠引入,低電平或下降沿引起。默認優先順序第二。

3、T0——定時器/計數器0中斷,由T0計數器計滿回零引起。默認優先順序第三。

4、T1——定時器/計數器1中斷,由T1計數器計滿回零引起。默認優先順序第四。

5、T2——定時器/計數器2中斷,由T2計數器計滿回零引起。默認優先順序第五。

(2)單片機t2定時器擴展閱讀

單片機中斷源類型

(1)外部設備請求中斷。一般的外部設備(如鍵盤、列印機和A / D轉換器等)在完成自身的操作後,向CPU發出中斷請求,要求CPU為他服務。 由計答仿衫算機硬體異常或故障引起的中斷,也稱為內部異常中斷。

(2)故障強迫中斷。計算機在一些關鍵部位都設有故障自動檢測裝置。如運算溢出、存儲器讀出出錯、外部設備故障、電源掉電以及其他報警信號等,這些裝置的報警信號都能使CPU中斷,進行相應的中斷處理。

(3)實時時鍾請求中斷。在控制中遇到定時檢測和控制,為此常採用一個外部時鍾電路(可編程)控制其時間間隔。需要定時時,CPU發出命令使時鍾電路開始工作,一旦到達規定時間,時鍾電路發出中斷請求,由CPU轉去完成檢測和控制工作。

(4)數據通道中斷。數據通道中斷也稱直接存儲器存取(DMA)操作中斷,如磁碟、磁帶機或CRT等直接大旁與存儲器交換數據所要求的中斷。

(5)程序自願中斷。CPU執行了特殊指令(自陷指令)或由硬體電路引起的中斷是程序自願中斷,是指當用戶調試程序時,程序自願中斷檢查中間結果或尋找錯誤所在而採用的檢查手段,如斷點中斷和單步清腔中斷等。

⑶ 52單片機T2定時計數器裝載計數值是如何計算

跟T1、T0完全一樣的。T2也是16位的定時器,你要定時1S,那就是20個50ms循環,也就是定時50mS,T0T1你應該會算吧,一模一樣,2^16-(定時時間/機器周期),50ms的常數還是3CB0(當然是16進制的)。
下面是我以前程序中的一段。
(以下是初始化中的)
TH2=0x3C;/**T2定時初值,50ms**/
TL2=0xB0;
T2CON=0x00;/**T2工作模式,16位定時器**/
RCAP2H=0x3C;/**T2自動重裝值,每次溢出後,自動將設置數值重新裝入**/
RCAP2L=0xB0;
ET2=1;/**T2中斷允許**/
EA=1;
TR2=1;/**T2啟動**/
(以下是中斷程序的一部分)
void Timer2(void) interrupt 5/**T2中斷響應程序**/
{
TR2=0;/**停止T2計數器**/
TF2=0;/**清除T2中斷標志,必須**/
con1s++;/**秒計數器加1**/
if(con1s==20)/**當秒計數器計到20,代表1秒,50ms*20=1秒**/
{
con1s=0;
second++;
。。。。。。
TR2=1;
}

T2最有意思的地方是,可以自動重裝載,不過它的中斷標志必須人工清除,與T0T1不同。
後兩者是初值必須人工裝載,但中斷標志可以自動清除,剛好相反。

⑷ 52單片機定時器2,T2口怎麼用

T2CON(T2的控制寄存器),位元組地址0C8H:
位地址
符號TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RT2
各位的定義如下:
TF2:定時/計數器2溢出標志,T2溢出時置位,並申請中斷。只能用軟體清除,但T2作為波特率發生器使用的時候,(即RCLK=1或TCLK=1),T2溢出時不對TF2置位。
EXF2:當EXEN2=1時,且T2EX引腳(P1.0)出現負跳變而造成T2的捕獲或重裝的時候,EXF2置位並申請中斷。EXF2也是只能通過軟體來清除的。
RCLK:串列接收時鍾標志,只能通過軟體的置位或清除;用來選擇T1(RCLK=0)還是T2(RCLK=1)來作為串列接收的波特率產生器
TCLK:串列發送時鍾標志,只能通過軟體的置位或清除;用來選擇T1(TCLK=0)還是T2(TCLK=1)來作為串列發送的波特率產生器
EXEN2:T2的外部允許標志,只能通過軟體的置位或清除;EXEN2=0:禁止外部時鍾觸發T2;EXEN2=1:當T2未用作串列波特率發生器時,允許外部時鍾觸發T2,當T2EX引腳輸入一個負跳變的時候,將引起T2的捕獲或重裝,並置位EXF2,申請中斷。
TR2:T2的啟動控制標志;TR2=0:停止T2;TR2=1:啟動T2
C/T2:T2的定時方式或計數方式選擇位。只能通過軟體的置位或清除;C/T2=0:選擇T2為定時器方式;C/T2=1:選擇T2為計數器方式,下降沿觸發。
CP/RT2:捕獲/重裝載標志,只能通過軟體的置位或清除。CP/RT2=0時,選擇重裝載方式,這時若T2溢出(EXEN2=0時)或者T2EX引腳(P1.0)出現負跳變(EXEN2=1時),將會引起T2重裝載;CP/RT2=1時,選擇捕獲方式,這時若T2EX引腳(P1.0)出現負跳變(EXEN2=1時),將會引起T2捕獲操作。但是如果RCLK=1或TCLK=1時,CP/RT2控制位不起作用的,被強制工作於定時器溢出自動重裝載模式。
T2MOD(方式寄存器),位元組地址0C9H:
D7D6D5D4D3D2D1D0
------------T2OEDCEN
T2OE:T2輸出允許位,當T2OE=1的時候,允許時鍾輸出到P1.0。(僅對80C54/80C58有效)
DCEN:向下計數允許位。DCEN=1是允許T2向下計數,否則向上計數。
T2的數據寄存器TH2、TL2和T0、T1的用法一樣,而捕獲寄存器RCAP2H、RCAP2L只是在捕獲方式下,產生捕獲操作時自動保存TH2、TL2的值。
以上是T2的相關寄存器的描述,其實用法上跟T0、T1是差不多的,只是功能增強了,設置的東西多了而已。
定時/計數器2其實用到最多的就是T2CON這個寄存器啦,它設定的定時和計數的方式。有三種工作方式,捕獲,自動重裝,波特率發生器。下面我是在網路裡面找的少許資料:
捕獲方式:
在捕獲方式下,通過T2CON控制位EXEN2來選擇兩種方式。如果EXEN2=0,定時器2是一個16位定時器或計數器,計數溢出時,對T2CON的溢出標志TF2置位,同時激活中斷。如果EXEN2=1,定時器2完成相同的操作,而當T2EX引腳外部輸入信號發生1至0負跳變時,也出現TH2和TL2中的值分別被捕獲到RCAP2H和RCAP2L中。另外,T2EX引腳信號的跳變使得T2CON中的EXF2置位,與TF2相仿,EXF2也會激活中斷。捕獲方式如圖4所示。
自動重裝載(向上或向下計數器)方式:
當定時器2工作於16位自動重裝載方式時,能對其編程為向上或向下計數方式,這個功能可通過特殊功能寄存器T2CON(見表5)的DCEN位(允許向下計數)來選擇的。復位時,DCEN位置「0」,定時器2默認設置為向上計數。當DCEN置位時,定時器2既可向上計數也可向下計數,這取決於T2EX引腳的值,參見圖5,當DCEN=0時,定時器2自動設置為向上計數,在這種方式下,T2CON中的EXEN2控制位有兩種選擇,若EXEN2=0,定時器2為向上計數至0FFFFH溢出,置位TF2激活中斷,同時把16位計數寄存器RCAP2H和RCAP2L重裝載,RCAP2H和RCAP2L的值可由軟體預置。若EXEN2=1,定時器2的16位重裝載由溢出或外部輸入端T2EX從1至0的下降沿觸發。這個脈沖使EXF2置位,如果中斷允許,同樣產生中斷。
定時器2的中斷入口地址是:002BH——0032H。
當DCEN=1時,允許定時器2向上或向下計數,如圖6所示。這種方式下,T2EX引腳控制計數器方向。T2EX引腳為邏輯「1」時,定時器向上計數,當計數0FFFFH向上溢出時,置位TF2,同時把16位計數寄存器RCAP2H和RCAP2L重裝載到TH2和TL2中。T2EX引腳為邏輯「0」時,定時器2向下計數,當TH2和TL2中的數值等於RCAP2H和RCAP2L中的值時,計數溢出,置位TF2,同時將0FFFFH數值重新裝入定時寄存器中。
當定時/計數器2向上溢出或向下溢出時,置位EXF2位。
波特率發生器:
當T2CON(表3)中的TCLK和RCLK置位時,定時/計數器2作為波特率發生器使用。如果定時/計數器2作為發送器或接收器,其發送和接收的波特率可以是不同的,定時器1用於其它功能,如圖7所示。若RCLK和TCLK置位,則定時器2工作於波特率發生器方式。
波特率發生器的方式與自動重裝載方式相仿,在此方式下,TH2翻轉使定時器2的寄存器用RCAP2H和RCAP2L中的16位數值重新裝載,該數值由軟體設置。
在方式1和方式3中,波特率由定時器2的溢出速率根據下式確定:
方式1和3的波特率=定時器的溢出率/16
定時器既能工作於定時方式也能工作於計數方式,在大多數的應用中,是工作在定時方式(C/T2=0)。定時器2作為波特率發生器時,與作為定時器的操作是不同的,通常作為定時器時,在每個機器周期(1/12振盪頻率)寄存器的值加1,而作為波特率發生器使用時,在每個狀態時間(1/2振盪頻率)寄存器的值加1。波特率的計算公式如下:
方式1和3的波特率=振盪頻率/{32*[65536-(RCP2H,RCP2L)]}式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16位無符號數。
定時器2作為波特率發生器使用的電路如圖7所示。T2CON中的RCLK或TCLK=1時,波特率工作方式才有效。在波特率發生器工作方式中,TH2翻轉不能使TF2置位,故而不產生中斷。但若EXEN2置位,且T2EX端產生由1至0的負跳變,則會使EXF2置位,此時並不能將(RCAP2H,RCAP2L)的內容重新裝入TH2和TL2中。所以,當定時器2作為波特率發生器使用時,T2EX可作為附加的外部中斷源來使用。需要注意的是,當定時器2工作於波特率器時,作為定時器運行(TR2=1)時,並不能訪問TH2和TL2。因為此時每個狀態時間定時器都會加1,對其讀寫將得到一個不確定的數值。
然而,對RCAP2則可讀而不可寫,因為寫入操作將是重新裝載,寫入操作可能令寫和/或重裝載出錯。在訪問定時器2或RCAP2寄存器之前,應將定時器關閉(清除TR2)。

閱讀全文

與單片機t2定時器相關的資料

熱點內容
linux中的命令 瀏覽:571
優化小米6相機演算法 瀏覽:256
ak47pdf 瀏覽:141
人與文化pdf 瀏覽:640
原子幣app在哪裡注冊的 瀏覽:529
php數組保存文件 瀏覽:226
無理的命令 瀏覽:510
問道手游解壓失敗是什麼原因 瀏覽:776
mysql命令提示 瀏覽:373
apachephp中文亂碼 瀏覽:342
pythonimportpylab 瀏覽:238
阿里雲app伺服器價格表 瀏覽:981
appstore怎麼搶手機 瀏覽:845
列印伺服器是什麼列印隊列 瀏覽:359
網上怎麼用app辦理營業執照 瀏覽:861
sql如何查看伺服器地址 瀏覽:779
編譯速度和系統有關嗎 瀏覽:59
復盛製冷壓縮機 瀏覽:982
雲伺服器共享手機流量 瀏覽:842
星界邊境像素壓縮 瀏覽:459