Leggi 2 carattere da UART

B

BlueLake

Guest
Salve,

Sto lavorando con un PIC16F877.Non riesco a capire come leggere 2 caratteri (2 byte 2 byte) di serie con ritardi tra loro.
Sto utilizzando seriale interrompere qui un pezzo di codice:

Codice:void interrupt ISR (if (RCIF) byte1 = RCREG;)principale

(while (1) (CMD = byte1;

CHK = Byte2;

))
 
Quattro problemi:
1.Avete bisogno di cancellare il flag di interrupt prima di lasciare la routine di interrupt
2.Non c'è modo di dire che è il primo byte, e che la seconda - a meno che non ci sarà sempre solo due.
3.Non hai mai assegnare un valore a 'Byte2'
4.Ti sei perso il tag code fuori l'inizio del tuo annuncio

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorriso" border="0" />Brian.

 
L'interrupt flag viene rimosso dal hardware dopo RCREG viene letto.

Forse non so se interrompere trigged dopo il primo carattere è ricevuto o dopo il secondo carattere è ricevuto.Il 2 caratteri vengono inviati dal comandante e non c'è pausa tra di loro.

I Havn't salvare i dati in CHK perché non so come salvare 2 separatly dati.

 
Non si può fare è il modo in cui si sta dicendo.E 'facile a ricevere due byte, ma se non si ha un modo per dire loro a parte, è impossibile dire quale sia CMD e che è CHK.

Vorrei provare questo:
Codice:char ReceivedByte;

char ByteIsReceived;void interrupt ISR

(

if (RCIF) ReceivedByte = RCREG;

ByteIsReceived = 1;

)void main ()

(

char byteCount = 0;if (ByteIsReceived)

(

if (byteCount == 0) CMD = ReceivedByte;

if (byteCount == 1) CHK = ReceivedByte;

)/ / Il codice di altri qui

)

 

Welcome to EDABoard.com

Sponsor

Back
Top