I'm having a strange problem which I suspect is due to hardware, but who knows. I'm trying to communicate with a palm pilot via RS232 through a MAX232 unit. I have SEROUT2 commands scattered throughout my code and they work until I reach a point in which there is a long (10 second) pause. A SEROUT2 command follows the pause and gives me an error on the palm. When I run the program hooked up to a serial communicator on a PC, I don't get an error, but the SEROUT that follows the pause is mostly garbeldygook. The SEROUT commands that follow are OK.

I've monitored the voltage on the serout pin and it is zero during the pause. I've tried baud rates from 300 to 9600 (strangely 9600 works the best) and the problem remains. Any suggestions as to what is going on during the long pause? Do I need pull-ups or pull-downs on the serial pins?

Here is the code--all simple stuff....

Code:
'****************************************************************
'*  Name    : B_Logger.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 2/6/2008                                          *
'*  Version : 1.0                                               *
'*  Notes   : PIC16F688                                               *
'*          : INTERNAL OSC; MCLR OFF                                                  *
'****************************************************************

'BIRDLOGGER CONTROL PROGRAM
    'I2C COMMUNICATION VIA PORTS C4 AND C3
    'ANALOG INPUT ON PORTA.0
    'DIGITAL INPUT ON PORTC.1 WITH 10K PULLUP
    'RS232 COMMUNICATION
        'PORTA.5 DATA IN
        'PORTA.4 DATA OUT
    'PORTA.1 output; start/stop
    'PORTA.2 output; maintain power

'DEFINE VARIABLES
B0 VAR BYTE
B1 VAR BYTE

'ALIAS PINS
SDA     VAR PORTC.4
SCL     VAR PORTC.3
SDIN    VAR PORTA.5
SDOUT   VAR PORTA.4
REC     VAR PORTA.1
PWR     VAR PORTA.2
SWITCH  var PORTC.1
FLEX    VAR PORTA.0

'DEFINE PINS
TRISA = %00100001
TRISC = %00000010

LOW REC
SEROUT2 SDOUT,84,["test 9", 13, 10] 
pAUSE 10

MAINLOOP:
SEROUT2 SDOUT,84,["MAIN LOOP", 13, 10]
PAUSE 10
IF SWITCH = 0 THEN trigger 'MONITOR THE SWITCH    
PAUSE 10
IF SWITCH = 0 THEN trigger
B0 = B0 +1 'COUNTING VARIABLE TO CONTROL PWR BUTTON
if B0 = 10000 THEN 'ONCE EVERY 2-3 MIN PRESS THE PWR BUTTON TO KEEP CAMERA ON
    B0 = 0 'RESET COUNTING VARIABLE
    HIGH pwr 'PRESS PWR BUTTON
    FOR B1 = 1 TO 20 'LOOP THAT ALLOWS PWR BUTTON TO STAY PUSHED FOR .2 SEC TO OVERCOME BOUNCE COCNTROL
    IF SWITCH = 0 THEN trigger 'MAINTAINS SWITCH MONITORING   
    PAUSE 10
NEXT B1
ENDIF
GOTO MAINLOOP 'RETURN TO THE BEGINNING

End
                           
trigger:
    SEROUT2 SDOUT,84,["trigger", 13, 10]
    PAUSE 10
    HIGH REC 'HIT THE RECORD BUTTON TO ACTIVATE RECORDING
    Pause 250 'PAUSE TO OVERRIDE BOUNCE CONTROL
    LOW REC 'RELEASE RECORD BUTTON
    Pause 500 'RECORD FOR 1/2 SECOND
    HIGH REC 'HIT RECORD BUTTON AGAIN TO STOP RECORDING
    Pause 250
    LOW REC 'RELEASE RECORD BUTTON
    Pause 10000 'LONG PAUSE TO LET CAMERA STORE VIDEO
    SEROUT2 SDOUT,84,["recording done", 13, 10]
    Pause 10
    REPEAT 
        SEROUT2 SDOUT,84,["waiting...", 13, 10]
        pAUSE 100
    UNTIL SWITCH = 1
    SEROUT2 SDOUT,84,["back to loop", 13, 10]
    GOTO MAINLOOP