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

📄 8255.asm

📁 接口实验中的关于8255芯片的0方式编程。
💻 ASM
字号:
CODE	SEGMENT
;MAIN	PROC FAR
ASSUME	CS:CODE,DS:CODE
ORG	100H
START:  MOV	AX,CODE
				MOV	DS,AX
				MOV	DX,303H				;8255A命令口
				MOV	AL,10001000B	;工作方式字
				OUT	DX,AL					;A口0方式,C4-C7输入,C0-C3输出
;检查是否有按键按下
BEGIN:	MOV	CX,4
				MOV	AL,00H					
L0:			OUT DX,AL					;循环输出扫描码,使所有行线C0-C3为0
				ADD	AL,02H
				LOOP	L0
WT:		  MOV	DX,302H
				IN	AL,DX					;读入列线C4-C7状态,检查是否有列线为0
				AND	AL,0FH
				CMP	AL,0FH
				JZ	WT
;延时去抖动
				MOV	CX,7FFH
L1:			LOOP	L1
;识别被按下的键
  			MOV	BL,4							;行数送BL
				MOV	BH,4							;列数送BH
				MOV	AL,0FEH						;扫描码,0行为0?????
				MOV	CL,0FH						;列线屏蔽码送CL
				MOV	CH,0FFH						;置键号初值为-1
L2:			OUT	DX,AL							;扫描其中一行
				ROL	AL,1		
				MOV	AH,AL							;修改扫描码并送AH保存
				IN	AL,DX
				AND	AL,CL
				CMP	AL,CL							;读入列线值,检查是否有列线为0
				JNZ	L3								;有列线为0时转去找该列线
				ADD	CH,BH							;否则,指向该行末列键号
				MOV	AL,AH							;取回扫描码
				DEC	BL
				JNZ L2								;行数减1,未完转下一行
				JMP	BEGIN
L3:			INC	CH								;键号加1,指向本行首列键号
				RCR	AL,1
				JC	L3								;该列非0,检查下一列
				MOV	AL,CH							;该列为0,键号送AL
				;JMP	KEYTABLE					;转查找键盘编码表子程序,获取与键功能对应的编码
				MOV	AH,4CH
				INT	21H			;返回DOC
				;MAIN ENDP
;KEYTABLE	PROC	FAR ;AH存放行号,Al存放列号
				;MOV	DX,350H	;点亮LED
				
				
CODE	ENDS				;代码段结束
END 	START				;程序结束

⌨️ 快捷键说明

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