單片微型計算機c第11講(機械)課件_第1頁
單片微型計算機c第11講(機械)課件_第2頁
單片微型計算機c第11講(機械)課件_第3頁
單片微型計算機c第11講(機械)課件_第4頁
單片微型計算機c第11講(機械)課件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、上節(jié)內(nèi)容回顧 MCS51單片機的中斷系統(tǒng) 中斷的概念及中斷的處理過程 中斷源、中斷的觸發(fā)方式、中斷屏蔽、中斷優(yōu)先級 中斷服務(wù)程序的編寫 76543210TCONTF1TR1 TF0TR0IE1IT1IE0IT0字節(jié)地址:88H 76543210IEEAESET1 EX1 ET0 EX0 字節(jié)地址:A8H 76543210IPPSPT1PX1PT0PX0 字節(jié)地址:B8H第11講教學(xué)目的和要求【教學(xué)目標】通過講述MCS-51單片機的定時器/計數(shù)器系統(tǒng)的電路結(jié)構(gòu)、特殊功能寄存器及功能和使用方法,使學(xué)生對定時、計數(shù)的使用和編程?!窘虒W(xué)重點】定時器/計數(shù)器的工作原理; 使用和編程方法;【教學(xué)難點】定時

2、和計數(shù)的應(yīng)用第七章 MCS-51的定時器/計數(shù)器7.1定時/計數(shù)器的結(jié)構(gòu)和工作原理單片機的應(yīng)用中,工業(yè)檢測、控制的許多場合需要用到計數(shù)或定時的功能。如生產(chǎn)過程中的計件、產(chǎn)生精確的定時時間等。采用軟件延時的方法較難產(chǎn)生精確的定時;另外容易被中斷等事件打斷,精確度與及時性難以保證。MCS51單片機提供兩個16位可編程的定時器/計數(shù)器T1和T0,當計數(shù)/定時值滿時,可采用中斷的方式通知單片機及時處理,實時性得到保證。計數(shù)與定時的區(qū)別 計數(shù)功能指的是對外來脈沖進行計數(shù)。脈沖頻率可不固定,寬度可以不一致。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。 定時功能指的是對內(nèi)部脈沖計數(shù)。故對固定頻率的脈沖

3、計數(shù)即可完成定時的功能。每經(jīng)過1個機器周期,計數(shù)值加1。如單片機采用12MHZ的晶振,則計數(shù)頻率為1MHZ。一個計數(shù)周期一個定時周期定時器/計數(shù)器的硬件結(jié)構(gòu) TH1、TL1、TH0、TL0:8位寄存器,用于存放計數(shù)器1、0計數(shù)初值的高、低位。 TCON:定時器/計數(shù)器控制寄存器 TMOD:工作方式控制寄存器計數(shù)器/定時器的工作原理振蕩器 定時器模式 對內(nèi)部機器周期計數(shù)。計數(shù)值乘以機器周期就是定時時間。 引腳C/#T(為1計數(shù),為0定時)為0。C/ T=0控制器T1/T0TF中斷加1計數(shù)溢出位&TRX+GATEX/INTX TRX=1,GATEX=0時,軟件方式啟動定時器。工作模式不同,

4、計數(shù)數(shù)據(jù)的位數(shù)不同 12計數(shù)器/定時器的工作原理TX引腳 計數(shù)器模式 是對外部事件計數(shù)。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。 引腳C/#T(為1計數(shù),為0定時)為1。C/ T=1控制器T1/T0TF中斷加1計數(shù)溢出位&TRX+GATEX/INTX TRX=1,GATEX=1,且,且/INT=1時,硬件啟動定時器工作模式不同,計數(shù)數(shù)據(jù)的位數(shù)不同7.2定時/計數(shù)器的控制TCON:計數(shù)器控制寄存器。字節(jié)當中的位可以進行位尋址,也可通過字節(jié)地址訪問。pTF1、TF0:計數(shù)溢出標志位。當計數(shù)值滿后,該位置1;使用查詢方式時,可查詢該位狀態(tài)后,由用戶程序清零。使用中斷方式時,進入中斷

5、服務(wù)程序后,由硬件清零。pTR1、TR0:計數(shù)運行控制位。置1/清0可以啟動/停止計數(shù)器工作??赏ㄟ^軟件設(shè)置。 76543210TCONTF1TR1 TF0TR0IE1IT1IE0IT0字節(jié)地址:88H工作方式寄存器TMODTMOD:計數(shù)器工作方式寄存器。字節(jié)當中的位不能進行位尋址。GATE:門控位pGATE=0時,僅依靠運行控制位TRX來啟動定時器;pGATE=1時,除TRX=1外,還需用用外中斷引腳/INTX上的高電平來啟動定時器。 76543210TMODGATEC/#TM1M0GATEC/#TM1M0字節(jié)地址:89HT1方式字段T0方式字段工作方式寄存器TMODC/#T:模式選擇位pC

6、/#T=0時,定時模式;pC/#T=1時,計數(shù)模式。M1M0:工作方式選擇位。 76543210TMODGATEC/#TM1M0GATEC/#TM1M0字節(jié)地址:89HT1方式字段T0方式字段組合值工作方式M1M0=00方式0,為13位定時器/計數(shù)器M1M0=01方式1,為16位定時器/計數(shù)器M1M0=10方式2,8位自動重裝的定時器/計數(shù)器M1M0=11方式3,僅適用于T0,T0分成兩個8位計數(shù)器,T1停止計數(shù)。7.3 定時/計數(shù)器的工作方式T0有方式0、1、2、3;T1有方式0、1、2。方式0:13位計數(shù)器/定時器,計數(shù)范圍1213計數(shù)初值的計算 若T0工作在方式0,當計滿20次時向CPU

7、發(fā)出中斷申請,其計數(shù)初值X應(yīng)為多少?置入后TH0與TL0的值分別為多少? 問題:13位計數(shù)器何時產(chǎn)生溢出?111113個1+1 計數(shù)1次,初值應(yīng)為213-1 計數(shù)2次,初值應(yīng)為213-2 計數(shù)初值的計算 若T0工作在方式0,當計滿20次時向CPU發(fā)出中斷申請,其計數(shù)初值X應(yīng)為多少?置入后TH0與TL0的值分別為多少? 方式1:公式法 由計數(shù)量程(28、213、216)減去計數(shù)值,將其轉(zhuǎn)換成二進制即可。 上題中,計數(shù)值為20,根據(jù)方法,計數(shù)初值X=213-20D=8192-20=8172,再轉(zhuǎn)換成十六進制1FECH,即TH0=0FFH,TL0=0CH。麻麻 煩煩改進 若T0工作在方式0,當計滿2

8、0次時向CPU發(fā)出中斷申請,其計數(shù)初值X應(yīng)為多少?置入后TH0與TL0的值分別為多少? 上式中X=213-20D 方法2:求補法取計數(shù)值的二進制形式,逐位取反,最低位加1即可+1 0 0000 0001 01001 1111 1111 1111+1 0 0000 0001 01001 1111 1111 1111親,你可曾想起了我?計數(shù)/定時初值的計算總結(jié) 根據(jù)計數(shù)器的工作方式,確定計數(shù)的位數(shù)(13、16、8) 對給定的計數(shù)值,轉(zhuǎn)換成二進制形式 位數(shù)不足的情況下,前面補足0 從后數(shù)第一個1,該1及后面的0保持不變,該1前面的均取反即可計數(shù)初值。 【例】方式0下,計數(shù)130,求其初值。13010

9、000010B0 0000 1000 0010B1 1111 0111 1110BTH0=0FBH,TL0=1EH方式1(*)方式1:16位計數(shù)器/定時器,計數(shù)范圍1216注意:方式0的計數(shù)初值高8位和低5位確定麻煩 ,實際應(yīng)用中常由16位的方式1取代。舉例 若要求定時器T0工作于方式1,定時時間為1ms,當晶振為6 MHz時,求送入TH0和TL0的計數(shù)初值各為多少?應(yīng)怎樣送入TH0和TL0? 【解】機器周期頻率為6MHZ/12=0.5MHZ,Tcy為2us。 定時時間為1ms,則需要的時鐘周期數(shù)為1ms/2us=500。 計數(shù)器的計數(shù)值為500=1 1111 0100 B 根據(jù)求補法,得到的

10、計數(shù)初值為0FE0CH 高位送TH0,低位送TL0,故TH0=0FEH,TL0=0CH。方式2(*)方式2:帶自動重裝功能的8位計數(shù)器/定時器,計數(shù)范圍1256 計數(shù)溢出的同時,自動重裝計數(shù)初值。 特別適合于脈沖信號發(fā)生器 賦初值時,高低8位需要同時賦值方式3 僅計數(shù)器T0可工作在方式3,計數(shù)器T1不允許工作在方式3 不要求掌握該方式的工作原理及應(yīng)用。定時器工作方式小結(jié)n 重點掌握方式1和方式2n 了解工作方式中總共有四種即可pTMOD控制字中M1M0位控制計數(shù)方式pT0可以工作在方式03pT1只能工作在方式02定時器工作方式小結(jié)n 賦初值p除方式2外,其它模式下定時器溢出后,如想重新計數(shù)必須

11、用軟件賦初值(若采用中斷方式,在中斷服務(wù)程序中要有賦初值語句)。定時器工作方式小結(jié)n 初始化編程p初始化程序應(yīng)完成:對TMOD賦值,以確定T0和T1的工作方式;求初值,并寫入TH0、TL0或TH1、TL1;中斷方式時,要對IE賦值,開放中斷;查詢方式時,檢測TF0或TF1,為1代表計時到,將其清0;使TR0或TR1置位,啟動定時/計數(shù)器工作。7.4 定時/計數(shù)器的應(yīng)用舉例p外部中斷擴展例:用T0擴展一個外部中斷源。將T0設(shè)置為計數(shù)器方式,按方式2工作,TH0、TL0的初值均為0FFH,T0允許中斷,CPU開放中斷,試完成其初始化編程。 76543210TMODGATEC/#TM1M0GATEC

12、/#TM1M0字節(jié)地址:89HT1方式字段T0方式字段 76543210IEEAESET1EX1ET0EX0字節(jié)地址:A8HMOV TMOD,#06H ;置T0為計數(shù)器方式2MOV TL0,#0FFH ;置計數(shù)初值MOV TH0,#0FFHSETB EA ;CPU開中斷SETB ET0 ;允許T0中斷 SETB TR0 ;啟動T0工作T0外部引腳上出現(xiàn)一個下降沿信號時,TL0計數(shù)加1,直到產(chǎn)生溢出,將TF0置1,向CPU發(fā)出中斷請求 應(yīng)用舉例計數(shù)應(yīng)用【例】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務(wù)。用T0完成計數(shù),用P1.0發(fā)出控制信號。 分析 流水線是

13、連續(xù)工作的,因此計數(shù)也非一次性的。選用方式2。 題中選定計數(shù)器為T0,則控制字為06H。即: M1M0=10,GATE=0 ,C/#T=1應(yīng)用舉例計數(shù)應(yīng)用【例】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務(wù)。用T0完成計數(shù),用P1.0發(fā)出控制信號。 初值的確定 工作在方式2,即8位重裝的計數(shù)器 計數(shù)值為24=11000B 求補可得11101000B=E8H。 將TH0和TL0均賦初值E8 MOV TH0/TL0,#E8H應(yīng)用舉例計數(shù)應(yīng)用【例】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務(wù)。用T0完成計數(shù),用P1.0發(fā)出控制

14、信號。 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100HMAIN:MOV TMOD,#06H ;置T0計數(shù)方式2 MOV TH0,#0E8H;裝入計數(shù)初值 MOV TL0,#0E8H SETB ET0 ;T0開中斷SETB EA ;CPU開中斷SETB TR0 ;啟動T0SJMP $ ;等待中斷DVT0:SETB P1.0 NOP NOP CLR P1.0 RETI END應(yīng)用舉例定時應(yīng)用n定時時間較小時,一般直接采用方式1完成定時任務(wù)。若晶振頻率fosc=12MHZ,則采用方式1最大的延長時間為:65536/12M/12=65536us=65

15、.536ms【例】利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為12 MHz。P1.020ms每隔10ms的時間翻轉(zhuǎn)P1.0一次即可應(yīng)用舉例定時應(yīng)用【例】利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為12 MHz。分析:設(shè)定初值,使T0每10ms發(fā)出一次中斷。中斷服務(wù)程序中將P1.0取反,重裝計數(shù)值,啟動計數(shù)器返回后重復(fù)上述步驟。應(yīng)用舉例定時應(yīng)用【例】利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms

16、的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為12 MHz。確定工作方式控制字TMOD:T0定時C/#T=0,通過程序啟動計數(shù),故GATE=0;方式1,則M1M0選擇01。故控制字為01H 。 76543210TMODGATEC/#TM1M0GATEC/#TM1M0字節(jié)地址:89H應(yīng)用舉例定時應(yīng)用【例】利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為12 MHz。計算初值計數(shù)值=10ms/1us=10000=4*2500=16*625=16*(512+127-8-4-2)1001110001B10011100010000B

17、求補1101100011110000B=D8F0H應(yīng)用舉例定時應(yīng)用 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100HMAIN:MOV TMOD,#01H ;置T0方式1 MOV TH0,#0D8H;裝入計數(shù)初值 MOV TL0,#0F0H SETB ET0 ;T0開中斷 SETB EA ;CPU開中斷 SETB TR0 ;啟動T0 SJMP $ ;等待中斷DVT0:CPL P1.0 MOV TH0,#0D8H MOV TL0,#0F0H RETI END中斷服務(wù)程序 應(yīng)用舉例定時應(yīng)用【例】利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P

18、1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為12 MHz。此題若不采用中斷方式,采用程序查詢方式如何實現(xiàn)? 7654TCON88HTF1TR1 TF0TR0開始設(shè)置計數(shù)初值啟動計數(shù)器設(shè)置TMODP1.0取反清除TF0TF0=1NY應(yīng)用舉例定時應(yīng)用 ORG 0000H LJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 0100H ;主程序MAIN:MOV TMOD,#01H ;置T0工作于方式1 LOOP:MOV TH0,#0D8H ;裝入計數(shù)初值 MOV TL0,#0F0H SETB TR0 ;啟動定時器T0 JNB TF0,$ ;TF0=0,查詢等待 CLR TF0 ;清TF0 CPL P1.0 ;P1.0取反輸出 SJMP LOOP END應(yīng)用舉例定時應(yīng)用n定時時間較大 (大于65ms)時,有兩種方法解決p一是采用1個定時器定時一定的間隔(如20ms),然后用軟件進行計數(shù);p二是采用2個定時器級聯(lián),其中一個定時器用來產(chǎn)生周期信號(如20ms為周期),然后將該信號送入另一個計數(shù)器的外部脈沖輸入端進行脈沖計數(shù)。應(yīng)用舉例較長時間定時應(yīng)用 編寫程序,實現(xiàn)用定時/計數(shù)器T0定時,使P1.7引腳輸出周期為2s的方波。設(shè)系統(tǒng)的晶振頻率為12MHz。分析: Tcy=1us,計數(shù)周期為2S,現(xiàn)有條件下計數(shù)值為2s/1us=2*106655

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論