找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1712|回复: 1
打印 上一主题 下一主题
收起左侧

八位竞赛抢答器程序

[复制链接]
跳转到指定楼层
楼主
ID:413212 发表于 2018-10-21 19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
系统程序
P1.0为开始抢答,P1.7为停止,P1.1-P1.6为六路抢答输入,数码管段选P0口,为选P2口,蜂鸣器输出为P3.6口。
OK EQU 20H;   抢答开始标志位
RING EQU 22H;  响铃标志位
ORG  0000H
AJMP MAIN
ORG  0003H
AJMP INT0SUB
ORG  000BH
AJMP  TOINT
ORG  0013H
AJMP  INT1SUB
ORG  001BH
AJMP  T1INT
ORG  0040H
MAIN: 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;
查询程序
START: MOV   R5,#0BH
MOV   R4,#0BH
MOV   R3,   #0BH
ACALL  DISPLAY;  未开始抢答时候显示FFF
JB  P3.1,NEXT
ACALL   DELAY
JB  P3.1,NEXT;如果“开始键”按下就向下执行,                                                             否则跳到非法抢答查询
ACALL BARK; 按键发声
MOV A,R1
MOV R6,A; 送R1到R6,因为R1中保存了抢答时间
SETB OK;抢答标志,用于COUNT子程序中判断是否查询抢                                          答
MOV R3,0AH;抢答只显示时,灭号数
ALMP  COUNT;
NEXT: JNB  P1.0,FALSE1
JNB  P1.1,FALSE2
JNB  P1.2,FALSE3
JNB  P1.3,FALSE4
JNB  P1.4,FALSE5
JNB  P1.5,FALSE6
JNB  P1.6,FALSE7
JNB  P1.7,FALSE8
正常抢答处理程序:
TRUE1:ACALL   BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#01H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
TURE2:ACALL   BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#02H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
TURE3:ACALL  BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#03H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP COUNT
TURE4:ACALL  BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#04H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
TURE5:ACALL   BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#05H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
TURE6:ACALL   BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#06H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
TURE7:ACALL   BARK;  按键发声
MOV  A,R2
MOV  R7,A;   抢答时间R2送R6
MOV  R3,#02H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
TURE8:ACALL   BARK;  按键发声
MOV  A,R2
MOV  R6,A;   抢答时间R2送R6
MOV  R3,#08H
CLR  OK;   因为答题的计时不再查询抢答,所以就锁了抢答
AJMP   COUNT
MOV A,R2
MOV R6,A
MOV R3,#03#
CLR OK
AJMP COUNT
显示程序:
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY
RET
DELAY1:MOV 35H,#08H
LOOPO: ACALL DISPLAY
DJNZ 35H,LOOPO
RET
发声程序:
BARK: SETB RING
ACALL DELAY1
ACALL DELAY1
CLR RING; 按键发声
RET
END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-10-22 05:06 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表