HOLA AMIGOS MI PROBLEMA ES EL SIGUIENTE:
ESTOY TRATANDO DE VISUALIZAR MENSAJES O CADENAS DE CARACTERES ENVIADOS SERIALMENTE DESDE UN PC EN UN LCD CONTROLADO POR UN 16F873 Y MI PROBLEMA LLEGA CUANDO NECESITO VISUALIZAR UN SEGUNDO MENSAJE (EL PRIMER LO LOGRO VISUALIZAR) NO LOGRO CONSEGUIR LA SECUENCIA PARA TAL TAREA, HE TRATADO ACOMODAR EL PROGRAMA EN LA FORMA QUE ME PUEDA FUNCIONAR PERO NO LO LOGRO.
LA RECEPCION DE CARACTERES LO HAGO POR MEDIO DE INTERRUPCIONES Y LOS ALMACENO EN LA RAM A PARTIR DE LA DIRECCION H'27' CON FSR E INDF, ASI:
INTERRUPCION:
RX_DATO BTFSS PIR1,RCIF ;INTERRUPCION EN LA RECEPCION?
RETFIE ;NO, FALSA INTERRUPCION
BCF PIR1,RCIF ;SI, LIMPIA FLAG DE INTERRUPCION
MOVWF W_TEMP ;COPIAMOS EL ACUMULADOR W AL REGISTRO W_TEMP
MOVF STATUS,W ;GUARDA STATUS AL ACUMULADOR
MOVWF STAT_TEMP
MOVF RCREG,W ;RECIBE DATO TRANSMITIDO POR EL PC
MOVWF INDF ;LO GUARDAMOS EN EL REGISTRO QUE APUNTA FSR
INCF FSR,1 ;PASAMOS AL REGISTRO SIGUIENTE
INCF CONTA ;CUENTA CADA CARACTER RECIBIDO
MOVF STAT_TEMP,W
MOVWF STATUS ;RECUPERA EL REGISTRO STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W ;RECUPERA EL ACUMULADOR W
RETFIE
LUEGO LA VISUALIZACION LA HAGO CON LA SIGUIENTE SUBRUTINA UTILIZANDO TAMBIEN FSR E INDF, ASI:
VISUALIZA
MOVLW H'27' ;PRIMERA DIRECCION RAM EN LA QUE SE
MOVWF FSR ; ALMACENO EL PRIMER CARACTER DEL MENSAJE
CLRF CONTADOR ;
OTRA1 MOVF INDF,W
CALL DATO ;LLAMO A ESTA SUBRUTINA PARA PONER EL DATO AL LCD
MOVLW H'FF' ;RETARDO ENTRE CARACTERES
MOVWF RETARDO ;
RETA1 CALL DELAY ;
CALL DELAY ;
DECFSZ RETARDO,1 ;
GOTO RETA1 ;
INCF FSR,1
INCF CONTADOR,1
MOVF CONTA,W ;CARGA W CON EL DATO DE CONTA
XORWF CONTADOR,0
BTFSS STATUS,2 ;TERMINO MENSAJE?
GOTO OTRA1 ;NO
GOTO VISUALIZA ;SI
PARA QUE EL MENSAJE SE VISUALICE SE TIENE QUE REPETIR ESTA RUTINA VARIAS VECES, Y CON EL PRIMER MENSAJE LO LOGRO PERO SI LLEGA UN SEGUNDO MENSAJE NO ME FUNCIONA Y SE PORQUE: PORQUE SE PROVOCA MUCHAS INTERRUPCIONES DEPENDIENDO DEL NUMERO DE CARACTERES DEL MENSAJE (No INTERRPUCIONES = No DE CARACTERES ENVIADOS) Y SE ME REVUELVE LOS CONTENIDOS DEL FSR Y EL INDF DE LA RUTINA ANTERIOR Y DE LA RUTINA DE LA INTERRUPCION.
EL OBJETIVO DEL PROGRAMA ES VISUALIZAR MENSAJES ENVIADOS POR EL PC CICLICAMENTE EJM: ENVIO UN MENSAJE Y ESTE PERMANECERA VISUALIZANDOSE EN EL DISPLAY HASTA QUE LLEGUE EL SIGUIENTE MENSAJE Y ASI SUCESIVAMENTE...SIN IMPORTAR LA LONGITUD DEL MENSAJE...PORFAVOR LES AGRADECERIA SI ME AYUDAN ...O DE QUE OTRA FORMA LO PUEDO HACER...ESPERO SU PRONTA RESPUESTA YA QUE LA NECESITO LO MAS PRONTO POSIBLE