微機控制系統(tǒng)與應用4_第1頁
微機控制系統(tǒng)與應用4_第2頁
微機控制系統(tǒng)與應用4_第3頁
微機控制系統(tǒng)與應用4_第4頁
微機控制系統(tǒng)與應用4_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第四章 中斷、定時/計數、串行口4.1 MCS-514.1 MCS-51單片機的中斷系統(tǒng)及中斷編程單片機的中斷系統(tǒng)及中斷編程4.2 4.2 定時定時/ /計數器及其編程計數器及其編程4.3 4.3 串行口及其編程串行口及其編程14.1 中斷系統(tǒng)及中斷編程4.1.1 CPU4.1.1 CPU與與I/OI/O設備間數據傳送的控制方法設備間數據傳送的控制方法 (同外設交互的協(xié)調方式)(同外設交互的協(xié)調方式)n程序控制方式程序控制方式n中斷方式中斷方式nDMADMA方式方式(Direct Memory Access)(Direct Memory Access)24.1 中斷系統(tǒng)及中斷編程3一、一、 程

2、序控制方式程序控制方式 在在CPUCPU的控制下,通過執(zhí)行程序指令進行的數據傳送方式。又分的控制下,通過執(zhí)行程序指令進行的數據傳送方式。又分為為“無條件傳送無條件傳送”和和“程序查詢傳送程序查詢傳送”兩種方式。兩種方式。n無條件傳送方式:無條件傳送方式:在假定外圍設備在假定外圍設備(Peripheral Device)(Peripheral Device)已經準備已經準備好的情況下,直接利用輸入好的情況下,直接利用輸入/ /輸出指令與外圍設備傳送數據,而不輸出指令與外圍設備傳送數據,而不去檢測外設的工作狀態(tài)。去檢測外設的工作狀態(tài)。n優(yōu)點優(yōu)點:控制程序簡單:控制程序簡單n缺點缺點:數據傳送不可靠

3、:數據傳送不可靠n程序查詢傳送方式程序查詢傳送方式( (也稱也稱“條件傳送條件傳送”方式方式) ):CPUCPU通過執(zhí)行程序不通過執(zhí)行程序不斷讀取并檢測外設的狀態(tài),只有在外設確實已準備就緒的情況下,斷讀取并檢測外設的狀態(tài),只有在外設確實已準備就緒的情況下,才進行數據傳送;否則,還要繼續(xù)不斷地查詢外設的狀態(tài)。才進行數據傳送;否則,還要繼續(xù)不斷地查詢外設的狀態(tài)。4.1 中斷系統(tǒng)及中斷編程n優(yōu)點優(yōu)點:比無條件傳送方式要準確可靠:比無條件傳送方式要準確可靠n缺點缺點: 1.CPU1.CPU要不斷查詢外設的狀態(tài),占用了大量要不斷查詢外設的狀態(tài),占用了大量CPUCPU時間,時間,而真正用于數據傳送的時間卻

4、很少,即而真正用于數據傳送的時間卻很少,即CPUCPU的工作效率的工作效率很低;很低;2.2.也很難滿足實時系統(tǒng)對也很難滿足實時系統(tǒng)對I/OI/O處理的要求。處理的要求。44.1 中斷系統(tǒng)及中斷編程二、二、 中斷中斷指指CPUCPU暫時停止正在執(zhí)行的程序,轉向執(zhí)行請求中斷的設備或事暫時停止正在執(zhí)行的程序,轉向執(zhí)行請求中斷的設備或事件(通常需要立即響應)的響應程序,處理完后再返回到原來暫件(通常需要立即響應)的響應程序,處理完后再返回到原來暫停的程序繼續(xù)執(zhí)行。停的程序繼續(xù)執(zhí)行。正在看書正在看書電話鈴響電話鈴響接電話接電話繼續(xù)看書繼續(xù)看書執(zhí)行程序執(zhí)行程序事件發(fā)生事件發(fā)生事件處理事件處理繼續(xù)執(zhí)行程序

5、繼續(xù)執(zhí)行程序響應并處理中斷響應并處理中斷中斷請求、要求響應中斷請求、要求響應實際場景實際場景計算機計算機中斷返回中斷返回54.1 中斷系統(tǒng)及中斷編程n優(yōu)點優(yōu)點:1.1.提高了的工作效率提高了的工作效率2.2.能能滿足實時系統(tǒng)對滿足實時系統(tǒng)對I/OI/O處理的要求處理的要求n缺點缺點:在傳送的數據量大時,中斷方式也不能滿足系在傳送的數據量大時,中斷方式也不能滿足系統(tǒng)高效率的要求統(tǒng)高效率的要求64.1 中斷系統(tǒng)及中斷編程7三、三、 存儲器直接訪問方式存儲器直接訪問方式DMADMA(Direct Memory AccessDirect Memory Access) 一種高速的數據傳輸操作,允許在外部

6、設備和存儲一種高速的數據傳輸操作,允許在外部設備和存儲器之間直接讀寫數據,不通過,也不需要器之間直接讀寫數據,不通過,也不需要干預。整個數據傳輸操作在一個稱為干預。整個數據傳輸操作在一個稱為“控制器控制器”的控制下進行的。除了在數據傳輸開始和結束時的控制下進行的。除了在數據傳輸開始和結束時作一點處理外,在傳輸過程中可以進行其它的工作一點處理外,在傳輸過程中可以進行其它的工作。這樣,在大部分時間里,和輸入輸出都處在作。這樣,在大部分時間里,和輸入輸出都處在并行操作。并行操作。 中斷的主要作用:中斷的主要作用: (1)(1)實現實現CPUCPU與外部設備的速度配合與外部設備的速度配合( (分時操作

7、分時操作) )。 CPUCPU需要和外部設需要和外部設備交換信息時,可先行啟動外部設備,然后又去執(zhí)行原來程序。待外備交換信息時,可先行啟動外部設備,然后又去執(zhí)行原來程序。待外部設備準備完成后,可以向部設備準備完成后,可以向CPUCPU發(fā)出中斷請求,發(fā)出中斷請求,CPUCPU的中斷服務子程的中斷服務子程序與外部設備交換信息,操作完成后,序與外部設備交換信息,操作完成后,CPUCPU再返回繼續(xù)執(zhí)行原程序。再返回繼續(xù)執(zhí)行原程序。 (2)(2)實現實時控制。借助中斷技術計算機可以及時響應和處理被控對實現實時控制。借助中斷技術計算機可以及時響應和處理被控對象的請求,確保被控對象保持在最佳狀態(tài)。象的請求,

8、確保被控對象保持在最佳狀態(tài)。 (3)(3)實現故障的及時處理。借助中斷技術可以對計算機運行中的某些實現故障的及時處理。借助中斷技術可以對計算機運行中的某些故障故障( (如斷電故障、運算出錯等如斷電故障、運算出錯等) )及時發(fā)現,并迅速自動處理。及時發(fā)現,并迅速自動處理。4.1 中斷系統(tǒng)及中斷編程84.1.2 4.1.2 中斷與中斷系統(tǒng)中斷與中斷系統(tǒng)4.1 中斷系統(tǒng)及中斷編程9中斷系統(tǒng)的功能與組成中斷系統(tǒng)的功能與組成n 功能:功能:1.1.多中斷源請求,軟件可禁止與允許每個請求。多中斷源請求,軟件可禁止與允許每個請求。2.2.中斷優(yōu)先級判別功能,響應優(yōu)先級別最高的請求。中斷優(yōu)先級判別功能,響應優(yōu)

9、先級別最高的請求。3.3.中斷嵌套功能,高級別中斷可中斷較低級別的中斷。中斷嵌套功能,高級別中斷可中斷較低級別的中斷。4.4.響應中斷后,能自動轉向中斷處理子程序,處理結束后響應中斷后,能自動轉向中斷處理子程序,處理結束后 自動返回主程序。自動返回主程序。4.1 中斷系統(tǒng)及中斷編程10n 組成:組成:1.1.處理器應有處理中斷請求的機制與相關硬件電路:接收處理器應有處理中斷請求的機制與相關硬件電路:接收 請求,響應請求,保護斷點,轉向中斷服務子程序,處理請求,響應請求,保護斷點,轉向中斷服務子程序,處理 完返回。完返回。2.2.外圍應有一個與處理器匹配的中斷控制器:管理多個中斷外圍應有一個與處

10、理器匹配的中斷控制器:管理多個中斷 源,優(yōu)先級裁決,中斷源屏蔽等功能。源,優(yōu)先級裁決,中斷源屏蔽等功能。3.3.依依處理器的結構編寫中斷處理子程序,安排相關的系統(tǒng)初處理器的結構編寫中斷處理子程序,安排相關的系統(tǒng)初 始化。始化。中斷源:中斷源:n 外部中斷請求外部中斷請求0 0(INT0INT0),由),由P3.2P3.2引腳接入引腳接入n 外部中斷請求外部中斷請求1 1(INT1INT1),由),由P3.3P3.3引腳接入引腳接入n 內部定時內部定時/ /計數器計數器0 0溢出中斷請求溢出中斷請求n 內部定時內部定時/ /計數器計數器1 1溢出中斷請求溢出中斷請求n 內部串行口發(fā)送內部串行口發(fā)

11、送/ /接收中斷請求接收中斷請求與中斷系統(tǒng)有關的與中斷系統(tǒng)有關的SFRSFR:n 定時及外部中斷控制寄存器定時及外部中斷控制寄存器TCONTCONn 串行口中斷控制寄存器串行口中斷控制寄存器SCONSCONn 中斷允許控制寄存器中斷允許控制寄存器IEIEn 中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IP IP 114.1 中斷系統(tǒng)及中斷編程4.1.3 80514.1.3 8051的中斷系統(tǒng)的中斷系統(tǒng)一、中斷系統(tǒng)的組成一、中斷系統(tǒng)的組成1 1 定時及外部中斷控制寄存器定時及外部中斷控制寄存器TCONTCON中的中斷源請求標志(可位尋址)中的中斷源請求標志(可位尋址)4.1 中斷系統(tǒng)及中斷編程表表

12、4.1 TCON 的中斷標志的中斷標志 D7 D6 D5 D4 D3 D2 D1 D08FH8DH8BH8AH89H88HTF1TF0IE1IT1IE0IT0IT0/IT1IT0/IT1:INT0/INT1INT0/INT1的觸發(fā)方式的觸發(fā)方式 (ITx)=1 (ITx)=1 下降沿觸發(fā);下降沿觸發(fā);(ITx)=0 (ITx)=0 低電平觸發(fā)。低電平觸發(fā)。IE0/IE1IE0/IE1:INT0/INT1INT0/INT1的中斷請求標志的中斷請求標志 (IEx)=1 (IEx)=1 有中斷;有中斷;(IEx)=0 (IEx)=0 無中斷。無中斷。TF0/TF1TF0/TF1:定時:定時/ /計數

13、器計數器T0/T1T0/T1的中斷請求標志的中斷請求標志 (TFx)=1 (TFx)=1 有中斷;有中斷;(TFx)=0 (TFx)=0 無中斷。無中斷。 以上以上4 4個中斷請求標志在個中斷請求標志在CPUCPU響應中斷后,由硬件自動清除。響應中斷后,由硬件自動清除。 122 2 串行口中斷控制寄存器串行口中斷控制寄存器SCONSCON中的中斷源請求標志(可位尋址)中的中斷源請求標志(可位尋址)4.1 中斷系統(tǒng)及中斷編程表表 4.2 SCON 的中斷標志的中斷標志 D7 D6 D5 D4 D3 D2 D1 D099H98HTIRIRIRI:串行口接收中斷請求標志:串行口接收中斷請求標志 (R

14、I)=1 (RI)=1 有中斷;有中斷;(RI)=0 (RI)=0 無中斷。無中斷。TITI:串行口發(fā)送中斷請求標志:串行口發(fā)送中斷請求標志 (TI)=1 (TI)=1 有中斷;有中斷;(TI)=0 (TI)=0 無中斷。無中斷。 串行口的中斷是在接收或發(fā)送完一幀信息后產生。串行口的中斷是在接收或發(fā)送完一幀信息后產生。RIRI和和TITI在在CPUCPU響應中斷后不會自動清除,必須用程序清除。響應中斷后不會自動清除,必須用程序清除。 133 3 中斷允許控制寄存器中斷允許控制寄存器IE IE (可位尋址)(可位尋址)4.1 中斷系統(tǒng)及中斷編程表表 4.3 中斷允許控制寄存器中斷允許控制寄存器

15、IE 格式格式 D7 D6 D5 D4 D3 D2 D1 D0AFHACHABHAAHA9HA8HEAESET1EX1ET0EX0EX0/EX1EX0/EX1:INT0/INT1INT0/INT1的中斷允許控制的中斷允許控制(EXx)=1 (EXx)=1 允許中斷;允許中斷;(EXx)=0 (EXx)=0 禁止中斷。禁止中斷。ET0/ET1ET0/ET1:定時:定時/ /計數器計數器T0/T1T0/T1的中斷允許控制的中斷允許控制(ETx)=1 (ETx)=1 允許中斷;允許中斷;(ETx)=0 (ETx)=0 禁止中斷。禁止中斷。ESES:串行口中斷允許控制:串行口中斷允許控制 (ES)=1

16、 (ES)=1 允許中斷;允許中斷;(ES)=0 (ES)=0 禁止中斷。禁止中斷。EAEA:中斷允許控制:中斷允許控制 (總控制)(總控制) (EA)=1 (EA)=1 允許所有中斷;允許所有中斷;(EA)=0 (EA)=0 禁止所有中斷。禁止所有中斷。144.1 中斷系統(tǒng)及中斷編程【例【例1 1】 假設某單片機系統(tǒng)允許片內定時器假設某單片機系統(tǒng)允許片內定時器/ /計數器中斷,禁止其它的計數器中斷,禁止其它的中斷。試設置中斷。試設置IEIE的值。的值。方法一:方法一:用字節(jié)操作指令用字節(jié)操作指令 MOV IEMOV IE,#8AH#8AH或或 MOV 0A8HMOV 0A8H,#8AH#8A

17、H方法二:方法二:用位操作指令用位操作指令 SETB ET0SETB ET0 SETB ET1SETB ET1 SETB EASETB EA15表表 4.3 中斷允許控制寄存器中斷允許控制寄存器 IE 格式格式 D7 D6 D5 D4 D3 D2 D1 D0AFHACHABHAAHA9HA8HEAESET1EX1ET0EX04 4 中斷優(yōu)先級別控制寄存器中斷優(yōu)先級別控制寄存器IPIP(可位尋址)(可位尋址)4.1 中斷系統(tǒng)及中斷編程PX0/PX1PX0/PX1:INT0/INT1INT0/INT1的中斷優(yōu)先級別控制的中斷優(yōu)先級別控制(PXx)=1 (PXx)=1 高優(yōu)先級;高優(yōu)先級;(PXx)

18、=0 (PXx)=0 低優(yōu)先級。低優(yōu)先級。PT0/PT1PT0/PT1:定時:定時/ /計數器計數器T0/T1T0/T1的中斷優(yōu)先級別控制的中斷優(yōu)先級別控制(PTx)=1 (PTx)=1 高優(yōu)先級;高優(yōu)先級;(PTx)=0 (PTx)=0 低優(yōu)先級。低優(yōu)先級。PSPS:串行口中斷中斷優(yōu)先級別控制:串行口中斷中斷優(yōu)先級別控制 (PS)=1 (PS)=1 高優(yōu)先級;高優(yōu)先級;(PS)=0 (PS)=0 低優(yōu)先級。低優(yōu)先級。表表 4.4 中斷優(yōu)先級別控制寄存器中斷優(yōu)先級別控制寄存器 IP 格式格式 D7 D6 D5 D4 D3 D2 D1 D0BCHBBHBAHB9HB8HPSPT1PX1PT0PX

19、0164.1 中斷系統(tǒng)及中斷編程5 5 中斷響應的優(yōu)先原則中斷響應的優(yōu)先原則 當有多個中斷源向當有多個中斷源向CPUCPU申請中斷時,申請中斷時,CPUCPU按以下優(yōu)先原則響應:按以下優(yōu)先原則響應: (1 1)低級中斷可被高級中斷所中斷,反之不能;)低級中斷可被高級中斷所中斷,反之不能; (2 2)相同級別的中斷不能再被中斷;)相同級別的中斷不能再被中斷; (3 3)相同級別的中斷同時到來時,)相同級別的中斷同時到來時,CPUCPU按其中斷入口地址的先后按其中斷入口地址的先后 次序依次響應。順序為:次序依次響應。順序為: 外部中斷請求外部中斷請求0 0(INT0INT0)0003H0003H內

20、部定時內部定時/ /計數器計數器0 0溢出中斷溢出中斷000BH000BH外部中斷請求外部中斷請求1 1(INT1INT1) 0013H 0013H 內部定時內部定時/ /計數器計數器1 1溢出中斷溢出中斷001BH001BH串行口發(fā)送串行口發(fā)送/ /接收中斷接收中斷0023H0023H1718中斷嵌套:中斷嵌套:(1 1)低優(yōu)先級狀態(tài)觸發(fā)器(不可尋址):屏蔽新的同級中斷請求低優(yōu)先級狀態(tài)觸發(fā)器(不可尋址):屏蔽新的同級中斷請求(2 2)高優(yōu)先級狀態(tài)觸發(fā)器(不可尋址):屏蔽所有新的中斷請求高優(yōu)先級狀態(tài)觸發(fā)器(不可尋址):屏蔽所有新的中斷請求4.1 中斷系統(tǒng)及中斷編程19【例【例2 2】 假設某單

21、片機系統(tǒng)片外中斷為高優(yōu)先級,片內中斷為低假設某單片機系統(tǒng)片外中斷為高優(yōu)先級,片內中斷為低優(yōu)先級。試設置優(yōu)先級。試設置IPIP的值。的值。方法一:用字節(jié)操作指令方法一:用字節(jié)操作指令 MOV IPMOV IP,#05H#05H或或 MOV 0B8HMOV 0B8H,#05H#05H方法二:用位操作指令方法二:用位操作指令 SETB PX0SETB PX0 SETB PX1 SETB PX1 CLR PS CLR PS CLR PT0 CLR PT0 CLR PT1 CLR PT1表表 4.4 中斷優(yōu)先級別控制寄存器中斷優(yōu)先級別控制寄存器 IP 格式格式 D7 D6 D5 D4 D3 D2 D1

22、D0BCHBBHBAHB9HB8HPSPT1PX1PT0PX020圖圖4.1 MCS-514.1 MCS-51中斷系統(tǒng)功能結構中斷系統(tǒng)功能結構4.1 中斷系統(tǒng)及中斷編程1. 1. 中斷響應中斷響應 中斷響應條件(中斷響應條件(6 6條)條) (1 1)有中斷請求;)有中斷請求; (2 2)CPUCPU開放中斷,即開放中斷,即EA=1 EA=1 ; (3 3)對應的中斷源允許中斷,即)對應的中斷源允許中斷,即IEIE中相應的中斷允許位為中相應的中斷允許位為1 1 ; (4 4)無同級或高級中斷正在服務;)無同級或高級中斷正在服務; (5 5)現行指令執(zhí)行結束;)現行指令執(zhí)行結束; (6 6)當前

23、執(zhí)行的不是)當前執(zhí)行的不是RETIRETI或訪問或訪問IEIE、IPIP的指令(這些指令執(zhí)行的指令(這些指令執(zhí)行完完 后必須至少再執(zhí)行一條指令)。后必須至少再執(zhí)行一條指令)。二、中斷處理過程二、中斷處理過程 中斷處理過程分為三個階段:響應、處理、返回。中斷處理過程分為三個階段:響應、處理、返回。21中斷響應操作過程中斷響應操作過程(1 1)查詢中斷源)查詢中斷源(a a)外部中斷)外部中斷0 0、1 1需要在需要在S5P2S5P2期間進行采樣,置中斷標志;期間進行采樣,置中斷標志;(b b)查詢中斷標志:在采樣機器周期的下一個周期的)查詢中斷標志:在采樣機器周期的下一個周期的S6S6進行;進行

24、;(c c)處理中斷:在查詢機器周期的下一個周期進行。)處理中斷:在查詢機器周期的下一個周期進行。(2 2)置中斷處理標志)置中斷處理標志 對不可編程的對不可編程的“高優(yōu)先級狀態(tài)觸發(fā)器高優(yōu)先級狀態(tài)觸發(fā)器”或或“低優(yōu)先級狀態(tài)觸發(fā)器低優(yōu)先級狀態(tài)觸發(fā)器”置位。置位。(3 3)轉入中斷處理部分)轉入中斷處理部分4.1 中斷系統(tǒng)及中斷編程22中斷響應時間中斷響應時間(3838個機器周期個機器周期) (1 1)基本響應時間()基本響應時間(3 3個機器周期)個機器周期)(a a)查詢中斷標志:)查詢中斷標志:1 1個機器周期;個機器周期;(b b)轉去中斷入口地址的)轉去中斷入口地址的LCALLLCALL

25、指令:指令:2 2個機器周期。個機器周期。 (2 2)額外的處理時間()額外的處理時間(0 5 0 5 個機器周期)個機器周期) MULMUL或或DIVDIV指令:指令:4 4個機器周期。個機器周期。 RETIRETI指令:指令:2 2個機器周期;個機器周期;4.1 中斷系統(tǒng)及中斷編程232. CPU2. CPU的中斷處理操作的中斷處理操作4.1 中斷系統(tǒng)及中斷編程24 當當CPUCPU響應中斷后,響應中斷后,CPUCPU自動進行以下操作響應:自動進行以下操作響應:(1 1)轉去執(zhí)行中斷服務子程序:硬件自動產生的)轉去執(zhí)行中斷服務子程序:硬件自動產生的LCALLLCALL指令指令(a a)保護

26、斷點,將當前)保護斷點,將當前PCPC值壓入堆棧值壓入堆棧 (先送低(先送低8 8位,位,再送高再送高8 8位)位) ;(b b)把相應的中斷入口地址裝入)把相應的中斷入口地址裝入PCPC;(2 2)清除可自動清除的中斷標志;)清除可自動清除的中斷標志;(3 3)開始執(zhí)行中斷服務子程序,直到執(zhí)行指令)開始執(zhí)行中斷服務子程序,直到執(zhí)行指令RETIRETI。3. 3. 中斷返回操作中斷返回操作4.1 中斷系統(tǒng)及中斷編程25 CPU CPU在中斷服務子程序中執(zhí)行完在中斷服務子程序中執(zhí)行完RETIRETI指令后,將堆棧中的指令后,將堆棧中的原原PCPC值送回值送回PCPC,返回斷點,返回斷點,繼續(xù)執(zhí)行

27、被中斷的程序。繼續(xù)執(zhí)行被中斷的程序。在中斷服務子程序的最后必須用在中斷服務子程序的最后必須用“RETI”RETI”指令。指令。 RETIRETI指令作用有二:指令作用有二: (1 1)子程序返回;)子程序返回; (2 2)清除中斷處理標志,即給)清除中斷處理標志,即給“優(yōu)先級狀態(tài)觸發(fā)器優(yōu)先級狀態(tài)觸發(fā)器”清清0 0。ORG 0000HORG 0000HLJMP MAIN LJMP MAIN ;主程序入口;主程序入口ORG 0003HORG 0003HLJMP INT0 LJMP INT0 ;外部中斷;外部中斷0 0中斷服務程序入口中斷服務程序入口ORG 000BHORG 000BHLJMP TI

28、ME0LJMP TIME0;定時;定時/ /計數器計數器0 0中斷服務程序入口中斷服務程序入口ORG 0013HORG 0013HLJMP INT1 LJMP INT1 ; 外部中斷外部中斷1 1中斷服務程序入口中斷服務程序入口ORG 001BHORG 001BHLJMP TIME1LJMP TIME1;定時;定時/ /計數計數1 1中斷服務程序入口中斷服務程序入口ORG 0023HORG 0023HLJMP SCOMLJMP SCOM; 串行通信中斷服務程序入口地址串行通信中斷服務程序入口地址 ORG 0030H ORG 0030H MAIN: MAIN: 264.1 中斷系統(tǒng)及中斷編程4.

29、1.4 4.1.4 中斷編程中斷編程含有中斷服務程序的程序結構含有中斷服務程序的程序結構274.1 中斷系統(tǒng)及中斷編程含有中斷服務程序的程序結構含有中斷服務程序的程序結構 ORG XXXXH ORG XXXXHINT0: INT0: ;外部中斷;外部中斷0 0服務程序服務程序 RETIRETITIME0:TIME0:;定時;定時/ /計數器計數器0 0服務程序服務程序 RETIRETIINT1: INT1: ;外部中斷;外部中斷1 1服務程序服務程序 RETIRETITIME1:TIME1:;定時;定時/ /計數器計數器1 1服務程序服務程序 RETIRETISCOM: SCOM: ;串行通信

30、中斷服務程序;串行通信中斷服務程序 RETIRETIORG 0030HORG 0030HMAIN:MAIN: LCALL INITLCALL INITLOOP:LOOP: LCALL SUB1LCALL SUB1LCALL SUBnLCALL SUBnLJMP LOOPLJMP LOOPORG XXXXHORG XXXXHINIT: INIT: ;初始化操作;初始化操作RETRETSUB1:SUB1: ;子程序;子程序1 1RETRETSUBn:SUBn: ;子程序;子程序n nRETRET284.1 中斷系統(tǒng)及中斷編程主程序的編程:主程序的編程:(1 1)初始化操作,重置)初始化操作,重置

31、堆棧指針堆棧指針SPSP,設置中,設置中 斷觸發(fā)方式、優(yōu)先級斷觸發(fā)方式、優(yōu)先級 別,開中斷;別,開中斷;(2 2)調用各子程序;)調用各子程序;(3 3)循環(huán)等待中斷源的)循環(huán)等待中斷源的 請求。請求。294.1 中斷系統(tǒng)及中斷編程 中斷服務子程序的編程中斷服務子程序的編程 :(1 1)保護現場()保護現場(ACCACC、 PSWPSW、DPTRDPTR、RnRn等等 重要寄存器);重要寄存器);(2 2)清除必須由程序清)清除必須由程序清 除的中斷標志(除的中斷標志(RIRI、 TITI););(3 3)執(zhí)行其他操作)執(zhí)行其他操作(4 4)恢復現場,返回主)恢復現場,返回主 程序程序4.1

32、中斷系統(tǒng)及中斷編程30編寫中斷服務子程序應注意的幾點:編寫中斷服務子程序應注意的幾點: (1 1)中斷服務子程序入口處的處理:)中斷服務子程序入口處的處理:視需要確定是否保護現場;及視需要確定是否保護現場;及時清除那些不能自動清除的中斷標志時清除那些不能自動清除的中斷標志 (2 2)程序中可以禁止高級中斷;)程序中可以禁止高級中斷; (3 3)在保護和恢復現場時可關閉)在保護和恢復現場時可關閉CPUCPU中斷,以免造成混亂。中斷,以免造成混亂。 (4 4)中斷服務子程序中的)中斷服務子程序中的“PUSH”PUSH”與與“POP”POP”指令必須成對使用指令必須成對使用 (5 5)主程序與中斷服

33、務程序間的參數傳遞方法:)主程序與中斷服務程序間的參數傳遞方法:a. a. 寄存器;寄存器;b. b. 存儲單元;存儲單元;c. c. 堆棧。堆棧。4.1 中斷系統(tǒng)及中斷編程 例例33:外部中斷外部中斷INT0INT0的中斷編程。的中斷編程。主程序:主程序:ORG 0000HORG 0000HAJMP MAIN AJMP MAIN ;主程序入口;主程序入口ORG 0003HORG 0003HAJMP INTO AJMP INTO ;中斷服務子程序入口;中斷服務子程序入口ORG 0030HORG 0030HMAIN:MAIN: MOV SP, #5FHMOV SP, #5FH;重置堆棧指針;重置

34、堆棧指針SETB IT0 SETB IT0 ;下降沿觸發(fā);下降沿觸發(fā)SETB PX0 SETB PX0 ;高優(yōu)先級;高優(yōu)先級SETB EX0SETB EX0;允許外部中斷;允許外部中斷0 0中斷中斷SETB EASETB EA;開中斷;開中斷LOOP:LOOP: AJMP LOOP AJMP LOOP ;循環(huán)等待;循環(huán)等待31子程序:子程序:ORG 1000HORG 1000HINT0:INT0:PUSH PSW PUSH PSW ;保護;保護PSWPSWPUSH A PUSH A ;保護;保護ACCACCPUSH DPH PUSH DPH ;保護;保護DPTRDPTRPUSH DPL PUS

35、H DPL MOV PSW,#08HMOV PSW,#08H;切換;切換RnRn;其他操作;其他操作POP DPLPOP DPL ;恢復;恢復DPTRDPTRPOP DPH POP DPH POP A POP A ;恢復;恢復ACCACCPOP PSW POP PSW ;恢復;恢復PSWPSWRETIRETI4.1 中斷系統(tǒng)及中斷編程3233【例【例4 4】 如右圖所示,如右圖所示,將將P1P1口的口的P1.4P1.7P1.4P1.7作為作為輸入位,輸入位, P1.0P1.3P1.0P1.3作為作為輸出位。要求利用輸出位。要求利用80518051將開關所設的數據讀入將開關所設的數據讀入單片機,

36、并依次通過單片機,并依次通過P1.0P1.3P1.0P1.3輸出,驅動發(fā)輸出,驅動發(fā)光二極管,以檢查光二極管,以檢查P1.4P1.4P1.7P1.7輸入的電平情況輸入的電平情況( (高電平高電平LEDLED亮亮) )。現要?,F要求采用中斷觸發(fā)方式求采用中斷觸發(fā)方式, , 每每中斷一次完成一次操作中斷一次完成一次操作。34程序如下:程序如下: ORG 0000HORG 0000H AJMP MAIN AJMP MAIN ORG 0003H ORG 0003H AJMP INTER AJMP INTER ORG 0030H ORG 0030HMAINMAIN: MOV SP, #5FHMOV SP

37、, #5FH SETB EX0 SETB EX0 SETB IT0 SETB IT0 SETB EA SETB EAHEREHERE: SJMP HERESJMP HERE 中斷服務子程序:中斷服務子程序:(輸入、顯示)(輸入、顯示) ORG 0200HORG 0200HINTERINTER:MOV P1MOV P1,#0F0H#0F0H MOV A MOV A,P1P1 SWAP A SWAP A MOV P1 MOV P1,A A RETI RETI 4.1 中斷系統(tǒng)及中斷編程4.1 中斷系統(tǒng)及中斷編程354.1.5 4.1.5 外部中斷擴展方法外部中斷擴展方法 1. 1. 利用定時器擴展

38、外部中斷源利用定時器擴展外部中斷源 2. 2. 中斷加查詢擴展外部中斷源中斷加查詢擴展外部中斷源 中斷加查詢擴展外部中斷源中斷加查詢擴展外部中斷源 電路及工作原理:電路及工作原理: 各個外中斷經過各個外中斷經過“線與線與” 接入到接入到INT0INT0或或INT1INT1上,上, 下跳沿產生中斷請求。下跳沿產生中斷請求。 P1.0P1.3P1.0P1.3用于查詢。用于查詢。4.1 中斷系統(tǒng)及中斷編程36中斷程序入口及主程序:中斷程序入口及主程序: ORG 0000HORG 0000HSTARTSTART:AJMP MAINAJMP MAIN ORG 0003H ORG 0003H LJMP I

39、NTRP LJMP INTRP : MAINMAIN: MOV SP, #5FHMOV SP, #5FH SETB EX0SETB EX0 SETB IT0 SETB IT0 SETB EA SETB EAHEREHERE: SJMP HERESJMP HERE37中斷服務程序的查詢部分中斷服務程序的查詢部分 設設4 4個裝置的中斷優(yōu)先級是個裝置的中斷優(yōu)先級是裝置裝置1 1裝置裝置4 4, , 其程序為:其程序為:INTRPINTRP:CLR EA CLR EA ;關中斷;關中斷 PUSH PSWPUSH PSW PUSH A PUSH A SETB EA SETB EA JB P1.0, D

40、V1 JB P1.0, DV1 JB P1.1, DV2 JB P1.1, DV2 JB P1.2, DV3 JB P1.2, DV3 JB P1.3, DV4 JB P1.3, DV4EXIT: CLR EAEXIT: CLR EA POP A POP A POP PSW POP PSW SETB EA SETB EA RETI RETI各裝置的中斷服務程序部分:各裝置的中斷服務程序部分:DV1DV1: ( (裝置裝置1 1的中斷服務程序的中斷服務程序) ) : LJMP EXITLJMP EXITDV2DV2: ( (裝置裝置2 2的中斷服務程序的中斷服務程序) ) : LJMP EXIT

41、LJMP EXITDV3DV3: ( (裝置裝置3 3的中斷服務程序的中斷服務程序) ) : LJMP EXITLJMP EXITDV4DV4: ( (裝置裝置4 4的中斷服務程序的中斷服務程序) ) : LJMP EXITLJMP EXIT4.1 中斷系統(tǒng)及中斷編程38【例【例5 5】 如右圖所如右圖所示的中斷電路可實現系示的中斷電路可實現系統(tǒng)的故障顯示。當系統(tǒng)統(tǒng)的故障顯示。當系統(tǒng)的各部分正常工作時,的各部分正常工作時,4 4個故障源的輸入均為個故障源的輸入均為低電平,顯示燈全不低電平,顯示燈全不亮。當有某個部分出現亮。當有某個部分出現故障時,則相應的輸入故障時,則相應的輸入線由低電平變?yōu)楦?/p>

42、電平線由低電平變?yōu)楦唠娖剑鄳陌l(fā)光二極管點,相應的發(fā)光二極管點亮。亮。4.1 中斷系統(tǒng)及中斷編程39程序如下:程序如下: ORG 0000HORG 0000H AJMP MAIN AJMP MAIN ORG 0003H ORG 0003H AJMP INTER AJMP INTER ORG 0030H ORG 0030HMAINMAIN: MOV SP, #5FHMOV SP, #5FH SETB EX0SETB EX0 SETB IT0 SETB IT0 SETB EA SETB EAHEREHERE: SJMP HERESJMP HERE 中斷服務子程序:中斷服務子程序: ORG 010

43、0HORG 0100HINTERINTER:JNB P1.0, L1JNB P1.0, L1 SETB P1.1 SETB P1.1L1: JNB P1.2, L2L1: JNB P1.2, L2 SETB P1.3 SETB P1.3L2: JNB P1.4, L3L2: JNB P1.4, L3 SETB P1.5 SETB P1.5L3: JNB P1.6, L4L3: JNB P1.6, L4 SETB P1.7 SETB P1.7L4: RETIL4: RETI 4.2 定時/計數器及其編程4.2.1 4.2.1 定時定時/ /計數器的結構及工作原理計數器的結構及工作原理40 MCS

44、-51 MCS-51單片機片內有兩個單片機片內有兩個1616位的定時位的定時/ /計數器,定時器計數器,定時器T0T0和定和定時器時器T1T1。它們可以通過編程設置為定時器或計數器使用,為加。它們可以通過編程設置為定時器或計數器使用,為加1 1計計數器,可用來實現定時控制、延時、脈沖信號參數測量以及對外部數器,可用來實現定時控制、延時、脈沖信號參數測量以及對外部事件的計數及檢測。定時器事件的計數及檢測。定時器/ /計數器的結構如圖計數器的結構如圖4.24.2所示。所示。定時器定時器/ /計數器的結構框圖計數器的結構框圖41 作為定時器用時的計時速度:作為定時器用時的計時速度:一個機器周期計數器

45、加一個機器周期計數器加1 1,直至計滿溢出。例如晶振為,直至計滿溢出。例如晶振為12MHz12MHz的的單片機,一個機器周期為單片機,一個機器周期為1s1s,其計數頻率為振蕩頻率的,其計數頻率為振蕩頻率的1/12 1/12 。作為計數器用時的計數速度:作為計數器用時的計數速度:每兩個機器周期計數器加每兩個機器周期計數器加1 1,計數頻率最高為振蕩頻率的,計數頻率最高為振蕩頻率的1/241/24。在在S1P2S1P2對計數輸入引腳對計數輸入引腳T0T0、T1T1進行采樣,進行采樣,下降沿計數下降沿計數。說明:說明: 定時器定時器/ /計數器在工計數器在工作期間不占用作期間不占用CPUCPU的時間

46、。的時間。4.2 定時/計數器及其編程4.2 定時/計數器及其編程4.2.2 4.2.2 定時定時/ /計數器的控制寄存器和方式控制寄存器計數器的控制寄存器和方式控制寄存器表表 4.5 定時定時/計數器控制寄存器計數器控制寄存器 TCON 的格式的格式 D7 D6 D5 D4 D3 D2 D1 D08FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT0TCONTCON:定時定時/ /計數器控制寄存器,可按位尋址計數器控制寄存器,可按位尋址TF0/TF1TF0/TF1:定時:定時/ /計數器計數器T0/T1T0/T1的中斷請求標志的中斷請求標志 (TFx

47、)=1 (TFx)=1有中斷;有中斷;(TFx)=0 (TFx)=0 無中斷。無中斷。TR0/TR1TR0/TR1:定時:定時/ /計數器計數器T0/T1T0/T1的運行控制位的運行控制位 (TRx)=1 (TRx)=1 開啟定時開啟定時/ /計數,計數,(TRx)=0 (TRx)=0 關閉定時關閉定時/ /計數。計數。424.2 定時/計數器及其編程TMODTMOD:定時定時/ /計數器方式控制寄存器(不能位尋址)計數器方式控制寄存器(不能位尋址)M1/M0M1/M0:定時:定時/ /計數器計數器T0/T1T0/T1的工作方式選擇的工作方式選擇 00 = 00 = 方式方式0 0,1313位

48、定時位定時/ /計數器計數器 01 = 01 = 方式方式1 1,1616位定時位定時/ /計數器計數器 10 = 10 = 方式方式2 2,可自動再裝入的,可自動再裝入的8 8位定時位定時/ /計數器計數器 11 = 11 = 方式方式3 3,把,把T0T0分成分成2 2個個8 8位定時位定時/ /計數器計數器C/TC/T:定時:定時/ /計數器選擇計數器選擇 (C/T)=1 (C/T)=1 計數;計數;(C/T)=0 (C/T)=0 定時。定時。GATEGATE:輔助運行控制位,:輔助運行控制位, (GATE)=0 (GATE)=0時時 啟停只受啟停只受TRxTRx控制;控制;(GATE)

49、=1(GATE)=1時時 啟停同時受啟停同時受TRxTRx和和INTx INTx 的控制的控制 。4344定時定時/ /計數器的四種工作模式稱為:模式計數器的四種工作模式稱為:模式0 0、模式、模式1 1、模式模式2 2、模式、模式3 3,由特殊功能寄存器,由特殊功能寄存器TMODTMOD確定。確定。主要討論各種工作模式的工作原理、特點和應用。主要討論各種工作模式的工作原理、特點和應用。4.2.3 4.2.3 定時定時/ /計數器的工作模式計數器的工作模式4.2 定時/計數器及其編程 模式模式00:M1M0=00M1M0=00,1313位定時位定時/ /計數器。計數器。模式模式0 0工作時的構

50、成:工作時的構成: (1 1)運行)運行控制部分控制部分;(;(2 2)定時)定時/ /計數計數信號源信號源; (3 3)1313位位計數器計數器; (4 4)溢出標志溢出標志。4.2 定時/計數器及其編程4546特點:特點:(1 1)可定時()可定時(C/T=0C/T=0)、可計數()、可計數(C/T=1C/T=1) ;(2 2)1313位方式(位方式(TL0/TL1TL0/TL1的低的低5 5位和位和TH0/TH1TH0/TH1的的8 8位);位);(3 3)INT0INT0、INT1INT1是定時器是定時器/ /計數器計數器T0T0、T1T1的外部門,的外部門, GATE=1GATE=1

51、允許使用外部門(允許使用外部門(TR0/TR1TR0/TR1應置應置1 1), , 此時用外部門控制運行;此時用外部門控制運行; GATE=0GATE=0禁止外部門,此時用禁止外部門,此時用TR0/TR1TR0/TR1控制運行;控制運行;(4 4)定時時間)定時時間t t、計數值、計數值N N和計數初值和計數初值X X的關系的關系 :N = 2N = 21313- - 初值初值X Xt =Nt =N* *振蕩周期振蕩周期* *12 =N12 =N* *機器周期機器周期TcyTcyt = t = (2 21313- -初值初值X X)* *振蕩周期振蕩周期* *1212 = = (2 21313

52、- -初值初值X X)* *機器周期機器周期TcyTcy最大計數值為:最大計數值為: 2 21313 = = 819281924.2 定時/計數器及其編程47應用舉例應用舉例: :【例【例1 1】 設定時器設定時器T0T0選擇工作模式選擇工作模式0 0,定時時間為,定時時間為1ms1ms, osc=6MHzosc=6MHz。試確定試確定T0T0初值,計算最大定時時間初值,計算最大定時時間T T。解:解: (1 1)求)求T0T0的初值的初值X X由公式:由公式:t=(2t=(21313-T0-T0初值初值) )* *機器周期機器周期Tcy Tcy 機器周期機器周期Tcy=12Tcy=12* *

53、1/osc=12/6000000s=2s1/osc=12/6000000s=2s t=1ms=1000s t=1ms=1000s得:得: 1000=1000=( 2 21313 -X -X)* *2 2所以初值所以初值 X=8192-500=7692=1111000001100BX=8192-500=7692=1111000001100BT0T0的高的高8 8位:位:11110000B=F0H11110000B=F0HT0T0的低的低5 5位:位:01100B=0CH01100B=0CH(2 2)最大定時時間)最大定時時間T T 當當T0T0的初值的初值=0=0時為最大定時時間時為最大定時時間

54、T=T=(2 21313 -0 -0)* *2=81922=8192* *2s =16384 s =16.384ms2s =16384 s =16.384ms76927692 32 32商為高商為高8 8位,位,余數為低余數為低5 5位位4.2 定時/計數器及其編程【例【例2 2】編程實現在編程實現在P1.0P1.0引腳上輸出周期為引腳上輸出周期為2ms2ms的方波。要求:利用的方波。要求:利用T0T0的的工作模式工作模式0 0產生產生1ms1ms的定時。設單片機的晶振頻率的定時。設單片機的晶振頻率osc=12MHzosc=12MHz。解解:方法:方法:定時定時1ms1ms,對,對P1.0P1

55、.0取反,然后繼續(xù)定時取反,然后繼續(xù)定時(1 1)設置模式字)設置模式字TMOD= TMOD= * * * * * 0000B 0000B =00000000B=00H =00000000B=00H (2 2)計算初值)計算初值由公式:由公式: t=(2t=(21313-T0-T0初值初值) )* *機器周期機器周期 機器周期:機器周期:Tcy=12Tcy=12* *1/osc=12/12000000s=1s1/osc=12/12000000s=1s定時時間:定時時間:t=1ms=1000st=1ms=1000s,得:得: 1000=1000=( 2 21313 -X -X)* *1=1=(8

56、192-X8192-X)* *1 1所以初值:所以初值: X=7192=1110000011000BX=7192=1110000011000BT0T0的高的高8 8位位TH0TH0:11100000B=E0H11100000B=E0HT0T0的低的低5 5位位TL0TL0:11000B=18H11000B=18H481ms2ms71927192 32 32商為高商為高8 8位,位,余數為低余數為低5 5位位4.2 定時/計數器及其編程4.2 定時/計數器及其編程49(3 3)程序清單)程序清單方法一:中斷方式方法一:中斷方式 ORG 0000HORG 0000H LJMP MAIN LJMP

57、MAIN ORG 000BH ORG 000BH LJMP CTC0 LJMP CTC0;主程序;主程序 ORG 0030HORG 0030HMAINMAIN: MOV SPMOV SP,#5FH#5FH MOV TMOD MOV TMOD,#0#0 MOV TL0 MOV TL0,#18H#18H MOV TH0 MOV TH0,#0E0H#0E0H SETB ET0 SETB ET0 SETB EA SETB EA SETB TR0 SETB TR0 SJMP $ SJMP $; ;中斷服務程序中斷服務程序 ORG 0100HORG 0100HCTC0CTC0: MOV TL0MOV TL

58、0,#18H#18H MOV TH0 MOV TH0,#0E0H#0E0H CPL P1.0 CPL P1.0 RETI RETI4.2 定時/計數器及其編程50方法二:查詢方式方法二:查詢方式 ORG 0030HORG 0030HSTARTSTART:MOV TMODMOV TMOD,#0#0 MOV TL0 MOV TL0,#18H#18H MOV TH0 MOV TH0,#0E0H #0E0H SETB TR0 SETB TR0LOOPLOOP: JBC TF0JBC TF0,NEXTNEXT SJMP LOOP SJMP LOOP可替換為可替換為: :LOOPLOOP:JNB TF0J

59、NB TF0,$ $ CLR TF0 CLR TF0 MOV TL0MOV TL0,#18H#18H : :NEXTNEXT: MOV TL0MOV TL0,#18H#18H MOV TH0 MOV TH0,#0E0H #0E0H CPL P1.0 CPL P1.0 SJMP LOOP SJMP LOOP 模式模式11:M1M0=01M1M0=01,1616位定時位定時/ /計數器。計數器。模式模式1 1工作時的結構構成:工作時的結構構成: (1 1)運行控制運行控制部分;部分; (2 2)定時)定時/ /計數計數信號源信號源; (3 3)1616位位計數器計數器; (4 4)溢出標志溢出標志

60、。4.2 定時/計數器及其編程514.2 定時/計數器及其編程52特點特點(1 1)可定時()可定時(C/T=0C/T=0)、可計數()、可計數(C/T=1C/T=1) ;(2 2)1616位方式位方式(TL0(TL0、TL1TL1為低為低8 8位,位,TH0TH0、TH1TH1為高為高8 8位位) );(3 3)INT0INT0、INT1INT1是定時器是定時器/ /計數器計數器T0T0、T1T1的外部門,的外部門, GATE=1GATE=1允許使用外部門(允許使用外部門(TR0TR0、TR1TR1應置應置1 1), , 此時用外部門控制運此時用外部門控制運行行 GATE=0GATE=0禁止

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論