久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 183077|回復: 82
打印 上一主題 下一主題
收起左側

關于51單片機的定時器T0、T1總結

  [復制鏈接]
跳轉到指定樓層
樓主
ID:243791 發表于 2017-12-26 23:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我總結的51單片機的中斷定時器原理,之后會附上附件。第一次發帖,不足之處請多多包含!
我總結的文稿畫面很花,所以給上個參考,各位不習慣的話,請酌情選擇。


目錄

一、原理:
1、對中斷和定時器進行初始化:
①定時器/計數器工作方式寄存器
②設定初值
③開啟中斷和定時器
2、設置中斷服務程序:
3、主函數:
二、各個定時器和工作方式:
方式0:
方式2:
方式3:
借鑒:郭天祥《新概念51單片機C語言教程》
一、原理:
51單片機,擁有兩個定時器,用來中斷計數,分別是T0和T1。而52單片機和51單片機的定時器是一樣的,只是52比51多了一個定時器/計數器T2,它們的設置都大同小異,下面我來總結各個定時器的用法。
定時器T0與T1不同之處在于它們的工作方式3不同,方式0、1、2相同。
M1
M0
工作方式
0
0
方式0,13位定時器/計數器
0
1
方式1,16位定時器/計數器
1
0
方式2,8位自動重裝的8位定時器/計數器
1
1
方式3,僅適用于T0,分成兩個8位計數器,
當設置成T1時停止計數

首先我們看要使用定時器T0應該設置的東西:
1、對中斷寄存器和定時器進行初始化:
              
初始化函數里的內容也可以寫在頭文件里,但是為了美觀和好查閱,就把它單獨寫出來,后面在頭文件里直接調用就行。那么應該要進行初始化的設置:
定時器工作方式
單片機內,有其中一個特殊寄存器叫TMOD,這是用來設置定時器工作方式的寄存器,通過軟件,將其寄存器內的D0~D7位置0或1,從而達成對定時器的操作。
寄存器TMOD
定時器1
定時器0
位序號
D7
D6
D5
D4
D3
D2
D1
D0
位符號
GATE
C/
M1
M0
GATE
C/
M1
M0
如表格,這是定時器的工作方式寄存器TMOD,要更改定時器的工作方式,我們只用到M1、M2所以其他位一般置0,又因為我們使用的是T0的定時器,所以就有:
0000 0000
使用工作方式0
0000 0001
使用工作方式1
0000 0010
使用工作方式2
0000 0011
使用工作方式3

控制M1、M0將它們置1或0,即可達成操作控制方式的目的,然后轉換成16進制即方便查閱。
同理,使用定時器1時也是這么設置。注意,有時候也有使用兩個定時器T0、T1的時候,那么就是0001 0001兩個都是工作方式1。請大家舉一反三。
②設定初值
先說說總值:
以方式1為例(之后會介紹其他方式):
方式1為16位的定時器/計數器,對定時器T0來說是分成兩個寄存器(可以形象地比作容器吧,網上有比我更形象的比喻,我就不多寫了,請自行查閱):TH0為高八位,TL0為低八位,組成了16位的定時器,當低位TL0計滿就向高位TH0移一個數,然后清零。
以12Mhz的晶振來說,機器周期是1us,計滿TH0、TL0就需要216-1個數,再來一個數就“溢出”產生中斷,一次溢出也就是65536us,約等于65.5ms,如果要定時50ms的話就要給他們裝一個預裝值(初值),總值-需要值=預裝值,
也就是65536-50000=15536,預裝后,定時器從預裝值開始加值,定時器溢出中斷后,會重新從預裝值開始加值加到50ms就再產生中斷,從而達到了定時的目的。如果要定時1s就可以讓定時器中斷1000ms/50ms=20次。
另外一點,TH0和TL0中應該裝入的總數是15536,然后把15536對256求模:15536/256=60裝入TH0中,把15536對256求余:15536%256=176裝入TL0中,因為這是兩個八位28*28的容器。
所以就有了
TH0=(65535-50000)/256
TL0=(65535-50000)%256
③開啟中斷和定時器
關于中斷,需要用到中斷允許寄存器:
IE
位序號
D7
D6
D5
D4
D3
D2
D1
D0
位符號
EA
-
ET2
ES
ET1
EX1
ET0
EX0
位地址
AFH
-
ADH
ACH
ABH
AAH
A9H
A8H

定時器中斷需要的是:
總中斷EA:用來開啟全局中斷。
ET0、1、2:各個定時器中斷位。
使用中斷位只用將其置1就行,例如EA=1;ET0=1;
打開了中斷開關只是完成了一半,還需要定時器控制寄存器:
TCON
位序號
D7
D6
D5
D4
D3
D2
D1
D0
位符號
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H

使用方法也是和中斷寄存器一樣,
定時器0運行控制位TR0:用來開啟定時器0.
把TR0置1,TR0=1;就開啟了定時器。
2、設置中斷服務程序:
中斷服務程序:就是當計滿TH0、TL0時溢出申請中斷,然后單片機允許中斷時,所要發生的事情。允許后就自動跳轉到中斷服務程序,并執行。
在服務程序中,如果不裝入初值,那定時器中斷服務完成后,就會從0開始重新計時,所以要在中斷程序中重新計算并裝入初值。
然后給一個變量(變量的意義為中斷次數),變量+1,當中斷次數達到20次的時候(50ms*20次=1000ms=1s),次數清零,并且讓產生指令(例如讓二極管亮呀,讓I/O口發生什么事呀)。
3、主函數:
由于有了初始化函數,所以直接調用即可(不然主函數很混亂)。
While(1);這段是為了等待函數發生,挺含糊的。
另外:一般中斷服務程序中不要寫過多的處理語句,否則程序會來不及執行代碼,下一次中斷又來襲,結果程序久而久之就亂套了。
所以while處可以改成:把if處理語句寫到while處。
附上完整程序
二、各個定時器和工作方式:
先來看看工作方式:
工作方式
方式0,13位定時器/計數器
方式1,16位定時器/計數器
方式2,8位自動重裝的8位定時器/計數器
方式3,僅適用于T0,分成兩個8位計數器,
當設置成T1時停止計數

工作方式有四種:0、1、2、3。我們之前已經學習了方式1的工作方式,那么接下來就先來看看其他的工作方式:
方式0
方式0,的用法和方式1的用法一樣,但是值得注意的是:
方式0是13位的定時器,它的低位TL0是五位的,所以它的總值是28*25=8192。它能裝的值也不能那么多了,于是就裝入5ms:
TH0(8192-5000)/32;
TL0(8192-5000)%32;
32是5位寄存器的容量。
所以要中斷200次才能達到1s。
這個方式0可以用來做短時間中斷。
方式2
方式0和方式1,當計數溢出后,計數器變為0,所以要反復重新裝填初值,這會影響定時精度。但是方式2可以解決這個問題。
如圖,其中低位TL0是8位定時器,而TH0是常數緩沖器,當低位TL0溢出時,在溢出標志位TF0置1的同時,自動將高位TH0的常數重新裝入TL0中,讓TL0從初值開始重新計數,這樣就不用人為軟件重新裝入初值帶來的誤差,從而提高精度。
由于兩個是分開的,所以計算初值可以不用求余取模:
              TL0=總值-要計數的個數;
              TH0=總值-要計數的個數;


以11.0592MHz為晶振,那么機械周期為12x(1/11059200)≈1.085us,以計時1s為例,當要計250個數時耗時1.0851x250=271.275us,再來算計時1s要用多少次,即1000000/271.275≈3686次。
那么就是:

TL0=256-250=6;
TH0=256=250=6;
由于方式2是自動裝填,已經不用人為裝填了,所以:
中斷服務程序中只有一句num++
整個過程就是:

方式3
接下來介紹方式3,方式3不同于其他三個方式,它只能用于T0,也就是定時器0,和方式2差不多,也是把TL0、TH0分成兩個獨立的寄存器,但是TH0也參與計數,也就是兩個獨立的8位定時器/計數器。
普通的使用一樣,TL0計數溢出后置位TF0,并申請中斷,之后重裝。但是由于TL0占用了TR0和TF0,所以TH0只能占用定時器              T1的TR1和TF1。所以定時器T1一定不要用在有中斷的場合,當然,T1同樣可以正常工作在方式0、1、2下。通常這種情況,T1都被用來當做串行口的波特率發生器。
首先把T0、T1的中斷位和控制位打開:
然后分別給低位TL0和高位TH0設置中斷服務程序:
可以注意到interrupt后面的數值,這個是編譯器識別不同中斷的唯一符號:
52單片機的中斷級別
中斷源
默認中斷級別
序號(c語言)
入口地址(匯編)
INT0-外部中斷0
最高
0
0003H
T0-定時器0中斷
第2
1
000BH
INT1-外部中斷1
第3
2
0013H
T1-定時器1中斷
第4
3
001BH
T1/R1串行口中斷
第5
4
0023H
T2-定時器2中斷
最低
5
002BH


然后到主函數:
調用init();
可以看到if語句里面的符號是>=,為什么呢?因為當if語句的值到了時,主程序停止下來判斷num1==3686是否為真,當它還在判斷的時候,num2是還在走的,于是當主程序判斷好num1的時候再去判斷num2,為時已晚,num2這時可能已經是1844或者1845或者更高的數了,所以要變成>=。

完整的Word格式文檔51黑下載地址:
51定時器.docx (148.84 KB, 下載次數: 669)


評分

參與人數 15黑幣 +170 收起 理由
1109 + 15
changhz + 5
初始 + 5 很給力!
123嗒嗒 + 6 贊一個!
HardyChen + 30 絕世好帖!
trevis22 + 5 贊一個!
lizzz + 5
ping264888 + 5 很給力!
最帥的王哥哥 + 8 很給力!
stkh + 8 共享資料的黑幣獎勵!
七九六 + 10 是真的真的很不錯,一定得鼓勵啊。新手需要.
黑色輝 + 5 贊一個!
Eleven_1ing + 5 贊一個!
ambisia + 8 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏100 分享淘帖 頂32 踩
回復

使用道具 舉報

來自 2#
ID:285105 發表于 2018-2-24 11:23 | 只看該作者
守著這個貼子研究了3個小時,終于搞懂了,看郭天祥視頻時要停下來研究一下這里再看視頻就順了,有部分重了,也有個別錯字,但絕對是好貼子
回復

使用道具 舉報

來自 3#
ID:279940 發表于 2018-3-12 19:35 | 只看該作者
好貼子。我準備將51單片機兩個功能合并到一起,正遇到怎么合理用T0和T1。原來兩個功能的程序都用到TH0, TL0和TH1,TL1。不知道合并之后怎么實現,看起來T0和T1被重復利用了。

樓主大人能否幫忙解答一下?謝謝啦!
回復

使用道具 舉報

地板
ID:98122 發表于 2017-12-27 11:09 | 只看該作者
這么好的帖子,都沒有人頂?樓主寫的非常不錯,分享精神值得學習!
回復

使用道具 舉報

5#
ID:289572 發表于 2018-3-15 23:53 | 只看該作者
贊一個,這個很有用,在單片機定時器上的邏輯很清晰,真是我需要的
回復

使用道具 舉報

6#
ID:287703 發表于 2018-5-12 11:55 | 只看該作者
endura82 發表于 2018-3-12 19:35
好貼子。我準備將51單片機兩個功能合并到一起,正遇到怎么合理用T0和T1。原來兩個功能的程序都用到TH0, TL0 ...

我也遇到了,你怎么解決的,大佬
回復

使用道具 舉報

7#
ID:329552 發表于 2018-5-15 19:13 | 只看該作者
非常感謝樓主的分享 正在學這方面的知識!
回復

使用道具 舉報

8#
ID:162135 發表于 2018-6-27 10:59 | 只看該作者
這么好的帖子,都沒有人頂?樓主寫的非常不錯,分享精神值得學習!
回復

使用道具 舉報

9#
ID:20672 發表于 2018-8-4 17:00 | 只看該作者
郭天祥的資料上差不多啊~~~
回復

使用道具 舉報

10#
ID:384991 發表于 2018-8-21 08:35 | 只看該作者
好帖子,真的很不錯,值得分享
回復

使用道具 舉報

11#
ID:377611 發表于 2018-9-23 11:37 | 只看該作者
謝謝,正在努力學習
回復

使用道具 舉報

12#
ID:272609 發表于 2018-9-27 09:04 | 只看該作者
總結的很到位,很有收益
回復

使用道具 舉報

13#
ID:403231 發表于 2018-9-28 11:54 | 只看該作者
這個講得仔細,值得學習啊。
回復

使用道具 舉報

14#
ID:307643 發表于 2018-9-28 17:07 | 只看該作者
很有用,網頁保存了
回復

使用道具 舉報

15#
ID:308301 發表于 2018-10-2 07:18 來自手機 | 只看該作者
真是好帖子,新手專用,非常詳細!感謝樓主
回復

使用道具 舉報

16#
ID:413541 發表于 2018-11-28 17:32 | 只看該作者
實驗內容:正常情況下8個小燈按狀態點亮,時間間隔為1S。當按下控制按鈕后,低四位亮高四位滅,間隔為0.5S后,低四位滅高四位亮。

樓主,想請教你一個問題,對于這個要求,我想用T0定時器給流水燈計時,然后T1定時器用來給外部中斷那個0.5秒閃爍計時,我的外部中斷服務程序應該怎么寫?從流水燈轉化到中斷服務函數時是不是應該把流水燈初始化一遍?

希望樓主能指點一下
回復

使用道具 舉報

17#
ID:443727 發表于 2018-12-10 23:02 來自手機 | 只看該作者
正準備學習了解定時器相關知識
回復

使用道具 舉報

18#
ID:469266 發表于 2019-3-1 14:12 | 只看該作者
是真的真的很不錯,一定得鼓勵啊。
回復

使用道具 舉報

19#
ID:494577 發表于 2019-3-20 11:46 | 只看該作者
51單片機定時器最全的資料
回復

使用道具 舉報

20#
ID:293479 發表于 2019-4-1 10:21 | 只看該作者
總結很到位的文章,贊
回復

使用道具 舉報

21#
ID:468240 發表于 2019-4-3 15:45 來自手機 | 只看該作者
厲害,總結的不錯
回復

使用道具 舉報

22#
ID:399179 發表于 2019-4-3 20:19 來自手機 | 只看該作者
正在努力學習中!好帖,收藏了
回復

使用道具 舉報

23#
ID:432611 發表于 2019-4-18 19:58 來自手機 | 只看該作者
帥,詳細易懂
回復

使用道具 舉報

24#
ID:520151 發表于 2019-4-24 11:09 | 只看該作者
寫的是真的真的很不錯,值得得鼓勵。菜鳥正需要.
回復

使用道具 舉報

25#
ID:520297 發表于 2019-4-24 11:46 | 只看該作者
看了一會28*28沒搞懂,后面終于看懂了是2的8次方.
回復

使用道具 舉報

26#
ID:515751 發表于 2019-4-25 21:14 | 只看該作者
謝謝,正在努力學習
回復

使用道具 舉報

27#
ID:382454 發表于 2019-4-26 06:26 來自手機 | 只看該作者
郭老師的入門寶典
回復

使用道具 舉報

28#
ID:395068 發表于 2019-4-26 09:13 | 只看該作者
樓主有個小錯誤,在工作方式1的時候,因為是16位定時器,所以是低八位和高八位組成的,不應該是216-1,而是256-1
回復

使用道具 舉報

29#
ID:206853 發表于 2019-4-26 10:50 | 只看該作者
下學習謝謝謝謝謝謝
回復

使用道具 舉報

30#
ID:510355 發表于 2019-5-25 21:19 | 只看該作者
寫的很好,收益很多
回復

使用道具 舉報

31#
ID:554297 發表于 2019-6-4 07:58 | 只看該作者
寫的很詳細。我正遇到怎么用T0和T1的使用問題。原來兩個功能的程序都用到TH0, TL0和TH1,TL1。不知道合并之后怎么實現,看起來T0和T1被重復利用了。
回復

使用道具 舉報

32#
ID:158886 發表于 2019-6-7 09:26 | 只看該作者
現在正在學定時器
回復

使用道具 舉報

33#
ID:555693 發表于 2019-6-26 14:03 | 只看該作者
守著這個貼子研究了3個小時,終于搞懂了,看郭天祥視頻時要停下來研究一下這里再看視頻就順了,有部分重了,也有個別錯字,但絕對是好貼子
回復

使用道具 舉報

34#
ID:575983 發表于 2019-7-3 14:12 | 只看該作者
寫的很好,很詳細,贊
回復

使用道具 舉報

35#
ID:589941 發表于 2019-7-25 11:29 | 只看該作者
剛接觸單片機3天,學到中斷這個知識點,感謝樓主分享的資料,讓新手能更懂定時器的各種工作方式
回復

使用道具 舉報

36#
ID:553901 發表于 2019-8-17 11:57 | 只看該作者
之前一直沒理解,看了博主的帖子算是懂了定時器和中斷的原理。贊
回復

使用道具 舉報

37#
ID:624368 發表于 2019-10-17 22:48 | 只看該作者
非常好
回復

使用道具 舉報

38#
ID:617456 發表于 2019-10-18 21:50 | 只看該作者
謝謝,感謝分享
回復

使用道具 舉報

39#
ID:59423 發表于 2019-10-19 13:13 | 只看該作者
非常棒的定時器教程,反復開了好幾遍,一定要搞懂。
回復

使用道具 舉報

40#
ID:20672 發表于 2019-11-14 12:40 | 只看該作者
很基礎~~
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 国产激情精品 | 国产精品久久国产精品99 | 欧美成人免费在线 | 99亚洲 | 亚洲人人| 91免费版在线观看 | 一区二区三区在线 | 欧 | 亚洲高清在线观看 | 国产片淫级awww | 国产日韩欧美在线 | 91av视频在线观看 | 久久精品国产亚洲 | 999国产精品视频免费 | 久久久久国产一区二区 | 久久久这里都是精品 | 欧美在线视频二区 | 国产一区二区久久久 | 天天射影院 | 久久精品av麻豆的观看方式 | 日本精品视频在线观看 | 欧美性大战xxxxx久久久 | 成人免费观看男女羞羞视频 | 国产在线视频在线观看 | 亚洲第一天堂无码专区 | 毛片网站免费观看 | 欧美日韩在线视频观看 | 久久亚洲一区二区三区四区 | 免费观看一级黄色录像 | 欧美亚洲另类丝袜综合网动图 | 色偷偷噜噜噜亚洲男人 | 天天曰天天曰 | 手机在线一区二区三区 | 在线观看精品 | 视频一区中文字幕 | 成人免费激情视频 | 久久精品久久久 | 日韩欧美亚洲一区 | 东京av男人的天堂 | 国产日韩av一区二区 | 亚洲国产成人av |