1998 Aug 26
36
Philips Semiconductors
Product specification
Low voltage 8-bit microcontroller with
6-kbyte embedded RAM
SZF2002
17.3
Baud rates
The baud rate in Mode 0 is fixed and may be calculated as:
f
The baud rate in Mode 2 depends on the value of the
SMOD bit in Special Function Register PCON and may be
calculated as:
If SMOD = 0 (value on reset), the baud rate is
1
32
f
clk
If SMOD = 1, the baud rate is
1
16
f
clk
.
17.3.1
U
SING
T
IMER
1
TO GENERATE BAUD RATES
When Timer 1 is used as the Baud Rate Generator, the
baud rates in Modes 1 and 3 are determined by the
Timer 1 overflow rate and the value of the SMOD bit as
follows:
The Timer 1 interrupt should be disabled in this
application. The timer itself can be configured for either
‘timer’ or ‘counter’ operation in any of its 3 running modes.
In typical applications, it is configured for ‘timer’ operation,
in the Auto-reload mode (high nibble of TMOD = 0010B).
In this case the baud rate is given by:
By configuring Timer 1 to run as a 16-bit timer (high nibble
of TMOD = 0001B), and using the Timer 1 interrupt to do
a 16-bit software reload, very low baud rates can be
achieved.
17.3.2
U
SING
T
IMER
2
TO GENERATE BAUD RATES
Timer 2 is selected as a Baud Rate Generator by setting
the RCLK0, TCLK0, RCLK1, or TCLK1 bit in T2CON.
The Baud Rate Generator mode is similar to the
Auto-reload mode, in that a roll-over in TH2 causes
Timer 2 registers to be reloaded with the 16-bit value held
in the registers RCAP2H and RCAP2L, which are preset
by software.
Baud rate
--6
=
Baud rate
SMOD
32
2
f
clk
×
=
Baud rate
SMOD
32
2
Timer 1 overflow rate
×
=
Baud rate
SMOD
32
2
f
6
256
TH1
–
(
)
×
{
}
----------------------------------------------------
×
=
Baud rates in Modes 1 and 3 are determined by Timer 2's
overflow rate as specified below:
Timer 2 can be configured for either ‘timer’ or ‘counter’
operation. In the most typical applications, it is configured
for ‘timer’ operation (C/T2 = 0). ‘Timer’ operation is slightly
different for Timer 2 when it is being used as a Baud Rate
Generator. Normally, as a timer it would increment every
machine cycle at a frequency of
1
6
f
clk
. However, as a Baud
Rate Generator it increments every state time at a
frequency of f
clk
. In this case, the baud rate in Modes 1 and
3 is determined as shown by the following equation:
Where (RCAP2H; RCAP2L) is the content of registers
RCAP2H and RCAP2L taken as a 16-bit unsigned integer.
Note that the maximum baud rate depends on clock
frequency and is determined by the following equation:
The Baud Rate Generator mode for Timer 2 is shown in
Fig.16. This figure is only valid if RCLK0 = 1 or TCLK0 = 1
or RCLK1 = 1 or TCLK1 = 1. At roll-over TH2 does not set
the TF2 bit in T2CON and therefore, will not generate an
interrupt. Consequently, the Timer 2 interrupt does not
need to be disabled when in the Baud Rate Generator
mode. If EXEN2 is set, a HIGH-to-LOW transition on T2EX
will set the EXF2 bit, also in T2CON, but will not cause a
reload from (RCAP2H; RCAP2L) to (TH2 and TL2).
Therefore, in this mode T2EX may be used as an
additional external interrupt.
When Timer 2 is operating as a timer (TR2 = 1), in the
Baud Rate Generator mode, registers TH2 and TL2 should
not be accessed (read or write). Under these conditions
the timer increments every state time and therefore the
results of a read or write may not be accurate.
The registers RCAP2H and RCAP2L however, may be
read but not written to. A write might overlap a reload and
cause write and/or reload errors. If a write operation is
required, Timer 2 or RCAP2H/RCAP2L should first be
turned off by clearing the TR2 bit.
Baud rate
Timer 2 16
=
Baud rate
f
RCAP2H; RCAP2L
16
65536
(
)
–
{
}
×
-----------------------------------------------------------------------------------------------------
=
Maximum baud rate
f
16
6
×
---------------
=