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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)匯編語(yǔ)言(五)

          51單片機(jī)匯編語(yǔ)言(五)

          作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
          定時(shí)器 計(jì)數(shù)器

          功能說(shuō)明:

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

          開(kāi)始時(shí)接在單片機(jī)P1端口中的P1.7亮,用定時(shí)器延時(shí)60ms后P1.6亮,如此向右移動(dòng),移到最右端P1.0亮后,又回到最左端重新開(kāi)始向右移動(dòng),不斷循環(huán)。

          程序:DS01.ASM

          01: START: MOV R0, #8 ;設(shè)右移8次

          02: MOV A, #01111111B ;存入開(kāi)始點(diǎn)亮燈位置

          03: LOOP: MOV P1, A ;傳送到P1并輸出

          04: ACALL DELAY ;調(diào)延時(shí)子程序

          05: RR A ;右移一位

          06: DJNZ R0, LOOP ;判斷移動(dòng)次數(shù)

          07: JMP START ;重新設(shè)定顯示值 主程序

          08: DELAY: MOV TMOD,#00000001B; 設(shè)定TO工作在MODE1

          09: SETB TR0 ; 啟動(dòng)TO開(kāi)始計(jì)時(shí)

          10: MOV TL0,#LOW(65536-60000) ; 裝入低位

          11: MOV TH0,#HIGH(65536-60000); 裝入高位

          12: JNB TF0,$ ; T0沒(méi)有溢出等待

          13: CLR TF0 ; 產(chǎn)生溢出,清標(biāo)志位 定時(shí)延時(shí)

          14: RET ; 子程序返回 子程序

          15: END ; 程序結(jié)束

          功能說(shuō)明:

          開(kāi)始時(shí)P1.0亮,延時(shí)10秒后,左移至P1.1亮,如此左移到第6個(gè)燈(P1.5)亮后,再?gòu)念^開(kāi)始向左移動(dòng),1分鐘循環(huán)一次。

          程序:DS02.ASM

          01: START: MOV R0, #6 ;設(shè)左移6次

          02: MOV A, #11111110B ;存入開(kāi)始點(diǎn)亮燈位置

          03: LOOP: MOV P1, A ;傳送到P1并輸出

          04: ACALL DELAY ;調(diào)延時(shí)子程序

          05: RL A ;左移一位

          06: DJNZ R0, LOOP ;判斷移動(dòng)次數(shù)

          07: JMP START ;重新設(shè)定顯示值 主程序

          08:DELAY: MOV R1,#200 ;設(shè)置軟件計(jì)數(shù)初值

          09: MOV TMOD,#00000001B; 設(shè)定TO工作在MODE1

          10: SETB TR0 ; 啟動(dòng)TO開(kāi)始計(jì)時(shí)

          11: AGAIN: MOV TL0,#LOW(65536-50000) ; 裝入低位

          12: MOV TH0,#HIGH(65536-50000); 裝入高位

          13: LOOP1: JBC TF0,LOOP2 ;TF0是1轉(zhuǎn)移至LOOP2并清0

          14: JMP LOOP1

          15:LOOP2: DJNZ R1,AGAIN ;R1不是0,則轉(zhuǎn)移至AGAIN (定時(shí)加軟

          16: CLR TR0 ;是,則停止T0計(jì)時(shí) 件計(jì)數(shù))

          17: RET ; 子程序返回 延時(shí)子程序

          18: END ; 程序結(jié)束

          功能說(shuō)明:采用兩個(gè)定時(shí)器合用,T0設(shè)置為定時(shí)方式,T1設(shè)置為計(jì)數(shù)方式。T0定時(shí)時(shí)間為50ms,計(jì)滿產(chǎn)生的輸出信號(hào)由P1.7口發(fā)光二極管顯示。同時(shí)還將該信號(hào)輸入到計(jì)數(shù)器T1(P3.5腳)作為T(mén)1的計(jì)數(shù)輸入脈沖,當(dāng)輸入信號(hào)產(chǎn)生由1到0的跳變時(shí)觸發(fā)計(jì)數(shù)器工作,使計(jì)數(shù)器的值增1。計(jì)數(shù)器T1的初始值設(shè)置為100,計(jì)滿時(shí)所用的時(shí)間為50ms×2×100,即10s。并由P1.0端口發(fā)光二極管來(lái)顯示,所以P1.0端口的燈每10s點(diǎn)亮或熄滅一次。

          程序:DS03.ASM

          01: ORG 0000H ; 起始地址

          02: JMP MAIN ; 跳到主程序MAIN處

          03: ORG 000BH ; 定時(shí)器T0溢出入口地址

          04: JMP EXT0 ; 跳到定時(shí)器中斷EXT0處

          05: ORG 001BH ; 計(jì)數(shù)器T1溢出入口地址

          06: JMP EXT1 ; 跳到計(jì)數(shù)器中斷EXT1處

          07: MOV SP, #60H ; 設(shè)置堆棧 入口地址

          08: MAIN: MOV TMOD, #01100001B;設(shè)T0模式1,T1模式2

          09: MOV TL0, #LOW(65536-50000) ; 裝入定時(shí)初值

          10: MOV TH0, #HIGH(65536-50000);

          11: MOV TL1, #(256-100) ; 裝入計(jì)數(shù)初值

          12: MOV TH1, #(256-100);

          13: MOV IE, #10001010B ; 開(kāi)總中斷及T0、T1中斷

          14: SETB TR0 ; 啟動(dòng)T0開(kāi)始定時(shí)

          15: SETB TR1 ; 啟動(dòng)T1開(kāi)始計(jì)數(shù)

          16: JMP $ ; 等待溢出 主程序

          17: EXT0: MOV TL0, #LOW(65536-50000) ;重加載

          18: MOV TH0, #HIGH(65536-50000);

          19: CPL P1.7 ; P1.7反相輸出,并輸入P3.5 T0中斷

          20: RETI ; T0中斷子程序返回 子程序

          21: EXT1: CPL P1.0 ; P1.0反相輸出 T1中斷

          22: RETI ; T1中斷子程序返回 子程序

          23: END ; 結(jié)束程序結(jié)束



          評(píng)論


          技術(shù)專(zhuān)區(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); })();