




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機與控制技術第02章:MCS-51單片機結構原理RE: 硬件編程結構及引腳已介紹 CPU主要部件與特殊功能寄存器(SFR)已介紹 片內外存儲器的組織結構和編址已介紹 并行I/O口已介紹 中斷及中斷系統已介紹 定時/計數器(外設) 【本次課內容!】 串行口(外設)5、MCS51單片機的定時/計數器 定時/計數器的作用: (1)獲取一定的時間間隔信號(即定時),或對外部的脈沖個數進行計數。采用專用的硬件定時/計數器(而不是用延時程序來獲得定時),減輕了CPU的負擔。 (2)定時和計數的本質是一樣的。當計數器所計的脈沖是頻率不變的信號時,通過計數值就可以知道時間長短,這時計數器就成了定時器。MC
2、S51單片機的定時/計數器資源 有2個(8052有3個)16位的定時/計數器,均為加1計數; 4種工作方式(16位/13位/8位/波特率),由TMOD控制寄存器中的M1、M0位來控制 兩個SFR:TMOD定義工作方式,TCON控制有關功能 定時器的實質為對MCU片內機器周期計數,而計數器對芯片外部引腳T0、T1上的脈沖信號個數計數。 說明: 當用作定時器功能時,加1計數器每一個機器周期加1,所以定時器可看作計算機器周期的計數器。由于每個機器周期包含12個振蕩信號周期,所以加1計數器的計數脈沖頻率為振蕩器信號的1/12,當振蕩器頻率為6MHz時計數脈沖的最高頻率為500KHz,或周期為2s。 當
3、用作計數器功能時,加1計數器的計數脈沖取自外部輸入引腳T0、T1(8052還有T2),只要這些引腳上有一個從“1”到“0”的負跳變,加1計數器就加1。CPU在每個機器周期對外部輸入狀態進行采樣。計數器加1的執行是在檢測到跳變后的那個機器周期時刻。由于需要兩個機器周期(24個振蕩信號周期)來識別一個從“1”到“0”的負跳變,所以最大計數速率為振蕩信號頻率的1/24。顯而易見,為了保障外部輸入狀態在改變之前至少采樣一次,因此,信號必須至少保持一個完整的機器周期。 (1) 特殊功能寄存器TMOD、TCON 51系列單片機中有兩個特殊功能寄存器(TMOD/TCON),用于定義定時/計數器的工作方式和控
4、制定時/計數器的有關功能. 1)定時器方式寄存器TMOD(只能按字節地址訪問!) TMOD用于定義工作方式以及操作方式。其格式為: 高位 低位GATE C/TM1M0GATEC/TM1M0 定時/計數器1 定時/計數器0TMODTMOD的高4位控制定時/計數器1,低4位控制定時/計數0。其中M1、M0定義定時/計數器的工作方式。1)定時器方式寄存器TMOD C/T:定時/計數器功能選擇位。 1:計數器功能(對外部脈沖即負跳變計數,允許的最高計數頻率為晶振頻率的1/24); 0:定時器功能GATE:門控制位,用于控制定時/計數器的(啟動)計數是否受外部中斷輸入引腳(INT0、INT1腳)電平的影
5、響。 GATE=0,與外部中斷無關; GATE=1,只有在沒有外部中斷請求信號情況下(即外部中斷引腳INTx=1),才允許計數。M1、M0:工作方式選擇GATE C/TM1M0GATEC/TM1M0T1T0由M1、M0決定的定時/計數器的工作方式M1M0工作方式說明00013位定時/計數器01116位定時/計數器102具有自動重裝入的8位定時/計數器113定時器0(T0)分為2個獨立的8位定時器,T1在方式3時停止工作舉例:設置T1為16位的計數器對外部脈沖計數,T1啟動不受外部中斷影響。則 MOV TMOD,50H;(0101 0000B)定時器初值的確定?定時器初值的確定? 加法計數器是計
6、滿溢出時才申請中斷, 所以在給定時器/計數器賦初值時, 不能直接輸入所需的計數值, 而應輸入的是計數器計數的最大值與這一計數值的差值, 設最大值為 M, 計數值為 N, 初值為 X, 則 X的計算方法如下: 計數狀態: X=MN 定時狀態: X=M定時時間/T 而 T=12晶振頻率 2)定時器控制寄存器TCONSETB TR0;啟動定時器0用于外部中斷(中斷系統中已介紹)軟件控制(2) 4種工作方式 51系列單片機中有兩個特殊功能寄存器(TMOD/TCON),用于定義定時/計數器的工作方式和控制定時/計數器的有關功能. SFR: 定時器方式寄存器TMOD(只能按字節地址訪問!) TMOD用于定
7、義工作方式以及操作方式。其格式為: 高位 低位GATE C/TM1M0GATEC/TM1M0 定時/計數器1 定時/計數器0TMODTMOD的高4位控制定時/計數器1,低4位控制定時/計數0。其中M1、M0定義定時/計數器的工作方式。1)方式0 (13位計數器) 當M1、M0位置成00時,工作方式為方式0,由圖這時定時/計數器的加1計數器為13位,即TL的低5位和TH的8位。 計數脈沖源由TCON的C/T位來決定。TL和TH的計數值由全“1”變為全“0”時,TMOD的中斷溢出標志位TF置位,定時/計數器向CPU申請中斷。允許計數脈沖輸入的條件是:TR0/1=1且GATE=0或INT0/1=1,
8、這些均由軟件設置。 當定時/計數器工作于定時功能且選為方式0時,應按照定時的時間選擇一個時間常數作為計數器的初值,需要連續定時時,應在每次溢出產生中斷后,在程序(ISR)中為TL和TH 裝入初值。 方式0的計數長度M為2的13次方。初值也是13位二進制數,但要注意是高8位賦值給THx,低5位前面補足 3 個 0 湊成 8 位賦給TLx。 舉例:如要求T0的計數值為1000,則初值為 xM100081921000 1C18H1 1100 0001 1000B 則賦初值時, TH0 1 1100 000B=0E0H, TL0 0001 1000B =18H。2)方式1 (16位計數器)方式1和方式
9、0的工作原理基本相同,唯一不同是T0和T1工作在方式1時是16位位的計數/定時器方式1時的計數長度計數長度M是2的16次方。16位的初值初值直接拆成高低字節,分別送入THx和TLx即可。3)方式2 (8位計數器,初始值自動重裝) 工作方式0和工作方式1的最大特點就是計數溢出后,計數器為全0,因而循環定時或循環計數應用時就存在反復設置初值的問題,這給程序設計帶來許多不便,同時也會影響計時精度。串行口工作方式2就針對這個問題而設置,它具有自動重裝載功能,即自動加載計數初值,所以也稱為自動重加載工作方式。在這種工作方式中,16位計數器分為兩部分,即以TL0為計數器,以TH0作為預置寄存器,初始化時把
10、計數初值分別加載至TL0和TH0中,當計數溢出時,不再象方式0和方式1那樣需要“人工干預”,由軟件重新賦值,而是由預置寄存器TH以硬件方法自動給計數器TL0重新加載。串行口4)方式3 (兩個獨立8位計數器,僅限T0)TH0、TL0被拆作于不同用途獨立!在工作方式3模式下,定時/計數器0被拆成兩個獨立的8位計數器TL0和TH0。其中TL0既可以作計數器使用,也可以作為定時器使用,定時/計數器0的各控制位和引腳信號全歸它使用。其功能和操作與方式0或方式1完全相同。 TH0就沒有那么多“資源”可利用了,只能作為簡單的定時器使用,而且由于定時/計數器0的控制位已被TL0占用,因此只能借用定時/計數器1
11、的控制位TR1和TF1,也就是以計數溢出去置位TF1,TR1則負責控制TH0定時的啟動和停止。由于TL0既能作定時器也能作計數器使用,而TH0只能作定時器使用而不能作計數器使用,因此在方式3模式下,定時/計數器0可以構成二個定時器或者一個定時器和一個計數器。 T0工作于方式3時,T1的工作方式就不可避免受到一定的限制,因為自己的一些控制位已被定時/計數器0借用,只能工作在方式0、方式1或方式2下,不同的是定時/計數器1不能使用溢出標志和中斷!如果設置T1工作在方式3,則T1停止工作,相當于其他方式時令TR10。(3) 定時/計數器的初始化由于定時/計數器是可編程的,因此在進行定時或計數之前要把
12、程序進行初始化。初始化一般包括以下幾個步驟:S1確定工作方式TMOD寄存器賦值。S2置定時/計數器的初值直接將初值寫入寄存器TH0、TL0和 TH1、TL1。S3根據需要,開放中斷對寄存器IE置初值。S4啟動使TCON寄存器中的TR1或TR0置位,置位后,加1計數器按規定的工作方式和初值開始計數。初值N的計算可以通過下式求得: 計數方式:N=M-計數值 定時方式時:N=M-定時值(fosc/12)。其中:M為加1計數器的最大值(在不同的工作方式中,M可以為213、216或28),fosc為振蕩器頻率(即主振頻率)。補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 一、一、 方式方式 0
13、 的應用的應用 例例 1 利用定時器輸出周期為 2 ms的方波, 設單片機晶振頻率為 6 MHz。 選用定時器 /計數器T0 作定時器, 輸出為P1.0 引腳, 2 ms 的方波可由間隔 1 ms的高低電平相間而成, 因而只要每隔 1 ms對 P1.0 取反一次即可得到這個方波。 定時 1 ms的初值: 因為 機器周期=126 MHz= 2 s所以 1 ms內T0 需要計數N次: N= 1 ms2 s = 500 由此可知: 使用方式 0 的 13 位計數器即可, T0 的初值X為 X=MN=8 192500=7 692=1E0CH 但是, 因為 13 位計數器中, 低 8 位 TL0 只使用
14、了 5 位, 其余碼均計入高 8 位TH0 的初值, 則 T0 的初值調整為 TH0=0F0H, TL0=0CHTMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0)TCON初始化: 啟動TR0=1 IE初始化: 開放中斷EA=1, 定時器T0 中斷允許ET0=1 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 程序清單如下: ORG 0000H AJMP START; 復位入口 ORG 000BH AJMP TOINT ; T0中斷入口 ORG 0030HSTART: MOV SP, 60H; 初始化程序 MOV TH0, 0
15、F0H ; T0賦初值 MOV TL0, 0CH MOV TMOD, 00H SETB TR0 ; 啟動T0 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 SETB ET0 ; 開T0中斷 SETB EA ; 開總允許中斷 MAIN: AJMP MAIN ; 主程序 T0INT: CPL P1.0 MOV TL0, 0CH MOV TH0, 0F0HRETI 二、二、 方式方式 1應用應用 方式 1 與方式 0 基本相同, 只是方式 1 改用了 16 位計數器。 要求定時周期較長時, 13 位計數器不夠用, 可改用 16 位計數器。 例例 2 已知某生產線的傳送帶上不斷地有產品單向
16、傳送, 產品之間有較大間隔。使用光電開關統計一定時間內的產品個數。 假定紅燈亮時停止統計, 紅燈滅時才在上次統計結果的基礎上繼續統計, 試用單片機定時器 /計數器T1的方式 1完成該項產品的計數任務。 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 圖 6.7 硬件原理圖 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 (1) 初始化: TMOD=11010000B=0D0H (GATE=1, C/T=1, M0M1=01) TCON=00H (2) T1在方式1時, 溢出產生中斷, 且計數器回零, 故在中斷服務程序中, 需用R0計數中斷次數, 以保護累積計數結果。 補充:
17、補充: 定時器定時器/計數器應用舉例計數器應用舉例 (3) 啟動T1計數, 開T1中斷。 程序清單如下: ORG 0000H AJMP START ; 復位入口 ORG 001BH AJMP T1INT ; T1中斷入口 ORG 0100H START: MOV SP, 60H ; 初始化程序 MOV TCON, 00H MOV TMOD, 0D0H MOV TH1, 00H 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 MOV TL1, 00H MOV R0, 00H ; 清中斷次數計數單元 MOV P3, 28H; 設置P3.5第二功能 SETB TR1 ; 啟動T1 SETB
18、 ET1; 開T1中斷 SETB EA ; 開總中斷 MAIN: ACALL DISP ; 主程序, 調顯示子程序 ORG 0A00H T1INT: INC R0 ; 中斷服務子程序 RETI DISP: ; 顯示子程序 RET 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 三、三、 方式方式 2 應用應用 方式 2 是定時器自動重裝載的操作方式, 在這種方式下, 定時器 0 和 1 的工作是相同的, 它的工作過程與方式 0、 方式 1 基本相同, 只不過在溢出的同時, 將 8 位二進制初值自動重裝載, 即在中斷服務子程序中, 不需要編程送初值, 這里不再舉例。定時器 T1 工作在
19、方式 2 時, 可直接用作串行口波特率發生器, 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 四、四、 方式方式 3 的應用的應用 定時器 T0 工作在方式 3 時是 2 個 8 位定時器 /計數器。 且TH0 借用了定時器 T1 的溢出中斷標志TF1和運行控制位 TR1。 例例 3 假設有一個用戶系統中已使用了兩個外部中斷源, 并置定時器 T1 于方式 2, 作串行口波特率發生器用, 現要求再增加一個外部中斷源, 并由 P1.0 口輸出一個 5K Hz的方波(假設晶振頻率為 6 MHz)。 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 在不增加其它硬件開銷時, 可把定
20、時器/計數器 T0 置于工作方式 3, 利用外部引腳 T0端作附加的外部中斷輸入端, 把 TL0 預置為 0FFH, 這樣在 T0 端出現由 1至 0 的負跳變時, TL0 立即溢出, 申請中斷, 相當于邊沿激活的外部中斷源。 在方式 3下, TH0 總是作 8 位定時器用, 可以靠它來控制由 P1.0 輸出的 5 kHz方波。 由 P1.0 輸出 5 kHz的方波, 即每隔 100 s使 P1.0 的電平發生一次變化。則TH0中的初始值 X=MN=256100/2=206。 下面是有關的程序。 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 MOV TL0, 0FFH MOV TH
21、0, 206 MOV TL1, BAUD ; BAUD根據波特率要求設置常數 MOV TH1, BAUD MOV MOD, 27H ; 置T0工作方式3 ; TL0工作于計數器方式 MOVTCON, 55H ; 啟動定時器 T0、 T1, 置外部中斷 0 和 1 ; 為邊沿激活方式MOVIE, 9FH ; 開放全部中斷 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 TL0 溢出中斷服務程序(由 000BH單元轉來): TL0INT: MOV TL0, 0FFH ; 外部引腳 T0 引起中斷處理程序 RETITH0 溢出中斷服務程序(由 001BH轉來): TH0INT: MOVTH0, 206 CPL P1.0 RETI此處串行口中斷服務程序、 外中斷 0和外中斷 1的中斷服務程序沒有列出。 補充:補充: 定時器定時器/計數器應用舉例計數器應用舉例 本講小結: MCS51定時/計數器的兩個SFR:TMOD、TCON 定時/計數器的4種工作方式 定時/計數器的初值計算? 編程時如何初始化?習題與思考題2-1為什么外擴存貯器時,口要外接地址鎖存器,而口卻不接?2-2在使用外部程序存貯器時,單片機還有多少條線可用?在使用外部數據存貯器時,還有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年社交媒體平臺的文化傳播與輿論引導效果評估體系研究
- 2025年教育游戲化在小學美術教學中的創新實踐與教學設計方案
- T/BBA 01-2020家居門窗臥室窗
- 早搏患者健康教育
- 特殊兒童心理健康教育
- 食管癌護理手術配合
- 小班清明主題活動方案
- 人教版九年級數學下冊27.2.2相似三角形的性質【課件】
- 疾病保險產品核心價值闡述會
- 痛風性關節病的護理
- 《大學生職業發展與生涯規劃(高職版)》 教案 第3課 探索自己的職業興趣
- 基于主題意義的小學英語單元整體教學 論文
- 中山職業技術學院宿舍寬帶接入校園網連接技術方案
- 陶行知教育名篇讀書分享ppt
- 癌性傷口的處理教學課件
- 血栓與止血檢驗及其相關疾病-血栓與止血檢驗(血液學檢驗課件)
- 深圳中考志愿表格模板
- 村衛生室醫保自查自糾報告及整改措施
- 【電氣專業】15D501建筑物防雷設施安裝
- 中國傳統文化知到章節答案智慧樹2023年西安理工大學
- 新疆維吾爾自治區初中學業水平考試英語答題卡
評論
0/150
提交評論