Skaityti 2 simbolį iš UART

B

bluelake

Guest
Labas,

Aš dirbu su pic16f877.Aš negaliu suprasti, kaip skaityti 2 ženklai (2 baitų 2 baitų) iš eilės ir tarp jų labui.
I'm using serijos nutraukti Čia kodo gabalas:

Kodastuščia nutraukti ISR (if (RCIF) byte1 = RCREG;)svarbiausias

(while (1) (Cmd = byte1;

Chk = byte2;

))
 
Keturi problemų:
1.Turite aiškiai nutraukti vėliava prieš išvykdami nutraukia įprastos
2.Nėra pasakojo, kuri yra pirmasis baitas ir kuri antra - jei ten bus tik kada nors yra dvipusis.
3.Jūs niekada priskirti reikšmę "Byte2"
4.Jūs praleidote kodas žymelę išjungti savo aukcioną pradžią

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

 
Pertraukti vėliava yra patikrintos ir patvirtintos aparatūros po RCREG yra skaityti.

Gal aš nežinau, ar nutraukti trigged po pirmojo pobūdis yra gautas arba po antrojo požymio gauna.2 simbolių siųsti kapitonas ir nėra tarp jų sustabdyti.

Aš havn't Prisiminti bet CHK duomenis, nes aš nežinau, kaip išsaugoti 2 duomenų separatly.

 
Jūs negalite to padaryti, kaip tu kalbi.Tai lengva gauti dviejų baitų, o jei turite tam tikru būdu ir pasakykite jiems, be to, neįmanoma pasakyti, kuri yra CMD ir kuri yra CHK.

Norėčiau išbandyti tai:
Kodaschar ReceivedByte;

char ByteIsReceived;tuščia nutraukti ISR

(

if (RCIF) ReceivedByte = RCREG;

ByteIsReceived = 1;

)void main ()

(

char ByteCount = 0;if (ByteIsReceived)

(

if (ByteCount == 0) cmd = ReceivedByte;

if (ByteCount == 1) chk = ReceivedByte;

)/ / Jūsų kitą kodą čia

)

 

Welcome to EDABoard.com

Sponsor

Back
Top