RCIF
As I understand it, this flag should get set when there is a received byte in the buffer.
RCIF
As I understand it, this flag should get set when there is a received byte in the buffer.
-Bert
The glass is not half full or half empty, Its twice as big as needed for the job!
http://foamcasualty.com/ - Warbird R/C scratch building with foam!
Hserout [DEC5 period,DEC5 period2,"T",13,10]
'IF PORTA.5 = 0 THEN return ' If PORTA, pin 5 is low (0), return to menu
HSERIN 100, skip,[MI]
“This where I would like to check for USART receive”
If MI = "Z" then return
Skip:
period2 = 0
GoTo sloop
If you want to get out of the subroutine when you receive a byte (I used "Z" but you can use any byte) the above three lines of code will solve the problem. I have used a timeout of 100 millisecs but you can short it if too long for your need.
Merry Christmas to you too.
Al.
All progress began with an idea
Thanks to both of you.
I will be trying both methods as soon as I can and report back.
Thanks for your quick response's
![]()
Hi
As a follow up I have used a combination of both suggestions.
I have to say that watching PIR1.5 (RCIF suggested by cncmachineguy)for a change is my preferred method of checking for a character received in the USART buffer. This seems to cause me less problems with my CCPx capture i.e. less time delay. Unfortunately the down side is that it is read only and I have not found a way (yet!) to reset/clear the USART buffer by using the registers. So I have utilised the HSERIN, with a small timeout, command as aratti suggested. Using this then clears the USART buffer and appears to work fine.
Thanks again much appreciated......Code:if PIR1.5 = 1 then Hserin 1,jump,[MI] ' 1mS timeout then read the character and clear buffer jump: ' Character is any because it is only used as an interupt gosub gratio endif
-Bert
The glass is not half full or half empty, Its twice as big as needed for the job!
http://foamcasualty.com/ - Warbird R/C scratch building with foam!
Hi cncmachineguy
OOOps !. I have been reading that section of the datasheet over and over again but it didn't click until you highlighted it so I have removed the:-
and replaced by using a "dummi" variable to read RCREG as followsCode:if PIR1.5 = 1 then Hserin 1,jump,[MI] ' Read a character and clear buffer jump: gosub gratio endif
That seems to work ok.Code:if PIR1.5 = 1 then dummi = RCREG ' Read a character and clear buffer gosub gratio endif
Thanks again![]()
Very likely this is what you need! But I thought you should have control on the direction of your program flow. In this way any byte received will direct you to the gosub indicated and this could also happen out of your control. I personally would have identified the byte received and if the byte was the correct jump_byte then the program could proceed with the jump, any other bytes would be ignored.
But as I just said above, if this is what you need and you are happy with it, why changing it.
Al.
All progress began with an idea
Bookmarks