Jeje al final no era tan largo

, igual aca te doy una idea, podes completarlo con el algoritmo original y la estructura que te doy aca. Yo no lo probe porque no dispongo de este PIC, pero la idea esta!
A! y toda la info la presentamos aca, naaa de mails... Es para compartir con todos, como dijo algun forista, "todos para uno, uno para todos!!!"

; Compilado con MPLAB IDE v7.42.-
list p=12f629 ; list directive to define processor
#include <p12f629.inc> ; processor specific variable definitions
__CONFIG _CP_ON & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF &_INTRC_OSC_NOCLKOUT & _MCLRE_ON & _CPD_OFF
;*********************************************
; Declaracion de variables
LEDS equ 0x05 ; Puerto de visualizacion de Leds
TRIS_LEDS equ 0x85 ; configuracion del puerto
PDel0 equ 0x1A ; para demoras
PDel1 equ 0x1B ; para demoras
;**********************************************
; Programa Principal
org 0x00
inicio
banksel TRIS_LEDS ; Seleccionno Bank de TRIS
clrf TRIS_LEDS ; Todos como salida
banksel LEDS ; Selecciono Bank de LEDS
bucle
call carac_T
call carac_O
call carac_D
call carac_O
call carac_SPACE
call carac_P
call carac_I
call carac_C
goto bucle
;**********************************************
; Funciones.-
;----------------------------------------------
; Envio al puerto
salida
movwf LEDS
call demora_500us
clrf LEDS
call demora_200us
return
;-----------------------------------------------
; Caracteres a enviar
;...............................................
carac_A
movlw b'00110110'
call salida
movlw b'00000101'
call salida
movlw b'00000101'
call salida
movlw b'00110110'
call salida
call demora_1ms
return
;................................................
carac_T
movlw b'00000001'
call salida
movlw b'00110111'
call salida
movlw b'00000001'
call salida
call demora_1ms
return
;................................................
carac_O
movlw b'00010110'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
movlw b'00010110'
call salida
call demora_1ms
return
;................................................
carac_D
movlw b'00110111'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
movlw b'00010110'
call salida
call demora_1ms
return
;................................................
carac_P
movlw b'00110111'
call salida
movlw b'00000101'
call salida
movlw b'00000101'
call salida
movlw b'00000010'
call salida
call demora_1ms
return
;..................................................
carac_I
movlw b'00100001'
call salida
movlw b'00110111'
call salida
movlw b'00100001'
call salida
call demora_1ms
return
;...................................................
carac_C
movlw b'00010110'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
call demora_1ms
return
;....................................................
carac_SPACE
call demora_4ms
return
;....................................................
; Las demas letras tienen el mismo formato, solo copiar los valores del Algoritmo
; original.-
;*******************************************************
; Demoras
;-------------------------------------------------------------
demora_500us
movlw .123 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop00
nop
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop00 ; 2 no, loop
PDelL10
goto PDelL20 ; 2 cycles delay
PDelL20
nop ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
;-------------------------------------------------------------
demora_200us
movlw .48 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop01
nop
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop01 ; 2 no, loop
PDelL11
goto PDelL21 ; 2 cycles delay
PDelL21
nop ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
;-------------------------------------------------------------
demora_1ms
movlw .248 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop02
nop
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop02 ; 2 no, loop
PDelL12
goto PDelL22 ; 2 cycles delay
PDelL22
nop ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
;-------------------------------------------------------------
demora_4ms
movlw .5 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop13
movlw .159 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop23
nop
nop ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop23 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop13 ; 2 no, loop
return ; 2+2 Done
;-------------------------------------------------------------
end
Espero que te sirva, suerte!