![第5章-MCS-51定時器與中斷系統(tǒng)_第1頁](http://file4.renrendoc.com/view7/M02/22/30/wKhkGWbwkVSAJvWcAALvwPibBHo544.jpg)
![第5章-MCS-51定時器與中斷系統(tǒng)_第2頁](http://file4.renrendoc.com/view7/M02/22/30/wKhkGWbwkVSAJvWcAALvwPibBHo5442.jpg)
![第5章-MCS-51定時器與中斷系統(tǒng)_第3頁](http://file4.renrendoc.com/view7/M02/22/30/wKhkGWbwkVSAJvWcAALvwPibBHo5443.jpg)
![第5章-MCS-51定時器與中斷系統(tǒng)_第4頁](http://file4.renrendoc.com/view7/M02/22/30/wKhkGWbwkVSAJvWcAALvwPibBHo5444.jpg)
![第5章-MCS-51定時器與中斷系統(tǒng)_第5頁](http://file4.renrendoc.com/view7/M02/22/30/wKhkGWbwkVSAJvWcAALvwPibBHo5445.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第9章MCS-51的定時與中斷系統(tǒng)吳政江制作
貴州電子信息職業(yè)技術(shù)學(xué)院貴州省人才培養(yǎng)優(yōu)秀單位5.1MCS-51的中斷系統(tǒng)及其應(yīng)用5.2定時器/計數(shù)器實訓(xùn)六:可調(diào)時間數(shù)字鐘設(shè)計與制作小結(jié)習(xí)題與思考題
中斷概述(1)生活中的中斷中斷,顧名思義就是中途打斷的意思。在我們?nèi)祟惖纳钪杏泻芏嘀袛嗟睦?。例如,你正在吃飯時電話鈴?fù)蝗豁懥?。這時,你得暫時放下吃了一半的飯,去接電話,等電話接完后再繼續(xù)吃剛才剩下的飯。這就是一個中斷事件,即吃飯被電話中途打斷了。在這個過程中,來電話是中斷事件;電話鈴聲是中斷信號;電話是引起你停止吃飯的原因,稱為中斷源;去接電話前應(yīng)將你吃的飯和餐具保存好以備接完電話后能繼續(xù)吃,稱為保護現(xiàn)場;接完電話后應(yīng)將保存好的飯和餐具恢復(fù)原樣以備繼續(xù)吃,稱為恢復(fù)現(xiàn)場。再如,你正在教室做作業(yè),這時有同學(xué)叫你陪他上街,在上街的過程中手機突然響了,于是你先接手機再繼續(xù)上街。在這個過程中,上街這一中斷事件又被手機所中斷,這稱為中斷的嵌套。5.1MCS-51的中斷系統(tǒng)及其應(yīng)用(2)計算機的中斷計算機中通常只有一個CPU,面臨著運行程序、處理數(shù)據(jù)I/O、處理特殊事件等多種任務(wù)。但任一時刻CPU只能處理一項任務(wù),而且一般CPU的工作速度很快(μs級),而外設(shè)(如打印機等)的工作速度較慢。這就出現(xiàn)了高速的CPU與低速的外設(shè)之間的矛盾。怎么辦呢?有兩種工作方式:一種是串行工作,即CPU傳送一批數(shù)據(jù)給打印機后就等待,等到打印機打完后再傳送下一批數(shù)據(jù)。顯然這種工作方式CPU的利用率低,工作速度慢。另一種是并行工作,即CPU傳送一批數(shù)據(jù)給打印機后并不是等待而是去干其它事情,待打印機將數(shù)據(jù)打印完后再通知CPU傳送下一批數(shù)據(jù)。顯然這種工作方式CPU的利用率高,工作速度快。后一種方式就是采用暫時停下一個任務(wù)去處理另一個任務(wù)的中斷方法。因此,中斷技術(shù)實際上是單一CPU處理多任務(wù)的一種技術(shù)手段,實質(zhì)上是一種資源共享技術(shù)。計算機中斷的有關(guān)概念如下。
1)中斷。2)主程序。3)中斷服務(wù)程序。4)斷點地址。5)中斷入口地址。6)中斷系統(tǒng)。7)中斷源。8)中斷請求信號。9)保護現(xiàn)場。10)恢復(fù)現(xiàn)場。11)中斷優(yōu)先級。12)中斷的嵌套。中斷服務(wù)程序返回主程序響應(yīng)中斷請求任意指令斷點主程序繼續(xù)執(zhí)行主程序斷量中矢返回指令任意指令斷點中斷矢量響應(yīng)高級中斷高級中斷服務(wù)程序返回主程序響應(yīng)中斷請求任意指令斷點主程序繼續(xù)執(zhí)行主程序斷量中矢返回指令低級中斷服務(wù)程序返回指令返回低級中斷(a)中斷處理大致流程圖(b)二級中斷嵌套示意圖圖5-1中斷及其二級嵌套示意圖
MCS-51單片機中斷系統(tǒng)的結(jié)構(gòu)圖5-2MCS-51單片機中斷系統(tǒng)結(jié)構(gòu)示意圖
(1)中斷源和中斷系統(tǒng)構(gòu)成①中斷源MCS-51單片機具有五個中斷源,分為內(nèi)部中斷源和外部中斷源等兩種類型。外部中斷源有兩個(即和)。內(nèi)部中斷源有三個,兩個定時器/計數(shù)器(T0和T1)中斷源和一個串行口中斷源。對52子系列單片機還增加了一個定時器/計數(shù)器T2中斷源,即共有六個中斷源。②中斷系統(tǒng)構(gòu)成由圖5-2中可看出,MCS-51單片機中斷系統(tǒng)主要由定時器/計數(shù)器控制寄存器(TCON)、串行口控制寄存器(SCON)、中斷允許控制寄存器(IE)、中斷優(yōu)先級控制寄存器(IP)、硬件查詢電路(對處在同一優(yōu)先級的各中斷源請求按自然優(yōu)先級進行排隊)和相應(yīng)的邏輯電路組成。
(2)中斷標志和中斷控制①中斷標志中斷標志用于表示相應(yīng)的中斷源是否向CPU發(fā)出中斷請求,標志位為1表示中斷源已發(fā)出中斷請求(即有中斷),標志位為0表示中斷源沒有發(fā)出中斷請求(即無中斷)。MCS-51單片機將中斷標志位集中安排在定時器/計數(shù)器控制寄存器(TCON)和串行口控制寄存器(SCON)中。a.定時器/計數(shù)器控制寄存器(TCON)。TCON寄存器的內(nèi)容及位地址如表5-1所示。表5-1定時器/計數(shù)器控制寄存器(TCON)位序號D7D6D5D4D3D2D1D0位地址8FH8EH8DH8CH8BH8AH89H88H位符號TF1TR1TF0TR0IE1IT1IE0IT0(a)IT1(IT0):外中斷1(外中斷0)的觸發(fā)方式控制。IT1(IT0)=1,()選擇邊沿觸發(fā)方式,下降沿有效;IT1(IT0)=0,()選擇電平觸發(fā)方式,低電平有效。(b)IE1(IE0):外中斷1(外中斷0)請求源中斷請求標志。當CPU采樣到(或)端出現(xiàn)有效中斷請求時,IE1(IE0)位由硬件置“1”。當CPU中斷響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時,由硬件將IE1(或IE0)自動清0。(c)TF1(TF0):定時器/計數(shù)器T1(T0)的溢出中斷請求標志。T1(T0)被允許計數(shù)后,從初值開始加1計數(shù),當產(chǎn)生溢出時,置位TF1(TF0),向CPU提出中斷請求,一直保持到CPU響應(yīng)該中斷時,由硬件自動清0。若采用查詢方式,則由指令清除TF1(TF0)。(d)TR1(TR0):定時器/計數(shù)器T1(T0)的啟??刂莆弧R1(TR0)=1,啟動T1(T0)計數(shù);TR1(TR0)=0,停止T1(T0)計數(shù)。b.串行口控制寄存器(SCON)。該寄存器只有TI和RI兩位用來表示串行口中斷標志位,其余各位用于串行口其它控制。進行字節(jié)操作時,寄存器地址為98H,按位操作時,各位的地址為98H~9FH。SCON寄存器的內(nèi)容及位地址如表5-2所示。(a)TI:為串行口發(fā)送中斷標志位,位地址為99H。(b)RI:為串行口接收中斷標志位,位地址為98H。表5-2串行口控制寄存器(SCON)位序號D7D6D5D4D3D2D1D0位地址9FH9EH9DH9CH9BH9AH99H98H位符號SM0SM1SM2RENTB8RB8TIRI②中斷控制各中斷源的中斷標志被置位后,CPU能否響應(yīng)還要受到控制寄存器的控制,這種控制寄存器在MCS-51單片機中有兩個,即中斷允許控制寄存器(IE)和中斷優(yōu)先級控制寄存器(IP)。a.中斷允許控制寄存器(IE)。該寄存器用于控制各中斷源中斷的允許或禁止,而且實行兩級控制,相當于有一個總開關(guān)、五個分開關(guān)(對8032、8052及8752等52子系列單片機還增加了一個定時器/計數(shù)器T2中斷源,即共有六個分開關(guān))。進行字節(jié)操作時,寄存器地址為0A8H,按位操作時,各位的地址為0A8H~0AFH。IE寄存器的內(nèi)容及位地址如表5-3所示。表5-3中斷允許控制寄存器(IE)位序號D7D6D5D4D3D2D1D0位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符號EA/ET2ESET1EX1ET0EX0
IE寄存器中各位均是:為0時,禁止中斷;為1時允許中斷。系統(tǒng)復(fù)位后,IE寄存器各位均為0,即此時禁止所有的中斷。各控制位的含義如下。(a)EA:CPU中斷允許總控制位。EA=0時,中斷總禁止,即禁止所有中斷;EA=1時,中斷總允許,總允許后各中斷源的禁止或允許由各中斷源的中斷允許控制位進行設(shè)置。(b)EX1(EX0):外部中斷1(或0)中斷允許控制位。EX1(EX0)=0時,禁止外部中斷1(或0)中斷;EX1(EX0)=1時,允許外部中斷1(或0)中斷。(c)ET1(ET0):定時器/計數(shù)器1(或0)中斷允許控制位。ET1(ET0)=0時,禁止定時器/計數(shù)器1(或0)中斷;ET1(ET0)=1時,允許定時器/計數(shù)器1(或0)中斷。(d)ES:串行口中斷允許控制位。ES=0時,禁止串行口中斷;ES=1時,允許串行口中斷。(e)ET2:定時器/計數(shù)器2溢出中斷允許位(只有8032、8052及8752等52子系列單片機才有)。ET2=0時,禁止定時器/計數(shù)器2中斷;ET2=1時,允許定時器/計數(shù)器2中斷。b.中斷優(yōu)先級控制寄存器(IP)。MCS-51單片機的中斷優(yōu)先級控制比較簡單,因為系統(tǒng)只定義了高、低2個優(yōu)先級。高優(yōu)先級用“1”表示,低優(yōu)先級用“0”表示。各中斷源的優(yōu)先級由中斷優(yōu)先級控制寄存器(IP)進行設(shè)置。復(fù)位后,IP寄存器的各位均為0,即此時全部中斷優(yōu)先級為低級。進行字節(jié)操作時,寄存器地址為0B8H,按位操作時,各位的地址為0B8H~0BFH。IP寄存器的內(nèi)容及位地址如表5-4所示。表5-4中斷優(yōu)先級控制寄存器(IP)位序號D7D6D5D4D3D2D1D0位地址0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H位符號//PT2PSPT1PX1PT0PX0(a)PX1(PX0):外部中斷1(或0)優(yōu)先級控制位。PX1(PX0)=0時,外部中斷1(或0)為低優(yōu)先級;PX1(PX0)=1時,外部中斷1(或0)為高優(yōu)先級。(b)PT1(PT0):定時器/計數(shù)器1(或0)溢出中斷優(yōu)先級控制位。PT1(PT0)=0時,定時器/計數(shù)器1(或0)為低優(yōu)先級;PT1(PT0)=1時,定時器/計數(shù)器1(或0)為高優(yōu)先級。(c)PS:串行口中斷優(yōu)先級控制位。PS=0時,串行口為低優(yōu)先級;PS=1時,串行口為高優(yōu)先級。(d)PT2:定時器/計數(shù)器2溢出中斷優(yōu)先級控制位(只有8032、8052及8752等52子系列單片機才有)。PT2=0時,定時器/計數(shù)器2為低優(yōu)先級;PT2=1時,定時器/計數(shù)器2為高優(yōu)先級。控制原則:①低優(yōu)先級的中斷請求不能打斷高優(yōu)先級的中斷服務(wù);但高優(yōu)先級的中斷請求可以打斷低優(yōu)先級的中斷服務(wù),從而實現(xiàn)中斷嵌套。②如果一個中斷請求已被響應(yīng),則同級的其它中斷服務(wù)將被禁止,即同級不能嵌套。③如果同級的多個中斷請求同時出現(xiàn),則CPU通過內(nèi)部硬件查詢電路按自然優(yōu)先級順序確定應(yīng)該響應(yīng)哪個中斷請求。其自然優(yōu)先級由硬件形成,排列如下:→T0→→T1→串行口。
中斷響應(yīng)(1)中斷處理的過程中斷處理的過程為:中斷源發(fā)出中斷請求→對中斷請求進行響應(yīng)→執(zhí)行中斷服務(wù)程序→返回主程序。①中斷采樣a.對電平觸發(fā)方式的外中斷請求(即IT1/IT0=0)。b.對邊沿觸發(fā)方式的外中斷請求(即IT1/IT0=1)。②中斷查詢③中斷響應(yīng)a.CPU的中斷響應(yīng)條件(a)有中斷源發(fā)出中斷申請,即相應(yīng)的中斷標志位為1。(b)中斷總允許位EA=1,即CPU允許所有中斷源申請中斷。(c)申請中斷的中斷源的中斷允許位為1,即此中斷源可以向CPU申請中斷。b.中斷受阻情況在中斷請求被允許的情況下,若存在以下情況,則CPU不會立即響應(yīng)中斷,稱為中斷受阻。(a)CPU正在執(zhí)行一個同級或高一級的中斷服務(wù)程序。(b)當前的機器周期不是正在執(zhí)行指令的最后一個機器周期,即正在執(zhí)行的指令執(zhí)行結(jié)束前,任何中斷請求都得不到響應(yīng)。(c)正在執(zhí)行的是RET及RETI指令或訪問IE/IP寄存器指令。此時,在執(zhí)行RET及RETI指令或者讀寫IE/IP寄存器之后,不會馬上響應(yīng)中斷請求,還需要再取一條指令執(zhí)行后,才有可能響應(yīng)中斷。c.中斷響應(yīng)過程(a)完成當前指令的操作。(b)保護斷點地址,即將當前PC內(nèi)容壓入堆棧保護。(c)屏蔽同級的中斷請求。(d)將中斷源入口地址(固定的)送入PC寄存器,自動轉(zhuǎn)入相應(yīng)中斷服務(wù)程序的入口地址。中斷源入口地址如表4-5所示。(e)執(zhí)行中斷服務(wù)程序。(f)當執(zhí)行到RETI指令時即結(jié)束中斷,從堆棧中自動彈出斷點地址到PC寄存器,返回到先前斷點處繼續(xù)執(zhí)行原程序。表5-6MCS-51/52中斷源中斷源中斷號n(C語言用)入口地址(匯編語言用)默認中斷級別INT0:外部中斷000003H最高T0:定時器/計數(shù)器01000BH第2INT1:外部中斷120013H第3T1:定時器/計數(shù)器13001BH第4TI/TR:串行口中斷40023H第5T2:定時器/計數(shù)器25002BH最低d.中斷響應(yīng)的時間:最短時間為3個機器周期④中斷服務(wù):CPU完成中斷源所要求的操作。⑤中斷返回(2)中斷申請的撤除CPU響應(yīng)中斷請求后,轉(zhuǎn)向中斷服務(wù)程序執(zhí)行,在其執(zhí)行中斷返回指令(RETI)之前中斷請求信號必須撤除,否則將可能再次引起中斷而出錯。①單片機內(nèi)部硬件自動復(fù)位清除響應(yīng)標志。②應(yīng)用軟件清除響應(yīng)標志。③既無軟件清除也無硬件撤除:采用硬件配合軟件的方式撤除。如圖5-3所示電路就是用于撤除電平觸發(fā)方式的外部中斷請求方案之一。外部中斷請求信號不直接加在或上,而是加在D觸發(fā)器的CLK端。由于D端地,當外部中斷請求的正脈沖出現(xiàn)在CLK端時,或為低,發(fā)出中斷請求。用P1.0接在D觸發(fā)器的異步置位端上作為應(yīng)答線,當CPU響應(yīng)中斷后可使用如下三條指令來撤除中斷。ANLP1,#0FEH或CLRP1.0ORLP1,#01HSETBP1.0CLRIE0CLRIE0在C51中相應(yīng)的語句為:P1&&=0xfe;P1||=0x01;IE0=0;圖5-3外部中斷請求的撤除CLKQDSP1.0INT08051外部請求
C51的中斷服務(wù)函數(shù)與寄存器組選擇
(1)中斷服務(wù)函數(shù)的定義與工作寄存器組的選擇定義中斷服務(wù)函數(shù)的一般格式為:void函數(shù)名()
interrupt中斷號nusing工作寄存器組號r①中斷函數(shù)不能返回任何值,所以最前面用void。
②void后面緊跟函數(shù)名,名字可隨便起,但不要與關(guān)鍵字相同。
③中斷函數(shù)不帶任何參數(shù),所以函數(shù)名后面的小括號為空,也可寫上void。
④關(guān)鍵字interrupt:是函數(shù)定義時的一個選項,加上這個選項即可將一個函數(shù)定義成中斷服務(wù)函數(shù),其后必須跟中斷號n。中斷號n是指MCS-51/52單片機中幾個中斷源的序號,這個序號是C51編譯器識別不同中斷源的唯一符號,因此在寫中斷服務(wù)程序時務(wù)必要寫正確。
⑤關(guān)鍵字using:using用來選擇不同的工作寄存組,后跟工作寄存器組號r(r=0~3)。如果不用該選項,則由C51編譯器自動選擇一個工作寄存器組作為絕對寄存器組訪問。因此,“using工作寄存器組號r”通常不寫。(2)外部中斷(或)初始化及中斷函數(shù)格式①外部中斷0初始化函數(shù)及中斷函數(shù)voidchushihua(void)//初始化函數(shù){EA=1;//CPU允許中斷IT0=1;//邊沿觸發(fā)方式,下降沿有效EX0=1;//允許中斷}voidmain(void)//主函數(shù){chushihua();//調(diào)初始化函數(shù)//其他程序}voidint0(void)intereupt0//外部中斷中斷服務(wù)函數(shù){//中斷處理程序}②外部中斷1初始化函數(shù)及中斷函數(shù)voidchushihua(void)//初始化函數(shù){EA=1;//CPU允許中斷IT1=1;//邊沿觸發(fā)方式,下降沿有效EX1=1;//允許中斷}voidmain(void)//主函數(shù){chushihua();//調(diào)初始化函數(shù)//其他程序}voidint1(void)intereupt2//外部中斷中斷服務(wù)函數(shù){//中斷處理程序}【例5.1】設(shè)AT89C51單片機的時鐘頻率為11.0592MHz,利用定時器T0中斷使其接在P1.0引腳上的發(fā)光二極管以1s為間隔亮滅閃爍。解:要使接在AT89C51單片機的在P1.0引腳上的發(fā)光二極管以1s為間隔亮滅閃爍,只要編程控制AT89C51單片機的P1.0引腳每隔1s取反一次即可。這里1s時間可先由定時器T0方式1定時50ms再重復(fù)20次得到。參考程序如下:#include<reg51.h>//51系列單片機的頭文件#defineucharunsignedchar//宏定義#defineuintunsignedintsbitled1=P1^0;//聲明P1口的第0位ucharnum;voidmain(){TMOD=0x01;//設(shè)置定時器0為工作方式1(M1M0為01)TH0=(65536-45872)/256;//裝初值(11.0592MHz晶振定時50ms初值為45872)TL0=(65536-45872)%256;EA=1;//開總中斷ET0=1;//開定時器0中斷TR0=1;//啟動定時器0while(1);//程序停止在這里等待中斷發(fā)生}voidT0-time()interrupt1{TH0=(65536-45872)/256;//重裝初值TL0=(65536-45872)%256;num++;//每中斷一次num自加1并判斷是否加到20次if(num==20)//如果到了20次,說明1秒時間到了{num=0;//然后把num清0重新再記20次led1=~led1;//讓發(fā)光管狀態(tài)取反}}(3)中斷服務(wù)函數(shù)的編寫規(guī)則①中斷服務(wù)函數(shù)不能進行參數(shù)傳遞,如果中斷服務(wù)函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯。②中斷服務(wù)函數(shù)沒有返回值,如果企圖定義一個返回值將得不到正確的結(jié)果。因此在定義中斷服務(wù)函數(shù)時必須將其定義成void類型,以明確說明沒有返回值。③在任何情況下都不能直接調(diào)用中斷服務(wù)函數(shù),否則會產(chǎn)生編譯錯誤。④如果在中斷服務(wù)函數(shù)中調(diào)用了其它函數(shù),則被調(diào)用函數(shù)所使用的工作寄存器組必須與中斷服務(wù)函數(shù)相同。⑤在中斷服務(wù)函數(shù)中一般不要寫過多的處理語句。定時器/計數(shù)器的結(jié)構(gòu)及工作原理(1)定時器/計數(shù)器的結(jié)構(gòu)5.2定時器/計數(shù)器TCON(88H)TMOD(89H)定時器0(T0)定時器1(T1)CPU中斷工作方式總線(8AH)(8BH)(8CH)(8DH)T0(P3.4)T1(P3.5)TL1TH1TH0TL0工作方式啟動溢出溢出啟動圖5-4AT89C51定時器/計數(shù)器的邏輯結(jié)構(gòu)圖(2)定時器/計數(shù)器的工作原理①當定時器/計數(shù)器設(shè)置為定時工作方式時,計數(shù)器對內(nèi)部機器周期計數(shù),每過一個機器周期,計數(shù)器增1,直至計滿溢出。②當定時器/計數(shù)器設(shè)置為計數(shù)工作方式時,計數(shù)器對來自輸入引腳T0(P3.4)和T1(P3.5)的外部信號計數(shù),外部脈沖的下降沿將觸發(fā)計數(shù)。計數(shù)器對外部輸入信號的要求是:頻率低于振蕩頻率的1/24,高電平與低電平的持續(xù)時間在一個機器周期以上。③當設(shè)置了定時器的工作方式并啟動定時器工作后,定時器就按被設(shè)定的工作方式獨立工作,不再占用CPU的操作時間,只有在計數(shù)器計滿溢出時才中斷CPU當前的操作。
TMOD(89H)表5-7TMOD的位格式D7D6D5D4D3D2D1D0GATEM1M0GATEM1M0定時器T1定時器T05.2.2定時器/計數(shù)器的控制(1)控制寄存器①工作方式控制寄存器(TMOD)用于設(shè)定定時器/計數(shù)器的工作方式,其中低4位用于設(shè)定T0,高4位用于設(shè)定T1。TMOD的位格式見表5-7。GATE:選通控制位(也叫門控位),用于控制定時器/計數(shù)器的啟動方式。GATE=0,只要用軟件對TR置1就可啟動定時器;GATE=1,只有()引腳為高電平,且由軟件使TR置1時,才能啟動定時器工作。:定時器/計數(shù)器方式選擇位。=0,設(shè)置為定時工作方式,對機器周期進行計數(shù);=1,設(shè)置為計數(shù)工作方式,對外部脈沖進行計數(shù)。M1、M0:工作方式控制位,可構(gòu)成表5-8所示的四種工作方式。表5-8工作方式選擇M1M0工作方式說明00013位定時器/計數(shù)器01116位定時器/計數(shù)器102自動裝入初值的8位定時器/計數(shù)器113T0:分成兩個8位定時器/計數(shù)器T1:停止計數(shù)②定時器/計數(shù)器控制寄存器(TCON)TCON已在上一節(jié)中斷系統(tǒng)中作過介紹,此處不再贅述。其低4位與外部中斷有關(guān),高4位與定時器/計數(shù)器有關(guān)??傊?,定時器/計數(shù)器T0和T1是在TMOD和TCON的聯(lián)合控制下進行定時或計數(shù)工作的。(2)工作方式(方式0~方式3)AT89C51單片機的定時器/計數(shù)器通過可設(shè)置成定時或計數(shù)兩種工作模式。在每種模式下通過對M1、M1的設(shè)置又有四種不同的工作方式共有四種工作方式(方式0~方式3)。①工作方式0當TMOD中的MlM0=00H時,定時器/計數(shù)器工作于方式0。以T0為例,其等效邏輯結(jié)構(gòu)如圖5-5所示。其邏輯控制功能如下:
a.當=0時,T0選擇為定時器模式,對CPU內(nèi)部機器周期加1計數(shù),其定時時間為:T=(213-T0初值)×機器周期。b.當=1時,T0選擇為計數(shù)器模式,對T0(P3.4)腳輸入的外部電平信號由“1”到“0”的負跳變進行加1計數(shù)。c.當GATE=0時,或門的另一輸入信號將不起作用,僅用TR0來控制T0的啟動與停止。d.當GATE=1時,和TR0同時控制T0的啟/停。只有當兩者都為“1”時,定時器T0才能啟動計數(shù)?!?2TL0(低5位)TH0(8位)TF0&≥11P3.4/T0TR0GATE0INT/2.3P0TC/=1TC/=晶振圖5-5定時器/計數(shù)器T0在工作方式0下的邏輯結(jié)構(gòu)圖②工作方式1當MlM0=01H時,定時器/計數(shù)器工作于方式1,是16位的加1計數(shù)器,最大計數(shù)值為216=65536。這16位由高8位TH0(或TH1)和低8位TL0(或TL1)組成。當TL0(或TL1)計數(shù)滿時向TH0(或TH1)進位。定時器/計數(shù)器在方式1下的工作情況與在方式0下時基本相同,差別只是計數(shù)器的位數(shù)不同。③工作方式2當M1M0=10H時,定時器/計數(shù)器工作于方式2,此時定時器/計數(shù)器被設(shè)置成一個8位計數(shù)器TL0(或TL1)和一個具有計數(shù)初值重裝功能的8位寄存器TH0(或TH1),最大計數(shù)值為28=256。以T0為例,其等效邏輯結(jié)構(gòu)如圖5-6所示。由圖5-6可知方式2與方式0、方式1的區(qū)別在于:a.計數(shù)位數(shù)不同,計數(shù)范圍比方式0、方式1都小。b.初值自動重裝,適用于需要重復(fù)定時的應(yīng)用場合。GATE晶振÷120TC/=TL0(8位)TF0&≥11P3.4/T0TR01TC/=TH0(8位)溢出中斷0/2.3PINT圖5-6定時器/計數(shù)器T0在方式2下的邏輯結(jié)構(gòu)圖④工作方式3當M1M0=11H時,定時器/計數(shù)器設(shè)定為工作方式3。在該方式下,T0與T1的功能相差很大。當T1設(shè)置為方式3時,它將保持初始值不變,并停止計數(shù),因而T1不能工作在方式3下。當將T0設(shè)置為方式3時,T0被分成兩個獨立的8位定時器/計數(shù)器TL0和TH0,最大計數(shù)值為28=256。其邏輯結(jié)構(gòu)如圖5-7所示。晶振÷12TH0(8位)TF1TL0(8位)TF0&≥11P3.4/T0TR00TC/=1TC/=TR1中斷中斷/.0INT23PGATE圖5-7定時器/計數(shù)器T0在方式3下的邏輯結(jié)構(gòu)圖5.2.3定時器/計數(shù)器的編程和應(yīng)用(1)定時器/計數(shù)器的初始化編程①初始化的內(nèi)容。定時器/計數(shù)器編程初始化的內(nèi)容如下:a.根據(jù)設(shè)計需要先確定定時器/計數(shù)器的工作模式及工作方式,然后將相應(yīng)的控制字送入TMOD寄存器中。b.計算出計數(shù)初始值并寫入TH0、TL0、TH1、TL1中。c.通過對中斷優(yōu)先級寄存器IP和中斷允許寄存器IE的設(shè)置,確定計數(shù)器的中斷優(yōu)先級和是否開放中斷。d.給定時器控制寄存器TCON送命令字,控制定時器/計數(shù)器的啟動和停止。②定時器/計數(shù)器初值的計算定時器/計數(shù)器T0、T1不論是工作在計數(shù)器模式還是定時器模式下,都是加1計數(shù)器,因而寫入計數(shù)器的初始值和實際計數(shù)值并不相同,兩者的換算關(guān)系如下:設(shè)實際計數(shù)值為N,計數(shù)最大值為M,計數(shù)初始值為X,則X=M﹣N。其中,計數(shù)最大值M在不同工作方式下的值不同,具體如下:a.工作方式0:M=213=8192=2000H。b.工作方式1:M=216=65536=10000H。c.工作方式2:M=28=256=100H。d.工作方式3:M=28=256=100H。定時器模式下對應(yīng)的定時時間為T=N×T機=(M﹣X)×T機=(M﹣X)×(12/fosc)則X=M﹣T/T機=M﹣T/(12/fosc)式中,T機為單片機的機器周期(T機為晶振時鐘周期的12倍)。例如,T0選用方式1用于定時,外接晶振頻率為12MHz,定時時間為10ms,計算過程如下:方式1時,M=65536,定時時間T=10×10-3s,fosc=12MHz=12×106HzX=M﹣T/(12/fosc)=65536-10×10-3/(12/12×106)=65536-10000拆分X的高八位送TH0,低八送TL0:TH0=(65536-10000)/256;TL0=(65536-10000)%256。這里用“TH0=(65536-10000)/256;”對256求模是因為定時器方式1為16位計數(shù)器,而且分為高8位TH0和低8位TL0,8位中最多可裝載256個數(shù),再加1便會進位。若是方式0,由于計數(shù)時只用了TL0的低5位,這5位中最多可裝載32個數(shù),再加1便會進位,因而應(yīng)對32求模,而不是256了。(2)C51中定時器/計數(shù)器初始函數(shù)及中斷服務(wù)函數(shù)格式①T0方式1:以10ms定時時間,12MHz晶振為例voidchushihua(void)//初始化函數(shù){TMOD=0x01;//T0方式1EA=1;//CPU允許中斷ET0=1;TR0=1;//T0允許中斷,啟動定時器T0TH0=(65536-10000)/256;//高八位賦初值TL0=(65536-10000)%256;//低八位賦初值}voidmain(void)//主函數(shù){chushihua();//調(diào)初始化函數(shù)//其他程序}voidt0(void)interrupt1//定時器T0中斷服務(wù)函數(shù){TH0=(65536-10000)/256;//高八位初值重裝
TL0=(65536-10000)%256;//低八位初值重裝//定時處理程序}②T1方式1:以10ms定時時間,12MHz晶振為例voidchushihua(void)//初始化函數(shù){TMOD=0x10;//T1方式1EA=1;//CPU允許中斷ET1=1;TR1=1;//T1允許中斷,啟動定時器T1TH1=(65536-10000)/256;//高八位賦初值TL1=(65536-10000)%256;//低八位賦初值}voidmain(void)//主函數(shù){chushihua();//調(diào)初始化函數(shù)//其他程序}voidt1(void)interrupt3//定時器T1中斷服務(wù)函數(shù){TH1=(65536-10000)/256;//高八位初值重裝TL1=(65536-10000)%256;//低八位初值重裝//定時處理程序}③T0方式1、T1方式1同時使用:以10ms定時時間,12MHz晶振為例voidchushihua(void)//初始化函數(shù){TMOD=0x11;//T0方式1、T1方式1EA=1;//CPU允許中斷ET0=1;TR0=1;//T0允許中斷,啟動定時器T0ET1=1;TR1=1;//T1允許中斷,啟動定時器T1TH0=(65536-10000)/256;//T0高八位賦初值TL0=(65536-10000)%256;//T0低八位賦初值TH1=(65536-10000)/256;//T1高八位賦初值TL1=(65536-10000)%256;//T1低八位賦初值}voidmain(void)//主函數(shù){chushihua();//調(diào)初始化函數(shù)//其他程序}voidt0(void)interrupt1//定時器T0中斷服務(wù)函數(shù){TH0=(65536-10000)/256;//高八位初值重裝TL0=(65536-10000)%256;//低八位初值重裝//定時處理程序}voidt1(void)interrupt3//定時器T1中斷服務(wù)函數(shù){TH1=(65536-10000)/256;//高八位初值重裝TL1=(65536-10000)%256;//低八位初值重裝//定時處理程序}(3)定時器/計數(shù)器的應(yīng)用舉例【例5.2】由AT89C51單片機的P1.0引腳輸出周期為1秒的連續(xù)方波,要求用T0定時,設(shè)單片機的振蕩頻率fosc=12MHz。解:要使AT89C51單片機的P1.0引腳輸出周期為1秒的連續(xù)方波,只要編程控制AT89C51單片機的P1.0引腳每隔500ms取反一次即可。這里500ms可先由定時器T0方式1定時50ms再重復(fù)10次得到。定時器T0方式1定時50ms初值:X=M﹣T/(12/fosc)=65536-50×10-3/(12/12×106)=65536-15536拆分X的高八位送TH0,低八送TL0:TH0=(65536-15536)/256;TL0=(65536-15536)%256。參考程序如下:#include<reg51.h>//51系列單片機的頭文件#defineucharunsignedchar//宏定義#defineuintunsignedintsbitled1=P1^0;//聲明P1口的第0位ucharnum;voidmain(){TMOD=0x01;//設(shè)置定時器0為工作方式1(M1M0為01)TH0=(65536-15536)/256;//裝初值(12MHz晶振定時50ms初值為15536)TL0=(65536-15536)%256;EA=1;//開總中斷ET0=1;//開定時器0中斷TR0=1;//啟動定時器0while(1);//程序停止在這里等待中斷發(fā)生}voidT0-time()interrupt1{TH0=(65536-45872)/256;//重裝初值TL0=(65536-45872)%256;num++;//每中斷一次num自加1并判斷是否加到10次if(num==10)//如果到了10次,說明500ms時間到了{num=0;//然后把num清0重新再記10次led1=~led1;//讓發(fā)光管狀態(tài)取反}}1.實訓(xùn)目的通過本次實訓(xùn),(1)初步認識獨立式按鍵的結(jié)構(gòu)原理;(2)掌握定時器的結(jié)構(gòu)與原理;(3)掌握C51中中斷服務(wù)函數(shù)的編程方法與技巧;(4)進一步熟悉八段數(shù)碼管的動態(tài)掃描顯示方法;(5)進一步熟悉調(diào)試C51源程序的方法與技巧。2.知識要點(1)硬件電路及工作原理本實訓(xùn)是將數(shù)字鐘和按鍵控制結(jié)合在一起,硬件電路原理如圖5-8所示。(2)參考程序:見教材。實訓(xùn)六:可調(diào)時間數(shù)字鐘設(shè)計與制作圖5-8可調(diào)時間數(shù)字鐘電路原理圖3.實訓(xùn)器材(1)DICE-5208K開發(fā)型單片機綜合實驗儀1套。(2)PC機1臺。(3)DICE-3000仿真器1臺。(4)帶插針的導(dǎo)線若干。4.實訓(xùn)內(nèi)容及步驟(1)啟動ISIS7professional軟件,并用其繪制圖5-8所示電路原理圖。(2)啟動KeilC51uvision4軟件。建立工程,輸入上述C51參考源程序并編譯調(diào)試生成二進制的目標文件。(3)將第(2)步生成的二進制目標文件加載到第(1)步所繪圖5-8所示電路原理圖的AT89C51單片機中,然后仿真運行觀察數(shù)碼管的顯示情況是否符合要求。(4)按硬件電路焊好電路板,將參考程序?qū)懭階T89C51單片機中,通電,觀察數(shù)碼管的顯示情況是否符合要求。5.思考題(1)簡述數(shù)碼管的動態(tài)顯示原理及特點。(2)若數(shù)碼管為共陰極結(jié)構(gòu),應(yīng)怎樣修改源程序?(3)本實訓(xùn)有哪些注意事項?(4)如何用匯編語言編程實現(xiàn)該功能?小結(jié)本章主要講述了AT89C51單片機的中斷和定時系統(tǒng)。第一,中斷系統(tǒng)。主要內(nèi)容有中斷的有關(guān)概念、中斷系統(tǒng)的結(jié)構(gòu)、中斷處理的過程、中斷申請的撤除以及中斷系統(tǒng)的應(yīng)用等。中斷系統(tǒng)是AT89C51單片機的重要組成部分,采用中斷可大大提高AT89C51系統(tǒng)的工作效率和處理問題的靈活性。讀者在學(xué)習(xí)完本節(jié)后,要重點掌握中斷的基本原理和基本工作方法,并在以后的模塊中進一步學(xué)會應(yīng)用。第二,定時器/計數(shù)器。AT89C51單片機有兩個16位的可編程定時器/計數(shù)器T0和T1,可編程實現(xiàn)定時控制、延時、脈沖計數(shù)、脈寬測量、頻率測量、信號發(fā)生等功能,在串行通信中,還可作為波特率發(fā)生器。定時器/計數(shù)器實質(zhì)是一個16位的計數(shù)器,有4種工作方式,其中方式1的定時/計數(shù)值范圍最大,最大計數(shù)值為65536;方式2的定時/計數(shù)值最小,但可實現(xiàn)初值自動恢復(fù)。作為定時時,計數(shù)信號來自片內(nèi)振蕩器的12分頻信號,即每過一個機器周期計數(shù)器加1,直至溢出。而計數(shù)方式的外部脈沖從引腳T0或T1加入,外部脈沖觸發(fā)計數(shù)器,直至溢出。習(xí)題與
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年含乳飲料法律咨詢企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年護膚成分之旅企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年在線科普漫畫連載行業(yè)跨境出海戰(zhàn)略研究報告
- 電信網(wǎng)絡(luò)設(shè)備選型與故障預(yù)防措施
- 2025年度安全生產(chǎn)科普宣傳協(xié)同創(chuàng)新協(xié)議
- 辦事處間2025年度技術(shù)交流與戰(zhàn)略規(guī)劃協(xié)議
- 五金交電運輸用工合同
- 董事長助理在戰(zhàn)略規(guī)劃中的職責(zé)
- 民族團結(jié)與歷史教育的心得體會
- 初中英語寫作輔導(dǎo)課程設(shè)計
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 二零二五年知識產(chǎn)權(quán)共享及收益分成合作協(xié)議3篇
- 北師大版二年級數(shù)學(xué)上冊計算題專項復(fù)習(xí)大全272
- 屋頂分布式光伏電站設(shè)計及施工方案
- 南通市2025屆高三第一次調(diào)研測試(一模)生物試卷(含答案 )
- 2024年09月2024渤海銀行天津濱海新區(qū)分行校園招聘筆試歷年參考題庫附帶答案詳解
- 2024低血糖的急救診斷和治療
- 期末考試成績分析報告課件
- 兒童哮喘的防治與治療
- 學(xué)校安全教師培訓(xùn)
- 金融警示教育案例
評論
0/150
提交評論