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

📄 ex5124.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 000BH
        LJMP IT0R
        ;
        ORG 0030H
START:  MOV SP,#60H
        MOV DPTR,#P_CON         ;8155控制字
        MOV A,#03H
        MOVX @DPTR,A
        MOV R0,#D_BUF
        MOV R7,#6

LP1:    MOV @R0,#10H            ;关显示
        INC R0
        DJNZ R7,LP1
        LCALL DISPLAY
        SETB PSW.3
        LCALL KEYIN
        MOV 7CH,A
        LCALL KEYIN
        MOV 7BH,A
        LCALL KEYIN
        MOV 7AH,A
        LCALL KEYIN
        MOV 79H,A
        LCALL KEYIN
        MOV 78H,A
        LCALL KEYIN
        MOV 77H,A
        CLR PSW.3
        ;
        ;

        MOV TMOD,#01H
        MOV TL0,#00H
        MOV TH0,#00H
        SETB TR0
        MOV IE,#82H
        MOV 30H,#08H
LP2:    LCALL DISPLAY
        LJMP LP2
        ;
IT0R:   PUSH PSW
        PUSH ACC
        SETB PSW.3
        MOV TH0,#00H
        MOV TL0,#00H
        MOV A,30H
        DEC A
        MOV 30H,A
        JNZ RETN
        MOV 30H,#08H
        MOV R0,#78H
        LCALL CAAD
        MOV A,R2
        XRL A,#60H
        JNZ RETN
        LCALL CLR0
        MOV R0,#7AH
        LCALL CAAD
        MOV A,R2
        XRL A,#60H
        JNZ RETN
        LCALL CLR0
        MOV R0,#7CH
        LCALL CAAD
        MOV A,R2
        XRL A,#24H
        JNZ RETN
        LCALL CLR0
RETN:   POP ACC
        POP PSW
        RETI
        ;
CAAD:   MOV A,@R0
        DEC R0
        SWAP A
        ORL A,@R0
        ADD A,#01H
        DA A
        MOV R2,A
        ANL A,#0FH
        MOV @R0,A
        MOV A,R2
        INC R0
        ANL A,#0F0H
        SWAP A
        MOV @R0,A
        RET
        ;
CLR0:   CLR A
        MOV @R0,A
        DEC R0
        MOV @R0,A
        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 + -