久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

鍵盤接口程序設計之加減運算

作者:佚名   來源:本站原創   點擊數:  更新時間:2009年10月24日   【字體:

/*
程序效果:1、開機時顯示899
2、按鍵key0一次數字加1,按鍵key1一次數字減1。
加到999時再加1歸零,減到000時再減1得999。
3、按住鍵key2不放實現連加功能,前3s每0.2s加1,以后每0.1s加1.
4、按住鍵key3不放實現連減功能,前3s每0.2s減1,以后每0.1s減1.
5、版權所有:http://www.zg4o1577.cn/ 轉帖須保留
*/
     ORG 0000H
     LJMP START
     ORG 0013H //外部中斷1
     LJMP IN1
     ORG 0030H
START:SETB IT1 //設置為下降沿觸發
          SETB EX1 //打開外部中斷1
          SETB EA  //開總中斷
          MOV 30H,#09  //賦初值
          MOV 31H,#09
          MOV 32H,#08
LOOP:    LCALL DISPLAY  //調用顯示子程序
 SJMP LOOP

IN1:       LCALL DISPLAY
 LCALL DISPLAY
 LCALL DELAY1
 JB P3.3,LA0P //其實這三條語句就是
 LJMP LA0P1  //JB P3.3 LOOP1
LA0P:      LJMP LOOP1    //只是跳轉距離沒有那么大
LA0P1:     JNB P3.4 ,KEY0 //KEY0按下,轉key0,

  //沒有則,執行下面的語句
 JNB P3.5,KEY1
 JNB P3.6,KEY2
 JNB P3.7,KEY3
LOOP3:    JNB P3.3,LOOP2  //等待P3.3為高
 LCALL DISPLAY   //為高,調用現實子程序
 LCALL DISPLAY
 LCALL DELAY1 //延時12ms
 JNB P3.3,LOOP3  //P3.3為低,繼續等待
 LJMP LOOP1   //P3.3為高,結束
LOOP2:    LCALL DISPLAY
 LJMP LOOP3

KEY0:      LCALL ADD1  //KEY0按下,加1
     LJMP LOOP3
KEY1:      LCALL SUB1    //KEY1按下,加1
     LJMP LOOP3

KEY2:      MOV R2,#15
LAP2:       MOV R1,#33

     LCALL ADD1
LAP1:       LCALL DISPLAY  // 循環完33次約為0.2s
     JB P3.3,LAP4   //  33*6ms
     DJNZ R1,LAP1   //
     DJNZ R2,LAP2 //外循環結束,需3s
           //
LAP5:      MOV R1,#16  
    LCALL ADD1
LAP6:      LCALL DISPLAY  // 循環完16次,需0.1s
    JB P3.3,LAP7 // 16*6ms
    DJNZ R1, LAP6 //
    LJMP LAP5   //快速加1

LAP7:      LCALL DISPLAY //P3.3為高,調用顯示子程序
    LCALL DELAY1
    JNB P3.3,LAP6 //P3.3為低,繼續快速加1
    LJMP LOOP1    //為高,結束

LAP4:      LCALL DISPLAY
    LCALL DISPLAY
    LCALL DELAY1
    JNB P3.3,LAP1 //為低,重新循環
    LJMP LOOP1    //為高,結束

KEY3:      MOV R2,#15  //以下功能同KEY2
LSP2:      MOV R1,#33

    LCALL SUB1
LSP1:      LCALL DISPLAY
    JB P3.3,LSP4
    DJNZ R1,LSP1
    DJNZ R2,LSP2
 
    MOV R1,#16
    LCALL SUB1
LSP5:      LCALL DISPLAY
    JB P3.3,LSP6
    DJNZ R1, LSP5
    LJMP key3

LSP6:      LCALL DISPLAY
    LCALL DELAY1
    JNB P3.3,LSP5
    LJMP LOOP1


LSP4:     LCALL DISPLAY
   LCALL DISPLAY
   LCALL DELAY1
   JNB P3.3,LSP1

LOOP1:  NOP    //空指令
   RETI  //返回

 
DISPLAY:MOV DPTR,#TAB //顯示沒有問題了
    MOV A,#0FBH    //賦初值
    MOV P2,A   //點亮第四個數碼管
    XCH A,R0   //暫存A的值
    MOV A,32H
    MOVC A,@A+DPTR 
    MOV P0,A    //顯示個位數
    LCALL DELAY   //延時
    XCH A,R0
    RL A   //循環右移,為下次做準備

    MOV P2,A
    XCH A,R0
    MOV A,31H
    MOVC A,@A+DPTR
    MOV P0,A
    LCALL DELAY
    XCH A,R0
    RL A

    MOV P2,A
    MOV A,30H
    MOVC A,@A+DPTR
    MOV P0,A
    LCALL DELAY
    RET

    ADD1: INC 30H     //加1子程序
    MOV A,30H
    CJNE A,#10,LOP1  //判斷個位是否滿10
    MOV 30H,#00    //是,則清零
    INC 31H     //同時十位加1
    MOV A,31H    
    CJNE A,#10,LOP1  //判斷十位是否滿10
    MOV 31H,#00   //是,則清零
    INC 32H     //同時百位加1
    MOV A,32H
    CJNE A,#10,LOP1  //判斷百位是否滿10
    MOV 32H,#00   //是,則清零
LOP1:     NOP    //空指令
    RET    //返回

SUB1:     DEC 30H   //減1子程序
    MOV A,30H
    CJNE A,#0FFH,LOP2  //判斷是否減過0
    MOV 30H,#09     //是,則賦9
    DEC 31H
    MOV A,31H
    CJNE A,#0FFH,LOP2
    MOV 31H,#09
    DEC 32H
    MOV A,32H
    CJNE A,#0FFH,LOP2
    MOV 32H,#09
    LOP2: NOP
    RET
        
TAB:        DB 3FH,06H,5BH,4FH,66H  ;數碼管顯示的數值  
    DB  6DH,7DH,07H,7FH,6FH
DELAY:   MOV R7,#4    //延時時間約為:2MS
DEL2:      MOV R6,#250
DEL1:      DJNZ R6,DEL1
    DJNZ R7,DEL2
    RET
DELAY1: MOV R7,#24    //延時時間約為:12MS
DEL3:      MOV R6,#250
DEL4:      DJNZ R6,DEL4
    DJNZ R7,DEL3
    RET
    END
 

關閉窗口
主站蜘蛛池模板: 亚洲综合国产 | 日韩精品免费视频 | 免费在线观看成年人视频 | 毛片综合 | 久久久激情 | 亚洲二区视频 | 国产免费a视频 | 国产精品美女久久久久aⅴ国产馆 | 国产精品二区三区在线观看 | 久久久久久成人 | 精品久久久久久中文字幕 | 国产精品国产a | 丝袜一区二区三区 | 精品一区在线 | 国产成人一区二区 | 91在线视频网址 | 欧美日韩视频 | 欧美性视频在线播放 | 日韩免费看片 | 成人国产免费视频 | 91久久网站 | 日韩中文在线 | 亚洲视频欧美视频 | 91精品国产综合久久久久久丝袜 | 国产在线视频一区 | 欧美一区二区三区在线视频 | 日韩毛片免费看 | 国产伦精品一区二区三区高清 | 一级片在线免费看 | 欧美 日韩 亚洲91麻豆精品 | 亚洲福利在线视频 | 久久久99精品免费观看 | 久久国产一区二区三区 | 成人av一区二区三区 | 精品国产乱码久久久久久牛牛 | 国产成人精品久久 | 午夜视频免费在线观看 | 国产免费一区二区 | 91精品久久久久久综合五月天 | 一区在线播放 | 久久久久久久久久久久一区二区 |