第5章80C51的中斷系統(tǒng)及定時計數(shù)器_第1頁
第5章80C51的中斷系統(tǒng)及定時計數(shù)器_第2頁
第5章80C51的中斷系統(tǒng)及定時計數(shù)器_第3頁
第5章80C51的中斷系統(tǒng)及定時計數(shù)器_第4頁
第5章80C51的中斷系統(tǒng)及定時計數(shù)器_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章80C51的中斷系統(tǒng)及定時/計數(shù)器80C51單片機的中斷系統(tǒng)5.180C51單片機的中斷處理過程5.280C51單片機的定時/計數(shù)器5.380C52的定時/計數(shù)器25.42023/2/3180C51單片機的中斷系統(tǒng)5.1日常中斷的例子專心看書,突然電話鈴響記下頁數(shù)去接電話,接完電話,找到剛才頁碼繼續(xù)看書。2023/2/32計算機中的中斷概念中斷:是指由于某種隨機事件的發(fā)生,計算機暫?,F(xiàn)行程序的運行,轉(zhuǎn)去執(zhí)行另一程序,以處理發(fā)生的事件,處理完畢后又自動返回原來的程序繼續(xù)運行。2023/2/33中斷的概念:中斷是計算機工作過程的隨機事件中斷源:引起中斷的事件或設備稱為中斷源采用中斷的優(yōu)點:⑴分時操作⑵實時處理⑶故障處理如:良好的中斷系統(tǒng)使處理機具有隨機應變的能力,從而擴大應用范圍,提高CPU效率51中斷系統(tǒng)的特點:內(nèi)容豐富,結(jié)構(gòu)合理,邏輯性強,高效實用中斷請求中斷請求2023/2/34一、中斷的一般功能1、中斷的屏蔽與開放中斷屏蔽:稱為關(guān)中斷,CPU不響應中斷請求稱為開中斷,CPU可響應中斷請求中斷開放:2、中斷響應與中斷返回中斷請求RETI主程序響應中斷中斷服務子程序返主程序繼續(xù)執(zhí)行主程序圖6-18(a)中斷的響應與返回中斷請求PC斷點PC斷點中斷允許中斷禁止2023/2/35你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數(shù),去接電話,接電話過程中,有人敲窗戶(更緊急),先放下電話,開窗戶,處理完后,再接著聽電話,接完電話后再回來接著看書。(中斷嵌套)中斷嵌套2023/2/363、中斷優(yōu)先中斷開放的情況下,如果有幾個中斷請求同時發(fā)生,應首先響應中斷優(yōu)先級較高的中斷4、中斷嵌套低級中斷請求RETI主程序響應低級中斷高級中斷服務子程序返主程序繼續(xù)執(zhí)行主程序高級中斷請求響應高級中斷返低級中斷圖6-18(b)中斷的嵌套示意圖RETI低級中斷服務子程序低級中斷服務子程序掛起低級中斷掛起低級中斷低級中斷低級中斷簡單說:就是中斷中斷2023/2/37中斷請求源5個中斷源2個優(yōu)先級2個外部中斷3個內(nèi)部中斷INT0(P3.2)INT1(P3.3)T0T1UART與中斷有關(guān)的特殊功能寄存器:IP:中斷優(yōu)先控制寄存器IE:中斷允許控制寄存器TCON:定時/計數(shù)控制寄存器SCON:UART控制寄存器中斷標志寄存器可編程,可控MCS–51中斷要點MCS–51中斷要點2023/2/38二、中斷請求標志1、定時/計數(shù)器控制寄存器TCON

TCON(88H)TF1

TF0

IE1

IT1

IE0IT0

INT1

INT0觸發(fā)方式控制位0

低電平觸發(fā)1

邊沿↓觸發(fā)

INT1

INT0外部中斷請求標志1有有效觸發(fā)時0

當CPU響應中斷時T1T0溢出標志1

計數(shù)器“+1”有溢出時,并向CPU請求中斷0

當CPU響應中斷時,也可由指令清除TR1TR0由硬件自動由硬件自動中斷請求標志可編程控制位TR1

TR0由硬件自動由硬件自動在每個機器周期S5P2都采樣引腳P3.3P3.2引腳00記錄有無中斷記錄有無中斷2023/2/392、串行口控制寄存器SCONTI:串行口發(fā)送中斷標志在方式0,串行發(fā)送到第8位結(jié)束時,由硬件置“1”;或在其他方式中,串行發(fā)送到停止位的開始時,由硬件置“1”,RI:串行口接收中斷標志在方式0,串行接收到第8位結(jié)束時,由硬件置“1”;或在其他方式中,串行接收到停止位的開始時,由硬件置“1”,“1”發(fā)送完一幀數(shù)據(jù)后“1”接收完一幀數(shù)據(jù)后必須由軟件清“0”必須由軟件清“0”

SCON(98H)

TIRI2023/2/310三、中斷控制1、中斷允許寄存器IE

EA/

/

ES

ET1

EX1

ET0

EX0INT0INT1T1T0UARTCPU0

禁止1

允許0

禁止1

允許總中斷總中斷中斷中斷IE(A8)中斷的開放和禁止是可控,可編程的ET2T2CPUIE的相應位被置“0”

或“1”

該相應中斷即被“禁止”或“開放”2023/2/3112、中斷優(yōu)先級寄存器IP

//

/

PS

PT1

PX1

PT0

PX0IP(B8)ET2INT0INT1T1T0UART0

低級1高級中斷中斷T2中斷優(yōu)先級是可控,可編程的3、優(yōu)先級結(jié)構(gòu)中斷優(yōu)先級控制遵循的兩個基本原則:

⑴一個正在執(zhí)行的低級中斷服務程序,能被高優(yōu)先級中斷請求所中斷,但不能被同優(yōu)先級中斷請求所中斷。⑵一個正在執(zhí)行的高級中斷服務程序,不能被任何中斷請求所中斷,直到返回。2023/2/312實現(xiàn)這兩個原則的方法:中斷系統(tǒng)內(nèi)部設置了兩個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器。一個指出正在處理的是:高優(yōu)先級中斷,并阻止所有其他中斷;另一個指出正在處理的是:低優(yōu)先級中斷,并阻止了除高優(yōu)先級中斷外的其他任何中斷。高優(yōu)先級狀態(tài)觸發(fā)器低優(yōu)先級狀態(tài)觸發(fā)器是不可尋址的當CPU響應高級中斷,并進入中斷服務時“1”“1”RETI“0”當CPU響應低級中斷,并進入中斷服務時“1”RETI“0”2023/2/313源允許圖6-19中斷系統(tǒng)總體邏輯結(jié)構(gòu)總允許優(yōu)先級自然優(yōu)先級中斷源自然優(yōu)先級中斷源查詢硬件查詢硬件低級中斷請求矢量地址送PCIPIETCON

SCONEX0ET0EX1ET1ESEAINT0INT1T0T1RXTXRITIIE0IE1TF0TF1

IT1

011010101010矢量地址送PC高級中斷請求IT0

01中斷標志中斷標志INT01IE0自然優(yōu)先級矢量地址送PC“+1”TF10自然優(yōu)先級矢量地址送PCEA“+1”“+1”EX0ET112023/2/314四、中斷響應過程中斷響應的三個條件:⑴CPU不是正在處理同級或高級中斷請求⑵現(xiàn)行機器周期是所執(zhí)行指令的最后一個機器周期⑶正在執(zhí)行的指令不是RETI,或不在訪問IE或IP外部中斷請求INT0定時/計數(shù)器T0溢出定時/計數(shù)器T1溢出串行口UART定時/計數(shù)器T2溢出外部中斷請求INT1中斷入口地址:0003H000BH0013H001BH0023H002BH中斷源矢量地址2023/2/315中斷處理過程

中斷處理過程分為三個階段:中斷響應、中斷處理和中斷返回。

中斷響應中斷處理(又稱中斷服務)

中斷返回

中斷請求的撤除

中斷響應中斷返回2023/2/316中斷響應(以外部中斷0為例)中斷響應:在滿足CPU的中斷響應條件之后,CPU對中斷源中斷請求予以處理。中斷響應過程:保護斷點地址;中斷響應把程序轉(zhuǎn)向中斷服務程序的入口地址(通常稱矢量地址)。特別注意:這些工作是硬件自動完成的!

斷點地址中斷服務子程序的入口地址外部中斷0入口地址0003ZD0AJMPORG0003HAJMPZD0ZD02023/2/317中斷響應中斷服務子程序入口地址又稱為中斷矢量或中斷向量。中斷響應單片機中5個中斷源的矢量地址是固定的,不能改動。斷點地址中斷服務子程序的入口地址2023/2/318程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時器0溢出中斷入口0013H:外部中斷1入口001BH:定時器1溢出中斷入口002AH使用時,通常在這些入口地址處存放一條跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷服務程序起始地址上去!2023/2/319程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口0003H:外部中斷0入口000BH:定時器0溢出中斷入口0013H:外部中斷1入口001BH:定時器1溢出中斷入口002AH包含T0中斷服務子程序的程序結(jié)構(gòu):

ORG0000H AJMPMAIN

ORG000BH AJMPINTT0

ORG0100HMAIN:...INTT0:...RETIENDAJMPMAINAJMPINTT02023/2/320中斷處理中斷服務程序從中斷子程序入口地址開始執(zhí)行,直到返回指令RETI為止,這個過程稱為中斷處理(或中斷服務)。中斷服務子程序一般包括兩部分內(nèi)容,一是保護和恢復現(xiàn)場,二是處理中斷源的請求。中斷響應入口地址RETI2023/2/321中斷處理INTT0:PUSHACC PUSHDPHPUSHDPLPUSHPSW

中斷源服務

POPPSWPOPDPLPOPDPHPOPACCRETI保護現(xiàn)場恢復現(xiàn)場注意,PUSH和POP要成對出現(xiàn),不然就會使程序發(fā)生紊亂例如:少了一個POPACC會出現(xiàn)什么情況呢??2023/2/322中斷返回中斷返回是指中斷服務完后,計算機返回到原來暫停的位置(即斷點),繼續(xù)執(zhí)行原來的程序。中斷返回由專門的中斷返回指令RETI來實現(xiàn)。中斷響應中斷返回2023/2/323中斷返回

RETI指令功能:把斷點地址取出,送回到程序計數(shù)器PC中去。另外,它還通知中斷系統(tǒng)已完成中斷處理,將清除優(yōu)先級狀態(tài)觸發(fā)器。特別注意:不能用RET指令代替RETI指令!中斷響應中斷返回2023/2/324中斷處理過程示意圖中斷源發(fā)中斷請求中斷響應條件是否滿足?中斷是否受阻?

把PC斷點地址壓入堆棧

相應中斷源的中斷入口地址送入PC,轉(zhuǎn)向中斷服務程序NYYN

由硬件自動完成2023/2/325

關(guān)中斷保護現(xiàn)場中斷服務

開中斷

關(guān)中斷恢復現(xiàn)場

開中斷中斷返回斷點地址由堆棧彈入PC保護現(xiàn)場和恢復現(xiàn)場的過程中不允許中斷,以免現(xiàn)場遭到破壞。保護和恢復現(xiàn)場之后的開中斷是為了允許有更高級中斷打斷此中斷服務程序。中斷服務程序硬件自動完成2023/2/326中斷請求的撤除

CPU響應某中斷請求后,在中斷返回前,應該撤除該中斷請求,否則會引起另一次中斷。

定時器0或1溢出:CPU在響應中斷后,硬件清除了有關(guān)的中斷請求標志TFO或TF1,即中斷請求是自動撤除的。

邊沿激活的外部中斷:CPU在響應中斷后,也是用硬件自動清除有關(guān)的中斷請求標志IE0或IE1。

串行口中斷:CPU響應中斷后,沒有用硬件清除T1、R1,故這些中斷不能自動撤除,而要靠軟件來清除相應的標志。2023/2/327電平觸發(fā)外部中斷撤除方法較復雜。因為在電平觸發(fā)方式中,CPU響應中斷時不會自動清除IE1或IE0標志,所以在響應中斷后應立即撤除INT0或INT1引腳上的低電平。

在硬件上,CPU對INT0和INT1引腳的信號不能控制,所以這個問題要通過硬件,再配合軟件來解決。電平激活的外部中斷源中斷標志的撤除2023/2/328五、外部中斷響應時序與觸發(fā)方式1、外部中斷響應時序M1M3M4M5M2S5P1S5P2INT被采樣并鎖存到IE0IE1中CPU進行中斷查詢保護斷點,長調(diào)用至入口中斷服務1、中斷響應順利,不受阻,需要3個機器周期2、如果中斷受阻,上頁下頁回目錄即滿足上述三個條件①正在處理同級或高級中斷,這要視中斷服務程序的長短②執(zhí)行的指令不是最后一個機器周期,等待不超過3個周期1個周期(查詢)+2個周期(長調(diào)用LCALL)③若當前指令是RET、RETI和IP、IE指令,緊接著下一條是乘除指令發(fā)生,則最長為8個周期:2個周期執(zhí)行當前指令(其中含有1個周期查詢)+4個周期乘除指令+2個周期長調(diào)用=8個周期則需要3~8個機器周期2023/2/3292、外部中斷觸發(fā)方式⑴電平觸發(fā)方式⑵邊沿觸發(fā)方式若外部中斷(當ITX=0時)被定義為電平觸發(fā)方式其有效觸發(fā)為低電平,該低電平維持到CPU響應該中斷為止,中斷返回之前,必須為高電平。否則CPU將再次響應該中斷。若外部中斷(當ITX=1時)被定義為邊沿觸發(fā)方式其有效觸發(fā)為下降沿。在該觸發(fā)方式中,CPU在一個機器周期采樣為高電平,在下一機器周期采樣為低電平,↓就立即置位外部中斷請求標志。*無論是那種觸發(fā)發(fā)方式,只要有有效觸發(fā),都會記錄在相應的中斷標志位中,若CPU即使暫不響應,中斷標志也不會丟失,直到CPU響應該中斷,該標志才會清除。有效觸發(fā)標志位記錄2023/2/330六、多外部中斷源的設計1、利用定時/計數(shù)器作外部中斷輸入使用的方法T0作為外部中斷源的初始化程序:MOVTMOD,#06HMOVTL0,#0FFHMOVTH0,#0FFHSETBEASETBET0SETBTR0…;T0計數(shù)方式,自動裝載;置計數(shù)初值;;T0開中斷;CPU開中斷;啟動T0工作計數(shù)器“+1”計數(shù)器向CPU發(fā)中斷請求向CPU發(fā)中斷請求TF0FFHT0FFH方式2(8位)FFHFFHTF000HFFHFFHP3.4T0引腳每輸入一個負跳變,TF0都會置1,向CPU請求中斷

T0腳相當于邊沿觸發(fā)的外部中斷源輸入線。2023/2/3312、中斷與查詢相結(jié)合的方法8051INT0INT1P1.3P1.2P1.1P1.0DVT0DVT1DVT2DVT3DVT410K+5V圖6-21擴展多個外部中斷最高級最低級“線或”2023/2/332PINT1:PUSHPSWPUSHACCJBP1.0,PDVT1JBP1.1,PDVT2JBP1.2,PDVT3JBP1.3,PDVT4PINTR:

POPACCPOPPSWRETI;進入中斷后;注意保護現(xiàn)場;依次查詢判斷;若是干擾信號引起;返主程序前;注意恢復現(xiàn)場;的中斷請求,可被濾掉外部中斷INT1的中斷服務程序:2023/2/333PDVT1:……AJMPPINTRPDVT2:……AJMPPINTRPDVT3:……AJMPPINTRPDVT4:……AJMPPINTR;DVT1中斷服務;DVT2中斷服務;DVT3中斷服務;DVT4中斷服務中斷處理2023/2/334⒈

中斷初始化⑴設置堆棧指針SP⑵定義中斷優(yōu)先級⑶定義外中斷觸發(fā)方式⑷開放中斷⑸中斷應用數(shù)據(jù)初始化⒉中斷服務主程序中斷服務子程序內(nèi)容要求:⑴在中斷服務入口地址設置一條跳轉(zhuǎn)指令⑵保護現(xiàn)場。⑶中斷源請求中斷服務要求的操作。

⑷恢復現(xiàn)場。⑸中斷返回,最后一條指令必須是RETI。七中斷系統(tǒng)的應用2023/2/3355.2.4中斷程序舉例

2023/2/336

ORG0000HSTART:LJMPMAINORG0003HLJMPINTOORG0030

MAIN:CLRIT0

SETBEASETBEX0

MOVDPTR,#1000H;設置數(shù)據(jù)區(qū)地址指針

……ORG0200H;中斷服務程序

INT0:PUSHPSW;保護現(xiàn)場

PUSHACCCLRP3.0;由P3.0輸出0NOPNOPSETBP3.0;由P3.0輸出1,撤除

MOVA,P1;輸入數(shù)據(jù)

MOVX@DPTR,A;存入數(shù)據(jù)存儲器

INCDPTR;修改數(shù)據(jù)指針,指向下一個單元

……POPACC;恢復現(xiàn)場

POPPSWRETI;中斷返回2023/2/337【例2】出租車計價器計程方法是車輪每運轉(zhuǎn)一圈產(chǎn)生一個負脈沖,從外中斷INT0(P3.2)引腳輸入,行駛里程為輪胎周長×運轉(zhuǎn)圈數(shù),設輪胎周長為2m,試實時計算出租車行駛里程(單位米),數(shù)據(jù)存32H、31H、30H。

解:編程如下:

ORG 0000H ;復位地址

LJMP STAT ;轉(zhuǎn)初始化

ORG 0003H ;中斷入口地址

LJMP INT ;轉(zhuǎn)中斷服務程序2023/2/338

ORG0100H ;初始化程序首地址STAT:MOVSP,#60H ;置堆棧指針

SETBIT0 ;置邊沿觸發(fā)方式

MOVIP,#01H ;置高優(yōu)先級

MOVIE,#81H ;開中

MOV30H,#0 ;里程計數(shù)器清0MOV31H,#0 ;MOV32H,#0 ;LJMPMAIN ;轉(zhuǎn)主程序,并等待中斷

ORG0200H ;中斷服務子程序首地址INT:PUSHAcc ;保護現(xiàn)場

PUSHPSW ; MOVA,30H ;讀低8位計數(shù)器

ADDA,#2 ;低8位計數(shù)器加2m MOV30H,A ;回存

CLRA ; ADDCA,31H ;中8位計數(shù)器加進位

MOV31H,A ;回存

CLRA ; ADDCA,32H ;高8位計數(shù)器加進位

MOV32H,A ;回存

POPPSW ;恢復現(xiàn)場

POPAcc ; RETI ;中斷返回MAIN主程序可以處理循環(huán)顯示等任務。2023/2/339【例3】通過外部中斷1,在中斷服務中將B寄存器里的內(nèi)容左環(huán)移一位。已知:(B)=01h,要求采用邊沿觸發(fā),低優(yōu)先級。此例的實際意義:在INT1引腳接一個按鈕開關(guān)到地,每按一下按鈕就申請一次中斷,中斷服務則是:依次點亮八盞燈中的一盞。

P1.0P1.7INT13002023/2/340

ORG0000H

LJMPMAIN

ORG0013H;中斷矢量

LJMPINTMAIN:SETBEA;開總中斷允許“開關(guān)”

SETBEX1;開分中斷允許“開關(guān)”

CLRPX1;0優(yōu)先級(也可不要此句)

SETBIT1;邊沿觸發(fā)

MOVB,#01H;給B寄存器賦初值HERE:SJMPHERE;原地等待中斷申請INT:MOVA,B;自B寄存器中取數(shù)

RLA;左環(huán)移一次

MOVB,A;存回B,備下次取用

MOVP1,A;輸出到P1口

RETI;中斷返回中斷服務程序2023/2/341

利用外部中斷實現(xiàn)單步操作:

8031+5v在主程序中:CLRIT0SETBEASETBPX0SETBEX0………在中斷服務子程序中:JNBP3.2,$JBP3.2,$RETI2023/2/342作業(yè)將中斷的全過程寫出來,給出一個ROM表和堆棧表,將中斷的初始化,中斷服務程序的位置都標出來,任意設中斷在主程序的位置,并用語言敘述中斷的相應過程(包含PC指針的變化,程序的走向,以及中斷的各個步驟)2023/2/34380C51單片機的定時/計數(shù)器5.32023/2/3441、定時:對時間基準脈沖計數(shù)本質(zhì):計數(shù)對象不同2、計數(shù):對外部隨機脈沖計數(shù)信號具有周期性信號隨機5.3.1定時/計數(shù)器工作原理一.定時和計數(shù)基本原理2023/2/345軟件定時例如延時程序。不占硬件資源,占用了CPU時間,降低了CPU的利用率。采用時基電路定時例如采用555電路,外接必要的元器件(電阻和電容)。但定時值不能由軟件控制和修改可編程定時器定時最方便的辦法是利用單片機內(nèi)部的定時器/計數(shù)器。結(jié)合了軟件定時精確和硬件定時電路獨立的特點。二.常用定時方法2023/2/346三、定時計數(shù)器的結(jié)構(gòu)與工作原理1、結(jié)構(gòu)CPUTH1(8位)TL1(8位)T1

T1(P3.5)(8DH)(8BH)7070TH0(8位)TL0(8位)T0

T0(P3.4)(8CH)(8AH)7070TCON(88H)TMOD(89H)啟動啟動溢出溢出工作方式工作方式2023/2/3472、工作原理⑴定時器定時輸入信號:晶振的1/12分頻一個機器周期做一次“+1”運算則1TCY=12Tosc=12/12MHz=1μs若fosc=12MHz⑵計數(shù)器由外部引腳(T0為P3.4,T1為P3.5)輸入計數(shù)脈沖外部輸入脈沖寬度應大于2個機器周期>TCY>TCY外部輸入脈沖發(fā)生負跳變時,進行“+1”計數(shù)高電平低電平TCY2023/2/348震蕩器÷12TL18位TH18位TF1中斷KC/T=0C/T=1控制11“+1”中斷16位計數(shù)器TF1“+1”“+1”1⑴定時器則1TCY=12Tosc=12/12MHz=1μs若fosc=12MHz⑵計數(shù)器外部脈沖應大于2TCY>TCY>TCY高電平低電平一旦啟動就工作于單一的“+1”狀態(tài),TCYTCY外部脈沖頻率應小于fosc/242023/2/3491、方式寄存器TMODGATEC/TM1M0GATEC/TM1M0LSBMSB

(89H)TMOD控制T1控制T0門控位功能選擇位工作方式選擇四.有關(guān)SFRINT1INT0引腳輸入電平的控制GATE:門控位。設定T1、T0運行時是否受GATE=

0不受外部中斷控制C/T=1受外部中斷控制0為定時功能1為計數(shù)功能2023/2/350

00方式013位計數(shù)器

01方式116位計數(shù)器

10方式2可自動重新裝載初值的8位計數(shù)器

11方式3T0分為2個8位計數(shù)器,T1停止計數(shù)M1M0操作方式功能操作方式選擇2023/2/3512、控制寄存器TCONLSBMSB

(88H)TCONTF1TR1TF0TR0IE1IT1IE0IT0T1、T0

啟/??刂莆籘1、T0

溢出標志位與外部中斷INT1、INT0有關(guān)在中斷中介紹過了“0”停止“1”啟動“1”有溢出“0”無溢出可編程可控制“+1”亦可由指令清“0”工作“1”“0”記錄有無溢出2023/2/3525.3.2定時/計數(shù)器的4種工作方式一、方式0M1M0=0013位的定時計數(shù)器,由TH的8位和TL的低5位組成T1(P3.5)GATETR1INT1震蕩器÷12TL15位TH18位TF1中斷KC/T=0C/T=1控制圖6-3定時/計數(shù)器方式0邏輯圖111“+1”中斷TL4~0以T1為例:13位計數(shù)器TF1“+1”“+1”2023/2/353二、方式1M1M0=0116位的定時計數(shù)器,由TH的8位和TL的8位組成T1(P3.5)GATETR1INT1震蕩器÷12TL18位TH18位TF1中斷KC/T=0C/T=1控制圖6-4定時/計數(shù)器方式1邏輯圖16位計數(shù)器“+1”1以T1為例:中斷TF1“+1”“+1”2023/2/354三、方式2M1M0=10可自動重裝載的8位計數(shù)器TH1(TH0)被定義為賦值寄存器TL1(TL0)被定義為計數(shù)器圖6-5定時/計數(shù)器方式2邏輯圖

T1(P3.5)

GATETR1INT1震蕩器÷12TL18位TF1中斷KC/T=0C/T=1控制TH18位重裝載重裝載1“+1”以T1為例:中斷TL18位TF1“+1”“+1”2023/2/355震蕩器÷121/12f0scTL08位TF0中斷KC/T=0C/T=1控制1/12f0sc

T0(P3.4)GATETR0INT0KTH08位TF1中斷控制1/12f0scTR11TH0借用了T1的TR1和TF1,因此控制了T1的中斷此時T1只能用在一些不要中斷的情況下“+1”“+1”1“+1”“+1”TF0TF1

中斷

中斷“+1”四、方式3M1M0=11T0被分成2個相互獨立的8位計數(shù)器TL0、TH02023/2/356五、定時/計數(shù)器的初始化1、初始化一般有以下幾個步驟:2、計數(shù)初值的設定:最大計數(shù)值M:不同的工作方式M值不同方式0:M=213=8192方式1:M=216=65536方式2、3:M=28=256置方式,對TMOD賦值,設初值,并寫入TH0、TL0或TH1、TL1;開中斷,中斷方式時,IE啟動定時,使TR0或TR1置位2023/2/357計數(shù)初值X的計算方法:計數(shù)方式:X=M-計數(shù)值(X即為計數(shù)值的補碼數(shù))定時方式:(M-X)×Tc=定時值∴X=M-定時值/Tc其中T為機器周期,時鐘的12分頻,若晶振為6MHz,則Tc=2μs,若晶振為12MHz,則Tc=1s2023/2/3585.3.3定時/計數(shù)器應用舉例1、作定時器用例5.3-1

設主頻為12MHz,利用定時器T1定時。使P1.0輸出周期為2ms的方波。解:用P1.0作方波輸出信號,周期為2ms的方波即可用每1ms改變一次電平的方法完成,故定時值可設置為1ms。

可做“+1”運算1000次,使T1工作在方式1,即16位計數(shù)器定時初值:采用方式1:(

16位計數(shù)器)X=216-(1000×10-6/10-6)=64536=FC18H1000×10-6/10-6=216-X2023/2/359GATEC/TM1M0控制T1控制T00001選擇方式1選擇定時器方式INT1不參與控制TMOD2023/2/360MOVTMOD,#10HMOVTH1,#0FCHMOVTL1,#18HSETBEASETBET1SETBTR1SJMP$ORG001BHAJMPINT_T1INT_T1:

MOVTH1,#0E0HMOVTL1,#18HCPLP1.0RETI;T1按方式1工作;給計數(shù)器賦初值;CPU開中斷;T1允許中斷;啟動T1;T1中斷入口;;重裝T1的初值;輸出方波;返回程序:ORG0030HMAIN:MOVSP,#60HORG0000HAJMPMAIN2023/2/361例5.3-2

根據(jù)例5.3-1的要求產(chǎn)生周期為2ms的方波,但不用中斷方式,而用查詢方式工作,查詢標志為TF1解:利用方式1,16位計數(shù)器,當定時時間到,

T1計數(shù)器溢出使TF1置“1”,由于不采用中斷方式,TF1置“1”后,不會自動復“0”

故需要指令給TF1清“0”初值=0

00

0H-)03E8H81CFHFC18H

10002023/2/362MOVTMOD,#10HSETBTR1LOOP:MOVTH1,#0FCHMOVTL1,#18HJNBTF1,$CPLP1.0CLRTF1SJMPLOOP;T1按方式1工作;啟動T1定時;給計數(shù)器賦初值;TF1=0,則繼續(xù)查詢;;TF1←0;輸出方波;返回程序:2023/2/363

定時時間較大時(大于65ms)。實現(xiàn)方法:一是采用1個定時器定時一定的間隔(如50ms),然后用軟件進行計數(shù);二是采用2個定時器級聯(lián),其中一個定時器用來產(chǎn)生周期信號(如20ms為周期),然后將該信號送入另一個計數(shù)器的外部脈沖輸入端進行脈沖計數(shù)。

【例5.3-3】編寫程序,實現(xiàn)用定時/計數(shù)器T0定時,使P1.7引腳輸出周期為2s的方波。設系統(tǒng)的晶振頻率為12MHz。確定方式字:T0在定時的方式1時:M1M0=01,GATE=0,C/T=0方式控制字為01H

求計數(shù)初值X:Tcy為1μSN=50ms/1μS=50

000X=65536-50000=3CB0H應將3CH送TH0,B0H送TL0采用定時50ms,然后再計數(shù)20次的方法實現(xiàn)2023/2/364

ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;置T0方式1MOVTH0,#3CH;裝入計數(shù)初值

MOVTL0,#0B0H;首次計數(shù)值

MOVR7,#20;計數(shù)20次

SETBET0;T0開中斷

SETBEA;CPU開中斷

SETBTR0;啟動T0SJMP$;等待中斷DVT0:MOVTH0,#3CHMOVTL0,#0B0HDJNZR7,NT0MOVR7,#20CPLP1.7NT0:RETIEND主程序

中斷服務程序

2023/2/365

ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;置T0方式1MOVTH0,#3CH;裝入計數(shù)初值

MOVTL0,#0B0H;首次計數(shù)值

MOVR7,#0;計數(shù)20次

SETBET0;T0開中斷

SETBEA;CPU開中斷

SETBTR0;啟動T0SJMP$;等待中斷DVT0:MOVTH0,#3CHMOVTL0,#0B0Hincr7

cjner7,#20,nt0MOVR7,#0CPLP1.7NT0:RETIEND主程序

中斷服務程序

2023/2/3662、作計數(shù)器用例5.3-4

用T0監(jiān)視一生產(chǎn)流水線,每生產(chǎn)100個工件,發(fā)出一包裝命令,包裝成一箱,并記錄其箱數(shù)MCS-51

P1.0

T0Vcc包裝機包裝命令100個光源2023/2/367GATEC/TM1M0控制T1控制T0TMOD選方式2選計數(shù)器INT0不參與控制0110⑵計數(shù)初值X=M-64H=9CH⑶用P1.0啟動外設發(fā)包裝命令⑷用R5R4作箱數(shù)計數(shù)器⑴方式字TMOD=06H2023/2/368程序:MOVTMOD,#6MOVP1.0,#0MOVR5,#0MOVR4,#0MOVTH0,#9CHMOVTL0,#9CHSETBEASETBET0SETBTR0SJMP$ORG000BHAJMPCOUNT;P1.0為低;箱數(shù)計數(shù)器清“0”;置T0工作方式;計數(shù)初值送計數(shù)器;;T0開中斷;CPU開中斷;啟動T0;;模擬主程序;T0中斷入口;轉(zhuǎn)向中斷服務2023/2/369COUNT:MOVA,R4ADDA,#1MOVR4,AMOVA,R5ADDCA,#0MOVR5,ASETBP1.0MOVR3,#100DLY:NOPDJNZR3,DLYCLRP1.0RETI中斷服務:;;;;箱計數(shù)器加“1”;;;啟動外設包裝;給外設足夠時間;;

溫馨提示

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

評論

0/150

提交評論