Data & asynchronous transmission to use in wireless communications

UPDATE:
I finally achieved a transmission above 200kHz, 240kHz more exactly.
Like you said Pylon, can not use delaymicroseconds(..) due to the delays inserted. Then i used nop asm delays and i got what i wanted.

__asm__("nop\n\t");

each one is 62.5 ns so with help of oscilloscope i timed them individually. Result is shown below.

#include "VLC.h"

MANCHESTERClass::MANCHESTERClass() //constructor
{
  TxPin = TxDefault;
  pinMode(TxPin, OUTPUT); // sets the digital pin 4 default as output
}//end of constructor

void MANCHESTERClass::SetPW(unsigned int interval)
{
	HALF_BIT_INTERVAL = interval; // user sets the pulse width of half bit
}//end of set half pulse width

void MANCHESTERClass::SetTxPin(char pin)
{
	if (pin <=7)
		TxPin = pin; // user sets the digital pin as output
	else if ((pin >= 8) || (pin <= 13))
		TxPin = pin - 8; // user sets the digital pin as output
	DDRB = DDRB | B0000001 | (1 << TxPin);
  //pinMode(TxPin, OUTPUT); // sets the digital pin 4 default as output
}//end of set transmit pin

void MANCHESTERClass::Transmit(unsigned int data)
{
  unsigned char byteData[2] = { data  >> 8, data & 0xFF};
  TransmitBytes(2, byteData);
}

void MANCHESTERClass::TransmitBytes(unsigned char numBytes, unsigned char *data)
{
  // Setup last send time so we start transmitting in 10us
   
 /* 
  // Send 14 0's
  for( int i = 0; i < 14; i++) {
	  //send capture pulses - sendzero()
			PORTB = B00000001;
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			PORTB = B00000000;
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			//__asm__("nop\n\t");
      }
	
	//end of capture pulses

	// Send a single 1 - start data pulse
	PORTB = B0000000;
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	PORTB = B00000001;
	__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t");
	*/

  // Send the user data
  for (unsigned char i = 0; i < numBytes; i++) {
	for (uint8_t mask = 0x01; mask; mask <<= 1) {
      if (data[i] & mask) {
			//sendone()
			PORTB = B00000000;
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			PORTB = B00000001;
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
      } 
	  else {
			//sendzero()
			PORTB = B00000001;
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			PORTB = B00000000;
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
			__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t");
      }
    }//end of byte
  }//end of data
  //sendzero(); //end of capture pulses
  //sendzero(); //end of capture pulses
}//end of send the data


MANCHESTERClass MANCHESTER;

Got some error bits, especially when i send many 1's but i can live with that.

Working on the receiving part...will make an update once i get some results.

Thank you for support,
Fernando Oliveira