第5章 80C51單片機(jī)的中斷系統(tǒng)_第1頁
第5章 80C51單片機(jī)的中斷系統(tǒng)_第2頁
第5章 80C51單片機(jī)的中斷系統(tǒng)_第3頁
第5章 80C51單片機(jī)的中斷系統(tǒng)_第4頁
第5章 80C51單片機(jī)的中斷系統(tǒng)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第5 5章章 80C5180C51單片機(jī)的中斷系統(tǒng)單片機(jī)的中斷系統(tǒng)及定時(shí)器及定時(shí)器5.1 80C515.1 80C51的中斷系統(tǒng)的中斷系統(tǒng)5.2 80C515.2 80C51的中斷處理過程的中斷處理過程5.3 80C515.3 80C51的定時(shí)的定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器5.1 80C515.1 80C51的中斷系統(tǒng)的中斷系統(tǒng) 5.1.1 80C515.1.1 80C51的中斷系統(tǒng)結(jié)構(gòu)的中斷系統(tǒng)結(jié)構(gòu)一、中斷的概念一、中斷的概念 CPUCPU在處理某一事件在處理某一事件A A時(shí),發(fā)生了另一事件時(shí),發(fā)生了另一事件B B請請求求CPUCPU迅速去處理(迅速去處理(中斷發(fā)生中斷發(fā)生);); CPUCPU

2、暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B B(中中斷響應(yīng)和中斷服務(wù)斷響應(yīng)和中斷服務(wù));); 待待CPUCPU將事件將事件B B處理完畢后,再回到原來事件處理完畢后,再回到原來事件A A被被中斷的地方繼續(xù)處理事件中斷的地方繼續(xù)處理事件A A(中斷返回中斷返回),這一過),這一過程稱為程稱為中斷中斷 。引起引起CPUCPU中斷的根源,稱為中斷的根源,稱為中斷源中斷源。中斷源向。中斷源向CPUCPU提出的中提出的中斷請求。斷請求。CPUCPU暫時(shí)中斷原來的事務(wù)暫時(shí)中斷原來的事務(wù)A A,轉(zhuǎn)去處理事件,轉(zhuǎn)去處理事件B B。對事件。對事件B B處理完畢后,再回到原來被中斷的地方(

3、即處理完畢后,再回到原來被中斷的地方(即斷點(diǎn)斷點(diǎn)),稱為中),稱為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)中斷系統(tǒng)(中斷機(jī)(中斷機(jī)構(gòu))。構(gòu))。 隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速技術(shù)不僅解決了快速主機(jī)與慢速I/OI/O設(shè)備的設(shè)備的數(shù)據(jù)傳送問題,而且還具有如下優(yōu)點(diǎn):數(shù)據(jù)傳送問題,而且還具有如下優(yōu)點(diǎn):v 分時(shí)操作分時(shí)操作。CPUCPU可以分時(shí)為多個(gè)可以分時(shí)為多個(gè)I/OI/O設(shè)備設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率;服務(wù),提高了計(jì)算機(jī)的利用率;v實(shí)時(shí)響應(yīng)實(shí)時(shí)響應(yīng)。CPUCPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨能夠及時(shí)

4、處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);v可靠性高可靠性高。CPUCPU具有處理設(shè)備故障及掉電等具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。二、二、80C5180C51中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu) 80C5180C51的中斷系統(tǒng)有的中斷系統(tǒng)有5 5個(gè)中斷源,個(gè)中斷源,2 2個(gè)優(yōu)先級,個(gè)優(yōu)先級,可實(shí)現(xiàn)二級中斷嵌套可實(shí)現(xiàn)二級中斷嵌套 。5.1.2 80C515.1.2 80C51的中斷源的中斷源 一、中斷源一、中斷源INT0INT1 2 2、 (P3.3P3.3)??捎桑?。可由IT1(TCON.2)IT1(

5、TCON.2)選擇其為選擇其為低電平有效還是下降沿有效。當(dāng)?shù)碗娖接行н€是下降沿有效。當(dāng)CPUCPU檢測到檢測到P3.3P3.3引 腳 上 出 現(xiàn) 有 效 的 中 斷 信 號 時(shí) , 中 斷 標(biāo) 志引 腳 上 出 現(xiàn) 有 效 的 中 斷 信 號 時(shí) , 中 斷 標(biāo) 志IE1(TCON.3)IE1(TCON.3)置置1,1,向向CPUCPU申請中斷。申請中斷。 1 1、 (P3.2P3.2)??捎桑?捎蒊T0(TCON.0)IT0(TCON.0)選擇其為選擇其為低電平有效還是下降沿有效。當(dāng)?shù)碗娖接行н€是下降沿有效。當(dāng)CPUCPU檢測到檢測到P3.2P3.2引 腳 上 出 現(xiàn) 有 效 的 中 斷

6、信 號 時(shí) , 中 斷 標(biāo) 志引 腳 上 出 現(xiàn) 有 效 的 中 斷 信 號 時(shí) , 中 斷 標(biāo) 志IE0(TCON.1)IE0(TCON.1)置置1 1,向,向CPUCPU申請中斷。申請中斷。 3 3、TF0TF0(TCON.5TCON.5),片內(nèi)定時(shí)),片內(nèi)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0溢溢出中斷請求標(biāo)志。當(dāng)定時(shí)出中斷請求標(biāo)志。當(dāng)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0發(fā)生溢發(fā)生溢出時(shí),置位出時(shí),置位TF0TF0,并向,并向CPUCPU申請中斷。申請中斷。 4 4、TF1TF1(TCON.7TCON.7),片內(nèi)定時(shí)),片內(nèi)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1溢出中斷請求標(biāo)志。當(dāng)定時(shí)溢出中斷請求標(biāo)志。當(dāng)定時(shí)

7、/ /計(jì)數(shù)器計(jì)數(shù)器T1T1發(fā)生發(fā)生溢出時(shí),置位溢出時(shí),置位TF1TF1,并向,并向CPUCPU申請中斷。申請中斷。 5 5、RIRI(SCON.0SCON.0)或)或TITI(SCON.1SCON.1),串行口),串行口中斷請求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)中斷請求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位據(jù)時(shí)置位RIRI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)置位時(shí)置位TITI,向,向CPUCPU申請中斷。申請中斷。 二、中斷請求標(biāo)志二、中斷請求標(biāo)志 在中斷系統(tǒng)中,采用哪種中斷,選擇哪種觸在中斷系統(tǒng)中,采用哪種中斷,選擇哪種觸發(fā)方式,要由發(fā)方式,要由TCONTCON和和SCON

8、SCON相應(yīng)位規(guī)定。相應(yīng)位規(guī)定。1 1、TCON(TCON(定時(shí)定時(shí)/ /計(jì)數(shù)器控制寄存器)的中斷標(biāo)志計(jì)數(shù)器控制寄存器)的中斷標(biāo)志IT0IT0(TCON.0TCON.0),外部中斷),外部中斷0 0觸發(fā)方式控制位。觸發(fā)方式控制位。 當(dāng)當(dāng)IT0=0IT0=0時(shí),為低電平觸發(fā)方式。時(shí),為低電平觸發(fā)方式。CPUCPU在每個(gè)機(jī)器周期在每個(gè)機(jī)器周期的的S5P2S5P2采樣采樣INT0#,INT0#,為為0,0,置置IE0=1,IE0=1,表示向表示向CPUCPU請求中斷;為請求中斷;為1 1,清零,清零IE0,IE0,表示沒有中斷請求。表示沒有中斷請求。 低電平觸發(fā)方式下,低電平觸發(fā)方式下,IE0IE0

9、狀態(tài)完全由狀態(tài)完全由INT0#INT0#決定,響應(yīng)決定,響應(yīng)中斷時(shí)并不自動(dòng)清除中斷時(shí)并不自動(dòng)清除IE0IE0!要由軟件清除!要由軟件清除!CLR IE0CLR IE0 當(dāng)當(dāng)IT0=1IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。時(shí),為邊沿觸發(fā)方式(下降沿有效)。 CPUCPU在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2S5P2采樣采樣INT0#,INT0#,如果在連續(xù)兩個(gè)機(jī)器如果在連續(xù)兩個(gè)機(jī)器周期檢測到周期檢測到INT0#INT0#引腳由高電平變到低電平,則置引腳由高電平變到低電平,則置IE0=1IE0=1,產(chǎn)生中斷請求。產(chǎn)生中斷請求。 邊沿觸發(fā)方式下,邊沿觸發(fā)方式下,CPUCPU響應(yīng)中斷時(shí)由硬件自

10、動(dòng)清響應(yīng)中斷時(shí)由硬件自動(dòng)清IE0IE0標(biāo)標(biāo)志。志。IE0IE0(TCON.1TCON.1),外部中斷),外部中斷0 0中斷請求標(biāo)志位。中斷請求標(biāo)志位。IT1IT1(TCON.2TCON.2),外部中斷),外部中斷1 1觸發(fā)方式控制位。觸發(fā)方式控制位。IE1IE1(TCON.3TCON.3),外部中斷),外部中斷1 1中斷請求標(biāo)志位。中斷請求標(biāo)志位。TF0TF0(TCON.5TCON.5),定時(shí)),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0溢出中斷請求標(biāo)志位。溢出中斷請求標(biāo)志位。T0T0啟動(dòng)后就開始由初值加啟動(dòng)后就開始由初值加1 1計(jì)數(shù),直至最高位產(chǎn)生溢出使計(jì)數(shù),直至最高位產(chǎn)生溢出使TF0=1TF0=1向向

11、CPUCPU發(fā)出中斷請求。發(fā)出中斷請求。CPUCPU響應(yīng)中斷時(shí),響應(yīng)中斷時(shí),TF0TF0會(huì)自動(dòng)清會(huì)自動(dòng)清0 0。TF1TF1(TCON.7TCON.7),定時(shí)),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1溢出中斷請求標(biāo)志位。溢出中斷請求標(biāo)志位。TCON的低的低4位用于控制外部中斷位用于控制外部中斷, TCON的高的高4位用于控制定時(shí)位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和計(jì)數(shù)器的啟動(dòng)和中斷申請。中斷申請。 1 1、TCON(TCON(定時(shí)定時(shí)/ /計(jì)數(shù)器控制寄存器)的中斷標(biāo)志計(jì)數(shù)器控制寄存器)的中斷標(biāo)志2 2、SCONSCON(串行口控制寄存器)的中斷標(biāo)志(串行口控制寄存器)的中斷標(biāo)志v與中斷有關(guān)的是其低與中斷有關(guān)

12、的是其低2 2位位vRIRI(SCON.0SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位硬件置位RIRI。同樣,。同樣,RIRI必須由軟件清除。必須由軟件清除。vTITI(SCON.1SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPUCPU將一個(gè)發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),就啟將一個(gè)發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)送過程。每發(fā)送完一個(gè)串行幀,由硬件置動(dòng)了發(fā)送過程。每發(fā)送完一個(gè)串行幀,由硬件置位位TITI。CPUCPU響應(yīng)中斷時(shí),不能自動(dòng)清除

13、響應(yīng)中斷時(shí),不能自動(dòng)清除TITI,TITI必須必須由軟件清除。由軟件清除。 v單片機(jī)復(fù)位后,TCON和SCON各位清0。 一、中斷允許控制一、中斷允許控制 CPUCPU對中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和對中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由屏蔽是由中斷允許寄存器中斷允許寄存器IEIE控制的。控制的。IEIE由軟件設(shè)置。某位由軟件設(shè)置。某位設(shè)設(shè)為為1 1,相應(yīng)的中斷源,相應(yīng)的中斷源允許中斷允許中斷;某位設(shè)為;某位設(shè)為0 0,相應(yīng)的中斷,相應(yīng)的中斷源源中斷屏蔽中斷屏蔽。CPUCPU復(fù)位復(fù)位時(shí),時(shí),IE=0IE=0, ,禁止所有中斷。禁止所有中斷。5.1.3 80C515.1.3 8

14、0C51中斷的控制中斷的控制 vEX0EX0(IE.0)(IE.0),INT0#INT0#中斷允許位;中斷允許位;vET0ET0(IE.1)(IE.1),定時(shí),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0中斷允許位;中斷允許位; vEX1EX1(IE.2)(IE.2),INT1#INT1#中斷允許位;中斷允許位;vET1ET1(IE.3)(IE.3),定時(shí),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1中斷允許位;中斷允許位;vESES(IE.4)IE.4),串行中斷允許位;,串行中斷允許位;vEAEA (IE.7) (IE.7), CPUCPU中斷允許(總允許)位。中斷允許(總允許)位。二、中斷優(yōu)先級控制二、中斷優(yōu)先級控

15、制 80C5180C51單片機(jī)有兩個(gè)中斷優(yōu)先級,即可實(shí)現(xiàn)二級中斷服單片機(jī)有兩個(gè)中斷優(yōu)先級,即可實(shí)現(xiàn)二級中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級都是由務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IPIP中的相應(yīng)位的狀態(tài)來設(shè)定的中的相應(yīng)位的狀態(tài)來設(shè)定的 。某位設(shè)定為。某位設(shè)定為1 1,則相應(yīng)中斷源為,則相應(yīng)中斷源為高優(yōu)先級;某位設(shè)定為高優(yōu)先級;某位設(shè)定為0 0,則相應(yīng)中斷源為低優(yōu)先級。單片機(jī)復(fù)位時(shí),則相應(yīng)中斷源為低優(yōu)先級。單片機(jī)復(fù)位時(shí),IP=0,IP=0,各中斷源同為低優(yōu)先級。各中斷源同為低優(yōu)先級。vPX0PX0(IP.0IP.0),外部中斷),外部中斷0 0優(yōu)先級設(shè)定位;優(yōu)先

16、級設(shè)定位;vPT0PT0(IP.1IP.1),定時(shí)),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0優(yōu)先級設(shè)定位;優(yōu)先級設(shè)定位;vPX1PX1(IP.2IP.2),外部中斷),外部中斷1 1優(yōu)先級設(shè)定位;優(yōu)先級設(shè)定位;vPT1PT1(IP.3IP.3),定時(shí)),定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1優(yōu)先級設(shè)定位;優(yōu)先級設(shè)定位;vPSPS (IP.4IP.4),串行口優(yōu)先級設(shè)定位。),串行口優(yōu)先級設(shè)定位。 同一優(yōu)先級中的中斷申請不止一個(gè)時(shí),則有同一優(yōu)先級中的中斷申請不止一個(gè)時(shí),則有中斷優(yōu)先權(quán)排隊(duì)問題。同一優(yōu)先級的中斷優(yōu)先權(quán)排中斷優(yōu)先權(quán)排隊(duì)問題。同一優(yōu)先級的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級形成,其排隊(duì),由中

17、斷系統(tǒng)硬件確定的自然優(yōu)先級形成,其排列如所示:列如所示:80C5180C51單片機(jī)的中斷優(yōu)先級有三條原則:單片機(jī)的中斷優(yōu)先級有三條原則:vCPUCPU同時(shí)接收到幾個(gè)中斷時(shí),同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級別最首先響應(yīng)優(yōu)先級別最高的中斷請求高的中斷請求。v正在進(jìn)行的中斷過程正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的不能被新的同級或低優(yōu)先級的中斷請求所中斷中斷請求所中斷。v正在進(jìn)行的低優(yōu)先級中斷服務(wù),正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷能被高優(yōu)先級中斷請求所中斷請求所中斷。 為了實(shí)現(xiàn)上述后兩條原則,為了實(shí)現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)中斷系統(tǒng)內(nèi)部設(shè)有有用戶不能尋址的高、低兩個(gè)優(yōu)先級

18、的狀態(tài)觸發(fā)器用戶不能尋址的高、低兩個(gè)優(yōu)先級的狀態(tài)觸發(fā)器。高優(yōu)先級狀態(tài)觸發(fā)器高優(yōu)先級狀態(tài)觸發(fā)器置置1 1,表示正在響應(yīng)高優(yōu)先級的,表示正在響應(yīng)高優(yōu)先級的中斷,它將阻斷后來所有的中斷請求;中斷,它將阻斷后來所有的中斷請求;低優(yōu)先級狀低優(yōu)先級狀態(tài)觸發(fā)器態(tài)觸發(fā)器置置1 1,表示正在響應(yīng)低優(yōu)先級中斷,它將阻,表示正在響應(yīng)低優(yōu)先級中斷,它將阻斷后來所有的低優(yōu)先級中斷請求。斷后來所有的低優(yōu)先級中斷請求。優(yōu)先級狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETI控制。 v中斷服務(wù)子程序必須用RETI結(jié)尾,否則后續(xù)中斷將被屏蔽。5.2 80C515.2 80C51單片機(jī)中斷處理過程單片機(jī)中斷處理過程 一、中斷響應(yīng)條件一、中斷

19、響應(yīng)條件v 中斷源有中斷請求;中斷源有中斷請求;v 此中斷源的中斷允許位為此中斷源的中斷允許位為1 1;v CPUCPU開中斷(即開中斷(即EA=1EA=1)。)。同時(shí)滿足時(shí),同時(shí)滿足時(shí),CPUCPU才有可能響應(yīng)中斷才有可能響應(yīng)中斷。5.2.1 5.2.1 中斷響應(yīng)條件和時(shí)間中斷響應(yīng)條件和時(shí)間 中斷服務(wù)的進(jìn)入:中斷服務(wù)的進(jìn)入: CPUCPU執(zhí)行程序過程中,在每個(gè)機(jī)器周期的執(zhí)行程序過程中,在每個(gè)機(jī)器周期的S5P2S5P2期間,中斷系統(tǒng)對各個(gè)中斷源進(jìn)行采樣期間,中斷系統(tǒng)對各個(gè)中斷源進(jìn)行采樣。這。這些采樣值在下一個(gè)機(jī)器周期內(nèi)按優(yōu)先級和內(nèi)部順些采樣值在下一個(gè)機(jī)器周期內(nèi)按優(yōu)先級和內(nèi)部順序被依次查詢。序被

20、依次查詢。 如果某個(gè)中斷標(biāo)志在上一個(gè)機(jī)器周期的如果某個(gè)中斷標(biāo)志在上一個(gè)機(jī)器周期的S5P2S5P2時(shí)被置成了時(shí)被置成了1 1,那么它將于現(xiàn)在的查詢周期中及,那么它將于現(xiàn)在的查詢周期中及時(shí)被發(fā)現(xiàn)。接著時(shí)被發(fā)現(xiàn)。接著CPUCPU便執(zhí)行一條由中斷系統(tǒng)提供便執(zhí)行一條由中斷系統(tǒng)提供的的硬件硬件LCALLLCALL指令,轉(zhuǎn)向被稱作中斷向量的特定指令,轉(zhuǎn)向被稱作中斷向量的特定地址單元,進(jìn)入相應(yīng)的中斷服務(wù)程序。地址單元,進(jìn)入相應(yīng)的中斷服務(wù)程序。 遇以下任一條件,硬件將受阻,不產(chǎn)生遇以下任一條件,硬件將受阻,不產(chǎn)生LCALLLCALL指令:指令:vCPUCPU正在處理同級或高正在處理同級或高優(yōu)先級中斷;優(yōu)先級中斷

21、;v當(dāng)前查詢當(dāng)前查詢的機(jī)器周期的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)不是所執(zhí)行指令的最后一個(gè)機(jī)器周期器周期。即在完成所執(zhí)行指令前,不會(huì)響應(yīng)中斷,從。即在完成所執(zhí)行指令前,不會(huì)響應(yīng)中斷,從而保證指令在執(zhí)行過程中不被打斷;而保證指令在執(zhí)行過程中不被打斷;v正在執(zhí)行正在執(zhí)行的指令為的指令為RETRET、RETIRETI或任何訪問或任何訪問IEIE或或IPIP寄存寄存器的指令。即只有在這些指令后面至少再執(zhí)行一條指器的指令。即只有在這些指令后面至少再執(zhí)行一條指令時(shí)才能接受中斷請求。令時(shí)才能接受中斷請求。 若由于上述條件的阻礙中斷未能得到響應(yīng),當(dāng)條若由于上述條件的阻礙中斷未能得到響應(yīng),當(dāng)條件消失時(shí)該中斷標(biāo)志

22、卻已不再有效,那么該中斷將不件消失時(shí)該中斷標(biāo)志卻已不再有效,那么該中斷將不被響應(yīng)。就是說,中斷標(biāo)志曾經(jīng)有效,但未獲響應(yīng),被響應(yīng)。就是說,中斷標(biāo)志曾經(jīng)有效,但未獲響應(yīng),查詢過程在下個(gè)機(jī)器周期將重新進(jìn)行。查詢過程在下個(gè)機(jī)器周期將重新進(jìn)行。二、中斷響應(yīng)時(shí)間二、中斷響應(yīng)時(shí)間某中斷的響應(yīng)時(shí)序如圖:某中斷的響應(yīng)時(shí)序如圖:v若若M1M1周期的周期的S5P2S5P2前某中斷生效,在前某中斷生效,在S5P2S5P2期間其中斷請求被鎖期間其中斷請求被鎖存到相應(yīng)的標(biāo)志位中去;存到相應(yīng)的標(biāo)志位中去;M2M2恰逢指令的最后一個(gè)機(jī)器周期,恰逢指令的最后一個(gè)機(jī)器周期,且該指令不是且該指令不是RETIRETI或訪問或訪問IE

23、IE、IPIP的指令。于是,的指令。于是,M3M3和和M4M4便可便可以執(zhí)行硬件以執(zhí)行硬件LCALLLCALL指令,指令,M5M5周期將進(jìn)入了中斷服務(wù)程序。周期將進(jìn)入了中斷服務(wù)程序。v80C5180C51的中斷響應(yīng)時(shí)間(從標(biāo)志置的中斷響應(yīng)時(shí)間(從標(biāo)志置1 1到進(jìn)入相應(yīng)的中斷服務(wù)),到進(jìn)入相應(yīng)的中斷服務(wù)),至少要至少要3 3個(gè)個(gè)完整的機(jī)器周期。完整的機(jī)器周期。v將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1 1(以阻斷(以阻斷后來的同級或低級的中斷請求)。后來的同級或低級的中斷請求)。v執(zhí)行一條硬件執(zhí)行一條硬件LCALLLCALL指令,即把程序計(jì)數(shù)指令,即把程序計(jì)數(shù)器器PCPC的內(nèi)容壓入

24、堆棧保存,再將相應(yīng)的中的內(nèi)容壓入堆棧保存,再將相應(yīng)的中斷服務(wù)程序的入口地址送入斷服務(wù)程序的入口地址送入PCPC。v執(zhí)行中斷服務(wù)程序。執(zhí)行中斷服務(wù)程序。5.2.2 5.2.2 中斷響應(yīng)過程中斷響應(yīng)過程 中斷響應(yīng)過程的前兩步是由中斷系統(tǒng)中斷響應(yīng)過程的前兩步是由中斷系統(tǒng)內(nèi)部自動(dòng)完成的,而中斷服務(wù)程序則要由內(nèi)部自動(dòng)完成的,而中斷服務(wù)程序則要由用戶編寫程序來完成。用戶編寫程序來完成。 v編寫中斷服務(wù)程序時(shí)注意:v(1)由于80C51系列單片機(jī)兩個(gè)相鄰中斷源中斷服務(wù)程序入口地址相距才8個(gè)單元,一般的中斷服務(wù)程序放不下,通常在相應(yīng)的中斷服務(wù)程序入口地址單元放一條長跳轉(zhuǎn)指令LJMP,這樣可以使中斷服務(wù)程序能靈

25、活地安排在64kB ROM的任何地方。若在2kB范圍內(nèi)轉(zhuǎn)移,則可以用AJMP。v(2)硬件LCALL指令,只負(fù)責(zé)將PC內(nèi)的斷點(diǎn)地址壓入堆棧保護(hù),而對其他寄存器(如PSW,A等)的內(nèi)容不作保護(hù)處理。所以,在中斷服務(wù)程序中,首先用軟件保護(hù)現(xiàn)場,在中斷服務(wù)之后,中斷返回前恢復(fù)現(xiàn)場,以防止中斷返回后,丟失原來寄存器的內(nèi)容。 5.2.3 5.2.3 中斷返回中斷返回RETIRETI指令的具體功能是:指令的具體功能是:v將中斷響應(yīng)時(shí)壓入堆棧保存的斷點(diǎn)地址從棧將中斷響應(yīng)時(shí)壓入堆棧保存的斷點(diǎn)地址從棧頂彈出送回頂彈出送回PCPC,CPUCPU從原來中斷的地方繼續(xù)執(zhí)從原來中斷的地方繼續(xù)執(zhí)行程序;行程序;v 將相應(yīng)

26、中斷優(yōu)先級狀態(tài)觸發(fā)器清將相應(yīng)中斷優(yōu)先級狀態(tài)觸發(fā)器清0 0,通知中,通知中斷系統(tǒng),中斷服務(wù)程序已執(zhí)行完畢。斷系統(tǒng),中斷服務(wù)程序已執(zhí)行完畢。 注意,不能用注意,不能用RETRET指令代替指令代替RETIRETI指令。在中指令。在中斷服務(wù)程序中斷服務(wù)程序中PUSHPUSH指令與指令與POPPOP指令必須成對使指令必須成對使用,否則不能正確返回?cái)帱c(diǎn)用,否則不能正確返回?cái)帱c(diǎn) 。 若外部中斷定義為若外部中斷定義為電平觸發(fā)方式電平觸發(fā)方式,中斷標(biāo)志位的狀態(tài),中斷標(biāo)志位的狀態(tài)隨隨CPUCPU在每個(gè)機(jī)器周期采樣到的外部中斷輸入引腳的電平在每個(gè)機(jī)器周期采樣到的外部中斷輸入引腳的電平變化而變化,這樣能提高變化而變化

27、,這樣能提高CPUCPU對外部中斷請求的響應(yīng)速度。對外部中斷請求的響應(yīng)速度。但外部中斷源若有請求,必須把有效的但外部中斷源若有請求,必須把有效的低電平保持到請求低電平保持到請求獲得響應(yīng)時(shí)為止獲得響應(yīng)時(shí)為止,不然就會(huì)漏掉;,不然就會(huì)漏掉;而在中斷服務(wù)程序結(jié)束而在中斷服務(wù)程序結(jié)束之前,中斷源又必須撤消其有效的低電平之前,中斷源又必須撤消其有效的低電平,否則中斷返回,否則中斷返回之后將再次產(chǎn)生中斷。之后將再次產(chǎn)生中斷。 電平觸發(fā)方式適合于外部中斷輸入以低電平輸入且中電平觸發(fā)方式適合于外部中斷輸入以低電平輸入且中斷服務(wù)程序能清除外部中斷請求源的情況。例如,并行接斷服務(wù)程序能清除外部中斷請求源的情況。例

28、如,并行接口芯片口芯片82558255的中斷請求線在接受讀或?qū)懖僮骱蠹幢粡?fù)位,的中斷請求線在接受讀或?qū)懖僮骱蠹幢粡?fù)位,因此,以其去請求電平觸發(fā)方式的中斷比較方便。因此,以其去請求電平觸發(fā)方式的中斷比較方便。 若外部中斷定義為若外部中斷定義為邊沿觸發(fā)方式邊沿觸發(fā)方式,在相繼連續(xù),在相繼連續(xù)的兩次采樣中,一個(gè)周期采樣到外部中斷輸入為高的兩次采樣中,一個(gè)周期采樣到外部中斷輸入為高電平,下一個(gè)周期采樣到為低電平,則在電平,下一個(gè)周期采樣到為低電平,則在IE0IE0或或IE1IE1中將鎖存一個(gè)邏輯中將鎖存一個(gè)邏輯1 1。即便是。即便是CPUCPU暫時(shí)不能響應(yīng),中暫時(shí)不能響應(yīng),中斷申請標(biāo)志也不會(huì)丟失,直到

29、斷申請標(biāo)志也不會(huì)丟失,直到CPUCPU響應(yīng)此中斷時(shí)才響應(yīng)此中斷時(shí)才清零。這樣,為保證下降沿能被可靠地采樣到,清零。這樣,為保證下降沿能被可靠地采樣到,外外中斷引腳上的高低電平(負(fù)脈沖的寬度)均至少要中斷引腳上的高低電平(負(fù)脈沖的寬度)均至少要保持一個(gè)機(jī)器周期保持一個(gè)機(jī)器周期(若晶振為(若晶振為12MHz12MHz時(shí),為時(shí),為1 1微秒)。微秒)。 邊沿觸發(fā)方式適合于以負(fù)脈沖形式輸入的外部邊沿觸發(fā)方式適合于以負(fù)脈沖形式輸入的外部中斷請求,如中斷請求,如ADC0809ADC0809的轉(zhuǎn)換結(jié)束標(biāo)志信號的轉(zhuǎn)換結(jié)束標(biāo)志信號EOCEOC為正為正脈沖,經(jīng)反相后就可以作為脈沖,經(jīng)反相后就可以作為80C5180

30、C51的中斷輸入。的中斷輸入。5.2.4 5.2.4 中斷程序舉例中斷程序舉例 P3.0輸出負(fù)脈沖,D觸發(fā)器復(fù)位,D=0, Q#=INT0#1無效,IE0清零。 ORG 0000HSTART:LJMP MAIN ;跳轉(zhuǎn)到主程序;跳轉(zhuǎn)到主程序 ORG 0003H LJMP INTO ;轉(zhuǎn)向中斷服務(wù)程序;轉(zhuǎn)向中斷服務(wù)程序 ORG 0030H ;主程序;主程序 MAIN:CLR IT0 ;設(shè)為低電平觸發(fā)方式設(shè)為低電平觸發(fā)方式 SETB EA ;CPU開放中斷開放中斷 SETB EX0 ;允許中斷;允許中斷 MOV DPTR,#1000H ;設(shè)置數(shù)據(jù)區(qū)地址指針;設(shè)置數(shù)據(jù)區(qū)地址指針 ORG 0200H

31、;中斷服務(wù)程序;中斷服務(wù)程序 INT0:PUSH PSW ;保護(hù)現(xiàn)場;保護(hù)現(xiàn)場 PUSH ACC CLR P3.0 ;由;由P3.0輸出輸出0, NOP NOP SETB P3.0 ;由;由P3.0產(chǎn)生一個(gè)負(fù)脈沖用于復(fù)位產(chǎn)生一個(gè)負(fù)脈沖用于復(fù)位D觸發(fā)器,觸發(fā)器,D=0, INT0#=1, IE0清零。清零。 MOV P1, 0FFH ; P1為輸入口為輸入口 MOV A,P1 ;輸入數(shù)據(jù);輸入數(shù)據(jù) MOVX DPTR,A ;存入數(shù)據(jù)存儲器;存入數(shù)據(jù)存儲器 INC DPTR ;修改數(shù)據(jù)指針,指向下一個(gè)單元;修改數(shù)據(jù)指針,指向下一個(gè)單元 POP ACC ;恢復(fù)現(xiàn)場;恢復(fù)現(xiàn)場 POP PSW RETI

32、 ;中斷返回;中斷返回例例 多外部中斷源的系統(tǒng)示例。多外部中斷源的系統(tǒng)示例。 設(shè)有設(shè)有5 5個(gè)外部中斷源,中斷優(yōu)先級排隊(duì)順序?yàn)椋簜€(gè)外部中斷源,中斷優(yōu)先級排隊(duì)順序?yàn)椋篨I0XI0、XI1XI1、XI2XI2、XI3XI3、XI4XI4。試設(shè)計(jì)它們與。試設(shè)計(jì)它們與80C5180C51單單片機(jī)的接口。片機(jī)的接口?;蚍情T ORG 0003H LJMP INSE0 ;轉(zhuǎn)外部中斷;轉(zhuǎn)外部中斷0服務(wù)程序入口服務(wù)程序入口 ORG 0013H LJMP INSE1 ;轉(zhuǎn)外部中斷;轉(zhuǎn)外部中斷1服務(wù)程序入口服務(wù)程序入口 INSE0: PUSH PSW ;XI0中斷服務(wù)程序中斷服務(wù)程序 PUSH ACC POP AC

33、C POP PSW RETI INSE1:PUSH PSW ;中斷服務(wù)程序;中斷服務(wù)程序 PUSH ACC JB P1.0,DV1 ;P1.0為為1,轉(zhuǎn),轉(zhuǎn)XI1中斷服務(wù)程序中斷服務(wù)程序 JB P1.1,DV2 ;P1.1為為1,轉(zhuǎn),轉(zhuǎn)XI2中斷服務(wù)程序中斷服務(wù)程序 JB P1.2,DV3 ;P1.2為為1,轉(zhuǎn),轉(zhuǎn)XI3中斷服務(wù)程序中斷服務(wù)程序 JB P1.3,DV4 ;P1.3為為1,轉(zhuǎn),轉(zhuǎn)XI4中斷服務(wù)程序中斷服務(wù)程序INRET:POP ACC POP PSW RETI DV1: ;XI1中斷服務(wù)程序中斷服務(wù)程序 AJMP INRET DV2: ;XI2中斷服務(wù)程序中斷服務(wù)程序 AJMP

34、INRET DV3: ;XI3中斷服務(wù)程序中斷服務(wù)程序 AJMP INRET DV4: ;XI4中斷服務(wù)程序中斷服務(wù)程序 AJMP INRET5.3 80C515.3 80C51的定時(shí)的定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 實(shí)現(xiàn)定時(shí)功能,實(shí)現(xiàn)定時(shí)功能,比較方便的辦法是利用單片機(jī)內(nèi)部的定比較方便的辦法是利用單片機(jī)內(nèi)部的定時(shí)時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器。除此也可以采用下面三種方法:。除此也可以采用下面三種方法:v軟件定時(shí)軟件定時(shí):軟件定時(shí)不占用硬件資源,但占用了:軟件定時(shí)不占用硬件資源,但占用了CPUCPU時(shí)間,時(shí)間,降低了降低了CPUCPU的利用率。的利用率。v采用時(shí)基電路定時(shí)采用時(shí)基電路定時(shí):例如采用:例如采用55

35、5555電路,外接必要的元器件電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行控制和修改,即不以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行控制和修改,即不可編程??删幊?。v采用可編程芯片定時(shí)采用可編程芯片定時(shí):這種定時(shí)芯片的定時(shí)值及定時(shí)范圍:這種定時(shí)芯片的定時(shí)值及定時(shí)范圍很容易用軟件來確定和修改,此種芯片定時(shí)功能強(qiáng),使用靈很容易用軟件來確定和修改,此種芯片定時(shí)功能強(qiáng),使用靈活。在單片機(jī)的定時(shí)活。在單片機(jī)的定時(shí)/ /計(jì)數(shù)器不夠用時(shí),可以考慮進(jìn)行擴(kuò)展。計(jì)數(shù)器不夠用時(shí),可以考慮進(jìn)行擴(kuò)展。5.3.

36、1 5.3.1 定時(shí)定時(shí)/ /計(jì)數(shù)器的結(jié)構(gòu)和工作原理計(jì)數(shù)器的結(jié)構(gòu)和工作原理 一、定時(shí)一、定時(shí)/ /計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu) 定時(shí)定時(shí)/ /計(jì)數(shù)器的實(shí)質(zhì)是加計(jì)數(shù)器的實(shí)質(zhì)是加1 1計(jì)數(shù)器(計(jì)數(shù)器(1616位),位),由高由高8 8位和低位和低8 8位兩個(gè)寄存器組成。位兩個(gè)寄存器組成。TMODTMOD是定時(shí)是定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)器的工作方式寄存器工作方式寄存器,確定工作方式和功能;確定工作方式和功能;TCONTCON是是控制寄存器控制寄存器,控制,控制T0T0、T1T1的的啟動(dòng)和停止及設(shè)置溢出標(biāo)志啟動(dòng)和停止及設(shè)置溢出標(biāo)志。 二、定時(shí)二、定時(shí)/ /計(jì)數(shù)器的工作原理計(jì)數(shù)器的工作原理 加加1 1計(jì)數(shù)器計(jì)

37、數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來源輸入的計(jì)數(shù)脈沖有兩個(gè)來源, ,一個(gè)是一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)1212分頻后送來;一分頻后送來;一個(gè)是個(gè)是T0T0或或T1T1引腳輸入的外部脈沖源。每來一個(gè)脈沖引腳輸入的外部脈沖源。每來一個(gè)脈沖計(jì)數(shù)器加計(jì)數(shù)器加1 1,當(dāng)加到計(jì)數(shù)器為全,當(dāng)加到計(jì)數(shù)器為全1 1時(shí),再輸入一個(gè)脈時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使計(jì)數(shù)器的溢出使TCONTCON中中TF0TF0或或TF1TF1置置1 1,向,向CPUCPU發(fā)出中斷請求發(fā)出中斷請求(定時(shí)(定時(shí)/ /計(jì)數(shù)器中斷計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)允許時(shí))。如果定時(shí)/

38、 /計(jì)數(shù)器工作于定時(shí)模式,則計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。計(jì)數(shù)值已滿。 可見,由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是可見,由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加加1 1計(jì)數(shù)器的計(jì)數(shù)值計(jì)數(shù)器的計(jì)數(shù)值。 v設(shè)置為定時(shí)器模式時(shí)設(shè)置為定時(shí)器模式時(shí),加,加1 1計(jì)數(shù)器是對內(nèi)部機(jī)器周期計(jì)數(shù)(計(jì)數(shù)器是對內(nèi)部機(jī)器周期計(jì)數(shù)(1 1個(gè)機(jī)器周期等于個(gè)機(jī)器周期等于1212個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/121/12)。)。計(jì)數(shù)值計(jì)數(shù)值N機(jī)器周期機(jī)器周期Tcy=定時(shí)時(shí)間定時(shí)時(shí)間t 。v設(shè)置為設(shè)

39、置為計(jì)數(shù)器模式時(shí)計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由,外部事件計(jì)數(shù)脈沖由T0T0或或T1T1引腳輸入引腳輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期的到計(jì)數(shù)器。在每個(gè)機(jī)器周期的S5P2S5P2期間采樣期間采樣T0T0、T1T1引腳電平。引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時(shí),則計(jì)數(shù)器加時(shí),則計(jì)數(shù)器加1 1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的S3P1S3P1期期間裝入計(jì)數(shù)器。間裝入計(jì)數(shù)器。檢測一個(gè)從檢測一個(gè)從1 1到到0 0的下降沿需要的下降沿需要2 2個(gè)機(jī)器周期,個(gè)機(jī)器周期,因此因此要求被采樣的電平至少要

40、維持一個(gè)機(jī)器周期要求被采樣的電平至少要維持一個(gè)機(jī)器周期。v當(dāng)晶振頻率為當(dāng)晶振頻率為12MHz12MHz時(shí)時(shí),最高計(jì)數(shù)頻率不超過,最高計(jì)數(shù)頻率不超過1/2MHz1/2MHz,即計(jì),即計(jì)數(shù)脈沖的周期要大于數(shù)脈沖的周期要大于2 2 s s。 5.3.2 5.3.2 定時(shí)定時(shí)/ /計(jì)數(shù)器的控制計(jì)數(shù)器的控制 80C51 80C51單片機(jī)定時(shí)單片機(jī)定時(shí)/ /計(jì)數(shù)器的工作由兩個(gè)特殊功計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。能寄存器控制。TMODTMOD用于設(shè)置其工作方式;用于設(shè)置其工作方式;TCONTCON用用于控制其啟動(dòng)和中斷申請。于控制其啟動(dòng)和中斷申請。一、工作方式寄存器一、工作方式寄存器TMODTMOD

41、 工作方式寄存器工作方式寄存器TMODTMOD用于設(shè)置定時(shí)用于設(shè)置定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)器的工作方式,低四位用于工作方式,低四位用于T0T0,高四位用于,高四位用于T1T1。其格式。其格式如下:如下:GATEGATE:門控位。:門控位。GATEGATE0 0時(shí),只要用軟件使時(shí),只要用軟件使TCONTCON中的中的TR0TR0或或TR1TR1為為1 1,就可以啟動(dòng)定時(shí),就可以啟動(dòng)定時(shí)/ /計(jì)數(shù)器工作;計(jì)數(shù)器工作;GATAGATA1 1時(shí),要用時(shí),要用軟件使軟件使TR0TR0或或TR1TR1為為1 1,同時(shí)外部中斷引腳同時(shí)外部中斷引腳INT0#INT0#或或INT1#INT1#也為也為高電平高電平

42、時(shí),才能啟動(dòng)定時(shí)時(shí),才能啟動(dòng)定時(shí)/ /計(jì)數(shù)器工作。計(jì)數(shù)器工作。 : :定時(shí)定時(shí)/ /計(jì)數(shù)模式選擇位。計(jì)數(shù)模式選擇位。 0 0為定時(shí)模式;為定時(shí)模式; =1=1為計(jì)數(shù)模式。為計(jì)數(shù)模式。M1M0M1M0:工作方式設(shè)置位。定時(shí):工作方式設(shè)置位。定時(shí)/ /計(jì)數(shù)器有四種工作方式,由計(jì)數(shù)器有四種工作方式,由M1M0M1M0進(jìn)行設(shè)置。進(jìn)行設(shè)置。C /TC/TC/T 二、控制寄存器二、控制寄存器TCONTCON TCONTCON的低的低4 4位用于控制外部中斷位用于控制外部中斷, ,已在前面介紹。已在前面介紹。TCONTCON的高的高4 4位用位用于控制定時(shí)于控制定時(shí)/ /計(jì)數(shù)器的啟動(dòng)和中斷申請。其格式如下:

43、計(jì)數(shù)器的啟動(dòng)和中斷申請。其格式如下:vTF1TF1(TCON.7TCON.7):):T1T1溢出中斷請求標(biāo)志位溢出中斷請求標(biāo)志位。T1T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置置TF1TF1為為1 1。CPUCPU響應(yīng)中斷后響應(yīng)中斷后TF1TF1由硬件自動(dòng)清由硬件自動(dòng)清0 0。T1T1工作時(shí),工作時(shí),CPUCPU可隨時(shí)可隨時(shí)查詢查詢TF1TF1的狀態(tài)。所以,的狀態(tài)。所以,TF1TF1可用作查詢測試的標(biāo)志??捎米鞑樵儨y試的標(biāo)志。TF1TF1也可以用軟件也可以用軟件置置1 1或清或清0 0,同硬件置,同硬件置1 1或清或清0 0的效果一樣。的效果一樣。vTR1TR1(TCON.6TCON.6)

44、:):T1T1運(yùn)行控制位。運(yùn)行控制位。TR1TR1置置1 1時(shí),時(shí),T1T1開始工作開始工作;TR1TR1置置0 0時(shí),時(shí),T1T1停止工作。停止工作。TR1TR1由軟件置由軟件置1 1或清或清0 0。所以,用軟件可控制定時(shí)。所以,用軟件可控制定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器的啟動(dòng)與停止。的啟動(dòng)與停止。vTF0TF0(TCON.5TCON.5):):T0T0溢出中斷請求標(biāo)志位,其功能與溢出中斷請求標(biāo)志位,其功能與TF1TF1類同。類同。vTR0TR0(TCON.4TCON.4):):T0T0運(yùn)行控制位,其功能與運(yùn)行控制位,其功能與TR1TR1類同。類同。 5.3.3 5.3.3 定時(shí)定時(shí)/ /計(jì)數(shù)器的工

45、作方式計(jì)數(shù)器的工作方式 T0T0有四種方式:有四種方式:0,1,2,30,1,2,3。T1T1有有3 3種(方式種(方式0 0,1 1,2 2)T0T0和和T1T1前三種工作方式原理大致相同。以前三種工作方式原理大致相同。以T0T0為例:為例: 一、方式一、方式0 0 方式方式0 0為為1313位計(jì)數(shù)位計(jì)數(shù),由,由TL0TL0的低的低5 5位(高位(高3 3位未用)和位未用)和TH0TH0的的8 8位組成。位組成。TL0TL0的低的低5 5位溢出時(shí)向位溢出時(shí)向TH0TH0進(jìn)位,進(jìn)位,TH0TH0溢出時(shí),置位溢出時(shí),置位TCONTCON中的中的TF0TF0標(biāo)志,向標(biāo)志,向CPUCPU發(fā)出中斷請求

46、。發(fā)出中斷請求。1) C/T#=0,1) C/T#=0,定時(shí)器模式定時(shí)器模式. .設(shè)定時(shí)時(shí)間為設(shè)定時(shí)時(shí)間為t,Nt,N為計(jì)數(shù)值,為計(jì)數(shù)值,TcyTcy為機(jī)器周期,則為機(jī)器周期,則 計(jì)數(shù)值計(jì)數(shù)值Nt/ Tcy 通常,在定時(shí)通常,在定時(shí)/ /計(jì)數(shù)器應(yīng)用時(shí)要送計(jì)數(shù)器應(yīng)用時(shí)要送TH0, TL0TH0, TL0計(jì)數(shù)初值,求定計(jì)數(shù)初值,求定時(shí)器的時(shí)器的計(jì)數(shù)初值計(jì)數(shù)初值的計(jì)算公式為:的計(jì)算公式為:定時(shí)器的初值還可以采用計(jì)數(shù)個(gè)數(shù)直接取補(bǔ)法獲得定時(shí)器的初值還可以采用計(jì)數(shù)個(gè)數(shù)直接取補(bǔ)法獲得。13X=2 -N例5-3 P137 若計(jì)數(shù)個(gè)數(shù)N為2, 求計(jì)數(shù)初值。 X=213-2=8190=1FFEH 或X求補(bǔ)=0 0

47、000 0000 0010B求補(bǔ)=1 1111 1111 1110B=1FFEH 門控位門控位GATEGATE具有特殊的作用。當(dāng)具有特殊的作用。當(dāng)GATE=0GATE=0時(shí),經(jīng)反相后時(shí),經(jīng)反相后使或門輸出為使或門輸出為1 1,此時(shí)僅由,此時(shí)僅由TR0TR0控制與門的開啟,與門輸出控制與門的開啟,與門輸出1 1時(shí),控制開關(guān)接通,計(jì)數(shù)開始;時(shí),控制開關(guān)接通,計(jì)數(shù)開始;當(dāng)當(dāng)GATE=1GATE=1時(shí)時(shí),由外中斷引,由外中斷引腳信號控制或門的輸出,此時(shí)控制腳信號控制或門的輸出,此時(shí)控制與門的開啟由外中斷引與門的開啟由外中斷引腳信號和腳信號和TR0TR0共同控制共同控制。當(dāng)。當(dāng)TR0=1TR0=1時(shí),外

48、中斷引腳信號引腳時(shí),外中斷引腳信號引腳的的高電平啟動(dòng)計(jì)數(shù)高電平啟動(dòng)計(jì)數(shù),外中斷引腳信號引腳的,外中斷引腳信號引腳的低電平停止計(jì)低電平停止計(jì)數(shù)數(shù)。這種方式常用來測量外中斷引腳上正脈沖的寬度。這種方式常用來測量外中斷引腳上正脈沖的寬度。 2) C/T#=1,為為計(jì)數(shù)模式,計(jì)數(shù)脈沖是計(jì)數(shù)模式,計(jì)數(shù)脈沖是T0引腳上的外部脈沖。引腳上的外部脈沖。 二、方式二、方式1 1 方式方式1 1的計(jì)數(shù)位數(shù)是的計(jì)數(shù)位數(shù)是1616位,由位,由TL0TL0作為低作為低8 8位、位、TH0TH0作作為高為高8 8位,組成了位,組成了1616位加位加1 1計(jì)數(shù)器計(jì)數(shù)器 。計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為:計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系

49、為: NNX65536216v()例5-4 若要求定時(shí)器T0工作于方式1,定時(shí)時(shí)間1ms,當(dāng)晶振為6MHz時(shí),求送入TH0和TL0的計(jì)數(shù)初值各為多少?應(yīng)怎樣送入TH0和TL0?(P139)v解:由晶振求機(jī)器周期Tcy=v 計(jì)數(shù)個(gè)數(shù)(值) N=t/Tcyv 計(jì)數(shù)初值X=216-Nv 計(jì)數(shù)初值化成16進(jìn)制數(shù)形式,高8位給TH0,底8位給TL0,v 三、方式三、方式2 2 方式方式2 2為自動(dòng)重裝初值的為自動(dòng)重裝初值的8 8位計(jì)數(shù)方式。位計(jì)數(shù)方式。 TH0TH0和和TL0TL0均裝入均裝入8 8位初值。當(dāng)位初值。當(dāng)TL0TL0計(jì)滿溢出時(shí),計(jì)滿溢出時(shí),由硬件由硬件TF0TF0置置1 1,向,向CPUC

50、PU發(fā)出中斷請求,并發(fā)出中斷請求,并將將TH0TH0中的計(jì)數(shù)初值自動(dòng)送入中的計(jì)數(shù)初值自動(dòng)送入TL0TL0.TL0.TL0從初值重從初值重新加新加1 1計(jì)數(shù)。周而復(fù)始,直到計(jì)數(shù)。周而復(fù)始,直到TR0=0TR0=0才會(huì)停止。才會(huì)停止。 工作方式2特別適合于用作較精確的脈沖信號發(fā)生器。 8X=2 -N計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為: 四、方式四、方式3 3 方式方式3 3只適用于定時(shí)只適用于定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0,定時(shí)器定時(shí)器T1T1處于方式處于方式3 3時(shí)相當(dāng)時(shí)相當(dāng)于于TR1=0TR1=0,停止計(jì)數(shù)。,停止計(jì)數(shù)。 工作方式工作方式3 3將將T0T0分成為兩個(gè)獨(dú)立的分成

51、為兩個(gè)獨(dú)立的8 8位計(jì)數(shù)器位計(jì)數(shù)器TL0TL0和和TH0TH0/ 。P139 5.3.4 5.3.4 定時(shí)定時(shí)/ /計(jì)數(shù)器用于外部中斷擴(kuò)展計(jì)數(shù)器用于外部中斷擴(kuò)展 擴(kuò)展方法是,將定時(shí)擴(kuò)展方法是,將定時(shí)/ /計(jì)數(shù)器設(shè)置為計(jì)數(shù)器方式,計(jì)數(shù)初計(jì)數(shù)器設(shè)置為計(jì)數(shù)器方式,計(jì)數(shù)初值設(shè)定為滿程,將待擴(kuò)展的外部中斷源接到定時(shí)值設(shè)定為滿程,將待擴(kuò)展的外部中斷源接到定時(shí)/ /計(jì)數(shù)器的外計(jì)數(shù)器的外部計(jì)數(shù)引腳。從該引腳輸入一個(gè)下降沿信號,計(jì)數(shù)器加部計(jì)數(shù)引腳。從該引腳輸入一個(gè)下降沿信號,計(jì)數(shù)器加1 1后便后便產(chǎn)生定時(shí)產(chǎn)生定時(shí)/ /計(jì)數(shù)器溢出中斷。計(jì)數(shù)器溢出中斷。例如,利用例如,利用T0T0擴(kuò)展一個(gè)外部中斷源。將擴(kuò)展一個(gè)外部

52、中斷源。將T0T0設(shè)置為計(jì)數(shù)器方設(shè)置為計(jì)數(shù)器方式,按方式式,按方式2 2工作,工作,TH0TH0、TL0TL0的初值均為的初值均為0FFH0FFH,T0T0允許中斷,允許中斷,CPUCPU開放中斷。開放中斷。其初始化程序如下:其初始化程序如下: MOV TMODMOV TMOD,#06H #06H ;置;置T0T0為計(jì)數(shù)器方式為計(jì)數(shù)器方式2 2 MOV TL0 MOV TL0,#0FFH #0FFH ;置計(jì)數(shù)初值;置計(jì)數(shù)初值 MOV TH0MOV TH0,#0FFH#0FFH SETB TR0 SETB TR0 ;啟動(dòng);啟動(dòng)T0T0工作工作 SETB EA SETB EA ;CPUCPU開中斷

53、開中斷 SETB ET0 SETB ET0 ;允許;允許T0T0中斷中斷 5.3.5 5.3.5 定時(shí)定時(shí)/ /計(jì)數(shù)器應(yīng)用舉例計(jì)數(shù)器應(yīng)用舉例 初始化程序應(yīng)完成如下工作:初始化程序應(yīng)完成如下工作:v對對TMODTMOD賦值,以確定賦值,以確定T0T0和和T1T1的工作方式。的工作方式。v計(jì)算初值計(jì)算初值, ,并將其寫入并將其寫入TH0TH0、TL0TL0或或TH1TH1、TL1TL1。v中斷方式時(shí),則對中斷方式時(shí),則對IEIE賦值,開放中斷。賦值,開放中斷。v使使TR0TR0或或TR1TR1置位,啟動(dòng)定時(shí)置位,啟動(dòng)定時(shí)/ /計(jì)數(shù)器定時(shí)或計(jì)數(shù)。計(jì)數(shù)器定時(shí)或計(jì)數(shù)。 例例5-6 5-6 利用定時(shí)利用定

54、時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0的方式的方式1 1,產(chǎn)生,產(chǎn)生10ms10ms的定時(shí),并的定時(shí),并使使P1.0P1.0引腳上輸出周期為引腳上輸出周期為20ms20ms的方波,采用中斷方式,設(shè)系的方波,采用中斷方式,設(shè)系統(tǒng)時(shí)鐘頻率為統(tǒng)時(shí)鐘頻率為12 MHz12 MHz。解:解:1 1、計(jì)算計(jì)數(shù)初值、計(jì)算計(jì)數(shù)初值X X:由于晶振為由于晶振為12 MHz12 MHz,所以機(jī)器周期,所以機(jī)器周期TcyTcy為為1 1 s s。所以:所以:N Nt/ Tcy t/ Tcy 101010103/13/110106 61000010000X X655366553610000100005553655536D8F0HD8F0H即應(yīng)將即應(yīng)將D8HD8H送入送入TH0TH0中,中,F(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論