版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 中斷的基本概念中斷的基本概念 80C5180C51中斷源中斷源 中斷控制寄存器中斷控制寄存器 中斷處理過程中斷處理過程 中斷優(yōu)先控制和中斷嵌套中斷優(yōu)先控制和中斷嵌套 中斷系統(tǒng)的應(yīng)用中斷系統(tǒng)的應(yīng)用 80C5180C51定時定時/ /計數(shù)器計數(shù)器 定時定時/ /計數(shù)器控制寄存器計數(shù)器控制寄存器 定時定時/ /計數(shù)器工作方式計數(shù)器工作方式 定時定時/ /計數(shù)器的應(yīng)用計數(shù)器的應(yīng)用第第5 5章章 中斷系統(tǒng)和定時中斷系統(tǒng)和定時/ /計數(shù)器計數(shù)器 本章要點:本章要點:5-1 80C515-1 80C51中斷系統(tǒng)中斷系統(tǒng)CPUCPU暫時中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行請求中斷暫時中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行
2、請求中斷的那個外設(shè)或事件的服務(wù)程序,等處理完畢后再返回執(zhí)的那個外設(shè)或事件的服務(wù)程序,等處理完畢后再返回執(zhí)行原來中止的程序行原來中止的程序, , 叫做中斷。叫做中斷。 為什么要設(shè)置中斷?為什么要設(shè)置中斷? 提高提高CPUCPU工作效率工作效率 具有實時處理功能具有實時處理功能 具有故障處理功能具有故障處理功能 實現(xiàn)分時操作實現(xiàn)分時操作一一. .中斷概述中斷概述 什么叫中斷?什么叫中斷? INT0INT0: :外部中斷外部中斷0 0,中斷請求信號由,中斷請求信號由P3.2P3.2輸入。輸入。 INT1INT1: :外部中斷外部中斷1 1,中斷請求信號由,中斷請求信號由P3.3P3.3輸入。輸入。
3、T0T0: :定時定時/ /計數(shù)器計數(shù)器0 0溢出中斷溢出中斷,對外部脈沖計數(shù)由,對外部脈沖計數(shù)由P3.4P3.4輸入。輸入。 T1T1: :定時定時/ /計數(shù)器計數(shù)器1 1溢出中斷溢出中斷,對外部脈沖計數(shù)由,對外部脈沖計數(shù)由P3.5P3.5輸入。輸入。 串行中斷串行中斷: :包括包括串行接收中斷串行接收中斷RIRI和和串行發(fā)送中斷串行發(fā)送中斷TITI。二二. . 中斷源和中斷控制寄存器中斷源和中斷控制寄存器 中斷源中斷源 中斷源是指能發(fā)出中斷請求,引起中斷的中斷源是指能發(fā)出中斷請求,引起中斷的裝置或事件。裝置或事件。 80C5180C51單片機(jī)的中斷源共有單片機(jī)的中斷源共有5 5個,其中個,
4、其中2 2個個為外部中斷源,為外部中斷源,3 3個為內(nèi)部中斷源:個為內(nèi)部中斷源: 中斷請求:定時和外中斷控制寄存器中斷請求:定時和外中斷控制寄存器TCONTCON; ; 串行控制寄存器串行控制寄存器SCONSCON; ; 中斷允許控制寄存器中斷允許控制寄存器IEIE; ; 中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IPIP。 中斷控制寄存器中斷控制寄存器 80C5180C51單片機(jī)中涉及中斷控制的有單片機(jī)中涉及中斷控制的有3 3個方面?zhèn)€方面4 4個個特殊功能寄存器特殊功能寄存器:INT0INT0、INT1INT1、T0T0、T1T1中斷請求標(biāo)志放在中斷請求標(biāo)志放在TCONTCON中中串行中斷請求
5、標(biāo)志放在串行中斷請求標(biāo)志放在SCONSCON中。中。 中斷請求控制寄存器中斷請求控制寄存器TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱TF1TF1TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H功能功能 T1T1 中斷中斷標(biāo)志標(biāo)志T0T0中斷中斷標(biāo)志標(biāo)志 中斷中斷標(biāo)志標(biāo)志 觸發(fā)觸發(fā)方式方式 中斷中斷標(biāo)志標(biāo)志觸發(fā)觸發(fā)方式方式TCONTCON的結(jié)構(gòu)、位名稱、位地址和功能如下:的結(jié)構(gòu)、位名稱、位地址和功能如下: TCON TCON位功
6、能位功能: : TF1 TF1 T1T1溢出中斷請求標(biāo)志溢出中斷請求標(biāo)志 T1T1計數(shù)溢出后,計數(shù)溢出后,TF1=1TF1=1 TF0TF0 T0T0溢出中斷請求標(biāo)志溢出中斷請求標(biāo)志 T0T0計數(shù)溢出后,計數(shù)溢出后,TF0=1TF0=1 IE1IE1 外中斷中斷請求標(biāo)志外中斷中斷請求標(biāo)志 當(dāng)當(dāng)P3.3P3.3引腳信號有效時,引腳信號有效時,IE1=1IE1=1 IE0IE0 外中斷中斷請求標(biāo)志外中斷中斷請求標(biāo)志 當(dāng)當(dāng)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ā)送中斷標(biāo)志中斷標(biāo)志串行接收串行接收中斷標(biāo)志中斷標(biāo)志 TITI 串行口發(fā)送中斷請求標(biāo)志串行口發(fā)送中斷請求標(biāo)志 RIRI 串行口接收中斷請求標(biāo)志串行口接收中斷請求標(biāo)志 80C5180C51對中斷源的開放或關(guān)閉由中斷允許
8、控對中斷源的開放或關(guān)閉由中斷允許控制寄存器制寄存器IEIE控制??刂?。 中斷允許控制寄存器中斷允許控制寄存器IEIEIEIE的結(jié)構(gòu)、位名稱和位地址如下:的結(jié)構(gòu)、位名稱和位地址如下:IEIED7D7D6D6 D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱EAEA ESESET1ET1EX1EX1ET0ET0EX0EX0位地址位地址AFHAFH ACHACHABHABHAAHAAHA9HA9HA8HA8H中斷源中斷源CPUCPU 串行口串行口T1T1T0T0 EAEA CPUCPU中斷允許控制位中斷允許控制位 EA=1EA=1,CPUCPU開中;開中; EA=0EA=0,CPUCPU
9、關(guān)中,且屏蔽所有關(guān)中,且屏蔽所有5 5個中斷源。個中斷源。 EX0EX0 外中斷外中斷INT0INT0中斷允許控制位中斷允許控制位 EX0=1EX0=1,INT0INT0開中;開中;EX0=0EX0=0,INT0INT0關(guān)中。關(guān)中。 EX1EX1 外中斷外中斷INT1INT1中斷允許控制位中斷允許控制位 EX1=1EX1=1,INT1INT1開中;開中;EX1=0EX1=0,INT1INT1關(guān)中。關(guān)中。 ET0ET0 定時定時/ /計數(shù)器計數(shù)器T0T0中斷允許控制位中斷允許控制位 ET0=1ET0=1,T0T0開中;開中;ET0=0ET0=0,T0T0關(guān)中。關(guān)中。 ET1ET1 定時定時/ /
10、計數(shù)器計數(shù)器T1T1中斷允許控制位中斷允許控制位 ET1=1ET1=1,T1T1開中;開中;ET1=0ET1=0,T1T1關(guān)中。關(guān)中。 ESES 串行口中斷串行口中斷( (包括串發(fā)、串收包括串發(fā)、串收) )允許控制位允許控制位 ES=1ES=1,串行口開中;,串行口開中;ES=0ES=0,串行口關(guān)中。,串行口關(guān)中。說明說明: : 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)先級控制位??刂品椒ㄍ稀V袛鄡?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的結(jié)構(gòu)、位名稱和位地址如下:的結(jié)構(gòu)、位名稱和位地址如下:IEIED7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱PSPSPT1PT1PX1PX1PT0PT0PX0PX0位地址位地址BCHBCHBBHBBHBAHBAHB9HB9HB8HB8H中斷源中斷源串行口串行口T1T1INT1INT1T0T0INT0INT0三三. 中斷處理過程中斷處理過程 中斷處理過程大致可分為四步:中斷處理過程大致可分為四步: 中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回中斷請求、中斷響應(yīng)、中斷服
13、務(wù)、中斷返回 中斷請求中斷請求 中斷源發(fā)出中斷請求信號,相應(yīng)的中斷請求標(biāo)志位中斷源發(fā)出中斷請求信號,相應(yīng)的中斷請求標(biāo)志位( (在中斷在中斷允許控制寄存器允許控制寄存器IEIE中中) )置置“1”1”。 中斷響應(yīng)中斷響應(yīng) CPUCPU查詢(檢測)到某中斷標(biāo)志為查詢(檢測)到某中斷標(biāo)志為“1”1”,在滿足中斷響應(yīng),在滿足中斷響應(yīng)條件下,響應(yīng)中斷。條件下,響應(yīng)中斷。 中斷響應(yīng)條件中斷響應(yīng)條件: 該中斷已經(jīng)該中斷已經(jīng)“開中開中”; CPU CPU此時沒有響應(yīng)同級或更高級的中斷;此時沒有響應(yīng)同級或更高級的中斷; 當(dāng)前正處于所執(zhí)行指令的最后一個機(jī)器周期;當(dāng)前正處于所執(zhí)行指令的最后一個機(jī)器周期; 正在執(zhí)行的
14、指令不是正在執(zhí)行的指令不是RETIRETI或者是訪向或者是訪向IEIE、IPIP的指令,的指令, 否則必須再另外執(zhí)行一條指令后才能響應(yīng)。否則必須再另外執(zhí)行一條指令后才能響應(yīng)。 中斷響應(yīng)操作中斷響應(yīng)操作 CPUCPU響應(yīng)中斷后響應(yīng)中斷后, ,進(jìn)行下列操作:進(jìn)行下列操作: 保護(hù)斷點地址;保護(hù)斷點地址; 撤除該中斷源的中斷請求標(biāo)志;撤除該中斷源的中斷請求標(biāo)志; 關(guān)閉同級中斷;關(guān)閉同級中斷; 將相應(yīng)中斷的入口地址送入將相應(yīng)中斷的入口地址送入PCPC; 80C5180C51五個中斷入口地址五個中斷入口地址:INT0INT0:0003H0003H; T0T0:000BH000BH;INT1INT1:001
15、3H0013H T1 T1:001BH001BH;串行口:;串行口:0023H0023H 執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序 中斷服務(wù)程序應(yīng)包含以下幾部分:中斷服務(wù)程序應(yīng)包含以下幾部分: 保護(hù)現(xiàn)場保護(hù)現(xiàn)場 執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作 恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 中斷返回中斷返回 在中斷服務(wù)程序最后,必須安排一條中斷返回指令在中斷服務(wù)程序最后,必須安排一條中斷返回指令RETIRETI,當(dāng),當(dāng)CPUCPU執(zhí)行執(zhí)行RETIRETI指令后,自動完成下列操作:指令后,自動完成下列操作: 恢復(fù)斷點地址?;謴?fù)斷點地址。 開放同級中斷,以便允許同級中斷源請求中斷。開放同級中斷,以
16、便允許同級中斷源請求中斷。 四四. . 中斷響應(yīng)等待時間中斷響應(yīng)等待時間 若排除若排除CPUCPU正在響應(yīng)同級或更高級的中斷情況,中斷響應(yīng)等正在響應(yīng)同級或更高級的中斷情況,中斷響應(yīng)等待時間為待時間為: : 3 38 8個機(jī)器周期個機(jī)器周期五五. . 中斷請求的撤除中斷請求的撤除 中斷源發(fā)出中斷請求,相應(yīng)中斷請求標(biāo)志置中斷源發(fā)出中斷請求,相應(yīng)中斷請求標(biāo)志置“1”1”。 CPUCPU響響應(yīng)中斷后,必須清除中斷請求應(yīng)中斷后,必須清除中斷請求“1”1”標(biāo)志。否則中斷響應(yīng)返回后,標(biāo)志。否則中斷響應(yīng)返回后,將再次進(jìn)入該中斷,引起死循環(huán)出錯。將再次進(jìn)入該中斷,引起死循環(huán)出錯。 對定時對定時/ /計數(shù)器計數(shù)器
17、T0T0、T1T1中斷,外中斷邊沿觸發(fā)方式,中斷,外中斷邊沿觸發(fā)方式,CPUCPU響響應(yīng)中斷時就用硬件自動清除了相應(yīng)的中斷請求標(biāo)志。應(yīng)中斷時就用硬件自動清除了相應(yīng)的中斷請求標(biāo)志。 對外中斷電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后對外中斷電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后果。果。 對串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除對串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除TITI或或RIRI。六六. . 中斷優(yōu)先控制和中斷嵌套中斷優(yōu)先控制和中斷嵌套 中斷優(yōu)先控制中斷優(yōu)先控制 80C5180C51中斷優(yōu)先控制首先根據(jù)中斷優(yōu)先級,此外還規(guī)定了中斷優(yōu)先控制首先根據(jù)中斷優(yōu)先級,此外還規(guī)
18、定了同一中斷優(yōu)先級之間的中斷優(yōu)先權(quán)。其從高到低的順序為:同一中斷優(yōu)先級之間的中斷優(yōu)先權(quán)。其從高到低的順序為: INT0INT0、INT1INT1、T0T0、T1T1、串行口。、串行口。 中斷優(yōu)先級是可編程的中斷優(yōu)先級是可編程的,而,而中斷優(yōu)先權(quán)是固定的中斷優(yōu)先權(quán)是固定的,不能設(shè),不能設(shè)置,僅用于同級中斷源同時請求中斷時的優(yōu)先次序。置,僅用于同級中斷源同時請求中斷時的優(yōu)先次序。 80C5180C51中斷優(yōu)先控制的基本原則:中斷優(yōu)先控制的基本原則: 高優(yōu)先級中斷可以中斷正在響應(yīng)的低優(yōu)先級中斷,反之高優(yōu)先級中斷可以中斷正在響應(yīng)的低優(yōu)先級中斷,反之則不能。則不能。 同優(yōu)先級中斷不能互相中斷。同優(yōu)先級中
19、斷不能互相中斷。 同一中斷優(yōu)先級中,若有多個中斷源同時請求中斷,同一中斷優(yōu)先級中,若有多個中斷源同時請求中斷,CPUCPU將先響應(yīng)優(yōu)先權(quán)高的中斷,后響應(yīng)優(yōu)先權(quán)低的中斷。將先響應(yīng)優(yōu)先權(quán)高的中斷,后響應(yīng)優(yōu)先權(quán)低的中斷。 中斷嵌套中斷嵌套 當(dāng)當(dāng)CPUCPU正在執(zhí)行某個中斷服務(wù)程序時,如果發(fā)生更高一正在執(zhí)行某個中斷服務(wù)程序時,如果發(fā)生更高一級的中斷源請求中斷,級的中斷源請求中斷,CPUCPU可以可以“中斷中斷”正在執(zhí)行的低優(yōu)先正在執(zhí)行的低優(yōu)先級中斷級中斷,轉(zhuǎn)而響應(yīng)更高一級的中斷,這就是中斷嵌套。轉(zhuǎn)而響應(yīng)更高一級的中斷,這就是中斷嵌套。 中斷嵌套只能高優(yōu)先級中斷嵌套只能高優(yōu)先級“中斷中斷”低優(yōu)先級,低優(yōu)
20、先級不低優(yōu)先級,低優(yōu)先級不能能“中斷中斷”高優(yōu)先級,同一優(yōu)先級也不能相互高優(yōu)先級,同一優(yōu)先級也不能相互“中斷中斷”。 中斷嵌套結(jié)構(gòu)類似與中斷嵌套結(jié)構(gòu)類似與調(diào)用子程序嵌套,調(diào)用子程序嵌套,不同不同的是的是: 子程序嵌套是在程序子程序嵌套是在程序中事先按排好的;中斷中事先按排好的;中斷嵌套是隨機(jī)發(fā)生的。嵌套是隨機(jī)發(fā)生的。 子程序嵌套無次序限子程序嵌套無次序限制,中斷嵌套只允許高制,中斷嵌套只允許高優(yōu)先級優(yōu)先級“中斷中斷”低優(yōu)先低優(yōu)先級。級。七七. . 中斷系統(tǒng)的應(yīng)用中斷系統(tǒng)的應(yīng)用 中斷初始化中斷初始化 設(shè)置堆棧指針設(shè)置堆棧指針SPSP 定義中斷優(yōu)先級定義中斷優(yōu)先級 定義外中斷觸發(fā)方式定義外中斷觸發(fā)
21、方式 開放中斷開放中斷 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。 中斷服務(wù)主程序中斷服務(wù)主程序 中斷服務(wù)子程序內(nèi)容要求:中斷服務(wù)子程序內(nèi)容要求: 在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實際入口處。程序的實際入口處。 根據(jù)需要保護(hù)現(xiàn)場。根據(jù)需要保護(hù)現(xiàn)場。 中斷源請求中斷服務(wù)要求的操作。中斷源請求中斷服務(wù)要求的操作。 恢復(fù)現(xiàn)場。與保護(hù)現(xiàn)場相對應(yīng),注意先進(jìn)后出、后進(jìn)先出恢復(fù)現(xiàn)場。與保護(hù)現(xiàn)場相對應(yīng),注意先進(jìn)后出、后進(jìn)先出操作原則。操作原則。 中斷返回,最后一條指令必須是中斷返
22、回,最后一條指令必須是RETIRETI。【例】【例】 出租車計價器計程方法是車輪每運(yùn)轉(zhuǎn)一出租車計價器計程方法是車輪每運(yùn)轉(zhuǎn)一圈產(chǎn)生一個負(fù)脈沖,從外中斷(圈產(chǎn)生一個負(fù)脈沖,從外中斷(P3.2P3.2)引腳)引腳輸入,行駛里程為輪胎周長輸入,行駛里程為輪胎周長運(yùn)轉(zhuǎn)圈數(shù),設(shè)運(yùn)轉(zhuǎn)圈數(shù),設(shè)輪胎周長為輪胎周長為2m2m,試實時計算出租車行駛里程,試實時計算出租車行駛里程(單位米),數(shù)據(jù)存(單位米),數(shù)據(jù)存32H32H、31H31H、30H30H。 中斷系統(tǒng)應(yīng)用舉例中斷系統(tǒng)應(yīng)用舉例解:編程如下:解:編程如下: ORGORG 0000H 0000H; ;復(fù)位地址復(fù)位地址 LJMPLJMP STAT STAT;
23、;轉(zhuǎn)初始化轉(zhuǎn)初始化 ORGORG 0003H 0003H; ;中斷入口地址中斷入口地址 LJMPLJMP INT INT; ;轉(zhuǎn)中斷服務(wù)程序轉(zhuǎn)中斷服務(wù)程序 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; ;里程計數(shù)器清里程計數(shù)器清0
24、 0 MOV 31H,#0 MOV 31H,#0; ; MOV 32H,#0 MOV 32H,#0; ; LJMP MAIN LJMP MAIN; ;轉(zhuǎn)主程序轉(zhuǎn)主程序, ,并等待中斷并等待中斷 ORG 0200HORG 0200H; ;中斷服務(wù)子程序首地址中斷服務(wù)子程序首地址INT: PUSH AccINT: PUSH Acc; ;保護(hù)現(xiàn)場保護(hù)現(xiàn)場 PUSH PSWPUSH PSW; ; MOV A,30H MOV A,30H; ;讀低讀低8 8位計數(shù)器位計數(shù)器 ADD A,#2ADD A,#2; ;低低8 8位計數(shù)器加位計數(shù)器加2m2m MOV 30H,A MOV 30H,A; ;回存回存
25、CLR ACLR A; ; ADDC A,31H ADDC A,31H; ;中中8 8位計數(shù)器加進(jìn)位位計數(shù)器加進(jìn)位 MOV 31H,AMOV 31H,A; ;回存回存 CLR ACLR A; ; ADDC A,32H ADDC A,32H; ;高高8 8位計數(shù)器加進(jìn)位位計數(shù)器加進(jìn)位 MOV 32H,AMOV 32H,A; ;回存回存 PUSH PSWPUSH PSW; ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 PUSH Acc PUSH Acc ; ; RETI RETI; ;中斷返回中斷返回【例】現(xiàn)有【例】現(xiàn)有5 5個外中斷源個外中斷源EX1EX1、EX20EX20、EX21EX21、EX22EX22和和EX23
26、EX23,高電平時表示請求中斷,要求執(zhí)行相應(yīng)中斷,高電平時表示請求中斷,要求執(zhí)行相應(yīng)中斷服務(wù)程序,試編制程序。服務(wù)程序,試編制程序。 解:解:ORGORG0000H0000H; ;復(fù)位地址復(fù)位地址LJMPLJMP MAINMAIN ; ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORGORG0003H0003H; ;中斷入口地址中斷入口地址LJMPLJMP PINT0PINT0; ;轉(zhuǎn)中斷服務(wù)程序轉(zhuǎn)中斷服務(wù)程序ORGORG0013H0013H; ;中斷入口地址中斷入口地址LJMPLJMP PINT1PINT1; ;轉(zhuǎn)中斷服務(wù)程序轉(zhuǎn)中斷服務(wù)程序 ORGORG0100H0100H ; ;主程序首地址主程序首地址MAIN:
27、MOVMAIN: MOVSP,#60HSP,#60H; ;置堆棧指針置堆棧指針 ORLORLTCON,#05HTCON,#05H; ;置置INT0INT0、INT1INT1為邊沿觸發(fā)方式為邊沿觸發(fā)方式 SETBSETB PX0 PX0 ; ;置為高優(yōu)先級置為高優(yōu)先級 MOVMOVIE,#0FFHIE,#0FFH; ;全部開中全部開中 ; ;主程序內(nèi)容主程序內(nèi)容 ORG 1000HORG 1000H; ;中斷服務(wù)程序首地址中斷服務(wù)程序首地址 PINT0: PUSHPINT0: PUSH AccAcc; ;中斷中斷, ,保護(hù)現(xiàn)場保護(hù)現(xiàn)場 LCALL WORK1LCALL WORK1; ;調(diào)用調(diào)用E
28、X1EX1服務(wù)子程序服務(wù)子程序 POPPOPAccAcc; ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 RETIRETI; ;中斷返回中斷返回 ORGORG 2000H 2000H ; ;中斷服務(wù)程序首地址中斷服務(wù)程序首地址PINT1: CLRPINT1: CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ; ;中斷保護(hù)現(xiàn)場中斷保護(hù)現(xiàn)場 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,調(diào)用調(diào)用EX23EX23服務(wù)子服務(wù)子LRET:LRET: CLR CLR EA EA;CPU;CPU禁中禁中 POPPOP DPL DPL; ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 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,調(diào)用調(diào)用EX20EX20服務(wù)子程序服務(wù)子程序 SJMP LRET SJMP LRET ; ;轉(zhuǎn)中斷返回轉(zhuǎn)中斷返回LWK21LWK21: LCALL WORK21 : LCALL WORK21 ;P1.1 = 1,;P1.1 = 1,調(diào)用調(diào)用EX21EX21服務(wù)子程序服務(wù)子程序 SJMP LRETSJMP LRET; ;轉(zhuǎn)中斷返回轉(zhuǎn)中斷返回LWK22LWK22: LCALL WORK22 : LCALL WORK22 ;P
31、1.2 = 1,;P1.2 = 1,調(diào)用調(diào)用EX22EX22服務(wù)子程序服務(wù)子程序 SJMP LRETSJMP LRET; ;轉(zhuǎn)中斷返回轉(zhuǎn)中斷返回 定時定時/ /計數(shù)器是單片機(jī)系統(tǒng)一個重要的部計數(shù)器是單片機(jī)系統(tǒng)一個重要的部件,其工作方式靈活、編程簡單、使用方便,件,其工作方式靈活、編程簡單、使用方便,可用來實現(xiàn)可用來實現(xiàn)定時控制定時控制、延時延時、頻率測量頻率測量、脈寬脈寬測量測量、信號發(fā)生信號發(fā)生、信號檢測信號檢測等。此外,定時等。此外,定時/ /計數(shù)器還可作為串行通信中波特率發(fā)生器。計數(shù)器還可作為串行通信中波特率發(fā)生器。5-25-2 80C5180C51定時定時/ /計數(shù)器計數(shù)器 80C51
32、80C51單片機(jī)內(nèi)部有兩個定時單片機(jī)內(nèi)部有兩個定時/ /計數(shù)器計數(shù)器T0T0和和T1T1,其,其核心是計數(shù)器,基本功能是加核心是計數(shù)器,基本功能是加1 1。 對外部事件脈沖(下降沿)計數(shù),是計數(shù)器;對對外部事件脈沖(下降沿)計數(shù),是計數(shù)器;對片內(nèi)機(jī)周脈沖計數(shù),是定時器。片內(nèi)機(jī)周脈沖計數(shù),是定時器。 計數(shù)器由二個計數(shù)器由二個8 8位計數(shù)器組成。位計數(shù)器組成。 定時時間和計數(shù)值可以編程設(shè)定,其方法是在計定時時間和計數(shù)值可以編程設(shè)定,其方法是在計數(shù)器內(nèi)設(shè)置一個初值,然后加數(shù)器內(nèi)設(shè)置一個初值,然后加1 1計滿后溢出。調(diào)整計滿后溢出。調(diào)整計數(shù)器初值,可調(diào)整從初值到計滿溢出的數(shù)值,計數(shù)器初值,可調(diào)整從初值
33、到計滿溢出的數(shù)值,即調(diào)整了定時時間和計數(shù)值。即調(diào)整了定時時間和計數(shù)值。 定時定時/ /計數(shù)器作為計數(shù)器時,外部事件脈沖必須從計數(shù)器作為計數(shù)器時,外部事件脈沖必須從規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超過時鐘頻率的過時鐘頻率的1/241/24。一一. . 定時定時/ /計數(shù)器概述計數(shù)器概述TCONTCON低低4 4位與外中斷位與外中斷 、 有關(guān),已在有關(guān),已在中斷中敘述。中斷中敘述。 高高4 4位與定時位與定時/ /計數(shù)器計數(shù)器T0T0、T1T1有關(guān)。有關(guān)。 TF1: TF1:定時定時/ /計數(shù)器計數(shù)器T1T1溢出標(biāo)志。溢出標(biāo)志。 TF0: TF0:
34、定時定時/ /計數(shù)器計數(shù)器T0T0溢出標(biāo)志。溢出標(biāo)志。 TR1: TR1:定時定時/ /計數(shù)器計數(shù)器T1T1運(yùn)行控制位。運(yùn)行控制位。TR1=1,T1TR1=1,T1運(yùn)行運(yùn)行;TR1=0,T1;TR1=0,T1停。停。 TR0: TR0:定時定時/ /計數(shù)器計數(shù)器T0T0運(yùn)行控制位。運(yùn)行控制位。TR0=1,T0TR0=1,T0運(yùn)行運(yùn)行;TR0=0,T0;TR0=0,T0停。停。TCONTCON的字節(jié)地址為的字節(jié)地址為88H88H,每一位有位地址,均可位操作。,每一位有位地址,均可位操作。 定時定時/ /計數(shù)器控制寄存器計數(shù)器控制寄存器TCONTCON二二. . 定時定時/ /計數(shù)器的控制寄存器計
35、數(shù)器的控制寄存器TCONTCONT1T1中斷中斷標(biāo)志標(biāo)志T1T1運(yùn)行運(yùn)行標(biāo)志標(biāo)志T0T0中斷中斷標(biāo)志標(biāo)志T0T0運(yùn)行運(yùn)行標(biāo)志標(biāo)志INT1INT1中斷中斷標(biāo)志標(biāo)志INT1INT1觸發(fā)觸發(fā)方式方式INT0INT0中斷中斷標(biāo)志標(biāo)志INT0INT0觸發(fā)觸發(fā)方式方式位名稱位名稱TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88HINT0INT1高高4 4位控制位控制T1T1低低4 4位控制位控制T0T0門控門控位位計數(shù)計數(shù)/ /定時定時方式選擇方式選擇工
36、作方式工作方式選擇選擇門控門控位位計數(shù)計數(shù)/ /定時定時方式選擇方式選擇工作方式工作方式選擇選擇G GC / TC / TM1M1M0M0G GC / TC / TM1M1M0M0TMODTMOD用于設(shè)定定時用于設(shè)定定時/ /計數(shù)器的工作方式計數(shù)器的工作方式低低4 4位用于控制位用于控制T0T0,高高4 4位用于控制位用于控制T1T1。 定時定時/ /計數(shù)器工作方式控制寄存器計數(shù)器工作方式控制寄存器TMODTMOD M1M0 M1M0 工作方式選擇位工作方式選擇位M1M0M1M0工作方式工作方式功能功能0000方式方式0 01313位計數(shù)器位計數(shù)器0101方式方式1 11616位計數(shù)器位計數(shù)器
37、1010方式方式2 2兩個兩個8 8位計數(shù)器,初值自動裝入位計數(shù)器,初值自動裝入1111方式方式3 3兩個兩個8 8位計數(shù)器,僅適用位計數(shù)器,僅適用T0T0 C/T C/T 計數(shù)計數(shù)/ /定時方式選擇位定時方式選擇位 C/T=1,C/T=1,計數(shù)工作方式計數(shù)工作方式, ,對外部事件脈沖計數(shù)對外部事件脈沖計數(shù), ,用作計數(shù)器。用作計數(shù)器。 C/T=0,C/T=0,定時工作方式定時工作方式, ,對片內(nèi)機(jī)周脈沖計數(shù)對片內(nèi)機(jī)周脈沖計數(shù), ,用作定時器。用作定時器。 GATE GATE 門控位門控位 GATE=0GATE=0,運(yùn)行只受,運(yùn)行只受TCONTCON中運(yùn)行控制位中運(yùn)行控制位TR0/TR1TR0
38、/TR1的控制。的控制。 GATE=1GATE=1,運(yùn)行同時受,運(yùn)行同時受TR0/TR1TR0/TR1和外中斷輸入信號和外中斷輸入信號的雙重控制。的雙重控制。 只有當(dāng)只有當(dāng)INT0/INT1=1INT0/INT1=1且且TR0/TR1=1,T0/T1TR0/TR1=1,T0/T1才能運(yùn)行。才能運(yùn)行。 TMODTMOD字節(jié)地址字節(jié)地址89H,89H,不能位操作不能位操作, ,設(shè)置設(shè)置TMODTMOD須用字節(jié)操作指令。須用字節(jié)操作指令。三三. . 定時定時/ /計數(shù)器工作方式計數(shù)器工作方式 工作方式工作方式0 0 1313位位計數(shù)器,由計數(shù)器,由TL0TL0低低5 5位和位和TH0 8TH0 8位
39、組成,位組成,TL0TL0低低5 5位計數(shù)滿時不向位計數(shù)滿時不向TL0TL0第第6 6位位進(jìn)位,而是向進(jìn)位,而是向TH0TH0進(jìn)位,進(jìn)位,1313位計滿溢出,位計滿溢出,TF0TF0置置“1”1”。最大計數(shù)值最大計數(shù)值2 21313 = 8192 = 8192。 工作方式工作方式1 1 1616位位計數(shù)器,計數(shù)器,最大計數(shù)值為最大計數(shù)值為2 21616 = 65536 = 65536。 工作方式工作方式2 2 8 8位位計數(shù)器,僅用計數(shù)器,僅用TL0TL0計數(shù),計數(shù),最大計數(shù)值為最大計數(shù)值為2 28 8= 256= 256,計滿溢出后,一方面進(jìn),計滿溢出后,一方面進(jìn)位位TF0TF0,使溢出標(biāo)志
40、,使溢出標(biāo)志TF0 = 1TF0 = 1;另一方面,使原來裝在;另一方面,使原來裝在TH0TH0中的初值裝入中的初值裝入TL0TL0。 優(yōu)點:定時初值可自動恢復(fù)優(yōu)點:定時初值可自動恢復(fù); ;缺點:計數(shù)范圍小。缺點:計數(shù)范圍小。 適用于需要重復(fù)定時,而定時范圍不大的應(yīng)用場合。適用于需要重復(fù)定時,而定時范圍不大的應(yīng)用場合。 工作方式工作方式3 3 方式方式3 3僅適用于僅適用于T0T0,T1T1無方式無方式3 3。 T0T0方式方式3 3 在方式在方式3 3情況下情況下, ,T0T0被拆成二個獨(dú)立的被拆成二個獨(dú)立的8 8位計數(shù)器位計數(shù)器TH0TH0、TL0TL0。 TL0 TL0使用使用T0T0原
41、有的控制寄存器資源原有的控制寄存器資源:TF0,TR0,GATE,C/T,INT0,:TF0,TR0,GATE,C/T,INT0,組成一個組成一個8 8位的定時位的定時/ /計數(shù)器;計數(shù)器; TH0 TH0借用借用T1T1的中斷溢出標(biāo)志的中斷溢出標(biāo)志TF1,TF1,運(yùn)行控制開關(guān)運(yùn)行控制開關(guān)TR1,TR1,只能對片內(nèi)機(jī)周脈沖只能對片內(nèi)機(jī)周脈沖計數(shù)計數(shù), ,組成另一個組成另一個8 8位定時器位定時器( (不能用作計數(shù)器不能用作計數(shù)器) )。 T0T0方式方式3 3情況下的情況下的T1T1 T1 T1由于其由于其TF1TF1、TR1TR1被被T0T0的的TH0TH0占用,計數(shù)器溢出時,只能將輸出信號
42、送至占用,計數(shù)器溢出時,只能將輸出信號送至串行口,即串行口,即用作串行口波特率發(fā)生器用作串行口波特率發(fā)生器。其中其中: N: N與工作方式有關(guān)與工作方式有關(guān): : 方式方式0 0時時, ,N=N=1313; 方式方式1 1時時, ,N=N=1616; 方式方式2 2、3 3時時, ,N=N=8 8。 機(jī)周時間與主振頻率有關(guān)機(jī)周時間與主振頻率有關(guān): :機(jī)周時間機(jī)周時間=12/fosc=12/fosc fosc=fosc=12MHZ12MHZ時時,1 1機(jī)周機(jī)周= =1 1 S S; fosc=fosc=6MHZ6MHZ 時時,1 1機(jī)周機(jī)周= =2 2 S S。 四四. . 定時定時/ /計數(shù)器
43、的應(yīng)用計數(shù)器的應(yīng)用 計算定時計算定時/ /計數(shù)初值計數(shù)初值80C5180C51定時定時/ /計數(shù)初值計算公式:計數(shù)初值計算公式:解:解:工作方式工作方式0 0: 2 21313500500 S/2S/2 S=8192-250=7942=1F06HS=8192-250=7942=1F06H 1F06H 1F06H化成二進(jìn)制:化成二進(jìn)制: 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時計算定時初值比較麻煩,根據(jù)時計算定時初值比較麻煩,根據(jù)公式計算出數(shù)值后,還要變換一下,容易出錯,不如直接用公式計算出數(shù)值后,還要變換一下,容易出錯,不如直接用方式方式1 1,且方式,且方式0 0計數(shù)范圍比方式計數(shù)范圍比方式1 1小,小,方式方式0 0完全可以用方式完全可以用方式1 1代替,方式代替,方式0 0與方式與方式1 1相比,無任何優(yōu)點相比,無任何優(yōu)點。 定時定時/ /計數(shù)器應(yīng)用步驟計數(shù)器應(yīng)用步驟 合理選擇定時合理選擇定時/ /計數(shù)器工作方式計數(shù)器工作方式 計算定時計
47、算定時/ /計數(shù)器定時初值計數(shù)器定時初值( (按上述公式計算按上述公式計算) ) 編制應(yīng)用程序編制應(yīng)用程序 定時定時/ /計數(shù)器的初始化計數(shù)器的初始化 包括定義包括定義TMODTMOD、寫入定時初值、設(shè)置中斷系統(tǒng)、啟動、寫入定時初值、設(shè)置中斷系統(tǒng)、啟動定時定時/ /計數(shù)器運(yùn)行等。計數(shù)器運(yùn)行等。 正確編制定時正確編制定時/ /計數(shù)器中斷服務(wù)程序計數(shù)器中斷服務(wù)程序 注意是否需要重裝定時初值,若需要連續(xù)反復(fù)使用原注意是否需要重裝定時初值,若需要連續(xù)反復(fù)使用原定時時間,且未工作在方式定時時間,且未工作在方式2 2,則應(yīng)在中斷服務(wù)程序中重裝,則應(yīng)在中斷服務(wù)程序中重裝定時初值。定時初值?!纠吭囉谩纠吭?/p>
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 設(shè)置設(shè)置TMODTMOD: 0 0 0 0 1010 00000000 B=20H B=20H T0 T0控制位,與控制位,與T1T1無關(guān)無關(guān) T1T1方式方式2 2 T1 T1定時器定時
49、器 T1T1啟動與啟動與 無關(guān)無關(guān)INT1 編制程序編制程序如下:如下: ORGORG0000H0000H ; ;復(fù)位地址復(fù)位地址LJMPLJMPMAINMAIN ; ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORGORG001BH001BH ;T1;T1中斷入口地址中斷入口地址LJMPLJMPIT1IT1 ; ;轉(zhuǎn)轉(zhuǎn)T1T1中斷服務(wù)程序中斷服務(wù)程序 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運(yùn)行運(yùn)行SJMPSJMP$ $ ; ;等待等待T1T1中斷中斷 ORG 0200H ORG 0200H ;T1;T1中斷服務(wù)程序首地址中斷服務(wù)程序首地址IT1:IT1: CPL P1.0 CPL P1.0 ; ;輸出波形取反首地址輸出波形取反首地址RETI RETI ; ;中斷返回中斷返回【課堂練習(xí)題】【課堂練習(xí)題】 參照以上例
51、題工作方式參照以上例題工作方式2 2,按下列要求分別,按下列要求分別修改程序:修改程序: 脈沖方波從脈沖方波從P3.0P3.0輸出;輸出; fosc=6MHz fosc=6MHz; 脈沖方波脈寬為脈沖方波脈寬為100100 s s; 用定時用定時/ /計數(shù)器計數(shù)器T0T0;【例】已知晶振【例】已知晶振12MHZ12MHZ,參閱圖,參閱圖5-15,5-15,要求利用定時器要求利用定時器 T0T0使圖中發(fā)光二極管使圖中發(fā)光二極管D D進(jìn)行秒閃爍。進(jìn)行秒閃爍。 解:發(fā)光二極管進(jìn)行秒解:發(fā)光二極管進(jìn)行秒閃爍。即一秒鐘一亮一閃爍。即一秒鐘一亮一暗,亮暗,亮500ms500ms,暗,暗500 500 ms
52、ms。晶振。晶振12MHz12MHz,每機(jī),每機(jī)周周1 1 s s,T0T0方式方式1 1最大定最大定時只能時只能65ms65ms余。余。 取取T0T0定時定時50ms50ms,計,計數(shù)數(shù)1010次,即可實現(xiàn)次,即可實現(xiàn)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。 設(shè)置設(shè)置TMODTMOD: 00000000 0 0 0 0 0101 B
53、= 01H B = 01H T0 T0方式方式1 1 T0T0 與與 無關(guān)無關(guān) T1T1控制位控制位INT0 編制程序編制程序如下:如下: ORGORG 0000H 0000H ; ;復(fù)位地址復(fù)位地址LJMPLJMP MAIN MAIN ; ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORGORG 000BH 000BH ;T0;T0中斷入口地址中斷入口地址LJMPLJMP IT0 IT0 ; ;轉(zhuǎn)轉(zhuǎn)T0T0中斷服務(wù)程序中斷服務(wù)程序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計數(shù)器初值計數(shù)器初值 SETBSETB TR0 TR0 ;T0;T0運(yùn)行運(yùn)行SJMPSJMP $ $ ; ;等待中斷等待中斷 【例】已知【例】已知fosc=6MHzfosc=6MHz,試編寫,試編寫2424小時模擬電子鐘程序,秒分時數(shù)分別存在小時模擬電子鐘程序,秒分時數(shù)分別存在R1R1、
55、R2R2、R3R3中,可直接調(diào)用顯示程序中,可直接調(diào)用顯示程序DIRDIR。解:解: ORG 0000H ORG 0000H ; ;復(fù)位地址復(fù)位地址 LJMP IT0 LJMP IT0 ; ;轉(zhuǎn)轉(zhuǎn)主程序主程序 ORG 000BH ORG 000BH ;T0;T0中斷入口地址中斷入口地址 LJMP IT0 LJMP IT0 ;T0;T0中斷中斷, ,轉(zhuǎn)轉(zhuǎn)T0T0中斷服務(wù)子程序中斷服務(wù)子程序IT0IT0 ORG 1000H ORG 1000H ; ;主程序首地址主程序首地址START:MOV R1,#0 START:MOV R1,#0 ; ;秒計數(shù)器清秒計數(shù)器清0 0 MOV R2,#0 MOV
56、R2,#0 ; ;分計數(shù)器清分計數(shù)器清0 0 MOV R3,#0 MOV R3,#0 ; ;時計數(shù)器清時計數(shù)器清0 0 MOV R4,#0 MOV R4,#0 ;500;500 S S計數(shù)器清計數(shù)器清0 0 MOV R5,#0 MOV R5,#0 ;100ms;100ms計數(shù)器清計數(shù)器清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 ; ;用于自動恢復(fù)定時初值用于自動恢復(fù)定時初
57、值 SETB TR0 SETB TR0 ; ;啟動啟動T0T0WAIT: LCALL DIR WAIT: LCALL DIR ; ;顯示時鐘時分秒并等待中斷顯示時鐘時分秒并等待中斷 SJMP WAIT SJMP WAIT ; ;循環(huán)顯示循環(huán)顯示 ORG 0200HORG 0200H ;T0 ;T0中斷服務(wù)程序首地址中斷服務(wù)程序首地址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 ; ;恢復(fù)恢復(fù)50mS50mS計
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地鐵車站非開挖擴(kuò)建協(xié)議
- 公園停車場租賃協(xié)議
- 智能化工程監(jiān)理協(xié)議
- 疾控中心醫(yī)師招聘協(xié)議書樣本
- 度假村溫室大棚建設(shè)協(xié)議
- 湖泊治理水井租賃協(xié)議
- 2024年工程車輛臨時租約協(xié)議
- 低空經(jīng)濟(jì)賦能新質(zhì)生產(chǎn)力實現(xiàn)突破的規(guī)劃
- 2024境內(nèi)旅游組團(tuán)社與地接社合同示范文本
- 2024【旅行社勞動合同】旅行社勞動合同范本
- 白改黑施工組織設(shè)計
- ICU患者失禁性皮炎的預(yù)防及護(hù)理新進(jìn)展
- 半導(dǎo)體工藝 摻雜原理與技術(shù)
- 南京航空航天大學(xué)考試卷
- “葫蘆絲進(jìn)初中音樂課堂的策略研究”課題結(jié)題報告
- GB/T 10822-2014一般用途織物芯阻燃輸送帶
- GA/T 1629-2019法庭科學(xué)血液、尿液中百草枯檢驗氣相色譜和氣相色譜-質(zhì)譜法
- 開題報告 地方政府融資平臺問題分析與轉(zhuǎn)型發(fā)展研究-以A平臺公司為例
- 中小學(xué)幼兒園師德師風(fēng)監(jiān)測臺賬(對教師)
- 科技改變生活-課件
- UPS電源蓄電池更換實施方案
評論
0/150
提交評論