Čitati 2 lika iz uart

B

bluelake

Guest
Bok,

Ja radim sa pic16f877.Ne mogu shvatiti kako za čitanje 2 znaka (2 byte 2 bajta) od serijski bez stanke između njih.
Im 'koristeći serijski prekinuti ovdje dio koda:

Šifra:praznina prekid ISR (if (RCIF) byte1 = RCREG;)glavni

(while (1) (Cmd = byte1;

= CHK byte2;

))
 
Četiri problema:
1.Te potreba za jasnim prekinuti zastavu prije nego što napustite prekinuti rutinu
2.Ne postoji način govori koji je prvi bajt i što drugo - osim ako postoji samo da će ikada biti dva.
3.Vi nikada ne dodijeliti vrijednost na 'Byte2'
4.Te propušten kod oznaku od početka Vašeg unosa

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

 
Prekinuti Zastava je izbrisan od strane hardvera nakon što je pročitao RCREG.

Možda ja ne znam da li prekinuti trigged nakon prvog znaka ili nakon što je dobio drugi lik je primio.2 znaka su poslati majstor i nema stanka između njih.

Ja havn't spremiti sve podatke u CHK, jer ja ne znam kako da osim 2 podacima separatly.

 
Ne možete to učiniti način na koji govore.Lako je primiti dva bajta, ali ako imate neki način da ih raspoznati, nemoguće je reći što je CMD i što je CHK.

Ja bih ovo probati:
Šifra:char ReceivedByte;

char ByteIsReceived;void prekid ISR

(

if (RCIF) ReceivedByte = RCREG;

ByteIsReceived = 1;

)void main ()

(

char ByteCount = 0;if (ByteIsReceived)

(

if (ByteCount == 0) cmd = ReceivedByte;

if (ByteCount == 1) CHK = ReceivedByte;

)/ / Ostale kod ovdje

)

 

Welcome to EDABoard.com

Sponsor

Back
Top