標題: 今天跟大家聊聊我對單片機定時器的理解 針對新手 [打印本頁]
作者: qw2597758qw 時間: 2023-4-27 09:32
標題: 今天跟大家聊聊我對單片機定時器的理解 針對新手
計數器的工作原理
計數器是一種基本的數字電路,可對輸入的數字時鐘(脈沖)進行計數,根據計數方向可分為加法計數器、減法計數器、可逆計數器等。
十進制加法計數器如下圖
1.gif (106.66 KB, 下載次數: 39)
下載附件
2023-4-27 15:03 上傳
加法計數器在數字時鐘的驅動下,如上圖中,每個上升沿的到來,就使計數值加一,其數值為0-->9,每次數值滿時就會產生一個進位(溢出)信號。 定時器的本質
定時器的本質就是已知頻率(周期)的數字時鐘(脈沖)驅動下的計數器。比如上面的計數器,如果已知驅動時鐘為1MHz,那么每個時鐘周期為1us,十個計數周期就是10us,其溢出周期為10us,也可視為定時10us。如果想定時5us,則計數5個周期即可。8051的基本定時器有Timer0和Timer1,STC15F2K61S的定時器有T0、T1、T2。其T0的基本結構如下圖所示(其他定時器基本類似)
4.png (103.42 KB, 下載次數: 50)
下載附件
2023-4-27 15:03 上傳
定時器T0的核心是一個16位、可置數的加法計數器。配置寄存器包括:時鐘源選擇、方式控制、加載(初值)、中斷允許等。 定時器的軟件編程
以定時器T0為例,定時器編程的步驟為:
(1) 確定定時器/計數器的工作方式----初始化:TMOD
(2) 定時器0/1工作頻率1T還是12T:AUXR
(3) 定時器0/1的時鐘輸出是否:AUXR2
(4) 計算定時器/計數器的計數初值,裝載TH和TL寄存器。
(5) 中斷設置(特殊功能寄存器IE、IP):EA
(6) 啟動定時/計數器(TCON):TR0/TR1
相關寄存器:
定時初值的計算:
前面講了,定時器是一個16位的加法計數器,對輸入脈沖進行計數,從0計到65535 (2^16-1),然后進位溢出。軟件通過溢出標志位TF0進行定時的判斷,因此計數器計了多少個脈沖,是從初值開始到65535溢出,這個脈沖計數值才是其定時器的定時周數。比如工作時鐘12MHz,默認12分頻,即加法計數器的計數脈沖是1MHz,即計數周期1us,如果要定時1ms,則需要計數1ms/1us=1000個計數周期。先設置初值為(65536-1000),那么計數器溢出的時候它總共計數了65536-(65536-1000)=1000個周期。
因此定時器初值x的計算公式是:
1.png (2.15 KB, 下載次數: 45)
下載附件
2023-4-27 15:00 上傳
其中fosc為工作頻率,t為所需的定時時間。
基本定時器實驗
運用定時器進行“延時”是最基本的應用。與前面的“軟件延時”對應,采用定時器延時的方式,我們成為“硬件延時”。
LED燈的硬件電路如附件
LED燈L1閃爍
設定50ms亮滅1次(延時太短,人眼不能分辨出LED燈閃爍)。以STC-ISP下載界面中默認的11.0592MHz時鐘頻率計算,12分頻,則計數器的初值應為65536-50ms*11.0592MHz/12=65536-46080=19456
定時器初始化代碼為:
TMOD=0;
AUXR=0;
TH0=19456/256; //整除取整,得高8位
TL0=19456%256; //取余,得低8位
ET0=1;EA=1; //中斷使能,不采用中斷,應清零
TR0=1; //開啟定時器,相當于開關
(1) 采用輪詢的方式
5.png (58.23 KB, 下載次數: 54)
下載附件
2023-4-27 15:04 上傳
(2) 采用中斷的方式 定時器T0的中斷號為1
3.png (28.87 KB, 下載次數: 49)
下載附件
2023-4-27 15:00 上傳
LED燈單盞燈從左到右流水 設計分析:這里采用定時中斷的方式,設定一個LED燈顯示變量x(8bit分別對應8盞LED燈,主程序中根據這個顯示變量x去控制LED燈的亮滅;而定時中斷服務程序“定時到,就移位1次”。這樣就變成兩個進程:主程序不停地輸出控制LED;中斷服務程序定時改變控制變量。
2.png (39.21 KB, 下載次數: 60)
下載附件
2023-4-27 15:00 上傳
51hei.png (2.88 KB, 下載次數: 49)
下載附件
2023-4-27 17:58 上傳
仿真給大家,代碼大家可以自己寫:
附件內只有仿真 不含代碼.7z
(34.6 KB, 下載次數: 10)
2023-4-27 15:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: qw2597758qw 時間: 2023-4-27 09:35
有些圖片被吃了 可以下載這個文件更加完整
-
-
RTF 文檔.7z
2023-4-27 17:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.22 MB, 下載次數: 14, 下載積分: 黑幣 -5
作者: nlming 時間: 2023-5-4 08:28
很詳細的講解,淺顯易懂
作者: Q__Q 時間: 2023-5-13 11:46
我現在就是這個中斷轉不過彎來 謝謝樓主分享經驗 加緊學習中
作者: Q__Q 時間: 2023-5-13 13:05
本帖最后由 Q__Q 于 2023-5-13 13:09 編輯
請問大神們,不知道提問對不對 大神們不要笑,在51系統中晶振12MHz,機器周期是1微秒,計算出來一個機器周期剛好是12個震蕩脈沖,因機器周期是固定的,所以用6Mhz的晶振 一個機器周期是2微秒,我這樣理解沒錯吧? 溢出是需要從0-65536個計數周期,那這個周期是按震蕩數,還是按機器周期算,如果是按照機器周期算的話,那就是要計數到65536微秒才溢出對吧,
作者: sonique0371 時間: 2023-5-15 08:55
按機器周期算。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
青青久久
|
久久精品亚洲一区二区三区浴池
|
日韩欧美二区
|
中国美女一级黄色片
|
中文字幕高清av
|
欧美在线视频网
|
福利网站在线观看
|
国产女人第一次做爰毛片
|
精品国产一区二区国模嫣然
|
国产乱码久久久久久一区二区
|
免费的黄色片子
|
国产高清在线精品
|
国产成人免费视频网站高清观看视频
|
91精品久久久久久久久久
|
91精品国产91久久久久久不卞
|
成年人视频在线免费观看
|
欧美激情一区二区
|
波多野结衣二区
|
亚洲日韩中文字幕一区
|
国产亚洲一区二区三区在线观看
|
av免费入口|
伊人网一区
|
中文字幕在线免费视频
|
欧美国产一区二区
|
欧美一区二区三区国产
|
久久夜视频
|
成人妇女免费播放久久久
|
欧美激情久久久
|
国产精品久久久久久久久久尿
|
天天干精品
|
麻豆久久精品
|
国产日韩精品一区
|
日韩在线免费播放
|
一区二区三区视频在线免费观看
|
日韩精品免费在线观看
|
国产精品免费播放
|
9999久久|
欧美久久久网站
|
久久亚洲天堂
|
91人人在线
|
午夜精品久久久久99蜜
|