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

📄 key_led.asm

📁 此程序是微机与接口技术的课程设计源程序
💻 ASM
字号:
;FILENAME:KEY_LED.ASM 
;内容:小键盘按键识别数码管移位显示
DELAY	MACRO    N1,N2        			;延时
      	MOV  AH,86H
    	MOV  CX,N1
       	MOV 	DX,N2
    	INT 	15H
      	ENDM
DATA  	SEGMENT
MESG   	DB 	'READY  ....  ',0DH,0AH,'$'
TAB1   	DW 	17FH,1BFH,1DFH,1EFH,1FEH       	;0~4键值
       	DW	1FDH,1FBH,1F7H,27FH,2BFH        ;5~9键值
TAB2   	DB 	3FH,06H,5BH,4FH,66H             ;0~4字形码
       	DB 	6DH,7DH,07H,7FH,6FH           	;5~9字形码
ORIGIN	DB 	1
BUF    	DB	0,0,0,0,0,0,?        		;显示缓冲区
LINE   	DB 	11111110B			;行扫描初值
A_8255  	EQU	220H			;8255 A口地址
B_8255  	EQU   	221H			;8255 B口地址
CON_8255	EQU  	223H			;8255控制口地址
LED_S   	EQU   	201H			;数码管段选口地址
LED_B   	EQU      200H			;数码管位选口地址
DATA    	ENDS
CODE	SEGMENT
       	ASSUME	CS:CODE,DS:DATA,ES:DATA
BEG:   	MOV 	AX,DATA
       	MOV  	DS,AX
     	MOV   	ES,AX
      	MOV   	AH,9
       	MOV   	DX,OFFSET MESG
      	INT   	21H
      	CALL 	I8255  	        	;8255初始化
DISP:	CALL  	DISPLAY         	;扫描显示6位数
     	MOV   	DX,A_8255
      	MOV   	AL,0
    	OUT 	DX,AL            	;0?A口
       	MOV   	DX,B_8255
    	IN   	AL,DX             	;读B口
     	AND  	AL,03H           	;列值?AL;
      	CMP  	AL, 03H
      	JE  	DISP               	;无键闭合,转
      	DELAY	1,3880H    		;有键闭合,延时80ms
LAST1:	MOV 	DX,A_8255     		;以下逐行扫描
     	MOV  	AL,LINE
     	OUT  	DX, AL        		;行扫描值?A口
      	MOV  	DX,B_8255
      	IN   	AL,DX             	;读B口,列值?AL
      	SHR  	AL, 1
      	JNC   	OK1        			;PB0列线为0,转OK1
       	SHR   	AL,1
       	JNC  	OK2             	;PB1列线为0,转OK2
       	ROL   	LINE, 1     	  	;形成下一个行扫描值
       	JC   	LAST1
      	JMP  	DISP     	 	;非法键入,转显示
OK1:  	MOV   	AH, 2         	 	;列值2?AH
       	JMP  	NEXT
OK2:   	MOV  	AH, 1       		;列值1?AH
NEXT: 	MOV  	AL, LINE      		;行值?AL
      	CMP  	AX, 2F7H   		;AX=F键的键值?
       	JE    	EXIT             	;是F键闭合,转退出
		MOV 	SI, OFFSET TAB1
       	MOV  	DI, OFFSET TAB2
       	MOV  	CX, 10
AGAIN:	CMP  	AX, [SI]     		;查键值表
       	JE  	OK
       	ADD  	SI, 2
       	INC   	DI
       	LOOP  	AGAIN
      	JMP  	DISP          		;非法键入,转显示
OK:    	MOV  	AL, [DI]        	;取字形码
       	MOV 	BUF + 6,AL     		;送BUF+6单元
      	MOV  	SI, OFFSET BUF + 1
      	MOV  	DI, OFFSET BUF
     	MOV    	CX, 6          		;BUF+1~BUF+6单元
       	CLD                     	;6位字形码
      	REP  	MOVSB            	;上移1个单元
      	JMP  	DISP
EXIT: 	MOV 	AH, 4CH
       	INT  	21H
DISPLAY	PROC              		;扫描显示6位数
     	MOV	BX, OFFSET BUF
LAST2:	MOV 	AL, [BX]
       	MOV 	DX,LED_S
       	OUT   	DX, AL          	;输出字形码
       	MOV   	AL, ORIGIN
       	MOV   	DX, LED_B
       	OUT   	DX, AL          	;定位显示
       	DELAY 	0,1000        		;延时1ms
       	INC  	BX
       	SAL  	ORIGIN, 1
       	TEST 	ORIGIN, 40H
       	JZ   	LAST2
      	MOV   	ORIGIN , 1
       	RET
DISPLAY	ENDP
I8255 	PROC
       	MOV  	DX,CON_8255    		;预置
       	MOV  	AL, 10000010B   	;A口方式0输出
     	OUT  	DX,AL            	;B口方式0输入
       	RET
I8255 	ENDP
CODE  	ENDS
      	END 	BEG

⌨️ 快捷键说明

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