Przeczytaj 2 znak z UART

B

bluelake

Guest
Cześć,

Pracuję z pic16f877.Nie mogę się dowiedzieć, jak czytać 2 znaków (2 2 bajt bajt) z seryjnym bez opóźnień między nimi.
Używam seryjny przerwać tutaj fragment kodu:

Kod:void przerwania ISR (if (RCIF) byte1 = RCREG;)główny

(while (1) (Cmd = byte1;

CHK = byte2;

))
 
Cztery problemy:
1.Trzeba wyraźnie przerwania flag przed wyjazdem przerwanie rutyny
2.Nie ma sposobu opowiadania, który jest pierwszy bajt i co drugi - o ile nie zawsze służyć będą tylko dwa.
3.Nigdy przypisać wartość "Byte2"
4.You missed tag kod z początku aukcji

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Uśmiechać się" border="0" />Brian.

 
Przerwać flaga jest rozliczany przez sprzętu po RCREG odczytu.

Może ja nie wiem, czy przerwać trigged po pierwszym znaku są otrzymane lub po drugim znakiem jest odbierane.2 znaki wysyłane są za mistrza i nie ma przerwy między nimi.

I havn't zapisać dane w CHK bo nie wiem jak zapisać 2 danych Separatly.

 
Nie można zrobić tak mówisz.Jest łatwy do otrzymania dwóch bajtów, ale chyba masz jakiś sposób, aby odróżnić je od siebie, to można powiedzieć, która jest i która jest CMD CHK.

Chciałbym spróbować tego:
Kod:char ReceivedByte;

char ByteIsReceived;void przerwania ISR

(

if (RCIF) ReceivedByte = RCREG;

ByteIsReceived = 1;

)void main ()

(

char ByteCount = 0;if (ByteIsReceived)

(

if (ByteCount == 0) cmd = ReceivedByte;

if (ByteCount == 1) CHK = ReceivedByte;

)/ / Twój kod innego tutaj

)

 

Welcome to EDABoard.com

Sponsor

Back
Top