C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器.ppt_第1頁(yè)
C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器.ppt_第2頁(yè)
C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器.ppt_第3頁(yè)
C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器.ppt_第4頁(yè)
C51的中斷系統(tǒng)及定時(shí)計(jì)數(shù)器.ppt_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2019/9/15,1,第5章 80C51的中斷系統(tǒng)與定時(shí)器/計(jì)數(shù)器,5.3,2019/9/15,2,5.1 80C51的中斷系統(tǒng),5.1.1 中斷及中斷嵌套的概念,中斷的概念,當(dāng)CPU正在處理某項(xiàng)事務(wù) 的時(shí)候,如果外界或內(nèi)部發(fā)生 了緊急事件,要求CPU暫停正 在處理的工作轉(zhuǎn)而去處理這個(gè) 緊急事件,待處理完后再回到 原來(lái)被中斷的地方,繼續(xù)執(zhí)行 原來(lái)被中斷了的程序,這樣的 過(guò)程稱(chēng)為中斷。,2019/9/15,3,與中斷有關(guān)的幾個(gè)術(shù)語(yǔ):,1、中斷源:引起CPU中斷的因源。 2、中斷請(qǐng)求(中斷申請(qǐng)) :中斷源向CPU提出的處理要求。 3、中斷響應(yīng)過(guò)程:CPU暫時(shí)中斷原來(lái)的工作A,轉(zhuǎn)去處理事件B的過(guò)程。 4、中斷服務(wù)(中斷處理):對(duì)事件B的整個(gè)處理過(guò)程。 5、中斷返回 : 事件處理完畢后,再回到原來(lái)被中斷的地方(斷點(diǎn)),繼續(xù)執(zhí)行程序。 6、中斷系統(tǒng):實(shí)現(xiàn)中斷功能的部件。,一個(gè)完整的中斷過(guò)程應(yīng)包括:中斷請(qǐng)求、中斷判優(yōu)、中 斷響應(yīng)、中斷服務(wù)和中斷返回。,2019/9/15,4,對(duì)于多重中斷,若新來(lái)的中斷優(yōu)先級(jí)別更高,則CPU應(yīng)該中斷現(xiàn)行的中斷服務(wù)程序,響應(yīng)優(yōu)先級(jí)別高的中斷,在高級(jí)中斷處理完后,再返回原先的中斷服務(wù)程序,這個(gè)過(guò)程就是中斷嵌套。,中斷嵌套的概念,2019/9/15,5,80C51中斷系統(tǒng)的結(jié)構(gòu),5個(gè)中斷源、2個(gè)優(yōu)先級(jí),5.1.2 中斷請(qǐng)求源和中斷控制,2019/9/15,6,中斷請(qǐng)求源及中斷請(qǐng)求標(biāo)志,5.1.2 中斷請(qǐng)求源和中斷控制,外部中斷0(INT0) 外部中斷1(INT1) T0溢出中斷(TF0) T1溢出中斷(TF1) 串行口中斷(RI或TI),2019/9/15,7,TCON寄存器:,5.1.2 中斷請(qǐng)求源和中斷控制,中斷控制TCON寄存器,2019/9/15,8,觸發(fā)方式設(shè)置及中斷標(biāo)志,電平方式(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表示),2019/9/15,9,兩種觸發(fā)方式比較:,電平方式時(shí), INTx低電平必須保持到響應(yīng)時(shí),否則就會(huì)漏掉;在中斷服務(wù)結(jié)束前,INTx低電平必須撤除,否則中斷返回之后將再次產(chǎn)生中斷。,邊沿方式時(shí),采樣到有效下降沿后,在IEx中將鎖存一個(gè)1。若CPU暫時(shí)不能響應(yīng),申請(qǐng)標(biāo)志也不會(huì)丟失,直到響應(yīng)時(shí)才清0。,2019/9/15,10,溢出中斷標(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。,2019/9/15,11,中斷控制SCON寄存器,RI:串口接收中斷標(biāo)志,響應(yīng)中斷時(shí)不能自動(dòng)清除 TI:串口發(fā)送中斷標(biāo)志,響應(yīng)中斷時(shí)不能自動(dòng)清除,2019/9/15,12,補(bǔ)充知識(shí)-中斷請(qǐng)求的撤除,1、定時(shí)器中斷請(qǐng)求的撤除: 對(duì)于定時(shí)器0或定時(shí)器1溢出中斷,CPU在響應(yīng)中斷后由硬件自動(dòng)清除中斷標(biāo)志位TF0或TF1,無(wú)須采取其他措施。 2、串行口中斷的撤除: 對(duì)于串行口中斷,在CPU響應(yīng)中斷后,硬件不能清除中斷請(qǐng)求標(biāo)志TI或RI,必須在中斷服務(wù)程序中由軟件來(lái)清除相應(yīng)的標(biāo)志。 3、外部中斷的撤除: 外部中斷分為邊沿觸發(fā)和電平觸發(fā)兩種方式。 (1)對(duì)于邊沿觸發(fā)的外部中斷0或外部中斷1,CPU在響應(yīng)中斷后由硬件自動(dòng)清除中斷標(biāo)志位IE0或IE1 ,無(wú)須采取其他措施。 (2)對(duì)于電平觸發(fā)的外部中斷0或外部中斷1,其中斷請(qǐng)求撤除方法較復(fù)雜。,2019/9/15,13,中斷源的開(kāi)放和屏蔽由IE控制(1,開(kāi)放;0,禁止),EX0:外中斷0允許 ET0:T0中斷允許 EX1:外中斷1允許,ET1:T1中斷允許 ES :串口中斷允許 EA :CPU中斷允許,中斷控制IE寄存器,2019/9/15,14,IE寄存器,2019/9/15,15,中斷控制IP寄存器,中斷優(yōu)先級(jí)由IP控制(1,高級(jí);0,低級(jí)),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、串口。,2019/9/15,16,IP寄存器,2019/9/15,17,中斷優(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ā)器(用戶(hù)不能尋址)。 狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETI控制。,2019/9/15,18,1、低優(yōu)先級(jí)中斷源可被高優(yōu)先級(jí)中斷源所中斷 (中斷嵌套),反之不能(即高優(yōu)先級(jí)中斷源不能被低 優(yōu)先級(jí)中斷源中斷)。 2、一種中斷源(不管是什么優(yōu)先級(jí)),一旦得到 響應(yīng),與它同級(jí)的中斷源不能再中斷它。 3、當(dāng)CPU同時(shí)收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求時(shí), 按自然優(yōu)先級(jí)的順序響應(yīng)中斷。,2019/9/15,19,2019/9/15,20,5.1.3 中斷處理過(guò)程,中斷響應(yīng)條件,有中斷請(qǐng)求 相應(yīng)的中斷允許位為1 CPU開(kāi)中斷(即EA=1),遇下面情況之一將不被響應(yīng)(此間中斷條件失效,中斷丟失),正在處理同級(jí)或高級(jí)中斷 (沒(méi)有高優(yōu)先級(jí)或同級(jí)優(yōu)先級(jí)的中斷服務(wù)在執(zhí)行) 當(dāng)前查詢(xún)周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期(正在執(zhí)行的指令已結(jié)束) 正在執(zhí)行RETI或訪問(wèn)IE或IP的指令(如果執(zhí)行的指令是RETI,或訪問(wèn)IE、IP,必須再執(zhí)行一條其他的指令才去中斷響應(yīng)),1、中斷響應(yīng),2019/9/15,21,中斷響應(yīng)時(shí)間,中斷響應(yīng)至少需要3個(gè)完整的機(jī)器周期(38個(gè))!,受阻時(shí)要附加35個(gè)機(jī)器周期(無(wú)同級(jí)或高級(jí)中斷正進(jìn)行),查詢(xún)周期不是當(dāng)前指令的最后機(jī)器周期(如MUL,+3) 查詢(xún)周期恰逢RETI類(lèi)指令(且后跟MUL指令+5),2019/9/15,22,CPU響應(yīng)中斷過(guò)程,將相應(yīng)優(yōu)先級(jí)狀態(tài)觸發(fā)器置1(阻斷后來(lái)同級(jí)或低級(jí)中斷 ) 執(zhí)行硬件LCALL指令(PC入棧,中斷服務(wù)程序入口址送PC ) 執(zhí)行中斷服務(wù)程序,編寫(xiě)中斷服務(wù)程序注意,中斷服務(wù)程序入口存放指令LJMP或AJMP 現(xiàn)場(chǎng)保護(hù)與現(xiàn)場(chǎng)恢復(fù),2019/9/15,23,中斷服務(wù)程序入口地址表,2019/9/15,24,2、中斷處理,2019/9/15,25,3、中斷返回,中斷服務(wù)程序最后指令必須是RETI,其功能:,將斷點(diǎn)從堆棧彈出送PC,CPU從原斷點(diǎn)繼續(xù)執(zhí)行程序 將相應(yīng)優(yōu)先級(jí)狀態(tài)觸發(fā)器清0,恢復(fù)原來(lái)工作狀態(tài),注意,不能用RET代替RETI 中斷服務(wù)程序中PUSH和POP必須成對(duì)使用,2019/9/15,26,小 結(jié),2019/9/15,27,5.1.4 應(yīng)用舉例,【例5-1】設(shè)有5個(gè)外部中斷源,中斷優(yōu)先級(jí)由高到低排隊(duì)順序?yàn)閄I0、XI1、XI2、XI3、XI4。試設(shè)計(jì)它們與80C51單片機(jī)的接口。,2019/9/15,28,中斷服務(wù)程序:,ORG 0003H LJMP INSE0 ORG 0013H LJMP INSE1 INSE0:PUSH PSW ;XI0中斷服務(wù) PUSH ACC POP ACC POP PSW RETI (轉(zhuǎn)下頁(yè)),2019/9/15,29,INSE1:PUSH PSW (接上頁(yè)) PUSH ACC JB P1.0,DV1 ;P1.0為1,轉(zhuǎn)XI1中斷服務(wù)程序 JB P1.1,DV2 ;P1.1為1,轉(zhuǎn)XI2中斷服務(wù)程序 JB P1.2,DV3 ;P1.2為1,轉(zhuǎn)XI3中斷服務(wù)程序 JB P1.3,DV4 ;P1.3為1,轉(zhuǎn)XI4中斷服務(wù)程序 INRET:POP ACC POP PSW RETI DV1: ;XI1中斷服務(wù)程序 AJMP INRET DV4: ;XI4中斷服務(wù)程序 AJMP INRET,2019/9/15,30,5.2 80C51單片機(jī)的定時(shí)器/計(jì)數(shù)器,結(jié)構(gòu),基本型:T0,定時(shí)、計(jì)數(shù)。 T1,定時(shí)、計(jì)數(shù)、串口波特率發(fā)生器。,5.2.1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)與工作原理,TH1、TL1 TH0、TL0 TCON TMOD,2019/9/15,31,由兩個(gè)特殊功能寄存器TCON、TMOD以及T0、T1 組成。 1、T0:分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器(加1計(jì)數(shù)器), 分別是:低8位計(jì)數(shù)器TL0和高8位計(jì)數(shù)器TH0。 2、T1:分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器(加1計(jì)數(shù)器), 分別是:低8位計(jì)數(shù)器TL1和高8位計(jì)數(shù)器TH1。 3、TMOD:定時(shí)器的模式(方式)控制寄存器。 4、TCON:定時(shí)器的控制寄存器。,2019/9/15,32,方式寄存器TMOD,GATE:門(mén)控位。GATE0時(shí),只要TRx為1,就可啟動(dòng)計(jì)數(shù)器工作;GATA1時(shí),定時(shí)器的啟動(dòng)還要加上INTx引腳為高電平這一條件。 C/T:模式選擇位。 清0為定時(shí)模式,置1為計(jì)數(shù)方式。 M1M0:工作方式設(shè)置位。可設(shè)置四種工作方式(見(jiàn)下頁(yè))。,2019/9/15,33,注意:TMOD不能進(jìn)行位尋址,2019/9/15,34,2019/9/15,35,控制寄存器TCON,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)與停止要由軟件控制)。,2019/9/15,36,工作原理,實(shí)質(zhì)是加1計(jì)數(shù)器,定時(shí)器模式時(shí),是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)。計(jì)數(shù)值乘以機(jī)器周期就是定時(shí)時(shí)間(每一個(gè)機(jī)器周期使計(jì)數(shù)器的值加1 ) 計(jì)數(shù)器模式時(shí),是對(duì)外部事件計(jì)數(shù)。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。,2019/9/15,37,5.2.2 定時(shí)器/計(jì)數(shù)器的工作方式,T0有方式0、1、2、3;T1有方式0、1、2。以T0為例說(shuō)明。,方式0:13位方式,2019/9/15,38,方式1:16位方式,X=216-N=65536-N 計(jì)數(shù)范圍:165536 計(jì)數(shù)初值要分成2個(gè)字節(jié)分別送入TH0、TL0,2019/9/15,39,方式2:8位自動(dòng)重裝方式,X=28-N=256-N 計(jì)數(shù)范圍:1256 特別適合與脈沖信號(hào)發(fā)生器,2019/9/15,40,方式3:(僅T0有此方式,T1的方式3將停止計(jì)數(shù)),TL0進(jìn)行8位定時(shí)/計(jì)數(shù) TH0進(jìn)行8位定時(shí)(T1方式2時(shí),可出借TR1、TF1),2019/9/15,41,5.2.3 定時(shí)器/計(jì)數(shù)器的初始化,初始化步驟: 對(duì)TMOD賦值,以確定T0和T1的工作方式; 求初值,并寫(xiě)入TH0、TL0或TH1、TL1; 中斷方式時(shí),要對(duì)IE賦值,開(kāi)放中斷; 使TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器工作。,2019/9/15,42,1、定時(shí)工作方式時(shí): X=M-計(jì)數(shù)值= 2、計(jì)數(shù)工作方式時(shí): X=M-計(jì)數(shù)值 式中: X:計(jì)數(shù)初值; t :要求定時(shí)的時(shí)間,單位是 ; fosc:振蕩器的振蕩頻率,單位是Mhz。,計(jì)數(shù)器初值的計(jì)算,M:最大計(jì)數(shù)值 模式0下: M=213=8192 模式1下: M=216=65536 模式2下: M=28=256 模式3下: M=28=256,2019/9/15,43,【例5-2】已知單片機(jī)時(shí)鐘頻率 =6MHZ,當(dāng)定時(shí)器T0分別工作于方式0和方式1,定時(shí)時(shí)間為1ms時(shí),計(jì)算送入TH0和TL0的計(jì)數(shù)初值各為多少?,2019/9/15,44,【例5-3】若單片機(jī)時(shí)鐘頻率 ,請(qǐng)計(jì)算定時(shí) 2ms所需的定時(shí)器初值。,解:由于定時(shí)器工作在方式2和方式3下時(shí)的最大定時(shí)時(shí)間只有0.256ms,因此要想獲得2ms的定時(shí)時(shí)間,定時(shí)器必須工作在方式0或方式1。 若采用方式0,則根據(jù)公式可求得定時(shí)器初值為: TC=213-2ms/1us=6192=1830H 即:TH0應(yīng)裝入C1H;TL0應(yīng)裝入10H(高三位為0) 若采用方式1,則有:TC=216-2ms/1us=63536=F830H 即:TH0應(yīng)裝入F8H;TL0應(yīng)裝入30H,2019/9/15,45,定時(shí)時(shí)間較小時(shí)(小于65ms),求計(jì)數(shù)初值X: Tcy為1S N=10ms/1S=10 000 X=65536-10000=D8F0H 應(yīng)將D8送TH0, F0H送TL0,5.2.4 應(yīng)用舉例,【例5-4】設(shè)系統(tǒng)的晶振頻率為12MHZ,利用定時(shí)/計(jì)數(shù)器T0的方式1,編制程序使P1.0引腳上輸出周期為20ms的方波。,確定方式字: T0在定時(shí)的方式1時(shí): M1M0=01,GATE=0 ,C/T=0 方式控制字為01H,2019/9/15,46,ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100H MAIN:MOV TMOD,#01H ;置T0方式1 MOV TH0,#0D8H;裝入計(jì)數(shù)初值 MOV TL0,#0F0H SETB ET0 ;T0開(kāi)中斷 SETB EA ;CPU開(kāi)中斷 SETB TR0 ;啟動(dòng)T0 SJMP $ ;等待中斷,DVT0:CPL P1.0 MOV TH0,#0D8H MOV TL0,#0F0H RETI END,主程序,中斷服務(wù)程序,2019/9/15,47,采用軟件查詢(xún)方式完成的源程序如下:,ORG 0000H LJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 0100H ;主程序 MAIN:MOV TMOD,#01H ;置T0工作于方式1 LOOP:MOV TH0,#0D8H ;裝入計(jì)數(shù)初值 MOV TL0,#0F0H SETB TR0 ;啟動(dòng)定時(shí)器T0 JNB TF0,$ ;TF0=0,查詢(xún)等待 CLR TF0 ;清TF0 CPL P1.0 ;P1.0取反輸出 SJMP LOOP END,2019/9/15,48,定時(shí)時(shí)間較大時(shí)(大于65ms)。實(shí)現(xiàn)方法:一是采用1個(gè)定時(shí)器定時(shí)一定的間隔(如20ms),然后用軟件進(jìn)行計(jì)數(shù);二是采用2個(gè)定時(shí)器級(jí)聯(lián),其中一個(gè)定時(shí)器用來(lái)產(chǎn)生周期信號(hào)(如20ms為周期),然后將該信號(hào)送入另一個(gè)計(jì)數(shù)器的外部脈沖輸入端進(jìn)行脈沖計(jì)數(shù)。,【例5-5】編寫(xiě)程序,實(shí)現(xiàn)用定時(shí)/計(jì)數(shù)器T0定時(shí),使P1.7引腳輸出周期為2s的方波。設(shè)系統(tǒng)的晶振頻率為12MHz。,確定方式字: T0在定時(shí)的方式1時(shí): M1M0=01,GATE=0 ,C/T=0 方式控制字為01H,求計(jì)數(shù)初值X: Tcy為1S N=20ms/1S=

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論