标题: 八位竞赛抢答器程序 [打印本页]
作者: boo_ker 时间: 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
作者: admin 时间: 2018-10-22 05:06
补全原理图或者详细说明一下电路连接即可获得100+黑币
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |