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

下載本文檔

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

文檔簡介

1、2022-2-141第第6 6章章 80C51 80C51的中斷系統(tǒng)及定時的中斷系統(tǒng)及定時/ /計數(shù)器計數(shù)器80C51單片機(jī)的單片機(jī)的中斷系統(tǒng)中斷系統(tǒng)6.180C5180C51單片機(jī)的單片機(jī)的中斷處理過程中斷處理過程6.280C5180C51單片機(jī)的單片機(jī)的定時定時/ /計數(shù)器計數(shù)器6.380C5280C52的定時的定時/ /計數(shù)器計數(shù)器2 26.4v與上對比,單片機(jī)中也有同樣的問題。CPU正在執(zhí)行原程序,突然,被意外事情打斷,轉(zhuǎn)去執(zhí)行新程序。CPU執(zhí)行新程序結(jié)束后,又回到原程序中繼續(xù)執(zhí)行。這樣的過程就叫 。v 某同學(xué)正在教室寫作業(yè),忽然被人叫出去,回來后,繼續(xù)寫作業(yè)。這就是生活中中斷的例子。

2、 6.1 80C51單片機(jī)的中斷系統(tǒng)單片機(jī)的中斷系統(tǒng)2022-2-1436.1 80C51單片機(jī)的中斷系統(tǒng)單片機(jī)的中斷系統(tǒng)6.1.1 80C516.1.1 80C51中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu)v CPUCPU進(jìn)行工作進(jìn)行工作A A時發(fā)生了事件時發(fā)生了事件B B,請求,請求CPUCPU馬上處理馬上處理v CPUCPU暫時中斷當(dāng)前工作暫時中斷當(dāng)前工作A A,轉(zhuǎn)去處理事件,轉(zhuǎn)去處理事件B Bv 事件事件B B處理完后,回到工作處理完后,回到工作A A被中斷的地方繼續(xù)處理被中斷的地方繼續(xù)處理A A工工作作v 中斷的概念中斷的概念v 中斷源中斷源v 中斷請求中斷請求v 中斷服務(wù)中斷服務(wù)v 中斷返回中斷

3、返回v 中斷系統(tǒng)中斷系統(tǒng)中斷的優(yōu)點中斷的優(yōu)點: :n CPUCPU利用率高利用率高n 控制實時性強(qiáng)控制實時性強(qiáng)n 系統(tǒng)可靠性好系統(tǒng)可靠性好處理文檔電話鈴響暫停文檔文檔中作暫停記號電話交談?wù)页鰰和S浱栁恢美^續(xù)處理文檔執(zhí)行主程序(日常事務(wù)程序)中斷申請信號有效(中斷請求)暫停執(zhí)行主程序響應(yīng)中斷當(dāng)前PC及寄存器入棧(保護(hù)現(xiàn)場)處理外設(shè)要求(中斷服務(wù))寄存器及PC出棧(恢復(fù)現(xiàn)場及中斷返回)繼續(xù)執(zhí)行主程序中斷源、中斷允許控制、中斷優(yōu)先級處理、中斷嵌套、中斷響應(yīng)過程中斷和子程序調(diào)用的區(qū)中斷和子程序調(diào)用的區(qū)別別 中斷服務(wù)程序1中斷服務(wù)程序 2中斷事件1中斷事件中斷事件 25.2 MCS-51單片機(jī)的中斷流程

4、、中斷嵌單片機(jī)的中斷流程、中斷嵌套套 主程序單片機(jī)中斷的應(yīng)用舉例單片機(jī)中斷的應(yīng)用舉例例例1 假設(shè)某消防隊坐落在道路的一邊,正常情況下,交通假設(shè)某消防隊坐落在道路的一邊,正常情況下,交通紅紅綠燈以綠燈以30s的間隔輪流點亮,當(dāng)有消防任務(wù)時,消防官兵只的間隔輪流點亮,當(dāng)有消防任務(wù)時,消防官兵只需要按一下設(shè)置在路邊的需要按一下設(shè)置在路邊的消防緊急按鈕消防緊急按鈕,則道路交通燈就會,則道路交通燈就會變成紅燈并持續(xù)變成紅燈并持續(xù)10s時間,禁止其他車輛通行,使消防車可時間,禁止其他車輛通行,使消防車可以順利通過,用以順利通過,用51單片機(jī)的中斷可以實現(xiàn)上述功能。單片機(jī)的中斷可以實現(xiàn)上述功能。例例2 在工

5、業(yè)應(yīng)用場合經(jīng)常利用中斷電路來實現(xiàn)系統(tǒng)的在工業(yè)應(yīng)用場合經(jīng)常利用中斷電路來實現(xiàn)系統(tǒng)的故障故障顯示顯示。假設(shè)有四個終端設(shè)備和主控室相連接,主控室可以采。假設(shè)有四個終端設(shè)備和主控室相連接,主控室可以采用報警或指示燈等方式表示終端設(shè)備是否正常工作。當(dāng)終端用報警或指示燈等方式表示終端設(shè)備是否正常工作。當(dāng)終端設(shè)備正常工作時,主控室指示燈滅,當(dāng)終端設(shè)備工作異常時設(shè)備正常工作時,主控室指示燈滅,當(dāng)終端設(shè)備工作異常時,主控室指示燈亮,用單片機(jī)中斷電路可以實現(xiàn)。,主控室指示燈亮,用單片機(jī)中斷電路可以實現(xiàn)。總結(jié):單片機(jī)的中斷能實現(xiàn)哪些功能?總結(jié):單片機(jī)的中斷能實現(xiàn)哪些功能?v解決快速解決快速CPUCPU和慢速外設(shè)之間

6、的矛盾和慢速外設(shè)之間的矛盾,使,使CPUCPU和外設(shè)可以并行工作。和外設(shè)可以并行工作。v具備故障處理能力具備故障處理能力,提高機(jī)器自身的可靠,提高機(jī)器自身的可靠性。性。v中斷方式中斷方式消除了消除了CPUCPU在查詢方式中的等待在查詢方式中的等待現(xiàn)象,大大提高了現(xiàn)象,大大提高了CPUCPU的工作效率。的工作效率。v及時采集、實時控制及時采集、實時控制。將現(xiàn)場采集的數(shù)據(jù)。將現(xiàn)場采集的數(shù)據(jù)通過中斷方式及時傳送給通過中斷方式及時傳送給CPUCPU,經(jīng)過處理,經(jīng)過處理后立即做出反應(yīng),實現(xiàn)現(xiàn)場控制。后立即做出反應(yīng),實現(xiàn)現(xiàn)場控制。2022-2-149v 80C5180C51中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu)5

7、5個中斷源、個中斷源、2 2個優(yōu)先級個優(yōu)先級中斷請求中斷請求中斷允許寄存器中斷允許寄存器 中斷請求標(biāo)志寄存器中斷請求標(biāo)志寄存器v想要接聽電話必須有兩個條件:電話鈴必須響;你聽到鈴聲響。v 對于51單片機(jī)同樣如此,光有中斷源是不夠的,還必須能夠被接收到。51單片機(jī)采用設(shè)置中斷請求標(biāo)志寄存器TCON和串行口中斷請求標(biāo)志寄存器SCON。接收到則相應(yīng)位置1。這樣MCS-51單片機(jī)工作時,在每個機(jī)器周期中都會去查詢中斷標(biāo)志寄存器,看哪位是1,如果某位是1,就說明其對應(yīng)中斷源有中斷請求,并被單片機(jī)接受到。2022-2-1411v 中斷源中斷源 中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址 * * * * *

8、6.1.2 80C516.1.2 80C51的中斷源的中斷源v外部中斷外部中斷0 0(INT0INT0) 0003H 0003Hv外部中斷外部中斷1 1(INT1INT1) 0013H 0013HvT0T0溢出中斷(溢出中斷(TF0TF0) 000BH 000BHvT1T1溢出中斷(溢出中斷(TF1TF1) 001BH 001BHv串行口中斷(串行口中斷(RIRI或或TITI) 0023H 0023H2022-2-1412v 觸發(fā)方式設(shè)置及中斷標(biāo)志觸發(fā)方式設(shè)置及中斷標(biāo)志 電平方式(電平方式(ITx=0ITx=0),),INTxINTx引腳引腳低電平低電平時時IEx=1IEx=1,響應(yīng)中響應(yīng)中斷

9、后斷后IExIEx不自動清不自動清0 0(INTxINTx引腳狀態(tài))。引腳狀態(tài))。 邊沿方式(邊沿方式(ITx=1ITx=1),),INTxINTx引腳引腳負(fù)跳變負(fù)跳變時時IEx=1IEx=1,響應(yīng)中響應(yīng)中斷后斷后IExIEx自動清自動清0 0。v 外部中斷標(biāo)志外部中斷標(biāo)志IE1IE1、IE0IE0(用(用IExIEx表示)表示)2022-2-1413兩種觸發(fā)方式比較:兩種觸發(fā)方式比較:v 電平方式電平方式時,時, INTxINTx低電平必須保持到響應(yīng)時,否則就會低電平必須保持到響應(yīng)時,否則就會漏掉;在中斷服務(wù)結(jié)束前,漏掉;在中斷服務(wù)結(jié)束前,INTxINTx低電平必須撤除,否則中斷低電平必須撤

10、除,否則中斷返回之后將再次產(chǎn)生中斷。返回之后將再次產(chǎn)生中斷。 例,例,82558255的中斷請求在接受讀或?qū)懖僮骱蠹幢粡?fù)位,因此的中斷請求在接受讀或?qū)懖僮骱蠹幢粡?fù)位,因此以其去請求電平觸發(fā)方式的中斷比較方便。以其去請求電平觸發(fā)方式的中斷比較方便。v邊沿方式邊沿方式時,采樣到有效下降沿后,在時,采樣到有效下降沿后,在IExIEx中將鎖存一個中將鎖存一個1 1。若若CPUCPU暫時不能響應(yīng),申請標(biāo)志也不會丟失,直到響應(yīng)時才暫時不能響應(yīng),申請標(biāo)志也不會丟失,直到響應(yīng)時才清清0 0。 例,例,ADC0809ADC0809的轉(zhuǎn)換結(jié)束信號的轉(zhuǎn)換結(jié)束信號EOCEOC為正脈沖,經(jīng)反相后就可為正脈沖,經(jīng)反相后就

11、可以作為以作為80C5180C51的的INTxINTx信號信號 。2022-2-1414v 溢出中斷標(biāo)志溢出中斷標(biāo)志TF1TF1、TF0TF0(用(用TFxTFx表示)表示) 溢出中斷請求標(biāo)志溢出中斷請求標(biāo)志TFxTFx ,TxTx啟動后就開始由初值進(jìn)行加啟動后就開始由初值進(jìn)行加1 1計數(shù),直至產(chǎn)生溢出使計數(shù),直至產(chǎn)生溢出使TFx=1TFx=1向向CPUCPU請求中斷。請求中斷。CPUCPU響應(yīng)中響應(yīng)中斷后斷后TFxTFx自動清自動清0 0。 v SCON SCON的中斷標(biāo)志的中斷標(biāo)志RIRI:串口:串口接收接收中斷標(biāo)志,響應(yīng)中斷時中斷標(biāo)志,響應(yīng)中斷時不能自動清除不能自動清除 TITI:串口:

12、串口發(fā)送發(fā)送中斷標(biāo)志,響應(yīng)中斷時中斷標(biāo)志,響應(yīng)中斷時不能自動清除不能自動清除 MCS-51系列單片機(jī)中斷源系列單片機(jī)中斷源中斷標(biāo)志中斷標(biāo)志 2022-2-14176.1.3 80C516.1.3 80C51中斷的控制中斷的控制v 中斷允許控制中斷允許控制中斷源的開放和屏蔽由中斷源的開放和屏蔽由IEIE控制(控制(1 1,開放;,開放;0 0,禁止,禁止) v EX0:外中斷外中斷0允許允許 v ET0:T0中斷允許中斷允許 v EX1:外中斷外中斷1 1允許允許 v ET1:T1中斷允許中斷允許v ES :串口中斷允許串口中斷允許v EA :CPU中斷允許中斷允許 v 單片機(jī)復(fù)位時,單片機(jī)復(fù)位

13、時,IEIE各位清各位清0 0,禁止所有中斷,禁止所有中斷 * * * *v 單片機(jī)復(fù)位時,單片機(jī)復(fù)位時,TCONTCON和和SCONSCON各位清各位清0 0 * * * *中斷的開放和禁止中斷的開放和禁止 2022-2-1419v 中斷優(yōu)先級控制中斷優(yōu)先級控制中斷優(yōu)先級由中斷優(yōu)先級由IPIP控制(控制(1 1,高級;,高級;0 0,低級,低級) v PX0:外中斷外中斷0優(yōu)先級優(yōu)先級 v PT0:T0中斷中斷優(yōu)先級優(yōu)先級v PX1:外外中斷中斷1 1優(yōu)先級優(yōu)先級v PT1:T1中斷中斷優(yōu)先級優(yōu)先級v PS :串口中斷串口中斷優(yōu)先級優(yōu)先級同一優(yōu)先級的自然順序:同一優(yōu)先級的自然順序:自高至低:

14、自高至低:INT0INT0、TOTO、INT1INT1、T1T1、串口。、串口。 v中斷優(yōu)先原則:(概括為四句話)v1、低級不打斷高級v2、高級不睬低級v3、同級不能打斷v4、同級、同時中斷,事先約定。 2022-2-1421v 中斷優(yōu)先級遵循的原則中斷優(yōu)先級遵循的原則 * * * *v幾個中斷同時申請,先響應(yīng)高級的中斷幾個中斷同時申請,先響應(yīng)高級的中斷 v正進(jìn)行的中斷服務(wù),同級或低級中斷不能對其正進(jìn)行的中斷服務(wù),同級或低級中斷不能對其中斷,但可以被高級中斷所中斷。中斷,但可以被高級中斷所中斷。 為此,中斷系統(tǒng)內(nèi)設(shè)有對應(yīng)高、低為此,中斷系統(tǒng)內(nèi)設(shè)有對應(yīng)高、低2 2個個優(yōu)先級狀優(yōu)先級狀態(tài)觸發(fā)器態(tài)觸

15、發(fā)器(用戶不能尋址)。(用戶不能尋址)。 狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETIRETI控制。控制。2022-2-14226.2 80C51單片機(jī)中斷處理過程單片機(jī)中斷處理過程6.2.1 6.2.1 中斷響應(yīng)條件和時間中斷響應(yīng)條件和時間 v 中斷響應(yīng)條件中斷響應(yīng)條件 * * * * *v 有中斷請求有中斷請求 v 相應(yīng)的中斷允許位為相應(yīng)的中斷允許位為1 1v CPUCPU開中斷(即開中斷(即EA=1EA=1) 遇下面情況之一將不被響應(yīng)(遇下面情況之一將不被響應(yīng)(此間中斷條件失效,中斷丟失此間中斷條件失效,中斷丟失) v 正在處理同級或高級中斷正在處理同級或高級中斷

16、 v 當(dāng)前選擇周期不是所執(zhí)行指令的最后一個機(jī)器周期當(dāng)前選擇周期不是所執(zhí)行指令的最后一個機(jī)器周期 v 正在執(zhí)行正在執(zhí)行RETIRETI或或訪問訪問IEIE或或IPIP 的指令的指令 2022-2-1423v 中斷響應(yīng)時間中斷響應(yīng)時間中斷響應(yīng)至少需要中斷響應(yīng)至少需要3 3個完整的機(jī)器周期個完整的機(jī)器周期(3 38 8個)!個)!受阻時要附加受阻時要附加3 3 5 5個機(jī)器周期(個機(jī)器周期(無同級或高級中斷正進(jìn)行無同級或高級中斷正進(jìn)行) v 排序周期排序周期不是指令的最后機(jī)器周期不是指令的最后機(jī)器周期( (如如MULMUL,5 5個個) )v 排序周期排序周期恰逢恰逢RETIRETI類指令類指令(

17、(要再跟指令,若是要再跟指令,若是MULMUL,8 8個個) )響應(yīng)時間響應(yīng)時間v (1 1)最快響應(yīng)時間)最快響應(yīng)時間 以外部中斷的電平觸發(fā)為最快。以外部中斷的電平觸發(fā)為最快。v 從查詢中斷請求信號到中斷服務(wù)程序需要三個機(jī)器周期:從查詢中斷請求信號到中斷服務(wù)程序需要三個機(jī)器周期:1 1個周期(查詢)個周期(查詢)2 2個周期(長調(diào)用個周期(長調(diào)用LCALLLCALL)v(2 2)最長響應(yīng)時間)最長響應(yīng)時間 若當(dāng)前指令是若當(dāng)前指令是RETRET、RETIRETI和和IPIP、IEIE指令指令,緊接著下一條是乘除指令發(fā)生,則最長為,緊接著下一條是乘除指令發(fā)生,則最長為8 8個周期:個周期:v 2

18、 2個周期執(zhí)行當(dāng)前指令(其中含有個周期執(zhí)行當(dāng)前指令(其中含有1 1個周期查詢)個周期查詢)4 4個周個周期乘除指令期乘除指令2 2個周期長調(diào)用個周期長調(diào)用8 8個周期。個周期。2022-2-14256.2.2 6.2.2 中斷響應(yīng)過程中斷響應(yīng)過程v CPUCPU響應(yīng)中斷過程響應(yīng)中斷過程v 將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置1 1(阻斷后來同級或低級中斷阻斷后來同級或低級中斷 )v 執(zhí)行硬件執(zhí)行硬件LCALLLCALL指令(指令(PCPC入棧,中斷服務(wù)程序入口址送入棧,中斷服務(wù)程序入口址送PCPC )v 執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序 v 編寫中斷服務(wù)程序注意編寫中斷服務(wù)程序注意

19、v 中斷服務(wù)程序入口存放指令中斷服務(wù)程序入口存放指令LJMPLJMP或或AJMPAJMPv 現(xiàn)場保護(hù)與現(xiàn)場恢復(fù)現(xiàn)場保護(hù)與現(xiàn)場恢復(fù)2022-2-14266.2.3 6.2.3 中斷返回中斷返回v 中斷服務(wù)程序最后指令必須是中斷服務(wù)程序最后指令必須是RETIRETI,其功能:,其功能: v 將斷點從堆棧彈送將斷點從堆棧彈送PCPC,CPUCPU從原斷點繼續(xù)執(zhí)行從原斷點繼續(xù)執(zhí)行 v 將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清0 0,恢復(fù)原來工作狀態(tài),恢復(fù)原來工作狀態(tài)v 注意注意v 不能用不能用RETRET代替代替RETRETI I v 中斷服務(wù)程序中中斷服務(wù)程序中PUSHPUSH和和POPPO

20、P必須成對使用必須成對使用2022-2-14276.2.4 6.2.4 中斷程序舉例中斷程序舉例【例例6-16-1】單外部中斷源示例單外部中斷源示例void Ex0()interrupt 0 void Ex0()interrupt 0 Flag= Flag=Flag; Flag; while(1)while(1)if(Flag=0) if(Flag=0) /左移左移 ScanNum=_crol_(ScanNum,1); ScanNum=_crol_(ScanNum,1); P2=ScanNum; P2=ScanNum; else else /右移右移 ScanNum=_cror_(ScanNu

21、m,1); ScanNum=_cror_(ScanNum,1); P2=ScanNum; P2=ScanNum; DelayMs(500); DelayMs(500); 2022-2-1428v【例例6-26-2】如圖所示,編寫程序?qū)崿F(xiàn):系統(tǒng)上電后,數(shù)碼管如圖所示,編寫程序?qū)崿F(xiàn):系統(tǒng)上電后,數(shù)碼管顯示顯示“P”P”。按下。按下S0S0鍵則數(shù)碼管進(jìn)行加計數(shù),鍵則數(shù)碼管進(jìn)行加計數(shù),S1S1鍵則數(shù)碼管進(jìn)鍵則數(shù)碼管進(jìn)行減計數(shù)。計數(shù)值顯示在數(shù)碼管上。行減計數(shù)。計數(shù)值顯示在數(shù)碼管上。void Ex0Isr() interrupt 0 void Ex0Isr() interrupt 0 if(Flag0=0

22、)Flag0=1; if(Flag0=0)Flag0=1; Flag1 = 0; Flag1 = 0; void Ex1Isr() interrupt 2 void Ex1Isr() interrupt 2 if(Flag1=0)Flag1=1; if(Flag1=0)Flag1=1; Flag0 = 0; Flag0 = 0; 2022-2-14296.3 80C51單片機(jī)的定時單片機(jī)的定時/計數(shù)器計數(shù)器v結(jié)構(gòu)結(jié)構(gòu)基本型:基本型:T0T0,定時、計數(shù)。,定時、計數(shù)。 T1 T1,定時、計數(shù)、串口波特率發(fā)生器。,定時、計數(shù)、串口波特率發(fā)生器。 增強(qiáng)型:增加了增強(qiáng)型:增加了T2T2。見。見5.3

23、.45.3.4節(jié)。節(jié)。 6.3.1 6.3.1 定時定時/ /計數(shù)器的結(jié)構(gòu)和工作原理計數(shù)器的結(jié)構(gòu)和工作原理 v TH1TH1、TL1TL1v TH0TH0、TL0TL0v TCONTCONv TMODTMOD2022-2-1430v工作原理工作原理-實質(zhì)是實質(zhì)是1616位加位加1 1計數(shù)器計數(shù)器v 定時器定時器模式時,對內(nèi)部模式時,對內(nèi)部機(jī)器周期機(jī)器周期計數(shù)。計數(shù)。定時時間定時時間= =計數(shù)值計數(shù)值* *機(jī)器周期機(jī)器周期v 計數(shù)器計數(shù)器模式時,是對模式時,是對外部脈沖外部脈沖計數(shù)。脈沖由計數(shù)。脈沖由T0T0(P3.4P3.4)或或T1T1( (P3.5P3.5) )引腳輸入。引腳輸入。 注意注

24、意:(:(若若計數(shù)值計數(shù)值為為N N, ,計數(shù)初值計數(shù)初值為為X X) )溢出信號使溢出信號使TF0TF0或或TF1TF1置置1 1,并,并發(fā)出中斷請求發(fā)出中斷請求,1616位時有:位時有: X=65536-N X=65536-N12MHz12MHz晶振時,計數(shù)頻率低于晶振時,計數(shù)頻率低于0.5MHz 0.5MHz 2022-2-1431v控制寄存器控制寄存器TCONTCONvTFxTFx:TxTx溢出標(biāo)志位。溢出標(biāo)志位。響應(yīng)中斷后響應(yīng)中斷后TFxTFx有硬件自動清有硬件自動清0 0。用軟件設(shè)置用軟件設(shè)置TFxTFx可產(chǎn)生同硬件置可產(chǎn)生同硬件置1 1或清或清0 0同樣的效果。同樣的效果。vTR

25、xTRx:TxTx運行控制位。運行控制位。置置1 1時開始工作;清時開始工作;清0 0時停止工作。時停止工作。TRxTRx要由軟件置要由軟件置1 1或清或清0 0(即啟動與停止要由軟件控制即啟動與停止要由軟件控制)。)。6.3.2 6.3.2 定時定時/ /計數(shù)器的控制計數(shù)器的控制2022-2-1432v工作方式寄存器工作方式寄存器TMODTMODn GATEGATE:門控位門控位。GATEGATE0 0時,只要時,只要TRxTRx為為1 1,就可啟動計,就可啟動計數(shù)器工作;數(shù)器工作;GATAGATA1 1時,定時器的啟動還要加上時,定時器的啟動還要加上INTxINTx引腳引腳為高電平這一條件

26、。為高電平這一條件。 n C/TC/T:模式選擇位模式選擇位。 清清0 0為定時模式,置為定時模式,置1 1為計數(shù)方式。為計數(shù)方式。n M1M0M1M0:工作方式設(shè)置位工作方式設(shè)置位??稍O(shè)置四種工作方式??稍O(shè)置四種工作方式( (見下頁見下頁)。)。2022-2-1433門控位作用門控位作用n 當(dāng)當(dāng)GATE=0GATE=0時時僅由僅由TR0TR0控制與門的開啟。與門輸出控制與門的開啟。與門輸出1 1時,控制開關(guān)時,控制開關(guān)接通,計數(shù)開始;接通,計數(shù)開始; n 當(dāng)當(dāng)GATE=1GATE=1時時與門的開啟由與門的開啟由INT0INT0和和TR0TR0共同控制。這種方式可以用共同控制。這種方式可以用來

27、測量來測量INT0INT0引腳上正脈沖的寬度。引腳上正脈沖的寬度。 2022-2-1434注意:注意:TMODTMOD不能進(jìn)行位尋址不能進(jìn)行位尋址 定時器的四種工作方式定時器的四種工作方式注注意意:方式:方式0的計數(shù)初值高的計數(shù)初值高8位和低位和低5位確定麻煩位確定麻煩 ,實際應(yīng)用,實際應(yīng)用中常由中常由16位的方式位的方式1取代。取代。例如:設(shè)定時器T0為定時工作方式,要求用軟件啟動定時器T0工作,按方式1工作;定時器T1為計數(shù)工作方式,要求軟件啟動,工作方式為方式2。則根據(jù)TMOD各位的定義可知,其控制字為: 即控制字為即控制字為61H,其指令形式為:,其指令形式為: MOV TMOD,#6

28、1H格式:格式: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 0 1 1 0 0 0 0 1定時器的初始值的計算定時器的初始值的計算對于不同的工作方式,計數(shù)器位數(shù)不同,故最大計數(shù)值對于不同的工作方式,計數(shù)器位數(shù)不同,故最大計數(shù)值M也不同:也不同: 方式方式0:M=213=8192 方式方式1:M=216=65536 方式方式2:M=28=256 方式方式3:定時器定時器0分為分為2個個8位計數(shù)器,每個位計數(shù)器,每個M均為均為256。因為定時因為定時/計數(shù)器是作加計數(shù)器是作加1計數(shù),并在計滿溢出時產(chǎn)生中斷,因此初值計數(shù),并在計滿溢出

29、時產(chǎn)生中斷,因此初值X的計算如下:的計算如下: X = M 計數(shù)值計數(shù)值 計算出來的結(jié)果計算出來的結(jié)果X轉(zhuǎn)換為轉(zhuǎn)換為16進(jìn)制數(shù)進(jìn)制數(shù)后分別寫入后分別寫入TL0(TL1)、)、TH0(TH1)。)。注意!注意!方式方式0時初始值寫入時,對于時初始值寫入時,對于TL不用的高不用的高3位應(yīng)填入位應(yīng)填入0!2022-2-1438 C/T=1 C/T=1時,則為計數(shù)模式,有:時,則為計數(shù)模式,有: X=2X=21313-N=8192-N-N=8192-N C/T=0 C/T=0時,則為定時模式,有:時,則為定時模式,有: X=2X=21313-N=8192-N-N=8192-N,N=N=t t/Tcy/

30、Tcy【例例5-35-3】若計數(shù)個數(shù)若計數(shù)個數(shù)N N為為2 2,求計數(shù)初值。,求計數(shù)初值。 公式法計算:公式法計算:X X819281922=8190=1FFEH2=8190=1FFEH 求補(bǔ)法計算:對求補(bǔ)法計算:對0 0000 0000 0010B0 0000 0000 0010B取反加取反加1 1為:為: 1 1111 1111 1110B(1 1111 1111 1110B(1FFEH1FFEH) )初值計算:初值計算:v公式法公式法 v求補(bǔ)法求補(bǔ)法 :X=X=對對N N求補(bǔ)求補(bǔ)2022-2-14396.3.3 6.3.3 定時定時/ /計數(shù)器的工作方式計數(shù)器的工作方式T0T0有方式有方

31、式0 0、1 1、2 2、3 3;T1T1有方式有方式0 0、1 1、2 2。以。以T0T0為例說明。為例說明。v方式方式0 0:1313位方式位方式 2022-2-1440v方式方式1 1:1616位方式位方式 v X=2X=21616-N-N= =65536-N 65536-N 計數(shù)范圍:計數(shù)范圍:1 16553665536v 計數(shù)初值要計數(shù)初值要分成分成2 2個字節(jié)個字節(jié)分別送入分別送入TH0TH0、TL0TL02022-2-1441【例例6-46-4】若要求定時器若要求定時器T0T0工作于方式工作于方式1 1,定時時間為,定時時間為1ms1ms,當(dāng)晶振為當(dāng)晶振為6 MHz6 MHz時,

32、求送入時,求送入TH0TH0和和TL0TL0的計數(shù)初值各為多少?的計數(shù)初值各為多少?應(yīng)怎樣送入應(yīng)怎樣送入TH0TH0和和TL0TL0?由于晶振為由于晶振為6 MHz6 MHz,所以機(jī)器周期,所以機(jī)器周期TcyTcy為為2 2S S,因此:,因此:N=t/TcyN=t/Tcy=1=11010-3-3/2/21010-6-6500500X X2 21616-N-N65536-50065536-5006503665036FE0CH FE0CH n也可以利用以下也可以利用以下2 2條語句完成:條語句完成: TH0 =TH0 = (65536-500) (65536-500)/ /256 ;256 ;

33、商商為計數(shù)初值的為計數(shù)初值的高字節(jié)高字節(jié) TL0 = TL0 = (65536-500)(65536-500)% %256 ; 256 ; 余數(shù)余數(shù)為計數(shù)初值的為計數(shù)初值的低字節(jié)低字節(jié)分別將分別將FEHFEH送入送入TH0TH0中,中,0CH0CH送入送入TL0TL0中即可。中即可。2022-2-1442v方式方式2 2:8 8位自動重裝方式位自動重裝方式 v X=2X=28 8-N=256-N -N=256-N 計數(shù)范圍:計數(shù)范圍:1 1256256v 特別適合與脈沖信號發(fā)生器特別適合與脈沖信號發(fā)生器2022-2-1443v方式方式3 3:(僅(僅T0T0有此方式,有此方式,T1T1的方式的

34、方式3 3將停止計數(shù))將停止計數(shù)) v TL0 TL0進(jìn)行進(jìn)行8 8位定時位定時/ /計數(shù)計數(shù)v TH0 TH0進(jìn)行進(jìn)行8 8位定時(位定時(T1T1方式方式2 2時,可出借時,可出借TR1TR1、TF1TF1)v在單片機(jī)的串行應(yīng)用中,在單片機(jī)的串行應(yīng)用中,T1T1常作為串行口波特率發(fā)生器,此時常作為串行口波特率發(fā)生器,此時可將可將T0T0設(shè)為方式設(shè)為方式3 3。用T1、工作方式0實現(xiàn)1秒延時函數(shù),晶振頻率為12MHz。解:方式0采用13位計數(shù)器,其最大定時時間為:81921s = 8.192ms,因此,定時時間不可能選擇50ms,可選擇定時時間為5ms,再循環(huán)200次。定時時間為5ms,則計

35、數(shù)值為5ms/1s =5000,T1的初值為: X = M 計數(shù)值= 8192 5000 = 3192 = C78H = 0110001111000B13位計數(shù)器中TL1的高3位未用,填寫0,TH1占高8位,所以,X的實際填寫值應(yīng)為:X = 0110001100011000B = 6318H舉舉 例例1 1用T1方式0實現(xiàn)1秒延時函數(shù)如下: void delay1s() unsigned char i; TMOD=0 x00; / 置T1為工作方式0 for(i=0;i0 xc8;i+) / 設(shè)置200次循環(huán)次數(shù) TH1=0 x63; / 設(shè)置定時器初值 TL1=0 x18; TR1=1; /

36、 啟動T1 while(!TF1); / 查詢計數(shù)是否溢出,即定時5ms時間到,TF1=1 TF1=0; / 5ms定時時間到,將定時器溢出標(biāo)志位TF1清零 舉舉 例例1 1用T1、工作方式2實現(xiàn)1秒延時,晶振頻率為12MHz。解:因工作方式2是8位計數(shù)器,其最大定時時間為:2561s = 256s,為實現(xiàn)1秒延時,可選擇定時時間為250s,再循環(huán)4000次。定時時間選定后,可確定計數(shù)值為250,則T1的初值為: X = M 計數(shù)值=256 250 = 6 = 6H。采用T1方式2工作,因此,TMOD =0 x20。舉舉 例例2 2用定時器工作方式2實現(xiàn)的1秒延時函數(shù)如下:void delay

37、1s() unsigned int i; / i取值為04000,故不能定義成unsigned char TMOD=0 x20; / 設(shè)置T1為方式2 TH1=6;/ 設(shè)置定時器初值,放在for循環(huán)之外 TL1=6; for(i=0;i4000;i+) / 設(shè)置4000次循環(huán)次數(shù) TR1=1; / 啟動T1 while(!TF1); / 查詢是否溢出,即定時250s到,TF1=1 TF1=0;/ 250s定時到,將溢出標(biāo)志位TF1清零 舉舉 例例2 22022-2-14486.3.4 6.3.4 定時定時/ /計數(shù)器應(yīng)用舉例計數(shù)器應(yīng)用舉例初始化程序應(yīng)完成:初始化程序應(yīng)完成:v對對TMODTMO

38、D賦值,以確定賦值,以確定T0T0和和T1T1的工作方式;的工作方式;v求初值求初值, ,并寫入并寫入TH0TH0、TL0TL0或或TH1TH1、TL1TL1;v中斷方式時,要對中斷方式時,要對IEIE賦值,開放中斷;賦值,開放中斷;v使使TR0TR0或或TR1TR1置位,啟動定時置位,啟動定時/ /計數(shù)器工作。計數(shù)器工作。2022-2-1449v計數(shù)應(yīng)用計數(shù)應(yīng)用【例例6-36-3】有一包裝流水線,產(chǎn)品每計數(shù)有一包裝流水線,產(chǎn)品每計數(shù)2424瓶時發(fā)出一個包瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務(wù)。用裝控制信號。試編寫程序完成這一計數(shù)任務(wù)。用T0T0完成計數(shù),完成計數(shù),用用P1.0P

39、1.0發(fā)出控制信號。發(fā)出控制信號。確定方式字:確定方式字:T0T0在計數(shù)的方式在計數(shù)的方式2 2時:時:M1M0=10M1M0=10,GATE=0 GATE=0 ,C/T=1C/T=1方式控制字為方式控制字為06H06H 求計數(shù)初值求計數(shù)初值X:X:N=24N=24X=256-24=232=E8HX=256-24=232=E8H應(yīng)將應(yīng)將E8HE8H送入送入TH0TH0和和TL0TL0中中 2022-2-1450while(1)while(1) if(Flag= if(Flag= =1)=1) Flag = 0; Flag = 0; P37=0; P37=0; P0=SegCodeCounter

40、; P0=SegCodeCounter; DelayMs(20); DelayMs(20); P37=1; P37=1; 主程序(部分)主程序(部分) 中斷服務(wù)程序中斷服務(wù)程序 void C0Isr(void C0Isr( )interrupt 1 )interrupt 1 Flag = 1; Flag = 1; Counter+; Counter+; if(Counter= if(Counter= =13)Counter=0;=13)Counter=0; 2022-2-1451v定時應(yīng)用定時應(yīng)用v 定時時間較小時(小于定時時間較小時(小于70ms70ms)。晶振為。晶振為11.0592 MH

41、z11.0592 MHz時,時,TcyTcy為為1.0851.085S S??芍苯硬捎梅绞健?芍苯硬捎梅绞? 1完成定時任務(wù)。完成定時任務(wù)。 【例例6-46-4】利用定時利用定時/ /計數(shù)器計數(shù)器T0T0的方式的方式1 1,產(chǎn)生,產(chǎn)生10ms10ms的定時,并的定時,并使使P2.7P2.7引腳上輸出周期為引腳上輸出周期為20ms20ms的方波,采用中斷方式,設(shè)系的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為統(tǒng)的晶振頻率為11.0592 MHz11.0592 MHz。 確定方式字:確定方式字:T0T0在定時的方式在定時的方式1 1時:時:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/

42、T=0C/T=0方式控制字為方式控制字為0101H H 求計數(shù)初值求計數(shù)初值X:X:TcyTcy為為1.0851.085S S N=10ms/1.085N=10ms/1.085S=9216S=9216X=65536-9216=DC00HX=65536-9216=DC00H應(yīng)將應(yīng)將DCDC送送TH0, 00HTH0, 00H送送TL0TL0 2022-2-1452void main(void)void main(void) TMOD=0 x01; TMOD=0 x01; TL0 =0 xDC; TL0 =0 xDC; TH0 =0 x00; TH0 =0 x00; IE = 0 x82; IE

43、= 0 x82; TR0 =1; TR0 =1; while(1); while(1); 主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 void T0Isr() interrupt 1 void T0Isr() interrupt 1 P27 = P27 = P27;P27; TL0 = 0 xDC; TL0 = 0 xDC; TH0 = 0 x00; TH0 = 0 x00; 2022-2-1453v 定時時間較大時(大于定時時間較大時(大于70ms70ms)。實現(xiàn)方法:一是采用。實現(xiàn)方法:一是采用1 1個定個定時器定時一定的間隔(如時器定時一定的間隔(如20ms20ms),然后用軟件進(jìn)行計數(shù);二

44、是),然后用軟件進(jìn)行計數(shù);二是采用采用2 2個定時器級聯(lián),其中一個定時器用來產(chǎn)生周期信號(如個定時器級聯(lián),其中一個定時器用來產(chǎn)生周期信號(如20ms20ms為周期),然后將該信號送入另一個計數(shù)器的外部脈沖輸為周期),然后將該信號送入另一個計數(shù)器的外部脈沖輸入端進(jìn)行脈沖計數(shù)。入端進(jìn)行脈沖計數(shù)。 【例例6-56-5】編寫程序,實現(xiàn)用定時編寫程序,實現(xiàn)用定時/ /計數(shù)器計數(shù)器T0T0定時,使定時,使P2.7P2.7引腳引腳輸出周期為輸出周期為1s1s的方波。設(shè)系統(tǒng)的晶振頻率為的方波。設(shè)系統(tǒng)的晶振頻率為11.0592MHz11.0592MHz。確定方式字:確定方式字:T0T0在定時的方式在定時的方式1

45、 1時:時:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/T=0C/T=0方式控制字為方式控制字為0101H H 求計數(shù)初值求計數(shù)初值X:X:TcyTcy為為1 1S S N=20ms/12/11.0592=18432N=20ms/12/11.0592=18432X=65536-18432=B800HX=65536-18432=B800H應(yīng)將應(yīng)將B8B8送送TH0, 00HTH0, 00H送送TL0TL0 采用定時采用定時20ms20ms,然后再計數(shù),然后再計數(shù)2525次次的方法實現(xiàn)的方法實現(xiàn) 2022-2-1454void main(void)void main(void)

46、 TMOD=0 x01;TMOD=0 x01;TL0=0 x00;TL0=0 x00;TH0=0 xB8;TH0=0 xB8;IE=0 x82; IE=0 x82; TR0=1;TR0=1;while(1);while(1); void T0Isr() interrupt 1 void T0Isr() interrupt 1 static uchar Counter; static uchar Counter; Counter+; Counter+; if(Counter=25) if(Counter=25) P27=P27; P27=P27; Counter=0; Counter=0; TL

47、0=0 x00; TL0=0 x00; TH0=0 xB8; TH0=0 xB8; 主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 2022-2-1455v門控位的應(yīng)用門控位的應(yīng)用【例例6-66-6】 測量測量INT0INT0引腳上出引腳上出現(xiàn)的正脈沖寬度,并將結(jié)果現(xiàn)的正脈沖寬度,并將結(jié)果(以機(jī)器周期的形式)存放在(以機(jī)器周期的形式)存放在30H30H和和31H31H兩個單元中。兩個單元中。v 將將T0T0設(shè)置為方式設(shè)置為方式1 1的定的定時方式,且時方式,且GATE=1GATE=1,計數(shù),計數(shù)器初值為器初值為0 0,將,將TR0TR0置置1 1。 vINT0INT0引腳上出現(xiàn)高電引腳上出現(xiàn)高電平時,

48、加平時,加1 1計數(shù)器開始對計數(shù)器開始對機(jī)器周期計數(shù)。機(jī)器周期計數(shù)。 vINT0INT0引腳上信號變?yōu)橐_上信號變?yōu)榈碗娖綍r,停止計數(shù)低電平時,停止計數(shù) v然后讀出然后讀出TH0TH0、TL0TL0的值的值 n 單定時器產(chǎn)生多定時間隔單定時器產(chǎn)生多定時間隔 (略)(略) 2022-2-1456while(1)while(1) TMOD=0 x09; TMOD=0 x09; TL0=0; TL0=0; TH0=0; TH0=0; while(P32); while(P32); TR0=1; TR0=1; while(!P32); while(!P32); while(P32); while(P3

49、2); TR0=0; TR0=0; Low=TL0; Low=TL0; High=TH0; High=TH0; 主程序(部分)主程序(部分) 6.4 80C52的定時的定時/計數(shù)器計數(shù)器T2T2T2矢量地址矢量地址002B002BH H;T2T2還增加了還增加了1616位自動重裝位自動重裝、捕獲捕獲及及加減計數(shù)加減計數(shù)方式;方式;1.01.0為計數(shù)輸入為計數(shù)輸入(T2)(T2),還可,還可輸出脈沖輸出脈沖;P1.1P1.1(EXT2)EXT2)有捕獲有捕獲/ /重裝方式觸發(fā)和檢測功能。重裝方式觸發(fā)和檢測功能。 6.4.1 T26.4.1 T2的相關(guān)控制寄存器的相關(guān)控制寄存器 v工作方式寄存器工作方式寄存器T2MODT2MODn T2OET2OE:輸出輸出允許位允許位。為。為1 1時,允許定時時鐘從時,允許定時時鐘從P1.0P1.0輸出。輸出。n DCENDCEN:計數(shù)方向控制使能位計數(shù)方向控制使能位。

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論