/*SERIAL INTERRUPT SERVICE ROUTINE*/

#include<reg52.h>
unsigned char buf;

void onSerialPortISR(void) interrupt 4 using 3
{
	if(TI)
	{	
		TI = 0;	    /* clr ti since we are going to transmit again */
	}
	if(RI)					
	{
		RI = 0;	    /* clear ri to wait for next character */
		buf = SBUF; /* store the character from sbuf into temp buffer */

		if(buf == 0xAA)/* IF THE RECEIVED VALUE IS 0xAA */ 
		{
			while(!TI){;}   /* waiting for any previous transmission to finish */
			TI = 0;		/* clr ti since we are going to transmit again */
			SBUF = 0x55;	/* sending the data acknowledged byte back */
			while(!TI){;}	/* waiting for data to be transmitted */
		}
	}
}