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