




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第6章 中斷系統(tǒng)與定時計(jì)數(shù)器模塊 中斷是51單片機(jī)程序運(yùn)行的一種方式。計(jì)算機(jī)在執(zhí)行正常程序的過程中,當(dāng)出現(xiàn)某些緊急情況、異常事件或其他請求時,處理器暫時中斷正在運(yùn)行的程序,轉(zhuǎn)而執(zhí)行緊急情況或其他請求的操作處理。處理完成以后,處理器回到被中斷程序的斷點(diǎn)處繼續(xù)執(zhí)行,這個過程稱為中斷。 在CPU與外設(shè)之間的傳送數(shù)據(jù)時,根據(jù)外設(shè)本身工作速度的差異,通常有四種不同的控制方式:無條件傳送方式、查詢方式、中斷方式和DMA方式。1、中斷定義和作用、中斷定義和作用6.1 中斷的概念及中斷系統(tǒng)中斷的概念及中斷系統(tǒng) 外設(shè)要求CPU為其服務(wù),可在CPU工作的中間打斷它,要求CPU及時服務(wù)的一種數(shù)據(jù)交換方式。優(yōu)點(diǎn):外設(shè)
2、服務(wù)及時,CPU效率高,可用于實(shí)時控制中缺點(diǎn):多級中斷發(fā)生時易丟數(shù)據(jù)2、中斷源、中斷源:引起中斷的原因或是能發(fā)出中斷申請的來源。(1)外部設(shè)備中斷源 外部設(shè)備主要為微型計(jì)算機(jī)輸入和輸出數(shù)據(jù),故它是最原始和最廣泛的中斷源。(2)控制對象中斷源在計(jì)算機(jī)用作實(shí)時控制時,被控對象常常被用作中斷源,用于產(chǎn)生中斷請求信號,要求CPU及時采集系統(tǒng)的控制參量、越限參數(shù)以及要求發(fā)送和接收的數(shù)據(jù)。(3)故障中斷源故障中斷源是產(chǎn)生故障信息的源泉,把它作為中斷源是要CPU以中斷方式對已發(fā)生的故障進(jìn)行分析處理。(4)定時脈沖中斷源定時脈沖中斷源又稱為定時器中斷源,實(shí)際上是一種定時脈沖電路或定時器。3、中斷的分類:、中斷
3、的分類:1)屏蔽中斷:有時直接稱為中斷,是最常見的一種中斷方式。 “屏蔽”實(shí)際是一種工作方式,指可以通過指令來設(shè)置使CPU或者允許接受屏蔽的中斷申請,或者不接受這種申請。 屏蔽中斷是一種CPU可用指令將中斷屏蔽,從而不與受理的中斷申請。 圖6-1-1 Z80 CPU對和中斷的輸入2)非屏蔽中斷:是CPU必須要處理的一種中斷,并不可以用指令將這種中斷申請屏蔽掉。 一般一些緊急的情況,如掉電中斷申請,就可安排這種中斷方式,以保證緊急情況下一定能得到處理。 并不是所有的微處理器都有這種中斷,MCS-51的中斷系統(tǒng)就沒有非屏蔽中斷。 3)軟件中斷:可以由程序員編寫相應(yīng)的中斷指令使CPU響應(yīng)中斷,CPU
4、只要執(zhí)行這種指令就可以轉(zhuǎn)入相應(yīng)中斷服務(wù)程序執(zhí)行,以完成相應(yīng)的中斷功能。4、中斷嵌套 中斷嵌套的條件:只有中斷級別比已經(jīng)在服務(wù)的中斷源級別更高的中斷源,才可以打斷現(xiàn)在的中斷服務(wù)。 中斷嵌套深度:中斷過程再嵌套中斷的層次,是中斷系統(tǒng)的性能指標(biāo)之一5中斷系統(tǒng)的功能中斷系統(tǒng)的功能通常有如下幾條:(1)進(jìn)行中斷優(yōu)先權(quán)排隊(duì)(2)實(shí)現(xiàn)中斷嵌套(3)自動響應(yīng)中斷(4)實(shí)現(xiàn)中斷返回6.1.2 中斷系統(tǒng)1、MCS-51的中斷源和中斷標(biāo)志 引起中斷原因的設(shè)備或部件,或是發(fā)出中斷請求信號的源泉,稱為中斷源。51單片機(jī)51子系列具有5個中斷源(52子系列有6個中斷源),分別是外部中斷兩個、定時中斷兩個和串行中斷一個,即
5、:外部中斷0-INT0,由P3.2提供,外部中斷1INT1,由P3.3提供,T0溢出中斷; 由片內(nèi)定時/計(jì)數(shù)器0提供T1溢出中斷; 由片內(nèi)定時/計(jì)數(shù)器1提供串行口中斷RI/TI; 由片內(nèi)串行口提供 8051系統(tǒng)在檢測或收到申請以后,會將檢測的結(jié)果存放于TCON和SCON寄存器中,即使某些它們的中斷標(biāo)志位置位。 中斷標(biāo)志位的設(shè)置由硬件自動完成,只要檢測到中斷申請,響應(yīng)的標(biāo)志位就會置位。然后8051系統(tǒng)就通過檢測這些中斷標(biāo)志位來決定是否有相應(yīng)的中斷申請。若某個中斷位被置位,就認(rèn)為存在著相應(yīng)的中斷申請,需要進(jìn)行中斷響應(yīng)。 注意:在中斷處理結(jié)束之后,必須使中斷標(biāo)志復(fù)位,以便可以接收新的中斷申請,但復(fù)位
6、并不都是自動完成的,使用者必須用指令來清除不能自動復(fù)位的中斷標(biāo)志。 TCON寄存器可以用來存放外部中斷和定時/計(jì)數(shù)器中斷的中斷標(biāo)志;可以用來選擇是外部中斷請求是電平方式還是邊沿方式;還可作為定時器控制寄存器。IE0:為外部中斷INT0的請求標(biāo)志位。當(dāng)INT0引腳上出現(xiàn)中斷請求信號(低電平或脈沖下降沿)時,硬件自動將IE0置“1”(硬件復(fù)位),產(chǎn)生中斷請求標(biāo)志。IT0:外部中斷INT0觸發(fā)方式控制位。由軟件來置“1”或清“0”,以控制外部中斷INT0的觸發(fā)方式。 當(dāng)IT0=1 時,外部中斷INT0為邊沿觸發(fā)。 即外部中斷INT0出現(xiàn)下降沿時, 觸發(fā)IE0,使其為“1”; 當(dāng)IT0=0時,外部中斷
7、INT0為電平觸發(fā)。即外部中斷INT0出現(xiàn)低電平時,觸發(fā)IE0,使其為“1”。IT1:選擇外部中斷請求1為邊沿觸發(fā)方式的控制位, 與IT0類似。IE1:外部邊沿觸發(fā)中斷1請求標(biāo)志,和IE0類似。 外部中斷輸入信號和中斷申請標(biāo)志IEx及外部中斷申 請觸發(fā)方式控制位ITx三者關(guān)系如圖6-2所示。 TR0:定時/計(jì)數(shù)器0的運(yùn)行控制位,由軟件置位/清除來控制其開啟/關(guān)閉。 TF0:定時計(jì)數(shù)器0的溢出中斷申請標(biāo)志,在啟動T0計(jì)數(shù)后,定時計(jì)數(shù)器0從初值開始加1計(jì)數(shù),當(dāng)最高位產(chǎn)生溢出時,由硬件置位TF0,向CPU申請中斷,CPU響應(yīng)TF0中斷時清零該標(biāo)志位,TF0也可以用軟件清零(查詢方式)。 TR1:定時
8、計(jì)數(shù)器1的運(yùn)行控制位。由軟件置位清除來控制其開啟關(guān)閉。 TF1:定時計(jì)數(shù)器1的溢出中斷申請標(biāo)志,與TF0類似。SCON的低二位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志(80C51復(fù)位后,SCON被清0), TI或者RI被置位,CPU就認(rèn)為存在串行口中斷申請。TI:串行口發(fā)送中斷標(biāo)志,當(dāng)發(fā)送完一幀數(shù)據(jù)后置位,必須用軟件清除必須用軟件清除;RI:串行口接受中斷標(biāo)志,當(dāng)接收完一幀數(shù)據(jù)后置位,必須用軟件清除。必須用軟件清除。2、 中斷的控制 MCS-51可通過指令使IE的某些位置“1”或者置“0”來控制中斷的開和關(guān)。 IE在特殊功能寄存器中,字節(jié)地址A8H,位地址分別是A8HAFH。IE對于中斷的開放或關(guān)閉
9、實(shí)現(xiàn)兩級控制,即:控制CPU對中斷源總的開放或禁止,以及每個中斷源是否允許中斷。其格式如下圖所示:0: 關(guān) INT 中 斷01: 開 INT 中 斷00: 關(guān) T 中 斷1: 開 T 中 斷001: 開 T 中 斷0: 關(guān) T 中 斷0: 關(guān) INT 中 斷1: 開 INT 中 斷11110: 關(guān) T 中 斷1: 開 T 中 斷221: 開 所 有 中 斷0: 關(guān) 所 有 中 斷1: 開 串 行 口 中 斷0: 關(guān) 串 行 口 中 斷位 地 址IEEAAFADETACESABETAAEXA9ETA8EX00112CPU中斷允許控制位串行口中斷允許位T1的溢出中斷允許位T0的溢出中斷允許位外部中
10、斷1中斷允許位外部中斷0中斷允許位中斷優(yōu)先級別由中斷優(yōu)先級寄存器IP來管理。 串行口中斷優(yōu)先級控制位定時/計(jì)數(shù)器中斷優(yōu)先級控制位外部中斷優(yōu)先級控制位外部中斷優(yōu)先級控制位定時/計(jì)數(shù)器中斷優(yōu)先級控制位單片機(jī)復(fù)位后,IE和IP均被清0。用戶可根據(jù)自己的需要來置位或清零。整個中斷系統(tǒng)結(jié)構(gòu)如圖6-4所示。80C51單片機(jī)對中斷優(yōu)先級的處理原則如下。(1)不同級的中斷源同時申請中斷時,首先響應(yīng)優(yōu)先級別最高的中斷請求。(2)正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。(3)正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求中斷。(4)同一級的中斷源同時申請中斷時:事先預(yù)定。(5)對于同一優(yōu)先級
11、,單片機(jī)對其中斷次序如表6-5所示。中 斷 源中 斷 標(biāo) 志自然優(yōu)先級順序外部中斷0IE0高定時/計(jì)數(shù)器0TF0外部中斷1IE1定時器/計(jì)數(shù)器1TF1串行口RI或TI低3. 中斷響應(yīng)中斷響應(yīng) 1)中斷響應(yīng)的條件:)中斷響應(yīng)的條件: 無同級或高級正在服務(wù)。無同級或高級正在服務(wù)。 現(xiàn)行指令執(zhí)行到最后一個機(jī)器周期且已結(jié)束?,F(xiàn)行指令執(zhí)行到最后一個機(jī)器周期且已結(jié)束。 若現(xiàn)行指令為若現(xiàn)行指令為RETI或需訪問特殊功能寄存器或需訪問特殊功能寄存器IE或或IP的指的指令時,執(zhí)行完該指令且其緊接著的指令也已執(zhí)行完。令時,執(zhí)行完該指令且其緊接著的指令也已執(zhí)行完。 2)CPU不是在任何情況下都對中斷請求予以響應(yīng),不
12、是在任何情況下都對中斷請求予以響應(yīng),而且不同的情況下對中斷響應(yīng)的時間也是不同的。而且不同的情況下對中斷響應(yīng)的時間也是不同的。 若系統(tǒng)中只有一個中斷源,則響應(yīng)時間在若系統(tǒng)中只有一個中斷源,則響應(yīng)時間在38個個機(jī)器周期之間。機(jī)器周期之間。3)中斷響應(yīng)任務(wù) 中斷系統(tǒng)硬件自動完成下列任務(wù),以實(shí)現(xiàn)響應(yīng):將相應(yīng)觸發(fā)器置1(以阻斷后來的同級或低級的中斷請求)。執(zhí)行一條硬件LCALL指令,即把程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧保護(hù),再將相應(yīng)的中斷服務(wù)的入口地址送入。 80C51中斷源的中斷服務(wù)入口地址是由硬件設(shè)計(jì)人員規(guī)定好的,如下表6-6所示。在編寫中斷服務(wù)程序時應(yīng)注意如下問題。(1)在中斷服務(wù)程序中,用戶應(yīng)注意用
13、軟件保護(hù)現(xiàn)場,以免中斷返回后丟失原寄存器、累加器中的信息。(2)若要在執(zhí)行當(dāng)前中斷程序時禁止更高優(yōu)先級中斷,可以先用軟件關(guān)閉CPU中斷或禁止某中斷源中斷,在中斷返回前再開放中斷。4、中斷響應(yīng)的時間響應(yīng)時間響應(yīng)時間-從查詢中斷請求標(biāo)志位到轉(zhuǎn)向中斷服務(wù)入口地址所需的機(jī)器周期數(shù)。中斷的響應(yīng)時間在一般情況下不考慮,但在某些精確的定時場合,則需對基本時間進(jìn)行估計(jì),以保證準(zhǔn)確的定時控制。(1)最快響應(yīng)時間(最短時間) 以外部中斷的電平觸發(fā)為最快。 當(dāng)CPU查詢中斷標(biāo)志的周期正好是執(zhí)行一條指令的最后一個機(jī)器周期,則不需等待就可進(jìn)行響應(yīng),那么,從查詢中斷請求信號到中斷服務(wù)程序需要三個機(jī)器周期: 1個周期(查詢
14、)2個周期(長調(diào)用LCALL)(2)最長時間 若當(dāng)前指令是RET、RETI和IP、IE指令,緊接著下一條是乘除指令(周期數(shù)最長的指令)發(fā)生, 則最長為8個周期: 2個周期執(zhí)行當(dāng)前指令(其中含有1個周期查詢)4個周期乘除指令2個周期長調(diào)用8個周期。 一般可認(rèn)為響應(yīng)時間在三至八個機(jī)器周期之間。 若來的是同級或者低級中斷的申請,那么就得等當(dāng)前的中斷結(jié)束后才能響應(yīng),那么時間就更長了。5、 中斷請求的撤除 來了申請,就得響應(yīng),響應(yīng)時TCON和SCON的相應(yīng)位置1,響應(yīng)之后,就得撤除,否則連續(xù)響應(yīng)。中斷響應(yīng)后, 可通過硬件使標(biāo)志位TF0和TF1自動復(fù)0: 如定時器0,當(dāng)給它裝進(jìn)一個數(shù)后,定時器0自動加1計(jì)
15、數(shù),溢出后,TF0=1,產(chǎn)生中斷請求,CPU接到這個請求后,轉(zhuǎn)去服務(wù)前,從硬件上時它們自動歸零。也可以用戶自己加上:CLR TF0對于外中斷IE0、IE1,響應(yīng)后,有的自動歸零,有的不能歸零: 8051的外部中斷有兩種觸發(fā)方式:電平和邊沿方式。則:脈沖邊沿型:一見到有脈沖,CPU就將它們寫成1,響應(yīng)后,脈沖邊沿也結(jié)束了,將它們改寫成0,問題不大;低電平型的,響應(yīng)后改寫成0,由于單片機(jī)沒有信號通知外設(shè)結(jié)束中斷申請,外部低電平并不撤消,又填為1,相當(dāng)于又來了新的中斷申請,所以必須由用戶自行解決:3. 對于串行口的中斷申請標(biāo)志TI和RI,中斷系統(tǒng)不予自動撤除,因?yàn)檫@兩個標(biāo)志在中斷響應(yīng)之后還要用作判斷
16、是接收還是發(fā)送操作的標(biāo)志位,所以在使用完畢后用指令來使之復(fù)位,6、MCS-51中斷系統(tǒng)的初始化MCS-51 中斷系統(tǒng)由若干個SFR管理,故中斷系統(tǒng)的初始化就是對這些寄存器的各控制位的賦值,以完成如下操作:開中斷確定各中斷源的優(yōu)先級若為外部中斷,則規(guī)定是電平觸發(fā)還是邊沿中斷例:規(guī)定外部中斷0為電平方式,高優(yōu)先級,其中斷有關(guān)的初始化程序?yàn)椋?SETB EA SETBEX0 SETBPX0CLRIT0如果用字節(jié)操作指令:MOVIE,#81HORLIP,#01HANLTCON,#0FEH7.中斷服務(wù)函數(shù)在C51中,編譯器提供定義特定8051系列成員的寄存器頭文件。8051的頭文件為reg51.h。中斷
17、的C語言編程可如下所示:# include /*52單片機(jī)頭文件,一般不要改動,里面包含特殊功能寄存器的定義*/void service_int1() interrupt2 當(dāng)有中斷請求時,程序運(yùn)行轉(zhuǎn)移到標(biāo)記有“interrupt”關(guān)鍵字的函數(shù)內(nèi)進(jìn)行相關(guān)中斷的處理。中斷請求的處理過程是以函數(shù)的方式來實(shí)現(xiàn)的,即中斷服務(wù)函數(shù),它的格式如下:void 函數(shù)名(void) interrupt 中斷號 using 工作組中斷服務(wù)函數(shù)內(nèi)容; P0.08031 P0.7 ALED0 Q0 D7 Q4 鎖 存 器 Q5 Q6 Q7G 8 Y0譯碼器 Y15 打印機(jī)DB0DB78# include# inclu
18、de /*可使用其中定義的宏來訪問絕對地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD*/# define uchar unsigned char /*將unsigned char定義為uchar,簡化輸寫,提高編程速度*/# define PP5 XBYTE0 x00F0 /*打印機(jī)地址*/void printw(uchar *p) interrupt0 /*打印字符串中斷函數(shù)*/ p+;while(*p != /0 ) PP5=*p; /*輸出字符*/p+; /*指向下一個字符*/ viod main(void) uchar idat
19、a prn=”WELCOM”; /*設(shè)一測試用字符串*/IP=0 x01; /*令I(lǐng)NT0為高優(yōu)先級*/ IE=0 x84; /*開INT0中斷,CPU開中斷*/ if(*p != /0 ) PP5=*p; /*輸出第一個字符*/6.2 定時/計(jì)數(shù)器 在單片機(jī)應(yīng)用系統(tǒng)中,常常會有定時需求,如定時輸出、定時檢測、定時掃描等;也經(jīng)常對外部事件進(jìn)行計(jì)數(shù)。80C51單片機(jī)片內(nèi)集成有兩個可編程的定時/計(jì)數(shù)器:T0和T1。它們既可以工作于定時模式,也可以工作與外部事件技術(shù)模式。此外,T1還可以作為串行口的波特率發(fā)生器。 1. 定時/計(jì)數(shù)器的基本結(jié)構(gòu)2. 定時/計(jì)數(shù)器的工作原理 當(dāng)定時/計(jì)數(shù)器作為定時器工作
20、時,計(jì)數(shù)器的加1信號由振蕩器的12分頻信號產(chǎn)生,即每過一個機(jī)器周期,計(jì)數(shù)器加1,直至計(jì)滿溢出為止。顯然,定時器的定時時間與系統(tǒng)的振蕩頻率有關(guān)。因?yàn)橐粋€機(jī)器周期等于12個振蕩周期,所以計(jì)數(shù)頻率fcfosc/12。例如,當(dāng)晶振為12MHz時,則計(jì)數(shù)周期為1s,這是最短的定時周期。若要改變定時時間,則需通過改變定時器的初值及設(shè)置合適的工作方式來實(shí)現(xiàn)。與狀態(tài)寄存器2 2)C/TC/T:定時器:定時器/ /計(jì)數(shù)器方式選擇位計(jì)數(shù)器方式選擇位C/T=0C/T=0,設(shè)置為定時方式,對機(jī)器周期進(jìn)行計(jì)數(shù);,設(shè)置為定時方式,對機(jī)器周期進(jìn)行計(jì)數(shù);C/T=1C/T=1,設(shè)定為計(jì)數(shù)方式,對外部信號進(jìn)行計(jì)數(shù),外部信號,設(shè)定
21、為計(jì)數(shù)方式,對外部信號進(jìn)行計(jì)數(shù),外部信號接至接至T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)引腳。)引腳。3) GATE:3) GATE:門控位門控位GATE=0GATE=0時,只要用軟件使時,只要用軟件使TR0TR0(或(或TR1TR1)置)置1 1就能啟動定時器就能啟動定時器T0T0(或(或T1T1););GATE=1GATE=1時,只有在時,只有在INT0INT0(或(或INT1INT1)引腳為高電平的情況下,)引腳為高電平的情況下,且由軟件使且由軟件使TR0TR0(或(或TR1TR1)置)置1 1時,才能啟動定時器時,才能啟動定時器T0T0(或(或T1T1)工)工作。
22、作。1、 方式013位計(jì)數(shù)方式 定時器/計(jì)數(shù)器工作在方式0時,16位計(jì)數(shù)器只用了13位,即TH的高8位和TL的低5位,組成一個13位定時器/計(jì)數(shù)器。2、 工作方式1:16位計(jì)數(shù)方式定時器工作方式1與工作方式0類同,差別在于其中的計(jì)數(shù)器的位數(shù)。工作方式0以13位計(jì)數(shù)器參與計(jì)數(shù),工作方式1則以16位計(jì)數(shù)器參與計(jì)數(shù)。 注意:當(dāng)定時器T0工作在方式3時,定時器T1只能工作在方式02,并且工作在不需要中斷的場合。6.2.3 定時/計(jì)數(shù)器的初始設(shè)置 1. 初值計(jì)算80C51定時/計(jì)數(shù)初值X(也稱時間常數(shù))計(jì)算公式: X2n定時時間機(jī)器周期時間其中,n與工作方式有關(guān)。方式0時,n13;方式1時,n16;方式
23、2時,n8;方式3時,n8。機(jī)器周期時間與主振頻率有關(guān)。因此,機(jī)器周期時間12/fosc。2. 定時計(jì)數(shù)器應(yīng)用步驟(1)確定工作方式,寫入TMOD定時/計(jì)數(shù)器工作方式寄存器。(2)計(jì)算機(jī)定時/計(jì)數(shù)初值,裝入THx及TLx。(3)置位TRx以啟動計(jì)數(shù)。(4)置位ETx以允許定時/計(jì)數(shù)器x中斷(不需要可省略)。(5)置位EA以使CPU開放中斷,即接收中斷信號。3. 定時/計(jì)數(shù)器應(yīng)用舉例【例】設(shè)T0選擇定時工作方式0,定時時間為1ms,晶振頻率fosc6MHz。試確定T0初值,并編程實(shí)現(xiàn)單片機(jī)的P1.2端口產(chǎn)生周期為2ms的方波。解:工作方式0為13位定時/計(jì)數(shù)器,最大計(jì)數(shù)值為2138192。晶振頻
24、率fosc6MHz時,每個機(jī)器周期為2s,現(xiàn)需定時1ms,則計(jì)數(shù)值為1ms/2s500,初始值X8 1925007692,轉(zhuǎn)換成二進(jìn)制數(shù)為1111000001100,即:T0的高8位(TH0):11110000B0F0HT0的低5位(TL0):01100B0CH要產(chǎn)生周期為2ms的方波,只需P1.2端口每隔1ms取反一次,即會產(chǎn)生高低高低的電平,其控制程序如下: ORG0000H JMP START ORG000BHMOVTL0,#0CH ;重新裝入初始值,保證每次定時時間相同 MOVTH0,#0F0H CPL P1.0 ;取反,以輸出方波RETISTART:MOVTMOD,#00H ;T0設(shè)
25、為定時工作方式0MOVTL0,#0CH ;置定時初始值 MOVTH0,#0F0H SETBET0 ;允許T0溢出中斷 SETBEA SETBTR0 ;啟動定時器T0SJMP$ ;等待 END 【例】用定時器T1產(chǎn)生一個50Hz的方波,由P1.1輸出,已知fosc12MHz。解:方波周期1/50Hz0.02s20ms,則只需定時10ms即可。而機(jī)器周期為1s,計(jì)數(shù)值為10ms/1s10 000。所以,T1的初始值X65 53610 00055 536D8F0H。程序如下:ORG 00HJMP SRARTORG 50HSTART:MOVTMOD,#10H ;T1設(shè)為定時工作方式1SETBTR1 ;
26、啟動定時器T1LOOP: MOVTH1,#0D8H ;置定時初始值MOVTL1,#0F0HJNB TF1,$ ;沒有溢出,等待CLR TF1 ;產(chǎn)生溢出,清標(biāo)志位CPL P1.1 SJMP LOOPEND【例】當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時,從P1.0輸出一個500s的同步脈沖,請編程實(shí)現(xiàn)該功能。假設(shè)單片機(jī)的晶振頻率為6MHz。解:首先對定時/計(jì)數(shù)的工作方式進(jìn)行選擇。開始時T0應(yīng)為計(jì)數(shù)工作方式2,對外部事件進(jìn)行計(jì)數(shù)。當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時,T0計(jì)數(shù)器加1,溢出標(biāo)志TF0置1;然后改變T0為定時工作方式,定時時間為500s,并使P1.0輸出由高電平變?yōu)榈碗娖?。T0定時時間到,使P
27、1.0引腳恢復(fù)輸出高電平,同時T0又恢復(fù)外部事件計(jì)數(shù)方式。其波形圖如圖6-12所示。 接下來計(jì)算初始值。T0開始為計(jì)數(shù)工作方式2,要求加1后計(jì)數(shù)器溢出,其初始值應(yīng)為0FFH。T0為定時工作方式2時,要求定時500s,由于晶振頻率為6MHz,機(jī)器周期為2s,故計(jì)數(shù)值為250,其初始值應(yīng)設(shè)置為X28250606H。程序如下:ORG0000HJMP STARTORG 0050HSTART:MOV TMOD,#06H ;T0設(shè)置為計(jì)數(shù)方式2MOV TH0,#0FFH ;賦計(jì)數(shù)初始值MOV TL0,#0FFHSETB TR0 ;啟動T0計(jì)數(shù)LOOP1:JBC TF0,NEXT;查詢T0溢出中斷標(biāo)志SJM
28、P LOOP1 ;繼續(xù)等待T0溢出中斷NEXT:CLR TR0 ;停止計(jì)數(shù)MOV TMOD,#02H ;T0重新設(shè)為定時方式2MOV TH0,#06H ;賦定時初始值MOV TL0,#06HCLR P1.0 ;P1.0改為低電平SETB TR0 ;啟動T0定時LOOP2: JBC TF0,NEXT1 ;查詢T0溢出中斷標(biāo)志SJMP LOOP2 ;繼續(xù)等待T0溢出中斷NEXT1: SETB P1.0 ;P1.0恢復(fù)高電平CLR TR0 ;停止定時SJMPSTARTEND【例】試編寫C程序,以不斷地從P1.7引腳取得數(shù)據(jù)的單個位,并將它發(fā)送到P1.0,同時在引腳P2.5上產(chǎn)生周期為200us的方波
29、。假設(shè)XTAL11.0592MHz。解:周期為200us的方波應(yīng)為每100us變化一次信號的幅度,故定時值為100us。在時鐘頻率為11.0592MHz的情況下,可使用定時器0模式2(自動重新加載)。按照計(jì)算定時器初值的公式,計(jì)算過程為:81002 216411.0592)nX定時時間 機(jī)器周期時間12 (1/ 或A4HC語言編程如下:# includesbitSW= P1 7;sbitIND= P1 0;sbitWAVE= P2 5;voidtimer0(void)interrupt1WAVE = WAVE; /1號為定時器0中斷;定時時間到后,取反,輸出方波。voidmain()SW = 1;/輸入開關(guān)狀態(tài)TMOD = 0 x02; /對定時器0設(shè)置為定時方式2TH0 = 0 xA4;/賦定時器0的初值TL0 = 0 xA4;IE = 0 x82;/開中斷TR0 = 1;/啟動T0定時While(1)IND = SW; /輸出開關(guān)狀態(tài)【例】試編寫C程序,以在主程序中不斷地從P1.7引腳取得數(shù)據(jù)的單個位,并將它發(fā)送到P1.0,同時要求實(shí)現(xiàn):(1)在引腳P2.5上產(chǎn)生周期為200us的方波(2)將字母“A”發(fā)送到串行端口。使用定時器0產(chǎn)生方波,假設(shè)XTAL11.0592MHz。使用9600波特率。解:使用定時器0模式2(自動重新加載),初值計(jì)算與上例相同。C語言編程如下:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大口井施工方案
- 鋼結(jié)構(gòu)bim施工方案
- 保冷施工方案
- 壩體施工方案
- 門衛(wèi)房施工方案
- 立桿施工方案
- 浙江文旅水景設(shè)計(jì)施工方案
- 消防水管帶壓開孔施工方案
- 開學(xué)班長發(fā)言稿
- 營口生物潔凈室施工方案
- CJJ-181-2012(精華部分)城鎮(zhèn)排水管道檢測與評估技術(shù)規(guī)程
- 《乳腺癌的防治》課件
- 個人所得稅個人所得稅
- 《小貓的九個命》
- 大班健康《愛是什么》課件
- 特種作業(yè)(鍋爐工)安全培訓(xùn)
- 煤礦違章行為及預(yù)防
- 零信任網(wǎng)絡(luò)安全模型:原理與實(shí)踐
- 《哲學(xué)概論(第2版)》-課件 第2、3章 哲學(xué)的特性、方法;哲學(xué)的價值
- 無人機(jī)在公安領(lǐng)域的應(yīng)用
- 鋰電池過充過放析銅析鋰產(chǎn)氣成分及原理0
評論
0/150
提交評論