《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 其他 > 教程:51單片機定時器概述及例程分析

教程:51單片機定時器概述及例程分析

2023-01-31
來源:滑小稽筆記

  6.1 單片機" target="_blank">51單片機定時器概述

  6.1.1 定時器的描述

  要實現(xiàn)定時功能,除了利用單片機內(nèi)部的定時/計數(shù)器,也可以采用下面三種方法:

  (1)軟件定時:軟件定時不占用硬件資源,但占用了CPU時間,降低了CPU的利用率。

  (2)采用時基電路定時:例如采用555電路,外接必要的元器件(電阻和電容),即可構成硬件定時電路。但在硬件連接好以后,定時值與定時范圍不能由軟件進行控制和修改,即不可編程。

  (3)采用可編程芯片定時:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強,使用靈活。在單片機的定時/計數(shù)器不夠用時,可以考慮進行擴展。

  定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時/計數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0,T1的啟動和停止及設置溢出標志。

  加1計數(shù)器輸入的計數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;另一個是 T0 或T1引腳輸入的外部脈沖源。每來一個脈沖計數(shù)器加1,當加到計數(shù)器為全1時,再輸入一個脈沖就使計數(shù)器回零,且計數(shù)器的溢出會使TCON中TF0或TF1置1,向CPU發(fā)出中斷請求(定時/計數(shù)器中斷允許時)。如果定時/計數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計數(shù)模式,則表示計數(shù)值已滿。可見,由溢出時計數(shù)器的值減去計數(shù)初值才是加1計數(shù)器的計數(shù)值。

  設置為定時器模式時,加1計數(shù)器是對內(nèi)部機器周期計數(shù)(1個機器周期等于12個振蕩周期,即計數(shù)頻率為晶振頻率的1/12)。計數(shù)值乘以機器周期就是定時時間。

  設置為計數(shù)器模式時,外部事件計數(shù)脈沖由T0或T1引腳輸入到計數(shù)器。在每個機器周期的某個期間采樣T0、T1引腳電平。當某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時,則計數(shù)器加1,更新的計數(shù)值在下一個機器周期裝入計數(shù)器。由于檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期。當晶振頻率為12MHz 時,最高計數(shù)頻率不超過6MHz,即計數(shù)脈沖的周期要大于2us。

  6.1.2 51單片機定時器結構

267.JPG

  6.1 定時器中斷相關寄存器

  6.1.1 工作模式寄存器TMOD

  寄存器地址:0x89

266.JPG

  Bit 7:定時器1門控

  0:關閉門控,只要TR1為1,就可以啟動定時/計數(shù)器工作

  1:開啟門控,此時只有當TR1為1且外部中斷引腳為高電平時,才能夠啟動定時器工作

  Bit 6:定時器1工作模式選擇

  0:定時模式,時鐘源來自MCU內(nèi)部

  1:計數(shù)模式,時鐘源來自T1引腳上

  Bit 5~Bit 4:定時器1計數(shù)模式選擇

  00:數(shù)據(jù)寄存器使用13位

  01:數(shù)據(jù)寄存器使用16位

  10:8位自動重裝定時/計數(shù)器

  11:T1停止計數(shù)

  Bit 3:定時器0門控

  0:關閉門控,只要TR0為1,就可以啟動定時/計數(shù)器工作

  1:開啟門控,此時只有當TR0為1且外部中斷引腳為高電平時,才能夠啟動定時器工作

  Bit 2:定時器0工作模式選擇

  0:定時模式,時鐘源來自MCU內(nèi)部

  1:計數(shù)模式,時鐘源來自T0引腳上

  Bit 1~ Bit 0:定時器0計數(shù)模式選擇

  00:數(shù)據(jù)寄存器使用13位

  01:數(shù)據(jù)寄存器使用16位

  10:8位自動重裝定時/計數(shù)器

  11:T0分成兩個獨立的8位定時/計數(shù)器

  6.1.2 定時器0數(shù)據(jù)寄存器高字節(jié)TH0

  寄存器地址:0x8C

265.JPG

  6.1.3 定時器0數(shù)據(jù)寄存器低字節(jié)TL0

  寄存器地址:0x8A

264.JPG

  6.1.4 定時器1數(shù)據(jù)寄存器高字節(jié)TH1

  寄存器地址:0x8D

263.JPG

  6.1.5 定時器1數(shù)據(jù)寄存器低字節(jié)TL1

  寄存器地址:0x8B

262.JPG

  6.2 例程分析

  6.2.1 原理圖

 261.JPG

  6.2.2 實現(xiàn)的功能

  使用定時器0,控制LED以1Hz頻率閃爍。

  6.2.3 源代碼

260.JPG

  重點關注以下幾行代碼:

  第20行:定義了一個unsigned char的變量,為什么要定義這樣一個全局變量。首先定時器的數(shù)據(jù)寄存器只有16位,也就是說最大數(shù)據(jù)范圍只有65535,超過這個數(shù)據(jù)后就會從0重新開始計時,根據(jù)單片機的計數(shù)周期設置在1us,最大定時時間只有65.535ms,而達到1s是遠遠不夠的,所以定義一個全局變量來計算定時器產(chǎn)生中斷的次數(shù),假設我們設置定時器50ms中斷一次,那么,當進入20次中斷,則意味著定時器剛好定時1s。

  第28行:這里用到了一條語句,LED = !LED,嘆號代表取反,只能用于布爾型變量,所謂布爾型變量就是只有0和1兩種狀態(tài),也就是1個二進制位,在C語言中,嘆號代表二進制位取反,“~”則代表按位取反運算,例如有一個二進制位初值是1,取反的結果就是0,但是如果有一個字節(jié)0x8F,此時只能用按位取反運算,而不能用二進制位取反運算,0x8F按位取反的結果應該是0x70,例程中這條語句的含義就是LED二進制位取反后將結果重新賦值給LED變量。

  第23行~第24行:這兩行用于給定時器重新寫入初值,因為51單片機的數(shù)據(jù)寄存器進入中斷后就會從0開始重新計數(shù),假設最開始設置的值是1000,進入中斷后,定時的時間就是65535-1000+1=64536us,進入中斷如果不設置初值,那么下一次進入中斷時定時的時間就是65536us,與最初的時間誤差是65536-64536=1000us,所以每次進入中斷都需要給數(shù)據(jù)寄存器重新寫入初值。

  第42行~第43行:定時器在初始化的時候就要給寫入初始值,為什么要寫入這個初始值呢,首先數(shù)據(jù)寄存器是只能加1運算,從0加到65535,但是如果我們只想要定時50us就進入中斷應該怎么處理呢,這就需要給定時器的數(shù)據(jù)寄存器先寫入一個數(shù),讓定時器從這個數(shù)開始加1,加到65535剛好是50us,那么這個初值就是65535-50,這個定時的時間剛好就是50us,而/和%則是代表取整和取余。

  注:取整與取余運算

  (1)取整運算:用/表示,代表取除法運算中整數(shù)部分,例如2/3,得到的結果就是商為0且余數(shù)為2,此時取整運算得到的結果就是0;

  (2)取余運算:用%表示,代表取除法運算中余數(shù)部分,例如2/3,得到的結果就是商為0且余數(shù)為2,此時取余運算得到的結果就是2。



 更多信息可以來這里獲取==>>電子技術應用-AET<< 

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
日韩午夜在线| 亚洲日本欧美| 亚洲黄一区二区| 国产一区二区三区久久久| 国产乱码精品| 国产精品理论片| 欧美四级伦理在线| 欧美视频免费在线观看| 欧美日一区二区三区在线观看国产免 | 国产精品手机在线| 国产精品护士白丝一区av| 欧美性猛交99久久久久99按摩| 欧美日产国产成人免费图片| 欧美激情视频网站| 欧美日韩国产精品自在自线| 欧美精品亚洲精品| 欧美三级网址| 国产精品国产三级国产aⅴ9色| 欧美午夜精品久久久久久人妖 | 一本色道久久精品| 亚洲无玛一区| 午夜日韩在线| 亚洲高清中文字幕| 亚洲欧洲日韩在线| 99国产欧美久久久精品| 在线一区亚洲| 亚洲免费影视第一页| 午夜视频一区| 久久色在线播放| 欧美国产乱视频| 欧美日韩国产va另类| 国产精品成人一区二区艾草| 国产精品揄拍500视频| 国产一区二区日韩| 亚洲国产精品精华液网站| 99国产精品一区| 午夜精品999| 91久久国产自产拍夜夜嗨| 亚洲毛片一区| 午夜精品视频在线观看| 久久―日本道色综合久久| 欧美国产日韩一区二区在线观看| 欧美日韩在线免费| 国产日韩在线不卡| 亚洲国产一区在线| 亚洲一区二三| 亚洲高清在线精品| 亚洲一区二区三区四区中文| 久久久777| 欧美日韩精品不卡| 国产日韩欧美一区二区| 亚洲黄色影院| 亚洲一线二线三线久久久| 亚洲第一黄色网| 亚洲视频在线二区| 久久婷婷久久| 欧美视频一区二区三区…| 国产专区一区| 日韩午夜精品| 久久激情网站| 亚洲影院在线| 欧美成人资源| 国产欧美日韩视频一区二区| 亚洲黄色一区| 欧美一区中文字幕| 在线亚洲一区| 久热精品视频| 国产精品婷婷| 亚洲精品视频啊美女在线直播| 午夜视频一区二区| 在线亚洲精品| 欧美aaa级| 国产三级欧美三级日产三级99| 亚洲国内在线| 久久精品99久久香蕉国产色戒| 亚洲视频一区二区在线观看 | 精品999在线播放| 亚洲午夜精品一区二区| 亚洲精品视频一区二区三区| 久久都是精品| 欧美性猛交xxxx乱大交退制版| 伊人影院久久| 欧美一级淫片播放口| 亚洲视频在线看| 牛牛影视久久网| 国产一区二区三区成人欧美日韩在线观看 | 国产乱码精品一区二区三区av| 亚洲国产视频直播| 久久精品国产欧美亚洲人人爽| 亚洲欧美日韩精品| 欧美日韩精品免费观看视频| 在线高清一区| 欧美在线免费一级片| 亚洲欧美日韩成人| 欧美区二区三区| 亚洲国产高清自拍| 久久爱www久久做| 欧美在线亚洲综合一区| 欧美午夜片在线免费观看| 亚洲激情av| 亚洲人成网在线播放| 久久影视三级福利片| 国产亚洲一区二区三区在线观看| 一区二区欧美亚洲| 一本大道久久a久久精品综合| 老司机免费视频一区二区三区 | 9l视频自拍蝌蚪9l视频成人| 亚洲精品一线二线三线无人区| 久久婷婷国产麻豆91天堂| 国产一区二区三区自拍| 午夜久久久久久| 香蕉久久夜色精品国产使用方法| 欧美三级电影大全| 日韩一区二区免费看| a91a精品视频在线观看| 欧美精品一区三区| 亚洲三级免费电影| 99在线观看免费视频精品观看| 欧美成人一区二免费视频软件| 亚洲第一精品久久忘忧草社区| 亚洲国产成人av好男人在线观看| 久久久午夜电影| 狠狠综合久久| 91久久极品少妇xxxxⅹ软件| 免费在线视频一区| 亚洲第一主播视频| 99re视频这里只有精品| 欧美麻豆久久久久久中文| 日韩网站在线观看| 亚洲伊人伊色伊影伊综合网| 国产精品高潮呻吟久久av无限| 亚洲一区欧美激情| 久久riav二区三区| 国模精品娜娜一二三区| 亚洲国产欧美一区| 欧美精品v日韩精品v国产精品| 亚洲精品中文在线| 亚洲在线视频| 国产欧美在线| 久久精品国产精品亚洲| 免费在线视频一区| 99精品欧美一区二区三区综合在线 | 一区二区三区无毛| 亚洲精品视频在线播放| 欧美日韩免费精品| 亚洲综合色自拍一区| 久久久久久9| 亚洲国产欧美在线| 亚洲一区二区三区激情| 国产九色精品成人porny| 久久激情一区| 欧美激情亚洲激情| 亚洲图片自拍偷拍| 久久久久久精| 亚洲欧洲日产国产网站| 亚洲在线观看免费视频| 国产欧美日韩亚洲精品| 亚洲国产精品一区二区第一页| 欧美精品在线一区二区| 亚洲一区免费网站| 欧美jizzhd精品欧美巨大免费| 亚洲精品社区| 久久福利电影| 91久久精品一区二区别| 亚洲欧美清纯在线制服| 伊人久久亚洲热| 亚洲一区二区三区激情| 狠狠色综合网| 亚洲伊人久久综合| 有坂深雪在线一区| 亚洲嫩草精品久久| 在线视频成人| 午夜精品福利一区二区蜜股av| 黄色成人av| 亚洲免费视频中文字幕| 影音先锋亚洲电影| 午夜精品一区二区三区四区| 亚洲第一精品影视| 欧美在线播放一区| 日韩一级免费观看| 麻豆精品在线视频| 亚洲欧美成aⅴ人在线观看| 欧美成人情趣视频| 午夜亚洲激情| 欧美日韩在线精品一区二区三区| 久久高清国产| 国产精品国产精品国产专区不蜜| 亚洲国产视频直播| 国产女主播一区| 亚洲视频日本| 亚洲国产日韩在线| 久久精品系列| 亚洲视频自拍偷拍| 欧美成人免费小视频| 性久久久久久久| 欧美视频在线观看视频极品| 亚洲精品国产品国语在线app| 国产欧美婷婷中文| 亚洲视频狠狠| 亚洲欧洲精品一区二区三区 |