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

📄 ex5122.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

        MOV R7,#6
        MOV R0,#D_BUF
LP1:    SETB PSW.3
        LCALL KEYIN
        CLR PSW.3
        MOV @R0,A
        INC R0
        DJNZ R7,LP1

        SETB PSW.3
        LCALL KEYIN
        CLR PSW.3

        LCALL QUE
        LCALL DISPLAY
        SETB PSW.3
        LCALL KEYIN
        CLR PSW.3
        ;
        SJMP START
        ;
QUE:    CLR 7FH
        MOV R0,#D_BUF
        MOV R7,#6
        MOV A,@R0
L2:     INC R0
        MOV R2,A
        SUBB A,@R0
        MOV A,R2
        JC L4
        SETB 7FH
        XCH A,@R0
        DEC R0
        XCH A,@R0
        INC R0
L4:     MOV A,@R0
        DJNZ R7,L2
        JB 7FH,QUE
        RET

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 + -