BUZ REG P3.6 ; BUZZER ENB REG P3.2 ; RELAY ENABLE ;========================================================== ;= IN THE NAME OF ALLAH = ;========================================================== ORG 0000H ; REST LJMP INI ORG 0023H ;RI_TI LJMP SERISR ;=================================== ;= PROGRAM INITIALIZATION = ;=================================== INI: MOV R0,#7FH CLR A MOV @R0,A DJNZ R0,$-1 MOV P0,#0 CLR ENB MOV TMOD,#20H MOV SCON,#50H MOV IE,#90H MOV TH1,#-26 SETB TR1 CLR BUZ ; OFF BUZZER ;=================================== ;= MAIN PROGRAM ROUTEEN = ;=================================== MAIN: CALL FAIND JMP MAIN ;=================================== ;= SERIAL FAIND DATA ROUTEEN = ;=================================== FAIND: MOV A,30H CJNE A,#'a',FAIND_EX MOV A,31H CJNE A,#'b',FAIND_EX MOV A,33H CJNE A,#'c',FAIND_EX MOV A,32H SETB BUZ CALL RELAYDRV CALL DELAY MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 FAIND_EX: RET ;=================================== ;= DELAY ROUTINE = ;=================================== DELAY: MOV R0,#0 MOV R1,#0 MOV R2,#30 DLYLP: DJNZ R0,DLYLP DJNZ R1,DLYLP CLR P3.6 DJNZ R2,DLYLP RET ;=================================== ;= RELAY DRAIVE ROUTINE = ;=================================== RELAYDRV: CJNE A,#0,RELAY1 CPL P0.0 RET RELAY1: CJNE A,#1,RELAY2 CPL P0.1 RET RELAY2: CJNE A,#2,RELAY3 CPL P0.2 RET RELAY3: CJNE A,#3,RELAY4 CPL P0.3 RET RELAY4: CJNE A,#4,RELAY5 CPL P0.4 RET RELAY5: CJNE A,#5,RELAY6 CPL P0.5 RET RELAY6: CJNE A,#6,RELAY7 CPL P0.6 RET RELAY7: CJNE A,#7,RELAY8 CPL P0.7 RET RELAY8: CJNE A,#8,RELAY9 INC P2 RET RELAY9: CJNE A,#9,RELAY10 DEC P2 RELAY10: RET ;=================================== ;= SERIAL INTRUPT SERVICE ROUTINE = ;=================================== SERISR: JNB TI,SERREC CLR TI SERREC: JNB RI,SER_EX PUSH A MOV A,SBUF CLR RI MOV 30H,31H MOV 31H,32H MOV 32H,33H MOV 33H,A POP A SER_EX: RETI ;=================================== END