日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51单片机——定时器/计数器

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机——定时器/计数器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.概述

2.定時器/計數器

2.1 定時功能

2.2.1 定時功能的用法

2.1.2 任意定時方法

2.2 計數功能

2.2.1 計數功能的用法

2.2.2 任意計數方法

2.3?定時器/計數器的結構原理

2.3.1 定時器/計數器的結構

2.3.2 定時器/計數器的工作原理

2.4 定時器/計數器的控制寄存器與四種工作方式

2.4.1 定時器/計數器的控制寄存器TCON

2.4.2 定時器/計數器工作方式控制寄存器TMOD

2.4.3?定時器/計數器的工作方式


1.概述

????????8051單片機內部有T0和T1兩個定時器/計數器。它們既可用作定時器,也可用作計數器,可以通過編程來設置其使用方法。

2.定時器/計數器

2.1 定時功能

2.2.1 定時功能的用法

????????當定時器/計數器用作定時器時,可以用來計算時間。如果要求單片機在一定的時間后產生某種控制,可將定時器/計數器設為定時器。單片機定時器/計數器的定時功能用法如圖1所示。

圖1 定時器/計數器的定時功能用法??

????????要將定時器/計數器 T0設為定時器,實際上就是將定時器/計數器與外部輸入斷開,而與內部信號接通,對內部信號計數來定時。單片機的時鐘振蕩器可產生12MHz的時鐘脈沖信號,經12分頻后得到1MHz的脈沖信號,1MHz信號每個脈沖的持續時間為1μs,如果定時器T0對1MHz的信號進行計數,若從0計到65536,將需要65536μs,也即65.536ms。65.536ms后定時器計數達到最大值,會溢出而輸出一個中斷請求信號去中斷系統,中斷系統接受中斷請求后,執行中斷子程序,子程序的運行結果將P1.0端口置“0”,該端口外接的發光二極管點亮。

2.1.2 任意定時方法

????????在圖1中,定時器只有在65.536ms 后計數達到最大值時才會溢出,如果需要不到65.536ms定時器就產生溢出,比如1ms后產生溢出,可以對定時器預先進行置數。將定時器初始值設為64536,這樣定時器就會從64536開始計數,當計到65536時,定時器定時時間就為1ms而產生一個溢出信號。

2.2 計數功能

2.2.1 計數功能的用法

????????當定時器/計數器用作計數器時,可以用來計數。如果要求單片機計數達到一定值時產生某種控制,可將定時器/計數器設為計數器。單片機定時器/計數器的計數功能用法如圖2所示。

?圖2?定時器/計數器的計數功能用法

????????用編程的方法將定時器/計數器T0設為一個16位計數器,它的最大計數值為216=65536。T0端(即P3.4引腳)用來輸入脈沖信號。當脈沖信號輸入時,計數器對脈沖進行計數,當計到最大值65536時,計數器溢出,會輸出一個中斷請求信號到中斷系統,中斷系統接受中斷請求后,執行中斷子程序,子程序的運行結果將P1.0端口置“0”,該端口外接的發光二極管點亮。

2.2.2 任意計數方法

????????在圖2中,只有在T0端輸入65536個脈沖時,計數器計數達到最大值才會溢出,如果希望輸入100個脈沖時計數器就能溢出,可以在計數前對計數器預先進行置數,將計數器初始值設為65436,這樣計數器就會從65436開始計數,當輸入100個脈沖時,計數器的計數值就達到65536而產生一個溢出信號。

2.3?定時器/計數器的結構原理

2.3.1 定時器/計數器的結構

????????8051單片機內部定時器/計數器的結構如圖3所示。單片機內部與定時器/計數器有關的部件主要有以下幾種:

????????① 兩個定時器/計數器(T0和 T1)。每個定時器/計數器都是由兩個8位計數器構成的16位計數器。

????????② TCON寄存器。TCON為控制寄存器,用來控制兩個定時器/計數器的啟動/停止。

????????③ TMOD寄存器。TMOD為工作方式控制寄存器,用來設置定時器/計數器的工作方式。兩個定時器/計數器在內部還通過總線與CPU連接,CPU可以通過總線對它們進行控制。

?圖3?定時器/計數器的結構

2.3.2 定時器/計數器的工作原理

????????由于定時器/計數器是在寄存器TCON和TMOD的控制下工作的,要讓定時器/計數器工作,必須先設置寄存器 TCON 和 TMOD(可編寫程序來設置)。單片機內部有2個定時器/計數器,它們的工作原理是一樣的,這里以定時器/計數器T0為例進行說明。

1.定時器/計數器T0用作計數器

????????要將定時器/計數器T0當作計數器使用,須設置寄存器TCON和TMOD,讓它們對定時器/計數器T0進行相應的控制,然后定時器/計數器T0才開始以計數器的形式工作。

????????(1)寄存器TCON和TMOD的設置將T0用作計數器時TCON、TMOD寄存器的設置內容主要有:

????????① 將寄存器TMOD的C/T位置“1”,如圖8-3所示,該位發出控制信號讓開關S0置“1”,定時器/計數器T0與外部輸入端T0(P3.4)接通。

????????② 設置寄存器TMOD的M0、M1位,讓它控制定時器/計數器T0的工作方式,比如讓M0=1、M1=0,可以將定時器/計數器T0設為16位計數器。

????????③ 將寄存器TCON的TR0位置“1”,啟動定時器/計數器T0開始工作。

????????(2)定時器/計數器T0的工作過程定時器/計數器T0用作計數器的工作過程有以下幾步:

????????① 計數。定時器/計數器T0啟動后,開始對外部T0端(P3.4)輸入的脈沖進行計數。

????????② 計數溢出,發出中斷請求信號。當定時器/計數器T0計數達到最大值65536時,會溢出產生一個信號,該信號將寄存器TCON的TF0位置“1”,寄存器TCON立刻向CPU發出中斷請求信號,CPU便執行中斷子程序。

2.定時器/計數器T0用作定時器

????????要將定時器/計數器T0當作定時器使用,同樣也要設置寄存器TCON和TMOD,然后定時器/計數器T0才開始以定時器形式工作。

????????(1)寄存器TCON和TMOD的設置將T0用作定時器時TCON、TMOD寄存器的設置內容主要有:

????????① 將寄存器TMOD的C/T位置“0”,如圖8-3所示,該位發出控制信號讓開關S0置“2”,定時器/計數器T0與內部振蕩器接通。

????????② 設置寄存器 TMOD 的 M0、M1位,讓它控制定時器/計數器 T0的工作方式,如讓M0=0、M1=0,可以將定時器/計數器T0設為13位計數器。

????????③ 將寄存器TCON的TR0位置“1”,啟動定時器/計數器T0開始工作。

????????(2)定時器/計數器T0的工作過程定時器/計數器T0用作定時器的工作過程有以下幾步:

????????① 計數。定時器/計數器T0啟動后,開始對內部振蕩器產生的信號(要經12分頻)輸入的脈沖進行計數。

????????② 計數溢出,發出中斷請求信號。定時器/計數器T0對內部脈沖進行計數,由0計到最大值8192(213)時需要8.192ms的時間,8.192ms后定時器/計數器T0會溢出而產生一個信號,該信號將TCON寄存器的TF0位置“1”,TCON寄存器馬上向CPU發出中斷請求信號,CPU便執行中斷子程序。

2.4 定時器/計數器的控制寄存器與四種工作方式

????????定時器/計數器是在TCON寄存器和TMOD寄存器的控制下工作的,設置這兩個寄存器相應位的值,可以對定時器/計數器進行各種控制。

2.4.1 定時器/計數器的控制寄存器TCON

????????TCON寄存器的功能主要是接收外部中斷源(INT0、INT1)和定時器/計數器(T0、T1)送來的中斷請求信號,并對定時器/計數器進行啟動/停止控制。TCON的字節地址是88H,它有8位,每位均可直接訪問(即可位尋址)。TCON的字節地址、各位的位地址和名稱功能如圖4所示。

圖4?TCON寄存器的字節地址、各位的位地址和名稱功能

????????TCON寄存器的各位功能在前面已介紹過,這里僅對與定時器/計數器有關的位進行說明。

????????① TF0位和TF1位:分別為定時器/計數器0和定時器/計數器1的中斷請求標志位。當定時器/計數器工作產生溢出時,會將TF0或TF1位置“1”,表示定時器/計數器T0或T1有中斷請求。

????????② TR0和TR1:分別為定時器/計數器0和定時器/計數器1的啟動/停止位。在編寫程序時,若將TR0或TR1設為“1”,那么T0或T1定時器/計數器開始工作;若設置為“0”,T0或T1定時器/計數器則會停止工作。?

2.4.2 定時器/計數器工作方式控制寄存器TMOD

????????TMOD寄存器的功能是控制定時器/計數器T0、T1的功能和工作方式。TMOD寄存器的字節地址是89H,不能進行位操作。在上電(給單片機通電)復位時,TMOD寄存器的初始值為00H。TMOD的字節地址和各位名稱功能如圖5所示。

?圖5 TMOD的字節地址和各位名稱功能

????????在TMOD寄存器中,高4位用來控制定時器/計數器T1,低4位用來控制定時器/計數器T0,兩者對定時器/計數器的控制功能一樣,下面以TMOD寄存器高4位為例進行說明。

????????① GATE位:門控位,用來控制定時器/計數器的啟動模式。當GATE=0時,只要TCON寄存器的TR1位置“1”,就可啟動T1開始工作;當GATE=1時,除了需要將 TCON 寄存器的 TR1 位置“1”外,還要使引腳為高電平,才能啟動T1工作。

????????② 位:定時、計數功能設置位。當時,將定時器/計數器設置為定時器工作模式;當時,將定時器/計數器設置為計數器工作方式。

????????③ M1、M0位:定時器/計數器工作方式設置位。M1、M0位取不同值,可以將定時器/計數器設置為不同的工作方式。TMOD寄存器高4位中的M1、M0用來控制T1的工作方式,低4位中的M1、M0用來控制T0的工作方式。M1、M0位不同取值與定時器/計數器工作方式的關系見表1。

表1 TMOD寄存器的M1、M0位值與定時器/計數器工作方式

2.4.3?定時器/計數器的工作方式

????????在TMOD寄存器的M1、M0位的控制下,定時器/計數器可以工作在4種不同的方式下,不同的工作方式適用于不同的場合。

1.方式0

????????當M1=0、M0=0時,定時器/計數器工作在方式0,它被設成13位計數器。在方式0時,定時器/計數器由TH、TL兩個8位計數器組成,使用TH的8位和TL的低5位。

????????(1)定時器/計數器工作在方式0時的電路結構與工作原理

????????定時器/計數器T0、T1工作在方式0時的電路結構與工作原理相同。以T0為例,將TMOD寄存器的低4位中的M1、M0位均設為“0”,T0工作在方式0。定時器/計數器T0工作在方式0時的電路結構如圖6所示。

圖6 定時器/計數器T0工作在方式0時的電路結構?

????????當T0工作在方式0時,T0是一個13位計數器(TH0的8位+TL0的低5位)。位通過控制開關S1來選擇計數器的計數脈沖來源。當時,計數脈沖來自單片機內部振蕩器(經12分頻);當時,計數脈沖來自單片機T0引腳(P3.4引腳)。GATE位控制T0的啟動方式。GATE位與引腳、TR0位一起經邏輯電路后形成CON電平,再由CON電平來控制開關S2的通斷。當CON=1時,S2閉合,T0工作;當CON=0時,S2斷開,T0停止工作(S2斷開后無信號送給T0)。

????????當GATE=0時,CON的值與TR0的值一致,TR0可直接控制T0的啟動/停止。

????????當GATE=1時,CON 的值由 TR0、兩個值決定,其中TR0的值由編程來控制(軟件控制),而的值由外部引腳的電平控制,只有當它們的值都為“1”時,CON的值才為“1”,定時器/計數器T0才能啟動。?

????????(2)定時器/計數器初值的計算若定時器/計數器工作在方式0,當其與外部輸入端(T0引腳)連接時,可以用作13位計數器;當與內部振蕩器連接時,可以用作定時器。

????????① 計數初值的計算。

????????當定時器/計數器用作13位計數器時,它的最大計數值為8192(),當T0引腳輸入8192個脈沖時,計數器就會產生溢出而發出中斷請求信號。如果希望不需要輸入8192個脈沖,計數器就能產生溢出,可以給計數器預先設置數值,這個預先設置的數值稱為計數初值。

???????在方式0時,定時器/計數器的計數初值可用下式計算:

????????計數初值=?計數值

????????比如希望輸入1000個脈沖計數器就能產生溢出,計數器的計數初值應設置為7192 (8192?1000)。

????????② 定時初值的計算。

????????當定時器/計數器用作定時器時,它對內部振蕩器產生的脈沖(經12分頻)進行計數,該脈沖的頻率為fosc/12,脈沖周期為12/fosc,定時器的最大定時時間為·12/fosc,若振蕩器的頻率fosc為12MHz,定時器的最大定時時間為8192μs。如果不希望定時這么長,定時器就能產生溢出,可以給定時器預先設置數值,這個預先設置的數值稱為定時初值。

????????在方式0時,定時器/計數器的定時初值可用下式計算:

????????定時初值=?定時值=?t·fosc/12

????????比如單片機時鐘振蕩器的頻率為12MHz(即12×106Hz),現要求定時1000μs(即1000 ×10?6s)就能產生溢出,定時器的定時初值應為

定時初值=?t·fosc/12=8192?1000×10?6×12×106/12=7192

2.方式1

????????當M1=0、M0=1時,定時器/計數器工作在方式1,它為16位計數器。除了計數位數不同外,定時器/計數器在方式1的電路結構與工作原理與方式0完全相同。定時器/計數器工作在方式1時的電路結構(以定時器/計數器T0為例)如圖7所示。

????????定時器/計數器工作在方式1時的計數初值和定時初值的計算公式分別如下:

計數初值=?計數值

定時初值=?定時值=?t·fosc/12

?圖7 定時器/計數器在方式1時的電路結構

3.方式2

????????定時器/計數器工作方式0和方式1時適合進行一次計數或定時,若要進行多次計數或定時,可讓定時器/計數器工作在方式2。當M1=1、M0=0時,定時器/計數器工作在方式2,它為8位自動重裝計數器。定時器/計數器工作在方式2時的電路結構(以定時器/計數器T0為例)如圖8所示。

圖8?定時器/計數器T0在方式2時的電路結構

????????工作在方式2時,16位定時器/計數器T0分成TH0、TL0兩個8位計數器,其中TL0用來對脈沖計數,TH0用來存放計數器初值。在計數時,當TL0計數溢出時會將TCON寄存器的TF0位置“1”,同時也控制TH0重裝開始,將TH0中的初值重新裝入TL0中,然后TL0又開始在初值的基礎上對輸入脈沖進行計數。

????????定時器/計數器工作在方式2時的計數初值和定時初值的計算分別如下:

計數初值=?計數值

定時初值=?定時值=?t·fosc/12?

4.方式3

????????定時器/計數器T0有方式3,而T1沒有(T1只有方式0~2)。當TMOD寄存器低4位中的M1=1、M0=1時,T0工作在方式3。

????????在方式3時,T0用作計數器或定時器。

????????(1)T0工作在方式3時的電路結構與工作原理

????????在方式3時,定時器/計數器T0用作計數器或定時器,在該方式下T0的電路結構如圖9所示。

圖9 T0工作在方式3時的電路結構

????????在方式3時,T0被分成TL0、TH0兩個獨立的8位計數器,其中TL0受T0的全部控制位控制(即原本控制整個T0的各個控制位,在該方式下全部用來控制T0的TL0計數器),而TH0受T1的部分控制位(TCON的TR1位和TF1位)控制。

????????在方式3時,TL0既可用作8位計數器(對外部信號計數),也可用作8位定時器(對內部信號計數);TH0只能用作8位定時器,它的啟動受TR1的控制(TCON的TR1位原本用來控制定時器/計數器T1)。當TR1=1時,TH0開始工作,當TR1=0時,TH0停止工作,當TH0計數產生溢出時會向TF1置位。

????????(2)T0工作在方式3時T1的電路結構與工作原理

????????當T0工作在方式3時,它占用了T1的一些控制位,此時T1還可以工作在方式0~2(可通過設置TMOD寄存器高4位中的M1、M0的值來設置),T1在這種情況下一般用作波特率發生器。當T0工作在方式3時,T1工作在方式1和方式2的電路結構分別如圖10(a)、(b)所示。

?圖10 T0在方式3時T1工作在方式1和方式2的電路結構

????????圖10(a)是T0在方式3時T1工作在方式1(或方式0)時的電路結構。在該方式下,T1是一個16位計數器,由于TR1控制位已被借用來控制T0的高8位計數器TH0,所以T1在該方式下無法停止,一直處于工作狀態,另外由于TF1位也借給了TH0,所以T1溢出后也不能對TF1進行置位產生中斷請求信號,T1溢出的信號只能輸出到串行通信口,此方式下的T1為波特率發生器。

????????圖10(b)是T0在方式3時T1工作在方式2時的電路結構。在該方式下,T1是一個8位自動重裝計數器,除了具有自動重裝載功能外,其他與方式1相同。?

總結

以上是生活随笔為你收集整理的51单片机——定时器/计数器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 韩国日本欧美一区 | 国产精品综合一区二区 | 男人的天堂2019 | 嫩草影院菊竹影院 | 放几个免费的毛片出来看 | www一区二区三区 | 干老太太视频 | 99久久精品一区二区三区 | 四虎永久免费在线观看 | www日本色 | 国内激情自拍 | 日韩电影中文字幕在线观看 | 在线观看欧美视频 | va毛片| 中文字幕日韩在线播放 | 成人av在线一区二区 | 欧美大片在线观看 | 色哥网| 男女扒开双腿猛进入爽爽免费 | 日本第一页 | 涩涩网站在线观看 | 在线欧美国产 | 男受被做哭激烈娇喘gv视频 | 东方欧美色图 | 欧美偷拍视频 | 国产精品av在线 | 99视频在线免费观看 | 奇米影视77777 | av一区二区三区在线观看 | 国产一区综合 | 久久亚洲综合 | 日韩一区2区 | 蜜臀av无码精品人妻色欲 | 欧美日韩色 | 美女隐私无遮挡 | 国产精品自产拍高潮在线观看 | 欧美午夜激情视频 | 国产精品亚州 | 美女100%露胸无遮挡 | 99热97| 国产精品午夜未成人免费观看 | 亚洲无吗在线观看 | 亚洲黄网av | 亚洲www久久久 | 久久天堂电影 | 久久免费高清 | 国产黄色影院 | 五月天国产在线 | 让男按摩师摸好爽 | mdyd—856冲田杏梨在线 | 夜色资源网 | 老师的肉丝玉足夹茎 | 蜜桃精品一区二区 | 日一日干一干 | com国产| 欧美黄色三级视频 | 91免费在线播放 | www.96av| 成人精品免费网站 | 中文字幕永久在线视频 | 丁香一区二区三区 | 2019年中文字幕 | 日韩久草 | 波多野结衣之潜藏淫欲 | 日韩二区三区 | 污污免费视频 | 亚洲av无码潮喷在线观看 | 日本一区二区三区在线看 | 国产精品--色哟哟 | 怡红院精品视频 | 午夜在线观看视频18 | 蜜臀久久精品久久久久 | 每日更新在线观看av | 欧美污视频 | 免费久久精品视频 | 91成年人网站 | 狠狠97 | 久久草视频在线 | 免费一级特黄毛大片 | 国产日比视频 | 麻豆md0034在线观看 | 欧美成人做爰猛烈床戏 | 男生操女生逼逼 | 少妇精品亚洲一区二区成人 | 亚洲清纯唯美 | 欧美视频xxx | 日本成人激情视频 | 天天做夜夜爽 | 成人激情在线观看 | 黄色片视频免费在线观看 | 又黄又爽又色的视频 | 日韩精品在线视频免费观看 | 国产一区视频在线观看免费 | 久久久久久国产精品免费免费 | 一卡二卡久久 | 激情久久五月 | 国产男同gay网站 | 欧美成人精品欧美一级乱 | 成人在线一区二区 |