計算機基礎_第5章_第1頁
計算機基礎_第5章_第2頁
計算機基礎_第5章_第3頁
計算機基礎_第5章_第4頁
計算機基礎_第5章_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 中斷的基本概念中斷的基本概念 80C5180C51中斷源中斷源 中斷控制寄存器中斷控制寄存器 中斷處理過程中斷處理過程 中斷優(yōu)先控制和中斷嵌套中斷優(yōu)先控制和中斷嵌套 中斷系統(tǒng)的應用中斷系統(tǒng)的應用 80C5180C51定時定時/ /計數器計數器 定時定時/ /計數器控制寄存器計數器控制寄存器 定時定時/ /計數器工作方式計數器工作方式 定時定時/ /計數器的應用計數器的應用第第5 5章章 中斷系統(tǒng)和定時中斷系統(tǒng)和定時/ /計數器計數器 本章要點:本章要點:5-1 80C515-1 80C51中斷系統(tǒng)中斷系統(tǒng)CPUCPU暫時中止其正在執(zhí)行的程序,轉去執(zhí)行請求中斷暫時中止其正在執(zhí)行的程序,轉去執(zhí)行

2、請求中斷的那個外設或事件的服務程序,等處理完畢后再返回執(zhí)的那個外設或事件的服務程序,等處理完畢后再返回執(zhí)行原來中止的程序行原來中止的程序, , 叫做中斷。叫做中斷。 為什么要設置中斷?為什么要設置中斷? 提高提高CPUCPU工作效率工作效率 具有實時處理功能具有實時處理功能 具有故障處理功能具有故障處理功能 實現分時操作實現分時操作一一. .中斷概述中斷概述 什么叫中斷?什么叫中斷? INT0INT0: :外部中斷外部中斷0 0,中斷請求信號由,中斷請求信號由P3.2P3.2輸入。輸入。 INT1INT1: :外部中斷外部中斷1 1,中斷請求信號由,中斷請求信號由P3.3P3.3輸入。輸入。

3、T0T0: :定時定時/ /計數器計數器0 0溢出中斷溢出中斷,對外部脈沖計數由,對外部脈沖計數由P3.4P3.4輸入。輸入。 T1T1: :定時定時/ /計數器計數器1 1溢出中斷溢出中斷,對外部脈沖計數由,對外部脈沖計數由P3.5P3.5輸入。輸入。 串行中斷串行中斷: :包括包括串行接收中斷串行接收中斷RIRI和和串行發(fā)送中斷串行發(fā)送中斷TITI。二二. . 中斷源和中斷控制寄存器中斷源和中斷控制寄存器 中斷源中斷源 中斷源是指能發(fā)出中斷請求,引起中斷的中斷源是指能發(fā)出中斷請求,引起中斷的裝置或事件。裝置或事件。 80C5180C51單片機的中斷源共有單片機的中斷源共有5 5個,其中個,

4、其中2 2個個為外部中斷源,為外部中斷源,3 3個為內部中斷源:個為內部中斷源: 中斷請求:定時和外中斷控制寄存器中斷請求:定時和外中斷控制寄存器TCONTCON; ; 串行控制寄存器串行控制寄存器SCONSCON; ; 中斷允許控制寄存器中斷允許控制寄存器IEIE; ; 中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IPIP。 中斷控制寄存器中斷控制寄存器 80C5180C51單片機中涉及中斷控制的有單片機中涉及中斷控制的有3 3個方面?zhèn)€方面4 4個個特殊功能寄存器特殊功能寄存器:INT0INT0、INT1INT1、T0T0、T1T1中斷請求標志放在中斷請求標志放在TCONTCON中中串行中斷請求

5、標志放在串行中斷請求標志放在SCONSCON中。中。 中斷請求控制寄存器中斷請求控制寄存器TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱TF1TF1TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H功能功能 T1T1 中斷中斷標志標志T0T0中斷中斷標志標志 中斷中斷標志標志 觸發(fā)觸發(fā)方式方式 中斷中斷標志標志觸發(fā)觸發(fā)方式方式TCONTCON的結構、位名稱、位地址和功能如下:的結構、位名稱、位地址和功能如下: TCON TCON位功

6、能位功能: : TF1 TF1 T1T1溢出中斷請求標志溢出中斷請求標志 T1T1計數溢出后,計數溢出后,TF1=1TF1=1 TF0TF0 T0T0溢出中斷請求標志溢出中斷請求標志 T0T0計數溢出后,計數溢出后,TF0=1TF0=1 IE1IE1 外中斷中斷請求標志外中斷中斷請求標志 當當P3.3P3.3引腳信號有效時,引腳信號有效時,IE1=1IE1=1 IE0IE0 外中斷中斷請求標志外中斷中斷請求標志 當當P3.2P3.2引腳信號有效時,引腳信號有效時,IE0=1IE0=1 IT1IT1 外中斷觸發(fā)方式控制位外中斷觸發(fā)方式控制位 IT1=1IT1=1,邊沿觸發(fā)方式;,邊沿觸發(fā)方式;

7、IT1=0IT1=0,電平觸發(fā)方式。,電平觸發(fā)方式。 IT0IT0 外中斷觸發(fā)方式控制位外中斷觸發(fā)方式控制位 其意義和功能與其意義和功能與IT1IT1相似。相似。串行控制寄存器串行控制寄存器SCONSCONTCONTCOND7D7 D6D6 D5D5D4D4 D3D3 D2D2D1D1D0D0位名稱位名稱 TITIRIRI位地址位地址 99H99H98H98H功能功能 串行發(fā)送串行發(fā)送中斷標志中斷標志串行接收串行接收中斷標志中斷標志 TITI 串行口發(fā)送中斷請求標志串行口發(fā)送中斷請求標志 RIRI 串行口接收中斷請求標志串行口接收中斷請求標志 80C5180C51對中斷源的開放或關閉由中斷允許

8、控對中斷源的開放或關閉由中斷允許控制寄存器制寄存器IEIE控制??刂?。 中斷允許控制寄存器中斷允許控制寄存器IEIEIEIE的結構、位名稱和位地址如下:的結構、位名稱和位地址如下:IEIED7D7D6D6 D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱EAEA ESESET1ET1EX1EX1ET0ET0EX0EX0位地址位地址AFHAFH ACHACHABHABHAAHAAHA9HA9HA8HA8H中斷源中斷源CPUCPU 串行口串行口T1T1T0T0 EAEA CPUCPU中斷允許控制位中斷允許控制位 EA=1EA=1,CPUCPU開中;開中; EA=0EA=0,CPUCPU

9、關中,且屏蔽所有關中,且屏蔽所有5 5個中斷源。個中斷源。 EX0EX0 外中斷外中斷INT0INT0中斷允許控制位中斷允許控制位 EX0=1EX0=1,INT0INT0開中;開中;EX0=0EX0=0,INT0INT0關中。關中。 EX1EX1 外中斷外中斷INT1INT1中斷允許控制位中斷允許控制位 EX1=1EX1=1,INT1INT1開中;開中;EX1=0EX1=0,INT1INT1關中。關中。 ET0ET0 定時定時/ /計數器計數器T0T0中斷允許控制位中斷允許控制位 ET0=1ET0=1,T0T0開中;開中;ET0=0ET0=0,T0T0關中。關中。 ET1ET1 定時定時/ /

10、計數器計數器T1T1中斷允許控制位中斷允許控制位 ET1=1ET1=1,T1T1開中;開中;ET1=0ET1=0,T1T1關中。關中。 ESES 串行口中斷串行口中斷( (包括串發(fā)、串收包括串發(fā)、串收) )允許控制位允許控制位 ES=1ES=1,串行口開中;,串行口開中;ES=0ES=0,串行口關中。,串行口關中。說明說明: : 80C51 80C51對中斷實行兩級控制,總控制位是對中斷實行兩級控制,總控制位是EAEA,每一,每一中斷源還有各自的控制位。首先要中斷源還有各自的控制位。首先要EA=1EA=1,其次還要自,其次還要自身的控制位置身的控制位置“1”1”。 PX0PX0 :INT0IN

11、T0中斷優(yōu)先級控制位。中斷優(yōu)先級控制位。PX0=1PX0=1,為高優(yōu)先級;,為高優(yōu)先級; PX0=0PX0=0,為低優(yōu)先級;,為低優(yōu)先級; PX1PX1 :INT1INT1中斷優(yōu)先級控制位??刂品椒ㄍ?。中斷優(yōu)先級控制位??刂品椒ㄍ稀?PT0PT0 :T0T0中斷優(yōu)先級控制位。控制方法同上。中斷優(yōu)先級控制位??刂品椒ㄍ稀?PT1PT1 :T1T1中斷優(yōu)先級控制位。控制方法同上。中斷優(yōu)先級控制位??刂品椒ㄍ稀?PS PS :串行口中斷優(yōu)先級控制位。控制方法同上。:串行口中斷優(yōu)先級控制位??刂品椒ㄍ?。 中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IP 80C51 80C51有有5 5個中斷源,

12、劃分為個中斷源,劃分為2 2個中斷優(yōu)先級:個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級高優(yōu)先級和低優(yōu)先級。 IPIP的結構、位名稱和位地址如下:的結構、位名稱和位地址如下:IEIED7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱PSPSPT1PT1PX1PX1PT0PT0PX0PX0位地址位地址BCHBCHBBHBBHBAHBAHB9HB9HB8HB8H中斷源中斷源串行口串行口T1T1INT1INT1T0T0INT0INT0三三. 中斷處理過程中斷處理過程 中斷處理過程大致可分為四步:中斷處理過程大致可分為四步: 中斷請求、中斷響應、中斷服務、中斷返回中斷請求、中斷響應、中斷服

13、務、中斷返回 中斷請求中斷請求 中斷源發(fā)出中斷請求信號,相應的中斷請求標志位中斷源發(fā)出中斷請求信號,相應的中斷請求標志位( (在中斷在中斷允許控制寄存器允許控制寄存器IEIE中中) )置置“1”1”。 中斷響應中斷響應 CPUCPU查詢(檢測)到某中斷標志為查詢(檢測)到某中斷標志為“1”1”,在滿足中斷響應,在滿足中斷響應條件下,響應中斷。條件下,響應中斷。 中斷響應條件中斷響應條件: 該中斷已經該中斷已經“開中開中”; CPU CPU此時沒有響應同級或更高級的中斷;此時沒有響應同級或更高級的中斷; 當前正處于所執(zhí)行指令的最后一個機器周期;當前正處于所執(zhí)行指令的最后一個機器周期; 正在執(zhí)行的

14、指令不是正在執(zhí)行的指令不是RETIRETI或者是訪向或者是訪向IEIE、IPIP的指令,的指令, 否則必須再另外執(zhí)行一條指令后才能響應。否則必須再另外執(zhí)行一條指令后才能響應。 中斷響應操作中斷響應操作 CPUCPU響應中斷后響應中斷后, ,進行下列操作:進行下列操作: 保護斷點地址;保護斷點地址; 撤除該中斷源的中斷請求標志;撤除該中斷源的中斷請求標志; 關閉同級中斷;關閉同級中斷; 將相應中斷的入口地址送入將相應中斷的入口地址送入PCPC; 80C5180C51五個中斷入口地址五個中斷入口地址:INT0INT0:0003H0003H; T0T0:000BH000BH;INT1INT1:001

15、3H0013H T1 T1:001BH001BH;串行口:;串行口:0023H0023H 執(zhí)行中斷服務程序執(zhí)行中斷服務程序 中斷服務程序應包含以下幾部分:中斷服務程序應包含以下幾部分: 保護現場保護現場 執(zhí)行中斷服務程序主體,完成相應操作執(zhí)行中斷服務程序主體,完成相應操作 恢復現場恢復現場 中斷返回中斷返回 在中斷服務程序最后,必須安排一條中斷返回指令在中斷服務程序最后,必須安排一條中斷返回指令RETIRETI,當,當CPUCPU執(zhí)行執(zhí)行RETIRETI指令后,自動完成下列操作:指令后,自動完成下列操作: 恢復斷點地址?;謴蛿帱c地址。 開放同級中斷,以便允許同級中斷源請求中斷。開放同級中斷,以

16、便允許同級中斷源請求中斷。 四四. . 中斷響應等待時間中斷響應等待時間 若排除若排除CPUCPU正在響應同級或更高級的中斷情況,中斷響應等正在響應同級或更高級的中斷情況,中斷響應等待時間為待時間為: : 3 38 8個機器周期個機器周期五五. . 中斷請求的撤除中斷請求的撤除 中斷源發(fā)出中斷請求,相應中斷請求標志置中斷源發(fā)出中斷請求,相應中斷請求標志置“1”1”。 CPUCPU響響應中斷后,必須清除中斷請求應中斷后,必須清除中斷請求“1”1”標志。否則中斷響應返回后,標志。否則中斷響應返回后,將再次進入該中斷,引起死循環(huán)出錯。將再次進入該中斷,引起死循環(huán)出錯。 對定時對定時/ /計數器計數器

17、T0T0、T1T1中斷,外中斷邊沿觸發(fā)方式,中斷,外中斷邊沿觸發(fā)方式,CPUCPU響響應中斷時就用硬件自動清除了相應的中斷請求標志。應中斷時就用硬件自動清除了相應的中斷請求標志。 對外中斷電平觸發(fā)方式,需要采取軟硬結合的方法消除后對外中斷電平觸發(fā)方式,需要采取軟硬結合的方法消除后果。果。 對串行口中斷,用戶應在串行中斷服務程序中用軟件清除對串行口中斷,用戶應在串行中斷服務程序中用軟件清除TITI或或RIRI。六六. . 中斷優(yōu)先控制和中斷嵌套中斷優(yōu)先控制和中斷嵌套 中斷優(yōu)先控制中斷優(yōu)先控制 80C5180C51中斷優(yōu)先控制首先根據中斷優(yōu)先級,此外還規(guī)定了中斷優(yōu)先控制首先根據中斷優(yōu)先級,此外還規(guī)

18、定了同一中斷優(yōu)先級之間的中斷優(yōu)先權。其從高到低的順序為:同一中斷優(yōu)先級之間的中斷優(yōu)先權。其從高到低的順序為: INT0INT0、INT1INT1、T0T0、T1T1、串行口。、串行口。 中斷優(yōu)先級是可編程的中斷優(yōu)先級是可編程的,而,而中斷優(yōu)先權是固定的中斷優(yōu)先權是固定的,不能設,不能設置,僅用于同級中斷源同時請求中斷時的優(yōu)先次序。置,僅用于同級中斷源同時請求中斷時的優(yōu)先次序。 80C5180C51中斷優(yōu)先控制的基本原則:中斷優(yōu)先控制的基本原則: 高優(yōu)先級中斷可以中斷正在響應的低優(yōu)先級中斷,反之高優(yōu)先級中斷可以中斷正在響應的低優(yōu)先級中斷,反之則不能。則不能。 同優(yōu)先級中斷不能互相中斷。同優(yōu)先級中

19、斷不能互相中斷。 同一中斷優(yōu)先級中,若有多個中斷源同時請求中斷,同一中斷優(yōu)先級中,若有多個中斷源同時請求中斷,CPUCPU將先響應優(yōu)先權高的中斷,后響應優(yōu)先權低的中斷。將先響應優(yōu)先權高的中斷,后響應優(yōu)先權低的中斷。 中斷嵌套中斷嵌套 當當CPUCPU正在執(zhí)行某個中斷服務程序時,如果發(fā)生更高一正在執(zhí)行某個中斷服務程序時,如果發(fā)生更高一級的中斷源請求中斷,級的中斷源請求中斷,CPUCPU可以可以“中斷中斷”正在執(zhí)行的低優(yōu)先正在執(zhí)行的低優(yōu)先級中斷級中斷,轉而響應更高一級的中斷,這就是中斷嵌套。轉而響應更高一級的中斷,這就是中斷嵌套。 中斷嵌套只能高優(yōu)先級中斷嵌套只能高優(yōu)先級“中斷中斷”低優(yōu)先級,低優(yōu)

20、先級不低優(yōu)先級,低優(yōu)先級不能能“中斷中斷”高優(yōu)先級,同一優(yōu)先級也不能相互高優(yōu)先級,同一優(yōu)先級也不能相互“中斷中斷”。 中斷嵌套結構類似與中斷嵌套結構類似與調用子程序嵌套,調用子程序嵌套,不同不同的是的是: 子程序嵌套是在程序子程序嵌套是在程序中事先按排好的;中斷中事先按排好的;中斷嵌套是隨機發(fā)生的。嵌套是隨機發(fā)生的。 子程序嵌套無次序限子程序嵌套無次序限制,中斷嵌套只允許高制,中斷嵌套只允許高優(yōu)先級優(yōu)先級“中斷中斷”低優(yōu)先低優(yōu)先級。級。七七. . 中斷系統(tǒng)的應用中斷系統(tǒng)的應用 中斷初始化中斷初始化 設置堆棧指針設置堆棧指針SPSP 定義中斷優(yōu)先級定義中斷優(yōu)先級 定義外中斷觸發(fā)方式定義外中斷觸發(fā)

21、方式 開放中斷開放中斷 安排好等待中斷或中斷發(fā)生前主程序應完成的操作內容。安排好等待中斷或中斷發(fā)生前主程序應完成的操作內容。 中斷服務主程序中斷服務主程序 中斷服務子程序內容要求:中斷服務子程序內容要求: 在中斷服務入口地址設置一條跳轉指令,轉移到中斷服務在中斷服務入口地址設置一條跳轉指令,轉移到中斷服務程序的實際入口處。程序的實際入口處。 根據需要保護現場。根據需要保護現場。 中斷源請求中斷服務要求的操作。中斷源請求中斷服務要求的操作。 恢復現場。與保護現場相對應,注意先進后出、后進先出恢復現場。與保護現場相對應,注意先進后出、后進先出操作原則。操作原則。 中斷返回,最后一條指令必須是中斷返

22、回,最后一條指令必須是RETIRETI?!纠俊纠?出租車計價器計程方法是車輪每運轉一出租車計價器計程方法是車輪每運轉一圈產生一個負脈沖,從外中斷(圈產生一個負脈沖,從外中斷(P3.2P3.2)引腳)引腳輸入,行駛里程為輪胎周長輸入,行駛里程為輪胎周長運轉圈數,設運轉圈數,設輪胎周長為輪胎周長為2m2m,試實時計算出租車行駛里程,試實時計算出租車行駛里程(單位米),數據存(單位米),數據存32H32H、31H31H、30H30H。 中斷系統(tǒng)應用舉例中斷系統(tǒng)應用舉例解:編程如下:解:編程如下: ORGORG 0000H 0000H; ;復位地址復位地址 LJMPLJMP STAT STAT;

23、;轉初始化轉初始化 ORGORG 0003H 0003H; ;中斷入口地址中斷入口地址 LJMPLJMP INT INT; ;轉中斷服務程序轉中斷服務程序 ORG 0100H ORG 0100H; ;初始化程序首地址初始化程序首地址STAT: MOV SP,#60HSTAT: MOV SP,#60H; ;置堆棧指針置堆棧指針 SETB ITOSETB ITO; ;置邊沿觸發(fā)方式置邊沿觸發(fā)方式 MOV IP,#01HMOV IP,#01H; ;置高優(yōu)先級置高優(yōu)先級 MOV IE,#81HMOV IE,#81H; ;開中開中 MOV 30H,#0MOV 30H,#0; ;里程計數器清里程計數器清0

24、 0 MOV 31H,#0 MOV 31H,#0; ; MOV 32H,#0 MOV 32H,#0; ; LJMP MAIN LJMP MAIN; ;轉主程序轉主程序, ,并等待中斷并等待中斷 ORG 0200HORG 0200H; ;中斷服務子程序首地址中斷服務子程序首地址INT: PUSH AccINT: PUSH Acc; ;保護現場保護現場 PUSH PSWPUSH PSW; ; MOV A,30H MOV A,30H; ;讀低讀低8 8位計數器位計數器 ADD A,#2ADD A,#2; ;低低8 8位計數器加位計數器加2m2m MOV 30H,A MOV 30H,A; ;回存回存

25、CLR ACLR A; ; ADDC A,31H ADDC A,31H; ;中中8 8位計數器加進位位計數器加進位 MOV 31H,AMOV 31H,A; ;回存回存 CLR ACLR A; ; ADDC A,32H ADDC A,32H; ;高高8 8位計數器加進位位計數器加進位 MOV 32H,AMOV 32H,A; ;回存回存 PUSH PSWPUSH PSW; ;恢復現場恢復現場 PUSH Acc PUSH Acc ; ; RETI RETI; ;中斷返回中斷返回【例】現有【例】現有5 5個外中斷源個外中斷源EX1EX1、EX20EX20、EX21EX21、EX22EX22和和EX23

26、EX23,高電平時表示請求中斷,要求執(zhí)行相應中斷,高電平時表示請求中斷,要求執(zhí)行相應中斷服務程序,試編制程序。服務程序,試編制程序。 解:解:ORGORG0000H0000H; ;復位地址復位地址LJMPLJMP MAINMAIN ; ;轉主程序轉主程序ORGORG0003H0003H; ;中斷入口地址中斷入口地址LJMPLJMP PINT0PINT0; ;轉中斷服務程序轉中斷服務程序ORGORG0013H0013H; ;中斷入口地址中斷入口地址LJMPLJMP PINT1PINT1; ;轉中斷服務程序轉中斷服務程序 ORGORG0100H0100H ; ;主程序首地址主程序首地址MAIN:

27、MOVMAIN: MOVSP,#60HSP,#60H; ;置堆棧指針置堆棧指針 ORLORLTCON,#05HTCON,#05H; ;置置INT0INT0、INT1INT1為邊沿觸發(fā)方式為邊沿觸發(fā)方式 SETBSETB PX0 PX0 ; ;置為高優(yōu)先級置為高優(yōu)先級 MOVMOVIE,#0FFHIE,#0FFH; ;全部開中全部開中 ; ;主程序內容主程序內容 ORG 1000HORG 1000H; ;中斷服務程序首地址中斷服務程序首地址 PINT0: PUSHPINT0: PUSH AccAcc; ;中斷中斷, ,保護現場保護現場 LCALL WORK1LCALL WORK1; ;調用調用E

28、X1EX1服務子程序服務子程序 POPPOPAccAcc; ;恢復現場恢復現場 RETIRETI; ;中斷返回中斷返回 ORGORG 2000H 2000H ; ;中斷服務程序首地址中斷服務程序首地址PINT1: CLRPINT1: CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ; ;中斷保護現場中斷保護現場 PUSHPUSH DPH DPH ; ; PUSH PUSH DPL DPL ; ; SETB SETB EA EA ;CPU;CPU開中開中 JB P1.0, JB P1.0,LWK20LWK20;P1.0=1,EX20;P1.0=1,EX20請求中斷

29、請求中斷 JB P1.1,JB P1.1,LWK21LWK21;P1.1=1,EX21;P1.1=1,EX21請求中斷請求中斷 JB P1.2,JB P1.2,LWK22LWK22;P1.2=1,EX22;P1.2=1,EX22請求中斷請求中斷 LCALL WORK23 LCALL WORK23 ;P1.3=1,;P1.3=1,調用調用EX23EX23服務子服務子LRET:LRET: CLR CLR EA EA;CPU;CPU禁中禁中 POPPOP DPL DPL; ;恢復現場恢復現場 POPPOP DPH DPH; ; POP POP Acc Acc; ; SETB SETB EA EA;C

30、PU;CPU開中開中 RETIRETI; ;中斷返回中斷返回LWK20LWK20: LCALL WORK20: LCALL WORK20;P1.0 = 1,;P1.0 = 1,調用調用EX20EX20服務子程序服務子程序 SJMP LRET SJMP LRET ; ;轉中斷返回轉中斷返回LWK21LWK21: LCALL WORK21 : LCALL WORK21 ;P1.1 = 1,;P1.1 = 1,調用調用EX21EX21服務子程序服務子程序 SJMP LRETSJMP LRET; ;轉中斷返回轉中斷返回LWK22LWK22: LCALL WORK22 : LCALL WORK22 ;P

31、1.2 = 1,;P1.2 = 1,調用調用EX22EX22服務子程序服務子程序 SJMP LRETSJMP LRET; ;轉中斷返回轉中斷返回 定時定時/ /計數器是單片機系統(tǒng)一個重要的部計數器是單片機系統(tǒng)一個重要的部件,其工作方式靈活、編程簡單、使用方便,件,其工作方式靈活、編程簡單、使用方便,可用來實現可用來實現定時控制定時控制、延時延時、頻率測量頻率測量、脈寬脈寬測量測量、信號發(fā)生信號發(fā)生、信號檢測信號檢測等。此外,定時等。此外,定時/ /計數器還可作為串行通信中波特率發(fā)生器。計數器還可作為串行通信中波特率發(fā)生器。5-25-2 80C5180C51定時定時/ /計數器計數器 80C51

32、80C51單片機內部有兩個定時單片機內部有兩個定時/ /計數器計數器T0T0和和T1T1,其,其核心是計數器,基本功能是加核心是計數器,基本功能是加1 1。 對外部事件脈沖(下降沿)計數,是計數器;對對外部事件脈沖(下降沿)計數,是計數器;對片內機周脈沖計數,是定時器。片內機周脈沖計數,是定時器。 計數器由二個計數器由二個8 8位計數器組成。位計數器組成。 定時時間和計數值可以編程設定,其方法是在計定時時間和計數值可以編程設定,其方法是在計數器內設置一個初值,然后加數器內設置一個初值,然后加1 1計滿后溢出。調整計滿后溢出。調整計數器初值,可調整從初值到計滿溢出的數值,計數器初值,可調整從初值

33、到計滿溢出的數值,即調整了定時時間和計數值。即調整了定時時間和計數值。 定時定時/ /計數器作為計數器時,外部事件脈沖必須從計數器作為計數器時,外部事件脈沖必須從規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超過時鐘頻率的過時鐘頻率的1/241/24。一一. . 定時定時/ /計數器概述計數器概述TCONTCON低低4 4位與外中斷位與外中斷 、 有關,已在有關,已在中斷中敘述。中斷中敘述。 高高4 4位與定時位與定時/ /計數器計數器T0T0、T1T1有關。有關。 TF1: TF1:定時定時/ /計數器計數器T1T1溢出標志。溢出標志。 TF0: TF0:

34、定時定時/ /計數器計數器T0T0溢出標志。溢出標志。 TR1: TR1:定時定時/ /計數器計數器T1T1運行控制位。運行控制位。TR1=1,T1TR1=1,T1運行運行;TR1=0,T1;TR1=0,T1停。停。 TR0: TR0:定時定時/ /計數器計數器T0T0運行控制位。運行控制位。TR0=1,T0TR0=1,T0運行運行;TR0=0,T0;TR0=0,T0停。停。TCONTCON的字節(jié)地址為的字節(jié)地址為88H88H,每一位有位地址,均可位操作。,每一位有位地址,均可位操作。 定時定時/ /計數器控制寄存器計數器控制寄存器TCONTCON二二. . 定時定時/ /計數器的控制寄存器計

35、數器的控制寄存器TCONTCONT1T1中斷中斷標志標志T1T1運行運行標志標志T0T0中斷中斷標志標志T0T0運行運行標志標志INT1INT1中斷中斷標志標志INT1INT1觸發(fā)觸發(fā)方式方式INT0INT0中斷中斷標志標志INT0INT0觸發(fā)觸發(fā)方式方式位名稱位名稱TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88HINT0INT1高高4 4位控制位控制T1T1低低4 4位控制位控制T0T0門控門控位位計數計數/ /定時定時方式選擇方式選擇工

36、作方式工作方式選擇選擇門控門控位位計數計數/ /定時定時方式選擇方式選擇工作方式工作方式選擇選擇G GC / TC / TM1M1M0M0G GC / TC / TM1M1M0M0TMODTMOD用于設定定時用于設定定時/ /計數器的工作方式計數器的工作方式低低4 4位用于控制位用于控制T0T0,高高4 4位用于控制位用于控制T1T1。 定時定時/ /計數器工作方式控制寄存器計數器工作方式控制寄存器TMODTMOD M1M0 M1M0 工作方式選擇位工作方式選擇位M1M0M1M0工作方式工作方式功能功能0000方式方式0 01313位計數器位計數器0101方式方式1 11616位計數器位計數器

37、1010方式方式2 2兩個兩個8 8位計數器,初值自動裝入位計數器,初值自動裝入1111方式方式3 3兩個兩個8 8位計數器,僅適用位計數器,僅適用T0T0 C/T C/T 計數計數/ /定時方式選擇位定時方式選擇位 C/T=1,C/T=1,計數工作方式計數工作方式, ,對外部事件脈沖計數對外部事件脈沖計數, ,用作計數器。用作計數器。 C/T=0,C/T=0,定時工作方式定時工作方式, ,對片內機周脈沖計數對片內機周脈沖計數, ,用作定時器。用作定時器。 GATE GATE 門控位門控位 GATE=0GATE=0,運行只受,運行只受TCONTCON中運行控制位中運行控制位TR0/TR1TR0

38、/TR1的控制。的控制。 GATE=1GATE=1,運行同時受,運行同時受TR0/TR1TR0/TR1和外中斷輸入信號和外中斷輸入信號的雙重控制。的雙重控制。 只有當只有當INT0/INT1=1INT0/INT1=1且且TR0/TR1=1,T0/T1TR0/TR1=1,T0/T1才能運行。才能運行。 TMODTMOD字節(jié)地址字節(jié)地址89H,89H,不能位操作不能位操作, ,設置設置TMODTMOD須用字節(jié)操作指令。須用字節(jié)操作指令。三三. . 定時定時/ /計數器工作方式計數器工作方式 工作方式工作方式0 0 1313位位計數器,由計數器,由TL0TL0低低5 5位和位和TH0 8TH0 8位

39、組成,位組成,TL0TL0低低5 5位計數滿時不向位計數滿時不向TL0TL0第第6 6位位進位,而是向進位,而是向TH0TH0進位,進位,1313位計滿溢出,位計滿溢出,TF0TF0置置“1”1”。最大計數值最大計數值2 21313 = 8192 = 8192。 工作方式工作方式1 1 1616位位計數器,計數器,最大計數值為最大計數值為2 21616 = 65536 = 65536。 工作方式工作方式2 2 8 8位位計數器,僅用計數器,僅用TL0TL0計數,計數,最大計數值為最大計數值為2 28 8= 256= 256,計滿溢出后,一方面進,計滿溢出后,一方面進位位TF0TF0,使溢出標志

40、,使溢出標志TF0 = 1TF0 = 1;另一方面,使原來裝在;另一方面,使原來裝在TH0TH0中的初值裝入中的初值裝入TL0TL0。 優(yōu)點:定時初值可自動恢復優(yōu)點:定時初值可自動恢復; ;缺點:計數范圍小。缺點:計數范圍小。 適用于需要重復定時,而定時范圍不大的應用場合。適用于需要重復定時,而定時范圍不大的應用場合。 工作方式工作方式3 3 方式方式3 3僅適用于僅適用于T0T0,T1T1無方式無方式3 3。 T0T0方式方式3 3 在方式在方式3 3情況下情況下, ,T0T0被拆成二個獨立的被拆成二個獨立的8 8位計數器位計數器TH0TH0、TL0TL0。 TL0 TL0使用使用T0T0原

41、有的控制寄存器資源原有的控制寄存器資源:TF0,TR0,GATE,C/T,INT0,:TF0,TR0,GATE,C/T,INT0,組成一個組成一個8 8位的定時位的定時/ /計數器;計數器; TH0 TH0借用借用T1T1的中斷溢出標志的中斷溢出標志TF1,TF1,運行控制開關運行控制開關TR1,TR1,只能對片內機周脈沖只能對片內機周脈沖計數計數, ,組成另一個組成另一個8 8位定時器位定時器( (不能用作計數器不能用作計數器) )。 T0T0方式方式3 3情況下的情況下的T1T1 T1 T1由于其由于其TF1TF1、TR1TR1被被T0T0的的TH0TH0占用,計數器溢出時,只能將輸出信號

42、送至占用,計數器溢出時,只能將輸出信號送至串行口,即串行口,即用作串行口波特率發(fā)生器用作串行口波特率發(fā)生器。其中其中: N: N與工作方式有關與工作方式有關: : 方式方式0 0時時, ,N=N=1313; 方式方式1 1時時, ,N=N=1616; 方式方式2 2、3 3時時, ,N=N=8 8。 機周時間與主振頻率有關機周時間與主振頻率有關: :機周時間機周時間=12/fosc=12/fosc fosc=fosc=12MHZ12MHZ時時,1 1機周機周= =1 1 S S; fosc=fosc=6MHZ6MHZ 時時,1 1機周機周= =2 2 S S。 四四. . 定時定時/ /計數器

43、的應用計數器的應用 計算定時計算定時/ /計數初值計數初值80C5180C51定時定時/ /計數初值計算公式:計數初值計算公式:解:解:工作方式工作方式0 0: 2 21313500500 S/2S/2 S=8192-250=7942=1F06HS=8192-250=7942=1F06H 1F06H 1F06H化成二進制:化成二進制: 1F06H=0001 1111 0000 0110B1F06H=0001 1111 0000 0110B =000 =000 1111100011111000 0011000110 B B其中:其中:低低5 5位位0011000110前添加前添加3 3位位000

44、000送入送入TL0TL0 TL0=000 TL0=000 0011000110B=06HB=06H; 高高8 8位位11111000B11111000B送入送入TH0TH0 TH0= TH0=1111100011111000B=F8HB=F8H。【例】【例】 已知晶振已知晶振6MHz6MHz,要求定時,要求定時0.5mS0.5mS,試分別,試分別求出求出T0T0工作于方式工作于方式0 0、方式、方式1 1、方式、方式2 2、方式、方式3 3時的時的定時初值。定時初值。 工作方式工作方式1 1: T0T0初值初值 =2=21616-500-500 s s/2/2 s s=65536250=65

45、286=FF06H=65536250=65286=FF06H TH0=FFH TH0=FFH;TL0=06HTL0=06H。 工作方式工作方式2 2: T0T0初值初值 =2=28 8-500-500 s s/2/2 s s=256-250=6=256-250=6 TH0=06H TH0=06H;TL0=06HTL0=06H。 工作方式工作方式3 3: T0T0方式方式3 3時,被拆成兩個時,被拆成兩個8 8位定時器,定時初值可分別計位定時器,定時初值可分別計算,計算方法同方式算,計算方法同方式2 2。兩個定時初值一個裝入。兩個定時初值一個裝入TL0TL0,另一個,另一個裝入裝入TH0TH0。

46、因此:。因此: TH0=06HTH0=06H;TL0=06HTL0=06H。 從上例中看到,方式從上例中看到,方式0 0時計算定時初值比較麻煩,根據時計算定時初值比較麻煩,根據公式計算出數值后,還要變換一下,容易出錯,不如直接用公式計算出數值后,還要變換一下,容易出錯,不如直接用方式方式1 1,且方式,且方式0 0計數范圍比方式計數范圍比方式1 1小,小,方式方式0 0完全可以用方式完全可以用方式1 1代替,方式代替,方式0 0與方式與方式1 1相比,無任何優(yōu)點相比,無任何優(yōu)點。 定時定時/ /計數器應用步驟計數器應用步驟 合理選擇定時合理選擇定時/ /計數器工作方式計數器工作方式 計算定時計

47、算定時/ /計數器定時初值計數器定時初值( (按上述公式計算按上述公式計算) ) 編制應用程序編制應用程序 定時定時/ /計數器的初始化計數器的初始化 包括定義包括定義TMODTMOD、寫入定時初值、設置中斷系統(tǒng)、啟動、寫入定時初值、設置中斷系統(tǒng)、啟動定時定時/ /計數器運行等。計數器運行等。 正確編制定時正確編制定時/ /計數器中斷服務程序計數器中斷服務程序 注意是否需要重裝定時初值,若需要連續(xù)反復使用原注意是否需要重裝定時初值,若需要連續(xù)反復使用原定時時間,且未工作在方式定時時間,且未工作在方式2 2,則應在中斷服務程序中重裝,則應在中斷服務程序中重裝定時初值。定時初值。【例】試用【例】試

48、用T1T1方式方式2 2編制程序,在編制程序,在P1.0P1.0引腳輸出周引腳輸出周期為期為400400 S S的脈沖方波,已知的脈沖方波,已知fosc=12MHZfosc=12MHZ。解:解: 計算定時初值計算定時初值 T1T1初值初值=2=28 8-200-200 s s/1/1 s s=256200=56=38H=256200=56=38H TH1=38H TH1=38H;TL1=38HTL1=38H 設置設置TMODTMOD: 0 0 0 0 1010 00000000 B=20H B=20H T0 T0控制位,與控制位,與T1T1無關無關 T1T1方式方式2 2 T1 T1定時器定時

49、器 T1T1啟動與啟動與 無關無關INT1 編制程序編制程序如下:如下: ORGORG0000H0000H ; ;復位地址復位地址LJMPLJMPMAINMAIN ; ;轉主程序轉主程序ORGORG001BH001BH ;T1;T1中斷入口地址中斷入口地址LJMPLJMPIT1IT1 ; ;轉轉T1T1中斷服務程序中斷服務程序 ORGORG0100H0100H ; ;主程序首地址主程序首地址MAIN:MAIN: MOVMOVTMOD,#20HTMOD,#20H ; ;置置T1T1定時器方式定時器方式2 2MOVMOVTL1,#38HTL1,#38H ; ;置定時初值置定時初值MOVMOVTH1

50、,#38HTH1,#38H ; ;置定時初值備份置定時初值備份MOVMOVIP,#00001000BIP,#00001000B; ;置置T1T1高優(yōu)先級高優(yōu)先級MOVMOVIE,#0FFHIE,#0FFH ; ;全部開中全部開中SETBSETBTR1TR1 ;T1;T1運行運行SJMPSJMP$ $ ; ;等待等待T1T1中斷中斷 ORG 0200H ORG 0200H ;T1;T1中斷服務程序首地址中斷服務程序首地址IT1:IT1: CPL P1.0 CPL P1.0 ; ;輸出波形取反首地址輸出波形取反首地址RETI RETI ; ;中斷返回中斷返回【課堂練習題】【課堂練習題】 參照以上例

51、題工作方式參照以上例題工作方式2 2,按下列要求分別,按下列要求分別修改程序:修改程序: 脈沖方波從脈沖方波從P3.0P3.0輸出;輸出; fosc=6MHz fosc=6MHz; 脈沖方波脈寬為脈沖方波脈寬為100100 s s; 用定時用定時/ /計數器計數器T0T0;【例】已知晶振【例】已知晶振12MHZ12MHZ,參閱圖,參閱圖5-15,5-15,要求利用定時器要求利用定時器 T0T0使圖中發(fā)光二極管使圖中發(fā)光二極管D D進行秒閃爍。進行秒閃爍。 解:發(fā)光二極管進行秒解:發(fā)光二極管進行秒閃爍。即一秒鐘一亮一閃爍。即一秒鐘一亮一暗,亮暗,亮500ms500ms,暗,暗500 500 ms

52、ms。晶振。晶振12MHz12MHz,每機,每機周周1 1 s s,T0T0方式方式1 1最大定最大定時只能時只能65ms65ms余。余。 取取T0T0定時定時50ms50ms,計,計數數1010次,即可實現次,即可實現500ms500ms定時。定時。 計算定時初值計算定時初值 T0T0初值初值 =216-50000=216-50000 s s/1/1 s s =6553650000=15536=3CB0H =6553650000=15536=3CB0H TH0=3CH TH0=3CH;TL0=B0HTL0=B0H。 設置設置TMODTMOD: 00000000 0 0 0 0 0101 B

53、= 01H B = 01H T0 T0方式方式1 1 T0T0 與與 無關無關 T1T1控制位控制位INT0 編制程序編制程序如下:如下: ORGORG 0000H 0000H ; ;復位地址復位地址LJMPLJMP MAIN MAIN ; ;轉主程序轉主程序ORGORG 000BH 000BH ;T0;T0中斷入口地址中斷入口地址LJMPLJMP IT0 IT0 ; ;轉轉T0T0中斷服務程序中斷服務程序ORGORG 0100H 0100H ; ;主程序首地址主程序首地址MAIN:MOV MAIN:MOV TMOD,#01H TMOD,#01H ; ;置置T0T0定時器方式定時器方式1 1M

54、OVMOV TH0,#3CH TH0,#3CH ; ;置置T0T0初值初值50mS50mSMOVMOV TL0,#0B0H TL0,#0B0H ; ;MOVMOV IE,#10000010B IE,#10000010B;T0;T0開中開中 MOVMOV R7,#0AH R7,#0AH ; ;置置50mS50mS計數器初值計數器初值 SETBSETB TR0 TR0 ;T0;T0運行運行SJMPSJMP $ $ ; ;等待中斷等待中斷 【例】已知【例】已知fosc=6MHzfosc=6MHz,試編寫,試編寫2424小時模擬電子鐘程序,秒分時數分別存在小時模擬電子鐘程序,秒分時數分別存在R1R1、

55、R2R2、R3R3中,可直接調用顯示程序中,可直接調用顯示程序DIRDIR。解:解: ORG 0000H ORG 0000H ; ;復位地址復位地址 LJMP IT0 LJMP IT0 ; ;轉轉主程序主程序 ORG 000BH ORG 000BH ;T0;T0中斷入口地址中斷入口地址 LJMP IT0 LJMP IT0 ;T0;T0中斷中斷, ,轉轉T0T0中斷服務子程序中斷服務子程序IT0IT0 ORG 1000H ORG 1000H ; ;主程序首地址主程序首地址START:MOV R1,#0 START:MOV R1,#0 ; ;秒計數器清秒計數器清0 0 MOV R2,#0 MOV

56、R2,#0 ; ;分計數器清分計數器清0 0 MOV R3,#0 MOV R3,#0 ; ;時計數器清時計數器清0 0 MOV R4,#0 MOV R4,#0 ;500;500 S S計數器清計數器清0 0 MOV R5,#0 MOV R5,#0 ;100ms;100ms計數器清計數器清0 0 MOV TMOD,#02H MOV TMOD,#02H; ;置置T0T0定時器方式定時器方式2 2 MOV TL0,#06H MOV TL0,#06H ; ;置置T0T0定時初值定時初值500500 S S MOV TH0,#06H MOV TH0,#06H ; ;用于自動恢復定時初值用于自動恢復定時初

57、值 SETB TR0 SETB TR0 ; ;啟動啟動T0T0WAIT: LCALL DIR WAIT: LCALL DIR ; ;顯示時鐘時分秒并等待中斷顯示時鐘時分秒并等待中斷 SJMP WAIT SJMP WAIT ; ;循環(huán)顯示循環(huán)顯示 ORG 0200HORG 0200H ;T0 ;T0中斷服務程序首地址中斷服務程序首地址IT0:IT0: MOV TH0,#3CH MOV TH0,#3CH ; ;重置重置T0T0初值初值50mS50mS MOV TL0,#0B0H MOV TL0,#0B0H; ; DJNZ R7,GORET DJNZ R7,GORET ; ;判判500mS500mS到否?到否? CPL P1.7 CPL P1.7 ;500mS ;500mS 到到, ,輸出取反輸出取反 MOV R7,#0AH MOV R7,#0AH ; ;恢復恢復50mS50mS計

溫馨提示

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

評論

0/150

提交評論