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

📄 8155.asm

📁 51系列单片机的汇编程序包
💻 ASM
字号:
;=========硬件实验 8155 I/O扩展键盘显示实验==============
        io  equ 8600h     ;8155控制字口
        ioa equ 8601h     ;8155A口()
        iob equ 8602h     ;8155B口(字位)
        ioc equ 8603h     ;8155C口(键入)
        ORG 0000H
LEDGD:  MOV SP,#60H
        MOV DPTR,#io    ;写8155控制字
        MOV A,#43H
        MOVX @DPTR,A        ;令A、B 口为输出口
                            ;C口为输入口
LDEGD:  MOV 50H,#7fh        ;清显示缓冲单元
	    MOV A,#10H
	    MOV R0,#78h
LEGS:	MOV @R0,A
	    INC R0
	    CJNE R0,#7fH,LEGS
	    INC A               ;送待令符“p”
	    MOV @R0,A
LEDT:   CALL XEG2           ;调闪动显示、键扫消抖子程序
        CJNE A,#10H,LEG0
LEG0:   JNC LDEGD           ;是返“P”命令转!
        acall XEG3          ;送当前LED光标闪动单元
        DB 78H,7fH          ;调正光标闪动指针
        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,#7fH
        MOV R2,#80H
        MOV R3,#00H
LGES2:  MOV DPTR,#LS0
        MOV A,@R0
        MOVC A,@A+DPTR
        MOV dptr,#ioa
        MOVX @dptr,A
        MOV A,R2
        inc dptr
        MOVX @dptr,A
        DJNZ R3,$
        MOV A,R2
        CLR C
        RRC A
        MOV R2,A
        DEC R0
        jnz LGES2
        movx @dptr,A
	    dec dpl
	    CLR A
	    movx @dptr,a
        CLR RS1
        POP DPL
        POP DPH
        RET
;=============键扫子程序====================
KGEEY:    SETB RS1
          MOV R2,#0FEH
          MOV R3,#08h
          MOV R0,#00H
LGEP1:    MOV dptr,#iob
          MOV A,R2
          MOVX @dptr,A
          RL A
          MOV R2,A
          inc dptr
          MOVX A,@dptr
          CPL A
          ANL A,#0FH
          JNZ LGEP0
          INC R0
          DJNZ R3,LGEP1
XGEP33:   MOV A,#20H
XGEP3:    mov r2,a
          MOV A,#00H
	      mov dptr,#iob
	      movx @dptr,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 07h,04h,08h,05h,09h,06h,0ah,0bh
        db 01h,00h,02h,0fh,03h,0eh,0ch,0dh
        db 10h,11h,12h,13h,14h,15h,16h,17h
        db 18h,19h,1ah,1bh,1ch,1dh,1eh,1fh

;============ 字形表 ===================
LS0:    db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
        db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh
        db 0ffh,0ch,89h,7fh,0bfh

        END

⌨️ 快捷键说明

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