Hola estoy haciendo una practica en lenguaje ensamblador von el pic p12f629
el proposito es desplegar una palabra hola y lo tengo ke simular en el hyperternal la cuestion es que simulado los caracteres si se envian atravez el el puerto que utilizamos pero una vez conecetado el interfaz para controlar los niveles de voltaje en comunicacnio serial no despliega nada el hyperterminal lo configuro con 9600 de bits sin paridad y con un bit de stop pero solo me muestra basura el programa es
include <p12f629.inc>
__config _INTRC_OSC_NOCLKOUT & _CP_OFF & _CPD_OFF & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF
;**************************************************************
;* Declaracion de EQUs
;**************************************************************
porTX EQU GPIO
pinTX EQU GPIO3
;**************************************************************
;* Declaracion de variables (inician en la direccion 0x20 de RAM)
;**************************************************************
cblock 0x20
CntDly :1 ; esto es qeuivalente a CntDly EQU 0x20
CntDly2 :1 ; esto es qeuivalente a CntDly2 EQU 0x21
CntBit :1 ; esto es equivalente a CntBit EQU 0x22
DatoTX :1 ; esto es equivalente a DatoTX EQU 0x23
flag :1
CntDly3 :1
endc
;**************************************************************
; Direccion de Reset (aqui inicia el programa despues de RESET)
;**************************************************************
ORG 0x00
goto inicio ; saltar a inicio
;**************************************************************
; Vector de Interrupcion (aqui salta el PC si existe interrupcion)
;**************************************************************
ORG 0x04
retfie
;**************************************************************
;* Principal pricipal
;**************************************************************
inicio call 3FFh ; Tomar valor de calibracion (4MHz)
bsf STATUS, RP0 ; Selecciona banco 1
movwf OSCCAL ; Salvarlo en OSCCAL
movlw 0 ; configura Puerto GPIO de Salida
movwf TRISIO ; TRISIO=00001000
bcf STATUS,RP0 ; selecciona banco 0
clrf 05h
movlw 07
movwf CMCON
clrf flag
clrf DatoTX
bcf STATUS,Z
MainLoop call cadena
movwf DatoTX
incf flag
xorlw 00
btfsc STATUS,Z
goto Final
call Transmitir
;call delay_1s
goto MainLoop
cadena movf flag,0
addwf PCL,1 ;w=offset
retlw "h"
retlw "o"
retlw "l"
retlw "a"
retlw 0x00
;*****************************************************************
;* S U B R U T I N A S *
;*****************************************************************
; Transmitir
; Desripcion: Rutina para tranmitir dato en forma serie
; por la terminal pinTX (formato: 9600,8,N,1)
; del puerto porTX
; Parametros de Ent: DatoTX -Aqui debe de estar el dato a TX
; Parametros de Sal: Ninguno
; Rutinas Utilizadas: Delay_104us -Retardo para un bit a 9600 Bauds
; Variables Locales: CntBit Contador de bits
;*****************************************************************
Transmitir: movlw 8
movwf CntBit ;CntBit=8
bcf porTX,pinTX ;Trans. bit de inicio (siempre 0)
call Delay_104uS ;retardo para 9600 Bauds
prox_bit: rrf DatoTX ;rotar a la izq. C=bit a tx
btfsc STATUS,C ;probar bit a transmitir
bsf porTX,pinTX ;C=1 TErminal RB7=1 (Tx

btfss STATUS,C ;
bcf porTX,pinTX ;C=0 Terminal RB7=0 (Tx:0)
call Delay_104uS ;retardo para 9600 Bauds
decfsz CntBit ;si contador=0 trans. bit de paro
goto prox_bit
bsf porTX,pinTX ;Trans.bit de paro (simpre 1)
call Delay_104uS
return
;*****************************************************************
; Delay_104uS
; Desripcion: Rutina de retardo de 104uS con el uso del Xtal de 4MHz
; Variables de Ent: CntDly, CntlDly2
; Variables de Sal: ninguna
; Var. Modificas: CntDly, CntlDly2
;*****************************************************************
Delay_104uS
movlw 2
movwf CntDly ; CntDly=2
sigue movlw 0f
movwf CntDly2 ; CntDly2=15
decfsz CntDly2 ; while(--CntDly2 ¡=0 )
goto $-1
decfsz CntDly
goto sigue
nop
;nop
;nop
;nop
;nop
return
delay_1s
movlw 27
movwf CntDly ; CntDly=96
siguele movlw 84
movwf CntDly3 ; CntDly3=84
sigue2 movlw 40
movwf CntDly2 ; CntDly2=24
decfsz CntDly2 ; while(--CntDly2 ¡=0 )
goto $-1
decfsz CntDly3
goto sigue2
decfsz CntDly
goto siguele
return
Final
END
el dalay si es exacto con la llamada a subrutina de 104us
gracias espero su respuesta
pd utilizo el mplab para programar e icprog para programar