..
//#include <REG52.h>		/*  Use with Keil or Raisonance */
//#include <at89x52.h>		/*  Use with SDCC */
#include <p89v51rd2.h>		/*  Use with SDCC */
#include <stdio.h>
#include <string.h>

xdata char rcvbuf[256];
int ldptr,flptr,xmt_flag,opti_fooler;

void serial_intr(void) interrupt 4
{
	if(TI==1)
	{	TI=0;
		xmt_flag=1;
	 }
	if(RI==1)
	{ 	RI=0;
	  	rcvbuf[ldptr++]=SBUF; //get 1st char in array rcvbuf[]
		if(ldptr>=256)
		ldptr=0;				//to chk overflow of buffer
	}
}
 
void uart_send(char c)
{	
	xmt_flag=0;
	SBUF=c;
	//while(xmt_flag==0)
	while(1)
	{
		if ( xmt_flag != 0)
			break;
		else
			opti_fooler++;
	}
} 
 
void init_port(void)
{	
	RCAP2H=0xff;
	RCAP2L=0xFd;	//for 115kbps
	T2CON = 0x34;
	SCON = 0x50;
	IE = 0x90;
}
void main (void)
{
	int i;	
	init_port();
 	for (i = 0; i < 100;  i++)
 	{
 		uart_send('D');
 	}
	while(1);
}


#ifdef NEVER_DEFINED


Definitions for SDCC
/*  SCON  */
__sbit __at (0x98) RI   ;
__sbit __at (0x99) TI   ;

/* T2CON */
__sfr __at (0xC8) T2CON ;

/* RCAP2 L & H */
__sfr __at (0xCA) RCAP2L  ;
__sfr __at (0xCB) RCAP2H  ;

__sfr __at (0xA8) IE   ;
__sfr __at (0x99) SBUF ;

//--------------------
Definitions for Raisonance
/*  SCON  */
at 0x99 sbit TI    ;
at 0x98 sbit RI    ;

at 0xC8 sfr T2CON ;
at 0xCA sfr RCAP2L;
at 0xCB sfr RCAP2H;

at 0xA8 sfr IE    ;
at 0x99 sfr SBUF  ;

#endif 










