title: How can I send a string serially from an 8051 only ONCE?
body: <p>I am making an 8051 microcontroller communicate wirelessly with a computer. The microcontroller will send a string to its serial port (DB9) and the computer will receive this string and manipulate it.</p>
  <p>My problem is that I do not know how to make the 8051 transmit the string just once. Since I need to manipulate the string at the PC end it has to be received only one time. Currently, even though in the C code I am sending the string once, on my computer I am receiving the same string continuously.
  I assume this is because whatever is in the SBUF is continuously transmitted. Is there any way that I can send my string only once? Is there a way to empty the SBUF?</p>
  <p>I tried to use the RTS (Request to Send) pin (7th pin) on the DB9 because I read somewhere that if I negated the voltage on that pin it would stop the flow of data to the serial port. So what I did was programmed my microcontroller to send the string and then sent logic level 0 to an output pin that was connected to my DB9 RTS pin. However, that didn't work.</p>
  <p>Does anyone have any suggestions? I'd really appreciate them.</p>
  <h1>EDIT</h1>
  <p>The software that I'm using on the PC is X-CTU for Xbee modules. This is the code on my microcontroller:</p>
  <pre><code>include reg51.h 
  void SerTx(unsigned char);  
  void main(void)  
  {  
    TMOD = 0x20;  
    TH1 = 0xFD;  
    SCON = 0x50;  
    TR1 = 1;   
  
    SerTx('O');  
    SerTx('N');  
    SerTx('L');  
    SerTx('Y'); 
  
  }
  
  void SerTx(unsigned char x)  
  {  
    SBUF = x;  
    while(TI==0);   
    TI = 0;   
  }  
  </code></pre>
  <p>Could someone please verify that it is in fact only sending the string once?</p>
  <h1>EDIT</h1>
  <p>Looks like Steve, brookesmoses and Neil hit the nail on the head when they said that it was what was happening AFTER my main function that was causing the problem.  I just tried the suggested code Steve put up (more specifically the for(;;); and defining serTX outside of main) and it worked perfectly.  The controller is probably rebooted and hence the same code keeps repeating itself.</p>
  <p>Thanks so much for the help! :)</p>