微机原理与接口技术 第6章 测控课件.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
键扫描过程: 检测是否所有键都松开了,若没有则反复检测。 当所有键都松开了,再检测是否有键压下,若无键压下刚反复检测。 若有键压下,要消除键抖动,确认有键压下。 对压下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被压下了。如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。 该键释放后,再回到②。 §6-3 8255A的应用举例 ——键盘接口 检测矩阵中是否有键压下 自输出口A向所有行线输出0电平,再通过B口的低4位读取列值,若其中有0值,便是有键压下了。 键是否已松开 先向所有行线输出低电平,再读入各列线值,只有当所有的列线均为高电平,表示以前压下的键都已释放了。 消除键抖动 当检测到有键压下后,必须消除键抖动(Debance)。常用方法是在检测到有键压下后,延长一定时间(通常为20ms),再检查该键是否仍被压着。若是,才认定该键确实被按下了,而不是干扰。 §6-3 8255A的应用举例 ——键盘接口 确定被压下键所在的行列号 获取行列信息,先从A口输出一个低电平到一行线上,再从B口读入各列的值,若没有一列为低电平,说明压下的键不在此行。于是,再向下一行输出一个低电平,再检测各列线上是否有低电平。依次对每一行重复这个过程,直至查到某一列线上出现低电平为止。被置成低电平的行和读到低电平的列,便是被压下键所在的行列值。 获取键的扫描码 根据键所在的行号(0~3)和列号(0~3)后,就能得到该键的扫描码。例如,对于数字0,它位于3行、3列,压下“0”键时,从B口可读得D7位和D3位为0,其余位为1,所以数字0的编码为,即77H;对于数字6,处于2行、l列,压下“6”键时,D6位和Dl位为0,其余位为1,所以数字6的编码=BDH。类似地,其余各键的编码也可一一求得。将这些编码值列成表,放在数据段中,用查表程序来查对,便能确定压下的是什么键。 §6-3 8255A的应用举例 ——键盘接口 键盘检测、去抖动、键值编码和确定键名的汇编语言程序如下。 程序运行后,若返回值AH=0,表示已读到有效的键值,并在AL中存有0~F键的16进制代码;若AH=1,则表示出错。 ;端口地址 PORT_A EQU 0FF9H ;8255 A口地址 PORT_B EQU 0FFBH ;8255 B口地址 PORT_CTL EQU 0FFFH ;8255 控制口地址 ;数据段,键盘扫描码表 DATA SEGMENT ; 0 1 2 3 4 5 6 7 TABLE DB 77H, 7BH, 7DH, 7EH, 0B7H, 0BBH, 0BDH, 0BEH ; 8 9 A B C D E F DB 0D7H, 0DBH, 0DDH, 0DEH, 0E7H, 0EBH, 0EDH, 0EEH DATA ENDS §6-3 8255A的应用举例 ——键盘接口 ;堆栈段 STACK SEGMENT STACK DW 50 DUP(0) TOPSTAC LABEL WORD STACK ENDS ;代码段 CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOV AX , STACK MOV SS , AX LEA SP , TOP_STACK MOV AX , DATA MOV DS , AX §6-3 8255A的应用举例 ——键盘接口 ;初始化8255A,方式0, A口作输出,B口和C口为输入 MOV DX , PORT_CTL ;指向控制口 MOV AL , ;控制字 OUT D

您可能关注的文档

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档