汇编源代码:
ORG 0000H
AJMP START
ORG 000BH
AJMP TIME0
ORG 0040H
START: MOV SP,#60H
SETB P3.7
SETB P3.0
L1: JB P3.0,$ ;等待主持人按键
JNB P3.0,$
MOV P2,#0C0H ;数码管显示0
;5s初始化
MOV 30H,#00H ;软件计数器清00
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0 ;启动5s计时
LOOP: SJMP LOOP
TIME0: LCALL S0
MOV TL0,#0B0H
MOV TH0,#3CH
INC 30H
MOV R1,30H
CJNE R1,#100,RET0
DEC SP
DEC SP
LJMP L1
RET0: RETI
s0: MOV A,#0FFH
MOV P1,A
MOV A,P1 ;将选手按键状态送寄存器A
XRL A,#0FFH
JNZ L2
RET
L2: JNB P1.0,S1
JNB P1.1,S2
JNB P1.2,S3
JNB P1.3,S4
JNB P1.4,S5
JNB P1.5,S6
JNB P1.6,S7
JNB P1.7,S8
S1: MOV P2,#0F9H
LJMP SS
S2: MOV P2,#0A4H
LJMP SS
S3: MOV P2,#0B0H
LJMP SS
S4: MOV P2,#99H
LJMP SS
S5: MOV P2,#92H
LJMP SS
S6: MOV P2,#82H
LJMP SS
S7: MOV P2,#0F8H
LJMP SS
S8: MOV P2,#80H
LJMP SS
;扬声器重复发声
MOV R3,#0FFH
SS: CLR P3.7
LCALL DELAY
SETB P3.7
LCALL DELAY
DJNZ R3,SS
;准备进行下一轮抢答
JB P3.0,$
JNB P3.0,$
MOV P2,#0C0H
LJMP S0
;短延时
DELAY: MOV R1,#249
LOP: NOP
NOP
DJNZ R1,LOP
RET
END
|