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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 定時(shí)計(jì)數(shù)器T0作定時(shí)應(yīng)用技術(shù)(二)

          定時(shí)計(jì)數(shù)器T0作定時(shí)應(yīng)用技術(shù)(二)

          作者: 時(shí)間:2011-02-27 來源:網(wǎng)絡(luò) 收藏

          1. 實(shí)驗(yàn)任務(wù)

          AT89S51的定時(shí)/計(jì)數(shù)器T0產(chǎn)生2秒鐘的定時(shí),每當(dāng)2秒定時(shí)到來時(shí),更換指示燈閃爍,每個(gè)指示閃爍的頻率為0.2秒,也就是說,開始L1指示燈以0.2秒的速率閃爍,當(dāng)2秒定時(shí)到來之后,L2開始以0.2秒的速率閃爍,如此循環(huán)下去。0.2秒的閃爍速率也由定時(shí)/計(jì)數(shù)器T0來完成。

          2. 電路原理圖

          4.16.1

          3. 系統(tǒng)板硬件連線

          (1. 把“系統(tǒng)”區(qū)域中的P1.0P1.3用導(dǎo)線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的L1L4

          4. 程序設(shè)計(jì)內(nèi)容

          (1. 由于采用中斷方式來完成,因此,對于中斷源必須它的中斷入口地址,對于定時(shí)/計(jì)數(shù)器T0來說,中斷入口地址為000BH,因此在中斷入口地方加入長跳轉(zhuǎn)指令來執(zhí)行中斷服務(wù)程序。書寫匯編源程序格式如下所示:

          ORG 00H

          LJMP START

          ORG 0BH ;定時(shí)/計(jì)數(shù)器T0中斷入口地址

          LJMP INT_T0

          START: NOP ;主程序開始

          .

          .

          INT_T0: PUSH ACC ;定時(shí)/計(jì)數(shù)器T0中斷服務(wù)程序

          PUSH PSW

          .

          .

          POP PSW

          POP ACC

          RETI ;中斷服務(wù)程序返回

          END

          (2. 定時(shí)2秒,采用16位定時(shí)50ms,共定時(shí)40次才可達(dá)到2秒,每50ms產(chǎn)生一中斷,定時(shí)的40次數(shù)在中斷服務(wù)程序中完成,同樣0.2秒的定時(shí),需要4次才可達(dá)到0.2秒。對于中斷程序,在主程序中要對中斷開中斷。

          (3. 由于每次2秒定時(shí)到時(shí),L1L4要交替閃爍。采用ID來號來識別。當(dāng)ID0時(shí),L1在閃爍,當(dāng)ID1時(shí),L2在閃爍;當(dāng)ID2時(shí),L3在閃爍;當(dāng)ID3時(shí),L4在閃爍

          5. 程序框圖

          T0中斷服務(wù)程序框圖

          主程序框圖

          4.16.2

          6. 匯編源程序

          TCOUNT2S EQU 30H

          TCNT02S EQU 31H

          ID EQU 32H

          ORG 00H

          LJMP START

          ORG 0BH

          LJMP INT_T0

          START: MOV TCOUNT2S,#00H

          MOV TCNT02S,#00H

          MOV ID,#00H

          MOV TMOD,#01H

          MOV TH0,#(65536-50000) / 256

          MOV TL0,#(65536-50000) MOD 256

          SETB TR0

          SETB ET0

          SETB EA

          SJMP $

          INT_T0: MOV TH0,#(65536-50000) / 256

          MOV TL0,#(65536-50000) MOD 256

          INC TCOUNT2S

          MOV A,TCOUNT2S

          CJNE A,#40,NEXT

          MOV TCOUNT2S,#00H

          INC ID

          MOV A,ID

          CJNE A,#04H,NEXT

          MOV ID,#00H

          NEXT: INC TCNT02S

          MOV A,TCNT02S

          CJNE A,#4,DONE

          MOV TCNT02S,#00H

          MOV A,ID

          CJNE A,#00H,SID1

          CPL P1.0

          SJMP DONE

          SID1: CJNE A,#01H,SID2

          CPL P1.1

          SJMP DONE

          SID2: CJNE A,#02H,SID3

          CPL P1.2

          SJMP DONE

          SID3: CJNE A,#03H,SID4

          CPL P1.3

          SID4: SJMP DONE

          DONE: RETI

          END

          7. C語言源程序

          #include AT89X51.H>

          unsigned char tcount2s;

          unsigned char tcount02s;

          unsigned char ID;

          void main(void)

          {

          TMOD=0x01;

          TH0=(65536-50000)/256;

          TL0=(65536-50000)%256;

          TR0=1;

          ET0=1;

          EA=1;

          while(1);

          }

          void t0(void) interrupt 1 using 0

          {

          tcount2s++;

          if(tcount2s==40)

          {

          tcount2s=0;

          ID++;

          if(ID==4)

          {

          ID=0;

          }

          }

          tcount02s++;

          if(tcount02s==4)

          {

          tcount02s=0;

          switch(ID)

          {

          case 0:

          P1_0=~P1_0;

          break;

          case 1:

          P1_1=~P1_1;

          break;

          case 2:

          P1_2=~P1_2;

          break;

          case 3:

          P1_3=~P1_3;

          break;

          }

          }

          塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


          評論


          相關(guān)推薦

          技術(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); })();