第27-28讲.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第27-28讲

第27讲 第8章 常用外围设备接口 本章重点:① ; ② 后再确认K3键处理程序 LJMP KEY4 Prog0:… ;K0键处理程序 LJMP KEY4 Prog1:… ;K1键处理程序 LJMP KEY4 Prog2:… ;K2键处理程序 KEY4: MOV A,P1 ;读键盘 ORL A,#0F0H CPL A JNZ KEY4 ;键未释放,再读键盘 ACALL DEL10ms ;延时 KEY5: RET 第28讲 8.1.4 矩阵式键盘 当按键数量较多时,独立式按键就要占用较多的I/O口资源。此时应采用矩阵式键盘,也称为行列式键盘。 4×4的矩阵式键盘电路结构如图8-7所示。按键跨接在行线和列线上,按键按下时,行线与列线接通。 图中P1.0~P1.3为输入口,P1.4~P1.7为输出口。键盘扫描子程序中完成下述几种操作: 判断有无键被按下:在P1.4~P1.7输出全“0”,读P1.0~P1.3的状态,若为全“1”则无键按下。若不全为“1”则有键按下。 消除抖动:矩阵式键盘也需要消除抖动。由于按键数量较多,一般采用软件延时的方法来躲过抖动过程。 确定键号:首先确定被按键的物理位置,是通过列线逐列置低电平后检查行线的状态来确定。具体方法是:先令P1.4=0,P1.5~P1.7=1,读P1.0~P1.3的状态,若读得某行线为“0”,则可确认对应于该行线与列线相交处的键被按下,否则,说明P1.4列上无键按下。若P1.4列上无键按下,接着令P1.5=0,其余列线为“1”,再读P1.0~P1.3的状态,判断其是否全为“1”,若是,表示被按下的键也不在此列,依次类推直至列线P1.7。这种逐列检查键盘状态的过程称为键盘扫描。 键号按从左至右,从上至下的顺序编排,各行的行首键号为0、4、8、12,并作为该行的行号;列号依列线顺序为0~3,根据被按下键的物理位置,可得被按下键的键号的计算公式: 键号=行号+列号 由此可得图8-7各键的键号为:00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 得到键号后,通过散转表进入各按键的处理程序。 键闭合一次仅作一次处理:方法与独立式键盘相同,一般采用等待键释放后去除键的抖动再将键号送累加器A,再用散转程序转去执行相应的键处理程序。 键扫描子程序流程图如附图8-2所示。 键扫描子程序参考程序如下: ORG 0200H KEY0: ACALL KS ;调KS判断是否有键按下 JNZ KEY1 ;有键按下则转移 LJMP FANH ;无键按下则返回 KEY1: ACALL DELAY ;调延时子程序消抖 ACALL KS ;调KS判断是否有键按下 JNZ KEY2 FANH: RET ;无键按下,返回 KEY2: MOV R4,#00H ;首列号送R4 MOV R2,#0EFH ;送首列扫描代码 KEY3: MOV P1,R2 ;列扫描代码送P1口 MOV A,P1 ;读行线状态值 ORL A,#0F0H ;屏蔽列扫描代码 CPL A JZ NEXT ;A=0,本列未按下 JB ACC.0,KEY4;当前列0行未按下 MOV A,#00H ;送行号0到A LJMP KEY7 ;转求键号 KEY4: JB ACC.1,KEY5;当前列1行未按下 MOV A,#4 ;送行号4到A LJMP KEY7 ;转求键号 KEY5: JB ACC.2,KEY6;当前列2行未按下 MOV A,#8 ;送行号8到A LJMP KEY7 ;转求键号 KEY6: MOV A,#12 ;送行号12到A KEY7: ADD A,R4 ;求键号送A PUSH ACC ;键号进栈保护 KEY8: ACALL DELAY ACALL KS ;等待按键释放 JNZ KEY8 POP ACC ;按键释放,恢复键号 MOV DPTR,#TAB ;DPTR指向散转表首址 ADD A,ACC

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档