《第5章80C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器》由會(huì)員分享,可在線閱讀,更多相關(guān)《第5章80C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器(45頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,*,單擊此處編輯母版標(biāo)題樣式,2024/12/12,1,第,5,章,80C51,的中斷系統(tǒng)及定時(shí),/,計(jì)數(shù)器,80C51,單片機(jī)的,中斷系統(tǒng),5.1,80C51,單片機(jī)的,中斷處理過(guò)程,5.2,80C51,單片機(jī)的,定時(shí),/,計(jì)數(shù)器,5.3,80C52,的定時(shí),/,計(jì)數(shù)器,2,5.4,2024/12/12,2,5.1,80C51,單片機(jī)的中斷系統(tǒng),5.1.1 80C51,中斷系統(tǒng)的結(jié)構(gòu),CPU,進(jìn)行工作,A,時(shí)發(fā)生了事件,B,,請(qǐng)求,CPU,馬上處理,CPU,暫時(shí)中斷當(dāng)前工作,A,,轉(zhuǎn)去處理事件,B,事件,B,處理完后,回到工作,A
2、,被中斷的地方繼續(xù)處理,A,工作,中斷的概念,中斷源,中斷請(qǐng)求,中斷服務(wù),中斷返回,中斷系統(tǒng),中斷的優(yōu)點(diǎn),:,CPU,利用率高,控制實(shí)時(shí)性強(qiáng),系統(tǒng)可靠性好,2024/12/12,3,80C51,中斷系統(tǒng)的結(jié)構(gòu),5,個(gè)中斷源、,2,個(gè)優(yōu)先級(jí),2024/12/12,4,中斷源,5.1.2 80C51,的中斷源,外部中斷,0,(,INT0,),外部中斷,1,(,INT1,),T0,溢出中斷(,TF0,),T1,溢出中斷(,TF1,),串行口中斷(,RI,或,TI,),2024/12/12,5,觸發(fā)方式設(shè)置及中斷標(biāo)志,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,IE1,I
3、T1,IE0,IT0,字節(jié)地址:,88H,電平方式(,ITx=0,),,INTx,引腳,低電平,時(shí),IEx=1,,,響應(yīng)中斷后,IEx,不自動(dòng)清,0,(,INTx,引腳狀態(tài))。,邊沿方式(,ITx=1,),,INTx,引腳,負(fù)跳變,時(shí),IEx=1,,,響應(yīng)中斷后,IEx,自動(dòng)清,0,。,外部中斷標(biāo)志,IE1,、,IE0,(用,IEx,表示),2024/12/12,6,兩種觸發(fā)方式比較:,電平方式,時(shí),,INTx,低電平必須保持到響應(yīng)時(shí),否則就會(huì)漏掉;在中斷服務(wù)結(jié)束前,,INTx,低電平必須撤除,否則中斷返回之后將再次產(chǎn)生中斷。,例,,8255,的中斷請(qǐng)求線在接受讀或?qū)懖僮骱蠹幢粡?fù)位,因此以其去
4、請(qǐng)求電平觸發(fā)方式的中斷比較方便。,邊沿方式,時(shí),采樣到有效下降沿后,在,IEx,中將鎖存一個(gè),1,。若,CPU,暫時(shí)不能響應(yīng),申請(qǐng)標(biāo)志也不會(huì)丟失,直到響應(yīng)時(shí)才清,0,。,例,,ADC0809,的轉(zhuǎn)換結(jié)束信號(hào),EOC,為正脈沖,經(jīng)反相后就可以作為,80C51,的,INTx,信號(hào),。,2024/12/12,7,溢出中斷標(biāo)志,TF1,、,TF0,(用,TFx,表示),溢出中斷請(qǐng)求標(biāo)志,TFx,,,Tx,啟動(dòng)后就開(kāi)始由初值進(jìn)行加,1,計(jì)數(shù),直至最高位產(chǎn)生溢出使,TFx=1,向,CPU,請(qǐng)求中斷。,CPU,響應(yīng)中斷后,TFx,自動(dòng)清,0,。,SCON,的中斷標(biāo)志,7,6,5,4,3,2,1,0,SCON
5、,TI,RI,字節(jié)地址:,98H,RI,:串口,接收,中斷標(biāo)志,響應(yīng)中斷時(shí),不能自動(dòng)清除,TI,:串口,發(fā)送,中斷標(biāo)志,響應(yīng)中斷時(shí),不能自動(dòng)清除,2024/12/12,8,5.1.3 80C51,中斷的控制,中斷允許控制,中斷源的開(kāi)放和屏蔽由,IE,控制(,1,,開(kāi)放;,0,,禁止,),7,6,5,4,3,2,1,0,IE,EA,ES,ET1,EX1,ET0,EX0,字節(jié)地址:,A8H,EX0:,外中斷,0,允許,ET0:T0,中斷允許,EX1:,外中斷,1,允許,ET1:T1,中斷允許,ES :,串口中斷允許,EA,:CPU,中斷允許,2024/12/12,9,中斷優(yōu)先級(jí)控制,中斷優(yōu)先級(jí)由,
6、IP,控制(,1,,高級(jí);,0,,低級(jí),),7,6,5,4,3,2,1,0,IP,PS,PT1,PX1,PT0,PX0,字節(jié)地址:,B8H,PX0:,外中斷,0,優(yōu)先級(jí),PT0:T0,中斷,優(yōu)先級(jí),PX1:,外,中斷,1,優(yōu)先級(jí),PT1:T1,中斷,優(yōu)先級(jí),PS :,串口中斷,優(yōu)先級(jí),同一優(yōu)先級(jí)的自然順序:,自高至低:,INT0,、,TO,、,INT1,、,T1,、串口。,2024/12/12,10,中斷優(yōu)先級(jí)遵循的原則,幾個(gè)中斷同時(shí)申請(qǐng),先響應(yīng)高級(jí)的中斷,正進(jìn)行的中斷服務(wù),同級(jí)或低級(jí)中斷不能對(duì)其中斷,但可以被高級(jí)中斷所中斷。,為此,中斷系統(tǒng)內(nèi)設(shè)有對(duì)應(yīng)高、低,2,個(gè),優(yōu)先級(jí)狀態(tài)觸發(fā)器,(用戶不
7、能尋址)。,狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令,RETI,控制。,2024/12/12,11,5.2,80C51,單片機(jī)中斷處理過(guò)程,5.2.1,中斷響應(yīng)條件和時(shí)間,中斷響應(yīng)條件,有中斷請(qǐng)求,相應(yīng)的中斷允許位為,1,CPU,開(kāi)中斷(即,EA=1,),遇下面情況之一將不被響應(yīng)(,此間中斷條件失效,中斷丟失,),正在處理同級(jí)或高級(jí)中斷,當(dāng)前選擇周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期,正在執(zhí)行,RETI,或,訪問(wèn),IE,或,IP,的指令,2024/12/12,12,中斷響應(yīng)時(shí)間,中斷響應(yīng)至少需要,3,個(gè)完整的機(jī)器周期,(,3,8,個(gè))!,受阻時(shí)要附加,3,5,個(gè)機(jī)器周期(,無(wú)同級(jí)或高級(jí)中斷正進(jìn)行,),排序
8、周期,不是指令的最后機(jī)器周期,(,如,MUL,,,5,個(gè),),排序周期,恰逢,RETI,類指令,(,要再跟指令,若是,MUL,,,8,個(gè),),2024/12/12,13,5.2.2,中斷響應(yīng)過(guò)程,CPU,響應(yīng)中斷過(guò)程,將相應(yīng)優(yōu)先級(jí)狀態(tài)觸發(fā)器置,1,(,阻斷后來(lái)同級(jí)或低級(jí)中斷,),執(zhí)行硬件,LCALL,指令(,PC,入棧,中斷服務(wù)程序入口址送,PC,),執(zhí)行中斷服務(wù)程序,編寫中斷服務(wù)程序注意,中斷服務(wù)程序入口存放指令,LJMP,或,AJMP,現(xiàn)場(chǎng)保護(hù)與現(xiàn)場(chǎng)恢復(fù),2024/12/12,14,5.2.3,中斷返回,中斷服務(wù)程序最后指令必須是,RETI,,其功能:,將斷點(diǎn)從堆棧彈送,PC,,,CPU,
9、從原斷點(diǎn)繼續(xù)執(zhí)行,將相應(yīng)優(yōu)先級(jí)狀態(tài)觸發(fā)器清,0,,恢復(fù)原來(lái)工作狀態(tài),注意,不能用,RET,代替,RET,I,中斷服務(wù)程序中,PUSH,和,POP,必須成對(duì)使用,2024/12/12,15,5.2.4,中斷程序舉例,【,例,5-1】,單外部中斷源示例,void Ex0()interrupt 0,Flag=,Flag;,while(1),if(Flag=0),/,左移,ScanNum=_crol_(ScanNum,1);,P0=ScanNum;,else,/,右移,ScanNum=_cror_(ScanNum,1);,P0=ScanNum;,DelayMs(500);,2024/12/12,16,
10、【例5-2】如圖所示,編寫程序?qū)崿F(xiàn):系統(tǒng)上電后,數(shù)碼管顯示“P”。按下S0鍵則數(shù)碼管進(jìn)行加計(jì)數(shù),S1鍵則數(shù)碼管進(jìn)行減計(jì)數(shù)。計(jì)數(shù)值顯示在數(shù)碼管上。,void t0Isr()interrupt 1,if(Flag0=0)Flag0=1;,Flag1=0;,void Ex1Isr()interrupt 2,if(Flag1=0)Flag1=1;,Flag0=0;,2024/12/12,17,5.3,80C51,單片機(jī)的定時(shí),/,計(jì)數(shù)器,結(jié)構(gòu),基本型:,T0,,定時(shí)、計(jì)數(shù)。,T1,,定時(shí)、計(jì)數(shù)、串口波特率發(fā)生器。,增強(qiáng)型:增加了,T2,。見(jiàn),5.3.4,節(jié)。,5.3.1,定時(shí),/,計(jì)數(shù)器的結(jié)構(gòu)和工作原
11、理,TH1,、,TL1,TH0,、,TL0,TCON,TMOD,2024/12/12,18,工作原理,-,實(shí)質(zhì)是,16,位加,1,計(jì)數(shù)器,定時(shí)器,模式時(shí),對(duì)內(nèi)部,機(jī)器周期,計(jì)數(shù)。,定時(shí)時(shí)間,=,計(jì)數(shù)值,*,機(jī)器周期,計(jì)數(shù)器,模式時(shí),是對(duì),外部脈沖,計(jì)數(shù)。脈沖由,T0,(,P3.4,)或,T1,(,P3.5,),引腳輸入。,注意,:(,若,計(jì)數(shù)值,為,N,計(jì)數(shù)初值,為,X,),溢出信號(hào)使,TF0,或,TF1,置,1,,并,發(fā)出中斷請(qǐng)求,,,16,位時(shí)有:,X=65536-N,12MHz,晶振時(shí),計(jì)數(shù)頻率低于,0.5MHz,2024/12/12,19,5.3.2,定時(shí),/,計(jì)數(shù)器的控制,工作方式寄
12、存器,TMOD,7,6,5,4,3,2,1,0,TMOD,GATE,C/T,M1,M0,GATE,C/T,M1,M0,字節(jié)地址:,89H,GATE,:,門控位,。,GATE,0,時(shí),只要,TRx,為,1,,就可啟動(dòng)計(jì)數(shù)器工作;,GATA,1,時(shí),定時(shí)器的啟動(dòng)還要加上,INTx,引腳為高電平這一條件。,C/T,:,模式選擇位,。清,0,為定時(shí)模式,置,1,為計(jì)數(shù)方式。,M1M0,:,工作方式設(shè)置位,。可設(shè)置四種工作方式,(,見(jiàn)下頁(yè),)。,2024/12/12,20,M1M0,工作方式,說(shuō) 明,00,方式,0,13,位定時(shí),/,計(jì)數(shù)器,01,方式,1,16,位定時(shí),/,計(jì)數(shù)器,10,方式,2,8,
13、位自動(dòng)重裝定時(shí),/,計(jì)數(shù)器,11,方式,3,T0,分成兩個(gè)獨(dú)立的,8,位定時(shí),/,計(jì)數(shù)器;,T1,此方式停止計(jì)數(shù),注意:,TMOD,不能進(jìn)行位尋址,2024/12/12,21,控制寄存器,TCON,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,字節(jié)地址:,88H,TFx,:,Tx,溢出標(biāo)志位。,響應(yīng)中斷后,TFx,有硬件自動(dòng)清,0,。用軟件設(shè)置,TFx,可產(chǎn)生同硬件置,1,或清,0,同樣的效果。,TRx,:,Tx,運(yùn)行控制位。,置,1,時(shí)開(kāi)始工作;清,0,時(shí)停止工作。,TRx,要由軟件置,1,或清,0,(,即啟動(dòng)與停止要由軟件控制,)。,2024/12/12,22,
14、5.3.3,定時(shí),/,計(jì)數(shù)器的工作方式,T0,有方式,0,、,1,、,2,、,3,;,T1,有方式,0,、,1,、,2,。以,T0,為例說(shuō)明。,方式,0,:,13,位方式,2024/12/12,23,C/T=1,時(shí),則為計(jì)數(shù)模式,有:,X=2,13,-N=8192-N,C/T=0,時(shí),則為定時(shí)模式,有:,X=2,13,-N=8192-N,,,N=,t,/Tcy,【,例,5-3】,若計(jì)數(shù)個(gè)數(shù),N,為,2,,求計(jì)數(shù)初值。,公式法計(jì)算:,X,8192,2=8190=1FFEH,求補(bǔ)法計(jì)算:對(duì),0 0000 0000 0010B,取反加,1,為:,1 1111 1111 1110B(,1FFEH,),
15、初值計(jì)算:,公式法,求補(bǔ)法,:,X=,對(duì),N,求補(bǔ),2024/12/12,24,門控位作用,當(dāng),GATE=0,時(shí),僅由,TR0,控制與門的開(kāi)啟。與門輸出,1,時(shí),控制開(kāi)關(guān)接通,計(jì)數(shù)開(kāi)始;,當(dāng),GATE=1,時(shí),與門的開(kāi)啟由,INT0,和,TR0,共同控制。這種方式可以用來(lái)測(cè)量,INT0,引腳上正脈沖的寬度。,注意,:方式,0,的計(jì)數(shù)初值高,8,位和低,5,位確定麻煩,,實(shí)際應(yīng)用中常由,16,位的方式,1,取代。,2024/12/12,25,方式,1,:,16,位方式,X=2,16,-N,=,65536-N,計(jì)數(shù)范圍:,1,65536,計(jì)數(shù)初值要,分成,2,個(gè)字節(jié),分別送入,TH0,、,TL0,
16、2024/12/12,26,【,例,5-4】,若要求定時(shí)器,T0,工作于方式,1,,定時(shí)時(shí)間為,1ms,,當(dāng)晶振為,6 MHz,時(shí),求送入,TH0,和,TL0,的計(jì)數(shù)初值各為多少?應(yīng)怎樣送入,TH0,和,TL0,?,由于晶振為,6 MHz,,所以機(jī)器周期,Tcy,為,2,S,,因此:,N=t/Tcy,=110,-3,/210,-6,500,X,2,16,-N,65536-500,65036,FE0CH,也可以利用以下,2,條語(yǔ)句完成:,TH0=,(65536-500),/,256;,商,為計(jì)數(shù)初值的,高字節(jié),TL0=,(65536-500),%,256;,余數(shù),為計(jì)數(shù)初值的,低字節(jié),分別將,FEH,送入,TH0,中,,0CH,送入,TL0,中即可。,2024/12/12,27,方式,2,:,8,位自動(dòng)重裝方式,X=2,8,-N=256-N,計(jì)數(shù)范圍:,1,256,特別適合與脈沖信號(hào)發(fā)生器,2024/12/12,28,方式,3,:,(僅,T0,有此方式,,T1,的方式,3,將停止計(jì)數(shù)),TL0,進(jìn)行,8,位定時(shí),/,計(jì)數(shù),TH0,進(jìn)行,8,位定時(shí)(,T1,方式,2,時(shí),可出借,TR1,、