定時(shí)器-計(jì)數(shù)器_第1頁
定時(shí)器-計(jì)數(shù)器_第2頁
定時(shí)器-計(jì)數(shù)器_第3頁
定時(shí)器-計(jì)數(shù)器_第4頁
定時(shí)器-計(jì)數(shù)器_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

14.2定時(shí)器/計(jì)數(shù)器定時(shí)的實(shí)現(xiàn)方式:1.軟件定時(shí);2.不可編程硬件定時(shí);3.可編程定時(shí)。2

定時(shí)/計(jì)數(shù)器的核心部件是二進(jìn)制加1計(jì)數(shù)器(TH0、TL0或TH1、TL1)。4.2.1定時(shí)/計(jì)數(shù)器的定時(shí)和計(jì)數(shù)功能

1.定時(shí)功能——計(jì)數(shù)脈沖信號(hào)是內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期使寄存器的值加1。所以,計(jì)數(shù)頻率是振蕩頻率的1/12。

2.計(jì)數(shù)功能——計(jì)數(shù)脈沖來自相應(yīng)的外部輸入引腳,T0為P3.4,T1為P3.5。需要2個(gè)機(jī)器周期。

在TMOD中,各有一個(gè)控制位(),分別用于控制定時(shí)/計(jì)數(shù)器T0和T1是工作在定時(shí)器方式還是計(jì)數(shù)器方式。3與定時(shí)器/計(jì)數(shù)器有關(guān)的控制寄存器有:D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中斷請求標(biāo)志外部中斷觸發(fā)方式選擇啟動(dòng)定時(shí)/計(jì)數(shù)器0低電平1下降沿0停止1啟動(dòng)定時(shí)溢出標(biāo)志4.2.2定時(shí)器/計(jì)數(shù)器的控制寄存器

1.定時(shí)器控制寄存器TCON(字節(jié)地址88H)42.工作方式控制寄存器TMOD(89H)

T1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE—門控位C/T—計(jì)數(shù)/定時(shí)選擇M1M0—工作方式選擇54.2.3.定時(shí)器/計(jì)數(shù)器的工作方式

共有四種工作方式

(1)方式0—13位方式TF0T0TR0GATEINT0振蕩器1/12C/T=01≥1&C/T=1TL0TH08位低5位13位計(jì)數(shù)器定時(shí)器計(jì)數(shù)器申請中斷M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7●●AB計(jì)數(shù)脈沖輸入6(2)方式1—16位方式

振蕩器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TH0TF08位8位16位計(jì)數(shù)器申請中斷M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D77(3)方式2—8位可自動(dòng)重裝入時(shí)間常數(shù)方式

振蕩器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TF0TL0TH08位計(jì)數(shù)器申請中斷M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D78(4)方式3—T0為2個(gè)8位方式,T1工作方式為0、1、2振蕩器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TF08位計(jì)數(shù)/定時(shí)器振蕩器1/12TR1TH0TF18位定時(shí)器申請中斷申請中斷工作方式:8位計(jì)數(shù)/定時(shí)工作方式:8位定時(shí)9振蕩器1/12T1C/T=0C/T=113或16位計(jì)數(shù)器串行口振蕩器1/12T1C/T=0C/T=1TL1TH18位計(jì)數(shù)器串行口TL1TH1T1方式0,1T1方式2串行口得到的波特率是固定的!串行口得到的波特率可編程的!104.2.4應(yīng)用舉例②

計(jì)算計(jì)數(shù)器的計(jì)數(shù)初值:編程時(shí)將計(jì)數(shù)初值送

THi、TLi;可編程器件在使用前需要進(jìn)行初始化:①

確定TMOD控制字:編程時(shí)將控制字送TMOD;③

開中斷(如果使用中斷方式):編程時(shí)置位EA、ETi;④

TRi位置位控制定時(shí)器的啟動(dòng)和停止。M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7IT0IE0IT1IE1TR0TF0TR1TF1TMODTCON11例題1:設(shè)晶振頻率fOSC=6MHz,使用定時(shí)器/計(jì)數(shù)器T0以方式0產(chǎn)生周期為2ms的方波脈沖,并由P1.0輸出。試以中斷方式實(shí)現(xiàn)。8051P1.02ms匯編語言編程12①TMOD確定0000XXXXM0M1C/TGATEM0M1C/TGATE控制字00H

要產(chǎn)生2ms的方波脈沖,只需在P1.0端以1ms為間隔,交替輸出高低電平即可實(shí)現(xiàn)。為此,定時(shí)間應(yīng)為1ms。使用6MHz晶振,則一個(gè)機(jī)器周期為2us,設(shè)待求計(jì)數(shù)初值為X,則:②計(jì)算計(jì)數(shù)器的計(jì)數(shù)初值;T1控制T0控制131000×10-6

=(213-X)×2×10-6

500=213-XX=213-500=2000H-1F4H=1E0CH=1111000001100B所以,初值為:

TH0=0F0H,TL0=0CH14程序設(shè)計(jì) ORG 0000H LJMP MAIN;主程序入口

ORG 000BH LJMP INTT0 ;T0中斷入口③采用中斷方式:編程時(shí)打開全局和局部中斷。④由定時(shí)器控制寄存器TCON中的TR0位控制定時(shí)器的啟動(dòng)和停止。

TR0=1,啟動(dòng);TR0=0,停止。15INTT0: MOV TH0,#0F0H ;重新設(shè)置初值

MOV TL0,#0CH CPL P1.0

;輸出取反

RETI ORG 0030HMAIN: MOV TMOD,#00H ;T0為方式0 MOV TH0,#0F0H ;初值

MOV TL0,#0CH SETB TR0 ;啟動(dòng)T0 SETB ET0 ;允許T0中斷

SETB EA ;允許中斷

SJMP $ ;等待中斷主程序:中斷處理程序:16例題2:設(shè)晶振頻率fOSC=6MHz,使用定時(shí)器/計(jì)數(shù)器T1以方式1產(chǎn)生周期為2ms的方波脈沖,并由P1.0輸出。試以中斷方式實(shí)現(xiàn)。8051P1.02ms17①TMOD確定XXXX1000M0M1C/TGATEM0M1C/TGATE控制字10H

要產(chǎn)生2ms

的方波脈沖,只需在P1.0端以1ms為間隔,交替輸出高低電平即可實(shí)現(xiàn)。為此,定時(shí)間應(yīng)為1ms。使用6MHz晶振,則一個(gè)機(jī)器周期為2us,設(shè)待求計(jì)數(shù)初值為X,則:②計(jì)算計(jì)數(shù)器的計(jì)數(shù)初值;T1控制T0控制181000×10-6=(216-X)×2×10-6

500=216-XX=216-500=10000H-1F4H=0FE0CH=1111111000001100B所以,初值為:

TH1=0FEH,TL1=0CH19程序設(shè)計(jì) ORG 0000H LJMP MAIN;主程序入口

ORG 001BH LJMP INTT1;T1中斷入口③采用中斷方式:編程時(shí)打開全局和局部中斷。④由定時(shí)器控制寄存器TCON中的TR1位控制定時(shí)器的啟動(dòng)和停止。

TR1=1,啟動(dòng);TR1=0,停止。20INTT1: MOV TH1,#0FEH ;重新設(shè)置初值

MOV TL1,#0CH CPL P1.0

;輸出取反

RETI ORG 0030HMAIN: MOV TMOD,#10H ;T1為方式1 MOV TH1,#0FEH ;初值

MOV TL1,#0CH SETB TR1 ;啟動(dòng)T1 SETB ET1 ;允許T1中斷

SETB EA ;允許中斷

SJMP $ ;等待中斷主程序:中斷處理程序:21例題3:設(shè)晶振頻率fOSC=6MHz,使用定時(shí)器/計(jì)數(shù)器測定如圖所示波形的一個(gè)周期長度。1外部計(jì)數(shù)脈沖INT0(P3.2)(P3.5)T1INT0一個(gè)周期啟動(dòng)定時(shí)器T1計(jì)數(shù)器計(jì)數(shù)22C語言編程(以定時(shí)器0為例)

例題4:設(shè)單片機(jī)的fosc=12MHz,要求在P1.0腳上輸出周期為2ms的方波。

周期為2ms的方波要求定時(shí)間隔為1ms,每次定時(shí)時(shí)間到,則P1.0取反。由于fosc=12MHz,機(jī)器周期為12/fosc=1us。1ms=1000us,即為1000個(gè)機(jī)器周期。

①用定時(shí)器T0的方式1編程,采用查詢方式。#include<reg51.h>sbitsquare_wave=P1^0;voidmain(void)23{ TMOD=0x01; /*T0的方式1*/ TR0=1; /*啟動(dòng)定時(shí)器T0*/ while(1) { /*裝計(jì)數(shù)器初值*/ TH0=(unsignedint)(-1000)/256; TL0=(unsignedint)(-1000)%256; while(!TF0) /*查詢等待TF0位*/

{ ; }

/*查詢時(shí)間到,P1.0變反*/

square_wave=!square_wave; TF0=0; /*軟件清除TF0位*/ }}24②用定時(shí)器T0的方式1編程,采用中斷方式。#include<reg51.h>sbitsquare_wave=P1^0;/*定時(shí)器T0的中斷服務(wù)程序*/voidtimer0(void)interrupt1using1{

/*P1.0取反*/

square_wave=!square_wave; /*計(jì)數(shù)器初值重裝*/ TH0=(unsignedint)(-1000)/256; TL0=(unsignedint)(-1000)%256;}25voidmain(void){ TMOD=0x01; /*T0的方式1*/ square_wave=0; TH0=(unsignedint)-1000/256;/*裝計(jì)數(shù)器初值*/ TL0=(unsignedint)-1000%256; EA=1; /*開中斷*/ ET0=1; /*T0中斷允許*/ TR0=1; /*啟動(dòng)T0*/ while(1) { ; }}264.2.5定時(shí)/計(jì)數(shù)器用作外部中斷擴(kuò)展③擴(kuò)展的外部中斷請求信號(hào)接計(jì)數(shù)脈沖輸入端(T0

或T1);②TH和TL均置為FFH;①置定時(shí)/計(jì)數(shù)器為工作方式2,即自動(dòng)加載式8位計(jì)數(shù),以便在一次中斷響應(yīng)后,自動(dòng)為下一次中斷作準(zhǔn)備;

在計(jì)數(shù)方式下,如果把計(jì)數(shù)器預(yù)置為全1,則只要在計(jì)數(shù)輸入端(T0或T1輸入端)加一脈沖就可以使計(jì)數(shù)器溢出,產(chǎn)生溢出中斷。這就是定時(shí)/計(jì)數(shù)器實(shí)現(xiàn)外部中斷擴(kuò)展的思想。具體方法是:27例:以T0實(shí)現(xiàn)一個(gè)外

溫馨提示

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

評論

0/150

提交評論