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
|