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

📄 ex5123.asm

📁 启东计算机厂实验程序
💻 ASM
字号:
D_BUF   EQU 77H
P_CON   EQU  0FF20H
PORT_A  EQU  0FF21H
PORT_B  EQU  0FF22H
PORT_C  EQU  0FF23H
        ;
        ORG 0000H
        LJMP START
        ;
        ORG 0030H
START:  MOV SP,#60H
        MOV DPTR,#P_CON         ;8155控制字
        MOV A,#03H
        MOVX @DPTR,A
        MOV R0,#D_BUF
        MOV R7,#6
LP0:    MOV @R0,#10H            ;关显示
        INC R0
        DJNZ R7,LP0
        LCALL DISPLAY

LP2:    SETB PSW.3
        LCALL KEYIN
        CLR PSW.3
        MOV 7CH,A
        LCALL RTAB
        LCALL DISPLAY
        SJMP LP2
RTAB:   MOV DPTR,#TAB1
        ANL A,#0FH
        RL A
        MOV R2,A
        MOVC A,@A+DPTR
        MOV R0,#7AH
        LCALL SUB1
        MOV A,R2
        INC A
        MOVC A,@A+DPTR
        MOV R0,#78H
        LCALL SUB1
        RET
        ;
SUB1:   MOV R3,A
        ANL A,#0F0H
        SWAP A
        MOV @R0,A
        MOV A,R3
        ANL A,#0FH
        DEC R0
        MOV @R0,A
        RET
        ;
TAB1:   DW 0123H
        DW 1234H
        DW 2345H
        DW 3456H
        DW 4567H
        DW 5678H
        DW 6789H
        DW 789AH
        DW 89ABH
        DW 9ABCH
        DW 0ABCDH
        DW 0BCDEH
        DW 0CDEFH
        DW 0DEF0H
        DW 0EF01H
        DW 0F012H



DISPLAY:MOV R0,#D_BUF+5           ;显示子程序
        MOV R2,#20H
DIS_LP: MOV DPTR,#DATACO
        MOV A,@R0
        MOVC A,@A+DPTR
        MOV DPTR,#PORT_B
        MOVX @DPTR,A
        MOV DPTR,#PORT_A
        MOV A,R2
        MOVX @DPTR,A
        MOV R3,#00H
        DJNZ R3,$
        DEC R0
        MOV A,R2
        RR A
        MOV R2,A
        JNB ACC.7,DIS_LP
        RET
DATACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
	DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH


KEYIN:  ACALL DISPLAY         ;键扫子程序
        ACALL INKEY
        CJNE A,#0FFH,FLASH
        SJMP KEYIN
FLASH:  RET

INKEY:
        ACALL IS_KEY
        CJNE A,#0FFH,SK1
        SJMP KEYSM10
SK1:    ACALL DISPLAY
        ACALL DISPLAY
        ACALL IS_KEY
        CJNE A,#0FFH,KEYSM
        SJMP KEYSM10

KEYSM:
	MOV A,#0FFH
	MOV DPTR,#0FF22H
	MOVX @DPTR,A
KEYSM0: MOV R2,#0FEH
	MOV R3,#08H
	MOV R0,#00H
KEYSM1: MOV A,R2
	MOV DPTR,#0FF21H
	MOVX @DPTR,A
	NOP
	RL A
	MOV R2,A
	MOV DPTR,#0FF23H
	MOVX A,@DPTR
	CPL A
	NOP
	NOP
	NOP
	ANL A,#0FH
	JNZ KEYSM2
	INC R0			;没有按键
	DJNZ R3,KEYSM1
	SJMP KEYSM10

KEYSM2: 			;有按键
	CPL A                   ;判断键号
	JB 0E0H,KEYSM3
	MOV A,#00H
	SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4
	MOV A,#08H
	SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5
	MOV A,#10H
	SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM12
	MOV A,#18H
KEYSM7: ADD A,R0
	CJNE A,#10H,KEYSM9
KEYSM9: JNC KEYSM12
	MOV DPTR,#KEYDATA
	MOVC A,@A+DPTR

KEYSM12:PUSH ACC            ;等按键释放
KEYSM11:ACALL DISPLAY
        ACALL IS_KEY
        CJNE A,#0FFH,KEYSM11
        POP ACC

KEYSM10:RET

IS_KEY: MOV DPTR,#PORT_A    ;是否按键
        CLR A
        MOVX @DPTR,A
        MOV DPTR,#PORT_C
        MOVX A,@DPTR
        ORL A,#0FCH
        RET
        
KEYDATA:DB 07H,04H,08H,05H,09H,06H,0AH,0BH
	DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
        END

⌨️ 快捷键说明

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