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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 按鍵實現(xiàn)加減運算及連續(xù)按鍵檢測

          按鍵實現(xiàn)加減運算及連續(xù)按鍵檢測

          作者: 時間:2012-11-10 來源:網(wǎng)絡(luò) 收藏

          *
          注意:如果無法在keil里編譯,請刪除每一行的所有前導(dǎo)空白
          程序效果:若0(即7EH)按下,則加1;若1(即7DH)按下,
          則減1;若2(即7BH)按下,則快加,若按鍵3(77H)按下,則快減。
          */
          ORG 0000H
          LJMP START
          ORG 0030H
          START: MOV 30H,#00 //賦初值
          MOV 31H,#00
          MOV 32H,#01

          LOOP1: MOV R2,#04 //循環(huán)四次
          MOV R1,#0FEH //分別為:0FEH ?FDH ?FBH ?F7H

          LOOP: MOV A,R1 //賦值,用于暫存A的值
          MOV P0,A //賦初值
          RL A //循環(huán)左移
          XCH A,R1 //暫存A的值
          MOV A,P0 //讀?P0口的值
          LCALL DELAY1 //延時

          CJNE A,#7EH,LOP1 //判斷是否有按鍵按下
          LCALL ADD1 //有,則加1
          LOP12: MOV A,P0 //以下語句是用于判斷按鍵是否松開
          LCALL DELAY1
          CJNE A,#7EH,LOP1
          LCALL DISPLAY
          SJMP LOP12

          LOP1: CJNE A,#7DH,LOP2
          LCALL SUB1
          LOP22: MOV A,P0
          LCALL DELAY1
          CJNE A,#7DH,LOP2
          LCALL DISPLAY
          SJMP LOP22

          LOP2: CJNE A,#7BH,LOP3 //判斷快加的按鍵按下
          MOV R3,#10 //按下了,下面的語句用于減慢數(shù)值變化速度
          LOP32: LCALL DISPLAY
          LCALL DELAY
          DJNZ R3,LOP32
          LCALL ADD1

          LOP3: CJNE A,#77H,LOP4
          MOV R4,#10
          LOP42: LCALL DISPLAY
          LCALL DELAY
          DJNZ R4,LOP42
          LCALL SUB1

          LOP4: DJNZ R2,LOOP
          LCALL DISPLAY
          LJMP LOOP1
          //顯示子程序
          DISPLAY: MOV DPTR,#TAB //賦表首地址
          MOV A,#0FFH
          MOV P1,A //點亮最右邊的數(shù)碼管
          XCH A,R0 //暫存A的值
          MOV A,30H //顯示個位數(shù)
          MOVC A,@A+DPTR
          MOV P2,A
          LCALL DELAY1 //延時
          DEC R0 //減1,用于點亮下一個數(shù)碼管,準備下次顯示
          XCH A,R0

          MOV P1,A
          XCH A,R0
          MOV A,31H
          MOVC A,@A+DPTR
          MOV P2,A
          LCALL DELAY1
          DEC R0
          XCH A,R0

          MOV P1,A
          XCH A,R0
          MOV A,32H
          MOVC A,@A+DPTR
          MOV P2,A
          LCALL DELAY1
          RET
          //加子程序
          ADD1: INC 30H //個位加1
          MOV A,30H //把30H的值賦給A
          CJNE A,#0AH,LAP //判斷個位是否加為10
          MOV 30H,#00 //是,則清零

          INC 31H
          MOV A,31H
          CJNE A,#0AH,LAP
          MOV 31H,#00

          INC 32H
          MOV A,32H
          CJNE A,#0AH,LAP
          MOV 32H,#00
          LAP: NOP //空指令
          RET //返回
          //減子程序
          SUB1: DEC 30H //個位減1
          MOV A,30H //把30H的值賦給A
          CJNE A,#0FFH,LSP //判斷30H的值為0后是否在減1
          MOV 30H,#09 //是,則給30H賦9

          DEC 31H
          MOV A,31H
          CJNE A,#0FFH,LSP
          MOV 31H,#09

          DEC 32H
          MOV A,32H
          CJNE A,#0FFH,LSP
          MOV 32H,#09

          LSP: NOP
          RET
          //延時子程序,時間大約為2us*20*200=8ms
          DELAY: MOV R6,#20
          DEL2: MOV R5,#200
          DEL3: DJNZ R5,DEL3
          DJNZ R6,DEL2
          RET
          //延時子程序,時間約為:2us*5*250=2.5ms
          DELAY1: MOV R6,#5
          DEL4: MOV R5,#250
          DEL5: DJNZ R5,DEL5
          DJNZ R6,DEL4
          RET
          TAB: DB 3FH,06H,5BH,4FH,66H ;數(shù)碼管顯示的數(shù)值
          DB 6DH,7DH,07H,7FH,6FH
          END
          注意:如果無法在keil里編譯,請刪除每一行的所有前導(dǎo)空白,



          評論


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