MCS-51系列單片機(jī)的中斷系統(tǒng)及定時(shí)器計(jì)數(shù)器_第1頁
MCS-51系列單片機(jī)的中斷系統(tǒng)及定時(shí)器計(jì)數(shù)器_第2頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、MCS-51 系列單片機(jī)的中斷系統(tǒng)及定時(shí)器/計(jì)數(shù)器3. 1 中斷的概念眾所周知,CPU 的工作速度愈來愈快,CPU 啟動(dòng)外部設(shè)備輸入/輸岀一個(gè)字節(jié)數(shù)據(jù)只需要微秒級(jí)甚至更短的時(shí)間,而低速的外設(shè)工作速度一般在毫秒級(jí),若CPU 和外部設(shè)備是串行工作的,則 CPU 就浪費(fèi)了很多時(shí)間去等待外設(shè),其效率大大降低。若沒有中斷技術(shù),CPU 難于為多個(gè)設(shè)備服務(wù),對(duì)故障的處理能力也極差。為了解決這些問題,在計(jì)算機(jī)中引入了中斷技術(shù),目前所有的計(jì)算機(jī)都有中斷處理的能力。3. 1. 1 中斷的基本概念及相關(guān)術(shù)語中斷是 CPU 在執(zhí)行現(xiàn)行程序的過程中,發(fā)生隨機(jī)事件和特殊請(qǐng)求時(shí),使CPU 中止現(xiàn)行程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行隨機(jī)

2、事件或特殊請(qǐng)求的處理程序,待處理完畢后,再返回被中止的程序繼續(xù)執(zhí)行的過程。實(shí)現(xiàn)中 斷的硬件邏輯和實(shí)現(xiàn)中斷功能的指令統(tǒng)稱為中斷系統(tǒng)。引起中斷的事件稱為中斷源,實(shí)現(xiàn)中斷功能的處理 程序稱為中斷服務(wù)程序。中斷的響應(yīng)過程如圖3. 1 所示,(a)為單級(jí)中斷,(b)為兩級(jí)中斷嵌套。對(duì)于中斷系統(tǒng)來說,引起中斷的事件稱為中斷源;由中斷源向 CPU 所發(fā)出的請(qǐng)求中斷的信號(hào)稱為中斷請(qǐng)求信號(hào);CPU 中止現(xiàn)行程序執(zhí)行的位置稱為中斷斷點(diǎn);中斷斷點(diǎn)處的程序位置稱為中斷現(xiàn)場(chǎng);由中斷服 務(wù)程序返回到原來程序的過程稱為中斷返回;CPU 接受中斷請(qǐng)求而中止現(xiàn)行程序,轉(zhuǎn)去為中斷源服務(wù)稱為中斷響應(yīng)。在中斷系統(tǒng)中,對(duì)中斷斷點(diǎn)的保護(hù)

3、是 CPU 在響應(yīng)中斷時(shí)自動(dòng)完成的,中斷服務(wù)完成時(shí)執(zhí)行中斷返回指 令而得到恢復(fù);對(duì)于中斷斷點(diǎn)處其他數(shù)據(jù)的保護(hù)與恢復(fù)是通過在中斷服務(wù)程序中采用堆棧操作指令PUSH及 POP 來實(shí)現(xiàn)的,這種操作通常稱為保護(hù)現(xiàn)場(chǎng)與恢復(fù)現(xiàn)場(chǎng)。申臥1Its”軸6.民i*.號(hào)購i *-!H島*1草吐帆申HM(或月氛.*卜輒 中卑比 圧旳* l*CSMi -5!事片機(jī)丈時(shí)蘇:壯読旳:-炸:丄乳 INTWWfl 11jn_TWfTJJTUKiUlL |tuapTFi:曲始新一輪的計(jì)數(shù)。由于方式 0 或方式 1 是通過指令裝入計(jì)數(shù)初值的,而執(zhí)行指令需要時(shí)問,因此,在方式 2 的定時(shí)時(shí)間比較準(zhǔn)確。 方式 2 的內(nèi)部結(jié)構(gòu)如圖 3.

4、 7 所示。在方式 2 時(shí),TLO/TLI 作為 8 位計(jì)數(shù)器,THO/THI 為自動(dòng)恢復(fù)初值的 8 位計(jì)數(shù)器。當(dāng) TLO/TLI 計(jì) 數(shù)發(fā)生溢出時(shí),一方面置溢出中斷請(qǐng)求標(biāo)志TFO/TFI 為 1,向 CPU 請(qǐng)求中斷,同時(shí)又將 TO/THI 的內(nèi)容送入 TLO/ TLI,使 TO/TI 從初值開始重新加 I 計(jì)數(shù)。因此 TO/ TI 工作于方式 2 時(shí),定時(shí)精度高,但定時(shí) 時(shí)間范圍小。由圖 3.7 可知,方式 2 的 TO/T1 計(jì)數(shù)控制與方式 O 和方式 1 完全相同,不同之處在于當(dāng)CPU 響應(yīng) TO/TI 的溢出中斷后會(huì)自動(dòng)將 THO/THI 的內(nèi)容填充到 TLO/TLI。TO/ TI

5、以方式 2 工作時(shí),定時(shí)/計(jì)數(shù)初值的計(jì)算方法如下:當(dāng) TO/TI 以方式 2 定時(shí)時(shí),假設(shè)時(shí)鐘頻率以fosc 表示,定時(shí)初值以 a 表示,那么三者關(guān)系為:12t=- (28-a)fosc若給定定時(shí)時(shí)間的要求,定時(shí)初值a 的大小為:12X28-t 粘 sca=-12比如 fosc=12MHz,TI 的定時(shí)時(shí)間 t=200 xg,s則定時(shí)初值 a 為:12X28-20 X10-3 X12X106a=- =256-200=5612因此,TLO 的初值為 56,TH0 的初值為 56,對(duì) T0 的初始化的子程序?yàn)椋篒NTT0 : MOV THO,#56MOV TLO,#56SETB EASETB ET

6、OSETB TRO當(dāng) TO/Tl 以方式 0 計(jì)數(shù)時(shí),假設(shè)系統(tǒng)所需計(jì)取脈沖的個(gè)數(shù)以菇表示,計(jì)數(shù)初值以。表示,則二者的關(guān) 系為:a=28-x4方式 3方式 3 為兩個(gè) 8 位定時(shí)器肘數(shù)器工作方式,它只適用于定時(shí)器/計(jì)數(shù)器TO,若將 Tl 設(shè)置為方式 3,則Tl 將停止計(jì)數(shù)。方式 3 內(nèi)部邏輯結(jié)構(gòu)如圖 3 8 所示。由圖 3 8 可知,方式 3 是將 TO 拆分為兩個(gè) 8 位定時(shí)器/計(jì)數(shù)器。其中 8 位計(jì)數(shù)器 TLO,使用原來 TO 的控制位(C/T、GATE、TRO、IN TO)形成一個(gè) 8 位的定時(shí)器/計(jì)數(shù)器,它既可以定時(shí)(對(duì)時(shí)鐘頻率的 12 分頻信號(hào)進(jìn)行計(jì)數(shù)),也可以實(shí)現(xiàn)計(jì)數(shù);而 8 位計(jì)數(shù)

7、器 THO,占用原來 T1 的控制位仃 Rl、TF1),它只能對(duì)內(nèi) 部計(jì)數(shù)脈沖進(jìn)行計(jì)數(shù),其運(yùn)行僅受 TRl 位的控制,而與外部引腳 INTI 的電平狀態(tài)無關(guān)。定時(shí)器/計(jì)數(shù)器 TO 工作于方式 3 時(shí),定時(shí)器/計(jì)數(shù)器 Tl 仍可設(shè)置為方式 O、方式 1 方式 2。但由 于 TRl、TFl 已被定時(shí)器 THO 占用,此時(shí)定時(shí)器/計(jì)數(shù)器僅由控制位C/T 設(shè)置其定時(shí)或計(jì)數(shù)方式,當(dāng)計(jì)數(shù)器計(jì)滿發(fā)生溢岀時(shí),只能將輸岀送往串行口。在這種情況下,Tl 一般用做串行口波特率發(fā)生器,或不需要中斷的場(chǎng)合。方式 3 的兩個(gè) 8 位定時(shí)器/計(jì)數(shù)器的定時(shí)或計(jì)數(shù)初值的計(jì)算方法與方式2 完全相同,不再重復(fù)。3. 3 3 定時(shí)器

8、/計(jì)數(shù)器應(yīng)用舉例MCS-51 系列單片機(jī)的定時(shí)器/計(jì)數(shù)器均是可編程的,在利用定時(shí)器/計(jì)數(shù)器進(jìn)行定時(shí)或計(jì)數(shù)之前, 必須要通過軟件對(duì)它們進(jìn)行初始化。初始化包括的內(nèi)容如下:根據(jù)實(shí)際需要確定工作方式,對(duì)方式寄存器TMOD 初始化。即根據(jù)實(shí)際的需要選擇工作方式,形成相應(yīng)的方式控制字,在程序中將方式控制字填充給TMOD。根據(jù)實(shí)際定時(shí)/計(jì)數(shù)的需要確定初值,進(jìn)行定時(shí)/計(jì)數(shù)初值的填充。根據(jù)需要開放相應(yīng)的中斷,即對(duì)中斷允許控制寄存器IE 進(jìn)行初始化。啟動(dòng)定時(shí)器/計(jì)數(shù)器工作,即根據(jù)需要對(duì)TCON 進(jìn)行初始化。例 3. 1 利用 TO 產(chǎn)生 I ms 的定時(shí),使 Pl. O 引腳輸入一個(gè)周期為 2 ms,占空比為 1

9、 : 1 的方波信號(hào)(假 定時(shí)鐘頻率 f。g=12MHz)。解:分析要形成周期為 2ms 的方波信號(hào),只要利用 TO 產(chǎn)生定時(shí),每隔 1 ms 將 Pl. 0 引腳狀態(tài)取反即確定工作方式:TO 要實(shí)現(xiàn) I ms 的定時(shí),方式 0 和方式 1 均可,在此選擇方式 0;而在此例中沒有對(duì)TI 提出任何要求,所以 TMOD 的高 4 位任意。因此方式控制字為:OOOOOOOOB=OOH。(2)確定定時(shí)初值:W =UiOOOOOIIOODBA I18H.麻 W 圖 3 借蘇,掰解蝦:0001HUMPMAINORGmnIJMPINTTOMAIS:HOVTKODJOOH略麒81棒湖TLOF*ISHMOVTH

10、l.tOEOH訃;riHf:TByMnMOVCPLKKTt END i WIOi*1 u;l*K*lft1圖 3. 9 例 3. 1 的控制程序流程圖例 3. 2 采用定時(shí)器控制 PI. O 引腳輸出一個(gè)周期為 2 分鐘,占空比為 1: 1 的方波信號(hào)(時(shí)鐘頻率為12MHz)。解:要形成周期為 2 分鐘的方波信號(hào),只要每隔 I 分鐘將 PI. O 引腳的狀態(tài)取反即可。而 TO/TI 無論 是采用方式 O、方式 1 或方式 2,都不可能直接實(shí)現(xiàn) 1 分鐘的定時(shí)時(shí)間。對(duì)于這種長(zhǎng)時(shí)間的定時(shí),一般可以 采用兩種方法:一種方法是采用定時(shí)器定時(shí)加軟件計(jì)數(shù)方法來實(shí)現(xiàn)長(zhǎng)定時(shí),這種方法省硬件資源。另一種 方法是

11、將兩個(gè)定時(shí)器/計(jì)數(shù)器合用實(shí)現(xiàn)長(zhǎng)定時(shí)方法,這種方法占用兩個(gè)定時(shí)器/計(jì)數(shù)器,其中一個(gè)作為定TH I O|Tl. VOEOIIHiO時(shí)器,另一個(gè)作為計(jì)數(shù)器,所以硬件資源占用多,而且要進(jìn)行外部連線。下面采用定時(shí)器定時(shí)加軟件計(jì)數(shù)的方法來實(shí)現(xiàn)長(zhǎng)定時(shí)功能。假設(shè)用 TI 定時(shí) 50ms,軟件計(jì)數(shù) 1200 次,實(shí)現(xiàn) I 分鐘定時(shí)。為此用 20H 單元作 50ms 計(jì)數(shù)單元,計(jì)滿 20 次為Is; 21H 單元為秒計(jì)數(shù)單元,計(jì)滿 60 次為 I 分鐘。(1) 方式控制字:要實(shí)現(xiàn) 50ms 的定時(shí)只有 TI 工作于方式 1,所以方式控制字為:00010000B=10H。(2) 定時(shí)初值 t即M 111 nviin

12、i tiF切I諂H圖 3 . 10 例 3. 2 的控制程序流程圖(3)程序流程圖如圖 3. 10 所示ORGLJMPORGLJMPMAIN : MOVMOVMOVMOVSETBSETBETBMOV,程序清單如下:0000HMAIN001BHINTTISP,#70H ;設(shè)置堆棧區(qū)TMOD,#10H ;送方式控制字THI,#3CH ; 送定時(shí)初值TLI,#080HEA開放 TI 中斷ETITRI啟動(dòng) TI 開始定時(shí)20H,#20 ; 秒單元賦初值MOV21H ,#60 ;分單元賦初值SJMP$ ; 等待INTTl : MOVTHl ,#3CH ;重裝初值MOVTLl #0BOHDJNZ20H,N

13、0 ;ls 未到,轉(zhuǎn) NOMOV20H ,#20DJNZ21H ,N0 ;1 分鐘未到,轉(zhuǎn) NOMOV21H ,#60CPLPl0N0: RETIEND在上述兩個(gè)例子中,中斷服務(wù)程序都要進(jìn)行計(jì)數(shù)器初值重裝等操作。這樣在定時(shí)器溢出發(fā)出中斷請(qǐng)求 到重裝完初值并在此基礎(chǔ)上重新開始計(jì)數(shù)定時(shí),總有一定的時(shí)間間隔,造成定時(shí)時(shí)間多增加了若干微秒的 時(shí)間。如果采用工作方式 2,可避免重裝初值所造成的誤差,使定時(shí)器定時(shí)比較精確,但方式2 的計(jì)數(shù)長(zhǎng)度只有 8 位,定時(shí)時(shí)間較短。前面兩個(gè)例子是定時(shí)器方式的應(yīng)用,比較起來,方式 0 沒有可取之處,如果要求定時(shí)時(shí)間長(zhǎng)時(shí),直接 就使用方式l ,而不會(huì)去考慮使用方式 0。通

14、過兩個(gè)例子,基本掌握了定時(shí)中斷該如何應(yīng)用,實(shí)際上定時(shí)器 肼數(shù)器的中斷請(qǐng)求標(biāo)志也可以供查詢使用,請(qǐng)看例33。例 3 3 將 T0 對(duì)外部脈沖進(jìn)行計(jì)數(shù),每計(jì)滿 100 次后從 Pl 0 輸出寬度為 1ms 的高電平,如此循環(huán) 下去 (時(shí)鐘頻率為 6MHz) 。解:上述問題是 T0 交替工作于計(jì)數(shù)器方式和定時(shí)器方式,先計(jì)數(shù),計(jì)滿100 次后改為定時(shí)器方式,1ms 后又回到計(jì)數(shù)器方式。設(shè)計(jì)數(shù)器為方式2,定時(shí)器為方式 1,則:(1)T0 的方式控制字:計(jì)數(shù)時(shí)為 000001 10B=06H ,定時(shí)時(shí)為 O0000001B=01H 。(2)T0 的定時(shí)初值:計(jì)數(shù)初值為9cH;定時(shí)初值為 FEOCH。程序流

15、程圖如圖稗序清單如下:TIM :CLRTR0 ;停止 T0 工作SETBPl0Pl0 為高電平MOVTMOD ,#01H ; T0 為定時(shí)方式MOVTH0,#0FEH; 送定時(shí)初值MOVTL0 ,#0CHSETBTR0 ;啟動(dòng) T0 定時(shí)SJMPWAITl311 所示。0RG0030HCNT: CLRTR0MOVTMOD , #06HMOVTH0 ,#9CH ;T0 為計(jì)數(shù)方式送計(jì)數(shù)初值MOVSETBTL0 ,#9CHTR0 ;啟動(dòng) T0 計(jì)數(shù)CLRPl,0Pl0 為低電平WAITl :JBCTF0, TIM100 次未滿則等待TFO , CNT ;1ms 未到則等待WAIT2END例 3.4

16、 利用 TO 確定外部麗引腳上出現(xiàn)的正脈沖的寬度,并將測(cè)到的機(jī)器周期的個(gè)數(shù)存入30H 開始的單元中。解:根據(jù)要求,將 TO 設(shè)定為定時(shí)器工作方式 I,門控位 GATE 置 1,初值取 0。當(dāng)外部 INTO 引腳變?yōu)?高電平時(shí)啟動(dòng) TO 定時(shí)(外觸發(fā));當(dāng)外部麗引腳變?yōu)榈碗娖綍r(shí)停止TO 定時(shí)。這樣 TO 停止定時(shí)時(shí)的當(dāng)前值就是外部麗引腳為高電平期間所經(jīng)過的機(jī)器周期的個(gè)數(shù)(假設(shè)外部的脈沖寬度不超過 65535 個(gè)周期)。方式控制字為 00001001B,即 09H。(2)T0 的定時(shí)初值為 0000H。程序流程圖如圖 3 . 12 所示。WAIT2 : JBCSJMP圖 3 . 11 例 3. 3

17、 的控制程序流程圖圖 3. 12 例 3. 4 的控制程序流程程序清單如下:ORG0030HPI1NI恤電Iri ID HtH!flWAITl : JNBSETBP3. 2,WAITlTRO ;;等待 P3. 2 變?yōu)楦唠娖?啟動(dòng) TO 開始定時(shí)WAIT2 : JBP3 2,WAIT2 ;等待 P32 變?yōu)榈碗娖紺LRTR0MOVR0, #30H ;數(shù)據(jù)指針賦值MOV R0 , TL0 ;保存機(jī)器周期數(shù)據(jù)的低 8 位INCR0MOVR0, TH0 ;保存機(jī)器周期數(shù)據(jù)的高 8 位SJMP$END思考題 3-3 :如果要求既測(cè)量外部脈沖信號(hào)的高電平寬度, 又要求測(cè)量外部脈沖信號(hào)的低電平寬度, 該 如何處理呢 ?本章小結(jié)中斷是一個(gè)過程,是 CPU 暫?,F(xiàn)行操作,去為提出服務(wù)要求的外設(shè)服務(wù),當(dāng)服務(wù)完成后回到原有操作 繼續(xù)執(zhí)行的過程,中斷是計(jì)算機(jī)的一項(xiàng)重要技術(shù)。本章要求:了解中斷源、中斷的功能、中斷系統(tǒng)的組成 與功能、中斷優(yōu)先權(quán)管理、中斷響應(yīng)條件、中斷響應(yīng)過程、中斷嵌套等基本概念;掌握 MCS-51 單片機(jī)的 5 個(gè)中斷源;掌握外部中斷的觸發(fā)方式, INT0 與 INT1 的觸發(fā)方式有邊沿方式與電平方式兩種;掌握定時(shí) 器計(jì)數(shù)器的計(jì)數(shù)脈沖來源, 計(jì)數(shù)脈

溫馨提示

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

評(píng)論

0/150

提交評(píng)論