《中斷定時串口》演示PPT_第1頁
《中斷定時串口》演示PPT_第2頁
《中斷定時串口》演示PPT_第3頁
《中斷定時串口》演示PPT_第4頁
《中斷定時串口》演示PPT_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 第第5章中斷系統(tǒng)、章中斷系統(tǒng)、 定時器定時器/計數(shù)器與串行口計數(shù)器與串行口 5.1 MCS-51單片機中斷系統(tǒng)單片機中斷系統(tǒng) 中斷中斷是指計算機暫時停止原程序執(zhí)行轉(zhuǎn)而為外部設(shè)備是指計算機暫時停止原程序執(zhí)行轉(zhuǎn)而為外部設(shè)備 服務(wù)服務(wù)(執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序), 并在服務(wù)完后自動返回原程序并在服務(wù)完后自動返回原程序 執(zhí)行的過程。執(zhí)行的過程。 5.1.1 中斷系統(tǒng)結(jié)構(gòu)及中斷控制中斷系統(tǒng)結(jié)構(gòu)及中斷控制 89C51單片機有單片機有5個中斷源個中斷源(89C52有有6個),可實現(xiàn)個),可實現(xiàn) 二級中斷服務(wù)程序嵌套二級中斷服務(wù)程序嵌套。 2 圖5-1 中斷系統(tǒng)結(jié)構(gòu)示意圖 3 1. 中斷源中斷源

2、中斷源中斷源中斷標(biāo)志中斷標(biāo)志中斷入口地址中斷入口地址 外部中斷 /INT0(P3.2)IE00003H /INT1(P3.3)IE10013H 定時中斷 T0TF0000BH T1TF1001BH 串行中斷 發(fā)送中斷TI 0023H 接受中斷RI 4 2. 2. 中斷控制中斷控制 定時器控制寄存器定時器控制寄存器TCON、 串行口控制寄存器串行口控制寄存器SCON、 中中 斷允許寄存器斷允許寄存器IE和中斷優(yōu)先級寄存器和中斷優(yōu)先級寄存器IP (1) 定時器控制寄存器定時器控制寄存器(TCON) TCON(88H) D7 D6 D5 D4 D3 D2 D1 D0 5 (2) 串行口控制寄存器(串

3、行口控制寄存器(SCON)98H TITI串行口發(fā)送中斷請求標(biāo)志位。當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,串行口發(fā)送中斷請求標(biāo)志位。當(dāng)發(fā)送完一幀串行數(shù)據(jù)后, 由由 硬件置硬件置1 1; 在轉(zhuǎn)向中斷服務(wù)程序后,在轉(zhuǎn)向中斷服務(wù)程序后, 用用軟件清軟件清0 0。 RIRI串行口接收中斷請求標(biāo)志位。當(dāng)接收完一幀串行數(shù)據(jù)后,串行口接收中斷請求標(biāo)志位。當(dāng)接收完一幀串行數(shù)據(jù)后, 由由 硬件置硬件置; 在轉(zhuǎn)向中斷服務(wù)程序后,在轉(zhuǎn)向中斷服務(wù)程序后, 用用軟件清軟件清0 0。 6 (3) 中斷允許控制寄存器(中斷允許控制寄存器(IE)0A8H 7 (5) 中斷優(yōu)先級控制中斷優(yōu)先級控制 A. 中斷優(yōu)先級控制寄存器(中斷優(yōu)先級控制

4、寄存器(IP)0B8H 8 B.中斷查詢順序中斷查詢順序 當(dāng)同時接收到幾個同一優(yōu)先級的中斷請求時,當(dāng)同時接收到幾個同一優(yōu)先級的中斷請求時, 響應(yīng)響應(yīng) 哪個中斷源則取決于內(nèi)部硬件查詢順序。哪個中斷源則取決于內(nèi)部硬件查詢順序。 中斷源中斷源 同級自然優(yōu)先級同級自然優(yōu)先級 INT0 最高最高 T0 INT1 T1 串行口串行口 最低最低 C. C. 中斷嵌套(中斷嵌套(2 2個中斷優(yōu)先級)個中斷優(yōu)先級) 由由IP設(shè)定高、低兩級優(yōu)先級設(shè)定高、低兩級優(yōu)先級 原則:原則:允許高中斷低,禁止低中斷高和同級中斷允許高中斷低,禁止低中斷高和同級中斷 9 5.1.2 中斷響應(yīng)及中斷處理過程中斷響應(yīng)及中斷處理過程

5、89C51單片機中斷過程分為單片機中斷過程分為中斷采樣中斷采樣、 中斷查詢中斷查詢、 中中 斷響應(yīng)斷響應(yīng)、 中斷處理中斷處理和和中斷返回中斷返回等幾個階段。等幾個階段。 1.中斷采樣(外部中斷采樣)中斷采樣(外部中斷采樣) 在每個機器周期的在每個機器周期的S5P2時刻對芯片引腳時刻對芯片引腳INT0(P3.2) 和和INT1(P3.3)進行采樣。)進行采樣。 (1)電平觸發(fā)方式)電平觸發(fā)方式 中斷標(biāo)志直接反映外部中斷引腳的狀態(tài),無記憶功能,中斷標(biāo)志直接反映外部中斷引腳的狀態(tài),無記憶功能, 低電平時間至少需保持一個機器周期,低電平時間至少需保持一個機器周期, 才能保證中斷請才能保證中斷請 求能被

6、采樣到。求能被采樣到。 (2)負跳變觸發(fā)方式)負跳變觸發(fā)方式 在兩個相鄰機器周期采樣到的是在兩個相鄰機器周期采樣到的是先高電平后低電平先高電平后低電平, 則中斷請求有效,則中斷請求有效, 由硬件將由硬件將IE0或或IE1置置1,具有記憶功能,具有記憶功能, 負脈沖的寬度也應(yīng)至少為一個機器周期。負脈沖的寬度也應(yīng)至少為一個機器周期。 10 2.中斷查詢中斷查詢 由由CPU測試測試TCON和和SCON中各標(biāo)志位的狀態(tài),中斷查詢在指令中各標(biāo)志位的狀態(tài),中斷查詢在指令 執(zhí)行的每個機器周期中不停地重復(fù)進行。執(zhí)行的每個機器周期中不停地重復(fù)進行。 3.中斷響應(yīng)中斷響應(yīng) (1)產(chǎn)生硬件調(diào)用,將斷點地址壓入堆棧。

7、)產(chǎn)生硬件調(diào)用,將斷點地址壓入堆棧。 (2)中斷封鎖)中斷封鎖 A、CPU正處在為一個同級或高級的中斷服務(wù)中。正處在為一個同級或高級的中斷服務(wù)中。因為當(dāng)一個中因為當(dāng)一個中 斷被響應(yīng)時,斷被響應(yīng)時, 要把對應(yīng)的優(yōu)先級觸發(fā)器置位,要把對應(yīng)的優(yōu)先級觸發(fā)器置位, 封鎖了低級和同級中封鎖了低級和同級中 斷。斷。 B、查詢中斷請求的機器周期不是當(dāng)前指令的最后一個機器周期。查詢中斷請求的機器周期不是當(dāng)前指令的最后一個機器周期。 目的在于確保當(dāng)前指令的完整執(zhí)行。目的在于確保當(dāng)前指令的完整執(zhí)行。 C、當(dāng)前指令是返回指令(當(dāng)前指令是返回指令(RET, RETI)或訪問)或訪問IE、 IP的指令。的指令。 在執(zhí)行完

8、這些指令之后,在執(zhí)行完這些指令之后, 還應(yīng)再繼續(xù)執(zhí)行一條指令,還應(yīng)再繼續(xù)執(zhí)行一條指令, 然后才能響應(yīng)然后才能響應(yīng) 中斷。中斷。 89C51對中斷查詢的結(jié)果不作記憶,對中斷查詢的結(jié)果不作記憶, 當(dāng)有新的查詢結(jié)果出現(xiàn)時,當(dāng)有新的查詢結(jié)果出現(xiàn)時, 因為以上原因而被拖延的查詢結(jié)果將不復(fù)存在,因為以上原因而被拖延的查詢結(jié)果將不復(fù)存在, 其中斷請求也就不其中斷請求也就不 能再被響應(yīng)了。能再被響應(yīng)了。 11 (3)中斷響應(yīng)時間)中斷響應(yīng)時間 響應(yīng)時間為響應(yīng)時間為38個機器周期個機器周期,如果遇到中斷受阻的情,如果遇到中斷受阻的情 況,則中斷響應(yīng)時間會更長一些。況,則中斷響應(yīng)時間會更長一些。 4. 中斷處理(

9、中斷服務(wù))中斷處理(中斷服務(wù)) 5. 中斷返回中斷返回 CPU執(zhí)行執(zhí)行RETI指令時,指令時, 把響應(yīng)中斷位置的優(yōu)先級把響應(yīng)中斷位置的優(yōu)先級 觸發(fā)器復(fù)位,觸發(fā)器復(fù)位, 再從堆棧中彈出斷點地址送入程序計數(shù)器再從堆棧中彈出斷點地址送入程序計數(shù)器 PC, 以便從斷點處重新執(zhí)行被中斷的主程序。以便從斷點處重新執(zhí)行被中斷的主程序。 12 5.1.3 中斷請求的撤銷中斷請求的撤銷 1. 定時中斷請求的撤銷定時中斷請求的撤銷 定時中斷響應(yīng)后,硬件自動把標(biāo)志位(定時中斷響應(yīng)后,硬件自動把標(biāo)志位(TF0或或TF1)清)清0, 因此定時中斷的中斷請求是自動撤銷的。因此定時中斷的中斷請求是自動撤銷的。 2. 脈沖方

10、式外部中斷的撤銷脈沖方式外部中斷的撤銷 中斷響應(yīng)時自動撤銷,在中斷服務(wù)過程中有新的下中斷響應(yīng)時自動撤銷,在中斷服務(wù)過程中有新的下 跳變會重新置位中斷標(biāo)志位。跳變會重新置位中斷標(biāo)志位。 3. 電平方式外部中斷請求的撤銷電平方式外部中斷請求的撤銷 中斷響應(yīng)時自動撤銷,在中斷返回后仍然為低電平中斷響應(yīng)時自動撤銷,在中斷返回后仍然為低電平 將會再次響應(yīng)中斷。將會再次響應(yīng)中斷。 4. 串行中斷請求撤銷串行中斷請求撤銷 由軟件(程序)清除標(biāo)志位。由軟件(程序)清除標(biāo)志位。 13 5.1.4 外部中斷源的擴展外部中斷源的擴展 1. 用定時器作外部中斷源用定時器作外部中斷源 MCS-51單片機有兩個定時器,具

11、有兩個內(nèi)中斷標(biāo)志和單片機有兩個定時器,具有兩個內(nèi)中斷標(biāo)志和 外計數(shù)引腳,如在某些應(yīng)用中不被使用,則它們定時器中外計數(shù)引腳,如在某些應(yīng)用中不被使用,則它們定時器中 斷可作為外部中斷請求使用。此時,可將定時器設(shè)置成計斷可作為外部中斷請求使用。此時,可將定時器設(shè)置成計 數(shù)方式,計數(shù)初值可設(shè)為滿量程,則它們的計數(shù)輸入端數(shù)方式,計數(shù)初值可設(shè)為滿量程,則它們的計數(shù)輸入端T0 (P3.4)或)或T1(P3.5)引腳上發(fā)生負跳變時,計數(shù)器加)引腳上發(fā)生負跳變時,計數(shù)器加1產(chǎn)產(chǎn) 生溢出中斷。利用此特性,可把生溢出中斷。利用此特性,可把T0腳或腳或T1腳作為外部中斷腳作為外部中斷 請求輸入線,而計數(shù)器的溢出中斷作

12、為外部中斷請求標(biāo)志。請求輸入線,而計數(shù)器的溢出中斷作為外部中斷請求標(biāo)志。 【例【例5.1】將定時器】將定時器0擴展為外部中斷源擴展為外部中斷源n 解:將定時器解:將定時器0設(shè)定為方式設(shè)定為方式2(自動恢復(fù)計數(shù)初值),(自動恢復(fù)計數(shù)初值),TH0 和和TL0的初值均設(shè)置為的初值均設(shè)置為FFH,允許定時器,允許定時器0中斷,中斷,CPU開放開放 中斷。源程序如下:中斷。源程序如下: 14 MOVTMOD,#06H MOVTH0,#0FFH MOVTL0,#0FFH SETBTR0 SETBET0 SETBEA 當(dāng)連接在當(dāng)連接在T0(P3.4)引腳上的外部中斷請求輸入線發(fā)生負)引腳上的外部中斷請求輸

13、入線發(fā)生負 跳變時,跳變時,TL0加加1溢出,溢出,TF0置置1,向,向CPU發(fā)出中斷申請,同時,發(fā)出中斷申請,同時, TH0的內(nèi)容自動送至的內(nèi)容自動送至TL0使使TL0恢復(fù)初值。這樣,恢復(fù)初值。這樣,T0引腳每輸引腳每輸 入一個負跳變,入一個負跳變,TF0都會置都會置1,向,向CPU請求中斷。此時,請求中斷。此時,T0腳腳 相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。 同樣,也可將定時器同樣,也可將定時器1擴展為外部中斷源。擴展為外部中斷源。 15 2. 中斷和查詢相結(jié)合中斷和查詢相結(jié)合 一個外中斷擴展成多個外中斷的原理圖 16 由圖可知,由圖可知,4個外部擴展中斷源

14、通過個外部擴展中斷源通過 4個個OC門電路組門電路組 成線或取非后再與成線或取非后再與 /INT0(P3.2)相連;)相連;4個外部擴展中個外部擴展中 斷源斷源EXINT0EXINT3中有一個或幾個出現(xiàn)高電平則輸中有一個或幾個出現(xiàn)高電平則輸 出為出為0,使,使/INT0腳為低電平,從而發(fā)出中斷請求。因此,腳為低電平,從而發(fā)出中斷請求。因此, 這些擴充的外部中斷源都是電平觸發(fā)方式(高電平有效)。這些擴充的外部中斷源都是電平觸發(fā)方式(高電平有效)。 CPU執(zhí)行中斷服務(wù)程序時,先依次查詢執(zhí)行中斷服務(wù)程序時,先依次查詢P1口的中斷源輸口的中斷源輸 入狀態(tài),然后,轉(zhuǎn)入到相應(yīng)的中斷服務(wù)程序,入狀態(tài),然后,

15、轉(zhuǎn)入到相應(yīng)的中斷服務(wù)程序,4個擴展中個擴展中 斷源的優(yōu)先級順序由軟件查詢順序決定,即最先查詢的優(yōu)斷源的優(yōu)先級順序由軟件查詢順序決定,即最先查詢的優(yōu) 先級最高,最后查詢的優(yōu)先級最低。先級最高,最后查詢的優(yōu)先級最低。 中斷服務(wù)程序如下: ORG0003H;外部中斷外部中斷0入口入口 AJMPINT0;轉(zhuǎn)向中斷服務(wù)程序入口轉(zhuǎn)向中斷服務(wù)程序入口 INT0:PUSHPSW;保護現(xiàn)場保護現(xiàn)場 PUSHACC JBP1.0 , EXT0;中斷源查詢并轉(zhuǎn)相應(yīng)中斷服務(wù)程序中斷源查詢并轉(zhuǎn)相應(yīng)中斷服務(wù)程序 JBP1.1 , EXT1 JBP1.2 , EXT2 JBP1.3 , EXT3 EXIT:POPACC;恢

16、復(fù)現(xiàn)場恢復(fù)現(xiàn)場 POPPSW RETI EXT0:;EXINT0中斷服務(wù)程序中斷服務(wù)程序 AJMPEXIT EXT1:;EXINT1中斷服務(wù)程序中斷服務(wù)程序 AJMPEXIT EXT2:;EXINT2中斷服務(wù)程序中斷服務(wù)程序 AJMPEXIT EXT3:;EXINT3中斷服務(wù)程序中斷服務(wù)程序 AJMPEXIT 同樣,外部中斷1也可作相應(yīng)的擴展。 5.1.5 處理外部中斷舉例處理外部中斷舉例 要求每次按動按鍵,使外接發(fā)光二極管要求每次按動按鍵,使外接發(fā)光二極管LEDLED改變一次亮滅狀態(tài)。改變一次亮滅狀態(tài)。 解:解:INT0INT0輸入按鍵信號,輸入按鍵信號,P P1.0 1.0輸出改變 輸出改

17、變LEDLED狀態(tài)。狀態(tài)。 1跳變觸發(fā):跳變觸發(fā):每次跳變引起一次中斷請求。每次跳變引起一次中斷請求。 ORG 0000H;復(fù)位入口;復(fù)位入口 AJMP MAIN ORG0003H ;中斷入口;中斷入口 AJMP PINT0 ORG0100H ;主程序;主程序 MAIN:MOV SP,#40H;設(shè)棧底;設(shè)棧底 SETB IT0;開總允許開關(guān);開總允許開關(guān) SETB EX0;開;開INT0中斷中斷 SETB EA;負跳變觸發(fā)中斷;負跳變觸發(fā)中斷 H:SJMP H ;執(zhí)行其它任務(wù);執(zhí)行其它任務(wù) ORG0200H ;中斷服務(wù)程序;中斷服務(wù)程序 PINT0:CPL P1.0;改變;改變LED RETI

18、;返回主程序;返回主程序 單片機單片機 INT0 P1.0 1 +5V 1 1軟件等待按鍵釋放。軟件等待按鍵釋放。 2 2硬件清除中斷信號。硬件清除中斷信號。 2. 電平觸發(fā)電平觸發(fā):避免一次按鍵引起多次中斷響應(yīng)。避免一次按鍵引起多次中斷響應(yīng)。 單片機單片機 INT0 P1.0 1 +5V ORG 0000H;復(fù)位入口;復(fù)位入口 AJMP MAIN ORG0003H ;中斷入口;中斷入口 AJMP PINT0 ORG0100H ;主程序;主程序 MAIN:MOV SP,#40H;設(shè)棧底;設(shè)棧底 CLRIT0;低電平觸發(fā)中斷;低電平觸發(fā)中斷 SETB EX0;開;開INT0中斷中斷 SETB E

19、A;開總允許開關(guān);開總允許開關(guān) H:SJMP H ;執(zhí)行其它任務(wù);執(zhí)行其它任務(wù) ORG0200H ;中斷服務(wù)程序;中斷服務(wù)程序 PINT0:CPL P1.0;改變;改變LED WAIT:JNBP3.2,WAIT;等按鍵釋放;等按鍵釋放 RETI;返回主程序;返回主程序 20 5.2 定時定時/計數(shù)器計數(shù)器 5.2.1 定時器定時器/計數(shù)器的組成計數(shù)器的組成 21 5.2.2 定時定時/計數(shù)器的定時和計數(shù)功能計數(shù)器的定時和計數(shù)功能 1. 計數(shù)功能計數(shù)功能 所謂計數(shù)是指對外部事件進行計數(shù)。外部事件以脈所謂計數(shù)是指對外部事件進行計數(shù)。外部事件以脈 沖的形式通過引腳沖的形式通過引腳T0(P3.4)和)

20、和T1(P3.5)輸入到定時)輸入到定時 /計數(shù)器。下降沿時,計數(shù)器。下降沿時, 計數(shù)器的值加計數(shù)器的值加1。 89C51在每個機器周期的在每個機器周期的S5P2期間采樣期間采樣T0和和T1引腳引腳 的輸入電平,計數(shù)脈沖的頻率不能高于振蕩脈沖頻率的的輸入電平,計數(shù)脈沖的頻率不能高于振蕩脈沖頻率的 1/24 。 2. 定時功能定時功能 定時功能也是通過計數(shù)器的計數(shù)功能來實現(xiàn)的,計定時功能也是通過計數(shù)器的計數(shù)功能來實現(xiàn)的,計 數(shù)脈沖來自單片機的內(nèi)部,數(shù)脈沖來自單片機的內(nèi)部, 每個機器周期產(chǎn)生一個計數(shù)每個機器周期產(chǎn)生一個計數(shù) 脈沖,計數(shù)器加脈沖,計數(shù)器加1。根據(jù)定時時間的要求計算出計數(shù)器。根據(jù)定時時

21、間的要求計算出計數(shù)器 的預(yù)置值(定時常數(shù))。的預(yù)置值(定時常數(shù))。 22 5.2.3 定時器定時器/計數(shù)器的控制寄存器計數(shù)器的控制寄存器 1.定時器控制寄存器(定時器控制寄存器(TCON) 23 2. 工作方式控制寄存器(工作方式控制寄存器(TMOD) 24 5.2.4 定時定時/計數(shù)器工作方式計數(shù)器工作方式 1. 方式方式0 (13位定時位定時/計數(shù)器方式計數(shù)器方式) 最大計數(shù)值:最大計數(shù)值:213 = 8192 25 定時時間定時時間(T)=(213-計數(shù)初值)計數(shù)初值)機器周期機器周期 例例: :設(shè)單片機晶振頻率為設(shè)單片機晶振頻率為12MHz, 使用定時器使用定時器1以方式以方式0產(chǎn)生周

22、期為產(chǎn)生周期為 500s的等寬正方波連續(xù)脈沖,的等寬正方波連續(xù)脈沖, 并由并由P1.0輸出。以查詢方式完成。輸出。以查詢方式完成。 計算計數(shù)初值計算計數(shù)初值 (213-X)110-6=25010-6 X=7942=1111100000110B 1111 1000 0000 0110B F 8 0 6 H TH1 TL1 TMOD寄存器初始化寄存器初始化(確定工作方式確定工作方式) TMOD=0000 0000B 啟動啟動T1(TCON中的中的TR1位控制定時的啟動和停止位控制定時的啟動和停止) 26 MOV TMOD, #00H; 設(shè)置設(shè)置T1為工作方式為工作方式0 MOV TH1, # 0F

23、8H; 設(shè)置計數(shù)初值設(shè)置計數(shù)初值 MOV TL1, #06H MOV IE, #00H; 禁止中斷禁止中斷 LOOP: SETB TR1; 啟動定時啟動定時 LOOP1:JBC TF1, LOOP2; 查詢計數(shù)溢出查詢計數(shù)溢出 AJMP LOOP1 LOOP2: MOV TH1, #0F8H; 重新設(shè)計數(shù)初值重新設(shè)計數(shù)初值 MOV TL1, #06H CLR TF1; 計數(shù)溢出標(biāo)志位清計數(shù)溢出標(biāo)志位清“0” CPL P1.0; 輸出取反輸出取反 AJMP LOOP; 重復(fù)循環(huán)重復(fù)循環(huán) 27 2. 方式方式1 (16位定時位定時/計數(shù)器方式計數(shù)器方式) 8 最大計數(shù)值:最大計數(shù)值:216 = 6

24、5536 28 3. 方式方式2 (8位自動重裝定時位自動重裝定時/計數(shù)器方式計數(shù)器方式) 最大計數(shù)值:最大計數(shù)值:28 = 256 29 3. 方式方式 (3定時定時/計數(shù)器方式計數(shù)器方式) (1) 工作方式工作方式3下的定時計數(shù)器下的定時計數(shù)器T0 TL0:8位定時位定時/計數(shù)器計數(shù)器 TH0:8位定時器位定時器 30 (2) 工作方式工作方式3下的定時器計數(shù)器下的定時器計數(shù)器1 T1設(shè)置為方式設(shè)置為方式3, 停止工作。如果停止工作。如果T0已工作已工作 在方式在方式3, 則則T1只能工作在方式只能工作在方式0方式方式1或方式或方式2下,下, 通常工作于方式通常工作于方式2為串行口提供波特

25、率時鐘,只需為串行口提供波特率時鐘,只需 設(shè)置好工作方式和計數(shù)初值,設(shè)置好工作方式和計數(shù)初值, 便可自動運行。便可自動運行。 31 應(yīng)用舉例:應(yīng)用舉例:設(shè)設(shè)89C51單片機的時鐘頻率為單片機的時鐘頻率為6MHz, 試編寫利用試編寫利用T0產(chǎn)生產(chǎn)生1s 定時的定時的 程序。程序。 ORG 0000H LJMP MAIN ; 上電,上電, 轉(zhuǎn)向主程序轉(zhuǎn)向主程序 ORG 000BH ; T0的中斷入口地址的中斷入口地址 AJMP SERVE ; 轉(zhuǎn)向中斷服務(wù)程序轉(zhuǎn)向中斷服務(wù)程序 ORG 0030H ; 主程序主程序 MAIN:MOV SP , #60H ; 設(shè)堆棧指針設(shè)堆棧指針 MOV B, #0A

26、H ; 設(shè)循環(huán)次數(shù)設(shè)循環(huán)次數(shù) MOV TMOD, #01H ; 設(shè)置設(shè)置T0工作于模式工作于模式1 MOV TL0, #0B0H; 裝入計數(shù)值低裝入計數(shù)值低8位位 MOV TH0, #3CH; 裝入計數(shù)值高裝入計數(shù)值高8位位 SETB TR0; 啟動定時器啟動定時器T0 SETB ET0; 允許允許T0中斷中斷 SETB EA; 允許允許CPU中斷中斷 SJMP ; 等待中斷等待中斷 中斷服務(wù)程序:中斷服務(wù)程序: SERVE:MOV TL0, #0B0H MOV TH0, #3CH; 重新賦計數(shù)值重新賦計數(shù)值 DJNZ B, LOOP CLR TR0 ; 1s定時到,定時到, 停止停止T0工作

27、工作 LOOP: RETI ; 中斷返回中斷返回 END 32 5.3 串行接口串行接口 5.3.1 串行接口的功能與結(jié)構(gòu)串行接口的功能與結(jié)構(gòu) 1. 串行接口的功能串行接口的功能 89C51單片機中的串行接口是一個全雙工串行通信接口,單片機中的串行接口是一個全雙工串行通信接口, 能同時發(fā)送、能同時發(fā)送、 接收數(shù)據(jù),接收數(shù)據(jù), 也能用作同步移位寄存器。也能用作同步移位寄存器。 SM0SM1 工作方式工作方式功功 能能波特率波特率 00方式方式 0 8位同步移位寄存器方式位同步移位寄存器方式fOSC/12 01方式方式 1 8位通用異步接收器位通用異步接收器/發(fā)送器發(fā)送器可變可變 10方式方式 2

28、 9位通用異步接收器位通用異步接收器/發(fā)送器發(fā)送器fOSC/32或或fOSC/64 11方式方式 3 9位通用異步接收器位通用異步接收器/發(fā)送器發(fā)送器可變可變 33 34 2. 串行接口結(jié)構(gòu)串行接口結(jié)構(gòu) 35 5.3.2 串行接口控制串行接口控制 1.數(shù)據(jù)緩沖器數(shù)據(jù)緩沖器SBUF 發(fā)送發(fā)送SBUFSBUF和接收和接收SBUFSBUF共用一個地址共用一個地址99H99H。 1 1)發(fā)送)發(fā)送SBUFSBUF存放待發(fā)送的存放待發(fā)送的8 8位數(shù)據(jù),寫入位數(shù)據(jù),寫入SBUFSBUF將同時啟動發(fā)送。將同時啟動發(fā)送。 發(fā)送指令:發(fā)送指令:MOV SBUF,A 2 2)接收)接收SBUFSBUF存放已接收成

29、功的存放已接收成功的8 8位數(shù)據(jù),供位數(shù)據(jù),供CPUCPU讀取。讀取。 讀取串行口接收數(shù)據(jù)指令:讀取串行口接收數(shù)據(jù)指令: MOV A,SBUF 36 3.節(jié)電控制寄存器節(jié)電控制寄存器PCON(87H) SMOD(PCON.7):波特率加倍控制位。:波特率加倍控制位。 SMOD=1,波特率加倍,波特率加倍, SMOD=0,則不加倍,則不加倍。 2.串行口控制串行口控制/狀態(tài)寄存器狀態(tài)寄存器SCON(98H) SM0SM0,SM1SM1:選擇串行口選擇串行口4 4種工作方式。種工作方式。 SM2SM2:多機控制位,用于多機通訊。多機控制位,用于多機通訊。 RENREN:允許接收控制位,允許接收控制

30、位,REN=1REN=1,允許接收;,允許接收;REN=0REN=0,禁止接收。,禁止接收。 TB8TB8:發(fā)送的第發(fā)送的第9 9位數(shù)據(jù)位,可用作校驗位和地址位數(shù)據(jù)位,可用作校驗位和地址/ /數(shù)據(jù)標(biāo)識位數(shù)據(jù)標(biāo)識位 RB8RB8:接收的第接收的第9 9位數(shù)據(jù)位或停止位位數(shù)據(jù)位或停止位 TITI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1TI=1,必須軟件清零,必須軟件清零 RIRI:接收中斷標(biāo)志,接收一幀結(jié)束,接收中斷標(biāo)志,接收一幀結(jié)束,RI=1RI=1,必須軟件清零,必須軟件清零 37 5.3.3 串行接口的工作方式串行接口的工作方式 1. 方式方式0:同步移位寄存器方式

31、。用于擴展并行同步移位寄存器方式。用于擴展并行I/I/O接口。接口。 A.A.一幀一幀8 8位,無起始位和停止位。位,無起始位和停止位。 B.B.RXDRXD:數(shù)據(jù)輸入:數(shù)據(jù)輸入/ /輸出端。輸出端。 TXDTXD:同步脈沖輸出端,每個脈沖對應(yīng)一個數(shù)據(jù)位。:同步脈沖輸出端,每個脈沖對應(yīng)一個數(shù)據(jù)位。 C.C.波特率波特率Baud = fosc/12Baud = fosc/12 如:如: fosc=12MHzfosc=12MHz, Baud=1MHzBaud=1MHz,每位數(shù)據(jù)占,每位數(shù)據(jù)占1 1 s s。 D.D.發(fā)送過程:寫入發(fā)送過程:寫入SBUFSBUF,啟動發(fā)送,一幀發(fā)送結(jié)束,啟動發(fā)送,一

32、幀發(fā)送結(jié)束,TI=1TI=1。 接收過程:接收過程:REN=1REN=1且且RI=0RI=0,啟動接收,一幀接收完畢,啟動接收,一幀接收完畢,RI=1RI=1 發(fā)送時序 發(fā)送時序 寫入寫入 SBUF RXD輸出輸出 TXD TI D0D1D2D3D4D5D6D7 寫寫REN=1 RI=0 RXD輸入輸入 RI 接收時序 接收時序 (a) (b) 38 例:使用例:使用74HC164的并行輸出端接的并行輸出端接8支發(fā)光二極管,支發(fā)光二極管, 利用它利用它 的串入并出功能,的串入并出功能, 將發(fā)光二極管從左向右依次點亮。將發(fā)光二極管從左向右依次點亮。 MOV SCON, # 00H ; 串行口方式

33、串行口方式0工作工作 CLR ES ; 禁止串行中斷禁止串行中斷 MOV A, #80H ; 發(fā)光管從左邊亮起發(fā)光管從左邊亮起 DELR:CLR P1.0 ; 關(guān)閉并行輸出關(guān)閉并行輸出 MOV SBUF, A ; 串行輸出串行輸出 JNB TI, ; 狀態(tài)維持狀態(tài)維持 SETB P1.0 ; 開啟并行輸出開啟并行輸出 ACALL DELAY ; 狀態(tài)維持狀態(tài)維持 CLR TI ; 清發(fā)送中斷標(biāo)志清發(fā)送中斷標(biāo)志 RR A ; 發(fā)光組合中斷標(biāo)志發(fā)光組合中斷標(biāo)志 AJMP DELR ; 繼續(xù)繼續(xù) 39 2. 方式方式1:8位數(shù)據(jù)異步通訊方式位數(shù)據(jù)異步通訊方式 A.一幀一幀10位:位:8位數(shù)據(jù)位,位數(shù)

34、據(jù)位,1個起始位個起始位(0),1個停止位個停止位(1)。 B.RXD:接收數(shù)據(jù)端。:接收數(shù)據(jù)端。 TXD:發(fā)送數(shù)據(jù)端。:發(fā)送數(shù)據(jù)端。 C.波特率:用波特率:用T1作為波特率發(fā)生器,作為波特率發(fā)生器,Baud=(2SMOD/32)T1溢出溢出 率。率。 D.發(fā)送:寫入發(fā)送:寫入SBUF,同時啟動發(fā)送,一幀發(fā)送結(jié)束,同時啟動發(fā)送,一幀發(fā)送結(jié)束,TI=1。 接收:接收:REN=1,允許接收。接收完一幀,若,允許接收。接收完一幀,若RI=0且停止位為且停止位為1 (或或SM2=0),將接收數(shù)據(jù)裝入,將接收數(shù)據(jù)裝入SBUF,停止位裝入,停止位裝入RB8,并使,并使RI=1; 否則丟棄接收數(shù)據(jù),不置位否

35、則丟棄接收數(shù)據(jù),不置位RI。 當(dāng)當(dāng)REN=1,CPU開始采樣開始采樣RXD引腳負跳變信號,若出現(xiàn)負跳變,引腳負跳變信號,若出現(xiàn)負跳變, 才進入數(shù)據(jù)接收狀態(tài),先檢測起始位,若第一位為才進入數(shù)據(jù)接收狀態(tài),先檢測起始位,若第一位為0,繼續(xù)接收其,繼續(xù)接收其 余位;否則,停止接收,重新采樣負跳變。余位;否則,停止接收,重新采樣負跳變。 數(shù)據(jù)采樣速率為波特率數(shù)據(jù)采樣速率為波特率16倍頻,在數(shù)據(jù)位中間,用第倍頻,在數(shù)據(jù)位中間,用第7、8、9個個 脈沖采樣脈沖采樣3次數(shù)據(jù)位,并次數(shù)據(jù)位,并3中取中取2保留采樣值。保留采樣值。 40 41 3. 方式方式2和方式和方式3:9位數(shù)據(jù)異步通訊方式位數(shù)據(jù)異步通訊方式

36、 A.一幀為一幀為11位:位:9位數(shù)據(jù)位,位數(shù)據(jù)位,1個起始位個起始位(0),1個停止位個停止位(1)。 第第9位數(shù)據(jù)位在位數(shù)據(jù)位在TB8/RB8中,常用作校驗位和多機通訊標(biāo)識位。中,常用作校驗位和多機通訊標(biāo)識位。 B.RXD:接收數(shù)據(jù)端,:接收數(shù)據(jù)端,TXD:發(fā)送數(shù)據(jù)端。:發(fā)送數(shù)據(jù)端。 C.波特率:波特率: 方式方式2:Baud=(2SMOD/64)fosc 。 方式方式3:Baud=(2SMOD/32)T1溢出率溢出率 。 D.發(fā)送:先裝入發(fā)送:先裝入TB8,寫入,寫入SBUF并啟動發(fā)送,發(fā)送結(jié)束,并啟動發(fā)送,發(fā)送結(jié)束,TI=1 接收:接收:REN=1,允許接收。接收完一幀,若,允許接收。

37、接收完一幀,若RI=0且第且第9位為位為1 (或或SM2=0),將接收數(shù)據(jù)裝入接收,將接收數(shù)據(jù)裝入接收SBUF,第,第9位裝入位裝入RB8,使,使RI=1; 否則丟棄接收數(shù)據(jù),不置位否則丟棄接收數(shù)據(jù),不置位RI。 42 43 4.計算波特率計算波特率 方式方式0為固定波特率:為固定波特率:Baud=fosc/12 方式方式2可選兩種波特率:可選兩種波特率: Baud=(2SMOD /64)fosc 方式方式1、3為可變波特率,用為可變波特率,用T1作波特率發(fā)生器。作波特率發(fā)生器。 Baud=(2SMOD/32)T1溢出率溢出率 T1為方式為方式2的時間常數(shù):的時間常數(shù): X = 28 - t/

38、T 溢出時間:溢出時間: t= (28 -X)T = (28 -X)12/ fosc T1溢出率溢出率=1/t= fosc /12(28 -X) 波特率波特率Baud=(2SMOD /32)fosc/12(28-X) 串行口方式串行口方式1、3,根據(jù)波特率選擇,根據(jù)波特率選擇T1工作方式,計算時間常數(shù)工作方式,計算時間常數(shù) T1選方式選方式2: TL1=TH1=X= 28-fosc/122SMOD/(32B) T1選方式選方式1用于低波特率,需考慮用于低波特率,需考慮T1重裝時間常數(shù)時間。重裝時間常數(shù)時間。 44 5.3.4 串行口的應(yīng)用串行口的應(yīng)用 串行口初始化編程格式:串行口初始化編程格式

39、: SIO:MOV SCON,#控制狀態(tài)字;寫方式字且控制狀態(tài)字;寫方式字且TI=RI=0 (MOV PCON,#80H) ;波特率加倍;波特率加倍 ( MOV TMOD,#20H ) ;T1作波特率發(fā)生器作波特率發(fā)生器 ( MOV TH1,#X ) ;選定波特率;選定波特率 ( MOV TL1,#X ) ( SETB TR1) ( SETB EA) ;開串行口中斷;開串行口中斷 ( SETB ES) 45 發(fā)送程序:先發(fā)送一個字符,等待發(fā)送程序:先發(fā)送一個字符,等待TI=1TI=1后再發(fā)送下一個字符。后再發(fā)送下一個字符。 1.1.查詢方式:查詢方式: TRAM:MOV A,R0 ;取數(shù)據(jù);取數(shù)據(jù) MOV SBUF,A ;發(fā)送一個字符;發(fā)送一個字符 WAIT:JBCTI,NEXT ;等待發(fā)送結(jié)束;等待發(fā)送結(jié)束 SJMP WAIT NEXT:INCR0 ;準備下一次發(fā)送;準備下一次發(fā)送 SJMP TRAM 2.中斷方式:中斷方式: ORG 0023H ;串行口中斷入口;串行口中斷入口 AJMP SINT MAIN: ;初始化編程;初始化編程 TRAM: MOV A,R0 ;取數(shù)據(jù);取數(shù)據(jù) MOV SBUF,A ;發(fā)送第一個字符;發(fā)送第一個字符

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論