Les 2 tegn fra UART

B

bluelake

Guest
Hei,

Jeg arbeider med en pic16f877.Jeg kan ikke finne ut hvordan å lese 2 tegn (2 byte 2 byte) fra føljetong uten forsinkelse mellom dem.
Jeg bruker seriell avbruddet her et stykke kode:

Code:void avbryte ISR (if (RCIF) byte1 = RCREG;)hovedsaklig

(mens 1 () (CMD = byte1;

CHK = byte2;

))
 
Fire problemer:
1.Du må tømme avbryte flagget før du forlater avbryte rutinen
2.Det er ingen måte å fortelle som er den første byte og at den andre - med mindre det blir bare noen gang være to.
3.Du har aldri tilordne en verdi til 'Byte2'
4.Du gikk glipp koden koden av begynnelsen av oppføringen

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

 
Avbruddet flagget er ryddet av maskinvaren etter RCREG leses.

Kanskje jeg vet ikke om avbryter trigged etter første tegnet er mottatt eller etter andre tegn er mottatt.De 2 tegn sende av master og det er ingen pause mellom dem.

Jeg havn't lagre data i CHK fordi jeg ikke vet hvordan du lagrer 2 data separatly.

 
Du kan ikke gjøre det på den måten du sier.Det er lett å få to bytes, men hvis du ikke har noen måte å skille dem, er det umulig å si noe som er CMD og som er CHK.

Jeg vil prøve denne:
Code:char ReceivedByte;

char ByteIsReceived;void avbryte ISR

(

if (RCIF) ReceivedByte = RCREG;

ByteIsReceived = 1;

)void main ()

(

char ByteCount = 0;if (ByteIsReceived)

(

if (ByteCount == 0) CMD = ReceivedByte;

if (ByteCount == 1) CHK = ReceivedByte;

)/ / Den andre koden her

)

 

Welcome to EDABoard.com

Sponsor

Back
Top