

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第4章 中斷控制、定時/計數(shù)器與串行口,4.1 CPU與外設通信方式概述4.2 增強型MCS-51中斷控制系統(tǒng)4.3 增強型MCS-51定時/計數(shù)器4.4 串行通信系統(tǒng) 4.5 增強型MCS-51芯片識別和仿真,4.1 CPU與外設通信方式概述,4.1.1 查詢方式 查詢方式包括查詢輸出方式和查詢輸入方式。所謂查詢輸入方式,是指CPU讀外設數(shù)據(jù)前,先查詢外設是否處于準備就緒狀態(tài)(即外設是否已將
2、數(shù)據(jù)輸出到CPU的數(shù)據(jù)總線上);查詢輸出方式是指CPU向外設輸出數(shù)據(jù)前,先查詢外設是否處于空閑狀態(tài)(即外設是否可以接收CPU輸出的數(shù)據(jù))。,4.1.2 中斷通信方式 采用中斷傳輸方式即可克服查詢傳輸方式存在的缺陷:當CPU需要向外設輸出數(shù)據(jù)時,將啟動命令寫入外設控制口后,就繼續(xù)執(zhí)行隨后的指令,而不是被動等待;當外設處于空閑狀態(tài),可以接收數(shù)據(jù)時,由外設向CPU發(fā)出允許數(shù)據(jù)傳送的請求信號——即中斷請求信號,如果滿足中斷響應
3、條件,CPU將暫停執(zhí)行隨后的程序,轉(zhuǎn)去執(zhí)行預先安排好的數(shù)據(jù)傳送子程序——也稱為中斷服務程序,CPU響應外設中斷請求信號的過程簡稱為中斷響應;在完成了數(shù)據(jù)傳送后,再返回斷點處繼續(xù)執(zhí)行被中斷的程序。可見,在這種方式中,CPU發(fā)出控制命令后,依然執(zhí)行啟動命令后的指令序列,而不是通過檢測外設的狀態(tài)來確定外設是否處于空閑狀態(tài),不僅CPU利用率高,而且能同時與多個外設進行數(shù)據(jù)交換——只要適當安排多個中斷優(yōu)先級以及同優(yōu)先級中斷的查詢順序即可。因此,中
4、斷傳輸方式是CPU與外設之間最常見的一種數(shù)據(jù)傳輸方式。,1.中斷源 在計算機控制系統(tǒng)中,把引起中斷的事件稱為中斷源。在單片機控制系統(tǒng)中,常見的中斷源有:· 外部中斷,如CPU某些特定引腳電平變化引起的中斷。· 各類定時/計數(shù)器溢出中斷(即定時時間到或計數(shù)器滿請求中斷)。· 串行發(fā)送結(jié)束請求中斷。· 串行接收有效請求中斷。· 電源掉電中斷。,2. 中斷優(yōu)先級
5、 既然中斷是計算機系統(tǒng)中CPU與外設進行數(shù)據(jù)交換的主要方式,那么多個外設以中斷方式與CPU進行數(shù)據(jù)交換時,可能遇到兩個或兩個以上外設中斷請求同時有效的情形。在這種情況下,CPU先響應哪一外設的中斷請求?這就涉及到中斷優(yōu)先級問題。一般說來,為了能夠處理多個中斷請求,中斷控制系統(tǒng)均提供中斷優(yōu)先級控制。有了中斷優(yōu)先級控制后,就可以解決多個中斷請求同時有效時先響應哪一中斷問題。,3. 中斷開關 有時為避免某一處理過程被
6、中斷,中斷控制器給每一個中斷源都設置了一個中斷請求屏蔽位,用于禁止或允許相應中斷源的中斷請求傳送到CPU,相當于中斷源的中斷開關。此外,還設一個總的中斷請求屏蔽位,當該位處于禁止狀態(tài)時,所有中斷源的中斷請求均不能傳送到CPU,相當于中斷總開關。,4. 中斷處理過程,,4.2 增強型MCS-51中斷控制系統(tǒng),圖4-1 增強型MCS-51中斷系統(tǒng)結(jié)構,4.2.1 中斷源及標志,圖4-2 與中斷功能有關的TCON寄存器位,4.2.2
7、 中斷控制 1. 中斷允許控制寄存器IE,圖4-3 中斷控制寄存器IE各位含義,由于IE寄存器具有按位尋址功能,因此可通過位操作指令,允許或禁止其中的任一中斷,如:,SETB EA; 開中斷 SETB EX0 ; 允許 中斷 CLR ES ; 禁止串行口中斷 例如當TCON的IT0位為0時,只要在S5P2相采
8、樣到P3.2引腳為低電平,則 中斷請求標志IE0就為1。但當EX0或EA之一為0時,CPU將不檢查IE0的中斷請求標志(即該中斷請求被CPU忽略)。,2. 中斷優(yōu)先級控制寄存器IP 標準MCS-51內(nèi)核CPU只有兩個中斷優(yōu)先級,各中斷源優(yōu)先級由IP寄存器控制(0為低優(yōu)先級;1為高優(yōu)先級),中斷優(yōu)先級控制寄存器IP各位含義如圖4-4(a)所示。 增強型MCS-51內(nèi)核CPU具有四個中斷優(yōu)先級,除了標準M
9、CS-51 CPU的中斷優(yōu)先級控制寄存器IP外,還增加了一個中斷優(yōu)先級控制寄存器IPH(字節(jié)地址為0B7H,但IPH沒有位地址功能),IPH寄存器各位含義如圖4-4(b)所示,于是中斷源的中斷優(yōu)先級由IPH、IP對應位編碼決定,具體情況如下:,IPH.X位 IP.X位優(yōu)先級00 0級(優(yōu)先級最低)01 1級10 2級11 3級(優(yōu)先級最高),圖4-4 中斷優(yōu)先級
10、控制(a) 中斷優(yōu)先級控制寄存器IP各位含義 (b) 中斷優(yōu)先級控制高位寄存器IPH各位含義,圖4-4 中斷優(yōu)先級控制(a) 中斷優(yōu)先級控制寄存器IP各位含義 (b) 中斷優(yōu)先級控制高位寄存器IPH各位含義,PX0H、PX0——外中斷 優(yōu)先級高、低位。PX1H、PX1——外中斷 優(yōu)先級高、低位。PT0H、PT0——定時/計數(shù)器T0優(yōu)先級高、低位。PT1H、PT1——定時/計數(shù)器
11、T1優(yōu)先級高、低位。PSH、PS——串行口中斷優(yōu)先級高、低位。PT2H、PT2——定時/計數(shù)器T2優(yōu)先級高、低位。 可見,當IPH為XX000000B時,中斷優(yōu)先級僅由IP寄存器決定,即與標準MCS-51內(nèi)核CPU中斷優(yōu)先級兼容。,3. 硬件查詢順序 改變IPH、IP寄存器的值,即可使相應中斷源優(yōu)先權升高或降低。但增強型MCS-51具有6個中斷源,而只有四個中斷優(yōu)先級,這就必然存在兩個或兩個以上中斷源優(yōu)先級相
12、同。例如當IPH為00010001B,而IP為00001001B時,外中斷優(yōu)先級為3(最高),串行口中斷優(yōu)先級為2,定時/計數(shù)器T1中斷優(yōu)先級為1,而其他3個中斷源優(yōu)先級均為0(最低)。復位后,IPH、IP初值為00000000,即所有中斷優(yōu)先級均為0。,為此,MCS-51約定當同一優(yōu)先級中斷請求有效時,CPU響應順序為:外中斷定時/計數(shù)器T0溢出中斷外中斷定時/計數(shù)器T1溢出中斷串行口中斷 定時/計數(shù)器T2溢出
13、中斷,4.2.3 中斷響應過程及中斷服務程序入口地址,圖4-5 中斷響應時序,1. 中斷響應條件 MCS-51中斷響應條件為: (1) 當前不處于同級或更高級中斷響應中。這是為了防止同級或低級中斷請求中斷同級或更高級中斷。 (2) 當前機器周期必須是當前指令的最后一個機器周期,否則等待。執(zhí)行某些指令需要兩個或兩個以上機器周期,如果當前機器周期不是指令的最后一個機器周期,則不響應中斷請求,即不允許中斷
14、一條指令的執(zhí)行過程,這是為了保證指令執(zhí)行過程的完整性。,(3) 如果當前指令是中斷返回指令RETI,或讀寫中斷控制寄存器IE、優(yōu)先級寄存器IP或IPH,則必須再執(zhí)行一條指令后才能響應中斷請求。 如果不滿足以上條件,將忽略該機器周期對中斷標志的查詢結(jié)果,下一機器周期繼續(xù)查詢,因此可能存在這樣一種情況:某一中斷發(fā)生了,不滿足響應條件,CPU不響應,又出了新的中斷請求,則尚未響應的中斷請求將被忽略,因為每一中斷源只有一個中斷標
15、志位,而CPU總是在每個機器周期的S5P2相檢測中斷源,設置中斷標志。,例如低電平觸發(fā)的外中斷INT0低電平維持時間為1個機器周期,假設在M1機器周期有效,則M1機器周期的S5P2狀態(tài)后,標志位IE0為1;盡管在M2機器周期的S6狀態(tài),CPU查詢到IE0有效,但不滿足中斷響應條件,即M3機器周期不響應INT0的中斷請求,繼續(xù)執(zhí)行隨后指令系列,然而在M2機器周期S5P2相前INT0引腳已恢復高電平,在S5P2相后IE0復位,在M3機器周期
16、S6狀態(tài)查詢發(fā)現(xiàn)IE0為0,無效,結(jié)果是本次INT0中斷請求將被忽略。 另外,在中斷響應過程中,如果在M4周期的S6狀態(tài)查詢到優(yōu)先級更高的中斷標志為1(即在M2~M3機器周期內(nèi)優(yōu)先級更高的中斷請求出現(xiàn)),在M5、M6機器周期將響應高優(yōu)先級中斷,而不執(zhí)行低優(yōu)先級中斷服務程序。,2. 中斷響應過程及中斷服務程序入口地址 如果滿足中斷響應條件,將進入中斷響應過程: (1) ?CPU先將對應中斷的優(yōu)先級觸發(fā)器置1(
17、每一中斷源對應一個中斷優(yōu)先級觸發(fā)器,不過圖4-1沒畫出該觸發(fā)器),阻止CPU再響應同級或更低級中斷請求。 (2) 將程序計數(shù)器PC當前值壓入堆棧,以保證執(zhí)行完中斷服務程序后正確返回;并將相應中斷源入口地址裝入PC,以便執(zhí)行中斷服務程序。這一過程由硬件完成,相當于執(zhí)行了一條長調(diào)用指令“LCALL XXXX”,中斷服務程序入口地址如下:,中斷源 入口地址(即LCALL指令的XXXX地址)外中斷
18、 0003H定時/計數(shù)器T0溢出中斷 000BH外中斷 0013H定時/計數(shù)器T1溢出中斷 001BH串行口中斷 0023H定時/計數(shù)器T2溢出中斷 002BH,由于各中斷服務程序入口地址僅相隔8個字節(jié),難以容納中斷服務程序,為此可在入口處放置一條長跳轉(zhuǎn)指令,而實際的中斷服務程序放在存儲器區(qū)內(nèi)的任意位置(一般放在主程序后),如下所示: ORG 0
19、003H LJMP INT0; 在外中斷入口處放一條長跳轉(zhuǎn)指令 ORG 0100H MAIN:; 主程序 …… INT0:; 外中斷的中斷服務程序,(3) 清除中斷請求標志。進入中斷服務程序后,CPU能自動清除下列中斷請求標志位: 定時器T0中斷請求標志TF0; 定時器T1中斷請求標志TF1; 邊沿觸發(fā)方式下外中斷的中斷請求標志IE0;
20、 邊沿觸發(fā)方式下外中斷的中斷請求標志IE1。 但不自動清除串行發(fā)送結(jié)束中斷標志TI、串行接收有效中斷標志RI、定時/計數(shù)器T2溢出中斷標志TF2、定時/計數(shù)器T2外觸發(fā)標志EXF2以及電平觸發(fā)方式下的外中斷標志IE0和IE1。對于不能自動清除的中斷請求標志,需要在中斷服務程序中,用“CLR 位地址”指令清除。,(4) 返回。中斷服務程序最后一條指令是中斷返回指令“RETI”,執(zhí)行了中斷返回指令RETI后,先將
21、對應中斷的優(yōu)先級觸發(fā)器清零(以便返回后CPU能夠響應同級或更低級的中斷請求),并將堆棧內(nèi)的兩個字節(jié)彈到程序計數(shù)器PC,以便從斷點處繼續(xù)執(zhí)行被中斷程序的后續(xù)指令。,4.2.4 中斷初始化及中斷服務程序結(jié)構,中斷初始化是指通過設置TCON、IE及IP、IPH寄存器內(nèi)容,確定外中斷觸發(fā)方式(低電平觸發(fā)還是下降沿觸發(fā))、開中斷、設置中斷優(yōu)先級等,例如可通過如下指令將定義為下降沿觸發(fā),優(yōu)先級為3(最高),并允許中斷:,SETB IT0;外中
22、斷采用下降沿觸發(fā)MOV A, IPHORL A, #01HMOV IPH,A;由于IPH寄存器沒有位尋址功能,只能通過或 指令將IPH的PX0H ;位置1 SETB EA ;開中斷,SETB PX0;IP寄存器具有位尋址功能,可通過SETB指令將指 定位置1
23、 SETB EX0;允許中斷,中斷服務程序結(jié)構與子程序類似,大致包含以下幾部分:; 必要時保護現(xiàn)場PUSH PSWPUSH Acc…SETB RS0; 切換工作寄存器區(qū),根據(jù)需要可使用0~3區(qū)中的任一區(qū)CLR RS1; 由于中斷出現(xiàn)的不確定性,因此只要中斷服務程序中使用 ; 了寄存器組R0~R7,就需要切換工作區(qū)
24、……; 中斷服務程序體(略),CLR 中斷請求標志; 對于不能自動清除中斷請求標志的中 斷響應過程,需要通過“CLR中斷; 請求標志位”指令清除中斷請求標志, 防止同一請求被多次響應POP Acc POP PSW; 恢復現(xiàn)場 RETI; 中斷返回指令,(1) 中斷出現(xiàn)是隨機的,可能出現(xiàn),也可能不出現(xiàn),更不知道什么會時候出現(xiàn),即被中斷程序的斷點無法預測。而子程序的執(zhí)
25、行由調(diào)用指令LCALL或ACALL實現(xiàn),只要滿足特定條件,就一定會發(fā)生,斷點由程序員控制。因此只要中斷服務程序中出現(xiàn)寫寄存器組R0~R7之一,就需要切換工作寄存器區(qū):由于同級中斷不能嵌套,因此同一優(yōu)先級中斷服務程序可以使用同一工作寄存器區(qū);高優(yōu)先級中斷服務程序和低優(yōu)先級中斷服務程序一般不能使用同一工作寄存器區(qū),除非兩者不可能同時出現(xiàn)。 (2) 中斷服務程序入口地址(也稱為中斷向量)由硬件決定,與CPU類型有關,不能更改。
26、而子程序入口地址由用戶安排。,(3) 子程序中可以任意調(diào)用另一子程序,但中斷過程有優(yōu)先級,同級或低級中斷不能打斷正在執(zhí)行的同級或更高優(yōu)先級中斷服務程序。 (4) 盡管子程序返回指令RET和中斷返回指令RETI均會將棧頂兩個字節(jié)信息裝入PC,恢復斷點,但RETI還清除相應中斷優(yōu)先級觸發(fā)器,因此中斷返回指令不可用子程序返回指令RET代替。,對于采用電平觸發(fā)方式的外中斷 和 來說,如果低電
27、平有效信號不自動消失,或低電平維持時間大于外中斷服務程序的執(zhí)行時間時,即使在退出中斷服務程序前,通過“CLR IE0”或“CLR IE1”指令清除了中斷標志IE0或IE1,但P3.2或P3.3引腳依然保持低電平,下一機器周期中斷標志又再次被置位,返回后中斷標志有效,如果滿足響應條件,將造成“同一請求,多次響應”的現(xiàn)象。為此,盡量避免采用電平觸發(fā)方式,非要用電平觸發(fā)方式(如干擾大,不宜采用邊沿觸發(fā))時,可通過以下措施克服:,·
28、增加單穩(wěn)態(tài)電路,把電平觸發(fā)改為脈沖觸發(fā)。 · 如果低電平信號能自動消失,但保持時間可能大于中斷服務程序的執(zhí)行時間時,在系統(tǒng)反映速度許可情況下,為了降低成本,可在外中斷服務程序中加入引腳電平狀態(tài)檢測指令,確保P3.2(對 來說)或P3.3(對 來說)引腳變低電平后,再清除中斷請求標志并返回。,,4.3 增強型MCS-51定時/計數(shù)器,在單片機應用系統(tǒng)中,常需要對外部脈沖進行
29、計數(shù)或每隔特定時間執(zhí)行某一操作,因此定時/計數(shù)器是單片機控制系統(tǒng)重要的外設部件之一,幾乎所有單片機控制系統(tǒng)均有一個到數(shù)個定時/計數(shù)器。增強型MCS-51系列單片機內(nèi)置了三個16位的定時/計數(shù)器,分別稱為T0、T1和T2。,4.3.1 定時/計數(shù)功能概述,定時/計數(shù)器的核心部件是一個加法(或減法)計數(shù)器,可工作在定時方式或計數(shù)方式,因此稱為定時/計數(shù)器。不過這兩種工作方式?jīng)]有本質(zhì)的區(qū)別,只是計數(shù)脈沖來源不同而已:如果計數(shù)脈沖是頻率相對穩(wěn)
30、定的系統(tǒng)時鐘信號(一般是系統(tǒng)時鐘的分頻信號)時,則稱為定時方式;反之,當計數(shù)脈沖取自CPU I/O引腳的外部信號時,稱為計數(shù)方式。 單片機內(nèi)定時/計數(shù)器屬于可編程部件,除了加法計數(shù)器(部分單片機芯片采用減法計數(shù)器)外,尚有工作方式控制寄存器,一般具有如下特點:,(1) 工作方式寄存器。定時/計數(shù)器有多種定時或計數(shù)方式,使用前必須初始化工作方式寄存器,設置定時/計數(shù)器的工作方式(定時還是計數(shù);硬件啟動還是軟件啟動;計數(shù)長度
31、——即作為16位計數(shù)器使用還是8位計數(shù)器使用等)。 (2) 可以從0開始計數(shù),也可以從特定值開始計數(shù),因此定時/計數(shù)器是一個可讀寫的寄存器,使用前一般需要設置定時/計數(shù)器的初值。 (3) 對于每來一個脈沖加1的定時/計數(shù)器,當計數(shù)器溢出時,可向CPU發(fā)出中斷請求(定時時間到),以便CPU處理。,4.3.2 定時/計數(shù)器T0、T1結(jié)構及控制,1. 定時/計數(shù)器的控制 在MCS-51中,與定時/計數(shù)器T0、
32、T1工作方式有關的寄存器為TMOD和TCON。其中TMOD控制定時/計數(shù)器T0、T1的工作方式,而TCON控制定時/計數(shù)器的啟動方式和禁止/允許定時中斷。 1) 工作方式寄存器TMOD,圖4-6 TMOD寄存器各位含義,表4-1 定時/計數(shù)器工作方式,· ——定時/計數(shù)方式選擇。當 位為0時,計數(shù)脈沖來自CPU內(nèi)部分頻器,計數(shù)脈沖頻率是時鐘信號的12分頻(對于“6時鐘/機器
33、周期”芯片來說,計數(shù)脈沖是系統(tǒng)時鐘信號的6分頻),即處于定時方式;當 位為1時,計數(shù)脈沖來自P3.4引腳,即處于計數(shù)方式。 · GATE——定時/計數(shù)器啟動方式控制位。,2) 控制字寄存器TCON,圖4-7 TCON寄存器中與定時/計數(shù)器控制有關的位,2. 工作方式 定時/計數(shù)器T0有四種工作方式(即方式0、方式1、方式2和方式3),主要用于定時和計數(shù);定時/計數(shù)器T1有三種工作方式(
34、即方式0、方式1和方式2),除了用作定時、計數(shù)外,T1還作為串行異步通信口的波特率發(fā)生器。值得注意的是,初始化時如果錯將定時/計數(shù)器T1置為方式3,T1將停止工作。,1) 方式1(16位定時/計數(shù)器),圖4-8 定時/計數(shù)器T0(T1)方式1結(jié)構,當 位為0時,定時/計數(shù)器T0處于定時狀態(tài),計數(shù)脈沖是系統(tǒng)時鐘信號的n分頻器,即每隔n?/?fOSC秒,TL0加1,當TL0溢出(如果TL0當前值為FFH,則再來一個脈沖,TL
35、0將溢出,變?yōu)?0)時,TH0自動加1;當TH0也溢出時,定時器T0中斷標志TF0位置位1。如果定時器T0溢出中斷開關ET0為1(即允許T0中斷),將向CPU發(fā)出定時器溢出中斷請求(CPU能否響應,取決于中斷響應條件)。,如果定時器初值為M,則方式1的定時時間t為: (“12時鐘/機器周期”模式) (“6時鐘/機器周期”模式)
36、,【例4.1】 假設晶振頻率為12 MHz,定時器初值為9800?(即2648H),計算“12時鐘/機器周期”模式下的定時時間t。,t== 55 736 μs=55.736 ms,顯然,當晶振頻率為12 MHz,定時器初值為0時,方式1定時時間最長為:,tmax= =65 536 μs,在定時時間T
37、確定情況下,定時器初值M可表示為:,(“12時鐘/機器周期”模式),(“6時鐘/機器周期”模式),在上式中,如果 fOSC單位取MHz,則定時時間T的單位是μs。,【例4.2】 假設晶振頻率為12 MHz,所需定時時間為10 ms,計算“12時鐘/機器周期”模式下定時器初值M。 將定時時間10 ms(即10 000 μs)、晶振頻率12 MHz代入(4-3)式,可得初值:,即定時器初值TH0為0D8H,TL0為0F0H
38、。,當 位為1時,定時/計數(shù)器T0處于計數(shù)狀態(tài),計數(shù)脈沖來自CPU的P3.4引腳。每來一個脈沖TL0加1。當TL0溢出時,TH0自動加1;當TH0也溢出時,計數(shù)器T0中斷標志TF0位置1(即有效)。,2) 方式2,圖4-9 定時/計數(shù)器T0(T1)方式2結(jié)構,由于方式2的計數(shù)長度為8位,因此定時時間T與初值M之間關系為:,(“12時鐘/機器周期”模式),(“6時鐘/機器周期”模式),顯然,當晶振頻率 fOSC 為12 MH
39、z時,“12時鐘/機器周期”模式下方式2的最長定時時間為:,3) 方式3,圖4-10 定時/計數(shù)器T0方式3結(jié)構,圖4-11 T0工作在方式3下T1的結(jié)構(a) T1方式1;(b) T1方式2,4.3.3 定時/計數(shù)器T2結(jié)構及控制,1. 定時/計數(shù)器T2的控制,圖4-12 T2CON寄存器各位含義,圖4-13 T2MOD寄存器各位含義,表4-2 定時/計數(shù)器T2工作方式,2. T2的工作方式 1) 下降沿觸發(fā)自動重裝
40、初值16位定時或計數(shù)器,圖4-14 下降沿觸發(fā)自動重裝初值16位定時/計數(shù)器T2結(jié)構,2) 外部電平控制重裝方式,圖4-15 外電平控制重裝方式下的T2結(jié)構,3) 捕捉方式,圖4-16 定時/計數(shù)器T2的捕捉方式,4) 可編程時鐘輸出方式,圖4-17 時鐘輸出方式下的定時器T2結(jié)構,可見利用T2的時鐘輸出功能,在P1.0引腳獲得方波信號精度高于軟件定時方式獲得的方波信號。,顯然T2溢出時間為
41、 因此從P1.0引腳輸出時鐘信號頻率為,【例4.3】 假設晶振頻率為12 MHz,計算“12時鐘/機器周期”模式下從P1.0引腳輸出的方波信號頻率范圍。 方波信號頻率與T2比較/捕捉寄存器RCAP2H、RCAP2L初值有關,當RCAP2H、RCAP2L初值為0FFFFH時,方波信號頻率最大(3 MHz);當RCAP2H、RCAP2L初值為0000H時,方波信號頻率最小(45.
42、8 Hz)。 從圖4-17可以看出:在時鐘輸出方式下,T2溢出時不置位TF2標志,但當外觸發(fā)控制EXEN2位為1時,T2EX(P1.1)引腳由1變0(即P1.1的下降沿)EXF2標志置1,因此定時器T2工作于時鐘輸出方式時,可把P1.1引腳作為下降沿觸發(fā)的外中斷(EXEN2作中斷允許控制位;EXF2作中斷有效標志)。 .,5) 串行口波特率發(fā)生器,圖4-18 T2作為串行口波特率發(fā)生器的結(jié)構,在增強型MCS-51芯片
43、中,當定時器T2控制器寄存器T2CON的TCLK位為1時,將改用定時器T2溢出信號的16分頻作為串行口方式1和方式3的發(fā)送波特率(如果RCLK為0,則方式1、方式3的接收波特率還是由定時器T1產(chǎn)生);而當定時器T2控制器寄存器T2CON的RCLK位為1時,也改用定時器T2溢出信號的16分頻作為串行口方式1和方式3的接收波特率。但值得注意的是,在“12時鐘/機器周期”模式下把T2溢出率作為串行口方式1、方式3的波特率發(fā)生器時,T2的計數(shù)脈
44、沖是時鐘信號的2分頻,而不是12分頻。因此,使用定時T2作為串行口方式1和方式3的波特率時,波特率與定時器T2初值C之間關系如下:,表4-3 定時器T2波特率與初值C之間關系,4.3.4 定時/計數(shù)器應用,【例4.4】 假設晶振頻率為12 MHz,試利用定時/計數(shù)器T0的方式2,在P1.7引腳輸出周期為200 μs的方波。 分析:定時器工作方式2的最長定時時間為256 μs,而方波周期為200 μs,即方波高、低電
45、平時間只有200 μs/2,即100 μs,可令T0工作于方式2,定時時間設為100 μs,定時時間到對P1.7引腳鎖存器取反,即獲得周期為200 μs的方波。,定時器T0初值M為:,參考程序如下:ORG 0000HLJMP MAIN; 跳到主程序入口ORG 000BHLJMP CTC0; 定時器T0中斷入口地址ORG 100H MAIN:MOV SP, #4FH; 初始化堆棧指針SPMO
46、V A, TMOD; 為了不影響定時/計數(shù)器T1的工作狀態(tài), 先讀出TMOD ANL A, #0F0H; 與F0H相與,使高4位不變,低4位清零 ORL A, #0000 0010B; 由TR0控制計數(shù)器開和關,GATE位為0; 定時狀態(tài),即位為0,M1M0為10,即方式2,MOV TMOD,A; 將工作方式控制字寫入TMODMOV TL0, #9CH; 送初值MOV TH0,
47、#9CH; 送重裝初值SETB ET0; 允許定時器T0中斷SETB EA; 開中斷SETB TR0; 啟動定時器T0HERE:SJMP HERE; 循環(huán)等待,相當于虛擬主程序; 定時器T0的中斷服務程序CTC0:CPL P1.7RETI,【例4.5】 假設晶振頻率為12 MHz,試編寫一程序,在P1.7引腳輸出周期為2 s的方波。 分析:本例表面上與上例區(qū)別不大,只是
48、方波周期長了,但我們知道當系統(tǒng)晶振頻率為12 MHz時,即使定時/計數(shù)器工作在方式1,最長定時時間也不過65.536 ms,而目前需要在P1.7引腳上輸出周期為2?s?(高低電平時間為1?s)的方波,屬于超長定時問題,除了使用定時器功能外,還要使用軟件計數(shù)方法。 要獲得1s?(即1000 ms)的定時時間,可使用定時器T0方式1,定時時間可設為50 ms,軟件計數(shù)器初值為20。定時器T0溢出時,軟件計數(shù)器減1,當軟件計數(shù)
49、器減到0時,就獲得了1 s的時間。具體程序如下:,參考程序如下:,TIMECON DATA 28H; 把28H單元作為軟件計數(shù)器ORG 0000HLJMP MAIN; 跳到主程序入口ORG 000BHLJMP CTC0; 定時器T0中斷入口地址ORG 100HMAIN:MOV SP, #4FH; 初始化堆棧指針SPMOV A, TMOD; 為了不影響定時/計數(shù)器T1的工作狀態(tài), 先讀
50、出TMODANL A, #0F0H; 與F0H相與,使高4位不變,低4位清零 ORL A, #00000001B; 由TR0控制計數(shù)器開和關,GATE位為0; 定時狀態(tài),即位為0,M1M0為01,即方式1,MOV TMOD,A; 將工作方式控制字寫入TMOD MOV TL0, #0B0H; 送初值 MOV TH0, #3CH; 定時時間為50 ms(即50000 μs),
51、 初值為3CB0H SETB ET0; 允許定時器T0中斷 SETB EA; 開中斷 SETB TR0; 啟動定時器T0 MOV TIMECON, #14H; 軟件計數(shù)器初值為14H(即20)HERE:SJMP HERE; 循環(huán)等待,相當于虛擬主程序 ; 定時器T0的中斷服務程序,CTC0:MOV TL0, #0B0H; 重裝定時器初值MOV TH0, #3CH; 為了減少定時誤差
52、,進入中斷服務后, 先重裝定時器初值DJNZ TIMECON, NEXT ; 軟件計數(shù)器減1,不等于0,就返回MOV TIMECON, #14H; 重裝軟件計數(shù)器初值CPL P1.7; 對P1.7取反NEXT:RETI,【例4.6】 系統(tǒng)晶振頻率為12 MHz,試利用定時器T0在P1.6引腳上輸出頻率為1400 Hz的方波(持續(xù)時間為60 ms),然后不斷檢測P1.7引腳狀態(tài),當P1.7引腳上存在
53、負脈沖時,在負脈沖過后立即在P1.6引腳輸出頻率為2300 Hz的方波(持續(xù)時間也是60 ms),否則3 s后在P1.6引腳上輸出頻率為1400 Hz的方波(持續(xù)時間為60 ms)。 分析:本例涉及定時器重復使用問題,有一定的代表性。在單片機應用系統(tǒng)中往往需要多段長短不一的定時時間,而CPU內(nèi)定時/計數(shù)器的個數(shù)有限,如MCS-51系列只有2個定時器。如果兩個或兩個以上的定時時間沒有重疊,原則上就可以利用同一定時器現(xiàn)實(重
54、新設置工作方式和定時器初值)。,方波頻率為1400 Hz,則方波周期為1/1400 Hz,即714.28 μs,高低電平時間為357.14 μs。當T0工作于方式2(自動重裝初值的8位定時/計數(shù)器)時,最長定時時間為256 μs,小于1400 Hz方波要求的定時時間,必須使用軟件計數(shù)器。因此,可將定時時間設為119 μs,軟件計數(shù)器初值設為3,于是可獲得3×119(即357 μs)的延遲時間,即方波周期為714 μs,頻率為1
55、400.56 Hz,與實際值非常接近。 對于頻率為2300 Hz的方波來說,周期為1/2300 Hz,即434.782 μs,高低電平時間為217.391 μs,小于方式2的最長定時時間256 μs。因此,將定時時間設為217 μs時,即可獲得周期為434 μs的方波(頻率為1/434 μs,即2304.147 Hz),誤差也不大。,至于持續(xù)時間,可用軟件延遲方式獲得。 在檢測P1.7引腳狀態(tài)期間,不能用軟件延
56、遲方式,需要重新初始化定時/計數(shù)器T0的工作方式,作為16位定時器使用。 參考程序如下:,X_TIME DATA 2AH ; 延遲時間參數(shù)XY_TIME DATA 2BH ; 延遲時間參數(shù)Y;這兩個單元確定的延遲時間為tTIME DATA 2CH ; 延遲時間計數(shù)器,總的延遲時間為Time×tSINCON DATA 2DH ; 送1400 Hz時的計數(shù)器SIN1400 BIT 00H
57、 ; 位地址00H作為1400 Hz方波標志,當sin1400為1時, 發(fā)1400 Hz ; 反之,發(fā)2300 Hz,ORG 0000HLJMP MAIN; 跳到主程序入口ORG 000BHLJMP CTC0; 定時器T0中斷入口地址ORG 100HMAIN:MOV SP, #4FH; 初始化堆棧指針SP ; 初始化定時器
58、T0(工作在方式2)MOV A, TMOD; 為了不影響定時/計數(shù)器T1的工作狀態(tài), 先讀出TMODANL A, #0F0H; 與F0H相與,使高4位不變,低4位清零ORL A, #00000010B; 由TR0控制計數(shù)器開和關,GATE位為0; 定時狀態(tài),即位為0,M1M0為10,即方式2 MOV TMOD,A; 將工作方式控制字寫入TMOD,; 發(fā)送1400Hz方波時定時器T0的
59、初始化命令 MOV TL0, #89H ; 送初值 MOV TH0, #89H ; 送重裝初值,定時時間為119 μs,初值為 89H,計數(shù)器初值為3 MOV SINCON, #03H ; 用SINCON單元存放計數(shù)初值(119*3=357 μs),實際頻率; 為1400.56 Hz SETB SIN1400 SETB ET0
60、 ; 允許定時器T0中斷 SETB EA ; 開中斷 SETB TR0 ; 啟動T0; 延遲60 ms MOV TIME, #06H,LOOP1:MOV X_TIME, #109MOV Y_TIME, #45LCALL DELAY ; 延遲10 msDJNZ TIME, LOOP1 CLR
61、TR0 ; 延遲60 ms后停止CLR P1.6; 將P1.6引腳置低電平; 重新初始化定時/計數(shù)器T0MOV A, TMOD; 為了不影響定時/計數(shù)器T1的工作狀態(tài), 先讀出TMODANL A, #0F0H; 與F0H相與,使高4位不變,低4位清零,ORL A, #00000001B; 由TR0控制計數(shù)器開和關,GATE位為0; 定時狀態(tài),即位為0,M1M0
62、為01,即方式1MOV TMOD,A; 將工作方式控制字寫入TMODMOV TL0, #3CH; 送初值低8位MOV TH0, #0B0H; 送初值高位,定時器初值為3CB0,即定時 時間為50 msCLR ET0 ; 將用查詢方式CLR TF0; 清除定時器T0的中斷標志SETB TR0 ; 啟動T0 MOV TIME, #3CH
63、; 軟件計數(shù)器初值為3C,即60,LOOP2:JNB P1.7, MPLUSJNB TF0, LOOP2MOV TL0, #3CH; 重裝初值低8位MOV TH0, #0B0H; 重裝初值高位CLR TF0DJNZ TIME,LOOP2; 軟件計數(shù)器減1 SJMP OUT1400,MPLUS:JB P1.7, OUT2300JNB TF0, MPLUSMOV TL0,
64、#3CH; 重裝初值低8位 MOV TH0, #0B0H; 重裝初值高位CLR TF0DJNZ TIME,MPLUS; 軟件計數(shù)器減SJMP OUT1400,OUT1400: MOV A, TMOD; 為了不影響定時/計數(shù)器T1的工作狀態(tài),先 讀出TMOD ANL A, #0F0H; 與F0H相與,使高4位不變,低4位清零 ORL A, #00000010B; 由TR0
65、控制計數(shù)器開和關,GATE位為0; 定時狀態(tài),即位為0,M1M0為10,即方式2 MOV TMOD,A; 將工作方式控制字寫入TMOD MOV TL0, #89H; 送初值 MOV TH0, #89H; 送重裝初值 MOV SINCON, #03H SETB SIN1400 SETB ET0 ; 允許定時器T0中斷 SETB TR0 ;
66、 啟動T0SJMP STOP,OUT2300:; 發(fā)送2300 Hz方波時定時器T0的初始化命令 MOV A, TMOD; 為了不影響定時/計數(shù)器T1的工作狀態(tài),先讀出TMOD ANL A, #0F0H; 與F0H相與,使高4位不變,低4位清零 ORL A, #00000010B; 由TR0控制計數(shù)器開和關,GATE位為0; 定時狀態(tài),即位為0,M1M0為10,即方式2 MOV TMOD,A
67、; 將工作方式控制字寫入TMOD MOV TL0, #27H; 送初值 MOV TH0, #27H; 送重裝初值,定時時間為217 μs,初值為27H,實際頻率; 為2304 Hz CLR SIN1400 SETB TR0 STOP:; 延遲60 ms MOV TIME, #06H,LOOP3: MOV X_TIME, #109 MOV Y_TIME, #45
68、 LCALL DELAY ; 延遲10 msDJNZ TIME, LOOP3CLR TR0 ; 延遲60 ms后停止CLR ET0CLR EAEND,; 定時器T0中斷服務程序(產(chǎn)生1400/2300 Hz正弦波)CTC0: JNB SIN1400, SIN2300 ; 如果特征位為0,說明要發(fā)2300 Hz DJNZ SINCON, CT
69、CEND MOV SINCON, #03H CPL P1.6 SJMP CTCENDSIN2300: CPL P1.6CTCEND: RETI,; ***********通用延遲子程序**************; 延遲時間參數(shù)在2AH(Y)、2BH(x)單元中,總的延遲時間t; t=(4y+2xy+10)T,其中T是機器周期。當晶振頻率為12 MHz時,T=1 μs
70、; 典型參數(shù)I:x=198,y=250時,延遲時間t=100 010 μs,即近似100 ms; 典型參數(shù)II:x=109,y=45時,延遲時間t=10 ms; 子程序名稱:DelayDelay: PUSH PSW CLR RS0 SETB RS1 ; 使用2區(qū) MOV R7,Y_TIME ; 取延遲時間參數(shù)YDLOOP1: MOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子信息科學與技術導論論文
- 信息科學與技術導論之電子信息技術
- 電子信息科學與技術專業(yè)導論論文
- 電子信息科學與技術導論課論文
- 電子信息科學與技術專業(yè)培養(yǎng)方案
- 電子信息科學與技術個人簡歷
- 電子信息科學與技術專業(yè)畢業(yè)論文
- 電子信息科學與技術專業(yè)建設經(jīng)費使用計劃
- 電子信息科學與技術專業(yè)指導性培養(yǎng)方案
- 中國電子學會電子信息科學技術獎
- 電子信息科學與技術輔修專業(yè)人才培養(yǎng)方案
- 電子信息科學與技術基于單片機智能小車設計
- 電子信息科學與技術專業(yè)本科生培養(yǎng)方案
- 北京聯(lián)合大學電子信息科學與技術專業(yè)畢業(yè)設計
- 電子指南針的設計【電子信息科學與技術畢業(yè)論文】
- 海南大學信息科學技術學院電子信息工程專業(yè)
- 溫度測控儀的設計【電子信息科學與技術畢業(yè)論文】
- 超短脈沖技術的原理與應用-電子信息科學與技術畢業(yè)論文
- 溫度測控儀的設計【電子信息科學與技術畢業(yè)論文】
- 電子信息工程電氣工程及其自動化電子信息科學與技術自動化試題a定答案
評論
0/150
提交評論