欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 今天跟大家聊聊我對(duì)單片機(jī)定時(shí)器的理解 針對(duì)新手 [打印本頁(yè)]

作者: qw2597758qw    時(shí)間: 2023-4-27 09:32
標(biāo)題: 今天跟大家聊聊我對(duì)單片機(jī)定時(shí)器的理解 針對(duì)新手
計(jì)數(shù)器的工作原理
      計(jì)數(shù)器是一種基本的數(shù)字電路,可對(duì)輸入的數(shù)字時(shí)鐘(脈沖)進(jìn)行計(jì)數(shù),根據(jù)計(jì)數(shù)方向可分為加法計(jì)數(shù)器、減法計(jì)數(shù)器、可逆計(jì)數(shù)器等。
      十進(jìn)制加法計(jì)數(shù)器如下圖

加法計(jì)數(shù)器在數(shù)字時(shí)鐘的驅(qū)動(dòng)下,如上圖中,每個(gè)上升沿的到來(lái),就使計(jì)數(shù)值加一,其數(shù)值為0-->9,每次數(shù)值滿時(shí)就會(huì)產(chǎn)生一個(gè)進(jìn)位(溢出)信號(hào)。
定時(shí)器的本質(zhì)
      定時(shí)器的本質(zhì)就是已知頻率(周期)的數(shù)字時(shí)鐘(脈沖)驅(qū)動(dòng)下的計(jì)數(shù)器。比如上面的計(jì)數(shù)器,如果已知驅(qū)動(dòng)時(shí)鐘為1MHz,那么每個(gè)時(shí)鐘周期為1us,十個(gè)計(jì)數(shù)周期就是10us,其溢出周期為10us,也可視為定時(shí)10us。如果想定時(shí)5us,則計(jì)數(shù)5個(gè)周期即可。8051的基本定時(shí)器有Timer0和Timer1,STC15F2K61S的定時(shí)器有T0、T1、T2。其T0的基本結(jié)構(gòu)如下圖所示(其他定時(shí)器基本類似)

定時(shí)器T0的核心是一個(gè)16位、可置數(shù)的加法計(jì)數(shù)器。配置寄存器包括:時(shí)鐘源選擇、方式控制、加載(初值)、中斷允許等。
定時(shí)器的軟件編程
以定時(shí)器T0為例,定時(shí)器編程的步驟為:
(1) 確定定時(shí)器/計(jì)數(shù)器的工作方式----初始化:TMOD
(2) 定時(shí)器0/1工作頻率1T還是12T:AUXR
(3) 定時(shí)器0/1的時(shí)鐘輸出是否:AUXR2
(4) 計(jì)算定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)初值,裝載TH和TL寄存器。
(5) 中斷設(shè)置(特殊功能寄存器IE、IP):EA
(6) 啟動(dòng)定時(shí)/計(jì)數(shù)器(TCON):TR0/TR1


相關(guān)寄存器:

定時(shí)初值的計(jì)算:
      前面講了,定時(shí)器是一個(gè)16位的加法計(jì)數(shù)器,對(duì)輸入脈沖進(jìn)行計(jì)數(shù),從0計(jì)到65535 (2^16-1),然后進(jìn)位溢出。軟件通過(guò)溢出標(biāo)志位TF0進(jìn)行定時(shí)的判斷,因此計(jì)數(shù)器計(jì)了多少個(gè)脈沖,是從初值開(kāi)始到65535溢出,這個(gè)脈沖計(jì)數(shù)值才是其定時(shí)器的定時(shí)周數(shù)。比如工作時(shí)鐘12MHz,默認(rèn)12分頻,即加法計(jì)數(shù)器的計(jì)數(shù)脈沖是1MHz,即計(jì)數(shù)周期1us,如果要定時(shí)1ms,則需要計(jì)數(shù)1ms/1us=1000個(gè)計(jì)數(shù)周期。先設(shè)置初值為(65536-1000),那么計(jì)數(shù)器溢出的時(shí)候它總共計(jì)數(shù)了65536-(65536-1000)=1000個(gè)周期。
      因此定時(shí)器初值x的計(jì)算公式是:
            
其中fosc為工作頻率,t為所需的定時(shí)時(shí)間。
基本定時(shí)器實(shí)驗(yàn)
      運(yùn)用定時(shí)器進(jìn)行“延時(shí)”是最基本的應(yīng)用。與前面的“軟件延時(shí)”對(duì)應(yīng),采用定時(shí)器延時(shí)的方式,我們成為“硬件延時(shí)”。
  LED燈的硬件電路如附件

LED燈L1閃爍
      設(shè)定50ms亮滅1次(延時(shí)太短,人眼不能分辨出LED燈閃爍)。以STC-ISP下載界面中默認(rèn)的11.0592MHz時(shí)鐘頻率計(jì)算,12分頻,則計(jì)數(shù)器的初值應(yīng)為65536-50ms*11.0592MHz/12=65536-46080=19456
       定時(shí)器初始化代碼為:
       TMOD=0;
       AUXR=0;
       TH0=19456/256;   //整除取整,得高8位
       TL0=19456%256;  //取余,得低8位
       ET0=1;EA=1;   //中斷使能,不采用中斷,應(yīng)清零
       TR0=1;      //開(kāi)啟定時(shí)器,相當(dāng)于開(kāi)關(guān)
   (1) 采用輪詢的方式      

(2) 采用中斷的方式
         定時(shí)器T0的中斷號(hào)為1

LED燈單盞燈從左到右流水
設(shè)計(jì)分析:這里采用定時(shí)中斷的方式,設(shè)定一個(gè)LED燈顯示變量x(8bit分別對(duì)應(yīng)8盞LED燈,主程序中根據(jù)這個(gè)顯示變量x去控制LED燈的亮滅;而定時(shí)中斷服務(wù)程序“定時(shí)到,就移位1次”。這樣就變成兩個(gè)進(jìn)程:主程序不停地輸出控制LED;中斷服務(wù)程序定時(shí)改變控制變量。


仿真給大家,代碼大家可以自己寫(xiě): 附件內(nèi)只有仿真 不含代碼.7z (34.6 KB, 下載次數(shù): 10)


作者: qw2597758qw    時(shí)間: 2023-4-27 09:35
有些圖片被吃了 可以下載這個(gè)文件更加完整

RTF 文檔.7z

1.22 MB, 下載次數(shù): 14, 下載積分: 黑幣 -5


作者: nlming    時(shí)間: 2023-5-4 08:28
很詳細(xì)的講解,淺顯易懂
作者: Q__Q    時(shí)間: 2023-5-13 11:46
我現(xiàn)在就是這個(gè)中斷轉(zhuǎn)不過(guò)彎來(lái) 謝謝樓主分享經(jīng)驗(yàn)  加緊學(xué)習(xí)中
作者: Q__Q    時(shí)間: 2023-5-13 13:05
本帖最后由 Q__Q 于 2023-5-13 13:09 編輯

請(qǐng)問(wèn)大神們,不知道提問(wèn)對(duì)不對(duì) 大神們不要笑,在51系統(tǒng)中晶振12MHz,機(jī)器周期是1微秒,計(jì)算出來(lái)一個(gè)機(jī)器周期剛好是12個(gè)震蕩脈沖,因機(jī)器周期是固定的,所以用6Mhz的晶振 一個(gè)機(jī)器周期是2微秒,我這樣理解沒(méi)錯(cuò)吧? 溢出是需要從0-65536個(gè)計(jì)數(shù)周期,那這個(gè)周期是按震蕩數(shù),還是按機(jī)器周期算,如果是按照機(jī)器周期算的話,那就是要計(jì)數(shù)到65536微秒才溢出對(duì)吧,
作者: sonique0371    時(shí)間: 2023-5-15 08:55
Q__Q 發(fā)表于 2023-5-13 13:05
請(qǐng)問(wèn)大神們,不知道提問(wèn)對(duì)不對(duì) 大神們不要笑,在51系統(tǒng)中晶振12MHz,機(jī)器周期是1微秒,計(jì)算出來(lái)一個(gè)機(jī)器周 ...

按機(jī)器周期算。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1