;----------------------------------------------------------------------------------------; ;THIS PROGRAM OUTPUTS DIFFERENT MESSAGES FROM THE SERIAL PORT OF 89C51 ON PRESSING THE ; ;PUSH BUTTONS ATTACHED TO P1.ALSO THIS DISPLAYS THE NUMERIC DATA ENTERED FROM THE PC'S ; ;KEYBOARD ON THE SEVEN SEGMENT DISPLAY ATTACHED TO P0. ; ;----------------------------------------------------------------------------------------; ;If you have any querries about this code please contact me at: ; ; ; ; ; ; kool_projects@yahoo.com ; ; mubasharpk09@hotmail.com ; ; ; ; Cell#03018557978 ; ; ; ;or visit my website: ; ; ; ; http://www.geocities.com/kool_projects ; ;----------------------------------------------------------------------------------------; SW1 EQU P1.0 SW2 EQU P1.1 SW3 EQU P1.2 ORG 0000H LJMP MAIN ORG 0023H LJMP SERIAL_ISR MESSAGE1:DB 'MY NAME IS MUBASHAR YASIN',00H MESSAGE2:DB 'I AM AN ELECTRICAL ENGINEER',00H MESSAGE3:DB 'I LOVE TO PLAY WITH 8051',00H ;;;;;;;;;;;;;;;; SERIAL_INIT: ;;;;;;;;;;;;;;;; MOV SCON,#52H ;8-BIT UART,REN MOV TMOD,#20H ;8-BIT AUTO RELOAD MODE MOV TH1,#-3 ;9600 BPS AUTO RELOAD VALUE SETB EA ;GLOBAL INTERRUPT ENABLE SETB ES ;SERIAL INTERRUPT ENABLE SETB PS ;HIGH PRIORITY FOR SERIAL INTERRUPTS SETB TR1 ;START TIMER RET ;;;;;;;;;;;;;;;; SERIAL_ISR: ;;;;;;;;;;;;;;;; PUSH ACC JB RI,READ ;CHECK RI SET? LJMP EXIT4 READ: CLR RI MOV A,SBUF MOV R1,A LCALL DISPLAY EXIT4:POP ACC RETI ;;;;;;;;;;;;;;;; LOOK_UP: ;;;;;;;;;;;;;;;; INC A MOVC A,@A+PC RET TABLE:DB 0x40,0x7C,0x12,0x18,0x2C,0x09,0x01,0x5C,0x00,0x08 ;COMMON ANODE DISPLAY ;;;;;;;;;;;;;;;; DISPLAY: ;;;;;;;;;;;;;;;; SUBB A,#30H LCALL LOOK_UP MOV P0,A RET ;;;;;;;;;;;;;;;; MSG1: ;;;;;;;;;;;;;;;; JNB SW1,$ ;WAIT FOR KEY RELEASE MOV DPTR,#MESSAGE1 MOV R0,#0H RPT1: MOV A,R0 MOVC A,@A+DPTR JZ EXIT1 JNB TI,$ CLR TI MOV SBUF,A INC R0 LJMP RPT1 EXIT1:RET ;;;;;;;;;;;;;;;; MSG2: ;;;;;;;;;;;;;;;; JNB SW2,$ ;WAIT FOR KEY RELEASE MOV DPTR,#MESSAGE2 MOV R0,#0H RPT2: MOV A,R0 MOVC A,@A+DPTR JZ EXIT2 JNB TI,$ CLR TI MOV SBUF,A INC R0 LJMP RPT2 EXIT2:RET ;;;;;;;;;;;;;;;; MSG3: ;;;;;;;;;;;;;;;; JNB SW3,$ ;WAIT FOR KEY RELEASE MOV DPTR,#MESSAGE3 MOV R0,#0H RPT3: MOV A,R0 MOVC A,@A+DPTR JZ EXIT3 JNB TI,$ CLR TI MOV SBUF,A INC R0 LJMP RPT3 EXIT3:RET ;;;;;;;;;;;;;;;; MAIN: ;;;;;;;;;;;;;;;; MOV SP,#70H ;INITIALIZE STACK POINTER LCALL SERIAL_INIT AGAIN: JNB SW1,ONE JNB SW2,TWO JNB SW3,THREE LJMP AGAIN ONE: LCALL MSG1 LJMP AGAIN TWO: LCALL MSG2 LJMP AGAIN THREE:LCALL MSG3 LJMP AGAIN END