Interrupts and Serial Port programming in Assembly level for 8051 Microcontroller

Write ALP that continuously gets 8-bit data from P0 and sends it to P1 while simultaneously creating square wave of 200 milliseconds period on P2.1. Use Timer 0 (Mode 2) to create square wave. (Crystal frequency=11.0592MHz).

Assembly Code:

ORG 0000H
SJMP MAIN

ORG 000BH //Timer 0 ISR Address
CLR TF0
CPL P2.1  //Complement P2.1
RETI      //Return from ISR

ORG 0030H
MAIN:   MOV TMOD, #02H
        MOV TH0, #0A4H
        MOV P0,#0FFH
        MOV IE,#82H
        SETB TR0

HERE:   MOV A,P0
        MOV P1,A
        SJMP HERE

END
   

Write ALP to transmit data serially. Set baud rate at 4800, 8-bit data and 1 stop bit.

Assembly Code:

ORG 0000H
SJMP MAIN

ORG 0030H
MAIN:MOV TMOD,#20H
     MOV TH1,#-6
     MOV SCON,#50H
     SETB TR1
BACK: MOV SBUF,#"A"
AGAIN: JNB TI,AGAIN   
       CLR TI
SJMP BACK     
END

Write ALP to transmit data serially. Set baud rate at 19200, 8-bit data and 1 stop bit.

Assembly Code:

 
ORG 0000H
SJMP MAIN

ORG 0030H
MAIN:MOV A,PCON  //Set PCON.7 = 1 without modifying other bits for increased baud rate
     SETB ACC.7
     MOV PCON,A

     MOV TMOD,#20H
     MOV TH1,#-3
     MOV SCON,#50H

     SETB TR1

BACK:  MOV SBUF,#"D"
AGAIN: JNB TI,AGAIN   
       CLR TI
SJMP BACK     
END