Lees 2 personage uit UART

B

bluelake

Guest
Hoi,

Ik ben bezig met een PIC16F877.Ik kan niet bedenken hoe 2 karakters lezen (2 byte 2 byte) uit seriële zonder vertraging tussen hen.
Ik gebruik seriële onderbreken hier een stuk code:

Code:void interrupt ISR (if (RCIF) byte1 = RCREG;)belangrijkste

(while (1) (CMD = byte1;

CHK = byte2;

))
 
Vier problemen
1.Je moet duidelijk de interrupt vlag voordat u vertrekt de interrupt routine
2.Er is geen manier van vertellen die de eerste byte en die de tweede - tenzij er alleen ooit zal worden twee.
3.Je hebt nooit een waarde aan toewijzen 'Byte2'
4.Je miste de code-tag uit het begin van uw vermelding

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

 
De interrupt vlag wordt gewist door de hardware na RCREG wordt gelezen.

Misschien ben ik weet niet of onderbreken trigged na eerste teken wordt ontvangen of na de tweede karakter is ontvangen.De 2 tekens zijn te sturen door de kapitein en er is geen pauze tussen hen.

Ik havn't slaan alle gegevens in CHK omdat ik niet weet hoe tot 2 apart gegevens op te slaan.

 
Je kan het niet de manier waarop je zegt.Het is gemakkelijk om twee bytes ontvangen, maar tenzij je een manier om ze te vertellen elkaar, is het onmogelijk te zeggen welke is CMD en dat is CHK.

Ik zou dit proberen:
Code: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;

)/ / Uw andere code hier

)

 

Welcome to EDABoard.com

Sponsor

Back
Top