<tfoot id="ygvxt"><menuitem id="ygvxt"></menuitem></tfoot>
    • <kbd id="ygvxt"></kbd>
      <th id="ygvxt"><progress id="ygvxt"></progress></th>

      您好,歡迎訪問(wèn)上海意泓電子科技有限責(zé)任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁(yè) ->  新聞資訊 -> 單片機(jī)

      ?51單片機(jī) (3)定時(shí)器和計(jì)數(shù)器

      文章出處:?jiǎn)纹瑱C(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
      2018
      05-19

      注:定時(shí)器與計(jì)數(shù)器原理與使用方法相似、此處計(jì)數(shù)器知識(shí)為基礎(chǔ)普及、后面詳講

      2個(gè)定時(shí)器(寄存器)、定時(shí)器0、定時(shí)器1、(計(jì)數(shù)器0、計(jì)數(shù)器1)

      TMOD:定時(shí)器/計(jì)數(shù)器模式控制寄存器 詳見(jiàn)百度百科TMOD

      • 每經(jīng)過(guò)一個(gè)機(jī)器周期、寄存器+1

      • TF:定時(shí)器溢出標(biāo)志。溢出時(shí)自動(dòng)置1。中斷時(shí)硬件清零否則必須軟件清零。

      • TR:定時(shí)器運(yùn)行控制位。置1開(kāi)始計(jì)時(shí)、清零停止計(jì)時(shí)。

      • C/T:該位為0時(shí)用作計(jì)時(shí)器、該位為1時(shí)用作計(jì)數(shù)器。

      溢出時(shí)時(shí)間-開(kāi)始計(jì)時(shí)時(shí)間=預(yù)設(shè)定時(shí)時(shí)間


      一個(gè)機(jī)器周期共有12個(gè)振蕩脈沖周期


      若設(shè)定時(shí)為0.02s,則:

      12*(65535-X)/11059200=0.02s  

      定時(shí)器作“加1”次數(shù):X=47104=0xB800次  時(shí)間為0.02s

      使用定時(shí)器的方法

      1、設(shè)置特殊功能寄存器TMOD,使之工作在需求的狀態(tài)。
      2、設(shè)置計(jì)數(shù)寄存器的初值,精確設(shè)定好定時(shí)時(shí)間。
      3、設(shè)置特殊功能寄存器TCON,通過(guò)打開(kāi)TR來(lái)讓定時(shí)器進(jìn)行工作。

      4、判斷寄存器TCON的FT0位、檢測(cè)定時(shí)器溢出情況。


      假設(shè)我們使用定時(shí)器0、定時(shí)為0.02s,兩個(gè)寄存器計(jì)時(shí)

      TMOD=0x01;   TMOD=0x01,指的是采用T0方式,將M1置0,M0置1,是方式一的定時(shí)器

      高八位寄存器TH0=0xB8、低八位寄存器TL0=0x00


      C程序?qū)崿F(xiàn)1s鐘定時(shí)

      1. #include   

      2. typedef unsigned char uint8;  

      3. typedef unsigned int uint16;  

      4. sbit led=P1^0;  

      5. uint8 counter;  

      6.   

      7. void main(){  

      8.    TMOD=0x01;  

      9.    TH0=0xb8;  

      10.    TL0=0x00;  

      11.    TR0=1;   

      12.    led=1;  

      13.    counter=0;  

      14.    while(1){  

      15.       if(TF0==1){   //如果達(dá)到溢出 0.02s后溢出  

      16.          TF0=0;  //軟件清零  

      17.          TH0=0xB8;   //重置計(jì)數(shù)基數(shù)  

      18.              TL0=0x00;  

      19.          counter++;  //溢出一次計(jì)次數(shù)  

      20.       }  

      21.       if(counter==50){   //0.02s*50=1s  

      22.         counter=0;    //清零  

      23.         led=~led; //取反使P1^0亮滅  

      24.       }  

      25.    }  

      26. }  


      上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

      CopyRight 2020-2025 www.hljhgw.com All rights reserved   滬ICP備2021005866號(hào)

      国产强伦姧在线观看,…中文天堂在线一区,亚洲欧洲精品污网站在线观看,在线视频综合站
      <tfoot id="ygvxt"><menuitem id="ygvxt"></menuitem></tfoot>
        • <kbd id="ygvxt"></kbd>
          <th id="ygvxt"><progress id="ygvxt"></progress></th>