- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
判定有键按下后要进一步判别是哪个键按下了,是数字键还是命令键。如果是数字键,就要将它存放到指定单元中去或将它显示在仪器面板的数码管上。如果是命令键,则要从指定的命令表中查出该命令所对应的仪器功能程序的入口地址,使单片机能转向去完成仪器功能所规定的任务。下面我们举例说明单功能键盘扫描程序的设计方法。[例2-3]设用Mcs-51指令编写图2-26中单功能键盘的扫描程序。设计:在下面程序举例中我们设地址译码电路输出CS1、CS2的高字节地址是相同的,为CSH。若它们的低字节分别为CS1L,CS2L,则按图2-26要求设计的键盘扫描程序如下:·6个中断源74LS37374LS24074LS244……KEY: MOV P2,#CSH ;将键盘地址的高字节输出到P2端口上 MOV R0,#CS1L ;R0指向行扫描锁存驱动器U1 MOV R1,#CS2L ;R1指向列读入缓冲器U2 MOV A,#3FH ;准备查询键盘状态 MOVX @R0,A ;令所有Xi线输出为0 MOVX A,@R1 ;读取Y线状态值 ANL A,#1FH ;取出具体的Yi状态值,组成列值码Y CJNE A,#1FH,KY1 ;有键按下时A中内容不等于1FH, AJMP KEY ;转KY1,否则继续查询KYl: ACALL D20ms ;可能有键按下,延时20ms消除弹跳影响·6个中断源74LS37374LS24074LS244MOV R5,#01H ;从第一行开始询问哪个键按下了KY11: MOV A,R5 MOVX @R0,A ;使所查的行线驱动状态为0 MOVX A,@R1 ;读取相应的列状态值 ANL A,#1FH ;得到实际的Y值 CJNE A,#1FH,KY2 ;本行有键按下转KY2继续处理 MOV A,R5 ;本行无键按下, RL A ;使R5内容指向下一行 MOV R5,A CJNE A,#40H,KY11 ;没有查完,转KY11继续查下一行 LJMP DISPLY ;查完所有Xi行,无按键时转DISPLY·6个中断源74LS37374LS24074LS244KY2: PUSH A ;确有键按下,暂存A中键盘Y值KY21: MOV R4,#0 ;准备计算键值KY3: DEC R4 ;R4中起始值为FFH MOV A,R5 ;取回R5中的查询行位置码 CLR C RRC A ;右移一位 MOV R5,A CJNE R5,#0,KY3 ;R5内容不为零,R4内容减1KY31: MOV A,R4 ;R5内容等于零后,要将R4内容的低4 SWAP A ;位转移到高4位上 ANL A,#0F0H MOV R4,A POP A ;取出Y值 KY32: ADD A,R4 ;与R4内容相加得到实际键值 MOV R4,A ;将实际键值放回R4中MOV DPTR,#KYTB ;取键值表首址KY4: MOVX A,@DPTR ;从键值表中取出一个键值 CJNE A,R4,KY51 ;与R4中的实际键值进行比较KY5: MOVX A,@R1 ;键值已被确认,再读键盘Y值 ANL A,#1FH CJNE A,#1FH,KY5 ;按键仍未释放,要等待 ACALL D20ms ;按健释放后还要等一回儿 AJMP KY52 ;进行键义分析KY51: INC DPTR ;键值未确认,准备取表中下一个值 INC R5 ;键序号值加1 AJMP KY4 ;继续查KY52: CJNE R5,#16,KY6 ;键号是否大于16 AJMP KY61 ;健号等于16也是命令键KY6: JNC KY61 ;键号大于16是命令键 MOV R0,R3 ;键号小于16为数字键,R3是数据存贮指针 MOV A,R5 ;取回数字键值 MOVX @R0,A ;将数字存入指定单元中 INC R3 ;数字存贮指针加l LJMP DISPLY ;转显示程序KY61: MOV A,R5 ;命令键时,先取回键号 CLR C SUBB A,#16 ;算出命令偏移量 MOV R5,A ADD A,R5 ADD A,R5 MOV DPTR,#COMAD ;取命令表首址 JMP @A+DPTR ;转去执行命令程序D20ms:MOV R6,#88H MOV R7,#14HDL: DJNZ R6,$ DJNZ R7,$
您可能关注的文档
最近下载
- 教学能力大赛常见答辩问题汇总2.docx VIP
- 2025年河南省焦作市解放区小升初必考题数学检测卷含解析.doc VIP
- 小学人工智能校本课程《会听的人工智能——语音识别》教学设计.pdf VIP
- EVE各族战舰介绍及装配.doc VIP
- 2024-2025学年河南省焦作市解放区小升初总复习数学精选精练含解析.doc VIP
- 报刊客户的营销方案(3篇).docx VIP
- 2025广西公需科目培训考试答案(90分)——“一区两地一园一通道”建设;人工智能时代的机遇与挑战(1).pdf VIP
- 纺织企业(印染厂)全套组织架构、部门岗位职能设计及全套企业管理制度汇编(拿来即用).docx
- 电网物资质量检测能力评价导则(试行).docx
- 贵州省教科院贵州省教育学会教学设计论文评选结果.docx VIP
文档评论(0)