微机原理及其应用 第7章.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理及其应用 第7章

RESET:复位信号。有效时,清8255A 所有控制寄存器内容。并将各端口置成输入方式。 INTR:中断请求信号 INTR在 、IBF均为高时被置为高电平,即: 当选通信号结束、已将一个数据送进输入缓 冲存储器中,并且输入缓冲区满信号已为高电平 时,8255A向CPU发出的中断请求信号 INTE2:中断允许信号。通过软件设置的INTE1 (PC4) 为1时,端口A的输入中断为允许状态。 8255A中端口A工作方式2时,允许端口B工作于方式0或方式1,完成输入/输出功能。 第一步,CPU通过输出端口往所有的行线上送出低电平,然后读入列线值。如果此时有某键被按下,则必定会使某列线输入值为0,接下来便可进行第二步, 第二步CPU对两个端口重新设置方式,使接行线的端口改为输入方式,接列线的端口改为输出方式,即行反转。 第三步,将刚才读得的列值从列线所接端口输出,再读取行线的输入值,显然会有闭合键所在的行线值必定为0。 KEY1: MOV AL , 00H MOV DX , ROWPORT ; ROWPORT为行线端口地址 OUT DX , AL ; 使所有行线为低 MOV DX , COLPORT ; COLPORT为列线端口地址 IN AL , DX ; 读取列值 CMP AL , 0FFH ; 判定是否有列线为低电平 JZ KEY1 ; 没有,无闭合键,则循环等待 CALL DELAY ;有,则延迟20ms清除抖动 键盘扫描程序的第二步是逐行扫描以找到哪一个键被按下。 ① 将计数值初值设置为键盘的行数。扫描初值使第0行为低电平,其余行为高)。 ② 输出行扫描初值,输入列线的值,检查是否有列线处于低电平。若无,则将扫描初值循环左移一位,变同时将计数值减1, ③ 如此下去,直到计数值为0,或找到按键所在行时止。 细扫描程序段如下: MOV AH , 0FEH ;行扫描初值送AH MOV CX , 8 ;行数送CX KEY2: MOV AL , AH MOV DX , ROWPORT OUT DX , AL ;输出行值(扫描值) MOV DX , COLPORT IN AL , DX ;读进列值 CMP AL , 0FFH ; 判断有无键按下 JNZ KEY3 ;有,则转键处理 ROL AH , 1 ; 无 , 则修改行扫描值,准备扫描下一行 LOOP KEY2 ; 计数一次 , 未扫完8 行, 则继续循环 JMP KEY1 ; 所有行都没有键按下,则返回粗扫描 KEY3: … ; 进入键处理,此时AL=列值, AH=行值 行反转法也是识别键盘输入中的常用方法。 它的原理是: 将行线接一个数据端口,先让它工作在输出方式 将列线接另一个数据端口,先让它工作在输入方式。 (2) 行反转

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档