English
Language : 

PIC16F628-20P Datasheet, PDF (71/170 Pages) Microchip Technology – FLASH-Based 8-Bit CMOS Microcontroller
PIC16F62X
12.1 USART Baud Rate Generator
(BRG)
The BRG supports both the Asynchronous and
Synchronous modes of the USART. It is a dedicated
8-bit baud rate generator. The SPBRG register controls
the period of a free running 8-bit timer. In Asynchro-
nous mode bit BRGH (TXSTA<2>) also controls the
baud rate. In Synchronous mode bit BRGH is ignored.
Table 12-1 shows the formula for computation of the
baud rate for different USART modes which only apply
in Master mode (internal clock).
Given the desired baud rate and Fosc, the nearest
integer value for the SPBRG register can be calculated
using the formula in Table 12-1. From this, the error in
baud rate can be determined.
Example 12-1 shows the calculation of the baud rate
error for the following conditions:
FOSC = 16 MHz
Desired Baud Rate = 9600
BRGH = 0
SYNC = 0
EXAMPLE 12-1: CALCULATING BAUD
RATE ERROR
Desired Baud rate = FOSC / (64(X + 1))
9600 = 16000000 / (64( +1 ))X
X = î25.042°
Calculated Baud Rate = 16000000 / (64(25 + 1))
= 9615
Error = (Calculated Baud Rate = Desired Baud Rate)
Desired Baud Rate
= (9615 - 9600)/ 9600
= 0.16%
It may be advantageous to use the high baud rate
(BRGH = 1) even for slower baud clocks. This is
because the FOSC/(16(X + 1)) equation can reduce the
baud rate error in some cases.
Writing a new value to the SPBRG register, causes the
BRG timer to be RESET (or cleared), this ensures the
BRG does not wait for a timer overflow before
outputting the new baud rate.
TABLE 12-1: BAUD RATE FORMULA
SYNC
BRGH = 0 (Low Speed)
0
(Asynchronous) Baud Rate = FOSC/(64(X+1))
1
(Synchronous) Baud Rate = FOSC/(4(X+1))
Legend: X = value in SPBRG (0 to 255)
BRGH = 1 (High Speed)
Baud Rate= FOSC/(16(X+1))
NA
TABLE 12-2: REGISTERS ASSOCIATED WITH BAUD RATE GENERATOR
Address Name
Bit 7 Bit 6 Bit 5 Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR
Value on all
other
RESETS
98h
18h
99h
Legend:
TXSTA CSRC TX9 TXEN SYNC —
RCSTA SPEN RX9 SREN CREN ADEN
SPBRG Baud Rate Generator Register
x = unknown, - = unimplemented read as '0'.
Shaded cells are not used by the BRG.
BRGH
FERR
TRMT
OERR
TX9D
RX9D
0000 -010
0000 -00x
0000 0000
0000 -010
0000 -00x
0000 0000
 2003 Microchip Technology Inc.
Preliminary
DS40300C-page 69