《單片機原理及工程應用》課件-第4章 定時器應用舉例(第3次課)應用舉例_第1頁
《單片機原理及工程應用》課件-第4章 定時器應用舉例(第3次課)應用舉例_第2頁
《單片機原理及工程應用》課件-第4章 定時器應用舉例(第3次課)應用舉例_第3頁
《單片機原理及工程應用》課件-第4章 定時器應用舉例(第3次課)應用舉例_第4頁
《單片機原理及工程應用》課件-第4章 定時器應用舉例(第3次課)應用舉例_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4.2.4定時器/計數器的應用

由于定時器/計數器的功能是由軟件編程實現的,所以,一般在使用定時器/計數器前都要對其進行初始化。所謂初始化實際上就是確定相關寄存器的值。初始化步驟如下:1.確定工作方式——對TMOD賦值。根據任務性質明確工作方式及類型,從而確定TMOD寄存器的值。如:要求定時器/計數器T0完成16位定時功能,TMOD的值就應為00000001B,用指令MOVTMOD,#01H即可完成工作方式的設定。2.預置定時器/計數器的計數初值——寫入計數初值

X=2n-N=2n-t/T直接將計數初值寫入TH0、TL0或TH1、TL1。3.根據需要開放定時器/計數器中斷——直接對IE寄存器賦值。(中斷入口設置、中斷服務程序設計、中斷優(yōu)先級IP)4.啟動定時/計數器工作——將TR0或TR1置“1”。例4.2.1方式0的應用。設系統(tǒng)時鐘頻率為12MHz,利用定時器/計數器T0,在P1.0引腳輸出周期為2ms的方波。解:2ms的方波可由間隔1ms的高低電平相間而成,因而只要每1ms對P1.0取反一次即可得到這個方波。選用定時器/計數器T0工作為定時方式來實現1ms的定時。TMOD初始化:TMOD=00000000B=00H機器周期為1μs,則計數初值X為:X=2n–t/T=213-1ms/1μs=8192-1000=7192=1110000011000B13位的計數初值的高8位寫入TH0,低5位二進制數前要加3個0,湊成8位二進制數后寫入TL0。向TH0寫入的數據是:11100000B(E0H),

向TL0寫入的數據是:00011000B(18H)。

IE初始化:開放中斷,EA=1,允許定時器T0中斷,ET0=1TCON初始化:TR0=1,啟動T0請各位完成程序設計參考程序如下: ORG0000H LJMPSTART ;復位入口

ORG000BH LJMPT0SUB ;T0中斷入口

ORG0040HSTART: MOVSP,#60H ;初始化程序

MOVTMOD,#00H ;T0為方式0定時 MOVTH0,#0E0H ;T0賦初值

MOVTL0,#18H MOVIE,#82H

SETBTR0 ;啟動T0 SJMP$ ;等待中斷T0SUB:MOVTH0,#0E0H ;T0中斷服務子程序

MOVTL0,#18H CPLP1.0 ;輸出周期為2ms的方波

RETI ;中斷返回 END例:設系統(tǒng)時鐘頻率為12MHz,利用定時器/計數器T0在引腳P1.0和P1.1分別輸出周期為2ms和6ms的方波。解:在上例中,T0每1ms中斷一次,對P1.0取反一次得周期為2ms的方波。只要對T0中斷服務程序略加修改,每計數(中斷)3次,對P1.1取反一次即可得到周期為6ms的方波。請各位完成程序設計參考程序如下: ORG0000H LJMPSTART

ORG000BH LJMPT0SUB

ORG0040HSTART: MOVSP,#60H

MOVTMOD,#00H MOVTH0,#0E0H

MOVTL0,#18H MOVIE,#82H

MOVR7,#03H

SETBTR0 SJMP$ 參考中斷服務程序:T0SUB: MOVTH0,#0E0H

MOVTL0,#18H CPLP1.0

DJNZR7,RETURN CPLP1.1

MOVR7,#03H

RETURN: RETIEND 10例:方式1的應用。硬件電路如圖所示,利用T0做定時器,請編程形成循環(huán)燈控制器。fosc=12MHzTMOD初始化:TMOD=00000001B=01HX=216-50ms/1μs=65536-50000=15536=3CB0H即向TH0寫入計數初值3CH,

向TL0寫入計數初值B0H。

IE初始化:開放中斷EA=1,允許定時器T0中斷ET0=1TCON初始化:TR0=1,啟動T0課堂練習請您編程參考程序清單如下: ORG0000H LJMPSTART ;復位入口

ORG000BH LJMPT0SUB ;T0中斷入口

ORG0040HSTART:MOVSP,#60H MOVA,#0FEH MOVTMOD,#01H ;T0為方式1定時 MOVTH0,#3CH ;T0賦初值

MOVTL0,#0B0H SETBET0 ;開T0中斷

SETBEA ;開總允許中斷

SETBTR0 ;啟動T0 SJMP$ ;等待中斷T0SUB: MOVTH0,#3CH MOVTL0,#0B0H MOVP1,A RLA

RETI ;中斷返回END例4.2.4利用定時器/計數器對生產過程進行控制。如圖,當生產線上無工件傳送時,在光線的照射下,光敏管導通,T1為低電平;當工件通過光源時工件會遮擋光線,光敏管截止,T1為高電平。每傳送一個工件,T1端會出現一個正脈沖。利用定時器/計數器1對生產過程進行控制,每生產出10000個工件,使P1.7輸出一個正脈沖,用于啟動下一個工序。解:設置定時器/計數器1工作在方式1,對工件進行計數。

TMOD=01010000B=50H

計數次數N=10000,則計數初值X為:

X=216-N=65536-10000

=55536=D8F0H

IE初始化:開放中斷EA=1,允許定時器T1中斷ET1=1

TCON初始化:TR1=1,啟動T1 請各位編寫相關程序 ORG0000H LJMPSTART ;復位入口

ORG001BH LJMPT1SUB ;T1中斷入口

ORG0040HSTART: MOVSP,#60H CLRP1.7 ;初始化P1.7=0 MOVTMOD,#50H ;T1為方式1計數 MOVTH1,#0D8H ;T0賦初值

MOVTL1,#0F0H SETBET1 ;開T1中斷

SETBEA ;開總允許中斷

SETBTR1 ;啟動T1 SJMP$ ;等待中斷T1SUB: MOVT

溫馨提示

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

評論

0/150

提交評論