;========================================================== ;= IN THE NAME OF ALLAH = ;========================================================== ;TRANSMITTER TI_F REG 00H PRESW REG 30H ;=================================== 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 TMOD,#20H MOV SCON,#40H MOV IE,#90H SETB TI_F MOV TH1,#-26 SETB TR1 ;=================================== ;= MAIN PROGRAM ROUTEEN = ;=================================== MAIN: CALL DELAY CALL KEYREAD JC MAIN CALL SEND LJMP MAIN ;=================================== ;= DELAY ROUTEEN = ;=================================== DELAY: MOV R2,#0 MOV R3,#100 DLYLP: DJNZ R2,DLYLP DJNZ R3,DLYLP RET ;=================================== ;= LCD SEND ROUTEEN = ;=================================== SEND: JNB TI_F,$ CLR TI_F MOV A,#'a' MOV SBUF,A CLR TI JNB TI_F,$ CLR TI_F MOV A,#'b' MOV SBUF,A CLR TI JNB TI_F,$ CLR TI_F MOV A,PRESW MOV SBUF,A CLR TI JNB TI_F,$ CLR TI_F MOV A,#'c' MOV SBUF,A CLR TI SEND_EX: RET ;=================================== ;= KEY READ ROUTEEN = ;= THESE VRIABLE ARE USED = ;= KEY_PORT,PRESW,A,B,R2,R3,C = ;= IF C IS SET THEN RED FOUTTY = ;= RETURN VALUE IN PRESW = ;=================================== KEYREAD: MOV P0,#FFH MOV P2,#FFH MOV A,P0 MOV R2,#8 MOV B,#0 KEYLP0: RLC A JNC FAINDKEY DJNZ R2,KEYLP0 MOV R2,#8 MOV A,P2 MOV B,#8 KEYLP1: RLC A JNC FAINDKEY DJNZ R2,KEYLP1 SETB C RET FAINDKEY: MOV A,R2 DEC A ADD A,B MOV PRESW,A CLR C RET ;=================================== ;= SERIAL INTRUPT SERVICE ROUTINE = ;=================================== SERISR: JNB TI,SERREC CLR TI SETB TI_F SERREC: JNB RI,SER_EX PUSH A MOV A,SBUF CLR RI POP A SER_EX: RETI ;=================================== END