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