
1997 Microchip Technology Inc.
DS30390E-page 101
PIC16C7X
12.1
USART Baud Rate Generator (BRG)
The BRG supports both the Asynchronous and Syn-
chronous 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 asynchronous
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 inte-
ger 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.
error for the following conditions:
FOSC = 16 MHz
Desired Baud Rate = 9600
BRGH = 0
SYNC = 0
Applicable Devices
72 73 73A 74 74A 76 77
EXAMPLE 12-1: CALCULATING BAUD
RATE ERROR
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 overow before output-
ting the new baud rate.
Note:
For the PIC16C73/73A/74/74A, the asyn-
chronous high speed mode (BRGH = 1)
may experience a high rate of receive
errors. It is recommended that BRGH = 0.
If you desire a higher baud rate than
BRGH = 0 can support, refer to the device
errata for additional information, or use the
PIC16C76/77.
Desired Baud rate = Fosc / (64 (X + 1))
9600
=
16000000 /(64 (X + 1))
X=
25.042 = 25
Calculated Baud Rate=16000000 / (64 (25 + 1))
=
9615
Error
=
(Calculated Baud Rate - Desired Baud Rate)
Desired Baud Rate
=
(9615 - 9600) / 9600
=
0.16%
TABLE 12-1:
BAUD RATE FORMULA
TABLE 12-2:
REGISTERS ASSOCIATED WITH BAUD RATE GENERATOR
SYNC
BRGH = 0 (Low Speed)
BRGH = 1 (High Speed)
0
1
(Asynchronous) Baud Rate = FOSC/(64(X+1))
(Synchronous) Baud Rate = FOSC/(4(X+1))
Baud Rate= FOSC/(16(X+1))
NA
X = value in SPBRG (0 to 255)
Address
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on:
POR,
BOR
Value on all
other resets
98h
TXSTA
CSRC
TX9
TXEN
SYNC
—
BRGH
TRMT
TX9D
0000 -010
18h
RCSTA
SPEN
RX9
SREN
CREN
—
FERR
OERR RX9D 0000 -00x
0000 -00x
99h
SPBRG
Baud Rate Generator Register
0000 0000
Legend: x = unknown, - = unimplemented read as '0'. Shaded cells are not used by the BRG.