




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目6
定時/計數器控制及應用知識與能力目標熟悉單片機定時/計數器的結構與功能;1掌握定時/計數器在各個模式下的程序初始化過程;2學會并掌握定時/計數器初始值的分析與計算;34理解并掌握定時/計數器的編程與控制方法;65初步學會定時/計數器應用程序的分析與設計。熟練使用Proteus進行單片機應用程序開發(fā)與調試。項目6定時/計數器控制及應用1定時/計數器結構與功能分析2定時/計數器編程與控制任務6.1定時/計數器分析與控制1控制要求與功能展示2硬件系統與控制流程分析3匯編語言程序分析與設計4C語言程序分析與設計任務6.2簡易定時鬧鐘控制任務6.3簡易按鍵計數器控制1控制要求與功能展示2硬件系統與控制流程分析3匯編語言程序分析與設計4C語言程序分析與設計5基于Proteus的調試與仿真
6.1.1定時/計數器結構與功能分析
定時/計數器是單片機系統的一個重要部件,此外定時/計數器還可用作為串口通信中波特率發(fā)生器。
工作方式靈活使用方便編程簡單定時/計數器信號檢測定時控制延時信號發(fā)生脈寬測量頻率測量定時/計數器6.1.1定時/計數器結構與功能分析
1、定時/計數器的組成
6.1.1定時/計數器結構與功能分析
(1)設置定時/計數器的工作方式通過對方式寄存器TMOD的設置,確定相應的定時/計數器是定時功能還是計數功能,以及工作方式及啟動方法。(2)設置計數初值定時/計數器允許用戶編程設定開始計數的數值,稱為賦初值。初值不同,則計數器產生溢出時,計數個數也不同。定時/計數器的工作過程如下:
6.1.1定時/計數器結構與功能分析
定時/計數器的工作過程如下:(3)啟動定時/計數器當設置了定時器的工作方式并啟動定時器工作后,定時器就按被設定的工作方式獨立工作,不再占用CPU的操作時間,只有在計數器計數溢出時才能中斷CPU當前的操作。
(4)計數溢出計數溢出標志位在控制寄存器TCON中,用于通知用戶定時/計數器已經計滿,用戶可以采用查詢方式或中斷方式進行操作。6.1.1定時/計數器結構與功能分析
2、定時/計數器的控制寄存器(1)定時/計數器的控制寄存器TCON:既參與中斷控制又參與定時控制表6-1TCON寄存器的結構TCON(88H)D7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位含義T1的溢出中斷標志位T1的啟動停止控制位T0的溢出中斷標志位T0的啟動停止控制位INT1中斷請求標志位INT1觸發(fā)方式控制位INT0中斷請求標志位INT0觸發(fā)方式控制位位地址8FH8EH8DH8CH8BH8AH89H88H6.1.1定時/計數器結構與功能分析
2、定時/計數器的控制寄存器(2)定時/計數器的工作方式控制寄存器TMOD定時/計數器T0定時/計數器T1表6-2TMOD寄存器的結構TMOD(89H)D7D6D5D4D3D2D1D0位名稱GATEC/
M1M0GATEC/
M1M0位含義T1門控位模式選擇位工作方式選擇位T0門控位模式選擇位工作方式選擇位6.1.1定時/計數器結構與功能分析
2、定時/計數器的控制寄存器M0、M1——工作方式選擇位M0和M1兩位二進制數可表示4種狀態(tài),通過M1和M0可選擇4種工作方式表6-3工作方式M1、M0工作方式功能M1、M0工作方式功能00方式013位計數器10方式28位計數器,初值自動裝入01方式116位計數器11方式3T0:兩個8位計數器T1:停止計數6.1.1定時/計數器結構與功能分析
◆最大計數值M=8192◆定時時間為:(8192-初值)x時鐘周期x123、定時/計數器的工作方式(1)工作方式0:M1、M0=006.1.1定時/計數器結構與功能分析
(1)工作方式0:M1、M0=00工作于方式0下的13位定時/計數器
內部計數器為13位,由TLi低5位(高3位未用,一般清零)和THi高8位組成。TLi低5位計數滿時不向TLi的第六位進位,而是直接向THi進位。當13位計數計滿溢出,溢出標志位TFi置位。3、定時/計數器的工作方式6.1.1定時/計數器結構與功能分析
例如:當晶振為12M時,機器周期為1us,試著配置定時器1工作于方式0定時時間5ms的初值。
由于方式0采用13位計數器,其最大定時時間為:8192x1us=8.192ms,大于定時時間5ms,則計數值為5ms/1us=5000,T1的初值為:
X=M-計數值=8192-5000=3192=C78H=0110001111000B13位計數器中TL1的高3位未用,填寫0,TH1占高8位,所以X的實際填寫值應為:
X=0110001100011000B=6318H3、定時/計數器的工作方式(1)工作方式0:M1、M0=006.1.1定時/計數器結構與功能分析
3、定時/計數器的工作方式(2)工作方式1:M1、M0=01◆最大計數值M=65536◆定時時間為:(65536-初值)X時鐘周期X126.1.1定時/計數器結構與功能分析
3、定時/計數器的工作方式(3)工作方式2:M1、M0=10◆最大計數值M=256◆定時時間為:(256-初值)X時鐘周期X126.1.1定時/計數器結構與功能分析
3、定時/計數器的工作方式(3)工作方式2:M1、M0=10◆工作方式2具有初值自動裝載功能,適合用于比較精準的定時場合?!鬞Li用作8位計數器,THi用來保持初值。◆編程時,TLi和THi必須由軟件賦予相同的初值?!粢坏㏕Li計數溢出,TFi將被置位,同時THi中保存的初值自動裝入TLi,進入新一輪計數。
6.1.1定時/計數器結構與功能分析
3、定時/計數器的工作方式(4)工作方式3:M1、M0=11◆只有T0可以設置為工作方式3,T1設置為工作方式3后不工作◆T0被分解成兩個獨立的8位計數器TL0和TH06.1.1定時/計數器結構與功能分析
3、定時/計數器的工作方式(4)工作方式3:M1、M0=11當T0在工作方式3時,T1仍可設置為方式0、方式1或方式2。由于TR1、TF1和T1中斷源已被T0占用,定時器T1僅由控制位C/切換其定時或計數功能。當T1計數器計滿溢出時,只能將輸出送往串行口。T1一般用作串行口波特率發(fā)生器或不需要中斷的場合。當設置好工作方式后,T1自動開始計數;當送入一個設置T1為工作方式3的方式字后,T1停止計數。6.1.2定時/計數器編程與控制
中斷方式查詢方式定時/計數器的編程6.1.2定時/計數器編程與控制
(1)中斷方式——編程步驟設置中斷優(yōu)先級,當中斷只有一個時不用設置設置TMOD初始化設置定時/計數初值啟動定時/計數器編寫定時/計數器中斷的處理服務程序124563編程步驟開中斷6.1.2定時/計數器編程與控制
(1)中斷方式——匯編語言編寫ORG0000HLJMPMAINORG000BH;T0中斷入口地址
LJMPTIMER0ORG0030HMAIN:SETBEA ;開總中斷
SETBET0 ;開定時器T0中斷
MOVTMOD,#XXH;設置TMODMOVTH0,#XXH;設置TH0、TL0MOVTL0,#XXH SETBTR0 ;啟動定時器T0……TIMER0:…… ;中斷服務程序
RETI6.1.2定時/計數器編程與控制
(1)中斷方式——C語言編寫#include<regx51.h>voidmain(){ IE=0X83;//開中斷
TMOD=0XXX;//設置TMODTH0=0XXX;//設置TH0、TL0TL0=0XXX;
TR0=1;//啟動定時器T0……;
}//=====中斷服務程序=====voidtimer0()interrupt1//T0中斷服務子程序
{……;
}6.1.2定時/計數器編程與控制
(1)查詢方式——編程步驟設置TMOD初始化設置定時/計數初值啟動定時/計數器查詢溢出標志位TF0或TF1置位情況及相關處理1
2
4
5
3
開中斷編程步驟6.1.2定時/計數器編程與控制
(1)查詢方式——匯編語言編寫ORG0000HLJMP MAINORG0030HMIAN:CLREA ;關中斷
MOVTMOD,#XXH;設置TMODMOV TH0,#XXH;設置TH0、TL0MOV TL0,#XXHSETB TR0 ;啟動定時器T0……LOOP:JBCTF0,TIMER0;若TF0置位,則先跳轉到TIMER0,
;后再清零TF0LJMPLOOPTIMER0:…… ;中斷處理程序
LJMPLOOPEND6.1.2定時/計數器編程與控制
(1)查詢方式——C語言編寫#include<regx51.h>voidmain(){EA=0;
TMOD=0Xxx; //設置TMODTH0=0Xxx; //設置TH0、TL0TL0=0Xxx;
TR0=1;//啟動定時器T0if(TF0!=0) //查詢TF0標志位是否置位
{TF0=0;//清零TF0標志位
……; //相關處理
}……;}任務6.2簡易定時鬧鐘控制6.2.1控制要求與功能展示實物運行視頻兩位數碼管K1按鍵
蜂鳴器
單片機
K2按鍵
6.2.1控制要求與功能展示簡易定時鬧鐘控制電路原理圖任務6.2簡易定時鬧鐘控制6.2.2硬件系統與控制流程分析1、任務硬件系統分析
電路原理圖所示,該電路主要是由兩個按鍵電路、1個蜂鳴器驅動電路以及1個兩位數碼管顯示電路組成。數碼管顯示電路中單片機P0口提供段選信號,而P2口提供位選信號;蜂鳴器驅動電路由PNP型三極管驅動。
6.2.2硬件系統與控制流程分析2、任務控制流程分析圖6-9簡易定時鬧鐘控制程序流程6.2.3匯編語言程序分析與設計1、任務相關匯編指令
(1)位控制轉移指令:JBC
使用格式:JBCbit,<地址或地址標號>
使用說明:JBC指令是用來判斷某個位是否置位;置位后,則跳轉到所指定的地址中去執(zhí)行,同時再清零該位。
使用示例JBCTF0,TIMER0;判斷TF0是否置位,是則跳轉到;TIMER0執(zhí)行,后清零TF0…………;否,則順序執(zhí)行TIMER0:…………6.2.3匯編語言程序分析與設計
(2)邏輯或操作指令:ORL使用格式:ORL<目的操作數>,<源操作數>使用說明:①將目的操作數與源操作數按位進行“或”運算后,將其結果放回目的目的操作數中。②任意邏輯量和1相或,其結果為1;和0相或,其結果不變。邏輯或指令常用來把累加器、內部RAM或特殊功能寄存器的指定位置1。③目的操作數一般情況為累加器A,但也可以是內部數據存儲單元的地址。
使用示例ORLA,#01H;將A中的內容與立即數01H相或后結果放入A中6.2.3匯編語言程序分析與設計
(3)邏輯與操作指令:ANL使用格式:ANL<目的操作數>,<源操作數>使用說明:①將目的操作數與源操作數按位進行相“與”之后,將其結果放在目的操作數中;②任意邏輯量(0或1)和0相與,其結果為0;和1相與,其結果不變。邏輯與指令常用來完成將若干數據位清0,而其余位不變的操作。③目的操作數一般情況為累加器A,但也可以是內部數據存儲單元的地址。
使用示例ANLA,#01H;將A中的內容與立即數01H相與后結果放入A中6.2.3匯編語言程序分析與設計
(4)邏輯異或操作指令:XRL使用格式:XRL<目的操作數>,<源操作數>使用說明:①將目的操作數與源操作數按位進行相“異或”之后,將其結果放在操作數一中。②任意邏輯量(0或1)和1相異或,其結果取反;和0相異或,其結果不變。邏輯異或指令常用來完成將若干數據位取反,而其余位不變的操作。④相同邏輯量(0或1)相異或,結果為0,不同邏輯量相異或,結果為1,利用這個特點,也可判斷兩數是否相等。
使用示例XRLA,#01H;將A中內容與立即數01H相異或后結果放入A6.2.3匯編語言程序分析與設計
匯編程序6.2.4C語言程序分析與設計
C程序C語言程序主函數main()程序初始化子函數Init()數碼管顯示子函數display()輸出處理子函數shuchu()程序初始部分(含數據表定義)按鍵去抖子函數qu_doudong()定時器中斷子函數timer0_server()延時子函數delay()1、創(chuàng)建Proteus仿真電路圖(1)列出元器件表;(2)繪制仿真電路圖6.2.5基于Proteus的調試與仿真
6.2.5基于Proteus的調試與仿真
安裝插件vdmagdi.e(注意:應把插件安裝在Keil3的安裝目錄下)將Keil安裝目錄\C51\BIN中的VDM51.dll文件復制到Proteus軟件的安裝目錄Proteus\MODELS目錄下修改Keil安裝目錄下的Tools.ini文件,在C51字段中加入TDRV11=BIN\VDM51.DLL(“PROTEUS6EMULATOR”)并保存。(1)(2)(3)2、Proteus與Keil聯調6.2.5基于Proteus的調試與仿真
打開“簡易定時鬧鐘控制.DSN”文件,在Proteus的“Debug”菜單中選中“UseRemoteDebugMonitor(遠程監(jiān)控)”。右鍵選中STC89C51單片機,在彈出的對話框“ProgramFile”項中,導入在Keil中生成的HEX文件。Keil打開“簡易定時鬧鐘控制.UV2”,打開窗口“OptionforTarget‘工程名’”。在Debug選項中右欄上部的下拉菜單選中ProteusVSMSimulator。點擊進入Settings窗口,設置IP為127.0.0.1,端口號為8000。
在Keil中點擊,使用單步執(zhí)行來調試程序,同時在Proteus中查看直觀的仿真結果。(4)(5)(6)6.2.5基于Proteus的調試與仿真
工作模式定時工作方式定時器當前值中斷標志位程序初始化后,T0窗口
2、Proteus與Keil聯調6.2.5基于Proteus的調試與仿真
開啟定時器定時器當前值啟動后中斷前,T0窗口
2、Proteus與Keil聯調6.2.5基于Proteus的調試與仿真
中斷后定時器當前值為0000H標志位當進入中斷后自動清零中斷時,T0窗口
2、Proteus與Keil聯調6.2.5基于Proteus的調試與仿真
TH0=0x3C、TL0=0xB0T0中斷后,重新賦初值3CB0H2、Proteus與Keil聯調6.2.5基于Proteus的調試與仿真
R0=0x01T0中斷次數計數控制2、Proteus與Keil聯調2、Proteus與Keil聯調6.2.5基于Proteus的調試與仿真
低電平,蜂鳴器鳴叫TR0=0定時時間到,TO停止運行6.2.5基于Proteus的調試與仿真
3、Proteus仿真運行6.2.5基于Proteus的調試與仿真
仿真運行視頻任務6.3簡易按鍵計數器控制
實物運行視頻數碼管單片機K1按鍵K2按鍵6.3.1控制要求與功能展示6.3.1控制要求與功能展示簡易按鍵計數器控制電路原理圖任務6.3簡易按鍵計數器控制
6.3.2硬件系統與控制流程分析1、任務硬件系統分析
電路原理圖所示,該電路主要是由2個按鍵電路和1個數碼管顯示電路組成。該數碼管顯示電路中由單片機P0口提供段選信號,其共陰端串上阻值200歐的限流電阻接地。但要使用計數器來實現該控制要求,需要了解單片機計數器的部分具體知識。
6.3.2硬件系統與控制流程分析(1)單片機定時/計數器的計數功能注意:計數器的位數確定了計數器的計數范圍
定時/計數器有定時和計數兩種功能,通過定時/計數器的工作方式控制寄存器TMOD中的C/位控制。當C/位為1時,定時/計數器設為計數工作方式,對由T0(P3.4引腳)或T1(P3.5引腳)引入的外部脈沖計數,其余設置與定時器的設置相同。
6.3.2硬件系統與控制流程分析2、任務控制流程分析圖6-22簡易按鍵計數器控制流程6.3.3匯編語言程序分析與設計
匯編程序6.3.4C語言程序分析與設計
C程序C語言程序主函數main()程序初始化子函數Init()數碼管顯示子函數display()計數0中斷子函數T_0()定時器1中斷子函數T_1()外部中斷1子函數int_1()外部中斷1子函數int_1()延時子函數delay()1、創(chuàng)建Proteus仿真電路圖(1)列出元器件表;(2)繪制仿真電路圖6.3.5基于Proteus的調試與仿真
6.3.5基于Proteus的調試與仿真
安裝插件vdmagdi.e(注意:應把插件安裝在Keil3的安裝目錄下)
將Keil安裝目錄\C51\BIN中的VDM51.dll文件復制到Proteus軟件的安裝目錄Proteus\MODELS目錄下修改Keil安裝目錄下的Tools.ini文件,在C51字段中加入TDRV11=BIN\VDM51.DLL(“PROTEUS6EMULATOR”)并保存。(1)(2)(3)2、Proteus與Keil聯調6.3.5基于Proteus的調試與仿真
打開“簡易按鍵計數器控制.DSN”文件,在Proteus的“D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西醫(yī)結合眼耳鼻喉科學知到課后答案智慧樹章節(jié)測試答案2025年春山西中醫(yī)藥大學
- 混凝土道牙施工方案
- 基于ANSYS的粗糙表面高溫接觸摩擦熱力耦合分析
- 高中數學立體幾何高考試題分析與教學策略研究
- 七年級生物上冊第一單元我們身邊的生命世界第四章多種多樣的動物第八節(jié)鳥類教案新版冀教版
- 全款車購買合同范例
- 公路護欄合同范例
- 人力外包結算合同范例
- 冰山巧克力采購合同范例
- 人事試用合同范例
- 2024年國藥集團招聘筆試參考題庫含答案解析
- 投標管理制度(合集)
- 10廣東省事業(yè)單位工作人員年度考核登記表(申報評審衛(wèi)生版表十)
- 幼兒游戲活動指導第二版全套教學課件
- 南京市城市用地分類和代碼標準
- 教育管理學(陳孝彬第三版)筆記整理
- 向下管理高爾夫-完整備注版104張課件
- 護理技術操作考核評分標準患者約束法
- 慢性心功能不全的護理查房
- 電氣第一種第二種工作票講解-課件
- 輸血與創(chuàng)傷性凝血病
評論
0/150
提交評論