asm version 52 words

Code:
#CONFIG
    __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_ON & _CP_OFF
#ENDCONFIG
DEFINE OSC 8 'LETS PBP KNOW WE WILL BE RUNNING AT 8MHZ

'PIN DEFENITIONS
'
'GP3 
'GP4 USED FOR TRIGGER INPUT
'GP5 USED FOR LED
'SET UP THE  REGISTERS
OSCCON = %01110001  '8MHZ INTERNAL CLOCK USED
CMCON0 = %00000111 'CIN PINS ARE I/O, COUT PIN IS I/O
TRISIO = %00111010 ' GP2  OUTPUT THE REST ARE INPUTS 
ANSEL = 0 'NO ANALOG PORTS - ALL DIGITAL
WPU = %00010000 'GP4 WEAK PULL UP ENABLED.
    
'    DEFINE DEBUG_REG GPIO
'    DEFINE DEBUG_BIT 2
'    DEFINE DEBUG_BAUD 9600
'    DEFINE DEBUG_MODE 0
''    LATB.7=1
'PBP software serial out 8N1
delay var byte bank0 ' set baud rate delay
txbyte var byte bank0' byte to send
bcount var byte bank0' counter
serpin var gpio.0
; set serial delay for   9600b
main:
txbyte = "H"
GOSUB serialout
txbyte = "E"
GOSUB serialout
txbyte = "L"
GOSUB serialout
txbyte = "L"
GOSUB serialout
txbyte = "O"
GOSUB serialout
txbyte = $20 ' space
GOSUB serialout
 
goto main
 

 serialout:
asm 
 movlw 8
 movwf _bcount 
 bcf     GPIO ,0
 call pausedelay
sendbyte
 btfss  _txbyte ,0
 goto snd0
 bsf   GPIO ,0
 goto sndd
snd0 
 bcf   GPIO ,0
sndd
 rrf _txbyte ,F
 call pausedelay
 decfsz _bcount ,F
 goto sendbyte
 bsf GPIO ,0
pausedelay
 movlw 67
 movwf _delay 
zpausedelay
 decfsz _delay  ,F
 goto zpausedelay
 return
endasm