|
|
NEXT
4. Standard Serial
Interface
The serial
port is full duplex, meaning it can transmit and receive simultaneously.
It is also receive-buffered, meaning it can commence reception of a
second byte before a previously received byte has been read from the
register. (However, if the first byte still hasn’t been read by
the time reception of the second byte is complete, one of the bytes
will be lost.) The serial port receive and transmit registers are both
accessed at Special Function Register SBUF. Writing to SBUF loads the
transmit register, and reading SBUF accesses a physically separate receive
register.

Figure 4.1. Standard serial communication
The serial port can operate in
4 modes:
Mode 0:
Serial data enters and exits through RxD. TxD outputs the shift clock.
8 bits are transmitted/received (LSB first). The baud rate is fixed
at 1/12 the oscillator frequency.
Mode 1:
10 bits are transmitted (through TxD) or received (through RxD): a start
bit (0), 8 data bits (LSB first), and a stop bit (1). On receive, the
stop bit goes into RB8 in Special Function Register SCON. The baud rate
is variable.
Mode 2:
11 bits are transmitted (through TxD) or received (through RxD): start
bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a
stop bit (1). On Transmit, the 9th data bit (TB8 in SCON) can be assigned
the value of 0 or 1. Or, for example, the parity bit (P, in the PSW)
could be moved into TB8. On receive, the 9th data bit goes into RB8
in Special Function Register SCON, while the stop bit is ignored. The
baud rate is programmable to either 1/32 or 1/64 the oscillator frequency.
Mode 3:
11 bits are transmitted (through TxD) or received (through RxD): a start
bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a
stop bit (1). In fact,
Mode 3 is the same as Mode 2 in all respects except baud rate. The baud
rate in Mode 3 is variable.
In all four modes, transmission is initiated by any instruction that
uses SBUF as a destination register. Reception is initiated in Mode
0 by the condition RI = 0 and REN = 1. Reception is initiated in the
other modes by the incoming start bit if REN = 1.
Serial Port Control Register
The serial port control and status register is the Special Function
Register SCON, shown in Figure 11. This register contains not only the
mode selection bits, but also the 9th data bit for transmit and receive
(TB8 and RB8), and the serial port interrupt bits (TI and RI).
Baud Rates
The baud rate in Mode 0 is fixed: Mode 0 Baud Rate = Oscillator Frequency
/ 12. The baud rate in Mode 2 depends on the value of bit SMOD in Special
Function Register PCON. If SMOD = 0 (which is the value on reset), the
baud rate is 1/64 the oscillator frequency. If SMOD = 1, the baud rate
is 1/32 the oscillator frequency. Baud Rate mode 2:
,
In the 80C51, the baud rates in Modes 1 and 3 are determined by the
Timer 1 overflow rate.
Using Timer 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
SMOD as follows: Baud Rate Mode 1,3
The Timer 1 interrupt should
be disabled in this application. The Timer itself can be configured
for either “timer” or “counter” operation, and
in any of its 3 running modes. In the most typical applications, it
is configured for “timer” operation, in the auto-reload
mode (high nibble of TMOD = 0010B). In that case the baud rate is given
by the formula: Baud Rate Mode 1,3
One can achieve very low baud
rates with Timer 1 by leaving the Timer 1 interrupt enabled, and configuring
the Timer 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. Figure 12
lists various commonly used baud rates and how they can be obtained
from Timer 1.
NEXT
|
|
Lesson 1:
T
o o l
1.1. Programmer
1.2. Edsim
51
1.3. MIDE-51
1.4. ATMEL
ISP
Lesson 2:
Input Output
2.1.LED
2.2.Swicht
2.3.7
Segmen
2.4.LCD
Character
2.5.ADC
2.6.DAC
2.7.Motor
Stepper
2.8.Keypad
Lesson 3:
Timer Counter
3.1.Basic
3.2.Mode
0
3.3.Mode
1
3.4.Mode
2
3.5.Mode
3
Lesson 4:
Serial Comm.
4.1.Basic
4.2.LED
4.3.Rotate
LED
4.2 ADC
4.3.LCD
Lesson 5:
Interuption
5.1.Basic
5.2.Timer
5.2.External
|