This is what I do with DT_Interrupts on a serial stream of 115kBps on a PIC18F25k22 @44.2368MHz.
"Buffer" is a circular buffer of 256 bytes. When BufferReady = 1, I use another pointer (ParsePtr) to parse the data.
Code:
'----[interrupts Handlers]-------------------------------------------------------
RX_IntHandler:
IF (RCSTA1.2 = 1) THEN
' A framing error occurred.
' Read RCREG to clear the error but don't use the data.
CharBuff = RCREG1
ELSE
' No framing error occurred. Get caracter.
CharBuff = RCREG1
If CharBuff <= 10 Then
Buffer(BuffPtr) = 0
BuffPtr = BuffPtr + 1
BufferReady = 1
Else
If CharBuff >= 32 Then
Buffer(BuffPtr) = CharBuff
BuffPtr = BuffPtr + 1
ENDIF
ENDIF
ENDIF
@ INT_RETURN
Bookmarks