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

📄 8255.txt

📁 8255扫描键盘、显示程序 利用8255可编程并行口做一个扫描键盘实验
💻 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 + -