yep i agree. BTW i have few minutes to spend on it and here's an update tested @19200 bauds @ 4MHZ
Code:
' Program to echo incoming serial data string
' Baudrate : 19200 Bauds
' Method : Polling USART interrupts flags
' Pic Definition
' ==============
' Using PIC 18F2320 @ 4MHZ and bootloader
'
DEFINE LOADER_USED 1
DEFINE OSC 4
' Hardware configuration
' ======================
'
'
TRISC = %10000000 ' PORTC.7 is the RX input
' PORTC.6 is the TX output
' Serial communication definition
' ===============================
' Using internal USART and MAX232 to interface to PC
'
RCSTA=$90 ' enable serial port,
' enable continuous receive
'
TXSTA=$24 ' enable transmit,
' BRGH=1
'
SPBRG=12 ' set baudrate to 19200 Bauds
' Alias definition
' ================
'
'
RCIF VAR PIR1.5 ' Receive interrupt flag (1=full , 0=empty)
TXIF VAR PIR1.4 ' Transmit interrupt flag (1=empty, 0=full)
CREN var RCSTA.4 ' Receiver enable bit
OERR var RCSTA.1 ' Overrun error
' Variable definition
' ===================
'
'
SerialString var byte[40]
Counter var byte
Success var bit
i var byte
temp var byte
header var bit
' Hardware initialisation
' =======================
'
'
pause 100 ' safe start-up delay
clear
Main:
IF oerr then
cren=0
cren=1
endif
if RCIF then ' incomming data?
I=RCREG ' take it
if header then
if i ="L" then discard ' is it the end?
serialstring[counter]=i ' Store into the array
counter=counter+1 '
endif
if i ="!" then header=1 ' is it the header character?
Discard:
while RCIF
temp=RCREG
wend
if i="L" then
success=1 ' Yeah i got a valid string
header=0
endif
endif
if success then
cren=0 ' Disable Receiver
hserout ["String received : ",str serialstring\counter,13,10,_
"Character count : ", dec counter,13,10]
cren=1 ' Enable receiver
clear
endif
goto main
Bookmarks