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

📄 hexp10.asm

📁 这是一个扫描数码管动态显示程序
💻 ASM
字号:
;键盘扫描显示实验

ledout_port  	equ	0F600h
KEY4x4_ADR  	equ	0F700h
led8seg_port  	equ	0F300h
led8bit_port  	equ	0F400h

	ORG    	0000H
	LJMP 	MAIN
	ORG 	0100H
MAIN:	MOV 	SP,#80H
START:	NOP
	LCALL 	SCANKEY
	MOV 	A,R3
	MOV 	DPTR,#ledout_port
	MOVX 	@DPTR,A
	lcall 	keyno
	LCALL 	DISP_data
	MOV 	R1,#00H
	LCALL 	DISP_bit
	LJMP 	START
		
;返回键位值R3
SCANKEY: NOP	
	MOV  	DPTR,#KEY4x4_ADR
	MOV 	A,#0F0H
	MOVX 	@DPTR,A
	MOVX 	A,@DPTR
	ANL 	A,#0F0H
	XRL 	A,#0F0H
	JZ 	RET11
	ACALL 	DELAY_1MS;消抖 
	;MOVx 	A,@DPTR
	;ANL 	A,#0F0H
	;XRL 	A,#0F0H
	;JZ 	RET11

	MOV 	R6,#4
	SETB 	C
	MOV 	R2,#0FEH
NEXT:	nop
	MOV 	A,R2	
	MOVX 	@DPTR,A
	ANL 	A,#0FH
	MOV 	R3,A;列值
	MOV 	A,R2 
	RLC 	A
	MOV 	R2,A
	MOVX 	A,@DPTR
	ANL 	A,#0F0H;行值
	ORL 	A,R3;行列值
	MOV 	R3,A
	ANL 	A,#0F0H
	XRL 	A,#0F0H
	JNZ 	ret12

	DJNZ 	R6,NEXT
	AJMP 	ret11
	
WAIT:	nop
	MOV 	A,#0F0H ;等待键释放
	MOVX 	@DPTR,A
	MOVX 	A,@DPTR
	ANL 	A,#0F0H
	CJNE 	A,#0F0H,WAIT
	ajmp 	ret12
ret11:	mov 	R3,#0FFh
ret12:	ret

;返回键值R3
keyno:	mov A,R3
	CJNE A,#0EEH,NEXT1
	MOV R3,#0CH
	ret
NEXT1:	CJNE A,#0EDH,NEXT2
	MOV R3,#0DH
	ret
NEXT2:	CJNE A,#0EBH,NEXT3
	MOV R3,#0EH
	ret	
NEXT3:	CJNE A,#0E7H,NEXT4
	MOV R3,#0FH
	ret	
NEXT4:	CJNE A,#0DEH,NEXT5
	MOV R3,#08H
	ret
NEXT5:	CJNE A,#0DDH,NEXT6
	MOV R3,#09H
	ret
NEXT6:	CJNE A,#0DBH,NEXT7
	MOV R3,#0AH
	ret
NEXT7:	CJNE A,#0D7H,NEXT8
	MOV R3,#0BH
	ret
NEXT8:	CJNE A,#0BEH,NEXT9
	MOV R3,#04H
	ret
NEXT9:	CJNE A,#0BDH,NEXT10
	MOV R3,#05H
	ret
NEXT10:	CJNE A,#0BBH,NEXT11
	MOV R3,#06H
	ret
NEXT11:	CJNE A,#0B7H,NEXT12
	MOV R3,#07H
	ret
NEXT12:	CJNE A,#07EH,NEXT13
	MOV R3,#00H
	ret
NEXT13:	CJNE A,#07DH,NEXT14
	MOV R3,#01H
	ret
NEXT14:	CJNE A,#07BH,NEXT15
	MOV R3,#02H
	ret
NEXT15:	CJNE A,#077H,ret1
	MOV R3,#03H
	ret
ret1:	NOP
	MOV R3,#0FFH;无键值
        ret

;入口:R3显示数据	
DISP_data:
	NOP
	MOV 	A,R3 
	MOV 	DPTR,#TAB
	MOVC 	A,@A+DPTR	
	MOV 	DPTR,#led8seg_port
	MOVX 	@DPTR,A
	ret
	
;入口:R1显示位置		
disp_bit:
	NOP
	MOV 	A,R1
	MOV 	DPTR,#led8bit_port
	MOVX 	@DPTR,A
	RET

TAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

DELAY_1MS:
	MOV	R7,#100
DELAY_1MS1:
	NOP
	NOP
	DJNZ	R7,DELAY_1MS1
	RET			
		
	end

⌨️ 快捷键说明

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