📄 pp.asm
字号:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP PTF0
ORG 001BH
LJMP PTF1
MAIN: MOV R1,#30
MOV R2,#60
MOV 35H,20 ;20次1S
SETB ET0
SETB ET1
MOV TH0,#3CH ;定时器0赋值
MOV TL0,#0B0H
MOV TH1,#3CH ;定时器1赋值
MOV TL1,#0B0H
MOV TMOD,#01H ;T0计数器方式1,gate为0
MOV TMOD,#10H ;T1计数器方式1,gate为0
;MOV SCON待定
MAIN0: JNB P3.3,FD ;抢答开始
JNB P3.3,INIT0
AJMP MAIN0
INIT0: SETB TR0 ;开启定时器
SETB EA ;允许中断
START: JNB P1.0,FD ;抢答过程
JNB P1.0,D1
JNB P1.1,FD
JNB P1.1,D2
JNB P1.2,FD
JNB P1.2,D3
JNB P1.3,FD
JNB P1.3,D4
JNB P1.4,FD
JNB P1.4,D5
JNB P1.5,FD
JNB P1.5,D6
JNB P1.6,FD
JNB P1.6,D7
JNB P1.7,FD
JNB P1.7,D8
CJNE R1,#0,START
CLR TR0
LCALL NOISE
AJMP MAIN
FD: MOV R3,#250 ;由12MHZ晶震频率计算出的100MS防抖
FD0: MOV R4,#200
FD1: DJNZ R4,FD1
DJNZ R3,FD0
RET
D1: CLR TR0 ;关闭定时器
MOV R6,#1
LCALL DISPLAY2 ;显示抢答者号码
LCALL NOISE ;报警
LCALL ANS
D2: CLR TR0
MOV R6,#2
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
D3: CLR TR0
MOV R6,#3
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
D4: CLR TR0
MOV R6,#4
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
D5: CLR TR0
MOV R6,#5
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
D6: CLR TR0
MOV R6,#6
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
D7: CLR TR0
MOV R6,#7
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
D8: CLR TR0
MOV R6,#8
LCALL DISPLAY2
LCALL NOISE
LCALL ANS
ANS: SETB TR1 ;开启计数器2
LCALL DISPLAY1 ;显示时间
CJNE R5,#0,ANS
LCALL NOISE
LCALL RESTART
RESTART: JNB P3.2,FD3
FD3: LCALL FD
JNB P3.2,M0
M0: LJMP MAIN
PTF0: MOV TH0,#3CH
MOV TL0,#0B0H
MOV A,R1
LCALL DISPLAY1
DJNZ 35H,PTF00
DEC R1
PTF00: RETI
PTF1: MOV TH0,#3CH
MOV TL0,#0B0H
MOV A,R2
LCALL DISPLAY1
DJNZ 35H,PTF10
DEC R2
PTF10: RETI
DISPLAY1: MOV R7,#2 ;书180页,串口静态显示
MOV B,#10
DIV AB ;将A分解成十位与个位,分别放于A与B
MOV 7FH,B
MOV 7EH,A
MOV A,7FH
ACALL DISPLAY
MOV A,7EH
ACALL DISPLAY
DISPLAY2: MOV A,R6
DISPLAY: MOV DPTR,#SEGTAB
MOVC A,@A+DPTR
MOV SBUF,A
RET
SEGTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0,1,2,3,4,5,6,7,8,9
NOISE: MOV R6,#3 ;蜂鸣器子程序
BEEPL: CLR P2.7
LCALL DEL2
SETB P2.7
LCALL DEL1
DJNZ R6,BEEPL
RET
DEL1: MOV R7,#20
DEL2: MOV R7,#10
SJMP DEL3
DEL3: MOV R3,#0C4H
DEL4: MOV R4,#50H
DJNZ R4,$
DJNZ R3,DEL4
DJNZ R7,DEL3
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -