Прочети 2 характер от UART

B

bluelake

Guest
Здрасти,

Аз работя с PIC16F877.

I can't figure out how to read 2 characters (2 byte 2 byte) from serial with no delay between them. Аз съм с сериен прекъсват тук част от код:

Код:нищожен прекъсват ISR (IF (RCIF) byte1 = RCREG;)главен

(докато (1) (CMD = byte1;

CHK = byte2;

))
 
Четири проблеми:
1.Трябва да изчистите прекъсват флаг, преди да тръгнете на прекъсват рутинни
2.Няма начин за разкажете на който е първият байт и които вторият - освен ако някога ще има само две.
3.Вие никога не се придаде стойност на "Byte2"
4.Пропусна кода маркер на разстояние от началото на вашата обява

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Усмивка" border="0" />Брайън.

 
В прекъсват флаг се изчиства от хардуера след RCREG се чете.

Може би аз не знам дали прекъсва trigged след първия знак се получи или след втория знак е получена.В 2 знака се изпраща от капитана на кораба и няма пауза между тях.

Аз havn't запазвате данни в CHK, защото аз не знам как да се спаси 2 данни отделно.

 
Вие не можете да го направим по начина, по който се казва.Лесно е да се получат два байта, но ако имате някакъв начин да им кажа, освен, че е невъзможно да се каже, която е ПМС и която е CHK.

Аз ще се опита това:
Код:Чар ReceivedByte;

Чар ByteIsReceived;нищожен прекъсват ISR

(

IF (RCIF) ReceivedByte = RCREG;

ByteIsReceived = 1;

)нищожен основни ()

(

Чар ByteCount = 0;IF (ByteIsReceived)

(

IF (ByteCount == 0) CMD = ReceivedByte;

IF (ByteCount == 1) CHK = ReceivedByte;

)/ / Другите код тук

)

 

Welcome to EDABoard.com

Sponsor

Back
Top