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

📄 8255扫描键盘、显示程序.txt

📁 51常用子程序-4.0M.zip
💻 TXT
字号:
   8255扫描键盘、显示程序
利用8255可编程并行口做一个扫描键盘实验,
把按键输入的键码,显示在由8279控制的七段数码管上。
8255PA口做键盘输入线,PB口作扫描线。

	D8255 EQU 8506H ;8255状态/数据口地址
	D8255A EQU 8500H ;8255 PA口地址
	D8255B EQU 8502H ;8255 PB口地址
	Z8279 EQU 8701H ;8279状态口地址
	D8279 EQU 8700H ;8279数据口地址
	DISPTR EQU 08H ;当前显示位置
	KEYVAL EQU 09H ;读到的键码
	ORG 0000H
	LJMP START
	ORG 0040H
 MAIN:
	MOV SP,#60H
	LCALL DELAY ;延时
	MOV DISPTR,#30H ;显示缓冲区头指针
	MOV DPTR,#D8255
	MOV A,#90H ;置8255状态
		   ;方式0,PB,PC口输出,PA口输入
	MOVX @DPTR,A
	MOV DPTR,#Z8279 ;置8279命令字
	MOV A,#0D3H
	MOVX @DPTR,A ;清LED显示
	MOV A,#00H
	MOVX @DPTR,A
	MOV A,#38H
	MOVX @DPTR,A
	MOV A,#0D1H
 KB_DIS:
	LCALL RD_KB ;读键盘
	MOV A,#0FFH
	CJNE A,KEYVAL,DISBUF ;判读到键
	SJMP KB_DIS ;没有则继续读键
 DISBUF:
	LCALL DISP ;把键移入显存
	LCALL DELAY ;延时消抖
	LCALL DELAY
	SJMP KB_DIS
 DISP: ;显存依次前移
	MOV R1,#31H ;在最后加入新键值
 MOVE:
	MOV A,@R1
	DEC R1
	MOV @R1,A
	INC R1
	INC R1
	CJNE R1,#38H,MOVE
	MOV 37H,KEYVAL
	MOV KEYVAL,#0FFH
	MOV DPTR,#Z8279
	MOV A,#90H
	MOVX @DPTR,A
	MOV R0,#08H
	MOV R1,#30H
	MOV DPTR,#D8279
 LP: MOV A,@R1
	MOVX @DPTR,A
	INC R1
	DJNZ R0,LP
	RET
 RD_KB: ;键盘扫描
	MOV A,#02H ;扫描第一行
	MOV DPTR,#D8255B
	MOVX @DPTR,A
	MOV DPTR,#D8255A
	MOVX A,@DPTR
	MOV R1,#00H
	CJNE A,#0FFH,KEYCAL ;判键是否按下
	MOV A,#01H ;扫描第二行
	MOV DPTR,#D8255B
	MOVX @DPTR,A
	MOV DPTR,#D8255A
	MOVX A,@DPTR
	MOV R1,#08H
	CJNE A,#0FFH,KEYCAL
	SJMP NOKEY ;无键按下
 KEYCAL: 		;计算键码
	MOV R0,#08H
 SHIFT:
	RRC A
	JNC CALC
	INC R1
	DJNZ R0,SHIFT
	CALC: ;换算显示码
	MOV DPTR,#DL_DAT
	MOV A,R1
	MOVC A,@A+DPTR
	MOV KEYVAL,A
	RET
 NOKEY: MOV KEYVAL,#0FFH ;返回无键标志
	RET
 DELAY: MOV R0,#0H ;延时子程序
 DELAY1: MOV R1,#0H
	DJNZ R1,$
	DJNZ R0,DELAY1
	RET
 DL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7
	 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F
	END

⌨️ 快捷键说明

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