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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 定時(shí)器0延時(shí)程序

          定時(shí)器0延時(shí)程序

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          本程序主要實(shí)現(xiàn)的是用DA指令進(jìn)行10進(jìn)制調(diào)整,使得兩位數(shù)碼管循環(huán)顯示0-99,延時(shí)1s。

          (1):工作方式0下延時(shí)1s

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

          查詢方式:

          ORG 0000H
          JMP MAIN
          ORG 30H
          MAIN:
          MOV TMOD,#00H ;設(shè)置TIMER0工作在MODE0
          MOV R4,#00H ;設(shè)置數(shù)碼管顯示初值
          ;SETB EA
          ;SETB ET0

          START:
          MOV R2,#200;延時(shí)1s
          MOV P2,R4 ;計(jì)數(shù)初值送P2顯示
          LCALL DELAY
          XCH A,R4
          ADD A,#01H
          DA A ;R4送A累加,并做十進(jìn)制調(diào)整
          XCH A,R4 ;調(diào)整后回送R4

          ;CJNE R4,#60H,START ;若要顯示60進(jìn)制,需加判斷語句
          ;MOV R4,#00H
          JMP START



          DELAY:
          SETB TR0
          REINIT:
          MOV TL0,#(8192-5000)%256
          MOV TH0,#(8192-5000)/256 ;定時(shí)5ms
          LOOP:JBC TF0,LOOP1 ;TF0是否為1,是則跳到LOOP1,并清除TF0
          SJMP LOOP ;不是則跳到LOOP繼續(xù)查詢TF0溢出標(biāo)志位狀態(tài)
          LOOP1:
          DJNZ R2,REINIT ;R2不為0繼續(xù)裝入初值,繼續(xù)定時(shí)
          CLR TR0
          RET
          END

          中斷方式:

          ORG 0000H
          JMP MAIN
          ORG 000BH;定時(shí)器0中斷的入口地址
          JMP INT_0
          ORG 30H
          MAIN:
          MOV TMOD,#00H
          MOV R4,#00H
          SETB EA
          SETB ET0
          MOV TL0,#(8192-5000)%256
          MOV TH0,#(8192-5000)/256
          SETB TR0
          START:
          MOV P2,R4
          MOV R2,#200
          CJNE R2,#0,$
          MOV R2,#200
          XCH A,R4
          ADD A,#01H
          DA A
          XCH A,R4
          JMP START

          INT_0:
          CLR TF0
          MOV TL0,#(8192-5000)%256
          MOV TH0,#(8192-5000)/256
          DEC R2
          RETI
          END

          如果采用方式1的話,只需要重設(shè)TMOD為#01H,TH0=0D8H,TL0=0F0H即可。

          (2):定時(shí)器0工作方式2延時(shí)1s

          由于工作方式2下一次定時(shí)的最大時(shí)間為256us,所以設(shè)定一次循環(huán)的話,寄存器中循環(huán)初值設(shè)置最大也達(dá)不到延時(shí)1s的目的,因此采用了用兩個寄存器來循環(huán)定時(shí)。

          查詢方式:

          ORG 0000H
          JMP MAIN
          ORG 30H
          MAIN:
          MOV TMOD,#02H ;工作方式2
          MOV R4,#00H

          START:
          MOV R2,#200 ;延遲50ms
          MOV R3,#20 ;延遲1s
          COUNT:

          MOV P2,R4
          LCALL DELAY
          DJNZ R3,COUNT;循環(huán)定時(shí)
          XCH A,R4
          ADD A,#01H
          DA A
          XCH A,R4
          JMP START

          DELAY:
          SETB TR0

          REINIT:
          MOV TL0,#6
          MOV TH0,#6 ;定時(shí)250us

          LOOP:JBC TF0,LOOP1
          SJMP LOOP

          LOOP1:
          DJNZ R2,REINIT
          CLR TR0
          RET
          END

          中斷方式:

          ORG 0000H
          JMP MAIN
          ORG 000BH
          JMP INT_0
          ORG 30H
          MAIN:
          MOV TMOD,#02H
          MOV R4,#00H
          SETB EA
          SETB ET0
          MOV TL0,#6
          MOV TH0,#6
          SETB TR0
          START:
          MOV R3,#20
          MOV R2,#200
          LOOP:
          MOV P2,R4
          CJNE R2,#0,$
          MOV R2,#200
          DJNZ R3,LOOP ;循環(huán)定時(shí)
          XCH A,R4
          ADD A,#01H
          DA A
          XCH A,R4
          JMP START

          INT_0:
          CLR TF0
          MOV TL0,#6
          MOV TH0,#6
          DEC R2
          RETI
          END

          附圖:



          關(guān)鍵詞: 定時(shí)器0延時(shí)程

          評論


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