⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 333.asm

📁 4位七段显示、3x3键扫实验 希望能有用
💻 ASM
字号:
             ;=========4位七段显示、3x3键扫实验==============
        ;io  equ 0ffe8h     ;8155控制字口
        ;ioa equ 0ffe9h     ;8155A口()
        ;iob equ 0ffeah     ;8155B口(字位)
        ;ioc equ 0ffebh     ;8155C口(键入)
LEDGD:  MOV SP,#60H
        MOV DPTR,#0FFE8H    ;写8155控制字
        MOV A,#43H
        MOVX @DPTR,A        ;令A、B 口为输出口
                            ;C口为输入口
LDEGD:  MOV 50H,#7EH        ;清显示缓冲单元
	    MOV A,#10H
	    MOV R0,#7BH
LEGS:	MOV @R0,A
	    INC R0
	    CJNE R0,#7EH,LEGS
	    INC A               ;送待令符“p”
	    MOV @R0,A
LEDT:   CALL XEG2           ;调闪动显示、键扫消抖子程序
        CJNE A,#10H,LEG0
LEG0:   JNC LDEGD           ;是返“P”命令转!
        acall XEG3          ;送当前LED光标闪动单元
        DB 7BH,7EH          ;调正光标闪动指针
        SJMP LEDT           ;完成送数操作返回显示键扫入口
;=======刷新光标单元调正闪动指针==========
XEG3:   MOV R4,A
        MOV R0,#50H
        MOV A,@R0
        MOV R1,A
        MOV A,R4
        MOV @R1,A
        CLR A
        POP DPH
        POP DPL
        MOVC A,@A+DPTR
        INC DPTR
        CJNE A,01H,XG30
        dec r1
        clr a
        MOVC A,@A+DPTR
XG31:   MOV @R0,A
        INC DPTR
        PUSH DPL
        PUSH DPH
        RET
XG30:   DEC R1
        MOV A,R1
        SJMP XG31
;==========闪动显示子程序===============
XEG2:   MOV R6,#80H
XGE0:   ACALL XGEL
        JNB ACC.5,XGX0
        DJNZ R6,XGE0
        MOV R6,#30H
        MOV R0,#50H
        MOV A,@R0
        MOV R0,A
        MOV A,@R0
        MOV R7,A
        MOV A,#10H
        MOV @R0,A
XGE1:   ACALL XGEL
        JNB ACC.5,XGEX1
        DJNZ R6,XGE1
        MOV A,R7
        MOV @R0,A
        SJMP XEG2
XGEX1:  MOV R6,A
        MOV A,R7
        MOV @R0,A
        MOV A,R6
XGX0:   RET
;========= 显示、键扫消抖程序 =========
XGEL:   CALL DGEIS      ;显示
XCD:    CALL KGEEY      ;键扫
;========= 键消抖处理程序 =============
        MOV R4,A
        MOV R1,#48H
        MOV A,@R1
        MOV R2,A
        INC R1
        MOV A,@R1
        MOV R3,A
        MOV A,R4
        XRL A,R3
        MOV R3,04H
        MOV R4,02H
        JZ XGE10
        MOV R2,#88H
        MOV R4,#88H
XGE10:  DEC R4
        MOV A,R4
        XRL A,#82H
        JZ XGE11
        MOV A,R4
        XRL A,#0EH
        JZ XGE11
        MOV A,R4
        JZ XGE12
        MOV R4,#20H
        DEC R2
        SJMP XGE13
XGE12:  MOV R4,#0FH
XGE11:  MOV R2,04H
	    NOP
	    NOP
        MOV R4,03H
XGE13:  MOV R1,#48H
        MOV A,R2
        MOV @R1,A
        INC R1
        MOV A,R3
        MOV @R1,A
        MOV A,R4
        JB ACC.5,XG113
	    MOV DPTR,#LSG3
	    MOVC A,@A+DPTR
XG113:  RET
;=========== 显示子程序===============
DGEIS:  PUSH DPH
        PUSH DPL
        SETB RS1
        MOV R0,#7EH
        MOV R2,#80H
        MOV R3,#00H
        MOV DPTR,#LS0
LGES2:  MOV A,@R0
        MOVC A,@A+DPTR
        MOV R1,#0E9H
        ORL A,#80H
        MOVX @R1,A
        MOV A,R2
        inc R1
        ORL A,#0FH
        MOVX @R1,A
        DJNZ R3,$
        MOV A,R2
        CLR C
        RRC A
        MOV R2,A
        DEC R0
        JNB ACC.3,LGES2
        MOV A,#0FH
        movx @R1,A
	    dec r0
	    CLR A
	    movx @r0,a
        CLR RS1
        POP DPL
        POP DPH
        RET
;=============键扫子程序====================
KGEEY:    SETB RS1
          MOV R2,#0FEH
          MOV R3,#03H
          MOV R0,#00H
LGEP1:    MOV R1,#0EAH
          MOV A,R2
          MOVX @R1,A
          RL A
          MOV R2,A
          inc r1
          MOVX A,@R1
          CPL A
          ANL A,#07H
          JNZ LGEP0
          INC R0
          DJNZ R3,LGEP1
XGEP33:   MOV A,#20H
XGEP3:    mov r2,a
          MOV A,#0FH
	      mov r1,#0EAH
	      movx @r1,a
	      mov a,r2
          CLR RS1
          RET
LGEP0:    CPL A
          JB ACC.0,XGEP0
          MOV A,#00H
          SJMP LGEPP
XGEP0:    JB ACC.1,XGEP1
          MOV A,#08H
          SJMP LGEPP
XGEP1:    JB ACC.2,XGEP33
          MOV A,#10H
LGEPP:    ADD A,R0
          sjmp xGEp3
;=========== 键值表 ===================
LSG3:   DB 00H,01H,02H,20H,20H,20H,20H,20H;
        ;   0,   1,  2,无键按下值
        DB 03H,04H,05H,20H,20H,20H,20H,20H;
        ;    3, 4,  5,
        DB 06H,07H,10H,20H,20H,20H,20H,20H;
        ;    6, 7, 返回键按下值
;============ 字形表 ===================
LS0:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H
        DB 82H,0F8H,80H,90H,88H,83H,0C6H
        DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
        END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -