8-并行接口知识.pptVIP

  • 3
  • 0
  • 约1.97万字
  • 约 89页
  • 2021-10-16 发布于广东
  • 举报
2021/10/15 * * 8255A的应用举例 【例】8255A作为矩阵键盘接口,工作于方式0,如图示。试编程读取矩阵键盘的按键扫描码。 矩阵式键盘是非编码键盘的一种,指按键开关按行列排列,形成二维矩阵的结构。图6.10中的键盘为4行×4列的矩阵键盘,其行线接8255A的端口A的低4位,列线接端口B的低4位。8255A的A口设为方式0输出,B口设为方式0输入。 识别键盘上哪个键被按下的过程称为键盘扫描,其过程如下:先使行线全为“0”,若此时无键按下,则列线应为全“1”;若有键按下,则相应位置的列线应为“0”。有键按下时,还要判断按下的键在哪行哪列,即读取按键的扫描码。方法之一是逐行扫描法,也就是先扫 2021/10/15 * * 矩阵键盘接口 2021/10/15 * * 8255A的应用举例 描第一行,使PA0=0,PA3~PA1为1,判别列线有无低电平。若有,则可识别出第一行哪一列上有键按下(此时A口、B口的值即为该键的扫描码);若没有,则继续扫描第二行,使PA1=0,其余为1,依上述方法判别,直至扫描完所有4行,总可以找到按下的按键。 当然,在检测到有键按下后,还必须消除按键的抖动。消除按键抖动的常用方法是在检测到有键按下后,延长一定的时间(通常为20ms),再检查该键是否仍被按着,若是,才能认定该键确实被按下了,而不是干扰信号。 设图6.10中8255A的端口地址为80~86H,其键盘扫描程序段如下: 2021/10/15 * * 8255A的应用举例 ;判别是否有键按下 START:MOV AL,82H ;设置8255A的工作方式字 OUT 86H,AL MOV AL,00H ;给A口输出00H OUT 80H,AL WAIT1:IN AL,82H ;读入B口的值 AND AL,0FH ;取低4位 CMP AL,0FH ;比较 JZ WAIT ;结果为0,则无键按下,继续等待 CALL DELAY;调用延时子程序,消除按键抖动 IN AL,82H ;再次读B口,测试有无低电平 AND AL,0FH CMP AL,0FH JZ WAIT ;结果为0,则是干扰,继续等待 ;判断哪个键按下 2021/10/15 * * 8255A的应用举例 MOV CL,4 ;设置计数初值 MOV AL,0EH ;使A0=0,准备先扫描第一行 CHECK:OUT 80H,AL MOV AH,AL ;保存行扫描码 IN AL,82H ;读B口 AND AL,0FH ;取低4位 CMP AL,0FH ;比较 JNZ TABLE ;不为0,则该行有键按下,转键值处理子程序 MOV AL,AH ;无键按下,则修改行扫描码 ROL AL,1 DEC CL ;行数减1 JNZ CHECK ;未扫描完4行,则继续 JMP START ;重新扫描 TABLE:CALL KEYVALUE ;此时AH中为行扫描码,AL中为列扫描码,调用键值处理子程序 2021/10/15 * * 8255A的应用举例 ;等待按键释放 MOV AL,00 ;向A口输出00H OUT 80H,AL WAIT2:IN AL,82H ;读B口 AND AL,0FH ;取低4位 CMP AL,0FH ;比较

文档评论(0)

1亿VIP精品文档

相关文档