Cómo leer mas 2 bytes seguidos en la comunicación serial del pic

Soy nuevo,
hola amigos ! tengo una duda : Entiendo de que el pic solo puede leer 8 bits a la vez ósea que solo 1byte , mediante la comunicación serial; a hora mi duda es: Como puedo hacer para que el pic lea mas de 2 bytes seguidos, he hecho un programa en app inventor que envía 8 bytes seguidos por medio de bluetooth y recibo los datos mediante un modulo bluetooth HC-06, la salida de dicho modulo es serial la cual la he conectado a los pines rx y tx del pic y al parecer todo funciona de maravilla únicamente con 1byte, pero cuando envío mas de 2 bytes el pic únicamente lee 1byte y pues es necesario que lea los 8 bytes seguidos para implementarlo a un proyecto que estoy haciendo. El programa del Pic que he realizado esta elaborado en mikrobasic pro y es el siguiente:



program UART
dim DATO as byte
dim cont as byte
main:
ANSELC = 0 \' configuración del puerto C como salidas digitales
ANSELB = 0
TRISB = 0
PORTB = 0

UART1_Init(9600) \' inicializar modulo UART a una velocidad de 9600

Delay_ms(100) \' espera para la estabilización del modulo



while (TRUE)

if (UART1_data_Ready() <> 0) then \' si el byte de Start es recibido
DATO = UART1_Read() \' entonces que lea los datos recibidos y que los aguarde en la variable DATO
portb = DATO \' que muestre los DATOS recibidos en el PUERTOB
delay_ms(500)
end if

wend
end. ...
 
"Entiendo de que el pic solo puede leer 8 bits a la vez ósea que solo 1byte"

en los 16F :)
lee y se carga al registro RCREG, cuanod se completen los 8bits(si es que desprecias rxd9) que llegan al USART por el RX, entonces se activa un flag que indico que llego algo a RCREG.

eso se pude hacer por interrupcion o preguntando por el flag (poleo)

si el pic lee 1 byte OK, a la vez.. simplemente has la misma subrutina para leer otro...

el pic recive un BYTE y lo guarda en RCREG,si todo esta configurado como debe ser... chanca ese registro si es que llega un nuevo dato... y asi y asi..

bueno, en tu codigo C vuelve a preguntar con "UART1_Read()" guarda en "DATO2", que se yo..
 
Entierra muy hondo la función delay y no la uses mas. Es una plaga.

En serio, si haces retardos largos el sistema está muerto y todo lo que pase se pierde. Úsala solo para retardos de unos pocos (muy pocos) ms.
 
Última edición:
Atrás
Arriba