云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于51单片机的 6路抢答器 - 图文

基于51单片机的 6路抢答器 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 10:46:17

RING EQU 22H;响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT

ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H

MAIN: MOV R1,#0FH MOV R2,#0AH MOV TMOD,#11H MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH

MOV TL1,#0B0H;50ms为一次溢出中断

SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1 CLR OK CLR RING

SETB TR1

SETB TR0 ;=====查询程序===== START: SETB P3.0 SETB P3.1 SETB P3.7

MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY

JB P1.0,NEXT ACALL DELAY

JB P1.0,NEXT;去抖动,如果\开始键\按下就向下执行,否者跳到非法抢答查询

ACALL BARK;按键发声

33

CLR P3.0 SETB P3.1 SETB P3.7 MOV A,R1

MOV R6,A;送R1->R6,因为R1中保存了抢答时间

SETB OK;抢答标志位,用于COUNT程序中判断是否查询抢答

MOV R3,0AH;抢答只显示计时,灭号数

AJMP COUNT;进入倒计时程序,\查询有效抢答的程序\在COUNT里面

NEXT: JNB P1.1,FALSE1 JNB P1.2,FALSE2 JNB P1.3,FALSE3 JNB P1.4,FALSE4 JNB P1.5,FALSE5 JNB P1.6,FALSE6 AJMP START

;=====非法抢答处理程序===== FALSE1: ACALL BARK MOV R3,#01H AJMP ERROR FALSE2: ACALL BARK MOV R3,#02H

AJMP ERROR

FALSE3: ACALL BARK MOV R3,#03H AJMP ERROR FALSE4: ACALL BARK MOV R3,#04H AJMP ERROR FALSE5: ACALL BARK MOV R3,#05H AJMP ERROR FALSE6: ACALL BARK MOV R3,#06H AJMP ERROR

;=====INT0(抢答时间R1调整程序)===== INT0SUB:MOV A,R1 MOV B,#0AH

34

DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY

JNB P3.2,INC0;P3.2为+1s键,如按下跳到INCO JNB P3.3,DEC0;P3.3为-1s键,如按下跳到DECO JNB P1.7,BACK0;P1.7为确定键,如按下跳到BACKO AJMP INT0SUB INC0: MOV A,R1

CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,重新加起。

MOV R1,#00H ACALL DELAY1

AJMP INT0SUB ADD0: INC R1

ACALL DELAY1 AJMP INT0SUB DEC0: MOV A,R1

JZ SETR1;如果R1为0, R1就置99, DEC R1

ACALL DELAY1 AJMP INT0SUB SETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUB BACK0: RETI

;=====INT1(回答时间R2调整程序)===== INT1SUB:MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.2,INC1 JNB P3.3,DEC1 JNB P1.7,BACK1 AJMP INT1SUB INC1: MOV A,R2

CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1

35

AJMP INT1SUB

ADD1: INC R2

ACALL DELAY1 AJMP INT1SUB DEC1: MOV A,R2 JZ SETR2 DEC R2

ACALL DELAY1 AJMP INT1SUB SETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUB BACK1: RETI

;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)===== COUNT: MOV R0,#0000 MOV TH1,#3CH MOV TL1,#0B0H

RECOUNT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH

DIV AB;除十分出个位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;个位存于(31H) MOV R5,30H;取十位 MOV R4,31H;取个位 MOV A,R6 SUBB A,#07H

JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0

CJNE A,#0AH,FULL;1s中0.5s向下运行 CLR RING AJMP CHECK

FULL: CJNE A,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计时 SETB RING MOV A,R6

JZ QUIT;计时完毕 MOV R0,#00H

DEC R6;一秒标志减1 AJMP CHECK LARGER: MOV A,R0

CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查\停/显示\ DEC R6;计时一秒R6自动减1

36

搜索更多关于: 基于51单片机的 6路抢答器 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

RING EQU 22H;响铃标志位 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0SUB ORG 000BH AJMP T0INT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H MAIN: MOV R1,#0FH MOV R2,#0AH MOV TMOD,#11H MOV TH0,#0F0H MOV TL0,#0FFH MOV TH1,#3CH MOV TL1,#0B0H;50ms为一次溢出中断 SETB EA

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com