基于单片机的六路抢答器设计报告内容摘要:

志位 RING EQU 22H。 响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,0FH。 初设抢答时间为15s MOV R2,0AH。 初设答题时间为10s MOV TMOD,11H。 设置未定时器/模式1 MOV TH0,0F0H MOV TL0,0FFH。 越高发声频率越高,越尖 MOV TH1,3CH MOV TL1,0B0H。 50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1。 允许四个中断T0/T1/INT0/INT1 CLR OK CLR RING SETB TR1 SETB TR0。 一开始就运行定时器,以开始显示FFF。 果想重新计数重置TH1/TL1就可以了查询程序:START: MOV R5,0BH MOV R4,0BH MOV R3,0BH ACALL DISPLAY。 未开始抢答时候显示FFF JB ,NEXT ACALL DELAY JB ,NEXT。 去抖动,如果开始键按下就向下执行。 否者跳到非法抢答查询 ACALL BARK。 按键发声 MOV A,R1 MOV R6,A。 送R1R6,因为R1中保存了抢答时间 SETB OK。 抢答标志位,用于COUNT只程序中判断。 是否查询抢答 MOV R3,0AH。 抢答只显示计时,灭号数 AJMP COUNT。 进入倒计时程序,查询有效抢答的程序。 在COUNT里面NEXT: JNB ,FALSE1 JNB ,FALSE2 JNB ,FALSE3 JNB ,FALSE4 JNB ,FALSE5 JNB ,FALSE6 AJMP START非法抢答处理程序:FALSE1: ACALL BARK。 按键发声 MOV R3,01H AJMP ERRORFALSE2: ACALL BARK MOV R3,02H AJMP ERRORFALSE3: ACALL BARK MOV R3,03H AJMP ERRORFALSE4: ACALL BARK MOV R3,04H AJMP ERRORFALSE5: ACALL BARK MOV R3,05H AJMP ERRORFALSE6: ACALL BARK MOV R3,06H AJMP ERRORINT0(抢答时间R1调整程序):INT0SUB:MOV A,R1 MOV B,0AH DIV AB MOV R5,A MOV R4,B MOV R3,0AH ACALL DISPLAY。 先在两个时间LED上显示R1 JNB ,INC0 JNB ,DEC0 JNB ,BACK0 AJMP INT0SUBINC0: MOV A,R1 CJNE A,63H,ADD0。 如果不是99,R2加1,如果加到99了。 R1就置0新加起 MOV R1,00H ACALL DELAY1 AJMP INT0SUBADD0: INC R1 ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1。 如果R1为0,R1就置99 DEC R1 ACALL DELAY1 AJMP INT0SUBSETR1: MOV R1,63H ACALL DELAY1 AJMP INT0SUBBACK0: RETIINT1(回答时间R2调整程序):INT1SUB:MOV A,R2 MOV B,0AH DIV AB MOV R5,A MOV R4,B MOV R3,0AH ACALL DISPLAY JNB ,INC1 JNB ,DEC1 JNB ,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,63H,ADD1 MOV R2,00H ACALL DELAY1 AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。