ORG 0000H AJMP MAIN ORG 0003H ;INT0中断入口 AJMP INT0SUB ORG 000BH ;T0中断入口 AJMP T0INT ORG 0013H ;INT1中断入口 AJMP INT1SUB ORG 001BH ;T1中断入口 AJMP T1INT ORG 0100H ; ;主程序; MAI N : ;主要功能是对系统进行初始化 MOV R1,#0AH ;初设抢答时间10S MOV R2,#1EH ;初设回答时间30S MOV TMOD,#11H ;定时器TO和T1均工作在方式1 MOV TH0,#0F0H ;定时器TO 賦初值 MOV TL0,#0FFH MOV TH1,#3CH ;定时器T1賦初值 MOV TL1,#0B0H SETB EA ;打开中断寄存器总开关 SETB ET0 ;打开T0中断开关 SETB ET1 ;打开T1中断开关 SETB EX0 ;打开INT0中断开关 SETB EX1 ;INT1中断开关 CLR OK CLR RING SETB TR1 ;T1开始定时 SETB TR0 ;T0开始定时 ;非法抢答查询程序; FEIFA: JNB P1.0,FEIFA1 ;查询1号选手是否发生抢答 JNB P1.1,FEIFA2 ;查询2 号选手是否发生抢答 JNB P1.2,FEIFA3 ;查询3号选手是否发生抢答 JNB P1.3,FEIFA4 ;查询4 号选手是否发生抢答 JNB P1.4,FEIFA5 ;查询5 号选手是否发生抢答 JNB P1.5,FEIFA6 ;查询6 号选手是否发生抢答 JNB P1.6,FEIFA7 ;查询7 号选手是否发生抢答 JNB P1.7,FEIFA8 ;查询8 号选手是否发生抢答 AJMP START FEIFA1: MOV R3,#01H ;将犯规号送到R3 AJMP ERROR ;跳转到犯规处理程序 FEIFA2 : MOV R3,#02H AJMP ERROR FEIFA3 : MOV R3,#03H AJMP ERROR FEIFA4 : MOV R3,#04H AJMP ERROR FEIFA5 : MOV R3,#05H AJMP ERROR FEIFA6: MOV R3,#06H AJMP ERROR FEIFA7 : MOV R3,#07H AJMP ERROR FEIFA8 : MOV R3,#08H AJMP ERROR ;犯规处理程序; ERROR: MOV R0,#00H MOV TH1,#3CH ;对T1重新进行赋值 MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与34H ; 指示灯闪烁处理程序; 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 SETB RING MOV R0,#00H MOV R3,#34H MOV R4,#0BH MOV R5,#0BH ;显示FF和号数 AJMP CHECK1 CHECK 1: JNB P3.1,QUIT1 MOV R3,34H ACALL DISPLAY AJMP HERE QUIT1: CLR RING CLR OK AJMP START ;*显示子程序*; DISPLAY: MOV DPTR,#DAT1 MOV A,R3 MOVC A,@A+DPTR MOV P2,#0FBH MOV P0,A ACALL DELAY2 MOV DPTR,#DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A ACALL DELAY2 MOV A,R4 MOVC A,@A+DPTR MOV P2,#OFDH MOV P0,A ACALL DELAY2 RET DaT1:DB 0FFH,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH DAT2:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH ;正常抢答处理程序; TRUE1: ACALL BAOJING MOV A, R2 MOV R6,A ;抢答时间送到R6 MOV R3, #01H CLR OK ;答题时间,锁抢答
AJMP COUNT TRUE2: ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNT TRUE3 : ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNT TRUE4 : ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNT TRUE5 : ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNT TRUE6 : ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNT TRUE7 : ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNT TRUE8 : ACALL BAOJING MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT ;报警处理程序; BAOJING : SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING RET END
|