<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)系列連載5—定時(shí)器

          51單片機(jī)系列連載5—定時(shí)器

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          在上一節(jié)中我們提到,中斷最明顯的應(yīng)用就是定時(shí)器,接下來就介紹一下定時(shí)器,實(shí)際上定時(shí)器就是一種計(jì)數(shù)器,定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16)位,由高8位和低8位兩個(gè)寄存器組成,主要是TMOD與TCON這兩個(gè)寄存器。

          本文引用地址:http://www.ex-cimer.com/article/201611/322437.htm

          TMOD是定時(shí)/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。


          首先,說一下TMOD寄存器,它的低四位用于T0,高四位用于T1,其格式如下:

          其中,GATE:門控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。即此時(shí)定時(shí)器的啟動(dòng)多了一條件。C/T:定時(shí)/計(jì)數(shù)模式選擇位。C/T=0為定時(shí)模式;C/T=1為計(jì)數(shù)模式。M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1M0進(jìn)行設(shè)置。

          定時(shí)器初始化程序應(yīng)完成如下工作:

          (1)、對(duì)TMOD賦值,以確定T0和T1的工作方式。

          (2)、計(jì)算初值,并將其寫入TH0、TL0或TH1、TL1。

          (3)、中斷方式時(shí),則對(duì)IE賦值,開放中斷。

          (4)、使TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器定時(shí)或計(jì)數(shù)。

          接下來,重點(diǎn)講一下定時(shí)器初值的計(jì)算。請(qǐng)記住下面這個(gè)公式:

          t=T*(2L-C)

          其中,t是定時(shí)時(shí)間,一般都是機(jī)器周期的一半,T是機(jī)器周期,L是計(jì)數(shù)器的長(zhǎng)度,C是計(jì)數(shù)常數(shù),一般是我們需要求得的初值。找個(gè)實(shí)例分析一下就明白了。

          當(dāng)然,這個(gè)定時(shí)器都是與其它的內(nèi)容一起應(yīng)用的,在后面還會(huì)有更詳細(xì)的介紹,非常有意思。



          關(guān)鍵詞: 51單片機(jī)定時(shí)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();