任務三流水燈定時控制_第1頁
任務三流水燈定時控制_第2頁
任務三流水燈定時控制_第3頁
任務三流水燈定時控制_第4頁
任務三流水燈定時控制_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、教學導航教學導航任務單任務單任務準備任務準備案例示范案例示范知識梳理與總結知識梳理與總結任務作業(yè)任務作業(yè)教教知識重點(1)中斷控制用寄存器;(2)中斷服務函數的編寫;(3)定時器工作方式及控制寄存器的使用知識難點定時器工作方式;中斷服務函數的編寫推薦教學方式以任務入手,通過流水燈的定時控制程序的編寫逐漸認識中斷系統、定時器/計數器的作用,深化對中斷系統與定時器的理解,掌握中斷服務函數的編寫方法及中斷響應的機制。建議學時6學時學學推薦學習方法通過對教師提供的電路圖,編寫程序,完成仿真調試,理解相關理論知識,學會應用。必須掌握的理論知識(1)單片機中斷系統; (2)中斷控制用寄存器;(3)中斷服務

2、函數的編寫; (4)單片機定時器結構;(5)工作方式及控制寄存器;(6)定時器的應用必須掌握的技能中斷程序、定時器應用程序的編寫,仿真調試技巧。教學導航教學導航任務任務3 以定時方式控制流水燈以定時方式控制流水燈任務單任務單任務描述任務二是利用單片機的并行I/O口外接流水燈,采用并行輸入/輸出方式控制發(fā)光二極管實現流水燈,在實現該任務時,每次點亮一個燈后要延時,否則無法看到流水燈效果,任務二通過軟件方法實現延時。本任務要求利用單片機的定時器/計數器,讓流水燈指定時間循環(huán)點亮發(fā)光二極管。任務要求如圖3-1所示,由P0連接8只發(fā)光二極管,實現如下流水燈的功能:(1)要求每隔1s從左至右循環(huán)點亮發(fā)光

3、二極管;(2)按自定時間間隔從左至右循環(huán)點亮發(fā)光二極管,點亮最右邊的發(fā)光二極管后,再從右至左循環(huán)點亮。實現方法1利用Proteus仿真運行,按任務要求實現流水燈。2在實訓設備上按任務要求連線,運行程序。任務任務3 以定時方式控制流水燈以定時方式控制流水燈3.1 中斷系統3.2 定時器/計數器任務任務3 以定時方式控制流水燈以定時方式控制流水燈3.1 3.1 中斷系統中斷系統3.1.1 3.1.1 中斷的概念與作用中斷的概念與作用3.1.2 MCS 3.1.2 MCS 51 51單片機中斷系統單片機中斷系統3.1.3 3.1.3 中斷服務函數中斷服務函數 任務任務3 以定時方式控制流水燈以定時方

4、式控制流水燈 3.1.1 3.1.1 中斷的概念與作用中斷的概念與作用外部設備是微機的重要組成部分,而微機和外部設備之間不是直接相連的,而是通過不同的接口電路來達到彼此間的信息傳送的。CPU與外部交換信息的方式:(1)程序控制傳送方式(2)中斷傳送方式(3)直接存儲器存?。―MA)方式任務任務3 以定時方式控制流水燈以定時方式控制流水燈1.1.中斷的定義中斷的定義 你正在專心看書,突然電話鈴響,于是你記下正在看的書的頁數,去接電話,接完電話后再回來接著看書。日常中斷的例子日常中斷的例子任務任務3 以定時方式控制流水燈以定時方式控制流水燈什么是中斷?什么是中斷? 中斷是指計算機在執(zhí)行某段程序的過

5、程中中斷是指計算機在執(zhí)行某段程序的過程中, 由于計算機系統內、外的某種原因由于計算機系統內、外的某種原因, 暫時中止原暫時中止原程序的執(zhí)行程序的執(zhí)行, 轉去執(zhí)行相應的處理程序轉去執(zhí)行相應的處理程序, 并中斷并中斷服務程序執(zhí)行完后服務程序執(zhí)行完后, 再回來繼續(xù)執(zhí)行被中斷的原再回來繼續(xù)執(zhí)行被中斷的原程序的過程。程序的過程。 任務任務3 以定時方式控制流水燈以定時方式控制流水燈1)CPU與外設并行工作。解決與外設并行工作。解決CPU速度快、外設速度速度快、外設速度慢的矛盾。慢的矛盾。2)實時處理。控制系統往往有許多數據需要采集或輸實時處理。控制系統往往有許多數據需要采集或輸出。實時控制中有的數據難以

6、估計何時需要交換。出。實時控制中有的數據難以估計何時需要交換。3)故障處理。計算機系統的故障往往隨機發(fā)生,如電故障處理。計算機系統的故障往往隨機發(fā)生,如電源斷電、運算溢出、存儲器出錯等。采用中斷技術,系統源斷電、運算溢出、存儲器出錯等。采用中斷技術,系統故障一旦出現,就能及時處理。故障一旦出現,就能及時處理。4)實現人機交互:人和單片機交互一般采用鍵盤和)實現人機交互:人和單片機交互一般采用鍵盤和按鍵,可以采用中斷的方式實現,中斷方式時按鍵,可以采用中斷的方式實現,中斷方式時CPU執(zhí)行效執(zhí)行效率高,而且可以保證人機交互的實時性,故中斷方式在人率高,而且可以保證人機交互的實時性,故中斷方式在人機

7、交互中得到廣泛應用。機交互中得到廣泛應用。任務任務3 以定時方式控制流水燈以定時方式控制流水燈3.1.2 MCS-513.1.2 MCS-51中斷系統中斷系統中斷系統是指能實現中斷功能的那部分硬件電路中斷系統是指能實現中斷功能的那部分硬件電路和軟件程序。和軟件程序。對于對于MCS-51單片機,大部分中斷電路都是集成單片機,大部分中斷電路都是集成在芯片內部的,只有和中斷輸入線上的中斷請求在芯片內部的,只有和中斷輸入線上的中斷請求信號產生電路才分散在各中斷源電路或接口芯片信號產生電路才分散在各中斷源電路或接口芯片電路里。電路里。 任務任務3 以定時方式控制流水燈以定時方式控制流水燈 IE0TCON

8、SCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優(yōu)先級自然優(yōu)先級矢量地址高級中斷請求高級中斷請求自然優(yōu)先級自然優(yōu)先級矢量地址低級中斷請求低級中斷請求PX0PT0PX1PT1PSIEIP 中斷標志位中斷源允許總允許EA中斷優(yōu)先級任務任務3 以定時方式控制流水燈以定時方式控制流水燈1. MCS-511. MCS-51的中斷源和中斷標志的中斷源和中斷標志 中斷源是指中斷源是指引起中斷的事件。引起中斷的事件。 在單片機中,中斷源是指引起中斷原因的設備或在單片機中,中斷源是指引起中斷原因的設備或事

9、件,或發(fā)出中斷請求信號的源泉。事件,或發(fā)出中斷請求信號的源泉。通常有通常有I/O設備、實時控制系統中的隨機參數和信息故障源設備、實時控制系統中的隨機參數和信息故障源等。等。任務任務3 以定時方式控制流水燈以定時方式控制流水燈1)外部中斷源:MCS-51系列單片機有2個外中斷源,稱為外中斷0和1,經由單片機上的P3.2、P3.3這兩個外部引腳引入,為 、 。 2)內部中斷源 定時器溢出中斷源。定時器溢出中斷源由內部定時器/計數器產生,屬于內部中斷。 串行口中斷源。串行口中斷是由內部串行口中斷源產生。 INT1INT0(1) (1) 中斷源中斷源任務任務3 以定時方式控制流水燈以定時方式控制流水燈

10、1)TCON中的中斷標志位中的中斷標志位 D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0(2)(2)中斷請求標志中斷請求標志(MSB)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(LSB) 外部中斷外部中斷INT0中斷標志中斷標志位位(TCON.1) : IE01,外部中斷1向CPU申請中斷 外部中斷外部中斷INT0觸發(fā)方式觸發(fā)方式控制位控制位(TCON.0): IT0=0,電平觸發(fā)方式 IT0=1, 下降沿觸發(fā)方式注意:該寄存器可以位尋址。任務任務3 以定時方式控制流水燈以定時方式控制流水燈: 在電平觸發(fā)方式下,在電平觸發(fā)方式下,CPUCP

11、U響應中斷時,不能自動清除響應中斷時,不能自動清除IE0IE0標標志。也就是說,志。也就是說,IE0IE0狀態(tài)完全由狀態(tài)完全由 狀態(tài)決定,所以在中斷狀態(tài)決定,所以在中斷返回前必須撤除返回前必須撤除 的低電平的低電平, ,否則會引起重復中斷;否則會引起重復中斷; 而在負跳變觸發(fā)方式下,當而在負跳變觸發(fā)方式下,當CPUCPU響應中斷時,硬件會自動使響應中斷時,硬件會自動使IE0IE0清清0 0。 在負跳變觸發(fā)方式下,為保證在負跳變觸發(fā)方式下,為保證CPUCPU能檢測到負跳變,的高、能檢測到負跳變,的高、低電平時間至少應保持低電平時間至少應保持1 1個機器周期。個機器周期。INT0INT0采樣INT

12、0采樣INT0采樣INT0任務任務3 以定時方式控制流水燈以定時方式控制流水燈1)TCON的中斷標志位的中斷標志位 TCON8FH 8EH 8DH 8CH 8BH 8AH 89H 88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0T0溢出中斷標志溢出中斷標志(TCON.5): T0啟動計數后,計滿溢出由硬件置位TF0=1,向CPU請求中斷,此標志一直保持到CPU響應中斷后,才由硬件自動清0。也可用軟件查詢該標志,并由軟件清0。任務任務3 以定時方式控制流水燈以定時方式控制流水燈 D7D6D5D4D3D2D1D0SM0 SM1 SM2 RENTB8RB8TIR

13、I2) SCON的中斷標志位的中斷標志位(MSB)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H(LSB) 注意:該寄存器可以位尋址!RI (SCON.0)串行接收中斷標志。TI (SCON.1)串行發(fā)送中斷標志。任務任務3 以定時方式控制流水燈以定時方式控制流水燈(1)中斷允許控制)中斷允許控制中斷允許寄存器IE 2. 中斷控制中斷控制D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)中斷允許寄存器IE對中斷的開放和關閉實行兩級控制。所謂兩級控制,就是有一個總開、關中斷控制位EA,

14、當EA0時,則屏蔽所有的中斷申請,即任何中斷申請都不接受;當EA1時,CPU開放中斷,但五個中斷源還要由IE的低5位的各對應控制位的狀態(tài)進行中斷允許控制。任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例3-1如果我們要設置外中斷1、定時器1中斷允許,其它不允許,請設置IE的相應值。位D7D6D5D4D3D2D1D0符號EAESET1EX1ET0EX0值10001100(MSB)AFH AEH ADH ACH ABH AAH A9H A8H(LSB)(a)SFR賦值IE=0 x8c(b)用位賦值EA1;CPU開中斷ET11;定時/計數器1允許中斷EX11;外中斷T1允許中斷任務任務3 以

15、定時方式控制流水燈以定時方式控制流水燈(2 2)中斷優(yōu)先級控制)中斷優(yōu)先級控制 MCS-51單片機有兩個中斷優(yōu)先級:單片機有兩個中斷優(yōu)先級:高級中斷和和低級中斷。 每一個中斷源都可以通過編程確定為高優(yōu)先級中斷或低優(yōu)先每一個中斷源都可以通過編程確定為高優(yōu)先級中斷或低優(yōu)先級中斷。級中斷。 若若CPU當前正在為低優(yōu)先級中斷服務,在開中斷的條件下,當前正在為低優(yōu)先級中斷服務,在開中斷的條件下,它能被另一個高優(yōu)先級中斷請求所中斷,轉去為高級中斷服它能被另一個高優(yōu)先級中斷請求所中斷,轉去為高級中斷服務,再返回到被中斷了的低級中斷的服務程序,這即為務,再返回到被中斷了的低級中斷的服務程序,這即為中斷嵌套。

16、任務任務3 以定時方式控制流水燈以定時方式控制流水燈中斷嵌套過程中斷嵌套過程CPU執(zhí)行執(zhí)行高級中斷高級中斷服務服務高級中斷請求高級中斷請求返回低級中斷程序返回低級中斷程序返回主程序返回主程序響應高級中斷響應高級中斷低級中斷請求低級中斷請求CPU執(zhí)行執(zhí)行低級中斷低級中斷響應低級中斷響應低級中斷CPU在執(zhí)行在執(zhí)行的主程序的主程序任務任務3 以定時方式控制流水燈以定時方式控制流水燈中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IPIPD7D6D5D4D3D2D1D0PSPT1PX1PT0PX0(MSB)BFH BEH BDH BCH BBH BAH B9H B8H(LSB) 專用寄存器專用寄存器IP為中斷優(yōu)先級寄

17、存器為中斷優(yōu)先級寄存器用戶可用軟件設定相應位為用戶可用軟件設定相應位為1,對應的中斷源被設置為,對應的中斷源被設置為高優(yōu)高優(yōu)先級先級,相應位為,相應位為0,對應的中斷源被設置為低優(yōu)先級,對應的中斷源被設置為低優(yōu)先級 系統復位時,均為低優(yōu)先級系統復位時,均為低優(yōu)先級 該寄存器可以位尋址該寄存器可以位尋址任務任務3 以定時方式控制流水燈以定時方式控制流水燈自然優(yōu)先權順序自然優(yōu)先權順序 中中 斷斷 源源同級內優(yōu)先權排列同級內優(yōu)先權排列外部中斷0中斷(IE0)定時器/計數器0中斷(TF0)外部中斷1中斷(IE1)定時器/計數器1中斷(TF1)串行接口中斷(TI/RI) 最 高 最 低任務任務3 以定時

18、方式控制流水燈以定時方式控制流水燈MCS-51系列單片機中斷響應原則:系列單片機中斷響應原則:1)高級中斷請求可以中斷正在執(zhí)行的低級中斷。高級中斷請求可以中斷正在執(zhí)行的低級中斷。2)同級或低級中斷請求不能中斷正在執(zhí)行的中斷。同級或低級中斷請求不能中斷正在執(zhí)行的中斷。3)多個中斷源同時向多個中斷源同時向CPU申請中斷,首先響應優(yōu)先級別最高申請中斷,首先響應優(yōu)先級別最高的中斷請求;多個同級中斷源同時向的中斷請求;多個同級中斷源同時向CPU申請中斷,申請中斷,CPU通過通過內部硬件查詢,按自然優(yōu)先級確定優(yōu)先響應哪一個中斷請求。內部硬件查詢,按自然優(yōu)先級確定優(yōu)先響應哪一個中斷請求。任務任務3 以定時方

19、式控制流水燈以定時方式控制流水燈解:IP的首3位沒用,可任意取值,設為000,后面根據要求寫就可以了。位位D7D6D5D4D3D2D1D0符號符號XXXPSPT1PX1PT0PX0值值00000110實例實例3-2 3-2 設有如下要求,將設有如下要求,將T0T0、外中斷、外中斷1 1設為高優(yōu)先級設為高優(yōu)先級,其它為低優(yōu)先級,求,其它為低優(yōu)先級,求IPIP的值。的值。IP的值就是的值就是06H。任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例3-3 3-3 在上例中,如果在上例中,如果5 5個中斷請求同時發(fā)生個中斷請求同時發(fā)生,求中斷響應,求中斷響應的次序。的次序。解:響應次序為解

20、:響應次序為定時器定時器0外中斷外中斷1外中斷外中斷0實時器實時器1串行串行中斷。中斷。 位位D7D6D5D4D3D2D1D0符號符號XXXPSPT1PX1PT0PX0值值00000110任務任務3 以定時方式控制流水燈以定時方式控制流水燈(1)中斷響應的時序)中斷響應的時序任務任務3 以定時方式控制流水燈以定時方式控制流水燈 沒有同級或高優(yōu)先級的中斷正在處理; 正在執(zhí)行指令必須執(zhí)行完最后一個機器周期(換言之, 正在執(zhí)行的指令完成前, 任何中斷請求都得不到響應); 若正在RETI或讀寫IE或IP寄存器,則必須執(zhí)行完當前指令的下一條其它指令之后才會響應。 任務任務3 以定時方式控制流水燈以定時方

21、式控制流水燈單片機一旦響應中斷請求單片機一旦響應中斷請求, 就由硬件完成以下功能就由硬件完成以下功能: 自動清除相應的中斷請求標志位(串行口中斷請求標自動清除相應的中斷請求標志位(串行口中斷請求標志志RI和和TI除外)除外); 保護斷點和現場,把被響應的中斷源所對應的中斷服保護斷點和現場,把被響應的中斷源所對應的中斷服務程序的入口地址(中斷矢量)送入務程序的入口地址(中斷矢量)送入PC, 從而轉入相應的中從而轉入相應的中斷服務程序。斷服務程序。 結束中斷服務程序,恢復斷點和現場,并返回響應中斷結束中斷服務程序,恢復斷點和現場,并返回響應中斷之前的程序繼續(xù)執(zhí)行。之前的程序繼續(xù)執(zhí)行。任務任務3 以

22、定時方式控制流水燈以定時方式控制流水燈3.1.3 3.1.3 中斷服務函數中斷服務函數C51編譯器支持在編譯器支持在C語言源程序中直接編寫語言源程序中直接編寫8051單片機的中斷服務函數,從而減輕使用匯編語言單片機的中斷服務函數,從而減輕使用匯編語言的繁瑣程度,提高了開發(fā)效率。的繁瑣程度,提高了開發(fā)效率。任務任務3 以定時方式控制流水燈以定時方式控制流水燈1.1.中斷服務函數的一般形式中斷服務函數的一般形式void 函數名(void) interrupt m unsing n代表中斷號,是一個常量,取值范圍是0-31。C51編譯器允許32個中斷,從8m+3處產生中斷向量 代表中斷函數將要選擇使

23、用的寄存器組,也是一個常量,取值范圍是03。 任務任務3 以定時方式控制流水燈以定時方式控制流水燈程序存儲器程序存儲器ROM0000H:復位后,程序的入口地址(PC=0000H)0023H:串行口中斷入口(中斷號m=4)0003H:外部中斷0入口(中斷號m=0)000BH:定時器/計數器0中斷入口(中斷號m=1)0013H:外部中斷1入口(中斷號m=2)001BH:定時器1 /計數器中斷入口(中斷號m=3)002BHMCS-51MCS-51單片機中斷入口單片機中斷入口8字節(jié)任務任務3 以定時方式控制流水燈以定時方式控制流水燈關于關于USING的說明的說明 using不僅可以用于中斷服務函數的定

24、義中,也可以用于普不僅可以用于中斷服務函數的定義中,也可以用于普通的內部函數,但不能用于外部函數。通的內部函數,但不能用于外部函數。 就中斷服務函數而言就中斷服務函數而言 如果不使用如果不使用using,則在進入中斷服務函數的時候,中斷,則在進入中斷服務函數的時候,中斷函數中所用到的全部工作寄存器都要入棧,函數返回之前函數中所用到的全部工作寄存器都要入棧,函數返回之前所有的寄存器內容出棧;所有的寄存器內容出棧; 如果使用如果使用using,則在進入中斷服務函數的時候,只將當,則在進入中斷服務函數的時候,只將當前工作寄存器組入棧,用前工作寄存器組入棧,用using指定的工作寄存器組的內指定的工作

25、寄存器組的內容不變也不入棧,函數返回之前將被保護的工作寄存器組容不變也不入棧,函數返回之前將被保護的工作寄存器組出棧。出棧。任務任務3 以定時方式控制流水燈以定時方式控制流水燈 (1)使用using可縮減中斷服務函數的入棧操作時間,因此可以使中斷得到更及時的處理;但同時,使用using要十分小心,要保證寄存器組切換在所控制的區(qū)域內,否則會導致錯誤。 (2)中斷函數的編寫包括兩部分:中斷源的初始化函數和中斷服務函數。概括地說,中斷源初始化函數就是對中斷源所需要的一些變量進行設置,其形式與其他普通函數一樣一般在主函數里實現;而中斷服務函數就是規(guī)定系統在發(fā)生相應的中斷的時候要執(zhí)行哪些操作。 (3)中

26、斷函數的調用過程與一般函數調用相似,但一般函數是程序中事先安排好的;而何時調用中斷函數事先無法確定,調用中斷函數的過程是由硬件自動完成的。任務任務3 以定時方式控制流水燈以定時方式控制流水燈中斷函數既不能進行參數傳遞,也沒有返回值,因中斷函數既不能進行參數傳遞,也沒有返回值,因此,中斷函數的形式參數列表和函數類型標識符名此,中斷函數的形式參數列表和函數類型標識符名均為均為void。定時器定時器0的定義方式:的定義方式:void intr_time0(void) interrupt 1 任務任務3 以定時方式控制流水燈以定時方式控制流水燈2.2.中斷函數的編寫中斷函數的編寫(1)中斷的初始化 所

27、謂初始化,是對將要用到的MCS-51系列單片機內部部件或擴展芯片進行初始工作狀態(tài)設定。針對中斷來說,就是對IE,IP進行初始化編程,實現如下要求:1)CPU開中斷與關中斷。2)某個中斷源中斷請求的允許和禁止(屏蔽)。3)各中斷源優(yōu)先級別的設定。4)外部中斷請求的觸發(fā)方式。任務任務3 以定時方式控制流水燈以定時方式控制流水燈(2)(2)中斷服務函數中斷服務函數中斷服務函數就是規(guī)定系統在發(fā)生相應的中斷的中斷服務函數就是規(guī)定系統在發(fā)生相應的中斷的時候要執(zhí)行哪些操作。時候要執(zhí)行哪些操作。 任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例【實例實例3-4】P1.3外接一個揚聲器,當與外接一個

28、揚聲器,當與P3.3(外(外部中斷部中斷1輸入引腳)變?yōu)榈碗娖綍r,揚聲器發(fā)聲。輸入引腳)變?yōu)榈碗娖綍r,揚聲器發(fā)聲。任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例3-43-4#includesbit p13=P13;void main() IT0=0; EA=1;EX1=1; p13=1; while(1);void isr_int1() interrupt 2int i; p13=p13; for(i=1000;i0;i-);任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例3-5:3-5:電平觸發(fā)與跳變觸發(fā)的比較電平觸發(fā)與跳變觸發(fā)的比較#include#include

29、void serial_init();void isr_int0();main() serial_init(); IT0=0;EA=1;EX0=1; while(1);void isr_int0() interrupt 0 printf(External interrupt 0 respondedn); void serial_init() SCON=0X52; MOD=(TMOD&0X0F)|0X20; TH1=221; TR1=1;任務任務3 以定時方式控制流水燈以定時方式控制流水燈電平觸發(fā)的輸出情況電平觸發(fā)的輸出情況任務任務3 以定時方式控制流水燈以定時方式控制流水燈跳變觸發(fā)輸出

30、情況跳變觸發(fā)輸出情況main() serial_init(); IT0=1; EA=1;EX0=1; while(1);任務任務3 以定時方式控制流水燈以定時方式控制流水燈案例案例4 4:蒸汽鍋爐參數越限報警控制:蒸汽鍋爐參數越限報警控制液位上、下限SL1、SL2開關取自“色帶指示報警儀”,分別接P1.3,P1.2。蒸汽壓力下限SP開關接P1.1。爐堂溫度上限ST開關接P1.0。P1.7P1.4輸出接發(fā)光二極管,與4個參數對應,越限時則相應的LED點亮。任務任務3 以定時方式控制流水燈以定時方式控制流水燈#includevoid isr_int0(void);main() IT0=0; EX0

31、=1; EA=1; while(1) 主函數(初始化)主函數(初始化)void isr_int0(void) interrupt 0 char temp1; P1 = 0 x0ff; temp1 = P1; temp1 =temp10;i-):任務任務3 以定時方式控制流水燈以定時方式控制流水燈3.2.1 3.2.1 定時器定時器/ /計數器的結構計數器的結構3.2.23.2.2 定時器定時器/ /計數器的計數器的工作工作方式方式任務任務3 以定時方式控制流水燈以定時方式控制流水燈3.2.1 3.2.1 定時器定時器/ /計數器的結構計數器的結構可編程定時,通過對系統時鐘脈沖計數而獲得延可編程

32、定時,通過對系統時鐘脈沖計數而獲得延時,時,MCS51定時定時/計數器的優(yōu)點:計數器的優(yōu)點:可實現定時、計數功能,有利用實時控制不占用CPU時間定時精度高,修改方便任務任務3 以定時方式控制流水燈以定時方式控制流水燈1. 1. 定時定時/ /計數器的組成計數器的組成定時/計數器的結構框圖 微微處處理理器器TH1TL1TH0TL0TCONTMOD工作工作方式方式工作工作方式方式T1T0P3.5(T1)P3.4(T0)任務任務3 以定時方式控制流水燈以定時方式控制流水燈 (1) (1)結構組成部分結構組成部分 兩個16位的二進制定時/計數器T0、T1T0/T1分別由兩個8位的計數器組成,均屬SFR

33、寄存器T0由TH0、TL0構成,字節(jié)地址為8CH、8AHT1由TH1、TL1構成,字節(jié)地址為8DH、8BH;相關的控制寄存器方式寄存器TMOD控制寄存器TCON任務任務3 以定時方式控制流水燈以定時方式控制流水燈定時功能定時功能 對片內機器周期進行計數,即每個機器周期對片內機器周期進行計數,即每個機器周期產生一產生一 個計數脈沖,計數加個計數脈沖,計數加1。實時控制、實時采樣、定時控制等。實時控制、實時采樣、定時控制等。振蕩器振蕩器12 加加 1計數器計數器TFx申請申請中斷中斷TX端端C/T=0C/T=1控制信號控制信號TRx(2 2)工作原理)工作原理任務任務3 以定時方式控制流水燈以定時

34、方式控制流水燈(2 2)工作原理)工作原理計數功能計數功能 對片外從對片外從T0(P3.4)、)、T1(P3.5)引腳輸入的外)引腳輸入的外部脈沖信號進行計數,下降沿計數加部脈沖信號進行計數,下降沿計數加1。計數頻率為。計數頻率為晶振頻率的晶振頻率的1/24。生產線上產品計數、檢測電機轉速等功能。生產線上產品計數、檢測電機轉速等功能。振蕩器振蕩器12 加加 1計數器計數器TFx申請申請中斷中斷TX端端C/T=0C/T=1控制信號控制信號TRx任務任務3 以定時方式控制流水燈以定時方式控制流水燈定時定時/ /計數器初值預置計數器初值預置初值X的計數方法(設最大值為(設最大值為 M, 計數值為計數

35、值為 N, 初值為初值為X, Tcy=12晶振頻率)晶振頻率)定時狀態(tài): XM定時時間/Tcy計數狀態(tài) : XMN要求檢測到100個脈沖,發(fā)中斷請求,通知CPU,選計數功能,計數初值為156設定時/計數器為8位加1計數器,要求定時每隔100s時間,發(fā)一次中斷請求(設機器周期1s),選定時功能,計數初值為156任務任務3 以定時方式控制流水燈以定時方式控制流水燈2. 2. 方式控制寄存器方式控制寄存器TMODTMODSFR寄存器,地址89H控制T0、T1的工作方式僅可字節(jié)尋址僅可字節(jié)尋址T/CGATEM1 M0GATEM1M0T/C T1方式控制 T0方式控制任務任務3 以定時方式控制流水燈以定

36、時方式控制流水燈M1和和M0:工作方式選擇位:工作方式選擇位 M1 M0方式方式說明說明0 0013位計數器(位計數器(THTH的高的高8 8位和位和TLTL的低的低5 5位位)0 1116位計數器位計數器1 02自動重裝入初值的自動重裝入初值的8 8位計數器位計數器1 13定時器定時器0 0:分成兩個獨立的:分成兩個獨立的8 8位計數器位計數器定時器定時器1 1: 停止計數停止計數任務任務3 以定時方式控制流水燈以定時方式控制流水燈C/ 定時/計數功能選擇位。 為“0”,定時模式 為“1”,計數模式GATE:門控位,定義T1/T0的啟動方式,GATE=0,非門控方式(內部啟動): TR0/1

37、=1,啟動定時器工作; TR0/1 =0,停止定時器工作。GATE=1,門控方式(外部啟動) TR0/1=1且引腳INT0/1 =1才啟動。T任務任務3 以定時方式控制流水燈以定時方式控制流水燈SFR寄存器,地址寄存器,地址88H即參與定時控制又參與中斷控制即參與定時控制又參與中斷控制與定時控制相關的有與定時控制相關的有4位位TF1/TF0:當:當T1/T0的計數器計數溢出時,該位置的計數器計數溢出時,該位置“1”;TR1/TR0:T1/T0運行控制位。軟件將其置運行控制位。軟件將其置“1”時,啟動時,啟動T1/T0工作工作TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 8FH

38、 8EH 8DH 8CH 8BH 8AH 89H 88H 任務任務3 以定時方式控制流水燈以定時方式控制流水燈M1M0=00 ;作定時器:TMOD=00000000=00H作計數器:TMOD=00000100=04H13位計數器;位計數器; TH:8位 TL:低5位,高3位不用。 1. 工作方式工作方式0任務任務3 以定時方式控制流水燈以定時方式控制流水燈任務任務3 以定時方式控制流水燈以定時方式控制流水燈計數初值最大計數值為213=8192定時時間:T =(213-T0的初值)Tcy 計數個數:S=213 - T0的初值 任務任務3 以定時方式控制流水燈以定時方式控制流水燈(1)向TMOD寄

39、存器中寫入工作方式控制字(2)向定時/計數器TH0、TL0(或TH1、 TL1)裝入初值(3)啟動定時/計數器(置位TR0/TR1)(4)如采用中斷方式,置位ET0(ET1)、 EA、IP等中斷寄存器任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例3-63-6:已知單片機晶振頻率:已知單片機晶振頻率6MHz6MHz,利用,利用T0T0的方的方式式0 0在在P1.0P1.0引腳輸出周期為引腳輸出周期為500500usus的方波的方波解:解:1)方波波形如圖所示)方波波形如圖所示 2)TMOD初始化初始化 00H 3)計數初值:)計數初值: 計數初值計數初值=213 -欲計數脈沖數欲計

40、數脈沖數=213 -T/ Tcy =213-250/2=1F83H =00011111100 00011B TH1=0 xFC,TL1=0 x03 4)TCON初始化,初始化,TR01任務任務3 以定時方式控制流水燈以定時方式控制流水燈 #includesbit p10=P10;main() TMOD=0; TH0=0XFC; TL0=0X03; TR0=1; while(1) while(TF0=0); p10=p10; TH0=0XFC; TL0=0X03; TF0=0; 任務任務3 以定時方式控制流水燈以定時方式控制流水燈 #includesbit p10=P10;void isr_t0

41、();main()TMOD=0; TH0=0XFC; TL0=0X03; TR0=1; EA=1;ET0=1; while(1);void isr_t0( ) interrupt 1 p10=p10; TH0=0XFC; TL0=0X03;任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例3-7 單片機晶振頻率12MHz,利用T0的方式0實現1s延時,每隔1s鐘使P1.0引腳翻轉一次。 1)TMOD初始化初始化 00H 2)計數初值:)計數初值: 定時時間:定時時間:tmax=81921us=8.192ms ;取;取5ms 1秒延時實現:秒延時實現:5ms延時延時200次次 T0 的的

42、初值:初值: =213-5000s/1s =3192 =0C78H=000 01100011 11000B TH0=63H,TL0=18H任務任務3 以定時方式控制流水燈以定時方式控制流水燈源程序清單:源程序清單:#includevoid isr_time0(void);sbit P10=P10;unsigned int counter=200;void main()TMOD = 0X00; TH0=0X63;TL0=0X18; TR0=1; EA=1;ET0=1; while(1);void isr_time0() interrupt 1 counter-; if(!counter) cou

43、nter=200; P10 =P10; TH0=0X63; TL0=0X18; 任務任務3 以定時方式控制流水燈以定時方式控制流水燈M1M0=01作定時器:TMOD=00000000=01H作計數器:TMOD=00000100=05H16位計數器,邏輯結構框圖如下:位計數器,邏輯結構框圖如下:振蕩器振蕩器12TF0中斷中斷T0C/T=0C/T=1GATEINT0端端TR0 TH0(8位位) TL0(8位位)控制控制l&lEAET0&任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例3-8 3-8 利用利用T0T0的方式的方式1 1完成例完成例3-63-6的功能(即在的

44、功能(即在P1.0P1.0引腳輸出周期為引腳輸出周期為500us500us的方波)。的方波)。1)TMOD初始化初始化 01H 2)計數初值:)計數初值: 計數初值計數初值=216 -欲計數脈沖數欲計數脈沖數=216 -T/ Tcy =216-250/2 =65411=FF83H 因此因此TH1=0 xFF,TL1=0 x833)TCON初始化,初始化,TR014)開中斷:)開中斷:EA=1;ET0=1任務任務3 以定時方式控制流水燈以定時方式控制流水燈源程序清單源程序清單/主函數主函數#includevoid isr_time0(void);sbit P10=P10;void main()T

45、MOD = 0X01; TH0=-1258; TL0=-125; TR0=1;EA=1;ET0=1; while(1);小技巧:小技巧:實際應用中,在利用C51編程時,計數初值可以直接用如下方法表示:TH0=-1258; /取計數初值的高8位(0FFH)TL0=-125; /自動取計數初值的低8位(83H)不需要計算出具體的計數初值。但讀者要清楚計算計數初值的原理。/中斷服務函數中斷服務函數void isr_time0(void) interrupt 1 P10 = P10; TH0=-1258; TL0=-125;任務任務3 以定時方式控制流水燈以定時方式控制流水燈M1M0=10 作定時器:

46、TMOD=02H 作計數器:TMOD=06H自動重置初值的自動重置初值的8位計數器,邏輯結構如圖:位計數器,邏輯結構如圖:振蕩器振蕩器12TF0中斷中斷T0GATEINT0TR0 TL0(8位位) TH0(8位位)控制控制重 新重 新裝入裝入ll&C/T=0C/T=1&EAET0任務任務3 以定時方式控制流水燈以定時方式控制流水燈案例案例5 5 啤酒生產線自動裝箱控制啤酒生產線自動裝箱控制某啤酒自動生產線,每生產某啤酒自動生產線,每生產12瓶執(zhí)行裝箱操作,將生瓶執(zhí)行裝箱操作,將生產出的啤酒自動裝箱,用單片機實現該控制要求。產出的啤酒自動裝箱,用單片機實現該控制要求。任務任務3

47、以定時方式控制流水燈以定時方式控制流水燈解:如果啤酒生產線上裝有傳感裝置,每檢測解:如果啤酒生產線上裝有傳感裝置,每檢測一瓶啤酒就向單片機發(fā)送一個脈沖信號,使用一瓶啤酒就向單片機發(fā)送一個脈沖信號,使用計數功能就可實現該控制要求。計數功能就可實現該控制要求。1)TMOD初始化初始化 06H2)計數初值:)計數初值: TH0TL0 28120F4H任務任務3 以定時方式控制流水燈以定時方式控制流水燈程序清單程序清單#includevoid isr_time0(void);void main() TMOD=0 x06; TL0=0Xf4; TH0=0Xf4; TR0=1; ET0=1;EA=1; w

48、hile(1);void isr_time() interrupt 1 int i,time=600; P37=0; /驅動電機轉動驅動電機轉動 while(time -)/假設裝箱時間固定假設裝箱時間固定 for(i=500;i0;i-); P37=1; /裝箱結束電機停止轉動裝箱結束電機停止轉動任務任務3 以定時方式控制流水燈以定時方式控制流水燈4.4.工作方式工作方式3 3振蕩器振蕩器12TF1T1中斷中斷 TH0(8位位)TR1控制控制T0端端C/T=0C/T=1GATEINT0端端TR0振蕩器振蕩器12TF0T0中斷中斷 TL0(8位位)控制控制ll&EAET0僅作定時僅作定

49、時器用器用! !任務任務3 以定時方式控制流水燈以定時方式控制流水燈M1M0=11T0、T1的設置和使用不同的設置和使用不同T0兩個兩個8位的計數器位的計數器TL0:使用T0原有控制資源,功能與方式0、1相同。TH0:借用T1的TR1、TF1,只能對片內機器周期脈沖計數, 作8位定時器。T0初值計算完全同方式初值計算完全同方式 2。任務任務3 以定時方式控制流水燈以定時方式控制流水燈 T1仍然可工作于方式仍然可工作于方式02,C/ 控制位仍可使控制位仍可使T1工作在定時工作在定時器或計數器方式,由于其器或計數器方式,由于其TR1、TF1被被T0的的TH0占用,因而占用,因而計數溢出時只能將輸出

50、結果送至串行口,計數溢出時只能將輸出結果送至串行口,即用作串行口波特即用作串行口波特率發(fā)生器。率發(fā)生器。 T1工作于方式工作于方式2,因定時初值能自動恢復,用作波特率發(fā)生,因定時初值能自動恢復,用作波特率發(fā)生器。器。 因定時器因定時器1 1的的TR1被被占用,其啟動和關閉比較特殊占用,其啟動和關閉比較特殊: : 當設置好工作方式時,T1自動開始運行。 送入一個設置定時器1為方式3的方式字即可停止T1 。T任務任務3 以定時方式控制流水燈以定時方式控制流水燈實例實例3-9 3-9 已知系統晶振已知系統晶振12MHz12MHz,試用定時器,試用定時器0 0的方式的方式3 3實現實現1s1s的延時(

51、設每秒讓的延時(設每秒讓P0.0P0.0所接的發(fā)光二極管閃爍一次)所接的發(fā)光二極管閃爍一次) 。TMOD初始化初始化 07H TH0作為定時器,定時時間作為定時器,定時時間250us;初值;初值28250=06HT L 0 作 為 計 數 器 , 計 數作 為 計 數 器 , 計 數 2 0 0 次 ; 初 值次 ; 初 值 28200=38H因因250s*200=50ms,則需引進一個變量,則需引進一個變量,TL0計數滿后該變量加計數滿后該變量加1,直至,直至20則為則為1s任務任務3 以定時方式控制流水燈以定時方式控制流水燈主函數主函數#includesbit P00=P00;sbit P34=P34;unsigned char count;void delay();main() TMOD=7; TH0=0 x06; TL0=0 x38; TR0=1;TR1=

溫馨提示

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

評論

0/150

提交評論