Actually, they where not just typos, the first two where legitimate mistakes, but I caught them myself (that's what happens when you do this stuff at 1:00am) on the last one I was using a return at the end of each subroutine, but as Darrel and Bruce pointed out, I needed to use Gosub instead of a Goto, so I fixed all the mistakes, but it still does not work, so then I tried Steve's suggestion and changed the DEFINE HSER_BAUD to DEFINE HSER_SPBRG 39, but it still made no difference, incidentally, DEFINE HSER_BAUD 31250 works fine on the 16F628, so I would think it should work on the 16F688 also.
Here is the revised code, any other suggestions would be appreciated.

Code:
' PicBasic file for midi footpedal interface using a Pic16F688
' set osc to HS when programming

DEFINE OSC 20                   ' tell program we are using a 20mhz oscillator
DEFINE HSER_RCSTA 90h           ' enable hardware serial port
DEFINE HSER_TXSTA 24h           ' enable high speed transmit
DEFINE HSER_BAUD 31250          ' set the baud rate for MIDI communications
DEFINE ADC_BITS 10              ' set the number of bits in the sample
DEFINE ADC_SAMPLEUS 50          ' set the sample time

TRISA = %00111111               ' Set PORTA to inputs
TRISC = %00101111               ' set PORTC to inputs
ANSEL = %11110000               ' enable analog 4,5,6,7 the rest as digital
ADCON0 = %10000001              ' set VREF to VDD and right justify result
ADCON1 = %00100000              ' set conversion clock FOSC/32
CMCON0 = 7                      ' turn off comparitors
OPTION_REG.7 = 0                ' enable internal pull-ups on porta
WPUA = %00000111                ' enable individual pull-ups on porta 0,1,2            

C0 Var word	     	        ' create C0 to store result from Volume pot  
C1 Var word                     ' create C1 to store result from Expression pot
C2 Var word                     ' create C2 to store result from Foot Controller pot
C3 Var word                     ' create C3 to store result from Portamanto Time pot
vol Var byte                    ' create variable for volume 
exp Var byte                    ' create variable for expression 
foo Var byte                    ' create variable for foot controller 
por Var byte                    ' create variable for portamento time 
volout Var byte                 ' create variable for volume output
expout Var byte                 ' create variable for expression output
fooout Var byte                 ' create variable for foot controller output
porout Var byte                 ' create variable for portamento time output
sw1 Var byte                    ' create variable to hold switch1 value (sustain on/off)
sw2 Var byte                    ' create variable to hold switch2 value (portamento on/off)
    
loop:
ADCIN 4,C0                      ' read Volume pot and place value in C0
vol = C0 / 8                    ' convert reading to a midi value from 1-127
If vol <> volout Then           ' check to see if the value has changed
   volout = vol
   HSEROUT [176,7,volout]       ' send Volume out serial port as midi information
Endif

ADCIN 5,C1                      ' read expression pot and place value in C1
exp = C1 / 8                    ' convert reading to a midi value from 0-127
If exp <> expout Then           ' check to see if the value has changed
   exp = C1
   HSEROUT [176,11,expout]      ' send exptession out serial port as midi information
Endif

ADCIN 6,C2                      ' read foot controller pot and place value in C2
foo = C2 / 8                    ' convert reading to a midi value from 0-127
If foo <> fooout Then           ' check to see if the value has changed
   fooout = foo
   HSEROUT [176,4,fooout]       ' send foot controller out serial port as midi information
Endif

ADCIN 7,C3                      ' read portamento time pot and place value in C3
por = C3 / 8                    ' convert reading to a midi value from 0-127
If por <> porout Then           ' check to see if the value has changed
   porout = por
   HSEROUT [176,5,porout]       ' send portamento time out serial port as midi information
Endif

If porta.0 = 0 Then gosub sw1on       ' check sustain pedal
If porta.0 = 1 Then gosub sw1off       
If porta.1 = 0 Then gosub sw2on       ' check portamento pedal
If porta.1 = 1 Then gosub sw2off

If porta.2 = 0 Then                
   Hserout [255]                ' reset all controllers
   Endif

Goto Loop	                ' go back to continuous monitoring

sw1on:
If sw1 = 0 Then                 ' check to see if sustain is off
   sw1 = 127
   Hserout [176,64,sw1]         ' turn on sustain
Endif
return

sw1off:
If sw1 = 127 Then               ' check to see if sustain is on
   sw1 = 0
   Hserout [176,64,sw1]         ' turn off sustain
Endif
return

sw2on:
If sw2 = 0 Then                 ' check to see if portamento is off
   sw2 = 127
   Hserout [176,65,sw2]         ' turn on portamento
Endif
return

sw2off:
If sw2 = 127 Then               ' check to see if portamento is on
   sw2 = 0
   Hserout [176,65,sw2]         ' turn off portamento
Endif
return