已解决问题

收藏 转载到空间 转播到腾讯微博

如题六图键盘电路编写8255初始化程序和键值读取程序,并将键值序号在LED七段数码管显示出...来

20 [ 标签:键值led七段数码管 ] 举止优雅的猪 2008-10-31 11:42
如题六图键盘电路编写8255初始化程序和键值读取程序,并将键值序号在LED七段数码管显示出...来

满意答案 好评率:100%

仅供参考:

CODE如下:
DATA SEGMENT
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,7FH,6FH ;预置显示值
BUFFER DB ? ;预留一个字节装键值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA ;初始化操作
MOV DS,AX
SET: MOV DX,206H;初始化8255
MOV AL,89H
OUT DX,AL
WAIT-IN: MOV AL,00H;检测按键所有行输出0
MOV DX,204;8255的 C口地址
OUT DX,AL
IN AL,DX;读列线
AND AL,70H
CMP AL,70H;比较是否有按键按下
JZ WAIT-IN;无就等待
DONE: CALL DAELAY;延时消除抖动
MOV BL,0;键号初始值为0
MOV CL,0FEH;扫描初始值
MOV DL,3;计数值行数
SCANR: MOV AL,CL;扫描一行
MOV DX,204H;C口地址
OUT DX,AL
ROL AL,1;修改行数
MOV CL,AL
IN AL,DX;读列数
AND AL,70H
CMP AL,70H ;判断列线状态
JNZ SCANL;有低转
ADD BL,3;没有使键号=键号值+列数
DEC DL
JNZ SCANR;行未完转
JMP HANDLE;扫描结束
SCANL: OR AL,0FH; 高位置1,避免出错
RCR AL,1
JNC HANDLE;列为低,确定按键值
INC BL
JMP SCANL;查找下一列
HANDLE MOV AL,BL;传按键
MOV BX,OFFSET TABLE;段码表首址
XLAT
MOV DX,200H ;A口地址
OUT DX,AL;送段码
CALL DELAY
MOV AH,04H
INT 21H
CODE ENDS
END STATRT
海之涯 回答采纳率:10.5% 2008-10-29 20:35
举止优雅的猪的感言: 谢谢 但是迟了
体验新问题页提意见

问题状态

获得满意答案耗时2天
擅长编程的团队2138个
问问已经帮助过的人1.9亿人

成千专家、上万团队、数亿网友......
秒杀你的疑惑,从问问开始!