Corey
- 5th October 2003, 18:38
Help!
I'm trying to implement the PicBasic Pro example "USART.bas" but at 9600 baud (unstead of 2400) .
I've changed the SPBRG value to 129 as suggested in the PIC16F877 datasheet. I'm using a 20MHz crystal.
For the most part I'm using HSERIN and HSEROUT. However, I want to continuously toggle an I/O pin in the background while I'm waiting for a character to appear in the receive register.
Here is the "USART.bas" example:
' Read and write hardware USART
B1 var byte
' Initialize USART
TRISC = %10111111 ' Set TX (PortC.6) to out, rest in
SPBRG = 25 ' Set baud rate to 2400
RCSTA = %10010000 ' Enable serial port and continuous receive
TXSTA = %00100000 ' Enable transmit and asynchronous mode
' Echo received characters in infinite loop
loop: Gosub charin ' Get a character from serial input, if any
If B1 = 0 Then loop ' No character yet
Gosub charout ' Send character to serial output
Goto loop ' Do it forever
' Subroutine to get a character from USART receiver
charin: B1 = 0 ' Preset to no character received
If PIR1.5 = 1 Then ' If receive flag then...
B1 = RCREG ' ...get received character to B1
Endif
ciret: Return ' Go back to caller
' Subroutine to send a character to USART transmitter
charout: If PIR1.4 = 0 Then charout ' Wait for transmit register empty
TXREG = B1 ' Send character to transmit register
Return ' Go back to caller
Could somebody get back to me on this?
My last thread has gone unanswered and I'm wondering if I'm somehow posting this incorrectly.
I'm trying to implement the PicBasic Pro example "USART.bas" but at 9600 baud (unstead of 2400) .
I've changed the SPBRG value to 129 as suggested in the PIC16F877 datasheet. I'm using a 20MHz crystal.
For the most part I'm using HSERIN and HSEROUT. However, I want to continuously toggle an I/O pin in the background while I'm waiting for a character to appear in the receive register.
Here is the "USART.bas" example:
' Read and write hardware USART
B1 var byte
' Initialize USART
TRISC = %10111111 ' Set TX (PortC.6) to out, rest in
SPBRG = 25 ' Set baud rate to 2400
RCSTA = %10010000 ' Enable serial port and continuous receive
TXSTA = %00100000 ' Enable transmit and asynchronous mode
' Echo received characters in infinite loop
loop: Gosub charin ' Get a character from serial input, if any
If B1 = 0 Then loop ' No character yet
Gosub charout ' Send character to serial output
Goto loop ' Do it forever
' Subroutine to get a character from USART receiver
charin: B1 = 0 ' Preset to no character received
If PIR1.5 = 1 Then ' If receive flag then...
B1 = RCREG ' ...get received character to B1
Endif
ciret: Return ' Go back to caller
' Subroutine to send a character to USART transmitter
charout: If PIR1.4 = 0 Then charout ' Wait for transmit register empty
TXREG = B1 ' Send character to transmit register
Return ' Go back to caller
Could somebody get back to me on this?
My last thread has gone unanswered and I'm wondering if I'm somehow posting this incorrectly.