<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ò) 收藏
          7.2功能說明

          用一位數(shù)碼管循環(huán)顯示0~9數(shù)字,數(shù)字變換間隔的時(shí)間為1秒。

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

          程序:SMG2.ASM

          01: START: MOV DPTR, #TABLE ; 存表

          02: MOV R0, #0 ; 設(shè)定初始值

          03: LOOP : MOV A, R0

          04: MOVC A, @A+DPTR ; 取表代碼

          05: MOV P0, A ; 送P0輸出

          06: ACALL DLY1S ; 調(diào)延時(shí)程序 存表取表

          07: INC R0 ; R0值加1

          08: CJNE R0, #10 , LOOP ; 不是10,循環(huán)

          09: JMP START ; 重新開始 判斷循環(huán)

          10: DLY1S: MOV R5, #50 ;

          11: D1: MOV R6, #100 ;

          12: D2: MOV R7, #100 ;

          13: DJNZ R7, $ ;

          14: DJNZ R6, D2 ;

          15: DJNZ R5, D1 ; 1秒延時(shí)

          16: RET ; 子程序

          17: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;

          18: DB 99H, 92H, 82H, 0F8H ;

          19: DB 80H, 90H, 88H, 83H ;

          20: DB 0C6H, 0A1H, 86H, 8EH ; 代碼表

          21: END 程序結(jié)束

          7.3功能說明

          使用兩位數(shù)碼管顯示器,利用掃描方式循環(huán)顯示00~99兩位數(shù)。

          程序:SMG3.ASM

          01: START: MOV R0, #0 ;初始化計(jì)數(shù)器

          02: MOV DPTR, #TABLE ;存入查表啟始地址

          03: LOOP: ACALL DISPLAY ; 調(diào)顯示子程序

          04: INC R0 ; 計(jì)數(shù)器加1

          05: CJNE R0 ,#100, LOOP ; 沒到100 循環(huán)

          06: JMP START ; 到開始處 主程序

          07: DISPLAY::MOV A, R0 ;

          08: MOV B, #10 ; 16進(jìn)制換成10進(jìn)制

          09: DIV AB ; A÷B商存A,余數(shù)存B

          10: MOV R1, A ; R1內(nèi)存放十位數(shù)

          11: MOV R2, B ; R2內(nèi)存放個(gè)位數(shù) 十進(jìn)

          12: MOV R3, #50 ; 設(shè)導(dǎo)通頻率50次

          13: LOOP1: MOV A, R2 ; 個(gè)位數(shù)顯示

          14: ACALL CHANG ; 調(diào)顯示子程序

          15: CLR P2.0 ;開個(gè)位顯示

          16: ACALL DLY10mS ; 調(diào)延時(shí)10ms程序 個(gè)位

          17: SETB P2.0 ; 關(guān)閉個(gè)位顯示 顯示

          18: MOV A, R1 ; 取十位數(shù)

          19: ACALL CHANG ; 調(diào)取表顯示子程序

          20: CLR P2.1 ; 開十位顯示

          21: ACALL DLY10mS ; 調(diào)延時(shí)10ms程序 十位

          22: SETB P2.1 ; 關(guān)閉十位顯示 顯示

          23: DJNZ R3, LOOP1 ; 100次沒完,繼續(xù)循環(huán) 掃描

          24: RET ; 子程序

          25: CHANG: MOVC A, @A+DPTR ;

          26: MOV P0, A ;

          27: RET ; 取表子程序

          28: DLY10mS:MOV R6, #20 ;

          29: D1: MOV R7, #248 ;

          30: DJNZ R7, $ ;

          31: DJNZ R6, D1 ; 延時(shí)10 m.S

          32: RET ; 子程序

          33: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;

          34: DB 99H, 92H, 82H, 0F8H ;

          35: DB 80H, 90H, 88H, 83H ;

          36: DB 0C6H, 0A1H, 86H, 8EH ; 代碼表

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

          鍵盤控制

          8.1功能說明:

          用八位指撥開關(guān)(DIP)作單片機(jī)的輸入,控制輸出端口連接的八只LED發(fā)光二極管。如若DIP1開關(guān)為 ON(向右撥動(dòng))則LED1亮,其它開關(guān)作用相同。

          程序:SR01.ASM

          01: LOOP: MOV A, P3 ; 從P3讀入DIP開關(guān)值

          02: MOV P1, A ; 從P1輸出

          03: JMP LOOP ; 無(wú)窮循環(huán)

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

          8.2功能說明:

          用DIP開關(guān)中的低4位作二進(jìn)制的輸入,控制輸出端數(shù)碼管顯示器的輸出。

          程序:SR02.ASM

          01: MOV DPTR,#TABLE ; 存表

          02: MOV P0, #0FFH ; LED全滅

          03: LOOP: MOV A, P3 ; 從P3口讀入DIP開關(guān)值

          04: ANL A, #0FH ; 高4位清0,取低四位

          05: ACALL CHANG ; 轉(zhuǎn)成七段顯示碼

          06: MOV P0, A ; 從P0輸出

          07: JMP LOOP ; 轉(zhuǎn)移LOOP處,循環(huán)

          08: CHANG: MOVC A,@A+DPTR ; 取碼

          09: RET ; 返回 轉(zhuǎn)換顯示碼子程序

          10: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;

          11: DB 99H, 92H, 82H, 0F8H ;

          12: DB 80H, 90H, 88H, 83H ;

          13: DB 0C6H, 0A1H, 86H, 8EH ; 顯示碼表

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

          8.3功能說明:

          用兩個(gè)按鍵開關(guān)K1和K2作輸入,K1為電源指示燈開關(guān),K2為工作指示燈開關(guān)。分別控制電源指示燈(P1.0接的LED)和工作指示燈(P1.7接的LED)的接通和關(guān)閉。接通電源時(shí),電源指示燈是在亮的狀態(tài)。

          當(dāng)按K2時(shí),工作指示燈亮,電源指示燈滅。按K1時(shí),電源指示燈亮,工作指示燈滅。

          程序:SR03.ASM

          01: START: MOV P1, #11111110B ; P1.0所接LED亮

          02: JB P2.5 , $ ; 判斷P2.5(K2鍵)是否為1

          03: ON: MOV P1, #01111111B ; P1.7所接LED亮

          04: JNB P2.4, START ; 判斷P2.4(K1鍵)是是否為0

          05: JMP ON ; 未按K1鍵,則跳至ON

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

          8.4功能說明:

          由四個(gè)按鍵開關(guān)組成獨(dú)立式鍵盤,控制燈左移、右移和閃爍。

          程序:JP01.ASM

          01: START: MOV P1,#0FFH ;設(shè)置輸出口初值

          02: MOV A,#0FFH ;設(shè)置輸入方式

          03: MOV P2,A ;

          04: LOOP: MOV A,P2 ;讀入鍵盤狀態(tài)

          05: CJNE A,#0FFH,LP0 ;有鍵按下否

          06: JMP LOOP ;無(wú)鍵按下等待

          07: LP0: ACALL DELAY1 ;調(diào)延時(shí)去抖動(dòng)

          08: MOV A,P2 ;重讀入鍵盤狀態(tài)

          09: CJNE A,#0FFH,LP1 ;非誤讀則轉(zhuǎn)

          10: JMP LOOP ; 按鍵查詢

          11: LP1: JNB P2.4, A1 ;K1鍵按下轉(zhuǎn)A1

          12: JNB P2.5, A2 ;K2鍵按下轉(zhuǎn)A2

          13: JNB P2.6, A4 ;K3鍵按下轉(zhuǎn)A3

          14: JNB P2.7, A4 ;K4鍵按下轉(zhuǎn)A4 鍵按下后轉(zhuǎn)

          15: JMP START ;無(wú)鍵按下返回 功能處理程序

          16: A1: MOV R0, #8 ;設(shè)置左移位數(shù)

          17: MOV A ,#0FEH ;設(shè)置左移初值

          18: LOOP2: MOV P1, A ;輸出至P1

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

          20: RL A ;左移一位

          21: DJNZ R0, LOOP2 ;判斷移動(dòng)位數(shù) 1號(hào)功能鍵

          22: JMP START ;返回主程序開始處 處理程序

          23: A2: MOV R0,#8 ;設(shè)置右移位數(shù)

          24: MOV A ,#0FCH ;設(shè)置右移初值

          25: LOOP3: RR A ;右移一位

          26: MOV P1, A ;輸出至P1

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

          28: DJNZ R0, LOOP3 ;判斷移動(dòng)位數(shù) 2號(hào)功能鍵

          29: JMP START ;返回主程序開始處 處理程序

          30: A3: MOV R0,#6 ;設(shè)置閃爍次數(shù)

          31: MOV A ,#0F0H ;設(shè)置初值

          32: LOOP4: MOV P1, A ;輸出至P1

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

          34: CPL A ;反相

          35: MOV P1,A ;輸出

          36: DJNZ R0, LOOP4 ;判斷移動(dòng)位數(shù) 3號(hào)功能鍵

          37: JMP START ;返回主程序開始處 處理程序

          38: A4: MOV R0,#10 ;設(shè)置閃爍次數(shù)

          39: MOV A, #00H ;設(shè)置初值

          40: LOOP5: MOV P1,A ;輸出

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

          42: CPL A ;反相

          43: MOV P1,A ;輸出

          44: DJNZ R0, LOOP5 ;判斷閃爍次數(shù) 4號(hào)功能鍵

          45: MP START ;返回主程序開始處 處理程序

          46: DELAY1: MOV R3, #60 ;消抖延時(shí)子程序

          47: D2: MOV R4, #248 ;

          48: DJNZ R4, $ ;

          49: DJNZ R3, D2 消除抖動(dòng)

          50: RET ; 延時(shí)子程序

          51: DELAY: MOV R5, #50 ;延時(shí)1秒子程序

          52: DLY1: MOV R6, #100 ;

          53: DLY2: MOV R7, #100 ;

          54: DJNZ R7, $ ;

          55: DJNZ R6, DLY2 ;

          56: DJNZ R5, DLY1 ;

          57: RET ; 延時(shí)子程序

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



          關(guān)鍵詞: 51單片機(jī)匯編語(yǔ)

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