;***************************** Librería "RS232MEN.INC"
;
;
; Estas subrutinas permiten transmitir mensajes desde el microcontrolador hacia el
; ordenador a través del puerto serie RS232.
;
; Subrutina "RS232_Mensaje" -------------------------------------------------------------
;
; Envía por el puerto serie el mensaje apuntado por el registro W y grabado en memoria
; de programa del PIC. El mensaje se visualizará en el monitor del ordenador. Esta
; subrutina sigue la estructura de funcionamiento similar a la ya conocida "LCD_Mensaje"
; para visualización de mensajes en pantallas de  modulos LCD.
;
    CBLOCK
    RS232_ApuntaCaracter               ; Apunta al carácter a visualizar.
    RS232_ValorCaracter                ; Valor ASCII del carácter a visualizar.
    ENDC

RS232_Mensaje
    movwf    RS232_ApuntaCaracter      ; Posición del primer carácter del mensaje.
    movlw    Mensajes                  ; Halla la posición relativa del primer carácter
    subwf    RS232_ApuntaCaracter,F    ; del mensaje respecto del comienzo de todos los
                                       ; mensajes (identificados mediante la etiqueta
                                       ; "Mensajes").
    decf    RS232_ApuntaCaracter,F     ; Para compensar la posición que ocupa la
RS232_VisualizaOtroCaracter            ; instrucción "addwf PCL,F".
    movf    RS232_ApuntaCaracter,W     ; Apunta al carácter a visualizar.
    call    Mensajes                   ; Obtiene el código ASCII del carácter apuntado.
    movwf    RS232_ValorCaracter       ; Guarda el valor de carácter.
    movf    RS232_ValorCaracter,F      ; Lo único que hace es posicionar flag Z. En caso
    btfsc    STATUS,Z                  ; que sea "0x00", que es código indicador final   
    goto    RS232_FinMensaje           ; de mensaje, sale fuera.
RS232_NoUltimoCaracter
    call    RS232_EnviaDato            ; Visualiza el carácter ASCII leído.
    incf    RS232_ApuntaCaracter,F     ; Apunta a la posición del siguiente carácter
    goto    RS232_VisualizaOtroCaracter; dentro del mensaje.
RS232_FinMensaje
    return

; Subrutina "RS232_LineasBlanco" ------------------------------------------------
;
; Visualiza unas cuantas líneas en blanco en el monitor del ordenador.

    CBLOCK
    RS232_ContadorLineas
    ENDC

RS232_LineasBlanco
    movlw    d'10'                     ; Por ejemplo este número de líneas en
    movwf    RS232_ContadorLineas      ; blanco.
R232_LineasBlancoLazo
    movlw    .10                       ; Código del salto de línea
    call    RS232_EnviaDato
    decfsz    RS232_ContadorLineas,F
    goto    R232_LineasBlancoLazo
    movlw    .13                       ; Código del retorno de carro.
    call    RS232_EnviaDato            ; Finaliza con un retorno de carro.
    return