基于51单片机16路抢答器的设计与制作内容摘要:

, 并 响 提 示 音显 示 E R , 并 响 报 警 音中 断 返 回N      Y 汇编源代码 ORG 0000H。 系统复位时入口地址 LJMP START ORG 000BH ; T0 溢出中断入口 LJMP INSER。 跳转至中断程序 ORG 0030H START:MOV SP,60H。 系统初始化 MOV TMOD,06H。 设置 T0 工作于计数工作方式 2 MOV TH0,0FFH 基于 51 单片机 16 路抢答器设计与制作 第 11 页 共 23 页 MOV TL0,0FFH。 设置加 1 计数器的计数初值为 255 SETB TR0。 启动 T0 开始计数 SETB ET0。 开 T0 溢出中断 SETB EA。 开总允许中断 MAIN:LJMP MAIN。 主程序(等待中断) CLR ET0。 实现互锁 INSER:MOV R0,40H MOV R1,50H MOV A,0FFH。 T0 溢出中断服务(读 P1, P2) MOV P1,A。 置 P1 输入方式 MOV A,0FFH MOV P2,A。 置 P2 输入方式 A1:MOV A,P1。 读入键状态 CJNE A,0FFH,A2。 有键按下,转 A2 MOV A,P2。 读入键状态 CJNE A,0FFH,A2。 有键按下,转 A2 SJMP A1 A2:LCALL DELAY。 延时 10ms MOV A,P1。 再读 P1 CJNE A,0FFH,L1。 确实有键按下,转 L1 MOV A,P2。 再读 P2 CJNE A,0FFH,L1。 确实有键按下,转 L1 LJMP A1。 是键抖动,返回 L1:MOV @R0,P1 MOV @R1,P2 MOV R4,0。 对 R4 赋初值 MOV A,@R0。 判断同时按键的个数 JNB ,J1 AJMP N1 基于 51 单片机 16 路抢答器设计与制作 第 12 页 共 23 页 J1:INC R4。 出现一次键自加一次 N1:JNB ,J2 AJMP N2 J2:INC R4 N2:JNB ,J3 AJMP N3 J3:INC R4 N3:JNB ,J4 AJMP N4 J4:INC R4 N4:JNB ,J5 AJMP N5 J5:INC R4 N5:JNB ,J6 AJMP N6 J6:INC R4 N6:JNB ,J7 AJMP N7 J7:INC R4 N7:JNB ,J8 AJMP N8 J8:INC R4 N8:MOV A,@R1 JNB ,J9 AJMP N9 J9:INC R4 N9:JNB ,J10 AJMP N10 J10:INC R4 基于 51 单片机 16 路抢答器设计与制作 第 13 页 共 23 页 N10:JNB ,J11 AJMP N11 J11:INC R4 N11:JNB ,J12 AJMP N12 J12:INC R4 N12:JNB ,J13 AJMP N13 J13:INC R4 N13:JNB ,J14 AJMP N14 J14:INC R4 N14:JNB ,J15 AJMP N15 J15:INC R4 N15:JNB ,J16 AJMP N16 J16:INC R4 N16:MOV A,R4 CJNE A,01H,ERR。 P1,P2 有两个及以上的键同时按下,转 ERR LCALL RIGHT。 只有一个键按下调用 RIGHT SJMP LEND ERR:LCALL ERROR。 同时有两个及以上的键同时按下调用 RIGHT LEND:RETI DELAY:MOV R6,10。 延时 10ms LOOPB:LCALL TIME DJNZ R6,LOOPB RET 基于 51 单片机 16 路抢答器设计与制作 第 14 页 共 23 页 RIGHT:MOV A,@R0 JNB ,TAB0。 转 0 号键首地址 JNB ,TAB1。 转 1 号键首地址 JNB ,TAB2。 转 2 号键首地址 JNB ,TAB3。 转 4 号键首地址 JNB ,TAB4。 转 4 号键首地址 JNB ,TAB5。 转 5 号键首地址 JNB ,TAB6。 转 6 号键首地址 JNB ,TAB7。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。