Estimado KALLITOS
Gracias por responder, el codigo es algo así:
;/////////////////////////////////////
LEER_APUNTADOR:
CLRWDT
CALL LEER_DIRECCION
.
.
.
.
.
.
.
.
.
GOTO LEER_APUNTADOR
;/////////////////////////////////////
LEER_DIRECCION:
MOV ADDRESS_H,W0
MOV W0,DATO
CALL TX_DATO
RETURN
;/////////////////////////////////////
TX_DATO:
BCLR LATB,#0
CALL RETARDO
BCLR LATB,#1
CALL RETARDO
CALL RETARDO
BSET LATB,#0
RETURN
;/////////////////////////////////////
RETARDO:
MOV #0X0004,W0
MOV W0,TEMP
LOOP_RETARDO:
NOP
DEC TEMP
BTSS SR,#Z
GOTO LOOP_RETARDO
RETURN
;/////////////////////////////////////
De esta forma el programa se me pierde y se resetea, ahora si lo hago de la siguiente manera si me funciona bien:
;/////////////////////////////////////
LEER_APUNTADOR:
CLRWDT
LEER_DIRECCION:
MOV ADDRESS_H,W0
MOV W0,DATO
CALL TX_DATO
.
.
.
.
.
.
.
.
.
GOTO LEER_APUNTADOR
;/////////////////////////////////////
TX_DATO:
BCLR LATB,#0
CALL RETARDO
BCLR LATB,#1
CALL RETARDO
CALL RETARDO
BSET LATB,#0
RETURN
;/////////////////////////////////////
RETARDO:
MOV #0X0004,W0
MOV W0,TEMP
LOOP_RETARDO:
NOP
DEC TEMP
BTSS SR,#Z
GOTO LOOP_RETARDO
RETURN
;/////////////////////////////////////
En conclusión y a mi entender el problema es que estoy anidando más subrutinas de lo que es permitido.
Por favor gracias por cualquier ayuda al respecto.
Saludos,
William