Specifications

C8051F330/1
Rev. 1.1 145
16. UART0
UART0 is an asynchronous, full duplex serial port offering modes 1 and 3 of the standard 8051 UART. Enhanced
baud rate support allows a wide range of clock sources to generate standard baud rates (details in
Section
“16.1. Enhanced Baud Rate Generation” on page 146). Received data buffering allows UART0 to start reception
of a second incoming data byte before software has finished reading the previous data byte.
UART0 has two associated SFRs: Serial Control Register 0 (SCON0) and Serial Data Buffer 0 (SBUF0). The single
SBUF0 location provides access to both transmit and receive registers. Writes to SBUF0 always access the Trans
-
mit register. Reads of SBUF0 always access the buffered Receive register; it is not possible to read data from
the Transmit register.
With UART0 interrupts enabled, an interrupt is generated each time a transmit is completed (TI0 is set in SCON0), or
a data byte has been received (RI0 is set in SCON0). The UART0 interrupt flags are not cleared by hardware when
the CPU vectors to the interrupt service routine. They must be cleared manually by software, allowing software to
determine the cause of the UART0 interrupt (transmit complete or receive complete).
Figure 16.1. UART0 Block Diagram
UART Baud
Rate Generator
RI
SCON
RI
TI
RB8
TB8
REN
MCE
SMODE
Tx Control
Tx Clock
Send
SBUF
(TX Shift)
Start
Data
Write to
SBUF
Crossbar
TX
Shift
Zero Detector
Tx IRQ
SET
QD
CLR
Stop Bit
TB8
SFR Bus
Serial
Port
Interrupt
TI
Port I/O
Rx Control
Start
Rx Clock
Load
SBUF
Shift 0x1FF RB8
Rx IRQ
Input Shift Register
(9 bits)
Load SBUF
Read
SBUF
SFR Bus
Crossbar
RX
SBUF
(RX Latch)