安徽工贸职业技术学院毕业设计(论文)
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 MOV R0,#00H
CHECK: JNB P3.1,QUIT ;如按下停止键退出 JNB OK,CHECKK ;只在回答倒计时才有效 AJMP NEXTT
CHECKK:JNB P3.0,REPEAT ;判断是否使用锦囊 NEXTT: ACALL DISPLAY
JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续
24
安徽工贸职业技术学院毕业设计(论文)
倒数(这里起到锁抢答作用)
AJMP RECOUNT ACCOUT:MOV A,DATA0 JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ7 JNB ACC.7,TZ8 AJMP RECOUNT TZ7: AJMP TRUE7 TZ8: AJMP TRUE8
QUIT: CLR OK CLR RING AJMP START
正常抢答处理程序:
TRUE1: ACALL BARK MOV A,R2
MOV R6,A MOV R3,#01H
CLR OK 答
AJMP COUNT TRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H
;如果按下了“停止键”执行的程序 ;抢答时间R2送R6 ;因为答题的计时不再查询抢答,所以就锁了抢25
安徽工贸职业技术学院毕业设计(论文)
CLR OK AJMP COUNT TRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNT TRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNT TRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNT TRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNT TRUE7: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H
26
安徽工贸职业技术学院毕业设计(论文)
CLR OK AJMP COUNT TRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT
犯规抢答程序:
ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H
MOV 34H,R3 HERE: MOV A,R0
CJNE A,#06H,FLASH CLR RING MOV R3,#0AH MOV R4,#0AH
MOV R5,#0AH AJMP CHECK1
FLASH: CJNE A,#0CH,CHECK1 R0,重新计
SETB RING MOV R0,#00H
MOV R3,34H MOV R5,#0BH
MOV R4,#0BH AJMP CHECK1 CHECK1: JNB P3.1,QUIT1
;犯规号数暂存与(34H) ;0.3s向下运行->灭并停响 ;三灯全灭 ;下面是0.8s的情况,响并显示号数并清 ;取回号数 ;显示FF和号数 27
安徽工贸职业技术学院毕业设计(论文)
ACALL DISPLAY AJMP HERE QUIT1: CLR RING CLR OK AJMP START 显示程序:
DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出
MOV A,R3
MOVC A,@A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5
MOVC A,@A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4
MOVC A,@A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RET
DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;\灭\灭\
DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;第一个为零,其他与上相同,因为十位如果为零显示熄灭
28