C單片機(jī)的中斷系統(tǒng)實(shí)用_第1頁(yè)
C單片機(jī)的中斷系統(tǒng)實(shí)用_第2頁(yè)
C單片機(jī)的中斷系統(tǒng)實(shí)用_第3頁(yè)
C單片機(jī)的中斷系統(tǒng)實(shí)用_第4頁(yè)
C單片機(jī)的中斷系統(tǒng)實(shí)用_第5頁(yè)
已閱讀5頁(yè),還剩43頁(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)介

會(huì)計(jì)學(xué)1C單片機(jī)的中斷系統(tǒng)實(shí)用5.180C51的中斷系統(tǒng)

5.1.180C51的中斷系統(tǒng)結(jié)構(gòu)一、中斷的概念

CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生);

CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來(lái)事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過(guò)程稱(chēng)為中斷。第1頁(yè)/共49頁(yè)引起CPU中斷的根源,稱(chēng)為中斷源。中斷源向CPU提出的中斷請(qǐng)求。CPU暫時(shí)中斷原來(lái)的事務(wù)A,轉(zhuǎn)去處理事件B。對(duì)事件B處理完畢后,再回到原來(lái)被中斷的地方(即斷點(diǎn)),稱(chēng)為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱(chēng)為中斷系統(tǒng)(中斷機(jī)構(gòu))。第2頁(yè)/共49頁(yè)

隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速I(mǎi)/O設(shè)備的數(shù)據(jù)傳送問(wèn)題,而且還具有如下優(yōu)點(diǎn):

分時(shí)操作。CPU可以分時(shí)為多個(gè)I/O設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率;實(shí)時(shí)響應(yīng)。CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);可靠性高。CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。第3頁(yè)/共49頁(yè)二、80C51中斷系統(tǒng)的結(jié)構(gòu)

80C51的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套

。第4頁(yè)/共49頁(yè)5.1.280C51的中斷源

一、中斷源2、(P3.3)??捎蒊T1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.3引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE1(TCON.3)置1,向CPU申請(qǐng)中斷。1、(P3.2)。可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.2引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE0(TCON.1)置1,向CPU申請(qǐng)中斷。第5頁(yè)/共49頁(yè)

3、TF0(TCON.5),片內(nèi)定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T0發(fā)生溢出時(shí),置位TF0,并向CPU申請(qǐng)中斷。

4、TF1(TCON.7),片內(nèi)定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T1發(fā)生溢出時(shí),置位TF1,并向CPU申請(qǐng)中斷。

5、RI(SCON.0)或TI(SCON.1),串行口中斷請(qǐng)求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)置位TI,向CPU申請(qǐng)中斷。

第6頁(yè)/共49頁(yè)二、中斷請(qǐng)求標(biāo)志在中斷系統(tǒng)中,采用哪種中斷,選擇哪種觸發(fā)方式,要由TCON和SCON相應(yīng)位規(guī)定。1、TCON(定時(shí)/計(jì)數(shù)器控制寄存器)的中斷標(biāo)志IT0(TCON.0),外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時(shí),為低電平觸發(fā)方式。CPU在每個(gè)機(jī)器周期的S5P2采樣INT0#,為0,置IE0=1,表示向CPU請(qǐng)求中斷;為1,清零IE0,表示沒(méi)有中斷請(qǐng)求。

低電平觸發(fā)方式下,IE0狀態(tài)完全由INT0#決定,響應(yīng)中斷時(shí)并不自動(dòng)清除IE0!要由軟件清除!CLRIE0

當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。CPU在每個(gè)機(jī)器周期的S5P2采樣INT0#,如果在連續(xù)兩個(gè)機(jī)器周期檢測(cè)到INT0#引腳由高電平變到低電平,則置IE0=1,產(chǎn)生中斷請(qǐng)求。

邊沿觸發(fā)方式下,CPU響應(yīng)中斷時(shí)由硬件自動(dòng)清IE0標(biāo)志。第7頁(yè)/共49頁(yè)IE0(TCON.1),外部中斷0中斷請(qǐng)求標(biāo)志位。IT1(TCON.2),外部中斷1觸發(fā)方式控制位。IE1(TCON.3),外部中斷1中斷請(qǐng)求標(biāo)志位。TF0(TCON.5),定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。T0啟動(dòng)后就開(kāi)始由初值加1計(jì)數(shù),直至最高位產(chǎn)生溢出使TF0=1向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)中斷時(shí),TF0會(huì)自動(dòng)清0。TF1(TCON.7),定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。TCON的低4位用于控制外部中斷,TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。

1、TCON(定時(shí)/計(jì)數(shù)器控制寄存器)的中斷標(biāo)志第8頁(yè)/共49頁(yè)2、SCON(串行口控制寄存器)的中斷標(biāo)志與中斷有關(guān)的是其低2位RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位RI。同樣,RI必須由軟件清除。TI(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個(gè)發(fā)送數(shù)據(jù)寫(xiě)入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)送過(guò)程。每發(fā)送完一個(gè)串行幀,由硬件置位TI。CPU響應(yīng)中斷時(shí),不能自動(dòng)清除TI,TI必須由軟件清除。

單片機(jī)復(fù)位后,TCON和SCON各位清0。第9頁(yè)/共49頁(yè)一、中斷允許控制

CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是由中斷允許寄存器IE控制的。IE由軟件設(shè)置。某位設(shè)為1,相應(yīng)的中斷源允許中斷;某位設(shè)為0,相應(yīng)的中斷源中斷屏蔽。CPU復(fù)位時(shí),IE=0,禁止所有中斷。5.1.380C51中斷的控制

EX0(IE.0),INT0#中斷允許位;ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位;EX1(IE.2),INT1#中斷允許位;ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位;ES(IE.4),串行中斷允許位;EA(IE.7),CPU中斷允許(總允許)位。第10頁(yè)/共49頁(yè)二、中斷優(yōu)先級(jí)控制

80C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位的狀態(tài)來(lái)設(shè)定的

。某位設(shè)定為1,則相應(yīng)中斷源為高優(yōu)先級(jí);某位設(shè)定為0,則相應(yīng)中斷源為低優(yōu)先級(jí)。單片機(jī)復(fù)位時(shí),IP=0,各中斷源同為低優(yōu)先級(jí)。PX0(IP.0),外部中斷0優(yōu)先級(jí)設(shè)定位;PT0(IP.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;PX1(IP.2),外部中斷1優(yōu)先級(jí)設(shè)定位;PT1(IP.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;PS

(IP.4),串行口優(yōu)先級(jí)設(shè)定位。第11頁(yè)/共49頁(yè)

同一優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí),則有中斷優(yōu)先權(quán)排隊(duì)問(wèn)題。同一優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成,其排列如所示:第12頁(yè)/共49頁(yè)80C51單片機(jī)的中斷優(yōu)先級(jí)有三條原則:CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。\\為了實(shí)現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有用戶(hù)不能尋址的高、低兩個(gè)優(yōu)先級(jí)的狀態(tài)觸發(fā)器。高優(yōu)先級(jí)狀態(tài)觸發(fā)器置1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來(lái)所有的中斷請(qǐng)求;低優(yōu)先級(jí)狀態(tài)觸發(fā)器置1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,它將阻斷后來(lái)所有的低優(yōu)先級(jí)中斷請(qǐng)求。優(yōu)先級(jí)狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETI控制。第13頁(yè)/共49頁(yè)

中斷服務(wù)子程序必須用RETI結(jié)尾,否則后續(xù)中斷將被屏蔽。第14頁(yè)/共49頁(yè)5.280C51單片機(jī)中斷處理過(guò)程

一、中斷響應(yīng)條件中斷源有中斷請(qǐng)求;此中斷源的中斷允許位為1;

CPU開(kāi)中斷(即EA=1)。同時(shí)滿(mǎn)足時(shí),CPU才有可能響應(yīng)中斷。5.2.1中斷響應(yīng)條件和時(shí)間

第15頁(yè)/共49頁(yè)中斷服務(wù)的進(jìn)入:

CPU執(zhí)行程序過(guò)程中,在每個(gè)機(jī)器周期的S5P2期間,中斷系統(tǒng)對(duì)各個(gè)中斷源進(jìn)行采樣。這些采樣值在下一個(gè)機(jī)器周期內(nèi)按優(yōu)先級(jí)和內(nèi)部順序被依次查詢(xún)。如果某個(gè)中斷標(biāo)志在上一個(gè)機(jī)器周期的S5P2時(shí)被置成了1,那么它將于現(xiàn)在的查詢(xún)周期中及時(shí)被發(fā)現(xiàn)。接著CPU便執(zhí)行一條由中斷系統(tǒng)提供的硬件LCALL指令,轉(zhuǎn)向被稱(chēng)作中斷向量的特定地址單元,進(jìn)入相應(yīng)的中斷服務(wù)程序。

第16頁(yè)/共49頁(yè)遇以下任一條件,硬件將受阻,不產(chǎn)生LCALL指令:CPU正在處理同級(jí)或高優(yōu)先級(jí)中斷;當(dāng)前查詢(xún)的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期。即在完成所執(zhí)行指令前,不會(huì)響應(yīng)中斷,從而保證指令在執(zhí)行過(guò)程中不被打斷;正在執(zhí)行的指令為RET、RETI或任何訪問(wèn)IE或IP寄存器的指令。即只有在這些指令后面至少再執(zhí)行一條指令時(shí)才能接受中斷請(qǐng)求。

若由于上述條件的阻礙中斷未能得到響應(yīng),當(dāng)條件消失時(shí)該中斷標(biāo)志卻已不再有效,那么該中斷將不被響應(yīng)。就是說(shuō),中斷標(biāo)志曾經(jīng)有效,但未獲響應(yīng),查詢(xún)過(guò)程在下個(gè)機(jī)器周期將重新進(jìn)行。第17頁(yè)/共49頁(yè)二、中斷響應(yīng)時(shí)間某中斷的響應(yīng)時(shí)序如圖:若M1周期的S5P2前某中斷生效,在S5P2期間其中斷請(qǐng)求被鎖存到相應(yīng)的標(biāo)志位中去;M2恰逢指令的最后一個(gè)機(jī)器周期,且該指令不是RETI或訪問(wèn)IE、IP的指令。于是,M3和M4便可以執(zhí)行硬件LCALL指令,M5周期將進(jìn)入了中斷服務(wù)程序。80C51的中斷響應(yīng)時(shí)間(從標(biāo)志置1到進(jìn)入相應(yīng)的中斷服務(wù)),至少要3個(gè)完整的機(jī)器周期。第18頁(yè)/共49頁(yè)將相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器置1(以阻斷后來(lái)的同級(jí)或低級(jí)的中斷請(qǐng)求)。執(zhí)行一條硬件LCALL指令,即把程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧保存,再將相應(yīng)的中斷服務(wù)程序的入口地址送入PC。執(zhí)行中斷服務(wù)程序。5.2.2中斷響應(yīng)過(guò)程

中斷響應(yīng)過(guò)程的前兩步是由中斷系統(tǒng)內(nèi)部自動(dòng)完成的,而中斷服務(wù)程序則要由用戶(hù)編寫(xiě)程序來(lái)完成。

第19頁(yè)/共49頁(yè)編寫(xiě)中斷服務(wù)程序時(shí)注意:(1)由于80C51系列單片機(jī)兩個(gè)相鄰中斷源中斷服務(wù)程序入口地址相距才8個(gè)單元,一般的中斷服務(wù)程序放不下,通常在相應(yīng)的中斷服務(wù)程序入口地址單元放一條長(zhǎng)跳轉(zhuǎn)指令LJMP,這樣可以使中斷服務(wù)程序能靈活地安排在64kBROM的任何地方。若在2kB范圍內(nèi)轉(zhuǎn)移,則可以用AJMP。(2)硬件LCALL指令,只負(fù)責(zé)將PC內(nèi)的斷點(diǎn)地址壓入堆棧保護(hù),而對(duì)其他寄存器(如PSW,A等)的內(nèi)容不作保護(hù)處理。所以,在中斷服務(wù)程序中,首先用軟件保護(hù)現(xiàn)場(chǎng),在中斷服務(wù)之后,中斷返回前恢復(fù)現(xiàn)場(chǎng),以防止中斷返回后,丟失原來(lái)寄存器的內(nèi)容。第20頁(yè)/共49頁(yè)

5.2.3中斷返回RETI指令的具體功能是:將中斷響應(yīng)時(shí)壓入堆棧保存的斷點(diǎn)地址從棧頂彈出送回PC,CPU從原來(lái)中斷的地方繼續(xù)執(zhí)行程序;將相應(yīng)中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器清0,通知中斷系統(tǒng),中斷服務(wù)程序已執(zhí)行完畢。

注意,不能用RET指令代替RETI指令。在中斷服務(wù)程序中PUSH指令與POP指令必須成對(duì)使用,否則不能正確返回?cái)帱c(diǎn)。第21頁(yè)/共49頁(yè)

若外部中斷定義為電平觸發(fā)方式,中斷標(biāo)志位的狀態(tài)隨CPU在每個(gè)機(jī)器周期采樣到的外部中斷輸入引腳的電平變化而變化,這樣能提高CPU對(duì)外部中斷請(qǐng)求的響應(yīng)速度。但外部中斷源若有請(qǐng)求,必須把有效的低電平保持到請(qǐng)求獲得響應(yīng)時(shí)為止,不然就會(huì)漏掉;而在中斷服務(wù)程序結(jié)束之前,中斷源又必須撤消其有效的低電平,否則中斷返回之后將再次產(chǎn)生中斷。

電平觸發(fā)方式適合于外部中斷輸入以低電平輸入且中斷服務(wù)程序能清除外部中斷請(qǐng)求源的情況。例如,并行接口芯片8255的中斷請(qǐng)求線在接受讀或?qū)懖僮骱蠹幢粡?fù)位,因此,以其去請(qǐng)求電平觸發(fā)方式的中斷比較方便。第22頁(yè)/共49頁(yè)

若外部中斷定義為邊沿觸發(fā)方式,在相繼連續(xù)的兩次采樣中,一個(gè)周期采樣到外部中斷輸入為高電平,下一個(gè)周期采樣到為低電平,則在IE0或IE1中將鎖存一個(gè)邏輯1。即便是CPU暫時(shí)不能響應(yīng),中斷申請(qǐng)標(biāo)志也不會(huì)丟失,直到CPU響應(yīng)此中斷時(shí)才清零。這樣,為保證下降沿能被可靠地采樣到,外中斷引腳上的高低電平(負(fù)脈沖的寬度)均至少要保持一個(gè)機(jī)器周期(若晶振為12MHz時(shí),為1微秒)。

邊沿觸發(fā)方式適合于以負(fù)脈沖形式輸入的外部中斷請(qǐng)求,如ADC0809的轉(zhuǎn)換結(jié)束標(biāo)志信號(hào)EOC為正脈沖,經(jīng)反相后就可以作為80C51的中斷輸入。第23頁(yè)/共49頁(yè)5.2.4中斷程序舉例P3.0輸出負(fù)脈沖,D觸發(fā)器復(fù)位,D=0,Q#=INT0#1無(wú)效,IE0清零。第24頁(yè)/共49頁(yè)ORG0000HSTART:LJMPMAIN;跳轉(zhuǎn)到主程序

ORG0003HLJMPINTO;轉(zhuǎn)向中斷服務(wù)程序

ORG0030H;主程序

MAIN:CLRIT0

;設(shè)為低電平觸發(fā)方式

SETBEA;CPU開(kāi)放中斷

SETBEX0;允許中斷

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

……ORG0200H;中斷服務(wù)程序

INT0:PUSHPSW;保護(hù)現(xiàn)場(chǎng)

PUSHACC

CLRP3.0;由P3.0輸出0,

NOPNOPSETBP3.0;由P3.0產(chǎn)生一個(gè)負(fù)脈沖用于復(fù)位D觸發(fā)器,D=0,INT0#=1,IE0清零。

MOVP1,0FFH;P1為輸入口

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

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

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

……POPACC;恢復(fù)現(xiàn)場(chǎng)

POPPSWRETI;中斷返回第25頁(yè)/共49頁(yè)例多外部中斷源的系統(tǒng)示例。設(shè)有5個(gè)外部中斷源,中斷優(yōu)先級(jí)排隊(duì)順序?yàn)椋篨I0、XI1、XI2、XI3、XI4。試設(shè)計(jì)它們與80C51單片機(jī)的接口?;蚍情T(mén)第26頁(yè)/共49頁(yè)ORG0003HLJMPINSE0;轉(zhuǎn)外部中斷0服務(wù)程序入口

ORG0013HLJMPINSE1;轉(zhuǎn)外部中斷1服務(wù)程序入口

…………INSE0:PUSHPSW;XI0中斷服務(wù)程序

PUSHACC…………POPACCPOPPSWRETI

第27頁(yè)/共49頁(yè)INSE1:PUSHPSW;中斷服務(wù)程序

PUSHACCJBP1.0,DV1;P1.0為1,轉(zhuǎn)XI1中斷服務(wù)程序

JBP1.1,DV2;P1.1為1,轉(zhuǎn)XI2中斷服務(wù)程序

JBP1.2,DV3;P1.2為1,轉(zhuǎn)XI3中斷服務(wù)程序

JBP1.3,DV4;P1.3為1,轉(zhuǎn)XI4中斷服務(wù)程序INRET:POPACCPOPPSWRETIDV1:……;XI1中斷服務(wù)程序

AJMPINRETDV2:……;XI2中斷服務(wù)程序

AJMPINRETDV3:……;XI3中斷服務(wù)程序

AJMPINRETDV4:……;XI4中斷服務(wù)程序

AJMPINRET第28頁(yè)/共49頁(yè)5.380C51的定時(shí)/計(jì)數(shù)器

實(shí)現(xiàn)定時(shí)功能,比較方便的辦法是利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器。除此也可以采用下面三種方法:軟件定時(shí):軟件定時(shí)不占用硬件資源,但占用了CPU時(shí)間,降低了CPU的利用率。采用時(shí)基電路定時(shí):例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行控制和修改,即不可編程。采用可編程芯片定時(shí):這種定時(shí)芯片的定時(shí)值及定時(shí)范圍很容易用軟件來(lái)確定和修改,此種芯片定時(shí)功能強(qiáng),使用靈活。在單片機(jī)的定時(shí)/計(jì)數(shù)器不夠用時(shí),可以考慮進(jìn)行擴(kuò)展。第29頁(yè)/共49頁(yè)5.3.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)和工作原理

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

第30頁(yè)/共49頁(yè)二、定時(shí)/計(jì)數(shù)器的工作原理

加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來(lái)源,一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來(lái);一個(gè)是T0或T1引腳輸入的外部脈沖源。每來(lái)一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿(mǎn)。

可見(jiàn),由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1計(jì)數(shù)器的計(jì)數(shù)值。

第31頁(yè)/共49頁(yè)設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N×機(jī)器周期Tcy=定時(shí)時(shí)間t

。設(shè)置為計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時(shí),則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期。當(dāng)晶振頻率為12MHz時(shí),最高計(jì)數(shù)頻率不超過(guò)1/2MHz,即計(jì)數(shù)脈沖的周期要大于2s。

第32頁(yè)/共49頁(yè)

5.3.2定時(shí)/計(jì)數(shù)器的控制80C51單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動(dòng)和中斷申請(qǐng)。一、工作方式寄存器TMOD

工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:第33頁(yè)/共49頁(yè)GATE:門(mén)控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳INT0#或INT1#也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。

:定時(shí)/計(jì)數(shù)模式選擇位。=0為定時(shí)模式;

=1為計(jì)數(shù)模式。M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1M0進(jìn)行設(shè)置。第34頁(yè)/共49頁(yè)

二、控制寄存器TCON

TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如下:TF1(TCON.7):T1溢出中斷請(qǐng)求標(biāo)志位。T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0。T1工作時(shí),CPU可隨時(shí)查詢(xún)TF1的狀態(tài)。所以,TF1可用作查詢(xún)測(cè)試的標(biāo)志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。TR1(TCON.6):T1運(yùn)行控制位。TR1置1時(shí),T1開(kāi)始工作;TR1置0時(shí),T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止。TF0(TCON.5):T0溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類(lèi)同。TR0(TCON.4):T0運(yùn)行控制位,其功能與TR1類(lèi)同。第35頁(yè)/共49頁(yè)

5.3.3定時(shí)/計(jì)數(shù)器的工作方式

T0有四種方式:0,1,2,3。T1有3種(方式0,1,2)T0和T1前三種工作方式原理大致相同。以T0為例:一、方式0

方式0為13位計(jì)數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時(shí)向TH0進(jìn)位,TH0溢出時(shí),置位TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請(qǐng)求。第36頁(yè)/共49頁(yè)1)C/T#=0,定時(shí)器模式.設(shè)定時(shí)時(shí)間為t,N為計(jì)數(shù)值,Tcy為機(jī)器周期,則

計(jì)數(shù)值N=t/Tcy

通常,在定時(shí)/計(jì)數(shù)器應(yīng)用時(shí)要送TH0,TL0計(jì)數(shù)初值,求定時(shí)器的計(jì)數(shù)初值的計(jì)算公式為:定時(shí)器的初值還可以采用計(jì)數(shù)個(gè)數(shù)直接取補(bǔ)法獲得。例5-3P137若計(jì)數(shù)個(gè)數(shù)N為2,求計(jì)數(shù)初值。

X=213-2=8190=1FFEH

或[X]求補(bǔ)=[0000000000010B]求補(bǔ)=1111111111110B=1FFEH第37頁(yè)/共49頁(yè)

門(mén)控位GATE具有特殊的作用。當(dāng)GATE=0時(shí),經(jīng)反相后使或門(mén)輸出為1,此時(shí)僅由TR0控制與門(mén)的開(kāi)啟,與門(mén)輸出1時(shí),控制開(kāi)關(guān)接通,計(jì)數(shù)開(kāi)始;當(dāng)GATE=1時(shí),由外中斷引腳信號(hào)控制或門(mén)的輸出,此時(shí)控制與門(mén)的開(kāi)啟由外中斷引腳信號(hào)和TR0共同控制。當(dāng)TR0=1時(shí),外中斷引腳信號(hào)引腳的高電平啟動(dòng)計(jì)數(shù),外中斷引腳信號(hào)引腳的低電平停止計(jì)數(shù)。這種方式常用來(lái)測(cè)量外中斷引腳上正脈沖的寬度。

2)C/T#=1,為計(jì)數(shù)模式,計(jì)數(shù)脈沖是T0引腳上的外部脈沖。第38頁(yè)/共49頁(yè)

二、方式1方式1的計(jì)數(shù)位數(shù)是16位,由TL0作為低8位、TH0作為高8位,組成了16位加1計(jì)數(shù)器。計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為:

第39頁(yè)/共49頁(yè)(√)例5-4若要求定時(shí)器T0工作于方式1,定時(shí)時(shí)間1ms,當(dāng)晶振為6MHz時(shí),求送入TH0和TL0的計(jì)數(shù)初值各為多少?應(yīng)怎樣送入TH0和TL0?(P139)解:由晶振求機(jī)器周期Tcy=

計(jì)數(shù)個(gè)數(shù)(值)N=t/Tcy

計(jì)數(shù)初值X=216-N

計(jì)數(shù)初值化成16進(jìn)制數(shù)形式,高8位給TH0,底8位給TL0,

第40頁(yè)/共49頁(yè)

三、方式2方式2為自動(dòng)重裝初值的8位計(jì)數(shù)方式。TH0和TL0均裝入8位初值。當(dāng)TL0計(jì)滿(mǎn)溢出時(shí),由硬件TF0置1,向CPU發(fā)出中斷請(qǐng)求,并將TH0中的計(jì)數(shù)初值自動(dòng)送入TL0.TL0從初值重新加1計(jì)數(shù)。周而復(fù)始,直到TR0=0才會(huì)停止。

工作方式2特別適合于用作較精確的脈沖信號(hào)發(fā)生器。

計(jì)數(shù)個(gè)數(shù)與計(jì)數(shù)初值的關(guān)系為:

第41頁(yè)/共49頁(yè)

四、方式3方式3只適用于定時(shí)/計(jì)數(shù)器T0,定時(shí)器T1處于方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)。

工作方式3將T0分成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0//

。P139

第42頁(yè)/共49頁(yè)

5.3.4定時(shí)/計(jì)數(shù)器用于外部中斷擴(kuò)展

擴(kuò)展方法是,將定時(shí)/計(jì)數(shù)器設(shè)置為計(jì)數(shù)器方式,計(jì)數(shù)初值設(shè)定為滿(mǎn)程,將待擴(kuò)展的外部中斷源接到定時(shí)/計(jì)數(shù)器的外部計(jì)數(shù)引腳。從該引腳輸入一個(gè)下降沿信號(hào),計(jì)數(shù)器加1后便產(chǎn)生定時(shí)/計(jì)數(shù)器溢出中斷。例如,利用T0擴(kuò)展一個(gè)外部中斷源。將T0設(shè)置為計(jì)數(shù)器方式,按方式2工作,TH0、TL0的初值均為0FFH,T0允許中斷,CPU開(kāi)放中斷。其初始化程序如下:

MOVTMOD,#06H;置T0為計(jì)數(shù)器方式2MOVTL0,#0FFH;置計(jì)數(shù)初值

MOVTH0,#0FFHSETBTR0;啟動(dòng)T0工作

SETBEA;CPU開(kāi)中斷

SETBET0;允許T0中斷

第43頁(yè)/共49頁(yè)5.3.5定時(shí)/計(jì)數(shù)器應(yīng)用舉例

初始化程序應(yīng)完成如下工作:對(duì)TMOD賦值,以確定T0和T1的工作方式。計(jì)算初值,并將其寫(xiě)入TH0、TL0或TH1、TL1。中斷方式時(shí),則對(duì)IE賦值,開(kāi)放中斷。使TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器定時(shí)或計(jì)數(shù)。第44頁(yè)/共49頁(yè)

例5-6利用定時(shí)/計(jì)數(shù)器T0的方式1,產(chǎn)生10ms的定時(shí),并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)時(shí)鐘頻率為12MHz。解:1、計(jì)算計(jì)數(shù)初值X:由于晶振為12MHz,所以機(jī)器周期Tcy為1s。所以:N=t/Tcy=10×10-3/1×10-6=10000X=65536-10000=55536=D8F0H即應(yīng)將D8H送入TH0中,F(xiàn)0H送入TL0中

2、求T0的方式控制字TMOD:

M1M0=01,GATE=0,C/T=0,可取方式控制字為01H;第45頁(yè)/共49頁(yè)

ORG0000HLJMPMAIN;跳轉(zhuǎn)到主程序

ORG000BH;T0的中斷入口地址

LJMPDVT0

溫馨提示

  • 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)論