中斷的基本概念匯總.ppt_第1頁
中斷的基本概念匯總.ppt_第2頁
中斷的基本概念匯總.ppt_第3頁
中斷的基本概念匯總.ppt_第4頁
中斷的基本概念匯總.ppt_第5頁
免費預(yù)覽已結(jié)束,剩余58頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、中斷的基本概念 80C51中斷源 中斷控制寄存器 中斷處理過程 中斷優(yōu)先控制和中斷嵌套 中斷系統(tǒng)的應(yīng)用 80C51定時/計數(shù)器 定時/計數(shù)器控制寄存器 定時/計數(shù)器工作方式 定時/計數(shù)器的應(yīng)用,第5章 中斷系統(tǒng)和定時/計數(shù)器,本章要點:,5-1 80C51中斷系統(tǒng),CPU暫時中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行請求中斷的那個外設(shè)或事件的服務(wù)程序,等處理完畢后再返回執(zhí)行原來中止的程序, 叫做中斷。, 為什么要設(shè)置中斷? 提高CPU工作效率 具有實時處理功能 具有故障處理功能 實現(xiàn)分時操作,5.1.1 中斷概述, 什么叫中斷?,中斷功能強弱是計算機性能優(yōu)劣的重要標(biāo)志,中斷源 中斷申請 開放中斷 保護現(xiàn)場

2、 中斷服務(wù) 恢復(fù)現(xiàn)場 中斷返回,中斷涉及的幾個環(huán)節(jié),CPU 在每個機器周期的S5P2期間,會自動查詢各個中斷申請標(biāo)志位,若查到某標(biāo)志位被置位,將啟動中斷機制。,CPU識別中斷申請的依據(jù):, INT0:外部中斷0,中斷請求信號由P3.2輸入。 INT1:外部中斷1,中斷請求信號由P3.3輸入。 T0:定時/計數(shù)器0溢出中斷,對外部脈沖計數(shù)由P3.4輸入。 T1:定時/計數(shù)器1溢出中斷,對外部脈沖計數(shù)由P3.5輸入。 串行中斷:包括串行接收中斷RI和串行發(fā)送中斷TI。,5.1.2 中斷源和中斷控制寄存器, 中斷源,中斷源是指能發(fā)出中斷請求,引起中斷的裝置或事件。 80C51單片機的中斷源共有5個,

3、其中2個為外部中斷源,3個為內(nèi)部中斷源:, 中斷請求:定時和外中斷控制寄存器TCON; 串行控制寄存器SCON; 中斷允許控制寄存器IE; 中斷優(yōu)先級控制寄存器IP。, 中斷控制寄存器,80C51單片機中涉及中斷控制的有3個方面4個特殊功能寄存器:,INT0、INT1、T0、T1中斷請求標(biāo)志放在TCON中 串行中斷請求標(biāo)志放在SCON中。, 中斷請求控制寄存器,TCON的結(jié)構(gòu)、位名稱、位地址和功能如下:,TCON位功能: TF1 T1溢出中斷請求標(biāo)志 T1計數(shù)溢出后,TF1=1 TF0 T0溢出中斷請求標(biāo)志 T0計數(shù)溢出后,TF0=1 TF0/TF1:定時器溢出中斷申請標(biāo)志位: =0:定時器未

4、溢出; =1:定時器溢出申請中斷,進中斷后自動清零。 IE1 外中斷中斷請求標(biāo)志 當(dāng)P3.3引腳信號有效時,IE1=1 IE0 外中斷中斷請求標(biāo)志 當(dāng)P3.2引腳信號有效時,IE0=1 IE0/IE1:外部中斷申請標(biāo)志位: =0:沒有外部中斷申請; =1:有外部中斷申請。, IT1 外中斷觸發(fā)方式控制位 IT1=1,邊沿觸發(fā)方式; IT1=0,電平觸發(fā)方式。 IT0 外中斷觸發(fā)方式控制位 其意義和功能與IT1相似。,IT0/IT1:外部中斷請求的觸發(fā)方式選擇位: =0:在INT0/INT1端申請中斷的信號低電平有效; =1:在INT0/INT1端申請中斷的信號負跳變有效.,串行控制寄存器SCO

5、N, TI 串行口發(fā)送中斷請求標(biāo)志 RI 串行口接收中斷請求標(biāo)志,80C51對中斷源的開放或關(guān)閉由中斷允許控制寄存器IE控制。, 中斷允許控制寄存器IE,IE的結(jié)構(gòu)、位名稱和位地址如下:, EA CPU中斷允許控制位(總開關(guān)) EA=1,CPU開中; EA=0,CPU關(guān)中,且屏蔽所有5個中斷源。 EX0 外中斷INT0中斷允許控制位 EX0=1,INT0開中;EX0=0,INT0關(guān)中。 EX1 外中斷INT1中斷允許控制位 EX1=1,INT1開中;EX1=0,INT1關(guān)中。 ET0 定時/計數(shù)器T0中斷允許控制位 ET0=1,T0開中;ET0=0,T0關(guān)中。 ET1 定時/計數(shù)器T1中斷允許

6、控制位 ET1=1,T1開中;ET1=0,T1關(guān)中。 ES 串行口中斷(包括串發(fā)、串收)允許控制位 ES=1,串行口開中;ES=0,串行口關(guān)中。,說明: 80C51對中斷實行兩級控制,總控制位是EA,每一中斷源還有各自的控制位。首先要EA=1,其次還要自身的控制位置“1”。,例如:要使INT0開中(其余關(guān)中),可執(zhí)行下列指令: MOV IE,#1000000lB ; 或者: SETB EA ; SETB EX0 ;,中斷允許控制寄存器IE, PX0 :INT0中斷優(yōu)先級控制位。PX0=1,為高優(yōu)先級; PX0=0,為低優(yōu)先級; PX1 :INT1中斷優(yōu)先級控制位??刂品椒ㄍ?。 PT0 :T0

7、中斷優(yōu)先級控制位??刂品椒ㄍ稀?PT1 :T1中斷優(yōu)先級控制位。控制方法同上。 PS :串行口中斷優(yōu)先級控制位??刂品椒ㄍ?。, 中斷優(yōu)先級控制寄存器IP 80C51有5個中斷源,劃分為2個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。 IP的結(jié)構(gòu)、位名稱和位地址如下:,例如:若要將INT1、串行口設(shè)置為高優(yōu)先級,其余中斷源設(shè)置為低優(yōu)先級,可執(zhí)行下列指令: MOV IP,#00010100B; 需要指出的是,若置5個中斷源全部為高優(yōu)先級,就等于不分優(yōu)先級。,中斷優(yōu)先級控制寄存器IP,5.1.3 中斷處理過程,中斷處理過程大致可分為四步: 中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回 中斷請求 中斷源發(fā)出中斷請求

8、信號,相應(yīng)的中斷請求標(biāo)志位(在中斷允許控制寄存器IE中)置“1”。 中斷響應(yīng) CPU查詢(檢測)到某中斷標(biāo)志為“1”,在滿足中斷響應(yīng)條件下,響應(yīng)中斷。 中斷響應(yīng)條件: 該中斷已經(jīng)“開中”; CPU此時沒有響應(yīng)同級或更高級的中斷; 當(dāng)前正處于所執(zhí)行指令的最后一個機器周期; 正在執(zhí)行的指令不是RETI或者是訪向IE、IP的指令,否則必須再另外執(zhí)行一條指令后才能響應(yīng)。, 中斷響應(yīng)操作 CPU響應(yīng)中斷后,進行下列操作: 保護斷點地址; 撤除該中斷源的中斷請求標(biāo)志; 關(guān)閉同級中斷; 將相應(yīng)中斷的入口地址送入PC; 80C51五個中斷入口地址: INT0:0003H; T0:000BH; INT1:001

9、3H; T1:001BH; 串行口:0023H, 執(zhí)行中斷服務(wù)程序 中斷服務(wù)程序應(yīng)包含以下幾部分: 保護現(xiàn)場 執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作 恢復(fù)現(xiàn)場 中斷返回 在中斷服務(wù)程序最后,必須安排一條中斷返回指令RETI,當(dāng)CPU執(zhí)行RETI指令后,自動完成下列操作: 恢復(fù)斷點地址。 開放同級中斷,以便允許同級中斷源請求中斷。,5.1.4 中斷響應(yīng)等待時間 若排除CPU正在響應(yīng)同級或更高級的中斷情況,中斷響應(yīng)等待時間為: 38個機器周期 5.1.5 中斷請求的撤除 中斷源發(fā)出中斷請求,相應(yīng)中斷請求標(biāo)志置“1”。 CPU響應(yīng)中斷后,必須清除中斷請求“1”標(biāo)志。否則中斷響應(yīng)返回后,將再次進入該中斷,

10、引起死循環(huán)出錯。 對定時/計數(shù)器T0、T1中斷,外中斷邊沿觸發(fā)方式,CPU響應(yīng)中斷時就用硬件自動清除了相應(yīng)的中斷請求標(biāo)志。 對外中斷電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后果。 對串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除TI或RI。,例:,硬件電路如圖所示。當(dāng)外部設(shè)備有中斷請求時,中斷請求信號經(jīng)反相,加到鎖存器CP端,作為CP脈沖。由于D端接地為0,Q端輸出低點平,觸發(fā) INT0生中斷。當(dāng)CPU響應(yīng)中斷后,應(yīng)在該中斷服務(wù)程序中按排兩條指令: CLR P10: SETB P10 從而撤消引起重復(fù)中斷的INT0低電平信號。 因此一般來說,對外中斷INT0、INTl,應(yīng)盡量采用邊沿觸發(fā)方式

11、,以簡化硬件電路和軟件程序。,5.1.6 中斷優(yōu)先控制和中斷嵌套 中斷優(yōu)先控制 80C51中斷優(yōu)先控制首先根據(jù)中斷優(yōu)先級,此外還規(guī)定了同一中斷優(yōu)先級之間的中斷優(yōu)先權(quán)。其從高到低的順序為: INT0、 T0、 INT1、T1、串行口。 中斷優(yōu)先級是可編程的,而中斷優(yōu)先權(quán)是固定的,不能設(shè)置,僅用于同級中斷源同時請求中斷時的優(yōu)先次序。 80C51中斷優(yōu)先控制的基本原則: 高優(yōu)先級中斷可以中斷正在響應(yīng)的低優(yōu)先級中斷,反之則不能。 同優(yōu)先級中斷不能互相中斷。 同一中斷優(yōu)先級中,若有多個中斷源同時請求中斷,CPU將先響應(yīng)優(yōu)先權(quán)高的中斷,后響應(yīng)優(yōu)先權(quán)低的中斷。, 中斷嵌套,當(dāng)CPU正在執(zhí)行某個中斷服務(wù)程序時

12、,如果發(fā)生更高一級的中斷源請求中斷,CPU可以“中斷”正在執(zhí)行的低優(yōu)先級中斷,轉(zhuǎn)而響應(yīng)更高一級的中斷,這就是中斷嵌套。 中斷嵌套只能高優(yōu)先級“中斷”低優(yōu)先級,低優(yōu)先級不能“中斷”高優(yōu)先級,同一優(yōu)先級也不能相互“中斷”。,中斷嵌套結(jié)構(gòu)類似與調(diào)用子程序嵌套,不同的是: 子程序嵌套是在程序中事先按排好的;中斷嵌套是隨機發(fā)生的。 子程序嵌套無次序限制,中斷嵌套只允許高優(yōu)先級“中斷”低優(yōu)先級。,5.1.7 中斷系統(tǒng)的應(yīng)用 中斷初始化 設(shè)置堆棧指針SP 定義中斷優(yōu)先級 定義外中斷觸發(fā)方式 開放中斷 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。 中斷服務(wù)主程序 中斷服務(wù)子程序內(nèi)容要求: 在中斷服務(wù)入口

13、地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實際入口處。 根據(jù)需要保護現(xiàn)場。 中斷源請求中斷服務(wù)要求的操作。 恢復(fù)現(xiàn)場。與保護現(xiàn)場相對應(yīng),注意先進后出、后進先出操作原則。 中斷返回,最后一條指令必須是RETI。, 中斷初始化, 設(shè)置堆棧指針SP 因中斷涉及保護斷點PC地址和保護現(xiàn)場數(shù)據(jù),且均要用堆棧實現(xiàn)保護,因此要設(shè)置適宜的堆棧深度。 深度要求不高且工作寄存器組13不用時,可維持復(fù)位時狀態(tài):SP=07H,深度為24B(20H2FH為位尋址區(qū))。 要求有一定深度時,可設(shè)置SP=60H或50H,深度分別為32B和48B。 定義中斷優(yōu)先級 根據(jù)中斷源的輕重緩急,劃分高優(yōu)先級和低優(yōu)先級。用MOV IP,

14、#XXH或SETB XX指令設(shè)置。, 定義外中斷觸發(fā)方式 一般情況,定義邊沿觸發(fā)方式為宜。若外中斷信號無法適用邊沿觸發(fā)方式,必須采用電平觸發(fā)方式時,應(yīng)在硬件電路上和中斷服務(wù)程序中采取撤除中斷請求信號的措施。 開放中斷 注意開放中斷必須同時開放二級控制,即同時置位EA和需要開放中斷的中斷允許控制位。可用MOV IE,#XXH指令設(shè)置,也可用SETB EA和SETB XX位操作指令設(shè)置。 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。, 中斷服務(wù)主程序 中斷服務(wù)子程序內(nèi)容要求: 在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實際入口處。 由于80C51相鄰兩個中斷入口地址間只有8B的

15、空間,8B只能容納一個有38條指令的極短程序,一般情況中斷服務(wù)程序均大大超出8B長度。因此,必須跳轉(zhuǎn)到其他合適的地址空間。跳轉(zhuǎn)指令可用SJMP、AJMP或LJMP指令,SJMP、AJMP均受跳轉(zhuǎn)范圍影響,建議用LJMP指令,則可將真正的中斷服務(wù)程序不受限制地安排在64KB任何地方。, 根據(jù)需要保護現(xiàn)場。 保護現(xiàn)場不是中斷服務(wù)程序的必需部分。通常是保護Acc、PSW和DPTR等特殊功能寄存器中的內(nèi)容。若中斷服務(wù)程序中不涉及Acc、PSW,DPTR,則不需保護,也不需恢復(fù)。例如:累加器A是最常用的特殊功能寄存器,主程序中不可能不用到A。而發(fā)生中斷又是隨機的,可能正好發(fā)生在對A進行操作、A中的數(shù)據(jù)還

16、有用時進入中斷,而在中斷服務(wù)程序中又涉及到A,改變了A中的內(nèi)容,則在進入中斷服務(wù)程序?qū)操作前應(yīng)對原A中數(shù)據(jù)進行保護,以便中斷返回后恢復(fù)A中原來數(shù)據(jù) 需要指出的是,保護現(xiàn)場數(shù)據(jù)越少越好,數(shù)據(jù)保護越多,堆棧負擔(dān)越重,堆棧深度設(shè)置應(yīng)越深。, 中斷源請求中斷服務(wù)要求的操作。 若是外中斷電平觸發(fā)方式,應(yīng)有中斷信號撤除操作。若是串行收發(fā)中斷,應(yīng)有對RI、TI清0指令。 恢復(fù)現(xiàn)場。與保護現(xiàn)場相對應(yīng),注意先進后出、后進先出操作原則。 (6)中斷返回,最后一條指令必須是RETI。,【例5-1】 出租車計價器計程方法是車輪每運轉(zhuǎn)一圈產(chǎn)生一個負脈沖,從外中斷INT0(P3.2)引腳輸入,行駛里程為輪胎周長運轉(zhuǎn)圈數(shù)

17、,設(shè)輪胎周長為2m,試實時計算出租車行駛里程(單位米),數(shù)據(jù)存32H、31H、30H。, 中斷系統(tǒng)應(yīng)用舉例,解:編程如下: ORG 0000H;復(fù)位地址 LJMP STAT;轉(zhuǎn)初始化 ORG 0003H;中斷入口地址 LJMP INT;轉(zhuǎn)中斷服務(wù)程序,ORG 0100H;初始化程序首地址 STAT: MOV SP,#60H;置堆棧指針 SETB IT0;置邊沿觸發(fā)方式 MOV IP,#01H;置高優(yōu)先級 MOV IE,#81H;開中 MOV 30H,#0;里程計數(shù)器清0 MOV 31H,#0; MOV 32H,#0; LJMP MAIN;轉(zhuǎn)主程序,并等待中斷 ORG 0200H;中斷服務(wù)子程序

18、首地址 INT: PUSH Acc;保護現(xiàn)場 PUSH PSW; MOV A,30H;讀低8位計數(shù)器 ADD A,#2;低8位計數(shù)器加2m MOV 30H,A;回存 CLR A; ADDC A,31H;中8位計數(shù)器加進位 MOV 31H,A;回存 CLR A; ADDC A,32H;高8位計數(shù)器加進位 MOV 32H,A;回存 PUSH PSW;恢復(fù)現(xiàn)場 PUSH Acc ; RETI;中斷返回,MAIN主程序可以處理循環(huán)顯示等任務(wù)。,【例5-3】現(xiàn)有5個外中斷源EX1、EX20、EX21、EX22和EX23,高電平時表示請求中斷,要求執(zhí)行相應(yīng)中斷服務(wù)程序,試編制程序。,解: ORG0000H

19、;復(fù)位地址 LJMPMAIN;轉(zhuǎn)主程序 ORG0003H;中斷入口地址 LJMPPINT0;轉(zhuǎn)中斷服務(wù)程序 ORG0013H;中斷入口地址 LJMPPINT1;轉(zhuǎn)中斷服務(wù)程序,ORG0100H ;主程序首地址 MAIN: MOVSP,#60H;置堆棧指針 ORLTCON,#05H;置INT0、INT1為邊沿觸發(fā)方式 SETBPX0 ;置為高優(yōu)先級 MOVIE,#0FFH;全部開中 ;主程序內(nèi)容 ORG 1000H;中斷服務(wù)程序首地址 PINT0: PUSHAcc;中斷,保護現(xiàn)場 LCALL WORK1;調(diào)用EX1服務(wù)子程序 POPAcc;恢復(fù)現(xiàn)場 RETI;中斷返回 ORG 2000H ;中斷

20、服務(wù)程序首地址 PINT1: CLR EA ;CPU禁中 PUSH Acc ;中斷保護現(xiàn)場 PUSH DPH ; PUSH DPL ; SETB EA ;CPU開中,JB P1.0,LWK20;P1.0=1,EX20請求中斷 JB P1.1,LWK21;P1.1=1,EX21請求中斷 JB P1.2,LWK22;P1.2=1,EX22請求中斷 LCALL WORK23 ;P1.3=1,調(diào)用EX23服務(wù)子 LRET: CLR EA;CPU禁中 POP DPL;恢復(fù)現(xiàn)場 POP DPH; POP Acc; SETB EA;CPU開中 RETI;中斷返回 LWK20: LCALL WORK20;P1

21、.0 = 1,調(diào)用EX20服務(wù)子程序 SJMP LRET ;轉(zhuǎn)中斷返回 LWK21: LCALL WORK21 ;P1.1 = 1,調(diào)用EX21服務(wù)子程序 SJMP LRET;轉(zhuǎn)中斷返回 LWK22: LCALL WORK22 ;P1.2 = 1,調(diào)用EX22服務(wù)子程序 SJMP LRET;轉(zhuǎn)中斷返回,【例】,通過外部中斷1,在中斷服務(wù)中將B寄存器里的內(nèi)容左環(huán)移一位。已知: (B)=01h,要求采用邊沿觸發(fā),低優(yōu)先級。,此例的實際意義:在INT1引腳接一個按鈕開關(guān)到地,每按一下按鈕就申請一次中斷,中斷服務(wù)則是:依次點亮八盞燈中的一盞。,ORG 0000H LJMP MAIN ORG 0013H

22、 ;中斷矢量 LJMP INT MAIN:SETB EA ;開總中斷允許“開關(guān)” SETB EX1 ;開分中斷允許“開關(guān)” CLR PX1 ;0 優(yōu)先級(也可不要此句) SETB IT1 ;邊沿觸發(fā) MOV B,#01H ;給 B 寄存器賦初值 HERE:SJMP HERE ;原地等待中斷申請,INT:MOV A,B ;自B寄存器中取數(shù) RL A ;左環(huán)移一次 MOV B,A ;存回B,備下次取用 MOV P1,A ;輸出到P1口 RETI ;中斷返回,中斷服 務(wù)程序,定時/計數(shù)器是單片機系統(tǒng)一個重要的部件,其工作方式靈活、編程簡單、使用方便,可用來實現(xiàn)定時控制、延時、頻率測量、脈寬測量、信號

23、發(fā)生、信號檢測等。此外,定時/計數(shù)器還可作為串行通信中波特率發(fā)生器。,5-2 80C51定時/計數(shù)器,1定時/計數(shù)器的結(jié)構(gòu),一. 定時/計數(shù)器概述,定時器:對片內(nèi)機器時鐘(周期方波)進行計數(shù) 計數(shù)器:對Tx引腳輸入的負脈沖進行計數(shù),80C51單片機內(nèi)部有兩個定時/計數(shù)器T0和T1,其核心是計數(shù)器,基本功能是加1。 對外部事件脈沖(下降沿)計數(shù),是計數(shù)器;對片內(nèi)機周脈沖計數(shù),是定時器。 計數(shù)器由二個8位計數(shù)器組成。 定時時間和計數(shù)值可以編程設(shè)定,其方法是在計數(shù)器內(nèi)設(shè)置一個初值,然后加1計滿后溢出。調(diào)整計數(shù)器初值,可調(diào)整從初值到計滿溢出的數(shù)值,即調(diào)整了定時時間和計數(shù)值。 定時/計數(shù)器作為計數(shù)器時,

24、外部事件脈沖必須從規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超過時鐘頻率的1/24。,5.2.1 定時/計數(shù)器概述,TCON低4位與外中斷 、 有關(guān),已在中斷中敘述。 高4位與定時/計數(shù)器T0、T1有關(guān)。 TF1:定時/計數(shù)器T1溢出標(biāo)志。 TF0:定時/計數(shù)器T0溢出標(biāo)志。 TR1:定時/計數(shù)器T1運行控制位。TR1=1,T1運行;TR1=0,T1停。 TR0:定時/計數(shù)器T0運行控制位。TR0=1,T0運行;TR0=0,T0停。 TCON的字節(jié)地址為88H,每一位有位地址,均可位操作。, 定時/計數(shù)器控制寄存器TCON,5.2.2 定時/計數(shù)器的控制寄存器,TMOD用于設(shè)定定時/計數(shù)器的工作

25、方式 低4位用于控制T0,高4位用于控制T1。, 定時/計數(shù)器工作方式控制寄存器TMOD, M1M0 工作方式選擇位, C/T 計數(shù)/定時方式選擇位 C/T=1,計數(shù)工作方式,對外部事件脈沖計數(shù),用作計數(shù)器。 C/T=0,定時工作方式,對片內(nèi)機周脈沖計數(shù),用作定時器。 GATE 門控位 GATE=0,運行只受TCON中運行控制位TR0/TR1的控制。 GATE=1,運行同時受TR0/TR1和外中斷輸入信號的雙重控制。 只有當(dāng)INT0/INT1=1且TR0/TR1=1,T0/T1才能運行。 TMOD字節(jié)地址89H,不能位操作,設(shè)置TMOD須用字節(jié)操作指令。,5.2.3 定時/計數(shù)器工作方式 工作

26、方式0 13位計數(shù)器,由TL0低5位和TH0 8位組成,TL0低5位計數(shù)滿時不向TL0第6位進位,而是向TH0進位,13位計滿溢出,TF0置“1”。最大計數(shù)值213 = 8192。 工作方式1 16位計數(shù)器,最大計數(shù)值為216 = 65536。當(dāng)fosc=12MHZ,最大定時65536 S,而用方式0最大定時時間為8192 S. 工作方式2 8位計數(shù)器,僅用TL0計數(shù),最大計數(shù)值為28= 256,計滿溢出后,一方面進位TF0,使溢出標(biāo)志TF0 = 1;另一方面,使原來裝在TH0中的初值裝入TL0。 優(yōu)點:定時初值可自動恢復(fù),TH0中存放初值;缺點:計數(shù)范圍小。 適用于需要重復(fù)定時,而定時范圍不

27、大的應(yīng)用場合。, 工作方式3 方式3僅適用于T0,T1無方式3。 T0方式3 在方式3情況下,T0被拆成二個獨立的8位計數(shù)器TH0、TL0。 TL0可以為定時/計數(shù)器; TH0只能作為8位定時器。 TL0使用T0原有的控制寄存器資源:TF0,TR0,GATE,C/T,INT0,組成一個8位的定時/計數(shù)器; TH0借用T1的中斷溢出標(biāo)志TF1,運行控制開關(guān)TR1,只能對片內(nèi)機周脈沖計數(shù),組成另一個8位定時器(不能用作計數(shù)器)。 T0方式3情況下的T1 T1由于其TF1、TR1被T0的TH0占用,計數(shù)器溢出時,只能將輸出信號送至串行口,即用作串行口波特率發(fā)生器。,其中: N與工作方式有關(guān): 方式0

28、時,N=13; 方式1時,N=16; 方式2、3時,N=8。 機周時間與主振頻率有關(guān):機周時間=12/fosc fosc=12MHZ時,1機周=1S; fosc=6MHZ 時,1機周=2S。,5.2.4 定時/計數(shù)器的應(yīng)用, 計算定時/計數(shù)初值,80C51定時/計數(shù)初值計算公式:,解:工作方式0: 213500S/2S=8192-250=7942=1F06H 1F06H化成二進制: 1F06H=0001 1111 0000 0110B =000 11111000 00110 B 其中:低5位00110前添加3位000送入TL0 TL0=000 00110B=06H; 高8位11111000B送

29、入TH0 TH0=11111000B=F8H。,【例5-4】 已知晶振6MHz,要求定時0.5ms,試分別求出T0工作于方式0、方式1、方式2、方式3時的定時初值。, 工作方式1: T0初值 =216-500s/2s=65536250=65286=FF06H TH0=FFH;TL0=06H。, 工作方式2: T0初值 =28-500s/2s=256-250=6 TH0=06H;TL0=06H。, 工作方式3: T0方式3時,被拆成兩個8位定時器,定時初值可分別計算,計算方法同方式2。兩個定時初值一個裝入TL0,另一個裝入TH0。因此: TH0=06H;TL0=06H。,從上例中看到,方式0時計

30、算定時初值比較麻煩,根據(jù)公式計算出數(shù)值后,還要變換一下,容易出錯,不如直接用方式1,且方式0計數(shù)范圍比方式1小,方式0完全可以用方式1代替,方式0與方式1相比,無任何優(yōu)點。, 定時/計數(shù)器應(yīng)用步驟, 合理選擇定時/計數(shù)器工作方式 計算定時/計數(shù)器定時初值(按上述公式計算) 編制應(yīng)用程序 定時/計數(shù)器的初始化 包括定義TMOD、寫入定時初值、設(shè)置中斷系統(tǒng)、啟動定時/計數(shù)器運行等。 正確編制定時/計數(shù)器中斷服務(wù)程序 注意是否需要重裝定時初值,若需要連續(xù)反復(fù)使用原定時時間,且未工作在方式2,則應(yīng)在中斷服務(wù)程序中重裝定時初值。,【例5-5】試用T1方式2編制程序,在P1.0引腳輸出周期為400S的脈沖

31、方波,已知fosc=12MHZ。,解: 計算定時初值 T1初值=28-200s/1s=256200=56=38H TH1=38H;TL1=38H, 設(shè)置TMOD: 0 0 10 0000 B=20H T0控制位,與T1無關(guān) T1方式2 T1定時器 T1啟動與 無關(guān), 編制程序如下: ORG0000H ;復(fù)位地址 LJMPMAIN ;轉(zhuǎn)主程序 ORG001BH ;T1中斷入口地址 LJMPIT1 ;轉(zhuǎn)T1中斷服務(wù)程序 ORG0100H ;主程序首地址 MAIN: MOVTMOD,#20H ;置T1定時器方式2 MOVTL1,#38H ;置定時初值 MOVTH1,#38H ;置定時初值備份 MOV

32、IP,#00001000B;置T1高優(yōu)先級 MOVIE,#0FFH ;全部開中 SETBTR1 ;T1運行 SJMP$ ;等待T1中斷 ORG 0200H ;T1中斷服務(wù)程序首地址 IT1: CPL P1.0 ;輸出波形取反首地址 RETI ;中斷返回,【課堂練習(xí)題】 參照以上例題工作方式2,按下列要求分別修改程序: 脈沖方波從P3.0輸出; fosc=6MHz; 脈沖方波脈寬為100s; 用定時/計數(shù)器T0;,【例5-6】已知晶振12MHZ,參閱圖5-15,要求利用定時器T0使圖中發(fā)光二極管D進行秒閃爍。,解:發(fā)光二極管進行秒閃爍。即一秒鐘一亮一暗,亮500ms,暗500 ms。晶振12MH

33、z,每機周1s,T0方式1最大定時只能65ms余。 取T0定時50ms,計數(shù)10次,即可實現(xiàn)500ms定時。, 計算定時初值 T0初值 =216-50000s/1s =6553650000=15536=3CB0H TH0=3CH;TL0=B0H。, 設(shè)置TMOD: 0000 0 0 01 B = 01H T0方式1 T0 與 無關(guān) T1控制位, 編制程序如下: ORG 0000H ;復(fù)位地址 LJMP MAIN ;轉(zhuǎn)主程序 ORG 000BH ;T0中斷入口地址 LJMP IT0 ;轉(zhuǎn)T0中斷服務(wù)程序 ORG 0100H ;主程序首地址 MAIN:MOV TMOD,#01H ;置T0定時器方式

34、1 MOV TH0,#3CH ;置T0初值50ms MOV TL0,#0B0H ; MOV IE,#10000010B;T0開中 MOV R7,#0AH ;置50ms計數(shù)器初值 SETB TR0 ;T0運行 SJMP $ ;等待中斷,ORG 0200H ITO:MOV TH0,#3CH ;重置T0初值50ms MOV TLO,#0BOH DJNZ R7,GORET ;判500ms到否? CPL P1.7 ;500ms到,輸出取反 MOV R7,#0AH ;恢復(fù)50ms計數(shù)器初值GORET:RETI,【例5.7】 已知fosc=6MHz,檢測T0引腳上的脈沖數(shù),并將1s內(nèi)的脈沖數(shù)顯示在顯示屏上,

35、每隔1s刷新一次顯示值(設(shè)一秒內(nèi)脈沖數(shù)65535個)。 根據(jù)題目要求,T0用作計數(shù)器方式1,T1用作定時器方式1,定時100ms。,3)編制程序如下: ORG 0000H LJMP MAIN ;轉(zhuǎn)主程序 0RG 000BH LJMP IT0 ;轉(zhuǎn)T0中斷服務(wù)程序 ORG 001BH LJMP ITl ;轉(zhuǎn)T1中斷服務(wù)程序 ORG 0100H MAIN:MOV SP,#60H ;置堆棧 MOV TMOD,#15H ;置T0計數(shù)器方式1,T1定時器方式1 MOV TH0,#00H ;置T0初值 MOV TL0,#00H ; MOV TH1,#3CH ;置T1初值 MOV TL1,#0BOH ; S

36、ETB PT1 ;置T1為高優(yōu)先級 MOV IE,#10001101B ;TO、串口不開中,其余開中 SETB TR0 ;TO啟動 SETB TRl ;T1啟動 MOV R7,#OAH ;置lOOms計數(shù)器初值 LDIR:LCALL DIR ;調(diào)用顯示子程序,并等待中斷 SJMP LDIR ;循環(huán)顯示,T0中斷服務(wù)程序沒有編寫.,ORG 0200H ;T1中斷服務(wù)程序首地址 ITl: MOV THl,#3CH ;重置T1初值 MOV TL1,#0BOH ; DJNZ R7,GORET ;判1s到否? 1s未到轉(zhuǎn)返回 CLR TR0 ;1s到,T0停 MOV 30H,TL0 ;記錄ls內(nèi)T0引腳

37、脈沖個數(shù) MOV 31H,THO ; MOV TLO,#00H ;脈沖計數(shù)器T0清0 MOV TH0,#00H ; SETB TR0 ;TO重新運行 MOV R7,#0AH ;恢復(fù)lOOms計數(shù)器初值 PUSH Acc ;保護現(xiàn)場 PUSH PSW ; PUSH DPH ; PUSH DPL ; LCALL WORK ;調(diào)用數(shù)據(jù)處理子程序 POP DPL ;恢復(fù)現(xiàn)場 POP DPH ; POP PSW ; POP Acc ; GORET:RETI ;T1中斷返回,【例5-9】已知fosc=6MHz,試編寫24小時模擬電子鐘程序,秒分時數(shù)分別存在R1、R2、R3中,可直接調(diào)用顯示程序DIR。 解: ORG 0000H ;復(fù)位地址 LJMP IT0 ;轉(zhuǎn)主程序 ORG 000BH ;T0中斷入口地址 LJMP IT0 ;T0中斷,轉(zhuǎn)T0中斷服務(wù)子程序IT0 ORG 1000H ;主程序首地址 START:MOV R1,#0 ;秒計數(shù)器清0 MOV R2,#0 ;分計數(shù)器清0 MOV R3,#0 ;時計數(shù)器清0 MOV R4,#0 ;500S計數(shù)器清0 MOV R5,#0 ;100ms計數(shù)器清0 M

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論