Here is my code, feel free to offer suggestions or modifications.
	Code:
	' Read and write hardware USART
B1      var     byte
Done    var     byte
TxBuf   var     byte[3]
STX     var     byte
ETX     var     byte
Period  var     byte
i       var     byte
tmpval var     byte
' Initialize USART
        TRISC = %10111111       ' Set TX (PortC.6) to out, rest in
        SPBRG = 25              ' Set baud rate to 2400
        RCSTA = %10010000       ' Enable serial port and continuous receive
        TXSTA = %00100000       ' Enable transmit and asynchronous mode
' Define ADCIN parameters
Define    ADC_BITS    10         ' Set number of bits in result
Define    ADC_CLOCK    3         ' Set clock source (3=rc)
Define    ADC_SAMPLEUS    50     ' Set sampling time in uS
adval    var    word        ' Create adval to store result
    TRISA = %11111111    ' Set PORTA to all input
    ADCON1 = %10000010    ' Set PORTA analog and right justify result
    Pause 500        ' Wait .5 second
' Echo received characters in infinite loop
STX = 2
ETX = 3
Period = 46
TxBuf[1] = 51
TxBuf[2] = 54
TxBuf[3] = 56
mainloop: 
        ADCIN 0, adval    ' Read channel 0 to adval
'basicaly here i want to convert advar into 3 ascii numbers
'representing advar
'So a result like 936 would put 
'57 in txbuf[1] 
'51 in txbuf[2]
'54 in txbuf[3]
'Then call the serial output routine which adds a stx char, 2 digits
'a period then the last digit followed by an ETX char
        Gosub StringOut         ' Send character to serial output
        pause 500               ' Wait half second
        Goto mainloop           ' Do it forever
' Subroutine to get a character from USART receiver
charin: B1 = 0                  ' Preset to no character received
        If PIR1.5 = 1 Then      ' If receive flag then...
                B1 = RCREG      ' ...get received character to B1
        Endif
ciret:  Return                  ' Go back to caller
' Subroutine to send a character to USART transmitter
charout: If PIR1.4 = 0 Then charout     ' Wait for transmit register empty
               
        TXREG = B1              ' Send character to transmit register
       done = 1
        Return                  ' Go back to caller
' Subroutine to send a character string to USART transmitter
'First Send STX (02)  then 2 digits, then period (46), then 1 digit, then ETX (03)
StringOut: If PIR1.4 = 0 Then StringOut     ' Wait for transmit register empty
       done = 1
               
       TXREG = STX              ' Send character to transmit register
       while PIR1.4 = 0
       wend
       for i = 1 to 2
           TXREG = TxBuf[i]              ' Send character to transmit register
           while PIR1.4 = 0
           wend
       next i
       TXREG = Period              ' Send character to transmit register
       while PIR1.4 = 0
       wend
       TXREG = TxBuf[3]              ' Send character to transmit register
       while PIR1.4 = 0
       wend
       TXREG = ETX              ' Send character to transmit register
       while PIR1.4 = 0
       wend
    Return                  ' Go back to caller
 
				
			
Bookmarks