單片機第4章:中斷與定時器_第1頁
單片機第4章:中斷與定時器_第2頁
單片機第4章:中斷與定時器_第3頁
單片機第4章:中斷與定時器_第4頁
單片機第4章:中斷與定時器_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 第四章第四章 中斷與定時系統(tǒng)中斷與定時系統(tǒng) 第一節(jié)第一節(jié) MCS-51MCS-51單片機的中斷系統(tǒng)單片機的中斷系統(tǒng) 第二節(jié)第二節(jié) MCS-51MCS-51單片機的定時器計數(shù)器單片機的定時器計數(shù)器 2 第一節(jié)第一節(jié) 中斷系統(tǒng)中斷系統(tǒng) 一、中斷的概念一、中斷的概念 中斷技術(shù)的實質(zhì)中斷技術(shù)的實質(zhì): : 上升到計算機理論,就是一個資源上升到計算機理論,就是一個資源(CPU)面面 對多項任務(wù),但由于資源有限,因此就可能出現(xiàn)對多項任務(wù),但由于資源有限,因此就可能出現(xiàn) 資源競爭的局面,即幾項任務(wù)來爭奪一個資源競爭的局面,即幾項任務(wù)來爭奪一個CPU。 而中斷技術(shù)就是解決資源競爭的有效方法,采用而中斷技術(shù)就

2、是解決資源競爭的有效方法,采用 中斷技術(shù)可以使多項任務(wù)共享一個資源,中斷技術(shù)可以使多項任務(wù)共享一個資源,所以中所以中 斷技術(shù)實質(zhì)上就是一種資源共享技術(shù)。斷技術(shù)實質(zhì)上就是一種資源共享技術(shù)。 提高提高CPUCPU效率效率 解決速度矛盾解決速度矛盾 實現(xiàn)并行工作實現(xiàn)并行工作 應(yīng)付突發(fā)事件應(yīng)付突發(fā)事件 二、中斷功能二、中斷功能 主主 程程 序序 3 在計算機系統(tǒng)中,有關(guān)中斷的基本概念總結(jié)如下:在計算機系統(tǒng)中,有關(guān)中斷的基本概念總結(jié)如下: (1)中斷:)中斷:外界突然發(fā)生了緊急情況,要求外界突然發(fā)生了緊急情況,要求CPU 暫時停暫時停 下現(xiàn)行程序的執(zhí)行,轉(zhuǎn)向為臨時發(fā)生的事件進行處理,處下現(xiàn)行程序的執(zhí)行,

3、轉(zhuǎn)向為臨時發(fā)生的事件進行處理,處 理完后,再返回繼續(xù)執(zhí)行原來程序,這個過程叫理完后,再返回繼續(xù)執(zhí)行原來程序,這個過程叫“中斷中斷”。 中斷是一種在發(fā)生了一個外部的事件時調(diào)用相應(yīng)的處理程中斷是一種在發(fā)生了一個外部的事件時調(diào)用相應(yīng)的處理程 序序(或稱服務(wù)程序或稱服務(wù)程序)的過程。中斷服務(wù)程序與中斷時的過程。中斷服務(wù)程序與中斷時CPU正正 在運行的主程序是相互獨立的,相互不傳遞數(shù)據(jù)。在運行的主程序是相互獨立的,相互不傳遞數(shù)據(jù)。 (2)中斷源:)中斷源:向向CPU發(fā)出中斷請求的設(shè)備或事件稱為發(fā)出中斷請求的設(shè)備或事件稱為 “中斷源中斷源”。 從中斷源來看,中斷一般可分為三類:從中斷源來看,中斷一般可分為

4、三類: 由計算機硬件異?;蚬收弦鸬闹袛?,也稱為內(nèi)部中由計算機硬件異常或故障引起的中斷,也稱為內(nèi)部中 斷。斷。 外部設(shè)備(如輸入外部設(shè)備(如輸入/輸出設(shè)備)請求引起的中斷,也稱輸出設(shè)備)請求引起的中斷,也稱 為外部中斷或為外部中斷或I/O中斷。中斷。 由程序中執(zhí)行了中斷指令引起的中斷,也稱為軟中斷。由程序中執(zhí)行了中斷指令引起的中斷,也稱為軟中斷。 4 (3)中斷請求:中斷源向)中斷請求:中斷源向CPU提出的處理請求,提出的處理請求, 稱為中斷請求或中斷申請。稱為中斷請求或中斷申請。 (4)中斷響應(yīng)過程:)中斷響應(yīng)過程:CPU暫時中止自身的事務(wù),暫時中止自身的事務(wù), 轉(zhuǎn)去處理事件的過程,稱為轉(zhuǎn)去

5、處理事件的過程,稱為CPU的中斷響應(yīng)過程。的中斷響應(yīng)過程。 (5)中斷服務(wù):)中斷服務(wù):對事件的整個處理過程,稱為對事件的整個處理過程,稱為 中斷服務(wù)中斷服務(wù)(或中斷處理或中斷處理)。 (6)中斷返回:)中斷返回:中斷處理完畢,執(zhí)行中斷返回中斷處理完畢,執(zhí)行中斷返回 指令,自動彈出斷點地址到指令,自動彈出斷點地址到PC,再回到原來被中,再回到原來被中 止的地方,稱為中斷返回。止的地方,稱為中斷返回。 (7)中斷優(yōu)先級:)中斷優(yōu)先級:一個系統(tǒng)中,常有多個中斷一個系統(tǒng)中,常有多個中斷 源同時申請中斷,這時,源同時申請中斷,這時,CPU必須確定首先服務(wù)必須確定首先服務(wù) 的中斷源以及服務(wù)順序。在計算機

6、應(yīng)用系統(tǒng)中,的中斷源以及服務(wù)順序。在計算機應(yīng)用系統(tǒng)中, 中斷源的優(yōu)先級是根據(jù)事件的實時性、重要性和中斷源的優(yōu)先級是根據(jù)事件的實時性、重要性和 軟件處理的方便性來安排的。軟件處理的方便性來安排的。 5 (8)中斷嵌套:)中斷嵌套:當當CPU在執(zhí)行某一個中斷處理程序時,在執(zhí)行某一個中斷處理程序時, 若有一優(yōu)先級更高的中斷源請求服務(wù),則若有一優(yōu)先級更高的中斷源請求服務(wù),則CPU應(yīng)該能掛起應(yīng)該能掛起 (用保護斷點的方式)正在運行的低優(yōu)先級中斷處理程序,(用保護斷點的方式)正在運行的低優(yōu)先級中斷處理程序, 響應(yīng)這個高優(yōu)先級中斷請求,即在中斷過程中發(fā)生的又一響應(yīng)這個高優(yōu)先級中斷請求,即在中斷過程中發(fā)生的又

7、一 次中斷。在高優(yōu)先級中斷處理完后能自動返回低優(yōu)先級中次中斷。在高優(yōu)先級中斷處理完后能自動返回低優(yōu)先級中 斷,繼續(xù)執(zhí)行原來的中斷處理程序。執(zhí)行中斷嵌套的原則斷,繼續(xù)執(zhí)行原來的中斷處理程序。執(zhí)行中斷嵌套的原則 是:高級別中斷能打斷低級別中斷,反之不能。是:高級別中斷能打斷低級別中斷,反之不能。 (9)矢量中斷:)矢量中斷:識別中斷源的方法。要求提供中斷源的識別中斷源的方法。要求提供中斷源的 信號類型或其中斷服務(wù)程序的入口地址,又稱中斷矢量,信號類型或其中斷服務(wù)程序的入口地址,又稱中斷矢量, 即每個中斷源都預先指定好各自的中斷標志和中斷矢量。即每個中斷源都預先指定好各自的中斷標志和中斷矢量。 (1

8、0)中斷系統(tǒng):)中斷系統(tǒng):一個計算機系統(tǒng)的中斷源有多個,用來一個計算機系統(tǒng)的中斷源有多個,用來 管理這些中斷源的邏輯電路稱為中斷系統(tǒng)。管理這些中斷源的邏輯電路稱為中斷系統(tǒng)。 (11)中斷屏蔽:)中斷屏蔽:指通過設(shè)置相應(yīng)的中斷屏蔽位,禁止響指通過設(shè)置相應(yīng)的中斷屏蔽位,禁止響 應(yīng)某個中斷。應(yīng)某個中斷。 6 三、中斷源三、中斷源 中斷源種類:中斷源種類:51單片機有單片機有5個中斷源,分別為:個中斷源,分別為: 發(fā)出中斷請求的來源發(fā)出中斷請求的來源. 1. 1. 外部中斷:外部中斷:2個個,可通過對,可通過對(P3.2、P3.3)輸入申請中斷。輸入申請中斷。 2 2定時中斷:定時中斷: 2 2個個1

9、616位可編程定時器位可編程定時器/ /計數(shù)器計數(shù)器 ,發(fā)生溢發(fā)生溢 出時,通過內(nèi)部邏輯申請中斷。出時,通過內(nèi)部邏輯申請中斷。 3 3串行口中斷串行口中斷:串行口緩沖器串行口緩沖器SBUF發(fā)送或接收完一個字符數(shù)據(jù)時,發(fā)送或接收完一個字符數(shù)據(jù)時, 可通過內(nèi)部邏輯申請中斷??赏ㄟ^內(nèi)部邏輯申請中斷。 7 無論外部中斷源是哪種類型,外部中斷請求信無論外部中斷源是哪種類型,外部中斷請求信 號只有號只有脈沖觸發(fā)和電平觸發(fā)兩種脈沖觸發(fā)和電平觸發(fā)兩種,可通過設(shè)置有關(guān),可通過設(shè)置有關(guān) 控制位進行定義。對于外部中斷源,控制位進行定義。對于外部中斷源, 需要說明的是:需要說明的是: 對于對于脈沖觸發(fā)脈沖觸發(fā)的外部中

10、斷則是的外部中斷則是脈沖的后沿負跳脈沖的后沿負跳 有效有效。CPU在兩個相鄰機器周期對中斷請求引入端在兩個相鄰機器周期對中斷請求引入端 進行的采樣,硬件自動判斷執(zhí)行并自動撤除中斷請進行的采樣,硬件自動判斷執(zhí)行并自動撤除中斷請 求信號。求信號。 對于對于電平觸發(fā)電平觸發(fā)的外部中斷是的外部中斷是低電平有效低電平有效, 只只 要單片機在中斷請求引入端要單片機在中斷請求引入端INTx (和和)上采樣到有效上采樣到有效 的低電平時,就激活外部中斷。由于的低電平時,就激活外部中斷。由于CPU對對INTx 引腳沒有控制作用,也沒有相應(yīng)的中斷請求標志位,引腳沒有控制作用,也沒有相應(yīng)的中斷請求標志位, 因此因此

11、需要外接電路來撤除中斷請求信號。需要外接電路來撤除中斷請求信號。 圖圖4-2是是 一種可行的參考方案。一種可行的參考方案。 8 圖 4-2撤除外部中斷請求的電路 CPU響應(yīng)中斷后,利用一根口線響應(yīng)中斷后,利用一根口線 (如如P1.0)作應(yīng)答線,在中斷服務(wù)程作應(yīng)答線,在中斷服務(wù)程 序中用兩條指令來撤除中斷請求。序中用兩條指令來撤除中斷請求。 ANL P1, #0FEH ORL P1, #01H 第一條指令使第一條指令使P1.0為為0,而而P1 口其他各位的狀態(tài)不變。由于口其他各位的狀態(tài)不變。由于P1.0 與直接置與直接置1端端S相連,相連, 故故D觸發(fā)器觸發(fā)器 Q=1,撤除了中斷請求信號。,撤除

12、了中斷請求信號。 第二條指令將第二條指令將P1.0變成變成1,從從 =1,使以后產(chǎn)生的新的外部中斷,使以后產(chǎn)生的新的外部中斷 請求信號又能向單片機申請中斷。請求信號又能向單片機申請中斷。 S S 9 四、中斷系統(tǒng)結(jié)構(gòu)及中斷控制四、中斷系統(tǒng)結(jié)構(gòu)及中斷控制 IE0 TF0 IE1 RI/TI TF2 TF1 EAEX0 ET0 EX1 ET1 ES ET2 PX0 PT0 PX1 PT1 PS PT2 0 1 1 1 1 1 1 0 0 0 0 0 高級 中斷 請求 低級 中斷 請求 中斷源 中斷源 中斷入口 中斷入口 查詢電路 中斷優(yōu)先 級寄存器 全局中 斷允許 中斷源允 許 中斷標志中斷選擇

13、1 0 IT0 1 0 IT1 1 TF2 TF1 TF0 TI RI INT0 INT1 在在51單片機中,用于此目的的控制寄存器共有單片機中,用于此目的的控制寄存器共有4個,個,即定時器控即定時器控 制寄存器制寄存器TCON、中斷允許控制寄存器、中斷允許控制寄存器IE、中斷優(yōu)先控制寄存器、中斷優(yōu)先控制寄存器IP以以 及串行口控制寄存器及串行口控制寄存器SCON。這這4個控制寄存器都屬于專用寄存器之個控制寄存器都屬于專用寄存器之 列。當這些中斷源請求中斷時,相應(yīng)的標志分別由列。當這些中斷源請求中斷時,相應(yīng)的標志分別由TCON和和SCON中中 的相應(yīng)位來鎖存。下面分別介紹:的相應(yīng)位來鎖存。下面

14、分別介紹: 10 1.1.定時器控制寄存器定時器控制寄存器TCON (88H)TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IE0/IE1IE0/IE1:外部中斷外部中斷0 0和和1 1申請標志位:申請標志位: =0=0:沒有外部中斷申請;:沒有外部中斷申請; =1=1:有外部中斷申請。:有外部中斷申請。 IT0/IT1IT0/IT1:外部中斷外部中斷0 0和和1 1請求的觸發(fā)方式選擇位:請求的觸發(fā)方式選擇位: =0=0:在:在INT0/INT1INT0/INT1端申請中斷的信號低電平有效端申請中斷的信號低電平有效; ; =1 =1:在:在INT0/IN

15、T1INT0/INT1端申請中斷的信號負跳變有效端申請中斷的信號負跳變有效. . 11 EAEA- - -ES0ES0ET1ET1EX1EX1EX0EX0ET0ET0 2. 2. 中斷允許控制寄存器中斷允許控制寄存器IE (A8H)IE (A8H) EAEA:總的中斷允許控制位(總開關(guān)):總的中斷允許控制位(總開關(guān)): =0 =0 時禁止全部中斷;時禁止全部中斷;=1 =1 時允許中斷。時允許中斷。 EX0/EX1EX0/EX1:INT0/1INT0/1中斷允許控制位中斷允許控制位: : =0 =0 時禁止中斷;時禁止中斷; =1 =1 時允許中斷。時允許中斷。 ET0/ET0/ET1:ET1

16、: T0/T1 T0/T1中斷允許控制位中斷允許控制位 =0 =0 時禁止中斷;時禁止中斷; =1 =1 時允許中斷。時允許中斷。 ES0:ES0: 串行口的串行口的允許控制位允許控制位 =0 =0 時禁止中斷;時禁止中斷; =1 =1 時允許中斷。時允許中斷。 12 PX0/PX1PX0/PX1:INT0/1INT0/1優(yōu)先級控制位:優(yōu)先級控制位: =0 =0 時屬低優(yōu)先級;時屬低優(yōu)先級; =1 =1 時屬高優(yōu)先級時屬高優(yōu)先級。 PT0/PT1PT0/PT1:T0/T1T0/T1中斷優(yōu)先級控制位:中斷優(yōu)先級控制位: =0 =0 時屬低優(yōu)先級;時屬低優(yōu)先級; =1 =1 時屬高優(yōu)先級時屬高優(yōu)先

17、級。 PS0PS0:串行口中斷優(yōu)先級控制位:串行口中斷優(yōu)先級控制位: =0 =0 時屬低優(yōu)先級;時屬低優(yōu)先級; =1 =1 時屬高優(yōu)先級。時屬高優(yōu)先級。 3.3.中斷優(yōu)先級控制寄存器中斷優(yōu)先級控制寄存器IP (0B8H)IP (0B8H) PS0 PT1 PX1 PT0 PX0 PS0 PT1 PX1 PT0 PX0 MCS-51MCS-51有有2 2個中斷優(yōu)先級個中斷優(yōu)先級, ,分別是分別是: :高優(yōu)先級中斷,低優(yōu)先級中斷高優(yōu)先級中斷,低優(yōu)先級中斷。 13 TI RI TI RI 4. 串行口控制寄存器串行口控制寄存器SCON 可字節(jié)尋址可字節(jié)尋址98H ,可以位尋址。,可以位尋址。 其中與

18、中斷有關(guān)的控制位共其中與中斷有關(guān)的控制位共2位:位: TI:串行口發(fā)送中斷請求標志位:串行口發(fā)送中斷請求標志位 當發(fā)送完一幀串行數(shù)據(jù)后,由硬件自動置當發(fā)送完一幀串行數(shù)據(jù)后,由硬件自動置“1”;CPU響應(yīng)中斷后,由用戶軟響應(yīng)中斷后,由用戶軟 件清件清“0”撤除中斷。即撤除中斷。即CLR TI。 RI:串行口接收中斷請求標志位:串行口接收中斷請求標志位 當接收完一幀串行數(shù)據(jù)后,由硬件自動置當接收完一幀串行數(shù)據(jù)后,由硬件自動置“1”;CPU響應(yīng)中斷后,由用戶軟響應(yīng)中斷后,由用戶軟 件清件清“0” 撤除中斷。即撤除中斷。即CLR RI。 串行中斷請求在硬件上,由串行中斷請求在硬件上,由TI和和RI的的

19、“邏輯或邏輯或”得到。得到。就是說,無論是發(fā)就是說,無論是發(fā) 送標志送標志TI還是接收標志還是接收標志RI,只要為,只要為“1”,都會產(chǎn)生串行中斷請求。在中斷子,都會產(chǎn)生串行中斷請求。在中斷子 程序中判斷是哪個標志位產(chǎn)生的程序中判斷是哪個標志位產(chǎn)生的“1”。 14 正處理低優(yōu)先級中斷又接到高級別中斷正處理低優(yōu)先級中斷又接到高級別中斷 高打斷低高打斷低 正處理高優(yōu)先級中斷又接到低級別中斷正處理高優(yōu)先級中斷又接到低級別中斷 高不理低高不理低 五、中斷優(yōu)先級處理原則五、中斷優(yōu)先級處理原則: : 1 1、對同時發(fā)生多個中斷申請時:、對同時發(fā)生多個中斷申請時: 2 2、在中斷源提出了中斷申請且、在中斷源

20、提出了中斷申請且CPUCPU此前已經(jīng)允許中斷的前此前已經(jīng)允許中斷的前 提下,還須滿足以下三個條件提下,還須滿足以下三個條件: : 沒有沒有同級的中斷或更高級別的中斷正在處理;同級的中斷或更高級別的中斷正在處理; 正在執(zhí)行的指令必須正在執(zhí)行的指令必須執(zhí)行完最后執(zhí)行完最后 1 1個機器周期;個機器周期; 若正在執(zhí)行若正在執(zhí)行RETIRETI,或正在訪問,或正在訪問IEIE或或IPIP寄存器寄存器, ,須執(zhí)行完上須執(zhí)行完上 述指令和下一條指令以后方能響應(yīng)中斷述指令和下一條指令以后方能響應(yīng)中斷。 15 3自然優(yōu)先級自然優(yōu)先級 系統(tǒng)復位時低優(yōu)先級是默認值。當有若干中斷源系統(tǒng)復位時低優(yōu)先級是默認值。當有若

21、干中斷源 處于同一中斷優(yōu)先級時,若同時接收到幾個同一處于同一中斷優(yōu)先級時,若同時接收到幾個同一 優(yōu)先級的中斷請求,則優(yōu)先級的中斷請求,則CPU又該如何響應(yīng)中斷呢?又該如何響應(yīng)中斷呢? 在這種情況下,響應(yīng)的優(yōu)先順序由中斷系統(tǒng)的硬在這種情況下,響應(yīng)的優(yōu)先順序由中斷系統(tǒng)的硬 件確定,件確定,CPU自動按自然優(yōu)先級執(zhí)行,用戶無法自動按自然優(yōu)先級執(zhí)行,用戶無法 決定。順序從高到低如下:決定。順序從高到低如下: 外部中斷源外部中斷源0 定時器定時器0 外部中斷源外部中斷源1 定時器定時器1 串口中斷串口中斷 16 六中斷響應(yīng)與執(zhí)行過程:六中斷響應(yīng)與執(zhí)行過程: 圖圖4-4 中斷響應(yīng)與執(zhí)行過中斷響應(yīng)與執(zhí)行過

22、程示意圖。程示意圖。 中斷響應(yīng)就是對中斷中斷響應(yīng)就是對中斷 源提出的中斷請求的接受,源提出的中斷請求的接受, 是在中斷查詢之后進行的,是在中斷查詢之后進行的, 當查詢到有效的中斷請求當查詢到有效的中斷請求 時,緊接著就進行中斷響時,緊接著就進行中斷響 應(yīng)。應(yīng)。中斷響應(yīng)的主要內(nèi)容中斷響應(yīng)的主要內(nèi)容 是由硬件自動生成一條長是由硬件自動生成一條長 調(diào)用指令調(diào)用指令LCALL。 圖4-4 中斷響應(yīng)與執(zhí)行過程示意圖 17 4.3.5 中斷程序舉例中斷程序舉例 中斷程序的結(jié)構(gòu)及內(nèi)容與中斷程序的結(jié)構(gòu)及內(nèi)容與CPU對中斷的處理對中斷的處理 過程密切相關(guān),通常分為兩大部分。圖過程密切相關(guān),通常分為兩大部分。圖4

23、-5 主程序地址安排主程序地址安排 1主程序主程序 (1)主程序的起始地址。)主程序的起始地址。 51單片機復位后,單片機復位后,(PC)=0000H,而,而 0003H002BH分別為各中斷源的入口地址。分別為各中斷源的入口地址。 所以,編程時應(yīng)在所以,編程時應(yīng)在0000H處寫一條跳轉(zhuǎn)指令處寫一條跳轉(zhuǎn)指令 (一般為長跳轉(zhuǎn)指令一般為長跳轉(zhuǎn)指令),使,使CPU在執(zhí)行程序時,在執(zhí)行程序時, 從從0000H跳過各中斷源的人口地址。跳過各中斷源的人口地址。 主程序主程序是以跳轉(zhuǎn)的目標地址作為起始地址開是以跳轉(zhuǎn)的目標地址作為起始地址開 始編寫,始編寫,一般從一般從0030H開始開始,如圖,如圖4-5所示

24、。所示。 (2)主程序的初始化內(nèi)容。)主程序的初始化內(nèi)容。 所謂初始化,是對將要用到的所謂初始化,是對將要用到的51單片機單片機 內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設(shè)定。內(nèi)部部件或擴展芯片進行初始工作狀態(tài)設(shè)定。 51單片機復位后,特殊功能寄存器單片機復位后,特殊功能寄存器IE、IP的的 內(nèi)容均為內(nèi)容均為00H,所以應(yīng)對,所以應(yīng)對IE,IP進行初始化進行初始化 編程,以開放編程,以開放CPU中斷,允許某些中斷源中中斷,允許某些中斷源中 斷和設(shè)置中斷優(yōu)先級等。斷和設(shè)置中斷優(yōu)先級等。 圖4-5 主程序地址安排 18 2中斷服務(wù)程序的起始地址。中斷服務(wù)程序的起始地址。 當當CPU接收到中斷請求信號接收

25、到中斷請求信號 并予以響應(yīng)后,并予以響應(yīng)后,CPU把當前的把當前的PC 內(nèi)容壓入棧中進行保護,然后轉(zhuǎn)內(nèi)容壓入棧中進行保護,然后轉(zhuǎn) 入相應(yīng)的中斷服務(wù)程序入口處執(zhí)入相應(yīng)的中斷服務(wù)程序入口處執(zhí) 行。行。在相應(yīng)的入口處寫一條跳轉(zhuǎn)在相應(yīng)的入口處寫一條跳轉(zhuǎn) 指令,指令,并以跳轉(zhuǎn)指令的目標地址并以跳轉(zhuǎn)指令的目標地址 作為中斷服務(wù)程序的起始地址進作為中斷服務(wù)程序的起始地址進 行編程。行編程。 以以 為例,中斷矢量地址為例,中斷矢量地址 為為0003H,中斷服務(wù)程序從,中斷服務(wù)程序從 0200H開始,如圖開始,如圖4-6所示。所示。 圖4-6 中斷服務(wù)程序地址 INT0 19 【例【例4-2】在】在89C51單

26、片機的單片機的INT0引腳外接脈沖信號,要求每送來一個脈沖,把引腳外接脈沖信號,要求每送來一個脈沖,把30H單單 元值加元值加1,若,若30H單元計滿則進位單元計滿則進位31H單元?,F(xiàn)利用中斷編制脈沖計數(shù)程序。單元?,F(xiàn)利用中斷編制脈沖計數(shù)程序。 主程序部分主程序部分: ORG 0000H AJMP MAIN ;設(shè)置主程序入口地址;設(shè)置主程序入口地址 ORG 0003H ;中斷入口地址;中斷入口地址 AJMP SUBG ;設(shè)置中斷服務(wù)程序入口地址;設(shè)置中斷服務(wù)程序入口地址 ORG 0100H MAIN: MOV A, #00H ;30H、31H兩單元清零兩單元清零 MOV 30H,A MOV 3

27、1H,A MOV SP, #70H ;設(shè)置堆棧指針;設(shè)置堆棧指針 SETB IT0 ;設(shè)為邊沿觸發(fā);設(shè)為邊沿觸發(fā) SETB EA ;開中斷;開中斷 SETB EX0 ;允許中斷;允許中斷 AJMP $ ;等待中斷;等待中斷 中斷服務(wù)程序中斷服務(wù)程序: ORG 0200H ;設(shè)置中斷服務(wù)子程序位置;設(shè)置中斷服務(wù)子程序位置 SUBG: PUSH ACC;保護現(xiàn)場;保護現(xiàn)場 INC 30H ;中斷后將脈沖計數(shù)值加;中斷后將脈沖計數(shù)值加1 MOV A, 30H JNZ BACK INC 31H BACK: POP ACC ;恢復現(xiàn)場;恢復現(xiàn)場 RETI ;返回;返回 20 第二節(jié)第二節(jié) MCS-51M

28、CS-51單片機的定時器計數(shù)器單片機的定時器計數(shù)器 MCS-51MCS-51單片機共有單片機共有2 2個個1616位定時器位定時器/ /計數(shù)器計數(shù)器( (T0T0、T1T1均為均為 加法計數(shù)器加法計數(shù)器) ) 計數(shù)計數(shù): :通過引腳通過引腳P3.4P3.4或或P3.5P3.5對外部事件對外部事件計數(shù)計數(shù). . 定時定時: :對芯片內(nèi)的機器周期進行對芯片內(nèi)的機器周期進行計數(shù)計數(shù). . 一、定時方法一、定時方法 軟件定時軟件定時 硬件定時硬件定時 可編程定時器定時可編程定時器定時 二、定時器二、定時器/ /計數(shù)器的定時和計數(shù)功能計數(shù)器的定時和計數(shù)功能 21 三三. 定時器定時器/計數(shù)器特點計數(shù)器特

29、點 對于定時器對于定時器/計數(shù)器來說,不管是獨立的定時計數(shù)器來說,不管是獨立的定時 器芯片還是單片機內(nèi)的定時器,大都具有以下特點器芯片還是單片機內(nèi)的定時器,大都具有以下特點: (1)定時器)定時器/計數(shù)器有多種方式,計數(shù)器有多種方式,可以是計數(shù)方式,可以是計數(shù)方式, 也可以是定時方式。也可以是定時方式。 (2)定時器)定時器/計數(shù)器的計數(shù)值是可變的,計數(shù)器的計數(shù)值是可變的,當然計數(shù)當然計數(shù) 的最大值是有限的,這取決于計數(shù)器的位數(shù)。計數(shù)的最大值是有限的,這取決于計數(shù)器的位數(shù)。計數(shù) 的最大值也就限定了定時的最大值。的最大值也就限定了定時的最大值。 (3)在到達設(shè)定的定時或計數(shù)值時發(fā)出中斷申請,)在

30、到達設(shè)定的定時或計數(shù)值時發(fā)出中斷申請, 以便實現(xiàn)功能控制。以便實現(xiàn)功能控制。 22 4.4.2 定時器定時器/計數(shù)器結(jié)構(gòu)及工作原理計數(shù)器結(jié)構(gòu)及工作原理 1. 定時器定時器/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu) 1)它由加法計數(shù)器、)它由加法計數(shù)器、 TMOD寄存器、寄存器、TCON寄存器寄存器 等組成。等組成。 2)定時器)定時器/計數(shù)器的核心是計數(shù)器的核心是16位加法計數(shù)器,位加法計數(shù)器,16位位 加加1計數(shù)器由兩個八位的特殊功能寄存器組成,分別計數(shù)器由兩個八位的特殊功能寄存器組成,分別 用用TH0、TL0及及TH1、TL1表示。其中表示。其中TH0、TL0是是 定時器定時器/計數(shù)器計數(shù)器T0加法計數(shù)器

31、的高加法計數(shù)器的高8位和低位和低8位,位, TH1、 TL1是定時器是定時器/計數(shù)器計數(shù)器T1加法計數(shù)器的高加法計數(shù)器的高8位和低位和低8位。位。 3)它們可被程序控制為不同的組合狀態(tài))它們可被程序控制為不同的組合狀態(tài)(13位、位、16 位、兩個分開的位、兩個分開的8位等位等),只需用指令改變,只需用指令改變TMOD(工工 作方式控制寄存器作方式控制寄存器)的相應(yīng)位,就形成了定時器的相應(yīng)位,就形成了定時器/計數(shù)計數(shù) 器不同的四種工作方式。器不同的四種工作方式。 具體如表具體如表41所示。所示。 23 圖圖4-7 51單片機定時器計數(shù)器結(jié)構(gòu)框圖單片機定時器計數(shù)器結(jié)構(gòu)框圖 24 表4-1 定時器工

32、作方式 工作方式定時器0定時器1 方式013位定時器/計數(shù)器13位定時器/計數(shù)器 方式116位定時器/計數(shù)器16位定時器/計數(shù)器 方式28位自動重裝定時器8位自動重裝定時器 方式32個8位定時器/計數(shù)器串行口波特率發(fā)生器 25 圖圖4-8 定時器定時器/計數(shù)器原理示意圖計數(shù)器原理示意圖 1、定時器、定時器/計數(shù)器的核心是一個加計數(shù)器的核心是一個加1計數(shù)器,計數(shù)器, 2、其輸入的計數(shù)脈沖有兩個來源:一個是外部脈沖源,另一個是系統(tǒng)的、其輸入的計數(shù)脈沖有兩個來源:一個是外部脈沖源,另一個是系統(tǒng)的 時鐘振蕩器。計數(shù)器對兩個脈沖源之一進行輸入計數(shù),每輸入一個脈沖,計時鐘振蕩器。計數(shù)器對兩個脈沖源之一進行

33、輸入計數(shù),每輸入一個脈沖,計 數(shù)值加數(shù)值加1。當加到計數(shù)器為全。當加到計數(shù)器為全“1”時,再輸入一個脈沖就使計數(shù)器回零,時,再輸入一個脈沖就使計數(shù)器回零, 3、同時從最高位溢出一個脈沖使特殊功能寄存器、同時從最高位溢出一個脈沖使特殊功能寄存器TCON(定時器控制寄存定時器控制寄存 器器)中的溢出中斷標志中的溢出中斷標志TF0或或TF1置置1,并可向,并可向CPU申請中斷。申請中斷。 26 三、定時器三、定時器/ /計數(shù)器計數(shù)器0 0和和1 1的控制寄存器的控制寄存器 定時器控制寄存器定時器控制寄存器TCON (88H)TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0

34、 IT0 TF0TF0TF1:TF1: T0/T1 T0/T1計數(shù)溢出標志位。計數(shù)溢出標志位。 =1 =1 計數(shù)溢出計數(shù)溢出; =0 =0 計數(shù)未滿計數(shù)未滿 TR0TR0TR1:TR1: T0/T1 T0/T1運行控制位。運行控制位。 =1 =1 啟動計數(shù);啟動計數(shù); =0 =0 停止計數(shù)停止計數(shù) TF0TF0TF1 TF1 標志位可用于標志位可用于申請中斷或供申請中斷或供CPUCPU查詢查詢。 在進入中斷服務(wù)程序時會在進入中斷服務(wù)程序時會自動自動清零;但在清零;但在 查詢方式時必須查詢方式時必須軟件軟件清零。清零。 27 定時器方式寄存器定時器方式寄存器TMOD (89H)TMOD (89H

35、) GATE C / T M1 M0 GATE C / T M1 M0 T1T1T0T0 M1 M0M1 M0:工作方式定義位:工作方式定義位 ( ( 定義定義4 4 種方式種方式 ):): C/T C/T :計數(shù)器:計數(shù)器/ /定時器選擇位定時器選擇位 = 1 = 1 外部事件計數(shù)器。對外部事件計數(shù)器。對TxTx引腳的負脈沖計數(shù);引腳的負脈沖計數(shù); = 0 = 0 片內(nèi)時鐘定時器。對機器周期脈沖計數(shù)定時片內(nèi)時鐘定時器。對機器周期脈沖計數(shù)定時 0 00 0: 方式方式0 0 0 10 1: 方式方式1 1 1 01 0: 方式方式2 2 1 11 1: 方式方式3 3 28 GATEGATE門

36、控位門控位: Timer: Timer可由軟件與硬件兩者控制可由軟件與硬件兩者控制 GATE = 0 GATE = 0 普通用法普通用法 TimerTimer的啟的啟/ /停由軟件對停由軟件對TRxTRx位寫位寫“1”/“0”1”/“0”控控 制制 GATE = 1 GATE = 1 門控用法門控用法 計數(shù)器的啟計數(shù)器的啟/ /停由軟件對停由軟件對TR0TR0TR1TR1位寫位寫“1”/“0”1”/“0” 和在和在 INT0INT0INT1INT1引腳上出現(xiàn)的信號的高引腳上出現(xiàn)的信號的高/ /低共同控制低共同控制 GATE C / T M1 M0 GATE C / T M1 M0 T1T1T0

37、T0 29 四、定時器結(jié)構(gòu)與工作方式的應(yīng)用四、定時器結(jié)構(gòu)與工作方式的應(yīng)用 1.1.工作方式工作方式1 1:1616位的定時位的定時/ /計數(shù)器計數(shù)器 2.2.工作方式工作方式2 2:8 8位的定時位的定時/ /計數(shù)器計數(shù)器 T1T0計數(shù)方式,計數(shù)值的范圍是計數(shù)方式,計數(shù)值的范圍是: T1T0定時方式,定時時間的計算公式定時方式,定時時間的計算公式: 2 y t=(計數(shù)初值) 機器周期 12 y Y分別為13、16和8位 30 定時定時/計數(shù)器的計數(shù)器的4種工作方式種工作方式 1.方式方式0:13位定時位定時/計數(shù)器計數(shù)器 當當M1M0兩位為兩位為00時,定時時,定時/計數(shù)器被選為工作方式計數(shù)器

38、被選為工作方式0,T0(或或T1)方方 式式0的邏輯電路結(jié)構(gòu)邏輯結(jié)構(gòu)如下圖所示的邏輯電路結(jié)構(gòu)邏輯結(jié)構(gòu)如下圖所示。 控制 振蕩器 12 TL0 (5位) TF0 中斷 T0 端 C/ T = 0 C/ T = 1 + INT0 端 GATE TR0 TH0 (8位) 31 【例【例4-3】設(shè)定時器】設(shè)定時器T0工作在方式工作在方式0,在,在P1.0引腳上輸出周期為引腳上輸出周期為2 ms 的方波的方波(定時時間為定時時間為1 ms),fosc=6 MHZ。編程實現(xiàn)其定時功能。編程實現(xiàn)其定時功能。 解:當解:當T0處于工作方式處于工作方式0時,加時,加1計數(shù)器為計數(shù)器為13位。設(shè)位。設(shè)T0的初值為

39、的初值為X。 (1機器周期機器周期2 s) (1)計算)計算T0初值初值X 則:則:X=7692;轉(zhuǎn)換為二進制數(shù):;轉(zhuǎn)換為二進制數(shù):1111000001100B;結(jié)果為(;結(jié)果為(TH0) =F0H,(TL0)=0CH. (2)初始化。)初始化。 選擇選擇T0并確定工作方式:(并確定工作方式:(TMOD)=00H 裝入初始值:(裝入初始值:(TH0)=0F0H (TL0)=0CH 選擇數(shù)據(jù)傳輸方式:中斷方式:允許選擇數(shù)據(jù)傳輸方式:中斷方式:允許T0中斷:中斷: SETB EA SETB ET0 查詢方式:禁止查詢方式:禁止T0中斷中斷 : CLR ET0 s s X 3 6 13 10112

40、106 1 )2( 32 (3)程序清單。)程序清單。 將上述的分析過程用指令表示出來。將上述的分析過程用指令表示出來。 方法方法1:中斷法。在定時器初始化時要開放對應(yīng)的中斷允許(:中斷法。在定時器初始化時要開放對應(yīng)的中斷允許(ET0或或ET1)和)和 總允許總允許EA,在啟動后等待中斷。當計數(shù)器溢出中斷,在啟動后等待中斷。當計數(shù)器溢出中斷,CPU將程序轉(zhuǎn)到中斷服將程序轉(zhuǎn)到中斷服 務(wù)程序入口,因此應(yīng)在中斷服務(wù)程序中安排相應(yīng)的處理程序。務(wù)程序入口,因此應(yīng)在中斷服務(wù)程序中安排相應(yīng)的處理程序。 主程序:主程序: ORG 1000H PTOMD :MOV TMOD, #00H ;T0方式方式0 MOV

41、 TL0, #0CH ;送初值;送初值 MOV TH0, #0F0H SETB EA ;CPU開中斷開中斷 SETB ET0 ;開;開T0中斷中斷 SETB TR0 ;啟動定時;啟動定時 SJMP $ ;等待中斷;等待中斷 中斷服務(wù)程序:中斷服務(wù)程序: ORG 0120H ITOP: MOV TL0, #0CH ;重新裝入初值;重新裝入初值 MOV TH0, #0F0H CPL P1.0 ;P1.0取反輸出方波取反輸出方波 RETI 33 方法方法2:查詢法。在定時器初始化并啟動后,在程序中安:查詢法。在定時器初始化并啟動后,在程序中安 排指令查詢排指令查詢TF0的狀態(tài)。的狀態(tài)。 MOV TM

42、OD, #00H ;設(shè)置;設(shè)置T0為模式為模式0 MOV TL0, #0CH ;送初值;送初值 MOV TH0, #0F0H CLR ET0 ;禁止;禁止T0中斷中斷 SETB TR0 ;啟動;啟動T0 LOOP: JBC TF0, NEXT ;查詢定時時間是否到?;查詢定時時間是否到? SJMP LOOP NEXT: MOV TL0, #0CH ;重裝計數(shù)初值;重裝計數(shù)初值 MOV TH0, #0F0H CPL P1.0 ;輸出取反;輸出取反 SJMP LOOP ;重復循環(huán);重復循環(huán) 34 定時定時/計數(shù)器的計數(shù)器的4種工作方式種工作方式 2.方式方式1:16位定時位定時/計數(shù)器計數(shù)器 控制

43、 振蕩器 12 TL0 (8位) TF0 中斷 T0 端 C/ T = 0 C/ T = 1 + INT0 端 GATE TR0 TH0 (8位) 35 方式1初始值計算方法: (設(shè)振蕩脈沖經(jīng)12分頻得到機器周期)。 用于計數(shù)工作方式時,計數(shù)長度為1216=165536 (個外部脈沖)。 定時時間和計數(shù)長度均大于方式0。 最短:(初始值2161),1個機器周期2s (fosc=6MHZ) 最長:初始值 216 216 0,216個機器周期131ms 12)02( 16 振蕩周期初值Tt 36 例:用定時器例:用定時器T1T1,方式,方式1 1產(chǎn)生一個產(chǎn)生一個50Hz50Hz的方波,由的方波,由

44、P1.1P1.1 輸出。輸出。foscfosc=12MHz=12MHz。 ms20s02. 0 Hz50 1 T 16 X212 10 1000/1265536 10000 555368 0D F H 用用T1T1定時定時10ms,10ms,計數(shù)初值計數(shù)初值X X為為 解:方波周期解:方波周期 1010 3( (216X)10 6 37 MOV TMOD, #10H MOV TMOD, #10H ;T1T1模式模式1 1,定時,定時 SETB TR1 SETB TR1 ;啟動;啟動T1T1 LOOPLOOP:MOV TH1,#0D8H MOV TH1,#0D8H ;裝入;裝入T1T1計數(shù)初值計

45、數(shù)初值 MOV TL1,#0F0H MOV TL1,#0F0H JNB TF1,$ JNB TF1,$ ;T1T1沒有溢出等待沒有溢出等待 CLR TF1 CLR TF1 ;產(chǎn)生溢出,清標志位;產(chǎn)生溢出,清標志位 CPL P1.1 CPL P1.1 ;P1.1P1.1取反輸出取反輸出 SJMP LOOP SJMP LOOP ;循環(huán);循環(huán) 查詢程方式程序如下:查詢程方式程序如下: 38 MAIN MAIN : MOV TMOD, #10H MOV TMOD, #10H ;設(shè)置;設(shè)置T1T1為模式為模式1 1 MOV TL1, #0F0H MOV TL1, #0F0H ;送初值;送初值 MOV T

46、H1, #0D8HMOV TH1, #0D8H SETB EA SETB EA ;CPUCPU開中斷開中斷 SETB ET1 SETB ET1 ;T1T1中斷允許中斷允許 SETB TR1 SETB TR1 ;啟動;啟動T1T1 HERE HERE : SJMP HERE SJMP HERE ;等待中斷;等待中斷 中斷服務(wù)程序:中斷服務(wù)程序: ORG 001BH ORG 001BH ;T1T1中斷入口中斷入口 AJMP CTC1 AJMP CTC1 ;轉(zhuǎn)中斷服務(wù)程序;轉(zhuǎn)中斷服務(wù)程序 CTC1 CTC1 : MOV TL1, #0F0H MOV TL1, #0F0H ;重裝初值;重裝初值 MOV

47、 TH1, #0D8HMOV TH1, #0D8H CPL P1.1 CPL P1.1 ;輸出方波;輸出方波 RETI RETI ;中斷返回;中斷返回 中斷方式程序:中斷方式程序: 39 定時定時/計數(shù)器的計數(shù)器的4種工作方式種工作方式 3. 方式方式2:8位定時位定時/計數(shù)器計數(shù)器 控制 振蕩器 12 TL0 (8位) TF0 中斷 T0 端 C/ T = 0 C/ T = 1 + INT0 端 GATE TR0 TH0 (8位) 重新裝入 40 T0T0計數(shù)工作方式模式計數(shù)工作方式模式2 2的模式字為的模式字為TMOD=06HTMOD=06H。 T1T1不用時,不用時,TMODTMOD的高

48、的高4 4位一般取位一般取0 0。 例:利用定時器例:利用定時器T0T0的模式的模式2 2對外部信號計數(shù)。要求每計滿對外部信號計數(shù)。要求每計滿100100次,次, 將將P1.0P1.0端取反。端取反。 解:解: . . 選擇模式選擇模式 . . 計算計算T1T1的計數(shù)初值的計數(shù)初值 8 X21009CH . . 程序清單程序清單 41 ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH ;中斷服務(wù)程序入口;中斷服務(wù)程序入口 LJMP INTT1LJMP INTT1 MAIN MAIN : MOV TMOD, #06H MOV

49、TMOD, #06H ;置;置T0T0為模式為模式2 2計數(shù)工作方式計數(shù)工作方式 MOV TL0, #9CH MOV TL0, #9CH ;賦初值;賦初值 MOV TH0, #9CHMOV TH0, #9CH MOV IE, #82H MOV IE, #82H ;定時器;定時器T0T0開中斷開中斷 SETB TR0 SETB TR0 ;啟動計數(shù)器;啟動計數(shù)器 HERE HERE : SJMP HERE SJMP HERE ;等待中斷;等待中斷 INTT0: CPL P1.0INTT0: CPL P1.0 RETI RETI 中斷方式程序:中斷方式程序: 方式方式2中中THX和和TLX的值應(yīng)完全

50、相同,并且不用重新送初值的值應(yīng)完全相同,并且不用重新送初值 42 ORG 2000HORG 2000H MAINMAIN: MOV TMOD, #06H MOV TMOD, #06H ;置;置T0T0為模式為模式2 2計數(shù)工作方式計數(shù)工作方式 MOV IE, #00H MOV IE, #00H ;定時器;定時器T0T0關(guān)中斷關(guān)中斷 SETB TR0 SETB TR0 ;啟動計數(shù)器;啟動計數(shù)器 MOV TL0, #9CH MOV TL0, #9CH ;賦初值;賦初值 MOV TH0, #9CHMOV TH0, #9CH LOOP: JNB TF0, $ LOOP: JNB TF0, $ CLR

51、TF0 CLR TF0 CPL P1.0 CPL P1.0 SJMP LOOP SJMP LOOP 查詢方式程序:查詢方式程序: 43 定時定時/計數(shù)器的計數(shù)器的4種工作方式種工作方式 4.方式方式3:2個個8位定時位定時/計數(shù)器計數(shù)器 控制 振蕩器 12 TL0 (8位) TF0 中斷 T0 端 C/ T = 0 C/ T = 1 + INT0 端 GATE TR0 TH0 (8位) 1/12 fosc 1/12 fosc TF1 中斷1/12 fosc TR1 44 小結(jié):定時小結(jié):定時/計數(shù)器的初始化計數(shù)器的初始化 由于定時由于定時/計數(shù)器是可編程的,因此在定時或計數(shù)計數(shù)器是可編程的,因

52、此在定時或計數(shù) 之前要用程序初始化,初始化一般有以下幾個步驟:之前要用程序初始化,初始化一般有以下幾個步驟: (1)確定工作方式)確定工作方式對方式寄存器對方式寄存器TMOD賦值。賦值。 (2)預置定時或計數(shù)初值,直接將初值寫入)預置定時或計數(shù)初值,直接將初值寫入TL0、 TH0或或TL1、TH1中。中。 (3)根據(jù)需要對中斷允許寄存器有關(guān)位賦值,以)根據(jù)需要對中斷允許寄存器有關(guān)位賦值,以 開放或禁止定時開放或禁止定時/計數(shù)器中斷。計數(shù)器中斷。 (4)啟動定時)啟動定時/計數(shù)器,使計數(shù)器,使TCON中的中的TR1或或TR0 置置“1”,計數(shù)器計按既定的工作方式和初值技術(shù)或,計數(shù)器計按既定的工作

53、方式和初值技術(shù)或 定時。定時。 45 在初始化過程中,要置入定時或計數(shù)的初值,要做一點計算。由于在初始化過程中,要置入定時或計數(shù)的初值,要做一點計算。由于 計數(shù)器是加計數(shù)器是加“1”計數(shù)器,并在溢出時產(chǎn)生中斷請求,因此不能直接將計計數(shù)器,并在溢出時產(chǎn)生中斷請求,因此不能直接將計 數(shù)初值置入計數(shù)器,而應(yīng)根據(jù)計算初值公式計算。數(shù)初值置入計數(shù)器,而應(yīng)根據(jù)計算初值公式計算。 設(shè)計數(shù)器最大計數(shù)值為設(shè)計數(shù)器最大計數(shù)值為M,選擇不同的工作方式最大計數(shù),選擇不同的工作方式最大計數(shù) 值不同。值不同。 方式方式0:M=213=8192 方式方式1:M=216=65536 方式方式2:M=28=256 方式方式3:

54、M=28=256 置入計數(shù)初值置入計數(shù)初值X可這樣計算:可這樣計算: 計數(shù)方式時:計數(shù)方式時:X=M-計數(shù)值(計數(shù)值(X即為計數(shù)值的補碼)即為計數(shù)值的補碼) 定時方式時:(定時方式時:(M-X)*T=定時值,故定時值,故X=M-定時值定時值/T 其中其中T為計數(shù)周期,是單片機時鐘的為計數(shù)周期,是單片機時鐘的12分頻,即單片機機分頻,即單片機機 器周期。當晶振為器周期。當晶振為6MHz時,時,t=2s;當晶振;當晶振12MHz時,時, T=1s。 46 例例4-7】用定時器】用定時器/計數(shù)器計數(shù)器T0監(jiān)視一生產(chǎn)線,每生產(chǎn)監(jiān)視一生產(chǎn)線,每生產(chǎn)100個個 工件,發(fā)出一包裝命令,包裝成一箱,并記錄其箱

55、數(shù)。硬工件,發(fā)出一包裝命令,包裝成一箱,并記錄其箱數(shù)。硬 件電路如圖件電路如圖4-12所示。所示。 光 源 包 裝 機 T 0 8 9 C 5 1 P 1 .0 T + 5 V “+ 1 ” 包 裝 命 令 用用T0作計數(shù)器,作計數(shù)器,T為光敏三極管。當有工件通過時,三極管輸出高電平,為光敏三極管。當有工件通過時,三極管輸出高電平, 即每通過一個工件,便會產(chǎn)生一個計數(shù)脈沖。即每通過一個工件,便會產(chǎn)生一個計數(shù)脈沖。 T0工作于計數(shù)器方式的方式工作于計數(shù)器方式的方式2,方式控制字為,方式控制字為TMOD:00000110B;計數(shù);計數(shù) 初值為初值為TH0=TL0=256-100=156=9CH;用

56、;用P1.0啟動包裝機包裝命令;用啟動包裝機包裝命令;用R5、 R4作為箱數(shù)計數(shù)器。作為箱數(shù)計數(shù)器。 47 程序如下:程序如下: ORG 0000H LJMP MAIN ;主程序;主程序 ORG 000BH ;T0中斷服務(wù)程序中斷服務(wù)程序 LJMP COUNT ORG 0030H MAIN: MOV SP, #60H CLR P1.0 MOV R5,#0 ;箱數(shù)計數(shù)器清;箱數(shù)計數(shù)器清“0” MOV R4,#0 MOV TMOD,#06H ;置;置T0工作方式工作方式 MOV TH0, #9CH MOV TL0, #9CH SETB EA ;CPU開中斷開中斷 SETB ET0 SETB TR0

57、 SJMP $ ;模擬主程序;模擬主程序 48 COUNT : MOV A, R4 ;箱數(shù)計數(shù)器加;箱數(shù)計數(shù)器加1 ADD A, #01H MOV R4,A MOV A, R5 ADDC A, #00H MOV R5,A SETB P1.0 ;啟動包裝;啟動包裝 MOV R3,#100 DLY: NOP ;給外設(shè)一定時間;給外設(shè)一定時間 DJNZ R3,DLY CLR P1.0 RETI ;中斷返回;中斷返回 END 49 【例【例4-9】試編寫利用】試編寫利用T0產(chǎn)生產(chǎn)生1s定時的程序。使得由定時的程序。使得由 P1口控制的口控制的8個個LED指示燈每隔一秒輪流閃亮(輸出指示燈每隔一秒輪流閃亮(輸出 為低電平時亮),設(shè)為低電平時亮),設(shè)fosc6MHz。 解:解: (1) 定時器定時器T0工作模式的確定工作模式的確定 因定時時間較長,使用因定時時間較長,使用51單片機的定時器計數(shù)器單片機的定時器計數(shù)器 進行定時,即使按工作方式進行定時,即使按工作方式l,其最大定

溫馨提示

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

評論

0/150

提交評論