•Universal Serial Bus (USB) Function Controller with eight flexible endpoint pipes, integrated transceiver, and
1k
FIFO RAM
•Supply Voltage Regulator (5V-to-3V)
•True 10-bit 200 ksps 17-channel single-ended/differential ADC with analog multiplexer
•On-chip Voltage Reference and Temperature Sensor
•On-chip Voltage Comparators (2)
•Precision programmable 12 MHz internal oscillator and 4x clock multiplier
•16k bytes of on-chip FLASH memory
•2304 total bytes of on-chip RAM (256 + 1k + 1k USB FIFO)
•SMBus/I2C, Enhanced UART, and Enhanced SPI serial interfaces implemented in hardware
•Four general-purpose 16-bit timers
•Programmable Counter/Timer Array (PCA) with five capture/compare modules and Watchdog Timer function
•On-chip Power-On Reset, VDD Monitor, and Missing Clock Detector
•25/21 Port I/O (5V tolerant)
Tabl e 1.1 for specific product feature selection.
With on-chip Power-On Reset, VDD monitor, Voltage Regulator, Watchdog Timer, and clock oscillator,
C8051F320/1 devices are truly stand-alone System-on-a-Chip solutions. The FLASH memory can be reprogrammed
in-circuit, providing non-volatile data storage, and also allowing field upgrades of the 8051 firmware. User software
has complete control of all peripherals, and may individually shut down any or all peripherals for power savings.
The on-chip Silicon Labs 2-Wire (C2) Development Interface allows non-intrusive (uses no on-chip resources), full
speed, in-circuit debugging using the production MCU installed in the final application. This debug logic supports
inspection and modification of memory and registers, setting breakpoints, single stepping, run and halt commands.
All analog and digital peripherals are fully functional while debugging using C2. The two C2 interface pins can be
shared with user functions, allowing in-system debugging without occupying package pins.
Each device is specified for 2.7 V-t o- 3. 6 V operation over the industrial temperature range (-40°C to +85°C). (Note
that 3.0
to 5
V-t o- 3. 6 V is required for USB communication.) The Port I/O and /RST pins are tolerant of input signals up
V. C8051F320/1 are available in a 32-pin LQFP or a 28-pin MLP package.
The C8051F320/1 family utilizes Silicon Labs' proprietary CIP-51 microcontroller core. The CIP-51 is fully compatible with the MCS-51™ instruction set; standard 803x/805x assemblers and compilers can be used to develop software. The CIP-51 core offers all the peripherals included with a standard 8052, including four 16-bit counter/timers,
a full-duplex UART with extended baud rate configuration, an enhanced SPI port, 2304
128
byte Special Function Register (SFR) address space, and 25/21 I/O pins.
1.1.2.Improved Throughput
The CIP-51 employs a pipelined architecture that greatly increases its instruction throughput over the standard 8051
architecture. In a standard 8051, all instructions except for MUL and DIV take 12 or 24 system clock cycles to exe
cute with a maximum system clock of 12-to-24 MHz. By contrast, the CIP-51 core executes 70% of its instructions in
one or two system clock cycles, with only four instructions taking more than four system clock cycles.
The CIP-51 has a total of 109 instructions. The table below shows the total number of instructions that require each
execution time.
Clocks to Execute122/333/444/558
bytes of on-chip RAM,
-
Number of Instructions265051473121
With the CIP-51's maximum system clock at 25 MHz, it has a peak throughput of 25 MIPS. Figure 1.3 shows a comparison of peak throughputs for various 8-bit microcontroller cores with their maximum system clocks.
Figure 1.3. Comparison of Peak MCU Execution Speeds
25
20
15
MIPS
10
5
Silicon Labs
CIP-51
(25MHz clk)
20Rev. 1.1
Microchip
PIC17C75x
(33MHz clk)
Philips
80C51
(33MHz clk)
ADuC812
8051
(16MHz clk)
C8051F320/1
1.1.3.Additional Features
The C8051F320/1 SoC family includes several key enhancements to the CIP-51 core and peripherals to improve performance and ease of use in end applications.
The extended interrupt handler provides 16 interrupt sources into the CIP-51 (as opposed to 7 for the standard 8051),
allowing numerous analog and digital peripherals to interrupt the controller. An interrupt driven system requires less
intervention by the MCU, giving it more effective throughput. The extra interrupt sources are very useful when build
ing multi-tasking, real-time systems.
Nine reset sources are available: power-on reset circuitry (POR), an on-chip VDD monitor (forces reset when power
supply voltage drops below V
transition), a Watchdog Timer, a Missing Clock Detector, a voltage level detection from Comparator0, a forced software reset, an external reset pin, and an errant FLASH read/write protection circuit. Each reset source except for the
POR, Reset Input Pin, or FLASH error may be disabled by the user in software. The WDT may be permanently
enabled in software after a power-on reset during MCU initialization.
The internal oscillator is factory calibrated to 12 MHz ±1.5%, and the internal oscillator period may be user programmed in ~0.25% increments. A clock recovery mechanism allows the internal oscillator to be used with the 4x
Clock Multiplier as the USB clock source in Full Speed mode; the internal oscillator can also be used as the USB
clock source in Low Speed mode. External oscillators may also be used with the 4x Clock Multiplier. An external
oscillator drive circuit is also included, allowing an external crystal, ceramic resonator, capacitor, RC, or CMOS
clock source to generate the system clock. The system clock may be configured to use the internal oscillator, external
oscillator, or the Clock Multiplier output divided by 2. If desired, the system clock source may be switched on-the-fly
between oscillator sources. An external oscillator can be extremely useful in low power applications, allowing the
MCU to run from a slow (power saving) external clock source, while periodically switching to the internal oscillator
as needed.
as given in Table 10.1 on page 105), the USB controller (USB bus reset or a VBUS
RST
-
XTAL1
XTAL2
Internal
Oscillator
Clock
Multiplier
External
Oscillator
Drive
Px.x
Px.x
Figure 1.4. On-Chip Clock and Reset
VDD
Supply
Monitor
Enable
+
-
Power On
Reset
Software Reset (SW RSF)
Errant
FLASH
Operation
Controller
System
Clock
Clock Select
Comparator 0
+
-
Missing
Clock
Detector
(one-
shot)
EN
MCD
Enable
Microcontroller
Extended Interrupt
C0RSEF
CIP-51
Core
Handler
PCA
WDT
EN
WDT
Enable
System Reset
'0'
USB
(wired-OR)
Enable
Reset
Funnel
VBUS
Transition
/RST
Rev. 1.121
C8051F320/1
1.2.On-Chip Memory
The CIP-51 has a standard 8051 program and data address configuration. It includes 256 bytes of data RAM, with the
upper 128 bytes dual-mapped. Indirect addressing accesses the upper 128 bytes of general purpose RAM, and direct
addressing accesses the 128 byte SFR address space. The lower 128 bytes of RAM are accessible via direct and indi
rect addressing. The first 32 bytes are addressable as four banks of general purpose registers, and the next 16 bytes
can be byte addressable or bit addressable.
Program memory consists of 16k bytes of FLASH. This memory may be reprogrammed in-system in 512 byte sectors, and requires no special off-chip programming voltage. See Figure 1.5 for the MCU system memory map.
Figure 1.5. On-Board Memory Map
PROGRAM/DATA MEMORY
(FLASH)
0x3E00
0x3DFF
RESERVED
16K FLASH
(In-Syste m
Programmable in 512
Byte Sectors)
0xFF
0x80
0x7F
0x30
0x2F
0x20
0x1F
0x00
INTERNAL DATA ADDRESS SPACE
Upper 128 RAM
(Indirect Addressing
(Direct and Indirect
Bit Addressable
General Purpose
DATA MEMORY (RAM)
Only)
Addressing)
Registers
(Direct Addressing Only)
Special Fun c t ion
Register's
Lower 128 RAM
(Direct and Indirect
Addressing)
-
0x0000
0xFFFF
0x0800
0x07FF
0x0400
0x03FF
0x0000
EXTERNAL DATA ADDRESS SPACE
Same 2048 bytes as from
0x0000 to 0x07FF, wrapped
on 2K-byte boundaries
USB FIFOs
1024 Bytes
XRAM - 1024 Bytes
(accessable using MOVX
instruction)
22Rev. 1.1
C8051F320/1
1.3.Universal Serial Bus Controller
The Universal Serial Bus Controller (USB0) is a USB 2.0 compliant Full or Low Speed function with integrated
transceiver and endpoint FIFO RAM. A total of eight endpoint pipes are available: a bi-directional control endpoint
(Endpoint0) and three pairs of IN/OUT endpoints (Endpoints1-3 IN/OUT).
A 1k block of XRAM is used as dedicated USB FIFO space. This FIFO space is distributed among Endpoints0-3;
Endpoint1-3 FIFO slots can be configured as IN, OUT, or both IN and OUT (split mode). The maximum FIFO size is
512 bytes (Endpoint3).
USB0 can be operated as a Full or Low Speed function. On-chip 4x Clock Multiplier and clock recovery circuitry
allow both Full and Low Speed options to be implemented with the on-chip precision oscillator as the USB clock
source. An external oscillator source can also be used with the 4x Clock Multiplier to generate the USB clock. The
CPU clock source is independent of the USB clock.
The USB Transceiver is USB 2.0 compliant, and includes on-chip matching and pull-up resistors. The pull-up resistors can be enabled/disabled in software, and will appear on the D+ or D- pin according to the software-selected
speed setting (Full or Low Speed).
Figure 1.6. USB Controller Block Diagram
TransceiverSerial Interface Engine (SIE)
VDD
D+
D-
1.4.Voltage Regulator
Data
Transfer
Control
Endpoint0
IN/OUT
Endpoint1
Endpoint2
Endpoint3
INOUT
INOUT
INOUT
USB FIFOs
(1k RAM)
USB
Control,
Status, and
Interrupt
Registers
CIP-51 Core
C8051F320/1 devices include a 5 V- to -3 V voltage regulator (REG0). When enabled, the REG0 output appears on
the VDD pin and can be used to power external devices. REG0 can be enabled/disabled by software.
Rev. 1.123
C8051F320/1
1.5.On-Chip Debug Circuitry
The C8051F320/1 devices include on-chip Silicon Labs 2-Wire (C2) debug circuitry that provides non-intrusive, full
speed, in-circuit debugging of the production part installed in the end application.
Silicon Labs' debugging system supports inspection and modification of memory and registers, breakpoints, and single stepping. No additional target RAM, program memory, timers, or communications channels are required. All the
digital and analog peripherals are functional and work correctly while debugging. All the peripherals (except for the
USB, ADC, and SMBus) are stalled when the MCU is halted, during single stepping, or at a breakpoint in order to
keep them synchronized.
The C8051F310DK development kit provides all the hardware and software necessary to develop application code
and perform in-circuit debugging with the C8051F320/1 MCUs. The kit includes software with a developer's studio
and debugger, an integrated 8051 assembler, and an RS-232 to C2 serial adapter. It also has a target application board
with the associated MCU installed and prototyping area, plus the RS-232 and C2 cables, and wall-mount power sup
ply. The Development Kit requires a Windows 95/98/NT/ME/2000 computer with one available RS-232 serial port.
As shown in
Serial Adapter to the user's application board, picking up the two C2 pins and VDD and GND. The Serial Adapter
takes its power from the application board. For applications where there is not sufficient power available from the tar
get board, the provided power supply can be connected directly to the Serial Adapter.
Figure 1.7, the PC is connected via RS-232 to the Serial Adapter. A six-inch ribbon cable connects the
-
-
The Silicon Labs IDE interface is a vastly superior developing and debugging configuration, compared to standard
MCU emulators that use on-board "ICE Chips" and require the MCU in the application board to be socketed. Silicon
Labs' debug paradigm increases ease of use and preserves the performance of the precision analog peripherals.
Figure 1.7. Development/In-System Debug Diagram
Silicon Labs Integrated
Development Environment
WINDOWS 95/ 9 8/NT/ME/2000
RS-232
Serial
Adapter
C2 (x2), VDD, GND
VDD GND
TARGET PCB
C8051F320
24Rev. 1.1
C8051F320/1
1.6.Programmable Digital I/O and Crossbar
C8051F320 devices include 25 I/O pins (three byte-wide Ports and one 1-bit-wide Port); C8051F321 devices include
21 I/O pins (two byte-wide Ports, one 4-bit-wide Port, and one 1-bit-wide Port). The C8051F320/1 Ports behave like
typical 8051 Ports with a few enhancements. Each Port pin may be configured as an analog input or a digital I/O pin.
Pins selected as digital I/Os may additionally be configured for push-pull or open-drain output. The “weak pull-ups”
that are fixed on typical 8051 devices may be globally disabled, providing power savings capabilities.
The Digital Crossbar allows mapping of internal digital system resources to Port I/O pins (See Figure 1.8). On-chip
counter/timers, serial buses, HW interrupts, comparator outputs, and other digital signals in the controller can be configured to appear on the Port I/O pins specified in the Crossbar Control registers. This allows the user to select the
exact mix of general purpose Port I/O and digital resources needed for the particular application.
Highest
Priority
Lowest
Priority
Figure 1.8. Digital Crossbar Diagram
XBR0, XBR1,
PnSKIP Registers
PnMDOUT,
PnMDIN Registers
Priority
Decoder
(P0.0-P0.7)
(P1.0-P1.7)
(P2.0-P2.7)
(P3.0)
2
P0
4
2
2
2
6
2
8
8
8
8
Digital
Crossbar
8
I/O
Cells
P1
8
I/O
Cells
P2
8
I/O
Cells
P3
1
I/O
Cells
Note: P2.4-P2.7 only available
on the C8051F320
P0.0
P0.7
P1.0
P1.7
P2.0
P2.7
P3.0
UART
SPI
SMBus
CP0
Outputs
CP1
Outputs
SYSCLK
(Internal Digital Signals)
PCA
T0, T1
P0
P1
P2
(Port Latches)
P3
1.7.Serial Ports
The C8051F320/1 Family includes an SMBus/I2C interface, a full-duplex UART with enhanced baud rate configuration, and an Enhanced SPI interface. Each of the serial buses is fully implemented in hardware and makes extensive
use of the CIP-51's interrupts, thus requiring very little CPU intervention.
Rev. 1.125
C8051F320/1
1.8.Programmable Counter Array
An on-chip Programmable Counter/Timer Array (PCA) is included in addition to the four 16-bit general purpose
counter/timers. The PCA consists of a dedicated 16-bit counter/timer time base with five programmable capture/com
pare modules. The PCA clock is derived from one of six sources: the system clock divided by 12, the system clock
divided by 4, Timer 0 overflows, an External Clock Input (ECI), the system clock, or the external oscillator clock
source divided by 8. The external clock source selection is useful for real-time clock functionality, where the PCA is
clocked by an external source while the internal oscillator drives the system clock.
Each capture/compare module can be configured to operate in one of six modes: Edge-Triggered Capture, Software
Timer, High Speed Output, 8- or 16-bit Pulse Width Modulator, or Frequency Output. Additionally, Capture/Compare
Module 4 offers watchdog timer (WDT) capabilities. Following a system reset, Module 4 is configured and enabled
in WDT mode. The PCA Capture/Compare Module I/O and External Clock Input may be routed to Port I/O via the
Digital Crossbar.
Figure 1.9. PCA Block Diagram
SYSCLK/12
SYSCLK/4
Timer 0 Overflow
ECI
SYSCLK
External Clock/8
PCA
CLOCK
MUX
16-Bit Counter/Timer
-
Capture/Compare
Module 0
ECI
CEX0
Capture/Compare
Module 1
CEX1
Capture/Compare
Module 2
CEX2
Capture/Compare
Module 3
CEX3
Capture/Compare
Module 4 / WDT
CEX4
Crossbar
Port I/O
26Rev. 1.1
C8051F320/1
1.9.10-Bit Analog to Digital Converter
The C8051F320/1 devices include an on-chip 10-bit SAR ADC with a 17-channel differential input multiplexer. With
a maximum throughput of 200
includes a configurable analog multiplexer that selects both positive and negative ADC inputs. Ports1-3 are available
as ADC inputs; additionally, the on-chip Temperature Sensor output and the power supply voltage (VDD) are avail
able as ADC inputs. User firmware may shut down the ADC to save power.
Conversions can be started in six ways: a software command, an overflow of Timer 0, 1, 2, or 3, or an external convert start signal. This flexibility allows the start of conversion to be triggered by software events, a periodic signal
(timer overflows), or external HW signals. Conversion completions are indicated by a status bit and an interrupt (if
enabled). The resulting 10-bit data word is latched into the ADC data SFRs upon completion of a conversion.
Window compare registers for the ADC data can be configured to interrupt the controller when ADC data is either
within or outside of a specified range. The ADC can monitor a key voltage continuously in background mode, but not
interrupt the controller unless the converted data is within/outside the specified range.
Analog Multiplexer
P1.0
ksps, the ADC offers true 10-bit linearity with an INL of ±1LSB. The ADC system
Figure 1.10. 10-Bit ADC Block Diagram
-
P2.4-2.7
available on
C8051F320
Temp
Sensor
P2.4-2.7
available on
C8051F320
P1.7
P2.0
P2.7
P3.0
VDD
P1.0
P1.7
P2.0
P2.7
P3.0
VREF
GND
19-to-1
AMUX
19-to-1
AMUX
Configuration, Control, and Data Registers
(+)
10-Bit
SAR
(-)
ADC
End of
Conversion
Interrupt
Start
Conversion
16
Window Compare
000AD0BUSY (W)
Timer 0 Overflow
001
Timer 2 Overflow
010
011
Timer 1 Overflow
100
CNVSTR Input
Timer 3 Overflow
101
ADC Data
Registers
Window
Logic
Compare
Interrupt
Rev. 1.127
C8051F320/1
1.10.Comparators
C8051F320/1 devices include two on-chip voltage comparators that are enabled/disabled and configured via user
software. Port I/O pins may be configured as comparator inputs via a selection mux. Two comparator outputs may be
routed to a Port pin if desired: a latched output and/or an unlatched (asynchronous) output. Comparator response time
is programmable, allowing the user to select between high-speed and low-power modes. Positive and negative hyster
esis are also configurable.
Comparator interrupts may be generated on rising, falling, or both edges. When in IDLE mode, these interrupts may
be used as a “wake-up” source. Comparator0 may also be configured as a reset source.
Comparator0 block diagram.
Figure 1.11. Comparator0 Block Diagram
CP0EN
CP0OUT
CMX0N1
CMX0N0
CPT0MX
CMX0P1
CMX0P0
P1.0
P1.4
P2.0
P2.4
P1.1
P1.5
P2.1
P2.5
CP0RIF
CP0FIF
CP0HYP1
CPT0CN
CP0HYP0
CP0HYN1
CP0HYN0
CP0 +
CP0 -
VDD
Rising-edge
+
-
GND
Reset
Decision
Tree
SET
D
(SYNCHRONIZER)
SET
D
Q
Q
CLR
CLR
Q
Q
Figure 1.11 shows the
Interrupt
CP0
Falling-edge
Interrupt
Logic
Crossbar
CP0
CP0
CP0RIE
CP0FIE
CP0
CP0A
-
CP0RIE
Note: P2.4 and P2.5 available
only on C8051F320
CP0FIE
CPT0MD
CP0MD1
CP0MD0
28Rev. 1.1
2.ABSOLUTE MAXIMUM RATINGS
C8051F320/1
Tab le 2.1. Absolute Maximum Ratings
PARAMETERCONDITIONSMINTYPMAXUNITS
Ambient temperature under bias-55125°C
Storage Temperature-65150°C
Voltage on any Port I/O Pin or /RST with respect
to GND
Voltage on VDD with respect to GND-0.34.2V
Maximum Total current through VDD and GND500mA
Maximum output current sunk by /RST or any
Port pin
*
Note: stresses above those listed under “Absolute Maximum Ratings” may cause permanent damage to the device.
This is a stress rating only and functional operation of the devices at those or any other conditions above those indicated in the operation listings of this specification is not implied. Exposure to maximum rating conditions for
extended periods may affect device reliability.
*
-0.35.8V
100mA
Rev. 1.129
C8051F320/1
3.GLOBAL DC ELECTRICAL CHARACTERISTICS
Tab le 3.1. Global DC Electrical Characteristics
-40°C to +85°C, 25 MHz System Clock unless otherwise specified.
PARAMETERCONDITIONSMINTYPMAXUNITS
Digital Supply Voltage (Note 1)2.73.33.6V
Digital Supply Current with CPU
active
Digital Supply Current with CPU
active and USB active (Full or Low
Speed)
Digital Supply Current with CPU
inactive (not accessing FLASH)
Digital Supply Current (suspend
mode or shutdown mode)
Note 1: USB Requires 3.0 V Minimum Supply Voltage.
Note 2: SYSCLK must be at least 32 kHz to enable debugging.
30Rev. 1.1
4.PINOUT AND PACKAGE DEFINITIONS
Tab le 4.1. Pin Definitions for the C8051F320/1
Pin Numbers
Name
‘F320‘F321
TypeDescription
C8051F320/1
Power In
VDD66
GND33Ground.
/RST/
99
C2CK
P3.0/
1010
C2D
REGIN
VBUS88D In
D+44D I/OUSB D+.
D-55D I/OUSB D-.
77
Power
Out
D I/O
D I/O
D I/O
D I/O
Power In 5 V Regulator Input. This pin is the input to the on-chip voltage
2.7-3.6 V Power Supply Voltage Input.
3.3 V Voltage Regulator Output. See Section 8.
Device Reset. Open-drain output of internal POR or VDD monitor. An external source can initiate a system reset by driving this
pin low for at least 15
Clock signal for the C2 Debug Interface.
Port 3.0. See Section 14 for a complete description.
Bi-directional data signal for the C2 Debug Interface.
regulator.
VBUS Sense Input. This pin should be connected to the VBUS
signal of a USB network. A 5
network connection.
µs. See Section 10.
V signal on this pin indicates a USB
P0.022D I/OPort 0.0. See Section 14 for a complete description.
P0.111D I/OPort 0.1. See Section 14 for a complete description.
P0.2/
3228
XTAL1
P0.3/
3127
XTAL2
P0.43026D I/OPort 0.4. See Section 14 for a complete description.
P0.52925D I/OPort 0.5. See Section 14 for a complete description.
D I/O
A In
D I/O
A I/O or
D In
Port 0.2. See Section 14 for a complete description.
External Clock Input. This pin is the external oscillator return for
a crystal or resonator. See
Port 0.3. See Section 14 for a complete description.
External Clock Output. This pin is the excitation driver for an
external crystal or resonator, or an external clock input for CMOS,
capacitor, or RC oscillator configurations. See
Rev. 1.131
Section 13.
Section 13.
C8051F320/1
Pin Numbers
Name
‘F320‘F321
Table 4.1. Pin Definitions for the C8051F320/1
TypeDescription
P0.6/
2824
CNVSTR
P0.7/
2723
VREF
P1.02622
P1.12521
P1.22420
P1.32319
P1.42218
P1.52117
P1.62016
D I/O
A I/O
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
Port 0.6. See Section 14 for a complete description.
ADC0 External Convert Start Input. See Section 5.
Port 0.7. See Section 14 for a complete description.
External VREF input or output. See Section 6.
Port 1.0. See Section 14 for a complete description.
Port 1.1. See Section 14 for a complete description.
Port 1.2. See Section 14 for a complete description.
Port 1.3. See Section 14 for a complete description.
Port 1.4. See Section 14 for a complete description.
Port 1.5. See Section 14 for a complete description.
Port 1.6. See Section 14 for a complete description.
P1.71915
P2.01814
P2.11713
P2.21612
P2.31511
P2.414
P2.513
P2.612
32Rev. 1.1
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
D I/O or
A In
Port 1.7. See Section 14 for a complete description.
Port 2.0. See Section 14 for a complete description.
Port 2.1. See Section 14 for a complete description.
Port 2.2. See Section 14 for a complete description.
Port 2.3. See Section 14 for a complete description.
Port 2.4. See Section 14 for a complete description.
Port 2.5. See Section 14 for a complete description.
Port 2.6. See Section 14 for a complete description.
Name
C8051F320/1
Table 4.1. Pin Definitions for the C8051F320/1
Pin Numbers
TypeDescription
‘F320‘F321
P2.711
P0.1
P0.0
GND
VDD
D-
1
2
3
4
5
6
D I/O or
A In
Port 2.7. See Section 14 for a complete description.
Figure 4.1. LQFP-32 Pinout Diagram (Top View)
P1.1
P1.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
32
31
30
29
28
27
26
25
C8051F320
Top View
24
23
22
21
20
19
P1.2
P1.3
P1.4
P1.5D+
P1.6
P1.7
REGIN
VBUS
7
8
9
10
11
12
13
14
15
16
P2.6
/RST / C2CK
P2.7
P3.0 / C2D
P2.5
P2.4
P2.3
P2.2
Rev. 1.133
18
17
P2.0
P2.1
C8051F320/1
32
PIN 1
IDENTIFIER
A2
1
Figure 4.2. LQFP-32 Package Diagram
D
D1
E1
E
Package Dimensions
A- -1.60
A10.05-0.15
A21.351.401.45
b0.300.370.45
D-9.00-
D1-7.00-
e-0.80-
E-9.00-
E1-7.00-
Table 4.2. LQFP-32
MM
MINTYPMAX
A1
eb
A
34Rev. 1.1
Figure 4.3. MLP-28 Pinout Diagram (Top View)
C8051F320/1
GND
P0.1
P0.0
GND
D+
D-
VDD
REGIN
P0.2
28
1
2
3
P0.3
27
P0.4
26
P0.5
25
P0.6
24
P0.7
23
P1.0
22
21
20
19
P1.1
P1.2
P1.3
C8051F321
4
18
P1.4
Top View
5
6
GND
7
17
16
15
P1.5
P1.6
P1.7
8
VBUS
9
/RST / C2CK
10
P3.0 / C2D
11
P2.3
Rev. 1.135
12
P2.2
13
P2.1
14
P2.0
C8051F320/1
Figure 4.4. MLP-28 Package Drawing
Bottom View
8
9
L
7
6
b
5
4
e
3
2
1
DETAIL 1
28
D2
2
27
10
26
D2
6 x e
D
11
25
E2
12
24
13
14
15
16
17
E2
2
23
18
R
19
20
21
22
Side View
Table 4.2. MLP-28 Package
Dimensions
MM
MINTYPMAX
A0.800.901.00
A100.020.05
A200.651.00
A3-0.25-
b0.180.230.30
E
6 x e
D-5.00-
D22.903.153.35
E-5.00-
E22.903.153.35
e-0.5-
L0.450.550.65
N-28-
ND-7-
NE-7-
R0.09 - -
AA-0.435-
BB-0.435-
CC-0.18-
DD-0.18-
A2
e
A3
DETAIL 1
AA
BB
CC
DD
36Rev. 1.1
A
A1
Figure 4.5. Typical MLP-28 Landing Diagram
Top View
0.50 mm
0.20 mm
C8051F320/1
0.85 mm
0.30 mm
0.20 mm
0.50 mm
0.20 mm
Optional
GND
Connection
0.20 mm
0.30 mm
0.50 mm
0.10 mm
0.35 mm
b
D2
L
E2
e
D
0.50 mm
0.85 mm
0.35 mm
0.10 mm
E
Rev. 1.137
C8051F320/1
0.50 mm
Figure 4.6. Typical MLP-28 Solder Mask
Top View
0.20 mm
0.20 mm
0.85 mm
0.30 mm
0.50 mm
0.20 mm
0.20 mm
0.30 mm
0.50 mm
0.10 mm
0.60 mm
0.60 mm
0.70 mm
b
L
e
E2
0.30 mm
0.20 mm
0.40 mm
0.35 mm
D2
D
0.50 mm
0.85 mm
0.35 mm
0.10 mm
38Rev. 1.1
E
C8051F320/1
5.10-BIT ADC (ADC0)
The ADC0 subsystem for the C8051F320/1 consists of two analog multiplexers (referred to collectively as AMUX0)
with 17 total input selections, and a 200
and-hold and programmable window detector. The AMUX0, data conversion modes, and window detector are all
configurable under software control via the Special Function Registers shown in
Single-ended and Differential modes, and may be configured to measure P1.0-P3.0, the Temperature Sensor output,
or VDD with respect to P1.0-P3.0, VREF, or GND. The ADC0 subsystem is enabled only when the AD0EN bit in the
ADC0 Control register (ADC0CN) is set to logic
logic
0.
ksps, 10-bit successive-approximation-register ADC with integrated track-
Figure 5.1. ADC0 operates in both
1. The ADC0 subsystem is in low power shutdown when this bit is
Figure 5.1. ADC0 Functional Block Diagram
P2.4-2.7
available on
C8051F320
Sensor
P2.4-2.7
available on
C8051F320
Temp
P1.0
P1.7
P2.0
P2.7
P3.0
VDD
P1.0
P1.7
P2.0
P2.7
P3.0
VREF
GND
19-to-1
AMUX
19-to-1
AMUX
AMX0P
AMX0P4
AMX0N
AMX0N4
ADC0CN
AD0EN
AD0TM
AMX0P3
AMX0P2
AMX0P1
AMX0P0
VDD
(+)
10-Bit
AD0INT
AD0BUSY
AD0CM1
AD0CM2
AD0WINT
Start
Conversion
AD0CM0
000AD0BUSY (W)
Timer 0 Overflow
001
Timer 2 Overflow
010
Timer 1 Overflow
011
CNVSTR Input
100
101Timer 3 Overflow
ADC0L
SAR
(-)
AD0SC2
AD0SC3
AMX0N3
AMX0N2
AMX0N1
AD0SC4
AMX0N0
ADC0CF
AD0SC1
AD0SC0
AD0LJST
ADC
ADC0LTH
ADC0GTH ADC0GTL
SYSCLK
REF
ADC0LTL
ADC0H
AD0WINT
Window
Compare
32
Logic
Rev. 1.139
C8051F320/1
5.1.Analog Multiplexer
AMUX0 selects the positive and negative inputs to the ADC. Any of the following may be selected as the positive
input: P1.0-P3.0, the on-chip temperature sensor, or the positive power supply (VDD). Any of the following may be
selected as the negative input: P1.0-P3.0, VREF, or GND. When GND is selected as the negative input, ADC0operates in Single-ended Mode; all other times, ADC0 operates in Differential Mode. The ADC0 input channels
are selected in the AMX0P and AMX0N registers as described in
The conversion code format differs between Single-ended and Differential modes. The registers ADC0H and ADC0L
contain the high and low bytes of the output conversion code from the ADC at the completion of each conversion.
Data can be right-justified or left-justified, depending on the setting of the AD0LJST bit (ADC0CN.0). When in Sin
gle-ended Mode, conversion codes are represented as 10-bit unsigned integers. Inputs are measured from ‘0’ to
VREF * 1023/1024. Example codes are shown below for both right-justified and left-justified data. Unused bits in the
ADC0H and ADC0L registers are set to ‘0’.
When in Differential Mode, conversion codes are represented as 10-bit signed 2’s complement numbers. Inputs are
measured from -VREF to VREF * 511/512. Example codes are shown below for both right-justified and left-justified
data. For right-justified data, the unused MSBs of ADC0H are a sign-extension of the data word. For left-justified
data, the unused LSBs in the ADC0L register are set to ‘0’.
Important Note About ADC0 Input Configuration: Port pins selected as ADC0 inputs should be configured as
analog inputs, and should be skipped by the Digital Crossbar. To configure a Port pin for analog input, set to ‘0’ the
corresponding bit in register PnMDIN (for n = 0,1,2,3). To force the Crossbar to skip a Port pin, set to ‘1’ the corre
sponding bit in register PnSKIP (for n = 0,1,2). See Section “14. Port Input/Output” on page 127 for more Port I/O
configuration details.
Right-Justified ADC0H:ADC0L
(AD0LJST = 0)
Right-Justified ADC0H:ADC0L
(AD0LJST = 0)
Left-Justified ADC0H:ADC0L
(AD0LJST = 1)
Left-Justified ADC0H:ADC0L
(AD0LJST = 1)
-
40Rev. 1.1
5.2.Temperature Sensor
C8051F320/1
The typical temperature sensor transfer function is shown in Figure 5.2. The output voltage (V
) is the positive
TEMP
ADC input when the temperature sensor is selected by bits AMX0P4-0 in register AMX0P.
Figure 5.2. Typical Temperature Sensor Transfer Function
(mV)
1000
900
800
V
= 2.86(TEMPC) + 776 mV
700
600
500
0-5050100
Note that parameters which affect ADC measurement, in particular the voltage reference value, will also affect
temperature measurement.
TEMP
(Celsius)
Rev. 1.141
C8051F320/1
5.3.Modes of Operation
ADC0 has a maximum conversion speed of 200 ksps. The ADC0 conversion clock is a divided version of the system
clock, determined by the AD0SC bits in the ADC0CF register (system clock divided by (AD0SC + 1) for
0
≤ AD0SC ≤ 31).
5.3.1.Starting a Conversion
A conversion can be initiated in one of five ways, depending on the programmed states of the ADC0 Start of Conversion Mode bits (AD0CM2-0) in register ADC0CN. Conversions may be initiated by one of the following:
1. Writing a ‘1’ to the AD0BUSY bit of register ADC0CN
2. A Timer 0 overflow (i.e., timed continuous conversions)
3. A Timer 2 overflow
4. A Timer 1 overflow
5. A rising edge on the CNVSTR input signal (pin P0.6)
6. A Timer 3 overflow
Writing a ‘1’ to AD0BUSY provides software control of ADC0 whereby conversions are performed "on-demand".
During conversion, the AD0BUSY bit is set to logic 1 and reset to logic 0 when the conversion is complete. The fall
ing edge of AD0BUSY triggers an interrupt (when enabled) and sets the ADC0 interrupt flag (AD0INT). Note: When
polling for ADC conversion completions, the ADC0 interrupt flag (AD0INT) should be used. Converted data is avail
able in the ADC0 data registers, ADC0H:ADC0L, when bit AD0INT is logic 1. Note that when Timer 2 or Timer 3
overflows are used as the conversion source, Low Byte overflows are used if Timer 2/3 is in 8-bit mode; High byte
overflows are used if Timer 2/3 is in 16-bit mode. See
Section “19. Timers” on page 217 for timer configuration.
-
-
Important Note About Using CNVSTR: The CNVSTR input pin also functions as Port pin P0.6. When the
CNVSTR input is used as the ADC0 conversion source, Port pin P0.6 should be skipped by the Digital Crossbar. To
configure the Crossbar to skip P0.6, set to ‘1’ Bit6 in register P0SKIP. See
page 127 for details on Port I/O configuration.
Section “14. Port Input/Output” on
42Rev. 1.1
C8051F320/1
5.3.2.Tracking Modes
The AD0TM bit in register ADC0CN controls the ADC0 track-and-hold mode. In its default state, the ADC0 input is
continuously tracked, except when a conversion is in progress. When the AD0TM bit is logic 1, ADC0 operates in
low-power track-and-hold mode. In this mode, each conversion is preceded by a tracking period of 3 SAR clocks
(after the start-of-conversion signal). When the CNVSTR signal is used to initiate conversions in low-power tracking
mode, ADC0 tracks only when CNVSTR is low; conversion begins on the rising edge of CNVSTR (see
Tracking can also be disabled (shutdown) when the device is in low power standby or sleep modes. Low-power trackand-hold mode is also useful when AMUX settings are frequently changed, due to the settling time requirements
described in
Section “5.3.3. Settling Time Requirements” on page 44.
Figure 5.3. 10-Bit ADC Track and Conversion Example Timing
A. ADC0 Timing for External Trigger Source
CNVSTR
(AD0CM[2:0]=100)
Figure 5.3).
SAR Clocks
AD0TM=1
Write '1' to AD0BUSY,
Timer 0, Timer 2,
Timer 1, Timer 3 Overflow
(AD0CM[2:0]=000, 001,010
011, 101)
SAR Clocks
AD0TM=1
SAR Clocks
AD0TM=0
Low Power
or Convert
Track or ConvertConvertTrackAD0TM=0
123456789
TrackConvert
10 11
Low Po we r
B. ADC0 Timing for Internal Trigger Source
Low Po we r
or Convert
Track or
Convert
123456789101112
TrackConvertLow Power Mode
123456789
ConvertTrack
10
13 14
11
Mode
Rev. 1.143
C8051F320/1
5.3.3.Settling Time Requirements
When the ADC0 input configuration is changed (i.e., a different AMUX0 selection is made), a minimum tracking
time is required before an accurate conversion can be performed. This tracking time is determined by the AMUX0
resistance, the ADC0 sampling capacitance, any external source resistance, and the accuracy required for the conver
sion. Note that in low-power tracking mode, three SAR clocks are used for tracking at the start of every conversion.
For most applications, these three SAR clocks will meet the minimum tracking time requirements.
Figure 5.4 shows the equivalent ADC0 input circuits for both Differential and Single-ended modes. Notice that the
equivalent time constant for both input circuits is the same. The required ADC0 settling time for a given settling
accuracy (SA) may be approximated by
respect to GND, R
TOTAL
reduces to R
Equation 5.1. ADC0 Settling Time Requirements
Where:
SA is the settling accuracy, given as a fraction of an LSB (for example, 0.25 to settle within 1/4 LSB)
t is the required settling time in seconds
R
is the sum of the AMUX0 resistance and any external source resistance.
TOTAL
n is the ADC resolution in bits (10).
Equation 5.1. When measuring the Temperature Sensor output or VDD with
. See Tabl e 5.1 for ADC0 minimum settling time requirements.
Note that when GND is selected as the Negative Input, ADC0 operates in Single-ended mode. For all
other Negative Input selections, ADC0 operates in Differential mode.
AMX0N4-0ADC0 Negative Input
00000P1.0
00001P1.1
00010P1.2
00011P1.3
00100P1.4
00101P1.5
00110P1.6
00111P1.7
01000P2.0
01001P2.1
01010P2.2
01011P2.3
01100†P2.4†
01101†P2.5†
01110†P2.6†
01111†P2.7†
10000P3.0
10001 - 11101RESERVED
11110VREF
11111GND (ADC in Single-Ended Mode)
0xBA
†Only applies to C8051F320; selection RESERVED on C8051F321 devices.
46Rev. 1.1
C8051F320/1
Figure 5.7. ADC0CF: ADC0 Configuration Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
AD0SC4AD0SC3AD0SC2AD0SC1AD0SC0AD0LJST--11111000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
0xBC
Bits7-3:AD0SC4-0: ADC0 SAR Conversion Clock Period Bits.
SAR Conversion clock is derived from system clock by the following equation, where AD0SC refers
to the 5-bit value held in bits AD0SC4-0. SAR Conversion clock requirements are given in Table 5.1.
AD0SC
Bit2:AD0LJST: ADC0 Left Justify Select.
0: Data in ADC0H:ADC0L registers are right-justified.
1: Data in ADC0H:ADC0L registers are left-justified.
Bits1-0:UNUSED. Read = 00b; Write = don’t care.
SYSCLK
----------------------1–=
CLK
SAR
Figure 5.8. ADC0H: ADC0 Data Word MSB Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0:ADC0 Data Word High-Order Bits.
For AD0LJST = 0: Bits 7-2 are the sign extension of Bit1. Bits 1-0 are the upper 2 bits of the 10-bit
ADC0 Data Word.
For AD0LJST = 1: Bits 7-0 are the most-significant bits of the 10-bit ADC0 Data Word.
00000000
0xBE
Rev. 1.147
C8051F320/1
Figure 5.9. ADC0L: ADC0 Data Word LSB Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0:ADC0 Data Word Low-Order Bits.
For AD0LJST = 0: Bits 7-0 are the lower 8 bits of the 10-bit Data Word.
For AD0LJST = 1: Bits 7-6 are the lower 2 bits of the 10-bit Data Word. Bits 5-0 will always read ‘0’.
0: ADC0 Disabled. ADC0 is in low-power shutdown.
1: ADC0 Enabled. ADC0 is active and ready for data conversions.
Bit6:AD0TM: ADC0 Track Mode Bit.
0: Normal Track Mode: When ADC0 is enabled, tracking is continuous unless a conversion is in
progress.
1: Low-power Track Mode: Tracking Defined by AD0CM2-0 bits (see below).
0: ADC0 has not completed a data conversion since the last time AD0INT was cleared.
1: ADC0 has completed a data conversion.
Bit4:AD0BUSY: ADC0 Busy Bit.
Read:
0: ADC0 conversion is complete or a conversion is not currently in progress. AD0INT is set to
logic 1 on the falling edge of AD0BUSY.
1: ADC0 conversion is in progress.
Write:
0: No Effect.
1: Initiates ADC0 Conversion if AD0CM2-0 = 000b
Bit3:AD0WINT: ADC0 Window Compare Interrupt Flag.
0: ADC0 Window Comparison Data match has not occurred since this flag was last cleared.
1: ADC0 Window Comparison Data match has occurred.
Bits2-0:AD0CM2-0: ADC0 Start of Conversion Mode Select.
When AD0TM = 0:
000: ADC0 conversion initiated on every write of ‘1’ to AD0BUSY.
001: ADC0 conversion initiated on overflow of Timer 0.
010: ADC0 conversion initiated on overflow of Timer 2.
011: ADC0 conversion initiated on overflow of Timer 1.
100: ADC0 conversion initiated on rising edge of external CNVSTR.
101: ADC0 conversion initiated on overflow of Timer 3.
11x: Reserved.
When AD0TM = 1:
000: Tracking initiated on write of ‘1’ to AD0BUSY and lasts 3 SAR clocks, followed by conversion.
001: Tracking initiated on overflow of Timer 0 and lasts 3 SAR clocks, followed by conversion.
010: Tracking initiated on overflow of Timer 2 and lasts 3 SAR clocks, followed by conversion.
011: Tracking initiated on overflow of Timer 1 and lasts 3 SAR clocks, followed by conversion.
100: ADC0 tracks only when CNVSTR input is logic low; conversion starts on rising CNVSTR
edge.
101: Tracking initiated on overflow of Timer 3 and lasts 3 SAR clocks, followed by conversion.
11x: Reserved.
0xE8
Rev. 1.149
C8051F320/1
5.4.Programmable Window Detector
The ADC Programmable Window Detector continuously compares the ADC0 conversion results to user-programmed
limits, and notifies the system when a desired condition is detected. This is especially effective in an interrupt-driven
system, saving code space and CPU bandwidth while delivering faster system response times. The window detector
interrupt flag (AD0WINT in register ADC0CN) can also be used in polled mode. The ADC0 Greater-Than
(ADC0GTH, ADC0GTL) and Less-Than (ADC0LTH, ADC0LTL) registers hold the comparison values. The window
detector flag can be programmed to indicate when measured data is inside or outside of the user-programmed limits,
depending on the contents of the ADC0 Less-Than and ADC0 Greater-Than registers.
The Window Detector registers must be written with the same format (left/right justified, signed/unsigned) as that of
the current ADC configuration (left/right justified, single-ended/differential).
Figure 5.11. ADC0GTH: ADC0 Greater-Than Data High Byte Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0: High byte of ADC0 Greater-Than Data Word.
11111111
0xC4
Figure 5.12. ADC0GTL: ADC0 Greater-Than Data Low Byte Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0: Low byte of ADC0 Greater-Than Data Word.
11111111
0xC3
50Rev. 1.1
C8051F320/1
Figure 5.13. ADC0LTH: ADC0 Less-Than Data High Byte Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0: High byte of ADC0 Less-Than Data Word.
Figure 5.14. ADC0LTL: ADC0 Less-Than Data Low Byte Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
00000000
0xC6
00000000
0xC5
Bits7-0: Low byte of ADC0 Less-Than Data Word.
Rev. 1.151
C8051F320/1
5.4.1.Window Detector In Single-Ended Mode
Figure 5.15 shows two example window comparisons for right-justified, single-ended data, with
ADC0LTH:ADC0LTL = 0x0080 (128d) and ADC0GTH:ADC0GTL = 0x0040 (64d). In single-ended mode, the input
voltage can range from ‘0’ to VREF * (1023/1024) with respect to GND, and is represented by a 10-bit unsigned inte
ger value. In the left example, an AD0WINT interrupt will be generated if the ADC0 conversion word
(ADC0H:ADC0L) is within the range defined by ADC0GTH:ADC0GTL and ADC0LTH:ADC0LTL
(if
0x0040 < ADC0H:ADC0L < 0x0080). In the right example, and AD0WINT interrupt will be generated if the
ADC0 conversion word is outside of the range defined by the ADC0GT and ADC0LT registers
(if
ADC0H:ADC0L < 0x0040 or ADC0H:ADC0L > 0x0080). Figure 5.16 shows an example using left-justified data
with equivalent ADC0GT and ADC0LT register settings..
Figure 5.15. ADC Window Compare Example: Right-Justified Single-Ended Data
ADC0H:ADC0LADC0H:ADC0L
Input Voltage
(Px.x - GND)
VREF x (1023/1024)
0x03FF
Input Voltage
(Px.x - GND)
VREF x (1023/1024)
0x03FF
-
AD0WINT
not affected
VREF x (128/1024)
VREF x (64/1024)
0
0x0081
0x0080
0x007F
0x0041
0x0040
0x003F
0x0000
ADC0LTH:ADC0LTL
ADC0GTH:ADC0GT L
AD0WINT
not affected
VREF x (128/1024)
AD0WINT=1
VREF x (64/1024)
0
0x0081
0x0080
0x007F
0x0041
0x0040
0x003F
0x0000
ADC0GTH:ADC0GTL
AD0WINT
not affected
ADC0LTH:ADC0LTL
Figure 5.16. ADC Window Compare Example: Left-Justified Single-Ended Data
ADC0H:ADC0LADC0H:ADC0L
Input Voltage
(Px.x - GND)
VREF x (1023/1024)
VREF x (128/1024)
VREF x (64/1024)
0xFFC0
0x2040
0x2000
0x1FC0
0x1040
0x1000
0x0FC0
AD0WINT
not affected
ADC0LTH:ADC0LTL
ADC0GTH:ADC0GTL
AD0WIN T=1
Input Voltage
(Px.x - GND)
VREF x (1023/1024)
VREF x (128/1024)
VREF x (64/1024)
0xFFC0
0x2040
0x2000
0x1FC0
0x1040
0x1000
0x0FC0
ADC0GTH:ADC0GTL
AD0WINT
not affected
ADC0LTH:ADC0LTL
AD0WINT= 1
AD0WINT= 1
AD0WINT=1
AD0WINT
not affected
0
0x0000
52Rev. 1.1
AD0WINT=1
0
0x0000
C8051F320/1
5.4.2.Window Detector In Differential Mode
Figure 5.17 shows two example window comparisons for right-justified, differential data, with
ADC0LTH:ADC0LTL = 0x0040 (+64d) and ADC0GTH:ADC0GTH = 0xFFFF (-1d). In differential mode, the measurable voltage between the input pins is between -VREF and VREF*(511/512). Output codes are represented as 10bit 2’s complement signed integers. In the left example, an AD0WINT interrupt will be generated if the ADC0 con
version word (ADC0H:ADC0L) is within the range defined by ADC0GTH:ADC0GTL and ADC0LTH:ADC0LTL
(if
0xFFFF (-1d) < ADC0H:ADC0L < 0x0040 (64d)). In the right example, an AD0WINT interrupt will be generated
if the ADC0 conversion word is outside of the range defined by the ADC0GT and ADC0LT registers
(if
ADC0H:ADC0L < 0xFFFF (-1d) or ADC0H:ADC0L > 0x0040 (+64d)). Figure 5.18 shows an example using
left-justified data with equivalent ADC0GT and ADC0LT register settings..
Figure 5.17. ADC Window Compare Example: Right-Justified Differential Data
ADC0H:ADC0LADC0H:ADC0L
Input Voltage
(Px.x - Px.x)
VREF x (511/512)
0x01FF
Input Voltage
(Px.x - Px.x)
VREF x (511/512)
0x01FF
-
AD0WINT
not affected
0x0041
0x0040
0x003F
0x0000
0xFFFF
0xFFFE
0x0200
ADC0GTH:ADC0GTL
AD0WINT
not affected
ADC0LTH:ADC0LTL
VREF x (64/512)
VREF x (-1/512)
-VREF
0x0041
0x0040
0x003F
0x0000
0xFFFF
0xFFFE
0x0200
ADC0LTH:ADC0LTL
ADC0GTH:ADC0GTL
AD0WINT
not affected
VREF x (64/512)
AD0WINT=1
VREF x (-1/512)
-VREF
Figure 5.18. ADC Window Compare Example: Left-Justified Differential Data
DYNAMIC PERFORMANCE (10 kHz sine-wave Single-ended input, 1 dB below Full Scale, 200 ksps)
Signal-to-Noise Plus Distortion5355.5dB
Total Harmonic Distortion
Spurious-Free Dynamic Range78dB
CONVERSION RATE
SAR Conversion Clock3MHz
Conversion Time in SAR Clocks10clocks
Track/Hold Acquisition Time300ns
Throughput Rate200ksps
ANALOG INPUTS
ADC Input Voltage RangeSingle Ended (AIN+ - GND)
Absolute Pin Voltage with respect to
GND
Input Capacitance5pF
TEMPERATURE SENSOR
LinearityNote 1±0.1°C
GainNote 22.86mV / °C
OffsetNotes 1, 2 (Temp = 0 °C)0.776
POWER SPECIFICATIONS
Power Supply Current (VDD supplied to ADC0)
Power Supply Rejection±0.3mV/V
Note 1: Includes ADC offset, gain, and linearity variations.
Note 2: Represents one standard deviation from the mean.
Up to the 5th harmonic
0
Differential (AIN+ - AIN-)
Single Ended or Differential0VDDV
Operating Mode, 200 ksps400900µA
-VREF
-67dB
VREF
VREF
mV
±8.5
V
V
54Rev. 1.1
C8051F320/1
6.VOLTAGE REFERENCE
The Voltage reference MUX on C8051F320/1 devices is configurable to use an externally connected voltage reference, the internal reference voltage generator, or the power supply voltage VDD (see Figure 6.1). The REFSL bit in
the Reference Control register (REF0CN) selects the reference source. For the internal reference or an external
source, REFSL should be set to ‘0’; For VDD as the reference source, REFSL should be set to ‘1’.
The BIASE bit enables the internal ADC bias generator, which is used by the ADC and Internal Oscillator. This
enable is forced to logic 1 when either of the aforementioned peripherals is enabled. The ADC bias generator may be
enabled manually by writing a ‘1’ to the BIASE bit in register REF0CN; see
The Reference bias generator (see Figure 6.1) is used by the Internal Voltage Reference, Temperature Sensor, and
Clock Multiplier. The Reference bias is automatically enabled when any of the aforementioned peripherals are
enabled. The electrical specifications for the voltage reference and bias circuits are given in
Important Note About the VREF Input: Port pin P0.7 is used as the external VREF input. When using an external
voltage reference, P0.7 should be configured as analog input and skipped by the Digital Crossbar. To configure P0.7
as analog input, set to ‘0’ Bit7 in register P0MDIN. To configure the Crossbar to skip P0.7, set to ‘1’ Bit7 in register
P0SKIP. Refer to
Section “14. Port Input/Output” on page 127 for complete Port I/O configuration details.
The temperature sensor connects to the ADC0 positive input multiplexer (see Section “5.1. Analog Multiplexer” on
page 40 for details). The TEMPE bit in register REF0CN enables/disables the temperature sensor. While disabled,
the temperature sensor defaults to a high impedance state and any ADC0 measurements performed on the sensor
result in meaningless data.
Figure 6.2 for REF0CN register details.
Tabl e 6.1.
VDD
GND
R1
Figure 6.1. Voltage Reference Functional Block Diagram
C8051F320/1 devices include two on-chip programmable voltage Comparators: Comparator0 is shown in Figure 7.1;
Comparator1 is shown in Figure 7.2. The two Comparators operate identically with the following exceptions: (1)
Their input selections differ as shown in Figure 7.1 and Figure 7.2; (2) Comparator0 can be used as a reset source.
Each Comparator offers programmable response time and hysteresis, an analog input multiplexer, and two outputs
that are optionally available at the Port pins: a synchronous “latched” output (CP0, CP1), or an asynchronous “raw”
output (CP0A, CP1A). The asynchronous signal is available even when the system clock is not active. This allows the
Comparators to operate and generate an output with the device in STOP mode. When assigned to a Port pin, the Com
parator outputs may be configured as open drain or push-pull (see Section “14.2. Port I/O Initialization” on
page 131). Comparator0 may also be used as a reset source (see Section “10.5. Comparator0 Reset” on page 102).
The Comparator0 inputs are selected in the CPT0MX register (Figure 7.5). The CMX0P1-CMX0P0 bits select the
Comparator0 positive input; the CMX0N1-CMX0N0 bits select the Comparator0 negative input. The Comparator1
inputs are selected in the CPT1MX register (
tive input; the CMX1N1-CMX1N0 bits select the Comparator1 negative input.
Important Note About Comparator Inputs: The Port pins selected as Comparator inputs should be configured as
analog inputs in their associated Port configuration register, and configured to be skipped by the Crossbar (for details
on Port configuration, see
Section “14.3. General Purpose Port I/O” on page 134).
Figure 7.8). The CMX1P1-CMX1P0 bits select the Comparator1 posi-
-
CMX0N1
CMX0N0
CPT0MX
CMX0P1
CMX0P0
Note: P2.4 and P2.5 available
only on C8051F320
Figure 7.1. Comparator0 Functional Block Diagram
CP0EN
CP0OUT
P1.0
P1.4
P2.0
P2.4
P1.1
P1.5
P2.1
P2.5
CP0RIF
CP0FIF
CP0HYP1
CPT0CN
CP0HYP0
CP0HYN1
CP0HYN0
CP0 +
CP0 -
CP0RIE
CP0FIE
CPT0MD
CP0MD1
CP0MD0
VDD
Rising-edge
+
-
GND
Reset
Decision
Tree
SET
SET
D
D
Q
Q
CLR
CLR
(SYNCHRONIZER)
Q
Q
CP0
Interrupt
Logic
Crossbar
CP0
Interrupt
CP0
Falling-edge
CP0RIE
CP0FIE
CP0
CP0A
Rev. 1.157
C8051F320/1
Comparator outputs can be polled in software, used as an interrupt source, and/or routed to a Port pin. When routed to
a Port pin, Comparator outputs are available asynchronous or synchronous to the system clock; the asynchronous out
put is available even in STOP mode (with no system clock active). When disabled, the Comparator output (if
assigned to a Port I/O pin via the Crossbar) defaults to the logic low state, and supply current falls to less than
100
nA. See Section “14.1. Priority Crossbar Decoder” on page 129 for details on configuring Comparator outputs
via the digital Crossbar. Comparator inputs can be externally driven from -0.25 V to (VDD) + 0.25 V without damage
or upset. The complete Comparator electrical specifications are given in
Comparator response time may be configured in software via the CPTnMD registers (see Figure 7.6 and Figure 7.9).
Selecting a longer response time reduces the Comparator supply current. See Table 7.1 for complete timing and supply current specifications.
Figure 7.2. Comparator1 Functional Block Diagram
CP1EN
CP1OUT
CMX1N1
CMX1N0
CPT1MX
CMX1P1
CMX1P0
P1.2
P1.6
P2.2
P2.6
P1.3
P1.7
P2.3
P2.7
CP1RIF
CP1FIF
CP1HYP1
CPT1CN
CP1HYP0
CP1HYN1
CP1HYN0
CP1 +
CP1 -
VDD
+
-
GND
Table 7.1.
SET
SET
Q
D
D
Q
CLR
CLR
(SYNCHRONIZER)
Q
Q
CP1
Rising-edge
Interrupt
Logic
Crossbar
CP1
Interrupt
CP1
Falling-edge
CP1RIE
CP1FIE
CP1
CP1A
-
CP1RIE
Note: P2.6 and P2.7 available
only on C8051F320
CP1FIE
CPT1MD
CP1MD1
CP1MD0
58Rev. 1.1
Figure 7.3. Comparator Hysteresis Plot
C8051F320/1
VIN+
VIN-
CP0+
CP0-
+
CP0
_
OUT
CIRCUIT CONFIGURATION
Posi tive Hy steresi s Volt age
(Programmed with CP0HYP Bits)
INPUTS
VIN-
VIN+
V
OH
Negative Hysteresis Vo ltage
(Programmed by CP0HYN Bits)
OUTPUT
V
OL
Posi tive Hy steresi s
Disabled
Maximum
Posi tive H ysteresi s
Negative Hysteresis
Disabled
Maximum
Negative Hysteresis
Comparator hysteresis is programmed using Bits3-0 in the Comparator Control Register CPTnCN (shown in
Figure 7.4 and Figure 7.7). The amount of negative hysteresis voltage is determined by the settings of the CPnHYN
bits. As shown in Figure 7.3, settings of 20, 10 or 5 mV of negative hysteresis can be programmed, or negative
hysteresis can be disabled. In a similar way, the amount of positive hysteresis is determined by the setting the
CPnHYP bits.
Comparator interrupts can be generated on both rising-edge and falling-edge output transitions. (For Interrupt enable
and priority control, see
Section “8.3. Interrupt Handler” on page 58.) The CPnFIF flag is set to ‘1’ upon a Com-
parator falling-edge, and the CPnRIF flag is set to ‘1’ upon the Comparator rising-edge. Once set, these bits remain
set until cleared by software. The output state of the Comparator can be obtained at any time by reading the CPnOUT
bit. The Comparator is enabled by setting the CPnEN bit to ‘1’, and is disabled by clearing this bit to ‘0’.
These bits select the response time for Comparator1.
ModeCP1MD1CP1MD0 CP1 Response Time (TYP)
000100 ns
101175 ns
210320 ns
3111050 ns
0x9C
Rev. 1.165
C8051F320/1
Tab le 7.1. Comparator Electrical Characteristics
VDD = 3.0 V, -40°C to +85°C unless otherwise noted.
All specifications apply to both Comparator0 and Comparator1 unless otherwise noted.
PARAMETERCONDITIONSMINTYPMAXUNITS
Response Time:
Mode 0, Vcm† = 1.5 V
Response Time:
Mode 1, Vcm† = 1.5 V
Response Time:
Mode 2, Vcm† = 1.5 V
Response Time:
Mode 3, Vcm† = 1.5 V
Common-Mode Rejection Ratio1.54mV/V
Positive Hysteresis 1CP0HYP1-0 = 0001mV
Positive Hysteresis 2CP0HYP1-0 = 012510mV
Positive Hysteresis 3CP0HYP1-0 = 1071020mV
Positive Hysteresis 4CP0HYP1-0 = 11152030mV
Negative Hysteresis 1CP0HYN1-0 = 0001mV
Negative Hysteresis 2CP0HYN1-0 = 012510mV
Negative Hysteresis 3CP0HYN1-0 = 1071020mV
Negative Hysteresis 4CP0HYN1-0 = 11152030mV
Inverting or Non-Inverting Input
Voltage Range
Input Capacitance3pF
Input Bias Current0.001nA
Input Offset Voltage-5+5mV
POWER SUPPLY
Power Supply Rejection0.1mV/V
Power-up Time10µs
Supply Current at DC
†
Vcm is the common-mode voltage on CP0+ and CP0-.
CP0+ - CP0- = 100 mV100ns
CP0+ - CP0- = -100 mV250ns
CP0+ - CP0- = 100 mV175ns
CP0+ - CP0- = -100 mV500ns
CP0+ - CP0- = 100 mV320ns
CP0+ - CP0- = -100 mV1100ns
CP0+ - CP0- = 100 mV1050ns
CP0+ - CP0- = -100 mV5200ns
-0.25VDD +
0.25
Mode 07.6µA
Mode 13.2µA
Mode 21.3µA
Mode 30.4µA
V
66Rev. 1.1
C8051F320/1
8.VOLTAGE REGULATOR (REG0)
C8051F320/1 devices include a 5 V- to -3 V voltage regulator (REG0). When enabled, the REG0 output appears on
the VDD pin and can be used to power external devices. REG0 can be enabled/disabled by software using bit
REGEN in register REG0CN. See
Note that the VBUS signal must be connected to the VBUS pin when using the device in a USB network. The VBUS
signal should only be connected to the REGIN pin when operating the device as a bus-powered function. REG0 con
figuration options are shown in Figure 8.1 - Figure 8.4.
Table 8.1 for REG0 electrical characteristics.
-
Rev. 1.167
C8051F320/1
8.1.Regulator Mode Selection
REG0 offers a low power mode intended for use when the device is in suspend mode. In this low power mode, the
REG0 output remains as specified; however the REG0 dynamic performance (response time) is degraded. See
Table 8.1 for normal and low power mode supply current specifications. The REG0 mode selection is controlled via
the REGMOD bit in register REG0CN.
68Rev. 1.1
C8051F320/1
8.2.VBUS Detection
When the USB Function Controller is used (see section Section “15. Universal Serial Bus Controller (USB0)” on
page 143), the VBUS signal should be connected to the VBUS pin. The VBSTAT bit (register REG0CN) indicates
the current logic level of the VBUS signal. If enabled, a VBUS interrupt will be generated when the VBUS signal
matches the polarity selected by the VBPOL bit in register REG0CN. The VBUS interrupt is level-sensitive, and has
no associated interrupt pending flag. The VBUS interrupt will be active as long as the VBUS signal matches the
polarity selected by VBPOL. See
Important Note: When USB is selected as a reset source, a system reset will be generated when the VBUS signal
matches the polarity selected by the VBPOL bit. See
USB as a reset source.
Tab le 8.1. Voltage Regulator Electrical Specifications
VDD = 3.0 V; -40°C to +85°C unless otherwise specified
PARAMETERCONDITIONSMINTYPMAX UNITS
Input Voltage Range4.05.25V
Output VoltageOutput Current = 1 to 100 mA3.03.33.6V
VBUS Detection Input Threshold1.01.84.0V
Bias Current
Table 8.1 for VBUS input parameters.
Section “10. Reset Sources” on page 99 for details on selecting
Normal Mode (REGMOD = ‘0’)
Low Power Mode (REGMOD = ‘1’)
90
60
TBD
TBD
µA
Rev. 1.169
C8051F320/1
Figure 8.1. REG0 Configuration: USB Bus-Powered
C8051F320/1
VBUS
From VBUS
To 3V
Power Net
From VBUS
From 5V
Power Net
VBUS Sense
REGIN
VDD
5V In
Voltage Regulator (REG0)
3V Out
Figure 8.2. REG0 Configuration: USB Self-Powered
C8051F320/1
VBUS
VBUS Sense
REGIN
5V In
Voltage Regulator (REG0)
3V Out
Device
Power Net
To 3V
Power Net
VDD
70Rev. 1.1
Device
Power Net
C8051F320/1
Figure 8.3. REG0 Configuration: USB Self-Powered, Regulator Disabled
1: Voltage Regulator Disabled.
Bit6:VBSTAT: VBUS Signal Status.
0: VBUS signal currently absent (device not attached to USB network).
1: VBUS signal currently preset (device attached to USB network).
Bit5: VBPOL: VBUS Interrupt Polarity Select.
This bit selects the VBUS interrupt polarity.
0: VBUS interrupt active when VBUS is low.
1: VBUS interrupt active when VBUS is high.
Bit4:REGMOD: Voltage Regulator Mode Select.
This bit selects the Voltage Regulator mode. When REGMOD is set to ‘1’, the voltage regulator oper-
ates in low power (suspend) mode.
0: USB0 Voltage Regulator in normal mode.
1: USB0 Voltage Regulator in low power mode.
Bits3-0: Reserved. Read = 0000b. Must Write = 0000b.
0xC9
72Rev. 1.1
C8051F320/1
9.CIP-51 MICROCONTROLLER
The MCU system controller core is the CIP-51 microcontroller. The CIP-51 is fully compatible with the MCS-51™
instruction set; standard 803x/805x assemblers and compilers can be used to develop software. The MCU family has
a superset of all the peripherals included with a standard 8051. Included are four 16-bit counter/timers (see descrip
tion in Section 19), an enhanced full-duplex UART (see description in Section 17), an Enhanced SPI (see description
in Section 18), 256 bytes of internal RAM, 128 byte Special Function Register (SFR) address space (Section 9.2.6),
and 25 Port I/O (see description in Section 14). The CIP-51 also includes on-chip debug hardware (see description in
Section 21), and interfaces directly with the analog and digital subsystems providing a complete data acquisition or
control-system solution in a single integrated circuit.
The CIP-51 Microcontroller core implements the standard 8051 organization and peripherals as well as additional
custom peripherals and functions to extend its capability (see
the following features:
Figure 9.1 for a block diagram). The CIP-51 includes
-
-Fully Compatible with MCS-51 Instruction Set
-25 MIPS Peak Throughput with 25 MHz Clock
-0 to 25 MHz Clock Frequency
-256 Bytes of Internal RAM
-25 Port I/O
Figure 9.1. CIP-51 Block Diagram
DATA BUS
RESET
CLOCK
STOP
IDLE
D8
ACCUMULATOR
PSW
D8
BUFFER
DATA POINTER
PC INCREMENTER
PROGRAM COUNTER (PC)
PRGM. ADDRESS REG.
CONTROL
LOGIC
POWER CONTROL
REGISTER
D8
TMP1TMP2
PIPELINE
ALU
D8
-Extended Interrupt Handler
-Reset Input
-Power Management Modes
-On-chip Debug Logic
-Program and Data Memory Security
DATA BUS
D8
DATA BUS
D8
D8
DATA BUS
D8
B REGISTER
ADDRESS
REGISTER
D8
INTERFACE
D8
A16
INTERFACE
D8
INTERRUPT
INTERFACE
D8
D8
SRAM
D8
SFR
BUS
MEMORY
D8
STACK POINTER
SRAM
(256 X 8)
D8
SFR_ADDRESS
SFR_CONTROL
SFR_WRITE_DATA
SFR_READ_DATA
MEM_ADDRESS
MEM_CONTROL
MEM_WRITE_ DATA
MEM_READ_DATA
SYSTEM_IRQs
EMULATION_IRQ
Rev. 1.173
C8051F320/1
Performance
The CIP-51 employs a pipelined architecture that greatly increases its instruction throughput over the standard 8051
architecture. In a standard 8051, all instructions except for MUL and DIV take 12 or 24 system clock cycles to exe
cute, and usually have a maximum system clock of 12 MHz. By contrast, the CIP-51 core executes 70% of its instructions in one or two system clock cycles, with no instructions taking more than eight system clock cycles.
With the CIP-51's maximum system clock at 25 MHz, it has a peak throughput of 25 MIPS. The CIP-51 has a total of
109 instructions. The table below shows the total number of instructions that for execution time.
Clocks to Execute122/333/444/558
Number of Instructions265051473121
Programming and Debugging Support
In-system programming of the FLASH program memory and communication with on-chip debug support logic is
accomplished via the Silicon Labs 2-Wire Development Interface (C2). Note that the re-programmable FLASH can
also be read and changed a single byte at a time by the application software using the MOVC and MOVX instruc
tions. This feature allows program memory to be used for non-volatile data storage as well as updating program code
under software control.
The on-chip debug support logic facilitates full speed in-circuit debugging, allowing the setting of hardware breakpoints, starting, stopping and single stepping through program execution (including interrupt service routines), examination of the program's call stack, and reading/writing the contents of registers and memory. This method of on-chip
debugging is completely non-intrusive, requiring no RAM, Stack, timers, or other on-chip resources. C2 details can
be found in
Section “21. C2 Interface” on page 253.
-
-
The CIP-51 is supported by development tools from Silicon Labs and third party vendors. Silicon Labs provides an
integrated development environment (IDE) including editor, macro assembler, debugger and programmer. The IDE's
debugger and programmer interface to the CIP-51 via the C2 interface to provide fast and efficient in-system device
programming and debugging. Third party macro assemblers and C compilers are also available.
74Rev. 1.1
C8051F320/1
9.1.Instruction Set
The instruction set of the CIP-51 System Controller is fully compatible with the standard MCS-51™ instruction set.
Standard 8051 development tools can be used to develop software for the CIP-51. All CIP-51 instructions are the
binary and functional equivalent of their MCS-51™ counterparts, including opcodes, addressing modes and effect on
PSW flags. However, instruction timing is different than that of the standard 8051.
9.1.1.Instruction and CPU Timing
In many 8051 implementations, a distinction is made between machine cycles and clock cycles, with machine cycles
varying from 2 to 12 clock cycles in length. However, the CIP-51 implementation is based solely on clock cycle tim
ing. All instruction timings are specified in terms of clock cycles.
Due to the pipelined architecture of the CIP-51, most instructions execute in the same number of clock cycles as there
are program bytes in the instruction. Conditional branch instructions take one less clock cycle to complete when the
branch is not taken as opposed to when the branch is taken.
includes the mnemonic, number of bytes, and number of clock cycles for each instruction.
9.1.2.MOVX Instruction and Program Memory
The MOVX instruction is typically used to access external data memory (Note: the C8051F320/1 does not support
off-chip data or program memory). In the CIP-51, the MOVX write instruction is used to accesses external RAM
(XRAM) and the on-chip program memory space implemented as re-programmable FLASH memory. The FLASH
access feature provides a mechanism for the CIP-51 to update program code and use the program memory space for
non-volatile data storage. Refer to
Section “11. FLASH Memory” on page 107 for further details.
Tabl e 9.1 is the CIP-51 Instruction Set Summary, which
-
Tab le 9.1. CIP-51 Instruction Set Summary
MnemonicDescriptionBytes
ARITHMETIC OPERATIONS
ADD A, RnAdd register to A11
ADD A, directAdd direct byte to A22
ADD A, @RiAdd indirect RAM to A12
ADD A, #dataAdd immediate to A22
ADDC A, RnAdd register to A with carry11
ADDC A, directAdd direct byte to A with carry22
ADDC A, @RiAdd indirect RAM to A with carry12
ADDC A, #dataAdd immediate to A with carry22
SUBB A, RnSubtract register from A with borrow11
SUBB A, directSubtract direct byte from A with borrow22
SUBB A, @RiSubtract indirect RAM from A with borrow12
SUBB A, #dataSubtract immediate from A with borrow22
INC AIncrement A11
INC RnIncrement register11
INC directIncrement direct byte22
INC @RiIncrement indirect RAM12
DEC ADecrement A11
DEC RnDecrement register11
DEC directDecrement direct byte22
DEC @RiDecrement indirect RAM12
INC DPTRIncrement Data Pointer11
Clock
Cycles
Rev. 1.175
C8051F320/1
Table 9.1. CIP-51 Instruction Set Summary
MnemonicDescriptionBytes
MUL ABMultiply A and B14
DIV ABDivide A by B18
DA ADecimal adjust A11
LOGICAL OPERATIONS
ANL A, RnAND Register to A11
ANL A, directAND direct byte to A22
ANL A, @RiAND indirect RAM to A12
ANL A, #dataAND immediate to A22
ANL direct, AAND A to direct byte22
ANL direct, #dataAND immediate to direct byte33
ORL A, RnOR Register to A11
ORL A, directOR direct byte to A22
ORL A, @RiOR indirect RAM to A12
ORL A, #dataOR immediate to A22
ORL direct, AOR A to direct byte22
ORL direct, #dataOR immediate to direct byte33
XRL A, RnExclusive-OR Register to A11
XRL A, directExclusive-OR direct byte to A22
XRL A, @RiExclusive-OR indirect RAM to A12
XRL A, #dataExclusive-OR immediate to A22
XRL direct, AExclusive-OR A to direct byte22
XRL direct, #dataExclusive-OR immediate to direct byte33
CLR AClear A11
CPL AComplement A11
RL ARotate A left11
RLC ARotate A left through Carry11
RR ARotate A right11
RRC ARotate A right through Carry11
SWAP ASwap nibbles of A11
DATA TRANSFER
MOV A, RnMove Register to A11
MOV A, directMove direct byte to A22
MOV A, @RiMove indirect RAM to A12
MOV A, #dataMove immediate to A22
MOV Rn, AMove A to Register11
MOV Rn, directMove direct byte to Register22
MOV Rn, #dataMove immediate to Register22
MOV direct, AMove A to direct byte22
MOV direct, RnMove Register to direct byte22
MOV direct, directMove direct byte to direct byte33
MOV direct, @RiMove indirect RAM to direct byte22
MOV direct, #dataMove immediate to direct byte33
MOV @Ri, AMove A to indirect RAM12
MOV @Ri, directMove direct byte to indirect RAM22
MOV @Ri, #dataMove immediate to indirect RAM22
Clock
Cycles
76Rev. 1.1
Table 9.1. CIP-51 Instruction Set Summary
C8051F320/1
MnemonicDescriptionBytes
MOV DPTR, #data16Load DPTR with 16-bit constant33
MOVC A, @A+DPTRMove code byte relative DPTR to A13
MOVC A, @A+PCMove code byte relative PC to A13
MOVX A, @RiMove external data (8-bit address) to A13
MOVX @Ri, AMove A to external data (8-bit address)13
MOVX A, @DPTRMove external data (16-bit address) to A13
MOVX @DPTR, AMove A to external data (16-bit address)13
PUSH directPush direct byte onto stack22
POP directPop direct byte from stack22
XCH A, RnExchange Register with A11
XCH A, directExchange direct byte with A22
XCH A, @RiExchange indirect RAM with A12
XCHD A, @RiExchange low nibble of indirect RAM with A12
BOOLEAN MANIPULATION
CLR CClear Carry11
CLR bitClear direct bit22
SETB CSet Carry11
SETB bitSet direct bit22
CPL CComplement Carry11
CPL bitComplement direct bit22
ANL C, bitAND direct bit to Carry22
ANL C, /bitAND complement of direct bit to Carry22
ORL C, bitOR direct bit to carry22
ORL C, /bitOR complement of direct bit to Carry22
MOV C, bitMove direct bit to Carry22
MOV bit, CMove Carry to direct bit22
JC relJump if Carry is set22/3
JNC relJump if Carry is not set22/3
JB bit, relJump if direct bit is set33/4
JNB bit, relJump if direct bit is not set33/4
JBC bit, relJump if direct bit is set and clear bit33/4
PROGRAM BRANCHING
ACALL addr11Absolute subroutine call23
LCALL addr16Long subroutine call34
RETReturn from subroutine15
RETIReturn from interrupt15
AJMP addr11Absolute jump23
LJMP addr16Long jump34
SJMP relShort jump (relative address)23
JMP @A+DPTRJump indirect relative to DPTR13
JZ relJump if A equals zero22/3
JNZ relJump if A does not equal zero22/3
CJNE A, direct, relCompare direct byte to A and jump if not equal33/4
CJNE A, #data, relCompare immediate to A and jump if not equal33/4
CJNE Rn, #data, relCompare immediate to Register and jump if not equal33/4
Clock
Cycles
Rev. 1.177
C8051F320/1
Table 9.1. CIP-51 Instruction Set Summary
MnemonicDescriptionBytes
CJNE @Ri, #data, relCompare immediate to indirect and jump if not equal34/5
DJNZ Rn, relDecrement Register and jump if not zero22/3
DJNZ direct, relDecrement direct byte and jump if not zero33/4
NOPNo operation11
Notes on Registers, Operands and Addressing Modes:
Rn - Register R0-R7 of the currently selected register bank.
@Ri - Data RAM location addressed indirectly through R0 or R1.
rel - 8-bit, signed (two’s complement) offset relative to the first byte of the following instruction. Used by SJMP
and all conditional jumps.
direct - 8-bit internal data location’s address. This could be a direct-access Data RAM location (0x00-0x7F) or an
SFR (0x80-0xFF).
#data - 8-bit constant
#data16 - 16-bit constant
Clock
Cycles
bit - Direct-accessed bit in Data RAM or SFR
addr11 - 11-bit destination address used by ACALL and AJMP. The destination must be within the same 2K-byte
page of program memory as the first byte of the following instruction.
addr16 - 16-bit destination address used by LCALL and LJMP. The destination may be anywhere within the 8Kbyte program memory space.
The memory organization of the CIP-51 System Controller is similar to that of a standard 8051. There are two separate memory spaces: program memory and data memory. Program and data memory share the same address space but
are accessed via different instruction types. The CIP-51 memory organization is shown in
Figure 9.2. Memory Map
Figure 9.2.
PROGRAM/DATA MEMORY
(FLASH)
0x3E00
0x3DFF
0x0000
RESERVED
16K FLASH
(In-System
Programmable in 512
Byte Sectors)
0xFF
0x80
0x7F
0x30
0x2F
0x20
0x1F
0x00
0xFFFF
0x0800
0x07FF
0x0400
0x03FF
0x0000
DATA MEMORY (RAM)
INTERNAL DATA ADDRESS SPACE
Upper 128 RAM
(Indirect Addressing
Only)
(Direct and Indirect
Addressing)
Bit Addressable
General Purpose
Registers
Special Function
Register's
(Direct Addressing Only)
Lower 128 RAM
(Direct and Indirect
Addressing)
EXTERNAL DATA ADDRESS SPACE
Same 2048 bytes as from
0x0000 to 0x07FF, wrapped
on 2K-byte boundaries
USB FIFOs
1024 Bytes
XRAM - 1024 Bytes
(accessable using MOVX
instruction)
9.2.1.Program Memory
The CIP-51 core has a 64k-byte program memory space. The C8051F320/1 implements 16k bytes of this program
memory space as in-system, re-programmable FLASH memory, organized in a contiguous block from addresses
0x0000 to 0x3FFF. Addresses above 0x3DFF are reserved.
Program memory is normally assumed to be read-only. However, the CIP-51 can write to program memory by setting
the Program Store Write Enable bit (PSCTL.0) and using the MOVX instruction. This feature provides a mechanism
for the CIP-51 to update program code and use the program memory space for non-volatile data storage. Refer to
tion “11. FLASH Memory” on page 107 for further details.
Rev. 1.179
Sec-
C8051F320/1
9.2.2.Data Memory
The CIP-51 includes 256 of internal RAM mapped into the data memory space from 0x00 through 0xFF. The lower
128
bytes of data memory are used for general purpose registers and scratch pad memory. Either direct or indirect
addressing may be used to access the lower 128
as four banks of general purpose registers, each bank consisting of eight byte-wide registers. The next 16
tions 0x20 through 0x2F, may either be addressed as bytes or as 128 bit locations accessible with the direct addressing mode.
The upper 128 bytes of data memory are accessible only by indirect addressing. This region occupies the same
address space as the Special Function Registers (SFR) but is physically separate from the SFR space. The addressing
mode used by an instruction when accessing locations above 0x7F determines whether the CPU accesses the upper
128
bytes of data memory space or the SFRs. Instructions that use direct addressing will access the SFR space.
Instructions using indirect addressing above 0x7F access the upper 128
the data memory organization of the CIP-51.
9.2.3.General Purpose Registers
The lower 32 bytes of data memory, locations 0x00 through 0x1F, may be addressed as four banks of general-purpose
registers. Each bank consists of eight byte-wide registers designated R0 through R7. Only one of these banks may be
enabled at a time. Two bits in the program status word, RS0 (PSW.3) and RS1 (PSW.4), select the active register bank
(see description of the PSW in
rupt service routines. Indirect addressing modes use registers R0 and R1 as index registers.
Figure 9.6). This allows fast context switching when entering subroutines and inter-
bytes of data memory. Locations 0x00 through 0x1F are addressable
bytes, loca-
bytes of data memory. Figure 9.2 illustrates
9.2.4.Bit Addressable Locations
In addition to direct access to data memory organized as bytes, the sixteen data memory locations at 0x20 through
0x2F are also accessible as 128
the byte at 0x20 has bit address 0x00 while bit7 of the byte at 0x20 has bit address 0x07. Bit 7 of the byte at 0x2F has
bit address 0x7F. A bit access is distinguished from a full byte access by the type of instruction used (bit source or
destination operands as opposed to a byte source or destination).
The MCS-51™ assembly language allows an alternate notation for bit addressing of the form XX.B where XX is the
byte address and B is the bit position within the byte. For example, the instruction:
MOVC, 22h.3
moves the Boolean value at 0x13 (bit 3 of the byte at location 0x22) into the Carry flag.
individually addressable bits. Each bit has a bit address from 0x00 to 0x7F. Bit 0 of
9.2.5.Stack
A programmer's stack can be located anywhere in the 256-byte data memory. The stack area is designated using the
Stack Pointer (SP, 0x81) SFR. The SP will point to the last location used. The next value pushed on the stack is placed
at SP+1 and then SP is incremented. A reset initializes the stack pointer to location 0x07. Therefore, the first value
pushed on the stack is placed at location 0x08, which is also the first register (R0) of register bank 1. Thus, if more
than one register bank is to be used, the SP should be initialized to a location in the data memory not being used for
data storage. The stack depth can extend up to 256
bytes.
80Rev. 1.1
C8051F320/1
9.2.6.Special Function Registers
The direct-access data memory locations from 0x80 to 0xFF constitute the special function registers (SFRs). The
SFRs provide control and data exchange with the CIP-51's resources and peripherals. The CIP-51 duplicates the SFRs
found in a typical 8051 implementation as well as implementing additional SFRs used to configure and access the
sub-systems unique to the MCU. This allows the addition of new functionality while retaining compatibility with the
MCS-51™ instruction set.
The SFR registers are accessed anytime the direct addressing mode is used to access memory locations from 0x80 to
0xFF. SFRs with addresses ending in 0x0 or 0x8 (e.g. P0, TCON, SCON0, IE, etc.) are bit-addressable as well as
byte-addressable. All other SFRs are byte-addressable only. Unoccupied addresses in the SFR space are reserved for
future use. Accessing these areas will have an indeterminate effect and should be avoided. Refer to the corresponding
pages of the datasheet, as indicated in
Following are descriptions of SFRs related to the operation of the CIP-51 System Controller. Reserved bits should not
be set to logic
of the bit will be logic
in the sections of the datasheet associated with their corresponding system function.
l. Future product versions may use these bits to implement new features in which case the reset value
0, selecting the feature's default state. Detailed descriptions of the remaining SFRs are included
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Reserved
Figure 9.3. DPL: Data Pointer Low Byte
00000000
0x82
Bits7-0:DPL: Data Pointer Low.
The DPL register is the low byte of the 16-bit DPTR. DPTR is used to access indirectly addressed
memory.
Figure 9.4. DPH: Data Pointer High Byte
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0:DPH: Data Pointer High.
The DPH register is the high byte of the 16-bit DPTR. DPTR is used to access indirectly addressed
memory.
00000000
0x83
84Rev. 1.1
C8051F320/1
Figure 9.5. SP: Stack Pointer
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-0:SP: Stack Pointer.
The Stack Pointer holds the location of the top of the stack. The stack pointer is incremented before
every PUSH operation. The SP register defaults to 0x07 after reset.
Figure 9.6. PSW: Program Status Word
R/WR/WR/WR/WR/WR/WR/WRReset Value
CYACF0RS1RS0OVF1PARITY00000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
(bit addressable)
00000111
0x81
0xD0
Bit7:CY: Carry Flag.
This bit is set when the last arithmetic operation resulted in a carry (addition) or a borrow (subtraction). It is cleared to logic 0 by all other arithmetic operations.
Bit6:AC: Auxiliary Carry Flag
This bit is set when the last arithmetic operation resulted in a carry into (addition) or a borrow from
(subtraction) the high order nibble. It is cleared to logic 0 by all other arithmetic operations.
Bit5:F0: User Flag 0.
This is a bit-addressable, general purpose flag for use under software control.
Bits4-3:RS1-RS0: Register Bank Select.
These bits select which register bank is used during register accesses.
RS1RS0Register BankAddress
0000x00 - 0x07
0110x08 - 0x0F
1020x10 - 0x17
1130x18 - 0x1F
Bit2:OV: Overflow Flag.
This bit is set to 1 under the following circumstances:
• An ADD, ADDC, or SUBB instruction causes a sign-change overflow.
• A MUL instruction results in an overflow (result is greater than 255).
• A DIV instruction causes a divide-by-zero condition.
The OV bit is cleared to 0 by the ADD, ADDC, SUBB, MUL, and DIV instructions in all other cases.
Bit1:F1: User Flag 1.
This is a bit-addressable, general purpose flag for use under software control.
Bit0:PARITY: Parity Flag.
This bit is set to logic 1 if the sum of the eight bits in the accumulator is odd and cleared if the sum is
even.
Rev. 1.185
C8051F320/1
Figure 9.7. ACC: Accumulator
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
ACC.7ACC.6ACC.5ACC.4ACC.3ACC.2ACC.1ACC.000000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
(bit addressable)
Bits7-0:ACC: Accumulator.
This register is the accumulator for arithmetic operations.
Figure 9.8. B: B Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
B.7B.6B.5B.4B.3B.2B.1B.000000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
(bit addressable)
Bits7-0:B: B Register.
This register serves as a second accumulator for certain arithmetic operations.
0xE0
0xF0
86Rev. 1.1
C8051F320/1
9.3.Interrupt Handler
The CIP-51 includes an extended interrupt system supporting a total of 16 interrupt sources with two priority levels.
The allocation of interrupt sources between on-chip peripherals and external inputs pins varies according to the spe
cific version of the device. Each interrupt source has one or more associated interrupt-pending flag(s) located in an
SFR. When a peripheral or external source meets a valid interrupt condition, the associated interrupt-pending flag is
set to logic
If interrupts are enabled for the source, an interrupt request is generated when the interrupt-pending flag is set. As
soon as execution of the current instruction is complete, the CPU generates an LCALL to a predetermined address to
begin execution of an interrupt service routine (ISR). Each ISR must end with an RETI instruction, which returns pro
gram execution to the next instruction that would have been executed if the interrupt request had not occurred. If
interrupts are not enabled, the interrupt-pending flag is ignored by the hardware and program execution continues as
normal. (The interrupt-pending flag is set to logic
Each interrupt source can be individually enabled or disabled through the use of an associated interrupt enable bit in
an SFR (IE-EIE2). However, interrupts must first be globally enabled by setting the EA bit (IE.7) to logic
individual interrupt enables are recognized. Setting the EA bit to logic 0 disables all interrupt sources regardless of
the individual interrupt-enable settings.
Some interrupt-pending flags are automatically cleared by the hardware when the CPU vectors to the ISR. However,
most are not cleared by the hardware and must be cleared by software before returning from the ISR. If an interruptpending flag remains set after the CPU completes the return-from-interrupt (RETI) instruction, a new interrupt
request will be generated immediately and the CPU will re-enter the ISR after the completion of the next instruction.
1.
1 regardless of the interrupt's enable/disable state.)
1 before the
-
-
9.3.1.MCU Interrupt Sources and Vectors
The MCU supports 16 interrupt sources. Software can simulate an interrupt by setting any interrupt-pending flag to
logic
1. If interrupts are enabled for the flag, an interrupt request will be generated and the CPU will vector to the ISR
address associated with the interrupt-pending flag. MCU interrupt sources, associated vector addresses, priority order
and control bits are summarized in
on-chip peripheral for information regarding valid interrupt conditions for the peripheral and the behavior of its interrupt-pending flag(s).
Table 9.4 on page 89. Refer to the datasheet section associated with a particular
Rev. 1.187
C8051F320/1
9.3.2.External Interrupts
The /INT0 and /INT1 external interrupt sources are configurable as active high or low, edge or level sensitive. The
IN0PL (/INT0 Polarity) and IN1PL (/INT1 Polarity) bits in the IT01CF register select active high or active low; the
IT0 and IT1 bits in TCON (
table below lists the possible configurations.
/INT0 and /INT1 are assigned to Port pins as defined in the IT01CF register (see Figure 9.15). Note that /INT0 and
/INT0 Port pin assignments are independent of any Crossbar assignments. /INT0 and /INT1 will monitor their
assigned Port pins without disturbing the peripheral that was assigned the Port pin via the Crossbar. To assign a Port
pin only to /INT0 and/or /INT1, configure the Crossbar to skip the selected pin(s). This is accomplished by setting the
associated bit in register XBR0 (see
on configuring the Crossbar).
IE0 (TCON.1) and IE1 (TCON.3) serve as the interrupt-pending flags for the /INT0 and /INT1 external interrupts,
respectively. If an /INT0 or /INT1 external interrupt is configured as edge-sensitive, the corresponding interruptpending flag is automatically cleared by the hardware when the CPU vectors to the ISR. When configured as level
sensitive, the interrupt-pending flag remains logic 1 while the input is active as defined by the corresponding polarity
bit (IN0PL or IN1PL); the flag remains logic 0 while the input is inactive. The external interrupt source must hold the
input active until the interrupt request is recognized. It must then deactivate the interrupt request before execution of
the ISR completes or another interrupt request will be generated.
Section “19.1. Timer 0 and Timer 1” on page 217) select level or edge sensitive. The
Active low, edge sensitive10Active low, edge sensitive
Section “14.1. Priority Crossbar Decoder” on page 129 for complete details
9.3.3.Interrupt Priorities
Each interrupt source can be individually programmed to one of two priority levels: low or high. A low priority interrupt service routine can be preempted by a high priority interrupt. A high priority interrupt cannot be preempted. Each
interrupt has an associated interrupt priority bit in an SFR (IP or EIP2) used to configure its priority level. Low prior
ity is the default. If two interrupts are recognized simultaneously, the interrupt with the higher priority is serviced
first. If both interrupts have the same priority level, a fixed priority order is used to arbitrate, given in
Tabl e 9.4.
9.3.4.Interrupt Latency
Interrupt response time depends on the state of the CPU when the interrupt occurs. Pending interrupts are sampled
and priority decoded each system clock cycle. Therefore, the fastest possible response time is 5 system clock cycles:
1
clock cycle to detect the interrupt and 4 clock cycles to complete the LCALL to the ISR. If an interrupt is pending
when a RETI is executed, a single instruction is executed before an LCALL is made to service the pending interrupt.
Therefore, the maximum response time for an interrupt (when no other interrupt is currently being serviced or the
new interrupt is of greater priority) occurs when the CPU is performing an RETI instruction followed by a DIV as the
next instruction. In this case, the response time is 18
cycles to execute the RETI, 8
to the ISR. If the CPU is executing an ISR for an interrupt with equal or higher priority, the new interrupt will not be
serviced until the current ISR completes, including the RETI and following instruction.
Note that the CPU is stalled during FLASH write/erase operations and USB FIFO MOVX accesses (see Section
“12.2. Accessing USB FIFO Space” on page 114). Interrupt service latency will be increased for interrupts occuring
while the CPU is stalled. The latency for these situations will be determined by the standard interrupt service procedure (as described above) and the amount of time the CPU is stalled.
clock cycles to complete the DIV instruction and 4 clock cycles to execute the LCALL
system clock cycles: 1 clock cycle to detect the interrupt, 5 clock
The SFRs used to enable the interrupt sources and set their priority level are described below. Refer to the datasheet
section associated with a particular on-chip peripheral for information regarding valid interrupt conditions for the
peripheral and the behavior of its interrupt-pending flag(s).
Figure 9.9. IE: Interrupt Enable
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
EAESPI0ET2ES0ET1EX1ET0EX000000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
(bit addressable)
Bit7:EA: Enable All Interrupts.
This bit globally enables/disables all interrupts. It overrides the individual interrupt mask settings.
0: Disable all interrupt sources.
1: Enable each interrupt according to its individual mask setting.
Bit6:ESPI0: Enable Serial Peripheral Interface (SPI0) Interrupt.
This bit sets the masking of the SPI0 interrupts.
0: Disable all SPI0 interrupts.
1: Enable interrupt requests generated by SPI0.
Bit5:ET2: Enable Timer 2 Interrupt.
This bit sets the masking of the Timer 2 interrupt.
0: Disable Timer 2 interrupt.
1: Enable interrupt requests generated by the TF2L or TF2H flags.
Bit4:ES0: Enable UART0 Interrupt.
This bit sets the masking of the UART0 interrupt.
0: Disable UART0 interrupt.
1: Enable UART0 interrupt.
Bit3:ET1: Enable Timer 1 Interrupt.
This bit sets the masking of the Timer 1 interrupt.
0: Disable all Timer 1 interrupt.
1: Enable interrupt requests generated by the TF1 flag.
Bit2:EX1: Enable External Interrupt 1.
This bit sets the masking of External Interrupt 1.
0: Disable external interrupt 1.
1: Enable interrupt requests generated by the /INT1 input.
Bit1:ET0: Enable Timer 0 Interrupt.
This bit sets the masking of the Timer 0 interrupt.
0: Disable all Timer 0 interrupt.
1: Enable interrupt requests generated by the TF0 flag.
Bit0:EX0: Enable External Interrupt 0.
This bit sets the masking of External Interrupt 0.
0: Disable external interrupt 0.
1: Enable interrupt requests generated by the /INT0 input.
This bit sets the priority of the SPI0 interrupt.
0: SPI0 interrupt set to low priority level.
1: SPI0 interrupt set to high priority level.
Bit5:PT2: Timer 2 Interrupt Priority Control.
This bit sets the priority of the Timer 2 interrupt.
0: Timer 2 interrupt set to low priority level.
1: Timer 2 interrupts set to high priority level.
Bit4:PS0: UART0 Interrupt Priority Control.
This bit sets the priority of the UART0 interrupt.
0: UART0 interrupt set to low priority level.
1: UART0 interrupts set to high priority level.
Bit3:PT1: Timer 1 Interrupt Priority Control.
This bit sets the priority of the Timer 1 interrupt.
0: Timer 1 interrupt set to low priority level.
1: Timer 1 interrupts set to high priority level.
Bit2:PX1: External Interrupt 1 Priority Control.
This bit sets the priority of the External Interrupt 1 interrupt.
0: External Interrupt 1 set to low priority level.
1: External Interrupt 1 set to high priority level.
Bit1:PT0: Timer 0 Interrupt Priority Control.
This bit sets the priority of the Timer 0 interrupt.
0: Timer 0 interrupt set to low priority level.
1: Timer 0 interrupt set to high priority level.
Bit0:PX0: External Interrupt 0 Priority Control.
This bit sets the priority of the External Interrupt 0 interrupt.
0: External Interrupt 0 set to low priority level.
1: External Interrupt 0 set to high priority level.
0xB8
Rev. 1.191
C8051F320/1
Figure 9.11. EIE1: Extended Interrupt Enable 1
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
ET3ECP1ECP0EPCA0EADC0EWADC0EUSB0ESMB000000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bit7:ET3: Enable Timer 3 Interrupt.
This bit sets the masking of the Timer 3 interrupt.
0: Disable Timer 3 interrupts.
1: Enable interrupt requests generated by the TF3L or TF3H flags.
Bit6:ECP1: Enable Comparator1 (CP1) Interrupt.
This bit sets the masking of the CP1 interrupt.
0: Disable CP1 interrupts.
1: Enable interrupt requests generated by the CP1RIF or CP1FIF flags.
Bit5:ECP0: Enable Comparator0 (CP0) Interrupt.
This bit sets the masking of the CP0 interrupt.
0: Disable CP0 interrupts.
1: Enable interrupt requests generated by the CP0RIF or CP0FIF flags.
This bit sets the masking of the ADC0 Conversion Complete interrupt.
0: Disable ADC0 Conversion Complete interrupt.
1: Enable interrupt requests generated by the AD0INT flag.
This bit sets the masking of ADC0 Window Comparison interrupt.
0: Disable ADC0 Window Comparison interrupt.
1: Enable interrupt requests generated by ADC0 Window Compare flag (AD0WINT).
Bit1:EUSB0: Enable USB0 Interrupt.
This bit sets the masking of the USB0 interrupt.
0: Disable all USB0 interrupts.
1: Enable interrupt requests generated by USB0.
Bit0:ESMB0: Enable SMBus (SMB0) Interrupt.
This bit sets the masking of the SMB0 interrupt.
0: Disable all SMB0 interrupts.
1: Enable interrupt requests generated by SMB0.
0xE6
92Rev. 1.1
C8051F320/1
Figure 9.12. EIP1: Extended Interrupt Priority 1
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
PT3PCP1PCP0PPCA0PADC0PWADC0PUSB0PSMB000000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bit7:PT3: Timer 3 Interrupt Priority Control.
This bit sets the priority of the Timer 3 interrupt.
0: Timer 3 interrupts set to low priority level.
1: Timer 3 interrupts set to high priority level.
This bit sets the priority of the ADC0 Conversion Complete interrupt.
0: ADC0 Conversion Complete interrupt set to low priority level.
1: ADC0 Conversion Complete interrupt set to high priority level.
This bit sets the priority of the ADC0 Window interrupt.
0: ADC0 Window interrupt set to low priority level.
1: ADC0 Window interrupt set to high priority level.
Bit1:PUSB0: USB0 Interrupt Priority Control.
This bit sets the priority of the USB0 interrupt.
0: USB0 interrupt set to low priority level.
1: USB0 interrupt set to high priority level.
Note: Refer to Figure 19.4 for INT0/1 edge- or level-sensitive interrupt selection.
Bit7:IN1PL: /INT1 Polarity
0: /INT1 input is active low.
1: /INT1 input is active high.
Bits6-4:IN1SL2-0: /INT1 Port Pin Selection Bits
These bits select which Port pin is assigned to /INT1. Note that this pin assignment is independent of
the Crossbar; /INT1 will monitor the assigned Port pin without disturbing the peripheral that has been
assigned the Port pin via the Crossbar. The Crossbar will not assign the Port pin to a peripheral if it is
configured to skip the selected pin (accomplished by setting to ‘1’ the corresponding bit in register
P0SKIP).
0: /INT0 interrupt is active low.
1: /INT0 interrupt is active high.
Bits2-0:INT0SL2-0: /INT0 Port Pin Selection Bits
These bits select which Port pin is assigned to /INT0. Note that this pin assignment is independent of
the Crossbar. /INT0 will monitor the assigned Port pin without disturbing the peripheral that has been
assigned the Port pin via the Crossbar. The Crossbar will not assign the Port pin to a peripheral if it is
configured to skip the selected pin (accomplished by setting to ‘1’ the corresponding bit in register
P0SKIP).
The CIP-51 core has two software programmable power management modes: Idle and Stop. Idle mode halts the CPU
while leaving the peripherals and clocks active. In Stop mode, the CPU is halted, all interrupts, are inactive, and the
internal oscillator is stopped (analog peripherals remain in their selected states; the external oscillator is not affected).
Since clocks are running in Idle mode, power consumption is dependent upon the system clock frequency and the
number of peripherals left in active mode before entering Idle. Stop mode consumes the least power. Figure 1.15
describes the Power Control Register (PCON) used to control the CIP-51's power management modes.
Although the CIP-51 has Idle and Stop modes built in (as with any standard 8051 architecture), power management
of the entire MCU is better accomplished through system clock and individual peripheral management. Each analog
peripheral can be disabled when not in use and placed in low power mode. Digital peripherals, such as timers or serial
buses, draw little power when they are not in use. Turning off the oscillators lowers power consumption considerably;
however a reset is required to restart the MCU.
The internal oscillator can be placed in Suspend mode (see Section “13. Oscillators” on page 117). In Suspend
mode, the internal oscillator is stopped until a non-idle USB event is detected, or the VBUS input signal matches the
polarity selected by the VBPOL bit in register REG0CN (
9.4.1.Idle Mode
Setting the Idle Mode Select bit (PCON.0) causes the CIP-51 to halt the CPU and enter Idle mode as soon as the
instruction that sets the bit completes execution. All internal registers and memory maintain their original data. All
analog and digital peripherals can remain active during Idle mode.
Figure 8.5 on Page 72).
Idle mode is terminated when an enabled interrupt is asserted or a reset occurs. The assertion of an enabled interrupt
will cause the Idle Mode Selection bit (PCON.0) to be cleared and the CPU to resume operation. The pending inter
rupt will be serviced and the next instruction to be executed after the return from interrupt (RETI) will be the instruction immediately following the one that set the Idle Mode Select bit. If Idle mode is terminated by an internal or
external reset, the CIP-51 performs a normal reset sequence and begins program execution at address 0x0000.
If enabled, the Watchdog Timer (WDT) will eventually cause an internal watchdog reset and thereby terminate the
Idle mode. This feature protects the system from an unintended permanent shutdown in the event of an inadvertent
write to the PCON register. If this behavior is not desired, the WDT may be disabled by software prior to entering the
Idle mode if the WDT was initially configured to allow this operation. This provides the opportunity for additional
power savings, allowing the system to remain in the Idle mode indefinitely, waiting for an external stimulus to wake
up the system. Refer to
and configuration of the WDT.
Section “10.6. PCA Watchdog Timer Reset” on page 102 for more information on the use
9.4.2.Stop Mode
Setting the Stop Mode Select bit (PCON.1) causes the CIP-51 to enter Stop mode as soon as the instruction that sets
the bit completes execution. In Stop mode the internal oscillator, CPU, and all digital peripherals are stopped; the
state of the external oscillator circuit is not affected. Each analog peripheral (including the external oscillator circuit)
may be shut down individually prior to entering Stop Mode. Stop mode can only be terminated by an internal or
external reset. On reset, the CIP-51 performs the normal reset sequence and begins program execution at address
0x0000.
If enabled, the Missing Clock Detector will cause an internal reset and thereby terminate the Stop mode. The Missing
Clock Detector should be disabled if the CPU is to be put to in STOP mode for longer than the MCD timeout of
100
µsec.
-
96Rev. 1.1
C8051F320/1
Figure 9.16. PCON: Power Control Register
R/WR/WR/WR/WR/WR/WR/WR/WReset Value
GF5GF4GF3GF2GF1GF0STOPIDLE00000000
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:
Bits7-2:GF5-GF0: General Purpose Flags 5-0.
These are general purpose flags for use under software control.
Bit1:STOP: Stop Mode Select.
Setting this bit will place the CIP-51 in Stop mode. This bit will always be read as 0.
1: CPU goes into Stop mode (internal oscillator stopped).
Bit0:IDLE: Idle Mode Select.
Setting this bit will place the CIP-51 in Idle mode. This bit will always be read as 0.
1: CPU goes into Idle mode. (Shuts off clock to CPU, but clock to Timers, Interrupts, Serial Ports,
and Analog Peripherals are still active.)
0x87
Rev. 1.197
C8051F320/1
Notes
98Rev. 1.1
C8051F320/1
10.RESET SOURCES
Reset circuitry allows the controller to be easily placed in a predefined default condition. On entry to this reset state,
the following occur:
•CIP-51 halts program execution
•Special Function Registers (SFRs) are initialized to their defined reset values
•External Port pins are forced to a known state
•Interrupts and timers are disabled.
All SFRs are reset to the predefined values noted in the SFR detailed descriptions. The contents of internal data memory are unaffected during a reset; any previously stored data is preserved. However, since the stack pointer SFR is
reset, the stack is effectively lost even though the data on the stack is not altered.
The Port I/O latches are reset to 0xFF (all logic ones) in open-drain mode. Weak pull-ups are enabled during and after
the reset. For VDD Monitor and Power-On Resets, the /RST pin is driven low until the device exits the reset state.
On exit from the reset state, the program counter (PC) is reset, and the system clock defaults to the internal oscillator.
Refer to
source. The Watchdog Timer is enabled with the system clock divided by 12 as its clock source (Section
“20.3. Watchdog Timer Mode” on page 246 details the use of the Watchdog Timer). Program execution begins at
location 0x0000.
Section “13. Oscillators” on page 117 for information on selecting and configuring the system clock
XTAL1
XTAL2
Internal
Oscillator
Clock
Multiplier
External
Oscillator
Drive
Px.x
Px.x
System
Clock
Clock Select
Figure 10.1. Reset Sources
VDD
Supply
Comparator 0
+
-
Missing
Clock
Detector
(one-
shot)
EN
MCD
Enable
Microcontroller
Extended Interrupt
C0RSEF
CIP-51
Core
Handler
PCA
WDT
EN
WDT
Monitor
Enable
+
-
System Reset
Enable
Power On
Reset
Software Reset (SWRSF)
Errant
FLASH
Operation
'0'
USB
Controller
(wired-OR)
Enable
Reset
Funnel
VBUS
Transition
/RST
Rev. 1.199
C8051F320/1
10.1.Power-On Reset
During power-up, the device is held in a reset state and the /RST pin is driven low until VDD settles above V
Power-On Reset delay (T
ms. Figure 10.2. plots the power-on and VDD monitor reset timing.
0.3
PORDelay
) occurs before the device is released from reset; this delay is typically less than
RST
. A
On exit from a power-on reset, the PORSF flag (RSTSRC.1) is set by hardware to logic 1. When PORSF is set, all of
the other reset flags in the RSTSRC Register are indeterminate (PORSF is cleared by all other resets). Since all resets
cause program execution to begin at the same location (0x0000) software can read the PORSF flag to determine if a
power-up was the cause of reset. The content of internal data memory should be assumed to be undefined after a
power-on reset. The VDD monitor is enabled following a power-on reset.
Software can force a power-on reset by writing ‘1’ to the PINRSF bit in register RSTSRC.
Figure 10.2. Power-On and VDD Monitor Reset Timing
VDD
2.70
2.4
2.0
1.0
volts
V
RST
D
D
V
Logic HIGH
Logic LOW
/RST
Power-On
Reset
T
PORDelay
t
VDD
Monitor
Reset
100Rev. 1.1
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.