何故、RS232Cポートが思ったように動かなのでしょうか?
問題はいくつか考えられます。順に解説します。 
      
        
          
        
          
        
          *送信中など他のタスクを行なっているときに受信データが入ってきて、データが失われてはいませんか。 getc()関数をもっとも高い位置(優先順位の高いところ)においてデータを落とさないようにプログラムを再構成します。
           もし、ポーリングでデータを得てる場合、kbhit()を使うと1/3の時間で受信データのチェックが行なえます。また、9600bpsのとき、kbhit()関数をおおよそ35μSで呼び出して受信をチェックしないとデータを落とします。
         トライステート・レジスターの設定が正しいことを確認してください。使用されるモード(standard, fast, fixed)は
          #USE RS232に遭遇した時のモードになります。デフォルトのSTANDARDモードを使用するのが最も安全です。
          
        main() {
	                                  while(TRUE)
		                                       putc('U');
                              }
          
          ロジックプローブ、スコープなどを使用してXMITピンのアクティビティを確認してください。
          スコープで見ることができる場合は、ビット時間(1/BAUD)を確認してください。
          レベルコンバータの後にもう一度点検してください。
          main() {
	                                 printf("start");
	                                 while(TRUE)
		                                    putc( getc()+1
                               );
          PCに接続した時、Aを入力するとBがエコーバックされます。もし、なにも戻ってこない場合(初期の"Start"を除)、
          PIC®MCUのRCVピンをロジックプローブでチェックします。
          HIGH状態であることを見ることが出来ますが、PCでキーが押されたときパルスがLowになるはずです。
それがどこに失われているかを調べるためにバックトレースします。
        
          
        
          
