Hola todos me urge salir de esta dificultad bueno les cuento estoy transmitiendo datos de la señal ecg a través del pic 16f877a de forma serial a una pc paro estos datos cuando los visualizo la señal me sale incompleta osea parese que se perdiera infornacion.
Como puedo almacenar cierta cantidad de datos por lo menos 150 datos en la memoria del pic para luego enviarlas en paquetes de datos en forma serial a la pc y poder eliminar este problema
por favor necesito ayuda si me pueden mandar algunos ejemplos de cómo hacerlo a alguna explicación se los agradecería
aqui les dejo el codigo de programa;
list p=16f877a ; list directive to define processor
#include <p16f877a.inc> ; INCLUIMOS LAS DEFINICIONES DEL PIC TILIZADO
#define BANCO_1 bsf STATUS,RP0 ;DEFINICION DE BANCO 1
#define BANCO_0 bcf STATUS,RP0 ;DEFINICION DE BANCO 0
ERRORLEVEL -306, -302 ;QUITAMOS LOS ERRORES DE BANCO EN MPLAB
RADIX HEX ; sistema de numeracion hexadecimal
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_ON& _DEBUG_OFF & _CPD_OFF
Contador equ 0x21 ; Registro utilizado para demora.
; ***********************************
; * DEFINICION DE ETIQUETAS *
; ***********************************
org 0
goto inicio
; **************************************************
; * RUTINA DE INICIO, AUQI CONFIGURAMOS EL PIC *
; **************************************************
inicio
clrf PORTA
clrf PORTB
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00001110'
movwf ADCON1 ;Puerta A E/S digitales
clrf TRISB ;Puerta B se configura como
BANCO_1
clrf PORTC
movlw b'10111111'
movwf TRISC
movlw b'00100100' ; SYNC=0 (asincrono) y BRGH = 1 (alta velocidad)
movwf TXSTA
movlw .129
movwf SPBRG ;9600 CON UN CRISTAL DE 20MHz
BANCO_0
bsf RCSTA,SPEN ;USART en On
Init_ADC
BANCO_0
movlw b'10000001'
movwf ADCON0
Loop bsf STATUS,RP0 ;Selecciona página 1
movlw b'00000001'
movwf TRISA ;Puerta A entradas
clrf ADCON1 ;Puerta A entradas analógicas
bcf STATUS,RP0 ;Selecciona página 0
bcf PIR1,ADIF ;Restaura el flag del
nop
nop
bsf ADCON0,GO_DONE ;inicializa la conversion
ADC_TERNINO
btfss PIR1,ADIF ;Fin de conversión ??
goto ADC_TERNINO ;espera a terminar la conversion
bsf STATUS,RP0 ;Selecciona banco 1
movlw b'00001110'
movwf ADCON1
BANCO_0
movf ADRESH,w
andlw b'11111111'
BANCO_0
movwf TXREG ;el resultado es retornado (8bits)
nop
nop
nop
nop
nop
nop
nop
nop
nop
allsend
BANCO_1 ; Banco 1
btfss TXSTA,TRMT ; byte transmitido ?????
goto allsend ; No pues espera
BANCO_0
call Demora_150us
goto Loop
Demora_150us
movlw d'48'
movwf Contador
decfsz Contador
goto $-1
return
END: