第10章 9C51与键盘、显示器、拨盘、打印机的接口设计.ppt

第10章 9C51与键盘、显示器、拨盘、打印机的接口设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图10-8为82C55扩展I/O口的独立式按键接口电路。 相应地,依次读PC口的状态,若PC0~PC3全为“1”,则列线 为“0”的这一列上没有键闭合。闭合键的键号等于为低电平的列 号加上行线为低电平的行的首键号。 例如,PA口输读出PC3~PC0为1101,则1行1列 相交的键处于闭合状态,第一列的首键号为8,列号为1。 因此,闭合键的键号N为 N=行首键号+列号=8+1=9 (4)使CPU对键的一次闭合仅作一次处理键盘程序的流程如图 10-12。 KEYI:ACALL KS1 ;调用判有无键闭合子程序 JNZ LK1 ;有键闭合,跳LK1 NI: ACALL DIR ;无键闭合,调显示子程序,延迟 ;6ms后,跳KEYI AJMP KEYI LK1: ACALL DIR ;可能有键闭合,软件延迟12ms去抖 ACALL DIR ACALL KS1 ;调用判有无键闭合子程序 JNZ LK2 ;经去抖,判键确实闭合,跳LK2 ACALL DIR ;调用显示子程序延迟6ms AJMP KEYI ;抖动引起,跳KEYI LK2: MOV R2,#0FEH ;列选码→R2 MOV R4,#00H ;R4为列号计数器 LK4: MOV DPTR,#7F01H ;列选码→81C55的PA口 MOV A,R2 MOVX @DPTR,A INC DPTR ;数据指针增2,指向PC口 INC DPTR MOVX A,@DPTR ;读81C55 PC口 JB Acc.0,LONE ;0行线为高,无键闭合,跳LON,转判1行 MOV A,#00H ;0行有键闭合,首键号0→A AJMP LKP ;跳LKP,计算键号 LONE:JB Acc.1,LTW0 ;1行线为高,无键闭合,跳LTW0判2行 MOV A,#08H ;1行有键闭合,首键号8→A AJMP LKP LTW0:JB A.2,LTHR ;2行线为高,无键闭合,跳LTHR判3行 MOV A,#10H ;2行有键闭合,首键号10H→A AJMP LKP ;跳LKP,计算键号 LTHR:JB Acc.3,NEXT ;3行线为高,无键闭合 ;跳NEXT,准备下一列扫描 MOV A,#18H ;3行有键闭合,首键号18H→A LKP: ADD A,R4 ;计算键号:首键号+列号=键号 PUSH A ;键号进栈保护 LK3: ACALL DIR ;调用显示子程序,延时6ms ACALL KS1 ;调用判有无键闭合子程序,延时6ms JNZ LK3 ;判键释放否,未释放,则循环 POP A ;键已释放,键号出栈→A RET NEXT:INC R4 ;列计数器加1,为下一列扫描作准备 MOV A,R2 ;判是否已扫到最后一列(最右一列) JNB Acc.7,KND ;键扫描已扫到最后一列 ;跳KND,重新进行整个键盘扫描 RL A ;未扫到最后一列,位选码左移一位 MOV R2,A ;位选码→R2 AJMP LK4 KND: AJMP KEYI KS1: MOV DPTR ,#7F01H ;判有无键闭合子程序 ;全“0”→扫描口(PA口) MOV A,#00H ;即列线全为低电平 MOVX @DPTR,A INC DPTR ;DPTR增2,指向PC口 INC DPTR MOVX A,@DPTR ;从PC口读行线的状态 C

文档评论(0)

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

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

1亿VIP精品文档

相关文档