电子工程世界电子工程世界电子工程世界

型号

产品描述

搜索

C8051F012-GQ

器件型号:C8051F012-GQ
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Silicon-Laboratories
下载文档

器件描述

8-bit Microcontrollers - MCU 8KB Flash, 8-bit ADC

参数

产品属性属性值
产品种类:
Product Category:
8-bit Microcontrollers - MCU
制造商:
Manufacturer:
Silicon Laboratories
RoHS:YES
安装风格:
Mounting Style:
SMD/SMT
封装 / 箱体:
Package / Case:
LQFP-32
系列:
Series:
C8051F012
Core:8051
Data Bus Width:8 bit
Maximum Clock Frequency:20 MHz
Program Memory Size:32 kB
Data RAM Size:256 B
ADC Resolution:10 bit
Number of I/Os:8 I/O
工作电源电压:
Operating Supply Voltage:
2.7 V to 3.6 V
最大工作温度:
Maximum Operating Temperature:
+ 85 C
接口类型:
Interface Type:
I2C, SMBus, SPI, UART
封装:
Packaging:
Tray
商标:
Brand:
Silicon Labs
Data ROM Size:32 kB
Data ROM Type:Flash
高度:
Height:
1.4 mm
长度:
Length:
7 mm
最小工作温度:
Minimum Operating Temperature:
- 40 C
Moisture Sensitive:Yes
Number of ADC Channels:4
Number of Timers/Counters:4 Timer
Processor Series:C8051
产品:
Product:
MCU
Program Memory Type:Flash
工厂包装数量:
Factory Pack Quantity:
250
电源电压-最大:
Supply Voltage - Max:
3.6 V
电源电压-最小:
Supply Voltage - Min:
2.7 V
宽度:
Width:
7 mm
单位重量:
Unit Weight:
0.005742 oz

C8051F012-GQ器件文档内容

                                                                                   C8051F000/1/2/5/6/7

                                                                                   C8051F010/1/2/5/6/7

                                                Mixed-Signal 32KB ISP FLASH MCU Family

ANALOG PERIPHERALS                                                     HIGH SPEED 8051 C CORE

-  SAR ADC                                                             -  Pipelined Instruction Architecture; Executes 70% of

     12-Bit (C8051F000/1/2, C8051F005/6/7)                               Instruction Set in 1 or 2 System Clocks

     10-bit (C8051F010/1/2, C8051F015/6/7)                            -  Up to 25MIPS Throughput with 25MHz Clock

     1LSB INL; No Missing Codes                                      -  21 Vectored Interrupt Sources

     Programmable Throughput up to 100ksps                            MEMORY

     Up to 8 External Inputs; Programmable as Single-                 -  256 Bytes Internal Data RAM (F000/01/02/10/11/12)

      Ended or Differential                                            -  2304 Bytes Internal Data RAM (F005/06/07/15/16/17)

     Programmable Amplifier Gain: 16, 8, 4, 2, 1, 0.5                 -  32k Bytes FLASH; In-System Programmable in 512 byte

     Data Dependent Windowed Interrupt Generator                         Sectors

     Built-in Temperature Sensor ( 3C)                              DIGITAL PERIPHERALS

-  Two 12-bit DACs                                                     -  4 Byte-Wide Port I/O; All are 5V tolerant

-  Two Analog Comparators                                              -  Hardware SMBusTM (I2CTM Compatible), SPITM, and UART

     Programmable Hysteresis Values                                      Serial Ports Available Concurrently

     Configurable to Generate Interrupts or Reset                     -  Programmable 16-bit Counter/Timer Array with Five

-  Voltage Reference                                                      Capture/Compare Modules

     2.4V; 15 ppm/C                                                  -  Four General Purpose 16-bit Counter/Timers

     Available on External Pin                                        -  Dedicated Watch-Dog Timer

-  Precision VDD Monitor/Brown-out Detector                            -  Bi-directional Reset

ON-CHIP JTAG DEBUG & BOUNDARY SCAN                                     CLOCK SOURCES

-  On-Chip Debug Circuitry Facilitates Full Speed, Non-                -  Internal Programmable Oscillator: 2-to-16MHz

   Intrusive In-System Debug (No Emulator Required!)                   -  External Oscillator: Crystal, RC,C, or Clock

-  Provides Breakpoints, Single Stepping, Watchpoints, Stack           -  Can Switch Between Clock Sources on-the-fly; Useful in

   Monitor                                                                Power Saving Modes

-  Inspect/Modify Memory and Registers                                 SUPPLY VOLTAGE ........................ 2.7V to 3.6V

-  Superior Performance to Emulation Systems Using ICE-                -  Typical Operating Current: 12.5mA @ 25MHz

   Chips, Target Pods, and Sockets                                     -  Multiple Power Saving Sleep and Shutdown Modes

-  IEEE1149.1 Compliant Boundary Scan

-  Low Cost Development Kit                                            64-Pin TQFP, 48-Pin TQFP, 32-Pin LQFP

                                                                       Temperature Range: –40C to +85C

                             ANALOG PERIPHERALS                                    DIGITAL                I/O

                                                TEMP                               PCA                    0

                                                SENSOR                                                    Port

                                    AMUX                       SAR                 SMBus

                                                PGA            ADC

                                                                                SPI Bus                   Port 1

                                                                                   UART         CROSSBAR

                                                VREF

                                                                                   Timer 0                Port 2

                                    12-Bit                                         Timer 1

                                    DAC                            +

                                                         +         -               Timer 2                Port 3

                                    12-Bit               -

                                    DAC                       VOLTAGE              Timer 3

                                                            COMPARATORS

                                          HIGH-SPEED CONTROLLER CORE

                                    8051 CPU                CLOCK         JTAG     DEBUG

                                    (25MIPS)             CIRCUIT                   CIRCUITRY

                                          32KB       256/2304 B           21                SANITY

                             ISP FLASH                   SRAM         INTERRUPTS        CONTROL

Rev. 1.7 11/03                            Copyright © 2003 by Silicon Laboratories
                             C8051F000/1/2/5/6/7

                             C8051F010/1/2/5/6/7

TABLE OF CONTENTS

1.  SYSTEM OVERVIEW ......................................................................................................... 8

    Table 1.1. Product Selection Guide .....................................................................................................................8

    Figure 1.1. C8051F000/05/10/15 Block Diagram ...............................................................................................9

    Figure 1.2. C8051F001/06/11/16 Block Diagram .............................................................................................10

    Figure 1.3. C8051F002/07/12/17 Block Diagram .............................................................................................11

    1.1.  CIP-51TM CPU .........................................................................................................................................12

    Figure 1.4. Comparison of Peak MCU Execution Speeds.................................................................................12

    Figure 1.5. On-Board Clock and Reset..............................................................................................................13

    1.2.  On-Board Memory...................................................................................................................................14

    Figure 1.6. On-Board Memory Map..................................................................................................................14

    1.3.  JTAG Debug and Boundary Scan............................................................................................................15

    Figure 1.7. Debug Environment Diagram .........................................................................................................15

    1.4.  Programmable Digital I/O and Crossbar .................................................................................................16

    Figure 1.8. Digital Crossbar Diagram................................................................................................................16

    1.5.  Programmable Counter Array..................................................................................................................17

    Figure 1.9. PCA Block Diagram .......................................................................................................................17

    1.6.  Serial Ports...............................................................................................................................................17

    1.7.  Analog to Digital Converter ....................................................................................................................18

    Figure 1.10. ADC Diagram ...............................................................................................................................18

    1.8.  Comparators and DACs...........................................................................................................................19

    Figure 1.11. Comparator and DAC Diagram.....................................................................................................19

2.  ABSOLUTE MAXIMUM RATINGS*.............................................................................. 20

3.  GLOBAL DC ELECTRICAL CHARACTERISTICS .................................................... 20

4.  PINOUT AND PACKAGE DEFINITIONS ..................................................................... 21

    Table 4.1. Pin Definitions..................................................................................................................................21

    Figure 4.1. TQFP-64 Pinout Diagram ...............................................................................................................23

    Figure 4.2. TQFP-64 Package Drawing ............................................................................................................24

    Figure 4.3. TQFP-48 Pinout Diagram ...............................................................................................................25

    Figure 4.4. TQFP-48 Package Drawing ............................................................................................................26

    Figure 4.5. LQFP-32 Pinout Diagram ...............................................................................................................27

    Figure 4.6. LQFP-32 Package Drawing ............................................................................................................28

5.  ADC (12-Bit, C8051F000/1/2/5/6/7 Only) .......................................................................... 29

    Figure 5.1. 12-Bit ADC Functional Block Diagram..........................................................................................29

    5.1.  Analog Multiplexer and PGA..................................................................................................................29

    5.2.  ADC Modes of Operation........................................................................................................................30

    Figure 5.2. 12-Bit ADC Track and Conversion Example Timing.....................................................................30

    Figure 5.3. Temperature Sensor Transfer Function...........................................................................................31

    Figure 5.4. AMX0CF: AMUX Configuration Register (C8051F00x) ..............................................................31

    Figure 5.5. AMX0SL: AMUX Channel Select Register (C8051F00x).............................................................32

    Figure 5.6. ADC0CF: ADC Configuration Register (C8051F00x)...................................................................33

    Figure 5.7. ADC0CN: ADC Control Register (C8051F00x) ............................................................................34

    Figure 5.8. ADC0H: ADC Data Word MSB Register (C8051F00x) ...............................................................35

    Figure 5.9. ADC0L: ADC Data Word LSB Register (C8051F00x).................................................................35

    5.3.  ADC Programmable Window Detector...................................................................................................36

    Figure 5.10. ADC0GTH: ADC Greater-Than Data High Byte Register (C8051F00x) ....................................36

    Figure 5.11. ADC0GTL: ADC Greater-Than Data Low Byte Register (C8051F00x) .....................................36

    Figure 5.12. ADC0LTH: ADC Less-Than Data High Byte Register (C8051F00x) .........................................36

    Figure 5.13. ADC0LTL: ADC Less-Than Data Low Byte Register (C8051F00x)...........................................36

    Figure 5.14. 12-Bit ADC Window Interrupt Examples, Right Justified Data...................................................37

    Figure 5.15. 12-Bit ADC Window Interrupt Examples, Left Justified Data .....................................................37

    Figure 5.15. 12-Bit ADC Window Interrupt Examples, Left Justified Data .....................................................38

                   Rev. 1.7                                                                                                                                              2
   C8051F000/1/2/5/6/7

   C8051F010/1/2/5/6/7

     Table 5.1. 12-Bit ADC Electrical Characteristics..............................................................................................38

     Table 5.1. 12-Bit ADC Electrical Characteristics..............................................................................................39

6.   ADC (10-Bit, C8051F010/1/2/5/6/7 Only) .......................................................................... 40

     Figure 6.1. 10-Bit ADC Functional Block Diagram..........................................................................................40

     6.1.   Analog Multiplexer and PGA..................................................................................................................40

     6.2.   ADC Modes of Operation........................................................................................................................41

     Figure 6.2. 10-Bit ADC Track and Conversion Example Timing.....................................................................41

     Figure 6.3. Temperature Sensor Transfer Function...........................................................................................42

     Figure 6.4. AMX0CF: AMUX Configuration Register (C8051F01x) ..............................................................42

     Figure 6.5. AMX0SL: AMUX Channel Select Register (C8051F01x).............................................................43

     Figure 6.6. ADC0CF: ADC Configuration Register (C8051F01x)...................................................................44

     Figure 6.7. ADC0CN: ADC Control Register (C8051F01x) ............................................................................45

     Figure 6.8. ADC0H: ADC Data Word MSB Register (C8051F01x) ...............................................................46

     Figure 6.9. ADC0L: ADC Data Word LSB Register (C8051F01x).................................................................46

     6.3.   ADC Programmable Window Detector...................................................................................................47

     Figure 6.10. ADC0GTH: ADC Greater-Than Data High Byte Register (C8051F01x) ....................................47

     Figure 6.11. ADC0GTL: ADC Greater-Than Data Low Byte Register (C8051F01x) .....................................47

     Figure 6.12. ADC0LTH: ADC Less-Than Data High Byte Register (C8051F01x) .........................................47

     Figure 6.13. ADC0LTL: ADC Less-Than Data Low Byte Register (C8051F01x)...........................................47

     Figure 6.14. 10-Bit ADC Window Interrupt Examples, Right Justified Data...................................................48

     Figure 6.15. 10-Bit ADC Window Interrupt Examples, Left Justified Data .....................................................48

     Figure 6.15. 10-Bit ADC Window Interrupt Examples, Left Justified Data .....................................................49

     Table 6.1. 10-Bit ADC Electrical Characteristics..............................................................................................49

     Table 6.1. 10-Bit ADC Electrical Characteristics..............................................................................................50

7.   DACs, 12 BIT VOLTAGE MODE..................................................................................... 51

     Figure 7.1. DAC Functional Block Diagram......................................................................................................51

     Figure 7.2. DAC0H: DAC0 High Byte Register ...............................................................................................52

     Figure 7.3. DAC0L: DAC0 Low Byte Register ................................................................................................52

     Figure 7.4. DAC0CN: DAC0 Control Register.................................................................................................52

     Figure 7.5. DAC1H: DAC1 High Byte Register ...............................................................................................53

     Figure 7.6. DAC1L: DAC1 Low Byte Register ................................................................................................53

     Figure 7.7. DAC1CN: DAC1 Control Register.................................................................................................53

     Table 7.1. DAC Electrical Characteristics.........................................................................................................54

8.   COMPARATORS ............................................................................................................... 55

     Figure 8.1. Comparator Functional Block Diagram ..........................................................................................55

     Figure 8.2. Comparator Hysteresis Plot.............................................................................................................56

     Figure 8.3.  CPT0CN: Comparator 0 Control Register ......................................................................................57

     Figure 8.4.  CPT1CN: Comparator 1 Control Register ......................................................................................58

     Table 8.1. Comparator Electrical Characteristics ..............................................................................................59

9.   VOLTAGE REFERENCE ................................................................................................. 60

     Figure 9.1. Voltage Reference Functional Block Diagram ...............................................................................60

     Figure 9.2.  REF0CN: Reference Control Register ............................................................................................61

     Table 9.1. Reference Electrical Characteristics .................................................................................................61

10.  CIP-51 CPU.......................................................................................................................... 62

     Figure 10.1. CIP-51 Block Diagram..................................................................................................................62

     10.1.  INSTRUCTION SET...........................................................................................................................63

     Table 10.1. CIP-51 Instruction Set Summary....................................................................................................65

     10.2.  MEMORY ORGANIZATION ............................................................................................................68

     Figure 10.2. Memory Map.................................................................................................................................69

     10.3.  SPECIAL FUNCTION REGISTERS..................................................................................................70

     Table 10.2. Special Function Register Memory Map ........................................................................................70

     Table 10.3. Special Function Registers .............................................................................................................70

     Figure 10.3. SP: Stack Pointer...........................................................................................................................74

     Figure 10.4. DPL: Data Pointer Low Byte ........................................................................................................74

3                       Rev. 1.7
                             C8051F000/1/2/5/6/7

                             C8051F010/1/2/5/6/7

     Figure 10.5. DPH: Data Pointer High Byte .......................................................................................................74

     Figure 10.6. PSW: Program Status Word..........................................................................................................75

     Figure 10.7. ACC: Accumulator........................................................................................................................76

     Figure 10.8. B: B Register .................................................................................................................................76

     10.4.  INTERRUPT HANDLER ...................................................................................................................77

     Table 10.4. Interrupt Summary..........................................................................................................................78

     Figure 10.9. IE: Interrupt Enable.......................................................................................................................79

     Figure 10.10. IP: Interrupt Priority....................................................................................................................80

     Figure 10.11. EIE1: Extended Interrupt Enable 1 .............................................................................................81

     Figure 10.12. EIE2: Extended Interrupt Enable 2 .............................................................................................82

     Figure 10.13. EIP1: Extended Interrupt Priority 1 ............................................................................................83

     Figure 10.14. EIP2: Extended Interrupt Priority 2 ............................................................................................84

     10.5.  Power Management Modes .................................................................................................................85

     Figure 10.15. PCON: Power Control Register ..................................................................................................86

11.  FLASH MEMORY.............................................................................................................. 87

     11.1.  Programming The Flash Memory........................................................................................................87

     Table 11.1. FLASH Memory Electrical Characteristics ....................................................................................87

     11.2.  Non-volatile Data Storage ...................................................................................................................88

     11.3.  Security Options ..................................................................................................................................88

     Figure 11.1. PSCTL: Program Store RW Control.............................................................................................88

     Figure 11.2. Flash Program Memory Security Bytes .........................................................................................89

     Figure 11.3. FLACL: Flash Access Limit (C8051F005/06/07/15/16/17 only) .................................................90

     Figure 11.4. FLSCL: Flash Memory Timing Prescaler .....................................................................................91

12.  EXTERNAL RAM (C8051F005/06/07/15/16/17).............................................................. 92

     Figure 12.1. EMI0CN: External Memory Interface Control .............................................................................92

13.  RESET SOURCES .............................................................................................................. 93

     Figure 13.1. Reset Sources Diagram .................................................................................................................93

     13.1.  Power-on Reset....................................................................................................................................94

     13.2.  Software Forced Reset.........................................................................................................................94

     Figure 13.2. VDD Monitor Timing Diagram ....................................................................................................94

     13.3.  Power-fail Reset...................................................................................................................................94

     13.4.  External Reset......................................................................................................................................95

     13.5.  Missing Clock Detector Reset .............................................................................................................95

     13.6.  Comparator 0 Reset .............................................................................................................................95

     13.7.  External CNVSTR Pin Reset...............................................................................................................95

     13.8.  Watchdog Timer Reset ........................................................................................................................95

     Figure 13.3. WDTCN: Watchdog Timer Control Register ...............................................................................96

     Figure 13.4.  RSTSRC: Reset Source Register...................................................................................................97

     Table 13.1. Reset Electrical Characteristics ......................................................................................................98

14.  OSCILLATOR .................................................................................................................... 99

     Figure 14.1. Oscillator Diagram ........................................................................................................................99

     Figure 14.2. OSCICN: Internal Oscillator Control Register ...........................................................................100

     Table 14.1. Internal Oscillator Electrical Characteristics ................................................................................100

     Figure 14.3. OSCXCN: External Oscillator Control Register.........................................................................101

     14.1.  External Crystal Example ..................................................................................................................102

     14.2.  External RC Example ........................................................................................................................102

     14.3.  External Capacitor Example ..............................................................................................................102

15.  PORT INPUT/OUTPUT................................................................................................... 103

     15.1.  Priority Cross Bar Decoder................................................................................................................103

     15.2.  Port I/O Initialization.........................................................................................................................103

     Figure 15.1. Port I/O Functional Block Diagram ............................................................................................104

     Figure 15.2. Port I/O Cell Block Diagram.......................................................................................................104

     Table 15.1. Crossbar Priority Decode .............................................................................................................105

     Figure 15.3. XBR0: Port I/O CrossBar Register 0 ..........................................................................................106

                   Rev. 1.7                                                                                                                                          4
   C8051F000/1/2/5/6/7

   C8051F010/1/2/5/6/7

     Figure 15.4. XBR1: Port I/O CrossBar Register 1 ..........................................................................................107

     Figure 15.5. XBR2: Port I/O CrossBar Register 2 ..........................................................................................108

     15.3.  General Purpose Port I/O...................................................................................................................109

     15.4.  Configuring Ports Which are not Pinned Out....................................................................................109

     Figure 15.6. P0: Port0 Register .......................................................................................................................109

     Figure 15.7. PRT0CF: Port0 Configuration Register ......................................................................................109

     Figure 15.8. P1: Port1 Register .......................................................................................................................110

     Figure 15.9. PRT1CF: Port1 Configuration Register ......................................................................................110

     Figure 15.10. PRT1IF: Port1 Interrupt Flag Register......................................................................................110

     Figure 15.11. P2: Port2 Register .....................................................................................................................111

     Figure 15.12. PRT2CF: Port2 Configuration Register ....................................................................................111

     Figure 15.13. P3: Port3 Register .....................................................................................................................112

     Figure 15.14. PRT3CF: Port3 Configuration Register ....................................................................................112

     Table 15.2. Port I/O DC Electrical Characteristics..........................................................................................112

16.  SMBus / I2C Bus................................................................................................................ 113

     Figure 16.1. SMBus Block Diagram ...............................................................................................................113

     Figure 16.2. Typical SMBus Configuration ....................................................................................................114

     16.1.  Supporting Documents ......................................................................................................................114

     16.2.  Operation ...........................................................................................................................................115

     Figure 16.3. SMBus Transaction.....................................................................................................................115

     16.3.  Arbitration .........................................................................................................................................116

     16.4.  Clock Low Extension ........................................................................................................................116

     16.5.  Timeouts ............................................................................................................................................116

     16.6.  SMBus Special Function Registers....................................................................................................116

     Figure 16.4. SMB0CN: SMBus Control Register ............................................................................................118

     Figure 16.5. SMB0CR: SMBus Clock Rate Register ......................................................................................119

     Figure 16.6. SMB0DAT: SMBus Data Register .............................................................................................120

     Figure 16.7. SMB0ADR: SMBus Address Register .......................................................................................120

     Figure 16.8. SMB0STA: SMBus Status Register............................................................................................121

     Table 16.1. SMBus Status Codes ....................................................................................................................122

17.  SERIAL PERIPHERAL INTERFACE BUS.................................................................. 123

     Figure 17.1. SPI Block Diagram .....................................................................................................................123

     Figure 17.2. Typical SPI Interconnection........................................................................................................124

     17.1.  Signal Descriptions............................................................................................................................124

     17.2.  Operation ...........................................................................................................................................125

     Figure 17.3. Full Duplex Operation.................................................................................................................125

     17.3.  Serial Clock Timing...........................................................................................................................126

     Figure 17.4.  Data/Clock Timing Diagram .......................................................................................................126

     17.4.  SPI Special Function Registers..........................................................................................................127

     Figure 17.5. SPI0CFG: SPI Configuration Register........................................................................................127

     Figure 17.6. SPI0CN: SPI Control Register ....................................................................................................128

     Figure 17.7. SPI0CKR: SPI Clock Rate Register............................................................................................129

     Figure 17.8. SPI0DAT: SPI Data Register ......................................................................................................129

18.  UART.................................................................................................................................. 130

     Figure 18.1. UART Block Diagram ................................................................................................................130

     18.1.  UART Operational Modes.................................................................................................................131

     Table 18.1. UART Modes ...............................................................................................................................131

     Figure 18.2. UART Mode 0 Interconnect........................................................................................................131

     Figure 18.3. UART Mode 0 Timing Diagram.................................................................................................131

     Figure 18.4. UART Mode 1 Timing Diagram.................................................................................................132

     Figure 18.5. UART Modes 1, 2, and 3 Interconnect Diagram ........................................................................133

     Figure 18.6. UART Modes 2 and 3 Timing Diagram......................................................................................134

     18.2.  Multiprocessor Communications .......................................................................................................135

     Figure 18.7. UART Multi-Processor Mode Interconnect Diagram .................................................................135

5                       Rev. 1.7
                              C8051F000/1/2/5/6/7

                              C8051F010/1/2/5/6/7

     Table 18.2. Oscillator Frequencies for Standard Baud Rates ..........................................................................136

     Figure 18.8.   SBUF: Serial (UART) Data Buffer Register...............................................................................136

     Figure 18.9. SCON: Serial Port Control Register............................................................................................137

19.  TIMERS ............................................................................................................................. 138

     19.1.  Timer 0 and Timer 1 ..........................................................................................................................138

     Figure 19.1. T0 Mode 0 Block Diagram..........................................................................................................139

     Figure 19.2. T0 Mode 2 Block Diagram..........................................................................................................140

     Figure 19.3. T0 Mode 3 Block Diagram..........................................................................................................141

     Figure 19.4. TCON: Timer Control Register...................................................................................................142

     Figure 19.5. TMOD: Timer Mode Register.....................................................................................................143

     Figure 19.6. CKCON: Clock Control Register................................................................................................144

     Figure 19.7. TL0: Timer 0 Low Byte ..............................................................................................................145

     Figure 19.8. TL1: Timer 1 Low Byte ..............................................................................................................145

     Figure 19.9. TH0: Timer 0 High Byte .............................................................................................................145

     Figure 19.10. TH1: Timer 1 High Byte ...........................................................................................................145

     19.2.  Timer 2 ..............................................................................................................................................146

     Figure 19.11. T2 Mode 0 Block Diagram........................................................................................................147

     Figure 19.12. T2 Mode 1 Block Diagram........................................................................................................148

     Figure 19.13. T2 Mode 2 Block Diagram........................................................................................................149

     Figure 19.14. T2CON: Timer 2 Control Register............................................................................................150

     Figure 19.15. RCAP2L: Timer 2 Capture Register Low Byte ........................................................................151

     Figure 19.16. RCAP2H: Timer 2 Capture Register High Byte .......................................................................151

     Figure 19.17. TL2: Timer 2 Low Byte ............................................................................................................151

     Figure 19.18. TH2: Timer 2 High Byte ...........................................................................................................151

     19.3.  Timer 3 ..............................................................................................................................................152

     Figure 19.19. Timer 3 Block Diagram.............................................................................................................152

     Figure 19.20.  TMR3CN: Timer 3 Control Register ........................................................................................152

     Figure 19.21. TMR3RLL: Timer 3 Reload Register Low Byte ......................................................................153

     Figure 19.22. TMR3RLH: Timer 3 Reload Register High Byte .....................................................................153

     Figure 19.23. TMR3L: Timer 3 Low Byte ......................................................................................................153

     Figure 19.24. TMR3H: Timer 3 High Byte .....................................................................................................153

20.  PROGRAMMABLE COUNTER ARRAY ..................................................................... 154

     Figure 20.1. PCA Block Diagram ...................................................................................................................154

     20.1.  Capture/Compare Modules ................................................................................................................155

     Table 20.1. PCA0CPM Register Settings for PCA Capture/Compare Modules .............................................155

     Figure 20.2. PCA Interrupt Block Diagram.....................................................................................................155

     Figure 20.3. PCA Capture Mode Diagram ......................................................................................................156

     Figure 20.4. PCA Software Timer Mode Diagram..........................................................................................157

     Figure 20.5. PCA High Speed Output Mode Diagram....................................................................................157

     Figure 20.6. PCA PWM Mode Diagram .........................................................................................................158

     20.2.  PCA Counter/Timer...........................................................................................................................159

     Table 20.2. PCA Timebase Input Options.......................................................................................................159

     Figure 20.7. PCA Counter/Timer Block Diagram...........................................................................................159

     20.3.  Register Descriptions for PCA ..........................................................................................................160

     Figure 20.8. PCA0CN: PCA Control Register .................................................................................................160

     Figure 20.9. PCA0MD: PCA Mode Register ..................................................................................................161

     Figure 20.10. PCA0CPMn: PCA Capture/Compare Registers........................................................................162

     Figure 20.11. PCA0L: PCA Counter/Timer Low Byte ...................................................................................163

     Figure 20.12. PCA0H: PCA Counter/Timer High Byte ..................................................................................163

     Figure 20.13. PCA0CPLn: PCA Capture Module Low Byte ..........................................................................163

     Figure 20.14. PCA0CPHn: PCA Capture Module High Byte.........................................................................163

21.  JTAG (IEEE 1149.1) ......................................................................................................... 164

     Figure 21.1. IR: JTAG Instruction Register ....................................................................................................164

     21.1.  Boundary Scan...................................................................................................................................165

                    Rev. 1.7                                                                                                                                           6
   C8051F000/1/2/5/6/7

   C8051F010/1/2/5/6/7

   Table 21.1. Boundary Data Register Bit Definitions.......................................................................................165

   Figure 21.2. DEVICEID: JTAG Device ID Register ......................................................................................166

   21.2.  Flash Programming Commands.........................................................................................................167

   Figure 21.3. FLASHCON: JTAG Flash Control Register...............................................................................168

   Figure 21.4. FLASHADR: JTAG Flash Address Register..............................................................................168

   Figure 21.5. FLASHDAT: JTAG Flash Data Register....................................................................................169

   Figure 21.6. FLASHSCL: JTAG Flash Scale Register ...................................................................................169

   21.3.  Debug Support...................................................................................................................................170

7                       Rev. 1.7
                                                                                                                                                                                   C8051F000/1/2/5/6/7

                                                                                                                                                                                   C8051F010/1/2/5/6/7

1.  SYSTEM OVERVIEW

The C8051F000 family are fully integrated mixed-signal System on a Chip MCUs with a true 12-bit multi-channel

ADC (F000/01/02/05/06/07), or a true 10-bit multi-channel ADC (F010/11/12/15/16/17).                                                                                                                              See the Product Selection

Guide in Table 1.1 for a quick reference of each MCUs’ feature set.                                                                                          Each has a programmable gain pre-amplifier,

two 12-bit DACs, two voltage comparators (except for the F002/07/12/17, which have one), a voltage reference,

and an 8051-compatible microcontroller core with 32kbytes of FLASH memory.                                                                                                                                        There are also I2C/SMBus,

UART,    and  SPI  serial       interfaces     implemented           in               hardware                                        (not                   “bit-banged”                      in                 user                software)                    as  well                 as       a

Programmable Counter/Timer Array (PCA) with five capture/compare modules.                                                                                                                      There are also 4 general-purpose

16-bit timers and 4 byte-wide general-purpose digital Port I/O.                                                                       The C8051F000/01/02/10/11/12 have 256 bytes of

RAM and execute up to 20MIPS, while the C8051F005/06/07/15/16/17 have 2304 bytes of RAM and execute up to

25MIPS.

With an on-board VDD monitor, WDT, and clock oscillator, the MCUs are truly stand-alone System-on-a-Chip

solutions.  Each MCU effectively configures and manages the analog and digital peripherals.                                                                                                                                           The FLASH memory

can be reprogrammed even in-circuit, providing non-volatile data storage, and also allowing field upgrades of the

8051 firmware. Each MCU can also individually shut down any or all of the peripherals to conserve power.

On-board JTAG debug support allows non-intrusive (uses no on-chip resources), full speed, in-circuit debug using

the production MCU installed in the final application.                                   This debug system supports inspection and modification of

memory and registers, setting breakpoints, watchpoints, single stepping, and run and halt commands.                                                                                                                                                                    All analog

and digital peripherals are fully functional when using JTAG debug.

Each MCU is specified for 2.7V-to-3.6V operation over the industrial temperature range (-45C to +85C).                                                                                                                                                                                      The Port

I/Os, /RST, and JTAG pins are tolerant for input signals up to 5V.                                                                                           The C8051F000/05/10/15 are available in the

64-pin TQFP (see block diagram in Figure 1.1).                          The C8051F001/06/11/16 are available in the 48-pin TQFP (see

block diagram in Figure 1.2).                 The C8051F002/07/12/17 are available in the 32-pin LQFP (see block diagram in

Figure 1.3).

                                               Table 1.1. Product Selection Guide

              MIPS (Peak)  FLASH Memory  RAM   SMBus/I2C  SPI  UART  Timers (16-bit)  Programmable Counter Array  Digital Port I/O’s  ADC Resolution (bits)  ADC Max Speed (ksps)  ADC Inputs  Voltage Reference  Temperature Sensor  DAC Resolution  DAC Outputs      Voltage Comparators  Package

C8051F000     20           32k           256                      4                                           32                  12                     100                   8                                                12              2            2                        64TQFP

C8051F001     20           32k           256                      4                                           16                  12                     100                   8                                                12              2            2                        48TQFP

C8051F002     20           32k           256                      4                                           8                   12                     100                   4                                                12              2            1                        32LQFP

C8051F005     25           32k           2304                     4                                           32                  12                     100                   8                                                12              2            2                        64TQFP

C8051F006     25           32k           2304                     4                                           16                  12                     100                   8                                                12              2            2                        48TQFP

C8051F007     25           32k           2304                     4                                           8                   12                     100                   4                                                12              2            1                        32LQFP

C8051F010     20           32k           256                      4                                           32                  10                     100                   8                                                12              2            2                        64TQFP

C8051F011     20           32k           256                      4                                           16                  10                     100                   8                                                12              2            2                        48TQFP

C8051F012     20           32k           256                      4                                           8                   10                     100                   4                                                12              2            1                        32LQFP

C8051F015     25           32k           2304                     4                                           32                  10                     100                   8                                                12              2            2                        64TQFP

C8051F016     25           32k           2304                     4                                           16                  10                     100                   8                                                12              2            2                        48TQFP

C8051F017     25           32k           2304                     4                                           8                   10                     100                   4                                                12              2            1                        32LQFP

                                                                                      Rev.                        1.7                                                                                                                                                                                8
   C8051F000/1/2/5/6/7

   C8051F010/1/2/5/6/7

                          Figure 1.1.    C8051F000/05/10/15 Block           Diagram

   VDD

   VDD

   VDD    Digital Power                                                                      C

   DGND                                                                              UART

   DGND                                                                                      R

   DGND                                                                              SMBus   O

   AV+                                                                      SPI Bus          S

   AV+    Analog Power

   AGND                                                                              PCA     S

   AGND                                                                                      B

                                                                                     Timers  A

   TCK                                            8         32kbyte                  0,1,2   R

   TMS          JTAG      Boundary Scan                     FLASH

   TDI          Logic          Debug HW           0                         Timer 3

   TDO                                                      256 byte                         S

                                                  5         RAM                      Port 0

   /RST                                  Reset                                       Latch   W

                                                  1         2048 byte                Port 1  I

                VDD            WDT                          XRAM                     Latch   T

                Monitor                                     (F005/15 only)                   C

                                                  C                                  Port 2  H

                                                                                     Latch

                External                          o

   XTAL1  Oscillator

   XTAL2        Circuit                           r  SFR Bus

                                    System Clock

                Internal                          e                                  Port 3

          Oscillator                                                                 Latch

   VREF   VREF

   DAC0                  DAC0

                (12-Bit)

9                                                 Rev. 1.7
                                                                           C8051F000/1/2/5/6/7

                                                                           C8051F010/1/2/5/6/7

                      Figure 1.2. C8051F001/06/11/16 Block Diagram

VDD

VDD    Digital Power

DGND                                                                                C

DGND                                                                       UART

DGND                                                                                R

DGND                                                                       SMBus    O

AV+                                                                        SPI Bus  S

AV+    Analog Power

AGND                                                                       PCA      S

AGND                                                                                B

                                                                           Timers   A

                                                           32kbyte         0,1,2    R

TCK                      Boundary Scan           8         FLASH

TMS          JTAG

TDI          Logic       Debug HW                0         256 byte        Timer 3

TDO                                                        RAM                      S

                                                 5                         Port 0

                                        Reset                              Latch    W

/RST                                             1         2048 byte                I

                                                           XRAM            Port 1   T

             VDD         WDT                               (F006/16 only)  Latch

             Monitor                                                                C

                                                 C                         Port 2   H

                                                                           Latch

             External                            o

XTAL1        Oscillator

XTAL2        Circuit                             r         SFR Bus

                                   System Clock

             Internal                            e                         Port 3

             Oscillator                                                    Latch

VREF   VREF

DAC0         DAC0

             (12-Bit)

                                                 Rev. 1.7                                       10
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                          Figure 1.3.    C8051F002/07/12/17 Block           Diagram

    VDD

    VDD   Digital Power

    DGND                                                                             UART    C

    DGND                                                                                     R

                                                                                     SMBus   O

    AV+                                                                     SPI Bus          S

    AV+   Analog Power

    AGND                                                                             PCA     S

    AGND                                                                                     B

                                                                                     Timers  A

                                                            32kbyte                  0,1,2   R

    TCK                   Boundary Scan           8         FLASH

    TMS         JTAG

    TDI         Logic          Debug HW           0         256 byte        Timer 3

    TDO                                                     RAM                              S

                                                  5                                  Port 0

                                         Reset                                       Latch   W

    /RST                                          1         2048 byte                        I

                                                            XRAM                     Port 1  T

                VDD            WDT                          (F007/17 only)           Latch

                Monitor                                                              Port 2  C

                                                  C                                  Latch   H

                External                          o

XTAL1     Oscillator

XTAL2           Circuit                           r  SFR Bus

                                    System Clock

                Internal                          e                                  Port 3

          Oscillator                                                                 Latch

    VREF  VREF

    DAC0                 DAC0

                (12-Bit)

                         DAC1

11                                                Rev. 1.7
                                                                                             C8051F000/1/2/5/6/7

                                                                                             C8051F010/1/2/5/6/7

1.1.     CIP-51TM CPU

1.1.1.   Fully 8051 Compatible

The C8051F000 family utilizes Silicon Laboratories’ proprietary CIP-51 microcontroller core.                     The CIP-51 is fully

compatible with the MCS-51TM instruction set.     Standard 803x/805x assemblers and compilers can be used to

develop  software.   The  core  has  all     the  peripherals   included       with          a  standard  8052,  including  four  16-bit

counter/timers, a full-duplex UART, 256 bytes of internal RAM space, 128 byte Special Function Register (SFR)

address space, and four byte-wide I/O Ports.

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

execute with a maximum system clock of 12-to-24MHz.                        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 number of instructions versus the system clock cycles to execute

them is as follows:

               Instructions     26            50          5                14           7           3     1      2                1

         Clocks to Execute      1             2           2/3              3            3/4         4     4/5    5                8

With the CIP-51’s maximum system clock at 25MHz, it has a peak throughput of 25MIPS.                             Figure 1.4 shows a

comparison of peak throughputs of various 8-bit microcontroller cores with their maximum system clocks.

                     Figure 1.4.     Comparison of Peak MCU Execution Speeds

                                         25

                                         20

                                   MIPS  15

                                         10

                                          5

                                                  Silicon Labs  Microchip      Philips     ADuC812

                                                  CIP-51        PIC17C75x      80C51         8051

                                                  (25MHz clk)   (33MHz         (33MHz      (16MHz

                                                                clk)           clk)          clk)

                                                          Rev. 1.7                                                                   12
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

1.1.3.  Additional Features

The C8051F000 MCU family has several key enhancements both inside and outside the CIP-51 core to improve its

overall performance and ease of use in the end applications.

The extended interrupt handler provides 21 interrupt sources into the CIP-51 (as opposed to 7 for the standard

8051), allowing the 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 building multi-tasking, real-time systems.

There are up to seven reset sources for the MCU: an on-board VDD monitor, a Watchdog Timer, a missing clock

detector, a voltage level detection from Comparator 0, a forced software reset, the CNVSTR pin, and the /RST pin.

The /RST pin is bi-directional, accommodating an external reset, or allowing the internally generated POR to be

output on the /RST pin.  Each reset source except for the VDD monitor and Reset Input Pin 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 MCU has an internal, stand alone clock generator which is used by default as the system clock after any reset.

If desired, the clock source may be switched on the fly to the external oscillator, which can use a crystal, ceramic

resonator, capacitor, RC, or external clock source to generate the system clock.                                                     This can be extremely useful in low

power applications, allowing the MCU to run from a slow (power saving) external crystal source, while periodically

switching to the fast (up to 16MHz) internal oscillator as needed.

                                Figure 1.5.                      On-Board Clock and                                                 Reset

                                                                                     VDD

                         (Port             CNVSTR

                         I/O)   Crossbar                                                                Supply

                                               (CNVSTR                                                  Monitor

                                               reset                                                        +              Supply

                                               enable)                                                      -              Reset                    /RST

                                                                                                                           Timeout   (wired-OR)

                                           Comparator 0

                         CP0+              +

                         CP0-              -

                                                        (CP0

                                                        reset

                                                        enable)

                                                                                                                                     Reset

                                                                      Missing                      WDT                               Funnel

                                                                      Clock

                                                                      Detector

                                                                      (one-

                                                                      shot)

                                                                      EN                           EN  PRE

                                Internal                              MC D  Enabl e  WD T  Enable       WD T   Strobe

                                Clock

                                Generator               System                                                 Software Reset

                                                        Clock                        CIP-51

                         XTAL1

                                OSC                     Clock Select  Microcontroller

                         XTAL2                                                       Core                      System Reset

                                                                             Extended Interrupt

                                                                                     Handler

13                                                                    Rev. 1.7
                                                                                            C8051F000/1/2/5/6/7

                                                                                            C8051F010/1/2/5/6/7

1.2.  On-Board 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 indirect 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.

The CIP-51 in the C8051F005/06/07/15/16/17 MCUs additionally has a 2048 byte RAM block in the external data

memory address space.     This 2048 byte block can be addressed over the entire 64k external data memory address

range (see Figure 1.6).

The MCU’s program memory consists of 32k + 128 bytes of FLASH.                              This memory may be reprogrammed in-

system in 512 byte sectors, and requires no special off-chip programming voltage.                             The 512 bytes from addresses

0x7E00 to 0x7FFF are reserved for factory use.         There is also a single 128-byte sector at address 0x8000 to 0x807F,

which may be useful as a small table for software constants or as additional program space.                            See Figure 1.6 for the

MCU system memory map.

                                  Figure 1.6.          On-Board Memory Map

                                  PROGRAM MEMORY                        DATA MEMORY

                          0x807F                               INTERNAL DATA ADDRESS SPACE

                          0x8000  128 Byte ISP FLASH   0xFF

                                                               Upper 128 RAM                Special Function

                          0x7FFF  RESERVED                     (Indirect Addressing         Register's

                          0x7E00                       0x80      Only)                      (Direct Addressing Only)

                          0x7DFF                       0x7F

                                                               (Direct and Indirect

                                                               Addressing)                  Lower 128 RAM

                                  FLASH                0x30                                 (Direct and Indirect

                                                       0x2F    Bit Addressable              Addressing)

                                  (In-System           0x20

                                  Programmable in 512  0x1F    General Purpose

                                  Byte Sectors)        0x00    Registers

                          0x0000                               EXTERNAL DATA ADDRESS SPACE

                                                       0xFFFF  (same 2048 byte RAM block )

                                                       0xF800

                                                       0x17FF                               The same 2048 byte RAM

                                                       0x1000  (same 2048 byte RAM block )  block can be addressed on

                                                                                            2k boundaries throughout

                                                       0x0FFF                               the 64k External Data

                                                       0x0800  (same 2048 byte RAM block )  Memory space.

                                                       0x07FF  RAM - 2048 Bytes

                                                               (accessable using MOVX

                                                       0x0000  instruction)

                                                       Rev. 1.7                                                                      14
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

1.3.       JTAG Debug and Boundary Scan

The C8051F000 family has on-chip JTAG and debug circuitry that provide non-intrusive, full speed, in-circuit

debug using the production part installed in the end application using the four-pin JTAG I/F.                              The JTAG port is

fully compliant to IEEE 1149.1, providing full boundary scan for test and manufacturing purposes.

Silicon  Labs’   debug  system      supports  inspection              and      modification      of      memory  and  registers,  breakpoints,

watchpoints,  a  stack  monitor,    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 ADC) are stalled when the MCU is halted, during single

stepping, or at a breakpoint in order to keep them in sync.

The   C8051F000DK,      C8051F005DK,     C8051F010DK,                   and      C8051F015DK             are  development  kits   with  all   the

hardware and software necessary to develop application code and perform in-circuit debug with the C8051F000/1/2,

F005/6/7, F010/1/2, and F015/6/7 MCUs respectively.                        The kit includes software with a developer’s studio and

debugger, an integrated 8051 assembler, and an RS-232 to JTAG protocol translator module referred to as the EC.

It also has a target application board with the associated MCU installed and a large prototyping area, plus the RS-

232   and  JTAG   cables,      and  wall-mount   power                  supply.             The  Development     Kit  requires    a  Windows

95/98/NT/2000/XP computer with one available RS-232 serial port.                            As shown in Figure 1.7, the PC is connected

via RS-232 to the EC.   A six-inch ribbon cable connects the EC to the user’s application board, picking up the four

JTAG pins and VDD and GND.          The EC takes its power from the application board.                           It requires roughly 20mA at

2.7-3.6V.  For applications where there is not sufficient power available from the target board, the provided power

supply can be connected directly to the EC.

This is a vastly superior configuration for developing and debugging embedded applications compared to standard

MCU Emulators, which use on-board “ICE Chips” and target cables and require the MCU in the application board

to be socketed.  Silicon Labs’ debug environment both increases ease of use and preserves the performance of the

precision analog peripherals.

                                  Figure 1.7. Debug Environment                                  Diagram

                                                                   Silicon Labs Integrated

                                                                   Development Environment

                                    WINDOWS 95/98/NT/2000/XP

                                                              RS-232

                                                                                 EC

                                                 JTAG (x4), VDD, GND

                                                              VDD  GND         TARGET PCB

                                                                        C8051

                                                                        F005

15                                                            Rev. 1.7
                                                                                                                              C8051F000/1/2/5/6/7

                                                                                                                              C8051F010/1/2/5/6/7

1.4.  Programmable Digital I/O and Crossbar

The standard 8051 Ports (0, 1, 2, and 3) are available on the MCUs.                                                           All four ports are pinned out on the

F000/05/10/15.      Ports  0  and                         1   are     pinned   out   on  the  F001/06/11/16,                  and  only      Port  0   is  pinned  out  on  the

F002/07/12/17.      The Ports not pinned out are still available for software use as general purpose registers.                                                    The Port

I/O behave like the standard 8051 with a few enhancements.

Each Port I/O pin can be configured as either a push-pull or open-drain output. Also, the “weak pull-ups” which are

normally fixed on an 8051 can be globally disabled, providing additional power saving capabilities for low power

applications.

Perhaps the most unique enhancement is the Digital Crossbar.                                             This is essentially a large digital switching network

that allows mapping of internal digital system resources to Port I/O pins on P0, P1, and P2.                                                               (See Figure 1.8.)

Unlike microcontrollers with standard multiplexed digital I/O, all combinations of functions are supported.

The on-board counter/timers, serial buses, HW interrupts, ADC Start of Conversion input, 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 his particular application.

                                                             Figure            1.8.  Digital Crossbar Diagram

                           Highest                        SMBus       2                  XBR0, XBR1,     PRT0CF, PRT1CF,

                           Priority                                                      XBR2 Registers     PRT2CF Registers

                                                             SPI      4

                                                                                                                                   External

                              (Internal Digital Signals)              2                                                            Pins

                                                          UART                           Priority

                                                                      6                  Decoder

                                                          PCA                                               P0                     P0.0      Highest

                                                                                                         8  I/O                              Priority

                                                          Comptr.     2                                     Cells                  P0.7

                                                          Outputs                        Digital

                                                          T0, T1,     6                  Crossbar

                                                             T2                                             P1                     P1.0

                                                                                                         8  I/O

                           Lowest                         SYSCLK                                            Cells                  P1.7

                           Priority                       CNVSTR

                                                                   8                                     8  P2                     P2.0

                                                          P0                                                I/O                              Lowest

                                                                  (P0.0-P0.7)                               Cells                  P2.7      Priority

                                                                   8

                                                          P1      (P1.0-P1.7)

                           Port                                                                             PRT3CF

                           Latches                                 8                                        Register

                                                          P2      (P2.0-P2.7)

                                                                   8                                        P3                     P3.0

                                                                                                            I/O

                                                          P3      (P3.0-P3.7)                               Cells                  P3.7

                                                                                     Rev. 1.7                                                                               16
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

1.5.  Programmable Counter Array

The C8051F000 MCU family has an on-board Programmable Counter/Timer Array (PCA) in addition to the four

16-bit general-purpose counter/timers.              The PCA consists of a dedicated 16-bit counter/timer timebase with 5

programmable capture/compare modules.               The timebase gets its clock from one of four sources: the system clock

divided by 12, the system clock divided by 4, Timer 0 overflow, or an External Clock Input (ECI).

Each  capture/compare  module            can   be   configured       to  operate           in  one  of    four  modes:           Edge-Triggered  Capture,

Software Timer, High Speed Output, or Pulse Width Modulator.                                   The PCA Capture/Compare Module I/O and

External Clock Input are routed to the MCU Port I/O via the Digital Crossbar.

                                               Figure 1.9.           PCA Block Diagram

                            System             /4

                            Clock

                                               /12

                                                                     16-Bit Counter/Timer

                            T0 Overflow

                            Capture/Compare         Capture/Compare  Capture/Compare           Capture/Compare  Capture/Compare

                               Module 0             Module 1             Module 2              Module 3         Module 4

                       ECI               CEX0       CEX1                       CEX2                 CEX3        CEX4

                                                              Crossbar

                                                                     Port I/O

1.6.  Serial Ports

The C8051F000 MCU Family includes a Full-Duplex UART, SPI Bus, and I2C/SMBus.                                                    Each of the serial buses is

fully implemented in hardware and makes extensive use of the CIP-51’s interrupts, thus requiring very little

intervention by the CPU. The serial buses do not “share” resources such as timers, interrupts, or Port I/O, so any or

all of the serial buses may be used together.

17                                                                   Rev. 1.7
                                                                                  C8051F000/1/2/5/6/7

                                                                                  C8051F010/1/2/5/6/7

1.7.  Analog to Digital Converter

The C8051F000/1/2/5/6/7 has an on-chip 12-bit SAR ADC with a 9-channel input multiplexer and programmable

gain amplifier.  With a maximum throughput of 100ksps, the ADC offers true 12-bit accuracy with an INL of

1LSB. The ADC in the C8051F010/1/2/5/6/7 is similar, but with 10-bit resolution.                Each ADC has a maximum

throughput of 100ksps.     Each ADC has an INL of 1LSB, offering true 12-bit accuracy with the C8051F00x, and

true 10-bit accuracy with the C8051F01x.          There is also an on-board 15ppm voltage reference, or an external

reference may be used via the VREF pin.

The ADC is under full control of the CIP-51 microcontroller via the Special Function Registers.      One input channel

is tied to an internal temperature sensor, while the other eight channels are available externally.  Each pair of the

eight external input channels can be configured as either two single-ended inputs or a single differential input.        The

system controller can also put the ADC into shutdown to save power.

A programmable gain amplifier follows the analog multiplexer.              The gain can be set in software from 0.5 to 16 in

powers of 2.  The gain stage can be especially useful when different ADC input channels have widely varied input

voltage signals, or when it is necessary to “zoom in” on a signal with a large DC offset (in differential mode, a DAC

could be used to provide the DC offset).

Conversions can be started in four ways; a software command, an overflow on Timer 2, an overflow on Timer 3, or

an external signal input.  This flexibility allows the start of conversion to be triggered by software events, external

HW signals, or convert continuously.           A completed conversion causes an interrupt, or a status bit can be polled in

software to determine the end of conversion.      The resulting 10 or 12-bit data word is latched into two SFRs upon

completion of a conversion. The data can be right or left justified in these registers under software control.

Compare registers for the ADC data can be configured to interrupt the controller when ADC data is within a

specified window.  The ADC can monitor a key voltage continuously in background mode, but not interrupt the

controller unless the converted data is within the specified window.

                                               Figure 1.10. ADC Diagram

                                                                                           VREF

                           AIN0                +                             REF

                           AIN1                -

                           AIN2                +          Programmable

                                                          Gain Amp

                           AIN3                -  9-to-1                          100ksps

                           AIN4                +  AMUX

                                                  (SE or  X  +                    SAR

                           AIN5                -  DIFF)      -

                           AIN6                +                                  ADC

                           AIN7                -

                           (not bonded out on

                           F002, F007, F012,

                           and F017

                                                  TEMP

                                                  SENSOR

                                                             Control & Data       SFR Bus

                                                                    SFR's

                                                          Rev. 1.7                                                            18
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

1.8.   Comparators and DACs

The C8051F000 MCU Family has two 12-bit DACs and two comparators on chip (the second comparator, CP1, is

not bonded out on the F002, F007, F012, and F017).  The MCU data and control interface to each comparator and

DAC is via the Special Function Registers.       The MCU can place any DAC or comparator in low power shutdown

mode.

The comparators have software programmable hysteresis.  Each comparator can generate an interrupt on its rising

edge, falling edge, or both.  The comparators’ output state can also be polled in software.  These interrupts are

capable of waking up the MCU from idle mode.     The comparator outputs can be programmed to appear on the Port

I/O pins via the Crossbar.

The DACs are voltage output mode and use the same voltage reference as the ADC.    They are especially useful as

references for the comparators or offsets for the differential inputs of the ADC.

                              Figure 1.11.       Comparator and DAC Diagram

                                      CP0

       (Port  I/O)

                                      CP1           CROSSBAR

       (Port  I/O)

              CP0+                    +

                                         CP0

              CP0-                    -

              (not bonded     out on

       F002, F007, F012, and

                              F017)

              CP1+                    +                       CP0

                                         CP1

              CP1-                    -                       CP1  SFR's

                                                                                             CIP-51

                                                                   (Data                     and

                                                                   and                       Interrupt

                                                                   Cntrl)                    Handler

                                            REF

              DAC0

                                         DAC0

                                            REF

              DAC1

                                         DAC1

19                                                  Rev. 1.7
                                                                           C8051F000/1/2/5/6/7

                                                                           C8051F010/1/2/5/6/7

2.  ABSOLUTE MAXIMUM RATINGS*

Ambient temperature under bias................................................................................................................. -55 to 125C

Storage Temperature .................................................................................................................................. -65 to 150C

Voltage on any Pin (except VDD and Port I/O) with respect to DGND ................................... -0.3V to (VDD + 0.3V)

Voltage on any Port I/O Pin or /RST with respect to DGND....................................................................-0.3V to 5.8V

Voltage on VDD with respect to DGND...................................................................................................-0.3V to 4.2V

Maximum Total current through VDD, AV+, DGND and AGND ..................................................................... 800mA

Maximum output current sunk by any Port pin ................................................................................................... 100mA

Maximum output current sunk by any other I/O pin ............................................................................................. 25mA

Maximum output current sourced by any Port pin .............................................................................................. 100mA

Maximum output current sourced by any other I/O pin ........................................................................................ 25mA

*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.

3.  GLOBAL DC ELECTRICAL CHARACTERISTICS

-40C to +85C unless otherwise specified.

    PARAMETER                                    CONDITIONS                MIN     TYP   MAX  UNITS

Analog Supply Voltage        (Note 1)                                      2.7     3.0   3.6  V

Analog Supply Current        Internal REF, ADC, DAC, Comparators                   1     2    mA

                             all active

Analog Supply Current with   Internal REF, ADC, DAC, Comparators                   5     20   A

analog sub-systems inactive  all disabled, oscillator disabled

Analog-to-Digital Supply                                                                 0.5  V

Delta ( | VDD – AV+ | )

Digital Supply Voltage                                                     2.7     3.0   3.6                                               V

Digital Supply Current with  VDD = 2.7V, Clock=25MHz                               12.5       mA

CPU active                   VDD = 2.7V, Clock=1MHz                                0.5        mA

                             VDD = 2.7V, Clock=32kHz                               10         A

Digital Supply Current       Oscillator not running                                5          A

(shutdown)

Digital Supply RAM Data                                                            1.5        V

Retention Voltage

Specified Operating                                                        -40           +85  C

Temperature Range

SYSCLK (System Clock         C8051F005/6/7, C8051F015/6/7                      0         25   MHz

Frequency)                   (Note 2)

SYSCLK (System Clock         C8051F000/1/2, C8051F010/1/2                      0         20   MHz

Frequency)                   (Note 2)

Tsysl (SYSCLK Low Time)                                                        18             ns

Tsysh (SYSCLK High Time)                                                       18             ns

Note 1: Analog Supply AV+ must be greater than 1V for VDD monitor to operate.

Note 2: SYSCLK must be at least 32 kHz to enable debugging.

                                                 Rev. 1.7                                                                                                            20
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

4.   PINOUT AND PACKAGE DEFINITIONS

                                     Table 4.1. Pin Definitions

          Pin   Numbers

    Name  F000  F001  F002     Type  Description

          F005  F006  F007

          F010  F011  F012

          F015  F016  F017

VDD       31,   23,   18,            Digital Voltage Supply.

          40,   32    20

          62

DGND      30,   22,   17,            Digital Ground.

          41,   33,   21

          61    27,

                19

AV+       16,   13,   9,             Positive Analog Voltage Supply.

          17    43    29

AGND      5,    44,   8,             Analog Ground.

          15    12    30

TCK       22    18    14    D  In    JTAG Test Clock with internal pull-up.

TMS       21    17    13    D  In    JTAG Test-Mode Select with internal pull-up.

TDI       28    20    15    D  In    JTAG Test Data Input with internal pull-up. TDI is latched on a rising edge of

                                     TCK.

TDO       29    21    16    D  Out   JTAG Test Data Output with internal pull-up. Data is shifted out on TDO on

                                     the falling edge of TCK. TDO output is a tri-state driver.

XTAL1     18    14    10    A  In    Crystal Input. This pin is the return for the internal oscillator circuit for a

                                     crystal or ceramic resonator. For a precision internal clock, connect a crystal

                                     or ceramic resonator from XTAL1 to XTAL2. If overdriven by an external

                                     CMOS clock, this becomes the system clock.

XTAL2     19    15    11    A  Out   Crystal Output.  This pin is the excitation driver for a crystal or ceramic

                                     resonator.

/RST      20    16    12    D  I/O   Chip Reset. Open-drain output of internal Voltage Supply monitor. Is driven

                                     low when VDD is < 2.7V. An external source can force a system reset by

                                     driving this pin low.

VREF      6     3     3     A  I/O   Voltage Reference.     When configured as an input, this pin is the voltage

                                     reference for the MCU. Otherwise, the internal reference drives this pin.

CP0+      4     2     2     A  In    Comparator 0 Non-Inverting Input.

CP0-      3     1     1     A  In    Comparator 0 Inverting Input.

CP1+      2     45          A  In    Comparator 1 Non-Inverting Input.

CP1-      1     46          A  In    Comparator 1 Inverting Input.

DAC0      64    48    32    A  Out   Digital to Analog Converter Output 0. The DAC0 voltage output. (See

                                     Section 7 DAC Specification for complete description).

DAC1      63    47    31    A  Out   Digital to Analog Converter Output 1. The DAC1 voltage output. (See

                                     Section 7 DAC Specification for complete description).

AIN0      7     4     4     A  In    Analog Mux Channel Input 0. (See ADC Specification for complete

                                     description).

AIN1      8     5     5     A  In    Analog Mux Channel Input 1. (See ADC Specification for complete

                                     description).

AIN2      9     6     6     A  In    Analog Mux Channel Input 2. (See ADC Specification for complete

                                     description).

AIN3      10    7     7     A  In    Analog Mux Channel Input 3. (See ADC Specification for complete

                                     description).

AIN4      11    8           A  In    Analog Mux Channel Input 4. (See ADC Specification for complete

                                     description).

AIN5      12    9           A  In    Analog Mux Channel Input 5. (See ADC Specification for complete

                                     description).

21                                               Rev. 1.7
                                                C8051F000/1/2/5/6/7

                                                C8051F010/1/2/5/6/7

      Pin   Numbers

Name  F000  F001  F002     Type  Description

      F005  F006  F007

      F010  F011  F012

      F015  F016  F017

AIN6  13    10          A  In    Analog Mux Channel Input 6. (See ADC Specification for complete

                                 description).

AIN7  14    11          A  In    Analog Mux Channel Input 7. (See ADC Specification for complete

                                 description).

P0.0  39    31    19    D  I/O   Port0 Bit0.    (See the Port I/O Sub-System section for complete description).

P0.1  42    34    22    D  I/O   Port0 Bit1.    (See the Port I/O Sub-System section for complete description).

P0.2  47    35    23    D  I/O   Port0 Bit2.    (See the Port I/O Sub-System section for complete description).

P0.3  48    36    24    D  I/O   Port0 Bit3.    (See the Port I/O Sub-System section for complete description).

P0.4  49    37    25    D  I/O   Port0 Bit4.    (See the Port I/O Sub-System section for complete description).

P0.5  50    38    26    D  I/O   Port0 Bit5.    (See the Port I/O Sub-System section for complete description).

P0.6  55    39    27    D  I/O   Port0 Bit6.    (See the Port I/O Sub-System section for complete description).

P0.7  56    40    28    D  I/O   Port0 Bit7.    (See the Port I/O Sub-System section for complete description).

P1.0  38    30          D  I/O   Port1 Bit0.    (See the Port I/O Sub-System section for complete description).

P1.1  37    29          D  I/O   Port1 Bit1.    (See the Port I/O Sub-System section for complete description).

P1.2  36    28          D  I/O   Port1 Bit2.    (See the Port I/O Sub-System section for complete description).

P1.3  35    26          D  I/O   Port1 Bit3.    (See the Port I/O Sub-System section for complete description).

P1.4  34    25          D  I/O   Port1 Bit4.    (See the Port I/O Sub-System section for complete description).

P1.5  32    24          D  I/O   Port1 Bit5.    (See the Port I/O Sub-System section for complete description).

P1.6  60    42          D  I/O   Port1 Bit6.    (See the Port I/O Sub-System section for complete description).

P1.7  59    41          D  I/O   Port1 Bit7.    (See the Port I/O Sub-System section for complete description).

P2.0  33                D  I/O   Port2 Bit0.    (See the Port I/O Sub-System section for complete description).

P2.1  27                D  I/O   Port2 Bit1.    (See the Port I/O Sub-System section for complete description).

P2.2  54                D  I/O   Port2 Bit2.    (See the Port I/O Sub-System section for complete description).

P2.3  53                D  I/O   Port2 Bit3.    (See the Port I/O Sub-System section for complete description).

P2.4  52                D  I/O   Port2 Bit4.    (See the Port I/O Sub-System section for complete description).

P2.5  51                D  I/O   Port2 Bit5.    (See the Port I/O Sub-System section for complete description).

P2.6  44                D  I/O   Port2 Bit6.    (See the Port I/O Sub-System section for complete description).

P2.7  43                D  I/O   Port2 Bit7.    (See the Port I/O Sub-System section for complete description).

P3.0  26                D  I/O   Port3 Bit0.    (See the Port I/O Sub-System section for complete description).

P3.1  25                D  I/O   Port3 Bit1.    (See the Port I/O Sub-System section for complete description).

P3.2  24                D  I/O   Port3 Bit2.    (See the Port I/O Sub-System section for complete description).

P3.3  23                D  I/O   Port3 Bit3.    (See the Port I/O Sub-System section for complete description).

P3.4  58                D  I/O   Port3 Bit4.    (See the Port I/O Sub-System section for complete description).

P3.5  57                D  I/O   Port3 Bit5.    (See the Port I/O Sub-System section for complete description).

P3.6  46                D  I/O   Port3 Bit6.    (See the Port I/O Sub-System section for complete description).

P3.7  45                D  I/O   Port3 Bit7.    (See the Port I/O Sub-System section for complete description).

                                 Rev. 1.7                                                                        22
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                 Figure            4.1.           TQFP-64 Pinout Diagram

                 DAC  0DAC  1VD    D      DGND  P1.6  P1.7  P3.4  P3.5  P0.7  P0.6  P2.2  P2.3  P2.4  P2.5  P0.5  P0.4

                      64    63     62     61    60    59    58    57    56    55    54    53    52    51    50    49

    CP1-     1                                                                                                          48  P0.3

    CP1+     2                                                                                                          47  P0.2

    CP0-     3                                                                                                          46  P3.6

    CP0+     4                                                                                                          45  P3.7

    AVGRNED  5                                                                                                          44  P2.6

    F        6                                    C8051F000                                                             43  P2.7

    AIN0     7                                    C8051F005                                                             42  P0.1

    AIN1     8                                                                                                          41  VDDGND

    AIN2     9                                    C8051F010                                                             40  D

    AIN3     10                                                                                                         39  P0.0

    AIN4     11                                   C8051F015                                                             38  P1.0

    AIN5     12                                                                                                         37  P1.1

    AIN6     13                                                                                                         36  P1.2

    AIN7     14                                                                                                         35  P1.3

    AGND     15                                                                                                         34  P1.4

    AV+      16                                                                                                         33  P2.0

                      17    18     19     20      21  22    23    24    25    26    27    28    29    30      31  32

                      AV+   XTAL1  XTAL2  /TRMST  S   TCK   P3.3  P3.2  P3.1  P3.0  P2.1  TDI   TDO   DGVNDD  D   P1.5

23                                                          Rev. 1.7
                                      C8051F000/1/2/5/6/7

                                      C8051F010/1/2/5/6/7

               Figure 4.2.  TQFP-64 Package Drawing

                  D

                  D1

                                                         MIN   NOM

                                                         (mm)  (mm)   (

                                                     A   -     -

                                                     A1  0.05  -

                                      E1             A2  0.95  -

                                          E

                                                     b   0.17  0.22

                                                     D   -     12.00

64

PIN 1                                                D1  -     10.00

DESIGNATOR                                           e   -     0.50

            1

    A2         e                                     E         12 00

                            Rev. 1.7                                 24
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                    Figure 4.3. TQFP-48 Pinout Diagram

              DAC0  DAC1   CP1-   CP1+  AGND  AV+  P1.6  P1.7  P0.7  P0.6  P0.5  P0.4

              48    47     46     45    44    43   42    41    40    39    38    37

    CP0-  1                                                                            36  P0.3

    CP0+  2                                                                            35  P0.2

    VREF  3                                                                            34  P0.1

    AIN0  4                       C8051F001                                            33  DGND

    AIN1  5                                                                            32  VDD

    AIN2  6                       C8051F006                                            31  P0.0

    AIN3  7                       C8051F011                                            30  P1.0

    AIN4  8                       C8051F016                                            29  P1.1

    AIN5  9                                                                            28  P1.2

    AIN6  10                                                                           27  DGND

    AIN7  11                                                                           26  P1.3

    AGND  12                                                                           25  P1.4

              13    14     15     16    17    18   19    20    21    22    23    24

              AV+   XTAL1  XTAL2  /RST  TMS   TCK  DGND  TDI   TDO   DGND  VDD   P1.5

25                                            Rev. 1.7
                                                 C8051F000/1/2/5/6/7

                                                 C8051F010/1/2/5/6/7

                  Figure  4.4.  TQFP-48 Package  Drawing

                  D                                       MIN   NOM   MAX

                  D1                                      (mm)  (mm)  (mm)

                                                 A        -     -     1.20

                                          E1  E  A1       0.05  -     0.15

                                                 A2       0.95  1.00  1.05

                                                 b        0.17  0.22  0.27

48                                               D        -     9.00  -

PIN 1                                            D1       -     7.00  -

IDENTIFIER

            1                                    e        -     0.50  -

A2             e

                                                 E        -     9.00  -

                                    A

                                                 E1       -     7.00  -

                          b     A1

                                Rev. 1.7                                    26
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

             Figure 4.5. LQFP-32 Pinout Diagram

             DAC0  DAC1   AGND   AV+   P0.7  P0.6  P0.5  P0.4

             32    31     30     29    28    27    26    25

    CP0-  1                                                    24  P0.3

    CP0+  2                                                    23  P0.2

    VREF  3               C8051F002                            22  P0.1

    AIN0  4               C8051F007                            21  DGND

    AIN1  5               C8051F012                            20  VDD

    AIN2  6               C8051F017                            19  P0.0

    AIN3  7                                                    18  VDD

    AGND  8                                                    17  DGND

             9     10     11     12    13    14    15    16

             AV+   XTAL1  XTAL2  /RST  TMS   TCK   TDI   TDO

27                               Rev. 1.7
                                                C8051F000/1/2/5/6/7

                                                C8051F010/1/2/5/6/7

                  Figure 4.6.  LQFP-32 Package Drawing

                  D

                  D1                                        MIN   NOM   MAX

                                                            (mm)  (mm)  (mm)

                                                        A   -     -     1.60

                                                        A1  0.05  -     0.15

                                         E1  E          A2  1.35  1.40  1.45

                                                        b   0.30  0.37  0.45

32                                                      D   -     9.00  -

PIN 1                                                   D1  -     7.00  -

IDENTIFIER     1

A2                                                      e   -     0.80  -

                                  A                     E   -     9.00  -

                               A1                       E1  -     7.00  -

            b                  e

                               Rev. 1.7                                       28
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

5.      ADC (12-Bit, C8051F000/1/2/5/6/7 Only)

The     ADC  subsystem   for              the               C8051F000/1/2/5/6/7                                  consists                of      a      9-channel,                                     configurable                         analog   multiplexer

(AMUX), a programmable gain amplifier (PGA), and a 100ksps, 12-bit successive-approximation-register ADC

with integrated track-and-hold and programmable window detector (see block diagram in Figure 5.1).                                                                                                                                                   The AMUX,

PGA, Data Conversion Modes, and Window Detector are all configurable under software control via the Special

Function Register’s shown in Figure 5.1.                                 The ADC subsystem (ADC, track-and-hold and PGA) is enabled only

when the ADCEN bit in the ADC Control register (ADC0CN, Figure 5.7) is set to 1. The ADC subsystem is in low

power shutdown when this bit is 0.                               The Bias Enable bit (BIASE) in the REF0CN register (see Figure 9.2) must be

set to 1 in order to supply bias to the ADC.

                                 Figure 5.1. 12-Bit ADC Functional Block Diagram

                 ADC0GTH                                         ADC0GTL                                                 ADC0LTH                                       ADC0LTL

                                                                                                                                                                                                                                            24

                                                                                                                                                                                                                                                     COMB

                                                                                                                                                                                                                                                     LOGIC

      AIN0                       +                                                                                                                  AV+                                        SYSCLK                                       12

                                                                                                                                                                                                                                                         ADWINT

      AIN1                       -                                                               ADCEN                                                                                                 REF

      AIN2                       +                                                               AV+                                                                                                                                 ADC0H

      AIN3                       -                 9-to-1                                                                                        12-Bit

      AIN4                       +                 AMUX

                                                   (SE or        X                       +                                                          SAR                                                        12

      AIN5                       -                 DIFF)                                 -

      AIN6                       +                                                                       AGND                                    ADC                                                                                 ADC0L

      AIN7                       -                                                                                                                                                                                 Conversion Start

                 TEMP

                 SENSOR                                                                                                                                                                                                                              TMR3 OV

                                                                                                                                                                                                                                                     T2 OV

                 AGND                                                                                                                                                                                                                                CNVSTR

                                                                                                                                                                                                                                                     ADBUSY(w)

                        AIN67IC  AIN45IC  AIN23IC  AIN01IC       AMXAD3  AMXAD2  AMXAD1  AMXAD0  ADCSC2  ADCSC1  ADCSC0  AMPGN2  AMPGN1  AMPGN0  ADCEN  ADCTM  ADCINT  ADBUSY  ADSTM1  ADSTM0  ADWINT  ADLJST

                 AMX0CF                                          AMX0SL                                          ADC0CF                                 ADC0CN

5.1.        Analog Multiplexer and PGA

Eight   of  the  AMUX    channels                           are  available               for     external                measurements                                          while                   the         ninth                    channel  is  internally

connected to an on-board temperature sensor (temperature transfer function is shown in Figure 5.3).                                                                                                                                                  Note that the

PGA gain is applied to the temperature sensor reading.                                                           AMUX input pairs can be programmed to operate in either

the differential or single-ended mode.                           This allows the user to select the best measurement technique for each input

channel, and even accommodates mode changes “on-the-fly”.                                                                        The AMUX defaults to all single-ended inputs upon

reset.  There are two registers associated with the AMUX: the Channel Selection register AMX0SL (Figure 5.5),

and the Configuration register AMX0CF (Figure 5.4).                                                                      The table in Figure 5.5 shows AMUX functionality by

channel for each possible configuration.                         The PGA amplifies the AMUX output signal by an amount determined by

the AMPGN2-0 bits in the ADC Configuration register, ADC0CF (Figure 5.6).                                                                                                                                      The PGA can be software-

programmed for gains of 0.5, 1, 2, 4, 8 or 16. It defaults to unity gain on reset.

29                                                                                               Rev. 1.7
                                                                                                                           C8051F000/1/2/5/6/7

                                                                                                                           C8051F010/1/2/5/6/7

5.2.    ADC Modes of Operation

The ADC uses VREF to determine its full-scale voltage, thus the reference must be properly configured before

performing a conversion (see Section 9).                       The ADC has a maximum conversion speed of 100ksps.                                                   The ADC

conversion clock is derived from the system clock.                             Conversion clock speed can be reduced by a factor of 2, 4, 8 or

16 via the ADCSC bits in the ADC0CF Register.                                     This is useful to adjust conversion speed to accommodate

different system clock speeds.

A conversion can be initiated in one of four ways, depending on the programmed states                                                                      of  the  ADC  Start  of

Conversion Mode bits (ADSTM1, ADSTM0) in ADC0CN. Conversions may be initiated by:

        1.  Writing a 1 to the ADBUSY bit of ADC0CN;

        2.  A Timer 3 overflow (i.e. timed continuous conversions);

        3.  A rising edge detected on the external ADC convert start signal, CNVSTR;

        4.  A Timer 2 overflow (i.e. timed continuous conversions).

Writing a 1 to ADBUSY provides software control of the ADC whereby conversions are performed “on-demand”.

During conversion, the ADBUSY bit is set to 1 and restored to 0 when conversion is complete.                                                                   The falling edge of

ADBUSY triggers an interrupt (when enabled) and sets the ADCINT interrupt flag.                                                            Note: When conversions are

performed   “on-demand”,        the   ADCINT                      flag,        not   ADBUSY,                   should          be      polled     to     determine  when        the

conversion has completed. Converted data is available in the ADC data word MSB and LSB registers, ADC0H,

ADC0L.  Converted data can be either left or right justified in the ADC0H:ADC0L register pair (see example in

Figure 5.9) depending on the programmed state of the ADLJST bit in the ADC0CN register.

The ADCTM bit in register ADC0CN controls the ADC track-and-hold mode.                                                                 In its default state, the ADC input is

continuously tracked, except when a conversion is in progress.                                           Setting ADCTM to 1 allows one of four different

low power track-and-hold modes to be specified by states of the ADSTM1-0 bits (also in ADC0CN):

        1.  Tracking begins with a write of 1 to ADBUSY and lasts for 3 SAR clocks;

        2.  Tracking starts with an overflow of Timer 3 and lasts for 3 SAR clocks;

        3.  Tracking is active only when the CNVSTR input is low;

        4.  Tracking starts with an overflow of Timer 2 and lasts for 3 SAR clocks.

Modes 1, 2 and 4 (above) are useful when the start of conversion is triggered with a software command or when the

ADC is operated continuously.         Mode 3 is used when the start of conversion is triggered by external hardware.                                                            In

this case, the track-and-hold is in its low power mode at times when the CNVSTR input is high.                                                                 Tracking can also

be disabled (shutdown) when the entire chip is in low power standby or sleep modes.

            Figure 5.2. 12-Bit ADC Track and Conversion Example Timing

                                      A.  ADC      Timing             for External         Trigger Source

                          CNVSTR

            (ADSTM[1:0]=10)

                                                                            1  2  3  4  5     6   7   8    9   10  11  12  13  14  15  16

            SAR Clocks

            ADCTM=1                       Low Power or            Track                               Convert                              Low Power Mode

                                          Convert

            ADCTM=0                       Track Or Convert                                            Convert                                     Track

                                      B.  ADC Timing                  for Internal Trigger Sources

            Timer2, Timer3 Overflow;

            Write 1 to ADBUSY

            (ADSTM[1:0]=00, 01, 11)                         1  2  3      4  5  6  7  8  9     10  11  12   13  14  15  16  17  18  19

            SAR Clocks

            ADCTM=1                       Low Power or         Track                              Convert                                  Low Power Mode

                                          Convert

                                                            1  2  3      4  5  6  7  8  9     10  11  12   13  14  15  16

            SAR Clocks

            ADCTM=0                       Track or Convert                           Convert                                               Track

                                                                               Rev. 1.7                                                                                         30
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                   Figure 5.3. Temperature          Sensor Transfer Function

          (Volts)

          1.000

          0.900

          0.800

                                                    VTEMP =              0.00286(TEMPC)    +  0.776

          0.700

                                                                         for PGA Gain = 1

          0.600

          0.500

                   -50           0                          50                 100            (Celsius)

          Figure 5.4. AMX0CF: AMUX Configuration Register (C8051F00x)

    R/W   R/W           R/W   R/W                   R/W                  R/W   R/W            R/W        Reset Value

       -  -             -     -     AIN67IC                      AIN45IC       AIN23IC        AIN01IC    00000000

    Bit7  Bit6          Bit5  Bit4                  Bit3                 Bit2  Bit1           Bit0       SFR Address:

                                                                                                         0xBA

Bits7-4:  UNUSED. Read = 0000b; Write = don’t care

Bit3:     AIN67IC: AIN6, AIN7 Input Pair Configuration Bit

          0: AIN6 and AIN7 are independent singled-ended inputs

          1: AIN6, AIN7 are (respectively) +, - differential input pair

Bit2:     AIN45IC: AIN4, AIN5 Input Pair Configuration Bit

          0: AIN4 and AIN5 are independent singled-ended inputs

          1: AIN4, AIN5 are (respectively) +, - differential input pair

Bit1:     AIN23IC: AIN2, AIN3 Input Pair Configuration Bit

          0: AIN2 and AIN3 are independent singled-ended inputs

          1: AIN2, AIN3 are (respectively) +, - differential input pair

Bit0:     AIN01IC: AIN0, AIN1 Input Pair Configuration Bit

          0: AIN0 and AIN1 are independent singled-ended inputs

          1: AIN0, AIN1 are (respectively) +, - differential input pair

NOTE: The ADC Data Word is in 2’s complement format for channels configured as differential.

31                                  Rev. 1.7
                                                                         C8051F000/1/2/5/6/7

                                                                         C8051F010/1/2/5/6/7

          Figure 5.5. AMX0SL: AMUX Channel                      Select Register (C8051F00x)

R/W             R/W         R/W        R/W          R/W            R/W     R/W            R/W         Reset Value

-               -           -           -    AMXAD3                AMXAD2  AMXAD1   AMXAD0            00000000

Bit7            Bit6        Bit5       Bit4         Bit3           Bit2    Bit1           Bit0        SFR Address:

                                                                                                      0xBB

Bits7-4:  UNUSED. Read = 0000b; Write = don’t care

Bits3-0:  AMXAD3-0: AMUX Address Bits

          0000-1111: ADC Inputs selected per chart below

                                                    AMXAD3-0

                   0000     0001  0010       0011         0100     0101    0110     0111        1xxx

A         0000        AIN0  AIN1  AIN2       AIN3         AIN4     AIN5    AIN6     AIN7        TEMP

M                                                                                         SENSOR

X         0001     +(AIN0)        AIN2       AIN3         AIN4     AIN5    AIN6     AIN7        TEMP

0                  -(AIN1)                                                                SENSOR

C         0010        AIN0  AIN1  +(AIN2)                 AIN4     AIN5    AIN6     AIN7        TEMP

F                                 -(AIN3)                                                 SENSOR

          0011     +(AIN0)        +(AIN2)                 AIN4     AIN5    AIN6     AIN7        TEMP

B                  -(AIN1)        -(AIN3)                                                 SENSOR

I                                                         +(AIN4)                               TEMP

T         0100        AIN0  AIN1  AIN2       AIN3         -(AIN5)          AIN6     AIN7  SENSOR

S                  +(AIN0)                                +(AIN4)                               TEMP

          0101     -(AIN1)        AIN2       AIN3         -(AIN5)          AIN6     AIN7  SENSOR

3                                 +(AIN2)                 +(AIN4)                               TEMP

-         0110        AIN0  AIN1  -(AIN3)                 -(AIN5)          AIN6     AIN7  SENSOR

0                  +(AIN0)        +(AIN2)                 +(AIN4)                               TEMP

          0111     -(AIN1)        -(AIN3)                 -(AIN5)          AIN6     AIN7  SENSOR

          1000        AIN0  AIN1  AIN2       AIN3         AIN4     AIN5    +(AIN6)              TEMP

                                                                           -(AIN7)        SENSOR

          1001     +(AIN0)        AIN2       AIN3         AIN4     AIN5    +(AIN6)              TEMP

                   -(AIN1)                                                 -(AIN7)        SENSOR

          1010        AIN0  AIN1  +(AIN2)                 AIN4     AIN5    +(AIN6)              TEMP

                                  -(AIN3)                                  -(AIN7)        SENSOR

          1011     +(AIN0)        +(AIN2)                 AIN4     AIN5    +(AIN6)              TEMP

                   -(AIN1)        -(AIN3)                                  -(AIN7)        SENSOR

          1100        AIN0  AIN1  AIN2       AIN3         +(AIN4)          +(AIN6)              TEMP

                                                          -(AIN5)          -(AIN7)        SENSOR

          1101     +(AIN0)        AIN2       AIN3         +(AIN4)          +(AIN6)              TEMP

                   -(AIN1)                                -(AIN5)          -(AIN7)        SENSOR

          1110        AIN0  AIN1  +(AIN2)                 +(AIN4)          +(AIN6)              TEMP

                                  -(AIN3)                 -(AIN5)          -(AIN7)        SENSOR

          1111     +(AIN0)        +(AIN2)                 +(AIN4)          +(AIN6)              TEMP

                   -(AIN1)        -(AIN3)                 -(AIN5)          -(AIN7)        SENSOR

                                             Rev. 1.7                                                              32
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

            Figure 5.6. ADC0CF: ADC Configuration Register (C8051F00x)

    R/W     R/W            R/W     R/W                 R/W   R/W     R/W     R/W     Reset Value

    ADCSC2  ADCSC1         ADCSC0  -                   -     AMPGN2  AMPGN1  AMPGN0  01100000

    Bit7    Bit6           Bit5    Bit4                Bit3  Bit2    Bit1    Bit0    SFR Address:

                                                                                     0xBC

Bits7-5:  ADCSC2-0: ADC SAR Conversion Clock Period Bits

          000: SAR Conversion Clock = 1 System Clock

          001: SAR Conversion Clock = 2 System Clocks

          010: SAR Conversion Clock = 4 System Clocks

          011: SAR Conversion Clock = 8 System Clocks

          1xx: SAR Conversion Clock = 16 Systems Clocks

          (Note: the SAR Conversion Clock should be  2MHz)

Bits4-3:  UNUSED. Read = 00b; Write = don’t care

Bits2-0:  AMPGN2-0: ADC Internal Amplifier Gain

          000: Gain = 1

          001: Gain = 2

          010: Gain = 4

          011: Gain = 8

          10x: Gain = 16

          11x: Gain = 0.5

33                                                Rev. 1.7
                                                                         C8051F000/1/2/5/6/7

                                                                         C8051F010/1/2/5/6/7

                 Figure 5.7. ADC0CN: ADC Control Register (C8051F00x)

R/W              R/W    R/W              R/W          R/W         R/W     R/W                    R/W               Reset Value

ADCEN            ADCTM  ADCINT           ADBUSY   ADSTM1          ADSTM0  ADWINT                ADLJST             00000000

Bit7             Bit6   Bit5             Bit4         Bit3        Bit2    Bit1                   Bit0              SFR Address:

                                                                                                (bit addressable)  0xE8

Bit7:     ADCEN: ADC Enable Bit

          0: ADC Disabled. ADC is in low power shutdown.

          1: ADC Enabled. ADC is active and ready for data conversions.

Bit6:     ADCTM: ADC Track Mode Bit

          0: When the ADC is enabled, tracking is always done unless a conversion is in process

          1: Tracking Defined by ADSTM1-0 bits

                 ADSTM1-0:

                 00: Tracking starts with the write of 1 to ADBUSY and lasts for 3 SAR clocks

                 01: Tracking started by the overflow of Timer 3 and last for 3 SAR clocks

                 10: ADC tracks only when CNVSTR input is logic low

                 11: Tracking started by the overflow of Timer 2 and last for 3 SAR clocks

Bit5:     ADCINT: ADC Conversion Complete Interrupt Flag

          (Must be cleared by software)

          0: ADC has not completed a data conversion since the last time this flag was cleared

          1: ADC has completed a data conversion

Bit4:     ADBUSY: ADC Busy Bit

          Read

          0: ADC Conversion complete or no valid data has been converted since a reset. The falling

          edge of ADBUSY generates an interrupt when enabled.

          1: ADC Busy converting data

          Write

          0: No effect

          1: Starts ADC Conversion if ADSTM1-0 = 00b

Bits3-2:  ADSTM1-0: ADC Start of Conversion Mode Bits

          00: ADC conversion started upon every write of 1 to ADBUSY

          01: ADC conversions taken on every overflow of Timer 3

          10: ADC conversion started upon every rising edge of CNVSTR

          11: ADC conversions taken on every overflow of Timer 2

Bit1:     ADWINT: ADC Window Compare Interrupt Flag

          (Must be cleared by software)

          0: ADC Window Comparison Data match has not occurred

          1: ADC Window Comparison Data match occurred

Bit0:     ADLJST: ADC Left Justify Data Bit

          0: Data in ADC0H:ADC0L Registers is right justified

          1: Data in ADC0H:ADC0L Registers is left justified

                                                  Rev. 1.7                                                                       34
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

             Figure 5.8.     ADC0H:      ADC Data Word MSB Register (C8051F00x)

    R/W            R/W         R/W           R/W        R/W     R/W        R/W        R/W               Reset Value

                                                                                                        00000000

    Bit7           Bit6        Bit5          Bit4       Bit3         Bit2  Bit1       Bit0              SFR Address:

                                                                                                        0xBF

Bits7-0: ADC Data Word Bits

          For ADLJST = 1: Upper 8-bits of the 12-bit ADC Data Word.

          For ADLJST = 0: Bits7-4 are the sign extension of Bit3. Bits 3-0 are the upper 4-bits of the

          12-bit ADC Data Word.

                Figure 5.9. ADC0L: ADC Data             Word LSB Register (C8051F00x)

    R/W            R/W         R/W           R/W        R/W     R/W        R/W        R/W               Reset Value

                                                                                                        00000000

    Bit7           Bit6        Bit5          Bit4       Bit3         Bit2  Bit1       Bit0              SFR Address:

                                                                                                        0xBE

Bits7-0:  ADC Data Word Bits

          For ADLJST = 1: Bits7-4 are the lower 4-bits  of the 12-bit ADC Data Word.  Bits3-0 will

          always read 0.

          For ADLJST = 0: Bits7-0 are the lower 8-bits  of the 12-bit ADC Data Word.

    NOTE: Resulting 12-bit ADC Data Word appears in the ADC Data Word Registers as follows:

    ADC0H[3:0]:ADC0L[7:0], if ADLJST = 0

                   (ADC0H[7:4] will be sign extension of ADC0H.3 if a differential reading, otherwise = 0000b)

    ADC0H[7:0]:ADC0L[7:4], if ADLJST = 1

                   (ADC0L[3:0] = 0000b)

    EXAMPLE: ADC Data Word Conversion Map, AIN0 Input in Single-Ended Mode

                           (AMX0CF=0x00, AMX0SL=0x00)

          AIN0 – AGND                ADC0H:ADC0L        ADC0H:ADC0L

          (Volts)                    (ADLJST = 0)       (ADLJST = 1)

          REF x (4095/4096)          0x0FFF             0xFFF0

          REF x ½                    0x0800             0x8000

          REF x (2047/4096)          0x07FF             0x7FF0

          0                          0x0000             0x0000

    EXAMPLE: ADC Data Word Conversion Map, AIN0-AIN1 Differential Input Pair

                           (AMX0CF=0x01, AMX0SL=0x00)

          AIN0 – AIN1 (Volts)        ADC0H:ADC0L        ADC0H:ADC0L

                                     (ADLJST = 0)       (ADLJST = 1)

          REF x (2047/2048)          0x07FF             0x7FF0

          0                          0x0000             0x0000

          -REF x (1/2048)            0xFFFF             0xFFF0

          -REF                       0xF800             0x8000

35                                                 Rev. 1.7
                                                                         C8051F000/1/2/5/6/7

                                                                         C8051F010/1/2/5/6/7

5.3.        ADC Programmable Window Detector

The ADC programmable window detector is very useful in many applications.  It continuously compares the ADC

output to user-programmed limits and notifies the system when an out-of-band 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 (ADWINT in ADC0CN) can also be used in polled

mode.  The high and low bytes of the reference words are loaded into the ADC Greater-Than and ADC Less-Than

registers (ADC0GTH, ADC0GTL, ADC0LTH, and ADC0LTL).                Figure 5.14 and Figure 5.15 show example

comparisons for reference.  Notice that the window detector flag can be asserted when the measured data is inside

or outside the user-programmed limits, depending on the programming of the ADC0GTx and ADC0LTx registers.

Figure 5.10. ADC0GTH: ADC Greater-Than Data High Byte Register (C8051F00x)

      R/W    R/W            R/W   R/W             R/W              R/W           R/W       R/W       Reset Value

                                                                                                     11111111

      Bit7   Bit6           Bit5  Bit4            Bit3             Bit2          Bit1      Bit0      SFR Address:

                                                                                                     0xC5

Bits7-0:

The high byte of the ADC Greater-Than Data Word.

      Figure 5.11. ADC0GTL: ADC Greater-Than                 Data  Low     Byte  Register  (C8051F00x)

      R/W    R/W            R/W   R/W             R/W              R/W           R/W       R/W       Reset Value

                                                                                                     11111111

      Bit7   Bit6           Bit5  Bit4            Bit3             Bit2          Bit1      Bit0      SFR Address:

                                                                                                     0xC4

Bits7-0:

The low byte of the ADC Greater-Than Data Word.

Definition:

ADC Greater-Than Data Word = ADC0GTH:ADC0GTL

       Figure 5.12. ADC0LTH: ADC Less-Than Data High Byte Register (C8051F00x)

      R/W    R/W            R/W   R/W             R/W              R/W           R/W       R/W       Reset Value

                                                                                                     00000000

      Bit7   Bit6           Bit5  Bit4            Bit3             Bit2          Bit1      Bit0      SFR Address:

                                                                                                     0xC7

Bits7-0:

The high byte of the ADC Less-Than Data Word.

       Figure 5.13. ADC0LTL: ADC Less-Than Data Low Byte Register (C8051F00x)

      R/W    R/W            R/W   R/W             R/W              R/W           R/W       R/W       Reset Value

                                                                                                     00000000

      Bit7   Bit6           Bit5  Bit4            Bit3             Bit2          Bit1      Bit0      SFR Address:

                                                                                                     0xC6

Bits7-0:

These bits are the low byte of the ADC Less-Than Data Word.

Definition:

ADC Less-Than Data Word = ADC0LTH:ADC0LTL

                                                  Rev. 1.7                                                         36
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

          Figure 5.14. 12-Bit ADC Window Interrupt Examples, Right Justified Data

    Input Voltage             ADC Data                                   Input Voltage          ADC Data

    (AD0 - AGND)              Word                                       (AD0 - AGND)           Word

    REF x (4095/4096)         0x0FFF                                     REF x (4095/4096)      0x0FFF

                                              ADWINT                                                             ADWINT=1

                                              not affected

                              0x0201                                                            0x0201

    REF x (512/4096)          0x0200       ADC0LTH:ADC0LTL               REF x (512/4096)       0x0200       ADC0GTH:ADC0GTL

                              0x01FF                                                            0x01FF           ADWINT

                                              ADWINT=1                                                           not affected

                              0x0101                                                            0x0101

    REF x (256/4096)          0x0100       ADC0GTH:ADC0GTL               REF x (256/4096)       0x0100       ADC0LTH:ADC0LTL

                              0x00FF                                                            0x00FF

                                              ADWINT                                                             ADWINT=1

                                              not affected

             0                0x0000                                              0             0x0000

    Given:                                                               Given:

    AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 0,                            AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 0,

    ADC0LTH:ADC0LTL = 0x0200,                                            ADC0LTH:ADC0LTL = 0x0100,

    ADC0GTH:ADC0GTL = 0x0100.                                            ADC0GTH:ADC0GTL = 0x0200.

    An ADC End of Conversion will cause an ADC Window                    An ADC End of Conversion will cause an ADC Window

    Compare     Interrupt     (ADWINT=1)   if  the  resulting  ADC       Compare Interrupt (ADWINT=1) if the resulting ADC

    Data Word is < 0x0200 and > 0x0100.                                  Data Word is < 0x0100 or > 0x0200.

          Input Voltage       ADC Data                                           Input Voltage  ADC Data

            (AD0 - AD1)       Word                                               (AD0 - AD1)    Word

    REF x (2047/2048)         0x07FF                                     REF x (2047/2048)      0x07FF

                                               ADWINT                                                            ADWINT=1

                                               not affected

                              0x0101                                                            0x0101

          REF x (256/2048)    0x0100       ADC0LTH:ADC0LTL               REF x (256/2048)       0x0100       ADC0GTH:ADC0GTL

                              0x00FF                                                            0x00FF           ADWINT

                                               ADWINT=1                                                          not affected

                              0x0000                                                            0x0000

          REF x (-1/2048)     0xFFFF       ADC0GTH:ADC0GTL               REF x (-1/2048)        0xFFFF       ADC0LTH:ADC0LTL

                              0xFFFE                                                            0xFFFE

                                               ADWINT                                                            ADWINT=1

                                               not affected

             -REF             0xF800                                              -REF          0xF800

    Given:                                                               Given:

    AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 0,                            AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 0,

    ADC0LTH:ADC0LTL = 0x0100,                                            ADC0LTH:ADC0LTH = 0xFFFF,

    ADC0GTH:ADC0GTL = 0xFFFF.                                            ADC0GTH:ADC0GTL = 0x0100.

    An ADC End of Conversion will cause an ADC Window                    An ADC End of Conversion will cause an ADC Window

    Compare     Interrupt     (ADWINT=1)   if  the  resulting  ADC       Compare  Interrupt     (ADWINT=1)   if  the  resulting  ADC

    Data    Word   is      <  0x0100  and  >   0xFFFF.       (Two’s      Data Word is < 0xFFFF or > 0x0100.      (Two’s Complement

    Complement math, 0xFFFF = -1.)                                       math, 0xFFFF = -1.)

37                                                             Rev. 1.7
                                                                                  C8051F000/1/2/5/6/7

                                                                                  C8051F010/1/2/5/6/7

        Figure 5.15. 12-Bit ADC Window                   Interrupt Examples,                Left Justified Data

Input Voltage         ADC Data                                             Input Voltage    ADC Data

(AD0 - AGND)          Word                                         (AD0 - AGND)             Word

REF x (4095/4096)     0xFFF0                                       REF x (4095/4096)        0xFFF0

                                     ADWINT                                                                 ADWINT=1

                                     not affected

                      0x2010                                                                0x2010

REF x (512/4096)      0x2000    ADC0LTH:ADC0LTL                    REF x (512/4096)         0x2000      ADC0GTH:ADC0GTL

                      0x1FF0                                                                0x1FF0          ADWINT

                                     ADWINT=1                                                               not affected

                      0x1010                                                                0x1010

REF x (256/4096)      0x1000    ADC0GTH:ADC0GTL                    REF x (256/4096)         0x1000      ADC0LTH:ADC0LTL

                      0x0FF0                                                                0x0FF0

                                     ADWINT                                                                 ADWINT=1

                                     not affected

        0             0x0000                                                0               0x0000

Given:                                                             Given:

AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 1,                          AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 1,

ADC0LTH:ADC0LTL = 0x2000,                                          ADC0LTH:ADC0LTL = 0x1000,

ADC0GTH:ADC0GTL = 0x1000.                                          ADC0GTH:ADC0GTL = 0x2000.

An ADC End of Conversion will cause an ADC Window                  An ADC End of Conversion will cause an ADC Window

Compare    Interrupt  (ADWINT=1)     if  the  resulting  ADC       Compare Interrupt (ADWINT=1) if the resulting ADC

Data Word is < 0x2000 and > 0x1000.                                Data Word is < 0x1000 or > 0x2000.

Input Voltage         ADC Data                                             Input Voltage    ADC Data

      (AD0 - AD1)     Word                                                 (AD0 - AD1)      Word

REF x (2047/2048)     0x7FF0                                       REF x (2047/2048)        0x7FF0

                                         ADWINT                                                             ADWINT=1

                                         not affected

                      0x1010                                                                0x1010

REF x (256/2048)      0x1000         ADC0LTH:ADC0LTL               REF x (256/2048)         0x1000          ADC0GTH:ADC0GTL

                      0x0FF0                                                                0x0FF0          ADWINT

                                         ADWINT=1                                                           not affected

                      0x0000                                                                0x0000

REF x (-1/2048)       0xFFF0         ADC0GTH:ADC0GTL                       REF x (-1/2048)  0xFFF0          ADC0LTH:ADC0LTL

                      0xFFE0                                                                0xFFE0

                                         ADWINT                                                             ADWINT=1

                                         not affected

        -REF          0x8000                                                -REF            0x8000

Given:                                                             Given:

AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 1,                          AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 1,

ADC0LTH:ADC0LTL = 0x1000,                                          ADC0LTH:ADC0LTH = 0xFFF0,

ADC0GTH:ADC0GTL = 0xFFF0.                                          ADC0GTH:ADC0GTL = 0x1000.

An ADC End of Conversion will cause an ADC Window                  An ADC End of Conversion will cause an ADC Window

Compare    Interrupt  (ADWINT=1)     if  the  resulting  ADC       Compare  Interrupt       (ADWINT=1)  if  the  resulting  ADC

Data    Word   is  <  0x1000    and  >   0xFFF0.       (Two’s      Data Word is < 0xFFF0 or > 0x1000.       (Two’s Complement

Complement math.)                                                  math.)

                                                         Rev. 1.7                                                                38
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                           Table 5.1. 12-Bit ADC Electrical Characteristics

VDD = 3.0V, AV+ = 3.0V, VREF = 2.40V (REFBE=0), PGA Gain = 1, -40C to +85C unless  otherwise  specified.

        PARAMETER          CONDITIONS                             MIN        TYP     MAX        UNITS

DC ACCURACY

Resolution                                                                     12               bits

Integral Nonlinearity                                                                1         LSB

Differential Nonlinearity  Guaranteed Monotonic                                      1         LSB

Offset Error                                                                 -3  1             LSB

Full Scale Error           Differential mode                                 -7  3             LSB

Offset Temperature                                                            0.25             ppm/C

Coefficient

DYNAMIC PERFORMANCE (10kHz sine-wave input, 0 to –1dB of full scale, 100ksps)

Signal-to-Noise Plus                                              66           69               dB

Distortion

Total Harmonic Distortion  Up to the 5th harmonic                              -75              dB

Spurious-Free Dynamic                                                          80               dB

Range

CONVERSION RATE

Conversion Time in SAR                                            16                            clocks

Clocks

SAR Clock Frequency        C8051F000, ‘F001, ‘F002                                   2.0        MHz

                           C8051F005, ‘F006, ‘F007                                   2.5        MHz

Track/Hold Acquisition                                            1.5                           s

Time

Throughput Rate                                                                      100        ksps

ANALOG INPUTS

Voltage Conversion Range   Single-ended Mode (AINn – AGND)        0                  VREF       V

                           Differential Mode |(AINn+) – (AINm-)|                     - 1LSB

Input Voltage              Any AINn pin                           AGND               AV+        V

Input Capacitance                                                              10               pF

TEMPERATURE SENSOR

Linearity                                                                     0.20             C

Absolute Accuracy                                                              3               C

Gain                       PGA Gain = 1                                      2.86               mV/C

Gain Error (1)           PGA Gain = 1                                       33.5             V/C

Offset                     PGA Gain = 1, Temp = 0C                          776                mV

Offset Error (1)         PGA Gain = 1, Temp = 0C                           8.51             mV

POWER SPECIFICATIONS

Power Supply Current (AV+  Operating Mode, 100ksps                           450     900        A

supplied to ADC)

Power Supply Rejection                                                        0.3              mV/V

39                                            Rev. 1.7
                                                                                                                                                                       C8051F000/1/2/5/6/7

                                                                                                                                                                       C8051F010/1/2/5/6/7

6.      ADC (10-Bit, C8051F010/1/2/5/6/7 Only)

The     ADC  subsystem   for              the               C8051F010/1/2/5/6/7                                  consists        of              a  9-channel,                                         configurable                         analog  multiplexer

(AMUX), a programmable gain amplifier (PGA), and a 100ksps, 10-bit successive-approximation-register ADC

with integrated track-and-hold and programmable window detector (see block diagram in Figure 6.1).                                                                                                                                                  The AMUX,

PGA, Data Conversion Modes, and Window Detector are all configurable under software control via the Special

Function Register’s shown in Figure 6.1.                                 The ADC subsystem (ADC, track-and-hold and PGA) is enabled only

when the ADCEN bit in the ADC Control register (ADC0CN, Figure 6.7) is set to 1. The ADC subsystem is in low

power shutdown when this bit is 0.                               The Bias Enable bit (BIASE) in the REF0CN register (see Figure 9.2) must be

set to 1 in order to supply bias to the ADC.

                                 Figure 6.1. 10-Bit ADC Functional Block Diagram

                 ADC0GTH                                         ADC0GTL                                                 ADC0LTH                                       ADC0LTL

                                                                                                                                                                                                                                            20

                                                                                                                                                                                                                                                    COMB

                                                                                                                                                                                                                                                    LOGIC

      AIN0                       +                                                                                                                  AV+                                        SYSCLK                                       10

                                                                                                                                                                                                                                                        ADWINT

      AIN1                       -                                                               ADCEN                                                                                                 REF

      AIN2                       +                                                               AV+                                                                                                                                 ADC0H

      AIN3                       -                 9-to-1                                                                                           10-Bit

      AIN4                       +                 AMUX

                                                   (SE or        X                       +                                                          SAR                                                        10

      AIN5                       -                 DIFF)                                 -

      AIN6                       +                                                                       AGND                                    ADC                                                                                 ADC0L

      AIN7                       -                                                                                                                                                                                 Conversion Start

                 TEMP

                 SENSOR                                                                                                                                                                                                                             TMR3 OV

                                                                                                                                                                                                                                                        T2 OV

                 AGND                                                                                                                                                                                                                               CNVSTR

                                                                                                                                                                                                                                                    ADBUSY(w)

                        AIN67IC  AIN45IC  AIN23IC  AIN01IC       AMXAD3  AMXAD2  AMXAD1  AMXAD0  ADCSC2  ADCSC1  ADCSC0  AMPGN2  AMPGN1  AMPGN0  ADCEN  ADCTM  ADCINT  ADBUSY  ADSTM1  ADSTM0  ADWINT  ADLJST

                 AMX0CF                                          AMX0SL                                          ADC0CF                                 ADC0CN

6.1.        Analog Multiplexer and PGA

Eight   of  the  AMUX    channels                           are  available               for     external                measurements                                          while                   the         ninth             channel        is  internally

connected to an on-board temperature sensor (temperature transfer function is shown in Figure 6.3).                                                                                                                                                 Note that the

PGA gain is applied to the temperature sensor reading.                                                           AMUX input pairs can be programmed to operate in either

the differential or single-ended mode.                           This allows the user to select the best measurement technique for each input

channel, and even accommodates mode changes “on-the-fly”.                                                                        The AMUX defaults to all single-ended inputs upon

reset.  There are two registers associated with the AMUX: the Channel Selection register AMX0SL (Figure 6.5),

and the Configuration register AMX0CF (Figure 6.4).                                                                      The table in Figure 6.5 shows AMUX functionality by

channel for each possible configuration.                         The PGA amplifies the AMUX output signal by an amount determined by

the AMPGN2-0 bits in the ADC Configuration register, ADC0CF (Figure 6.6).                                                                                                                                      The PGA can be software-

programmed for gains of 0.5, 1, 2, 4, 8 or 16. It defaults to unity gain on reset.

                                                                                                 Rev. 1.7                                                                                                                                                       40
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

6.2.    ADC Modes of Operation

The ADC uses VREF to determine its full-scale voltage, thus the reference must be properly configured before

performing a conversion (see Section 9).                         The ADC has a maximum conversion speed of 100ksps.                                                     The ADC

conversion clock is derived from the system clock.                               Conversion clock speed can be reduced by a factor of 2, 4, 8 or

16 via the ADCSC bits in the ADC0CF Register.                                       This is useful to adjust conversion speed to accommodate

different system clock speeds.

A conversion can be initiated in one of four ways, depending on the programmed states                                                                        of  the  ADC  Start  of

Conversion Mode bits (ADSTM1, ADSTM0) in ADC0CN. Conversions may be initiated by:

        1.  Writing a 1 to the ADBUSY bit of ADC0CN;

        2.  A Timer 3 overflow (i.e. timed continuous conversions);

        3.  A rising edge detected on the external ADC convert start signal, CNVSTR;

        4.  A Timer 2 overflow (i.e. timed continuous conversions).

Writing a 1 to ADBUSY provides software control of the ADC whereby conversions are performed “on-demand”.

During conversion, the ADBUSY bit is set to 1 and restored to 0 when conversion is complete.                                                                     The falling edge of

ADBUSY triggers an interrupt (when enabled) and sets the ADCINT interrupt flag.                                                              Note: When conversions are

performed   “on-demand”,        the     ADCINT                      flag,        not   ADBUSY,                       should          be      polled  to      determine  when      the

conversion has completed. Converted data is available in the ADC data word MSB and LSB registers, ADC0H,

ADC0L.  Converted data can be either left or right justified in the ADC0H:ADC0L register pair (see example in

Figure 6.9) depending on the programmed state of the ADLJST bit in the ADC0CN register.

The ADCTM bit in register ADC0CN controls the ADC track-and-hold mode.                                                                   In its default state, the ADC input is

continuously tracked, except when a conversion is in progress.                                              Setting ADCTM to 1 allows one of four different

low power track-and-hold modes to be specified by states of the ADSTM1-0 bits (also in ADC0CN):

        1.  Tracking begins with a write of 1 to ADBUSY and lasts for 3 SAR clocks;

        2.  Tracking starts with an overflow of Timer 3 and lasts for 3 SAR clocks;

        3.  Tracking is active only when the CNVSTR input is low;

        4.  Tracking starts with an overflow of Timer 2 and lasts for 3 SAR clocks.

Modes 1, 2 and 4 (above) are useful when the start of conversion is triggered with a software command or when the

ADC is operated continuously.        Mode 3 is used when the start of conversion is triggered by external hardware.                                                               In

this case, the track-and-hold is in its low power mode at times when the CNVSTR input is high.                                                                   Tracking can also

be disabled (shutdown) when the entire chip is in low power standby or sleep modes.

            Figure 6.2. 10-Bit ADC Track and Conversion Example Timing

                                        A. ADC Timing for External Trigger Source

                                CNVSTR

            (ADSTM[1:0]=10)

                                                                              1  2  3  4  5     6   7   8    9   10  11  12  13  14  15  16

            SAR Clocks

                          ADCTM=1           Low Power or            Track                               Convert                              Low Power Mode

                                            Convert

                          ADCTM=0           Track Or Convert                                            Convert                                     Track

                                        B.  ADC Timing                  for Internal Trigger Sources

            Timer2, Timer3 Overflow;

            Write 1 to ADBUSY

            (ADSTM[1:0]=00, 01, 11)                           1  2  3      4  5  6  7  8  9     10  11  12   13  14  15  16  17  18  19

            SAR Clocks

                          ADCTM=1           Low Power or         Track                              Convert                                  Low Power Mode

                                            Convert

                                                              1  2  3      4  5  6  7  8  9     10  11  12   13  14  15  16

            SAR Clocks

                          ADCTM=0           Track or Convert                           Convert                                               Track

41                                                                               Rev. 1.7
                                                                               C8051F000/1/2/5/6/7

                                                                               C8051F010/1/2/5/6/7

Figure 6.3.  Temperature   Sensor  Transfer         Function

             (Volts)

             1.000

             0.900

             0.800

                                                    VTEMP =              0.00286(TEMPC) + 0.776

             0.700

                                                                         for PGA Gain = 1

             0.600

             0.500

                      -50             0                       50               100         (Celsius)

             Figure 6.4. AMX0CF: AMUX Configuration Register (C8051F01x)

R/W          R/W           R/W     R/W              R/W                  R/W   R/W               R/W   Reset Value

       -     -             -       -         AIN67IC             AIN45IC       AIN23IC     AIN01IC     00000000

Bit7         Bit6          Bit5    Bit4             Bit3                 Bit2  Bit1              Bit0  SFR Address:

                                                                                                       0xBA

Bits7-4:  UNUSED. Read = 0000b; Write = don’t care

Bit3:     AIN67IC: AIN6, AIN7 Input Pair Configuration Bit

          0: AIN6 and AIN7 are independent singled-ended inputs

          1: AIN6, AIN7 are (respectively) +, - differential input pair

Bit2:     AIN45IC: AIN4, AIN5 Input Pair Configuration Bit

          0: AIN4 and AIN5 are independent singled-ended inputs

          1: AIN4, AIN5 are (respectively) +, - differential input pair

Bit1:     AIN23IC: AIN2, AIN3 Input Pair Configuration Bit

          0: AIN2 and AIN3 are independent singled-ended inputs

          1: AIN2, AIN3 are (respectively) +, - differential input pair

Bit0:     AIN01IC: AIN0, AIN1 Input Pair Configuration Bit

          0: AIN0 and AIN1 are independent singled-ended inputs

          1: AIN0, AIN1 are (respectively) +, - differential input pair

NOTE: The ADC Data Word is in 2’s complement format for channels configured as differential.

                                         Rev. 1.7                                                                    42
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

          Figure 6.5. AMX0SL: AMUX Channel                      Select Register (C8051F01x)

    R/W         R/W         R/W        R/W          R/W            R/W     R/W            R/W         Reset Value

    -           -           -           -    AMXAD3                AMXAD2  AMXAD1   AMXAD0            00000000

    Bit7        Bit6        Bit5       Bit4         Bit3           Bit2    Bit1           Bit0        SFR Address:

                                                                                                      0xBB

Bits7-4:  UNUSED. Read = 0000b; Write = don’t care

Bits3-0:  AMXAD3-0: AMUX Address Bits

          0000-1111: ADC Inputs selected per chart below

                                                    AMXAD3-0

                   0000     0001  0010       0011         0100     0101    0110     0111        1xxx

    A     0000        AIN0  AIN1  AIN2       AIN3         AIN4     AIN5    AIN6     AIN7        TEMP

    M                                                                                     SENSOR

    X     0001     +(AIN0)        AIN2       AIN3         AIN4     AIN5    AIN6     AIN7        TEMP

    0              -(AIN1)                                                                SENSOR

    C     0010                    +(AIN2)                                                       TEMP

    F                 AIN0  AIN1  -(AIN3)                 AIN4     AIN5    AIN6     AIN7  SENSOR

    B     0011     +(AIN0)        +(AIN2)                 AIN4     AIN5    AIN6     AIN7        TEMP

                   -(AIN1)        -(AIN3)                                                 SENSOR

    I                                                     +(AIN4)                               TEMP

    T     0100        AIN0  AIN1  AIN2       AIN3         -(AIN5)          AIN6     AIN7  SENSOR

    S              +(AIN0)                                +(AIN4)                               TEMP

          0101     -(AIN1)        AIN2       AIN3         -(AIN5)          AIN6     AIN7  SENSOR

    3                             +(AIN2)                 +(AIN4)                               TEMP

    -     0110        AIN0  AIN1  -(AIN3)                 -(AIN5)          AIN6     AIN7  SENSOR

    0

          0111     +(AIN0)        +(AIN2)                 +(AIN4)          AIN6     AIN7        TEMP

                   -(AIN1)        -(AIN3)                 -(AIN5)                         SENSOR

          1000        AIN0  AIN1  AIN2       AIN3         AIN4     AIN5    +(AIN6)              TEMP

                                                                           -(AIN7)        SENSOR

          1001     +(AIN0)        AIN2       AIN3         AIN4     AIN5    +(AIN6)              TEMP

                   -(AIN1)                                                 -(AIN7)        SENSOR

          1010        AIN0  AIN1  +(AIN2)                 AIN4     AIN5    +(AIN6)              TEMP

                                  -(AIN3)                                  -(AIN7)        SENSOR

          1011     +(AIN0)        +(AIN2)                 AIN4     AIN5    +(AIN6)              TEMP

                   -(AIN1)        -(AIN3)                                  -(AIN7)        SENSOR

          1100        AIN0  AIN1  AIN2       AIN3         +(AIN4)          +(AIN6)              TEMP

                                                          -(AIN5)          -(AIN7)        SENSOR

          1101     +(AIN0)        AIN2       AIN3         +(AIN4)          +(AIN6)              TEMP

                   -(AIN1)                                -(AIN5)          -(AIN7)        SENSOR

          1110        AIN0  AIN1  +(AIN2)                 +(AIN4)          +(AIN6)              TEMP

                                  -(AIN3)                 -(AIN5)          -(AIN7)        SENSOR

          1111     +(AIN0)        +(AIN2)                 +(AIN4)          +(AIN6)              TEMP

                   -(AIN1)        -(AIN3)                 -(AIN5)          -(AIN7)        SENSOR

43                                           Rev. 1.7
                                                                   C8051F000/1/2/5/6/7

                                                                   C8051F010/1/2/5/6/7

          Figure 6.6. ADC0CF: ADC Configuration Register (C8051F01x)

R/W       R/W              R/W     R/W                 R/W   R/W     R/W     R/W     Reset Value

ADCSC2    ADCSC1           ADCSC0  -                   -     AMPGN2  AMPGN1  AMPGN0  01100000

Bit7      Bit6             Bit5    Bit4                Bit3  Bit2    Bit1    Bit0    SFR Address:

                                                                                     0xBC

Bits7-5:  ADCSC2-0: ADC SAR Conversion Clock Period Bits

          000: SAR Conversion Clock = 1 System Clock

          001: SAR Conversion Clock = 2 System Clocks

          010: SAR Conversion Clock = 4 System Clocks

          011: SAR Conversion Clock = 8 System Clocks

          1xx: SAR Conversion Clock = 16 Systems Clocks

          (Note: Conversion clock should be  2MHz.)

Bits4-3:  UNUSED. Read = 00b; Write = don’t care

Bits2-0:  AMPGN2-0: ADC Internal Amplifier Gain

          000: Gain = 1

          001: Gain = 2

          010: Gain = 4

          011: Gain = 8

          10x: Gain = 16

          11x: Gain = 0.5

                                                  Rev. 1.7                                         44
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                 Figure 6.7. ADC0CN: ADC Control Register (C8051F01x)

    R/W          R/W    R/W              R/W          R/W         R/W     R/W                    R/W               Reset Value

    ADCEN        ADCTM  ADCINT           ADBUSY   ADSTM1          ADSTM0  ADWINT                ADLJST             00000000

    Bit7         Bit6   Bit5             Bit4         Bit3        Bit2    Bit1                   Bit0              SFR Address:

                                                                                                (bit addressable)  0xE8

Bit7:     ADCEN: ADC Enable Bit

          0: ADC Disabled. ADC is in low power shutdown.

          1: ADC Enabled. ADC is active and ready for data conversions.

Bit6:     ADCTM: ADC Track Mode Bit

          0: When the ADC is enabled, tracking is always done unless a conversion is in process

          1: Tracking Defined by ADSTM1-0 bits

                 ADSTM1-0:

                 00: Tracking starts with the write of 1 to ADBUSY and lasts for 3 SAR clocks

                 01: Tracking started by the overflow of Timer 3 and last for 3 SAR clocks

                 10: ADC tracks only when CNVSTR input is logic low

                 11: Tracking started by the overflow of Timer 2 and last for 3 SAR clocks

Bit5:     ADCINT: ADC Conversion Complete Interrupt Flag

          (Must be cleared by software)

          0: ADC has not completed a data conversion since the last time this flag was cleared

          1: ADC has completed a data conversion

Bit4:     ADBUSY: ADC Busy Bit

          Read

          0: ADC Conversion complete or no valid data has been converted since a reset. The falling

           edge of ADBUSY generates an interrupt when enabled.

          1: ADC Busy converting data

          Write

          0: No effect

          1: Starts ADC Conversion if ADSTM1-0 = 00b

Bits3-2:  ADSTM1-0: ADC Start of Conversion Mode Bits

          00: ADC conversion started upon every write of 1 to ADBUSY

          01: ADC conversions taken on every overflow of Timer 3

          10: ADC conversion started upon every rising edge of CNVSTR

          11: ADC conversions taken on every overflow of Timer 2

Bit1:     ADWINT: ADC Window Compare Interrupt Flag

          (Must be cleared by software)

          0: ADC Window Comparison Data match has not occurred

          1: ADC Window Comparison Data match occurred

Bit0:     ADLJST: ADC Left Justify Data Bit

          0: Data in ADC0H:ADC0L Registers is right justified

          1: Data in ADC0H:ADC0L Registers is left justified

45                                                Rev. 1.7
                                                                           C8051F000/1/2/5/6/7

                                                                           C8051F010/1/2/5/6/7

             Figure 6.8.     ADC0H:        ADC Data Word MSB Register (C8051F01x)

R/W                R/W         R/W           R/W        R/W     R/W        R/W        R/W               Reset Value

                                                                                                        00000000

Bit7               Bit6        Bit5          Bit4       Bit3         Bit2  Bit1       Bit0              SFR Address:

                                                                                                        0xBF

Bits7-0:  ADC Data Word Bits

          For ADLJST = 1: Upper 8-bits of the 10-bit ADC Data Word.

          For ADLJST = 0: Bits7-2 are the sign extension of Bit1. Bits 1-0 are the upper 2-bits of the

          10-bit ADC Data Word.

                Figure 6.9. ADC0L: ADC Data             Word LSB Register (C8051F01x)

R/W                R/W         R/W           R/W        R/W     R/W        R/W        R/W               Reset Value

                                                                                                        00000000

Bit7               Bit6        Bit5          Bit4       Bit3         Bit2  Bit1       Bit0              SFR Address:

                                                                                                        0xBE

Bits7-0:  ADC Data Word Bits

          For ADLJST = 1: Bits7-6 are the lower 2-bits  of the 10-bit ADC Data Word.  Bits5-0 will

          always read 0.

          For ADLJST = 0: Bits7-0 are the lower 8-bits  of the 10-bit ADC Data Word.

NOTE: Resulting 10-bit ADC Data Word appears in the ADC Data Word Registers as follows:

ADC0H[1:0]:ADC0L[7:0], if ADLJST = 0

                   (ADC0H[7:2] will be sign extension of ADC0H.1 if a differential reading, otherwise = 000000b)

ADC0H[7:0]:ADC0L[7:6], if ADLJST = 1

                   (ADC0L[5:0] = 000000b)

EXAMPLE: ADC Data Word Conversion Map, AIN0 Input in Single-Ended Mode

                           (AMX0CF=0x00, AMX0SL=0x00)

          AIN0 – AGND                ADC0H:ADC0L        ADC0H:ADC0L

          (Volts)                    (ADLJST = 0)       (ADLJST = 1)

          REF x (1023/1024)          0x03FF             0xFFC0

          REF x ½                    0x0200             0x8000

          REF x (511/1024)           0x01FF             0x7FC0

          0                          0x0000             0x0000

EXAMPLE: ADC Data Word Conversion Map, AIN0-AIN1 Differential Input Pair

                           (AMX0CF=0x01, AMX0SL=0x00)

          AIN0 – AIN1 (Volts)        ADC0H:ADC0L        ADC0H:ADC0L

                                     (ADLJST = 0)       (ADLJST = 1)

          REF x (511/512)            0x01FF             0x7FC0

          0                          0x0000             0x0000

          -REF x (1/512)             0xFFFF             0xFFC0

          -REF                       0xFE00             0x8000

                                                   Rev. 1.7                                                           46
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

6.3.        ADC Programmable Window Detector

The ADC programmable window detector is very useful in many applications.      It continuously compares the ADC

output to user-programmed limits and notifies the system when an out-of-band 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 (ADWINT in ADC0CN) can also be used in polled

mode.  The high and low bytes of the reference words are loaded into the ADC Greater-Than and ADC Less-Than

registers   (ADC0GTH,   ADC0GTL,  ADC0LTH,     and  ADC0LTL).      Figure  6.14  and   Figure  6.15  show  example

comparisons for reference.  Notice that the window detector flag can be asserted when the measured data is inside

or outside the user-programmed limits, depending on the programming of the ADC0GTx and ADC0LTx registers.

    Figure 6.10. ADC0GTH: ADC Greater-Than Data High Byte Register (C8051F01x)

      R/W      R/W          R/W   R/W               R/W            R/W           R/W           R/W   Reset Value

                                                                                                     11111111

      Bit7     Bit6         Bit5  Bit4              Bit3           Bit2          Bit1          Bit0  SFR Address:

                                                                                                           0xC5

Bits7-0:

The high byte of the ADC Greater-Than Data Word.

      Figure 6.11. ADC0GTL: ADC Greater-Than                 Data  Low     Byte  Register  (C8051F01x)

      R/W      R/W          R/W   R/W               R/W            R/W           R/W           R/W   Reset Value

                                                                                                     11111111

      Bit7     Bit6         Bit5  Bit4              Bit3           Bit2          Bit1          Bit0  SFR Address:

                                                                                                           0xC4

Bits7-0:

The low byte of the ADC Greater-Than Data Word.

Definition:

ADC Greater-Than Data Word = ADC0GTH:ADC0GTL

       Figure 6.12. ADC0LTH: ADC Less-Than Data High Byte Register (C8051F01x)

      R/W      R/W          R/W   R/W               R/W            R/W           R/W           R/W   Reset Value

                                                                                                     00000000

      Bit7     Bit6         Bit5  Bit4              Bit3           Bit2          Bit1          Bit0  SFR Address:

                                                                                                           0xC7

Bits7-0:

The high byte of the ADC Less-Than Data Word.

       Figure  6.13.    ADC0LTL:  ADC Less-Than Data         Low         Byte  Register  (C8051F01x)

      R/W      R/W          R/W   R/W               R/W            R/W           R/W           R/W   Reset Value

                                                                                                     00000000

      Bit7     Bit6         Bit5  Bit4              Bit3           Bit2          Bit1          Bit0  SFR Address:

                                                                                                           0xC6

Bits7-0:

These bits are the low byte of the ADC Less-Than Data Word.

Definition:

ADC Less-Than Data Word = ADC0LTH:ADC0LTL

47                                                Rev. 1.7
                                                                                    C8051F000/1/2/5/6/7

                                                                                    C8051F010/1/2/5/6/7

      Figure 6.14. 10-Bit ADC Window Interrupt Examples, Right Justified Data

Input Voltage             ADC Data                                   Input Voltage        ADC Data

(AD0 - AGND)              Word                                       (AD0 - AGND)         Word

REF x (1023/1024)         0x03FF                                     REF x (1023/1024)    0x03FF

                                          ADWINT                                                             ADWINT=1

                                          not affected

                          0x0201                                                          0x0201

REF x (512/1024)          0x0200       ADC0LTH:ADC0LTL               REF x (512/1024)     0x0200         ADC0GTH:ADC0GTL

                          0x01FF                                                          0x01FF             ADWINT

                                          ADWINT=1                                                           not affected

                          0x0101                                                          0x0101

REF x (256/1024)          0x0100       ADC0GTH:ADC0GTL               REF x (256/1024)     0x0100         ADC0LTH:ADC0LTL

                          0x00FF                                                          0x00FF

                                          ADWINT                                                             ADWINT=1

                                          not affected

         0                0x0000                                              0           0x0000

Given:                                                               Given:

AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 0,                            AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 0,

ADC0LTH:ADC0LTL = 0x0200,                                            ADC0LTH:ADC0LTL = 0x0100,

ADC0GTH:ADC0GTL = 0x0100.                                            ADC0GTH:ADC0GTL = 0x0200.

An ADC End of Conversion will cause an ADC Window                    An ADC End of Conversion will cause an ADC Window

Compare     Interrupt     (ADWINT=1)   if  the  resulting  ADC       Compare Interrupt (ADWINT=1) if the resulting ADC

Data Word is < 0x0200 and > 0x0100.                                  Data Word is < 0x0100 or > 0x0200.

        Input Voltage     ADC Data                                   Input Voltage        ADC Data

        (AD0 - AD1)       Word                                               (AD0 - AD1)  Word

      REF x (511/512)     0x01FF                                     REF x (511/512)      0x01FF

                                           ADWINT                                                        ADWINT=1

                                           not affected

                          0x0101                                                          0x0101

      REF x (256/512)     0x0100       ADC0LTH:ADC0LTL               REF x (256/512)      0x0100      ADC0GTH:ADC0GTL

                          0x00FF                                                          0x00FF         ADWINT

                                           ADWINT=1                                                      not affected

                          0x0000                                                          0x0000

        REF x (-1/512)    0xFFFF       ADC0GTH:ADC0GTL               REF x (-1/512)       0xFFFF      ADC0LTH:ADC0LTL

                          0xFFFE                                                          0xFFFE

                                           ADWINT                                                        ADWINT=1

                                           not affected

            -REF          0xFE00                                              -REF        0xFE00

Given:                                                               Given:

AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 0,                            AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 0,

ADC0LTH:ADC0LTL = 0x0100,                                            ADC0LTH:ADC0LTH = 0xFFFF,

ADC0GTH:ADC0GTL = 0xFFFF.                                            ADC0GTH:ADC0GTL = 0x0100.

An ADC End of Conversion will cause an ADC Window                    An ADC End of Conversion will cause an ADC Window

Compare     Interrupt     (ADWINT=1)   if  the  resulting  ADC       Compare  Interrupt   (ADWINT=1)     if  the  resulting  ADC

Data    Word  is       <  0x0100  and  >   0xFFFF.       (Two’s      Data Word is < 0xFFFF or > 0x0100.      (Two’s Complement

Complement math, 0xFFFF = -1.)                                       math, 0xFFFF = -1.)

                                                           Rev. 1.7                                                               48
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

            Figure 6.15. 10-Bit ADC Window                    Interrupt Examples,              Left Justified Data

    Input Voltage          ADC Data                                             Input Voltage  ADC Data

    (AD0 - AGND)           Word                                         (AD0 - AGND)           Word

    REF x (1023/1024)      0xFFC0                                       REF x (1023/1024)      0xFFC0

                                             ADWINT                                                             ADWINT=1

                                             not affected

                           0x8040                                                              0x8040

    REF x (512/1024)       0x8000         ADC0LTH:ADC0LTL               REF x (512/1024)       0x8000       ADC0GTH:ADC0GTL

                           0x7FC0                                                              0x7FC0           ADWINT

                                             ADWINT=1                                                           not affected

                           0x4040                                                              0x4040

    REF x (256/1024)       0x4000         ADC0GTH:ADC0GTL               REF x (256/1024)       0x4000       ADC0LTH:ADC0LTL

                           0x3FC0                                                              0x3FC0

                                             ADWINT                                                             ADWINT=1

                                             not affected

             0             0x0000                                                0             0x0000

    Given:                                                              Given:

    AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 1,                           AMX0SL = 0x00, AMX0CF = 0x00, ADLJST = 1,

    ADC0LTH:ADC0LTL = 0x8000,                                           ADC0LTH:ADC0LTL = 0x4000,

    ADC0GTH:ADC0GTL = 0x4000.                                           ADC0GTH:ADC0GTL = 0x8000.

    An ADC End of Conversion will cause an ADC Window                   An ADC End of Conversion will cause an ADC Window

    Compare     Interrupt  (ADWINT=1)     if  the  resulting  ADC       Compare Interrupt (ADWINT=1) if the resulting ADC

    Data Word is < 0x8000 and > 0x4000.                                 Data Word is < 0x4000 or > 0x8000.

    Input Voltage          ADC Data                                     Input Voltage          ADC Data

          (AD0 - AD1)      Word                                         (AD0 - AD1)            Word

    REF x (511/512)        0x7FC0                                       REF x (511/512)        0x7FC0

                                          ADWINT                                                                ADWINT=1

                                          not affected

                           0x2040                                                              0x2040

    REF x (128/512)        0x2000    ADC0LTH:ADC0LTL                    REF x (128/512)        0x2000      ADC0GTH:ADC0GTL

                           0x1FC0                                                              0x1FC0           ADWINT

                                          ADWINT=1                                                              not affected

                           0x0000                                                              0x0000

    REF x (-1/512)         0xFFC0    ADC0GTH:ADC0GTL                    REF x (-1/512)         0xFFC0      ADC0LTH:ADC0LTL

                           0xFF80                                                              0xFF80

                                          ADWINT                                                                ADWINT=1

                                          not affected

            -REF           0x8000                                                -REF          0x8000

    Given:                                                              Given:

    AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 1,                           AMX0SL = 0x00, AMX0CF = 0x01, ADLJST = 1,

    ADC0LTH:ADC0LTL = 0x2000,                                           ADC0LTH:ADC0LTH = 0xFFC0,

    ADC0GTH:ADC0GTL = 0xFFC0.                                           ADC0GTH:ADC0GTL = 0x2000.

    An ADC End of Conversion will cause an ADC Window                   An ADC End of Conversion will cause an ADC Window

    Compare     Interrupt  (ADWINT=1)     if  the  resulting  ADC       Compare  Interrupt     (ADWINT=1)   if  the  resulting  ADC

    Data    Word  is   <   0x2000    and  >   0xFFC0.      (Two’s       Data Word is < 0xFFC0 or > 0x2000. (Two’s Complement

    Complement math.)                                                   math.)

49                                                            Rev. 1.7
                                                                  C8051F000/1/2/5/6/7

                                                                  C8051F010/1/2/5/6/7

                           Table 6.1. 10-Bit ADC Electrical Characteristics

VDD = 3.0V, AV+ = 3.0V, VREF = 2.40V (REFBE=0), PGA Gain = 1, -40C to +85C unless  otherwise  specified.

        PARAMETER          CONDITIONS                             MIN        TYP     MAX        UNITS

DC ACCURACY

Resolution                                                                     10               bits

Integral Nonlinearity                                                        ½      1         LSB

Differential Nonlinearity  Guaranteed Monotonic                              ½      1         LSB

Offset Error                                                                  0.5              LSB

Full Scale Error           Differential mode                                 -1.5              LSB

                                                                               0.5

Offset Temperature                                                            0.25             ppm/C

Coefficient

DYNAMIC PERFORMANCE (10kHz sine-wave input, 0 to –1dB of full scale, 100ksps)

Signal-to-Noise Plus                                              59           61               dB

Distortion

Total Harmonic Distortion  Up to the 5th harmonic                              -70              dB

Spurious-Free Dynamic                                                          80               dB

Range

CONVERSION RATE

Conversion Time in SAR                                            16                            clocks

Clocks

SAR Clock Frequency        C8051F000, ‘F001, ‘F002                                   2.0        MHz

                           C8051F005, ‘F006, ‘F007                                   2.5        MHz

Track/Hold Acquisition                                            1.5                           s

Time

Throughput Rate                                                                      100        ksps

ANALOG INPUTS

Voltage Conversion Range   Single-ended Mode (AINn – AGND)        0                  VREF       V

                           Differential Mode |(AINn+) – (AINm-)|                     - 1LSB

Input Voltage              Any AINn pin                           AGND               AV+        V

Input Capacitance                                                              10               pF

TEMPERATURE SENSOR

Linearity                                                                     0.20             C

Absolute Accuracy                                                              3               C

Gain                       PGA Gain = 1                                      2.86               mV/C

Gain Error (1)           PGA Gain = 1                                       33.5             V/C

Offset                     PGA Gain = 1, Temp = 0C                          776                mV

Offset Error (1)         PGA Gain = 1, Temp = 0C                           8.51             mV

POWER SPECIFICATIONS

Power Supply Current (AV+  Operating Mode, 100ksps                           450     900        A

supplied to ADC)

Power Supply Rejection                                                        0.3              mV/V

                                              Rev. 1.7                                                  50
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

7.  DACs, 12 BIT VOLTAGE MODE

The C8051F000 MCU family has two 12-bit voltage-mode Digital to Analog Converters.  Each DAC has an output

swing of 0V to VREF-1LSB for a corresponding input code range of 0x000 to 0xFFF. Using DAC0 as an example,

the 12-bit data word is written to the low byte (DAC0L) and high byte (DAC0H) data registers. Data is latched into

DAC0 after a write to the corresponding DAC0H register, so the write sequence should be DAC0L followed by

DAC0H if the full 12-bit resolution is required.    The DAC can be used in 8-bit mode by initializing DAC0L to the

desired value (typically 0x00), and writing data to only DAC0H with the data shifted to the left.   DAC0 Control

Register (DAC0CN) provides a means to enable/disable DAC0 and to modify its input data formatting.

The DAC0 enable/disable function is controlled by the DAC0EN bit (DAC0CN.7).        Writing a 1 to DAC0EN

enables DAC0 while writing a 0 to DAC0EN disables DAC0. While disabled, the output of DAC0 is maintained in

a high-impedance state, and the DAC0 supply current falls to 1A or less.  Also, the Bias Enable bit (BIASE) in the

REF0CN register (see Figure 9.2) must be set to 1 in order to supply bias to DAC0.  The voltage reference for

DAC0 must also be set properly (see Section 9).

In some instances, input data should be shifted prior to a DAC0 write operation to properly justify data within the

DAC input registers.     This action would typically require one or more load and shift operations, adding software

overhead and slowing DAC throughput.      To alleviate this problem, the data-formatting feature provides a means for

the user to program the orientation of the DAC0 data word within data registers DAC0H and DAC0L. The three

DAC0DF bits (DAC0CN.[2:0]) allow the user to specify one of five data word orientations as shown in the

DAC0CN register definition.

DAC1 is functionally the same as DAC0 described above.       The electrical specifications for both DAC0 and DAC1

are given in Table 7.1.

                             Figure 7.1. DAC Functional Block Diagram

            DAC0EN

    DAC0CN  DAC0DF2                                     REF                   AV+

            DAC0DF1

            DAC0DF0

                             DAC0H     8  Dig. MUX  12                     +

                                                             DAC0                                   DAC0

                                                                           -

                             DAC0L  8                                      AGND

            DAC1EN

    DAC1CN  DAC1DF2                                     REF                   AV+

            DAC1DF1

            DAC1DF0

                             DAC1H     8  Dig. MUX  12                     +

                                                             DAC1                                   DAC1

                                                                           -

                             DAC1L  8                                      AGND

51                                                      Rev. 1.7
                                                                     C8051F000/1/2/5/6/7

                                                                     C8051F010/1/2/5/6/7

                             Figure 7.2.  DAC0H:     DAC0      High Byte Register

R/W             R/W          R/W          R/W        R/W       R/W               R/W        R/W   Reset Value

                                                                                                  00000000

Bit7            Bit6         Bit5         Bit4       Bit3      Bit2              Bit1       Bit0  SFR Address:

                                                                                                       0xD3

Bits7-0:  DAC0  Data    Word Most Significant Byte.

                             Figure 7.3.  DAC0L: DAC0 Low Byte Register

R/W             R/W          R/W          R/W        R/W       R/W               R/W        R/W   Reset Value

                                                                                                  00000000

Bit7            Bit6         Bit5         Bit4       Bit3      Bit2              Bit1       Bit0  SFR Address:

                                                                                                       0xD2

Bits7-0: DAC0 Data Word Least Significant Byte.

                             Figure 7.4. DAC0CN: DAC0 Control Register

R/W             R/W          R/W          R/W        R/W       R/W               R/W        R/W   Reset Value

DAC0EN               -            -       -          -         DAC0DF2      DAC0DF1    DAC0DF0    00000000

Bit7            Bit6         Bit5         Bit4       Bit3      Bit2              Bit1       Bit0  SFR Address:

                                                                                                       0xD4

Bit7:     DAC0EN: DAC0 Enable Bit

          0: DAC0 Disabled. DAC0 Output pin is disabled; DAC0 is in low power shutdown mode.

          1: DAC0 Enabled. DAC0 Output is pin active; DAC0 is operational.

Bits6-3:  UNUSED. Read = 0000b; Write = don’t care

Bits2-0:  DAC0DF2-0: DAC0 Data Format Bits

          000: The most significant nybble of the DAC0 Data Word is in DAC0H[3:0], while the least significant

                byte is in DAC0L.

                             DAC0H                                          DAC0L

                                     MSB                                                          LSB

          001:  The most significant 5-bits of the DAC0 Data Word is in DAC0H[4:0], while the least significant

                7-bits is in DAC0L[7:1].

                             DAC0H                                          DAC0L

                             MSB                                                            LSB

          010:  The most significant 6-bits of the DAC0 Data Word is in DAC0H[5:0], while the least significant

                6-bits is in DAC0L[7:2].

                             DAC0H                                          DAC0L

                        MSB                                                            LSB

          011:  The most significant 7-bits of the DAC0 Data Word is in DAC0H[6:0], while the least significant

                5-bits is in DAC0L[7:3].

                             DAC0H                                          DAC0L

                MSB                                                              LSB

          1xx:  The most significant byte of the DAC0 Data Word is in DAC0H, while the least significant nybble

                is in DAC0L[7:4].

                             DAC0H                                          DAC0L

          MSB                                                               LSB

                                                     Rev. 1.7                                                    52
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                           Figure 7.5.  DAC1H: DAC1 High Byte Register

    R/W         R/W        R/W          R/W              R/W           R/W          R/W           R/W     Reset Value

                                                                                                          00000000

    Bit7        Bit6       Bit5         Bit4             Bit3          Bit2         Bit1          Bit0    SFR Address:

                                                                                                          0xD6

Bits7-0: DAC1 Data Word Most Significant Byte.

                           Figure 7.6.  DAC1L: DAC1 Low Byte Register

    R/W         R/W        R/W          R/W              R/W           R/W          R/W           R/W     Reset Value

                                                                                                          00000000

    Bit7        Bit6       Bit5         Bit4             Bit3          Bit2         Bit1          Bit0    SFR Address:

                                                                                                          0xD5

Bits7-0: DAC1 Data Word Least Significant Byte.

                           Figure 7.7.  DAC1CN: DAC1 Control Register

    R/W         R/W        R/W          R/W              R/W           R/W          R/W           R/W     Reset Value

    DAC1EN      -               -              -         -      DAC1DF2      DAC1DF1      DAC1DF0         00000000

    Bit7        Bit6       Bit5         Bit4             Bit3          Bit2         Bit1          Bit0    SFR Address:

                                                                                                          0xD7

Bit7:     DAC1EN: DAC1 Enable Bit

          0: DAC1 Disabled. DAC1 Output pin is disabled; DAC1 is in low power shutdown mode.

          1: DAC1 Enabled. DAC1 Output is pin active; DAC1 is operational.

Bits6-3:  UNUSED. Read = 0000b; Write = don’t care

Bits2-0:  DAC1DF2-0: DAC1 Data Format Bits

          000: The most significant nybble of the DAC1 Data Word is in DAC1H[3:0], while the least

                significant byte is in DAC1L.

                      DAC1H                                                  DAC1L

                           MSB                                                                    LSB

          001:  The most significant 5-bits of the DAC1  Data Word is  in DAC1H[4:0], while the least

                significant 7-bits is in DAC1L[7:1].

                      DAC1H                                                  DAC1L

                      MSB                                                                 LSB

          010:  The most significant 6-bits of the DAC1  Data Word is  in DAC1H[5:0], while    the least

                significant 6-bits is in DAC1L[7:2].

                      DAC1H                                                  DAC1L

                MSB                                                                 LSB

          011:  The most significant 7-bits of the DAC1  Data Word is  in DAC1H[6:0], while    the least

                significant 5-bits is in DAC1L[7:3].

                      DAC1H                                                  DAC1L

          MSB                                                                LSB

          1xx:  The most significant byte of the DAC1    Data Word is  in DAC1H, while the least

                significant nybble is in DAC1L[7:4].

                      DAC1H                                                  DAC1L

    MSB                                                                LSB

53                                                    Rev. 1.7
                                                                    C8051F000/1/2/5/6/7

                                                                    C8051F010/1/2/5/6/7

                              Table 7.1. DAC Electrical Characteristics

VDD = 3.0V, AV+ = 3.0V, REF = 2.40V (REFBE=0), No Output Load unless otherwise specified.

     PARAMETER                             CONDITIONS               MIN  TYP               MAX   UNITS

STATIC PERFORMANCE

Resolution                                                               12                      bits

Integral Nonlinearity         For Data Word Range 0x014 to 0xFEB         2                      LSB

Differential Nonlinearity     Guaranteed Monotonic (codes 0x014 to                         1    LSB

                              0xFEB)

Output Noise                  No Output Filter                           250                     Vrms

                              100kHz Output Filter                       128

                              10kHz Output Filter                        41

Offset Error                  Data Word = 0x014                          3                30   mV

Offset Tempco                                                            6                       ppm/C

Full-Scale Error                                                         20               60   mV

Full-Scale Error Tempco                                                  10                      ppm/C

VDD Power-Supply                                                         -60                     dB

Rejection Ratio

Output Impedance in           DACnEN=0                                   100                     k

Shutdown Mode

Output Current                                                           300                    A

Output Short Circuit Current  Data Word = 0xFFF                          15                      mA

DYNAMIC PERFORMANCE

Voltage Output Slew Rate      Load = 40pF                                0.44                    V/s

Output Settling Time To ½     Load = 40pF, Output swing from code        10                      s

LSB                           0xFFF to 0x014

Output Voltage Swing                                                0                      REF-  V

                                                                                           1LSB

Startup Time                  DAC Enable asserted                        10                      s

ANALOG OUTPUTS

Load Regulation               IL = 0.01mA to 0.3mA at code 0xFFF         60                      ppm

CURRENT CONSUMPTION (each DAC)

Power Supply Current (AV+     Data Word = 0x7FF                          110               400   A

supplied to DAC)

                                                    Rev. 1.7                                           54
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

8.   COMPARATORS

The MCU family has two on-chip analog voltage comparators as shown in Figure 8.1.                                             The inputs of each

Comparator are available at the package pins.              The output of each comparator is optionally available at the package

pins via the I/O crossbar (see Section 15.1).                     When assigned to package pins, each comparator output can be

programmed to operate in open drain or push-pull modes (see section 15.3).

The  hysteresis  of  each  comparator              is      software-programmable     via  its  respective            Comparator  control  register

(CPT0CN, CPT1CN).          The user can program both the amount of hysteresis voltage (referred to the input voltage)

and the positive and negative-going symmetry of this hysteresis around the threshold voltage.                                   The output of the

comparator can be polled in software, or can be used as an interrupt source. Each comparator can be individually

enabled or disabled (shutdown).              When disabled, the comparator output (if assigned to a Port I/O pin via the

Crossbar) defaults to the logic low state, its interrupt capability is suspended and its supply current falls to less than

1A. Comparator 0 inputs can be externally driven from -0.25V to (AV+) + 0.25V without damage or upset.

The Comparator 0 hysteresis is programmed using bits 3-0 in the Comparator 0 Control Register CPT0CN (shown

in Figure 8.3).  The amount of negative hysteresis voltage is determined by the settings of the CP0HYN bits.                              As

shown in Figure 8.2, settings of 10, 4 or 2mV 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 CP0HYP bits.

Comparator interrupts can be generated on both rising-edge and falling-edge output transitions.                                  (For Interrupt

enable and priority control, see Section 10.4).            The CP0FIF flag is set upon a Comparator 0 falling-edge interrupt,

and the CP0RIF flag is set upon the Comparator 0 rising-edge interrupt. Once set, these bits remain set until cleared

by the CPU.  The Output State of Comparator 0 can be obtained at any time by reading the CP0OUT bit.                                      Note the

comparator output and interrupt should be ignored until the comparator settles after power-up.                                   Comparator 0 is

enabled by setting the CP0EN bit, and is disabled by clearing this bit.                   Note there is a 20usec settling time for the

comparator output to stabilize after setting the CP0EN bit or a power-up.                      Comparator 0 can also be programmed as

a reset source. For details, see Section 13.

The operation of Comparator 1 is identical to that of Comparator 0, except the Comparator 1 is controlled by the

CPT1CN Register (Figure 8.4).      Comparator 1 can not be programmed as a reset source.                             Also, the input pins for

Comparator 1 are not pinned out on the F002, F007, F012, or F017 devices.                         The complete electrical specifications

for the Comparators are given in Table 8.1.

                           Figure            8.1.  Comparator       Functional Block Diagram

                                                           CP0EN

                                                           CP0OUT

                                                   CPT0CN  CP0RIF                    AV+

                                                           CP0FIF

                                                           CP0HYP1

                                                           CP0HYP0                             Reset

                                                           CP0HYN1                             Decision

                                                           CP0HYN0                             Tree

                           CP0+                                                   +

                                                                                               D  SET  Q  D  SET  Q  Crossbar

                           CP0-                                                   -               CLR  Q     CLR  Q  Interrupt

                                                                                               (SYNCHRONIZER)        Handler

                                                           CP1EN                     AGND

                                                           CP1OUT

                                                   CPT1CN  CP1RIF                    AV+

                                                           CP1FIF

                                                           CP1HYP1

                                                           CP1HYP0

                                                           CP1HYN1

                                                           CP1HYN0

                           CP1+                                                   +

                                                                                               D  SET  Q  D  SET  Q  Crossbar

                           CP1-                                                   -               CLR  Q     CLR  Q  Interrupt

                     not available on F002,                                                    (SYNCHRONIZER)        Handler

                     F007, F012, and F017                                            AGND

55                                                                  Rev. 1.7
                                                                    C8051F000/1/2/5/6/7

                                                                    C8051F010/1/2/5/6/7

                                   Figure 8.2. Comparator  Hysteresis Plot

VIN+    CP0+                    +

        CP0-                    CP0  OUT

VIN-                            _

        CIRCUIT CONFIGURATION

Positive Hysteresis Voltage

(Programmed with CP0HYSP Bits)

        VIN-

INPUTS                                                                      Negative Hysteresis Voltage

                                                                            (Programmed by CP0HYSN Bits)

        VIN+

                             VOH

OUTPUT

        VOL

                                              Negative Hysteresis           Maximum

                                                          Disabled          Negative Hysteresis

        Positive Hysteresis          Maximum

        Disabled                     Positive Hysteresis

                                     Rev. 1.7                                                             56
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                        Figure 8.3.    CPT0CN: Comparator 0 Control Register

    R/W           R       R/W                R/W      R/W       R/W          R/W                 R/W      Reset Value

    CP0EN         CP0OUT  CP0RIF            CP0FIF    CP0HYP1   CP0HYP0      CP0HYN1             CP0HYN0  00000000

    Bit7          Bit6    Bit5                  Bit4  Bit3             Bit2  Bit1                Bit0     SFR Address:

                                                                                                          0x9E

    Bit7:    CP0EN: Comparator 0 Enable Bit

             0: Comparator 0 Disabled.

             1: Comparator 0 Enabled.

    Bit6:    CP0OUT: Comparator 0 Output State Flag

             0: Voltage on CP0+ < CP0-

             1: Voltage on CP0+ > CP0-

    Bit5:    CP0RIF: Comparator 0 Rising-Edge Interrupt Flag

             0: No Comparator 0 Rising-Edge Interrupt has occurred since this flag was cleared

             1: Comparator 0 Rising-Edge Interrupt has occurred since this flag was cleared

    Bit4:    CP0FIF: Comparator 0 Falling-Edge Interrupt Flag

             0: No Comparator 0 Falling-Edge Interrupt has occurred since this flag was cleared

             1: Comparator 0 Falling-Edge Interrupt has occurred since this flag was cleared

    Bit3-2:  CP0HYP1-0: Comparator 0 Positive Hysteresis Control Bits

             00:  Positive Hysteresis Disabled

             01: Positive Hysteresis = 2mV

             10: Positive Hysteresis = 4mV

             11: Positive Hysteresis = 10mV

    Bit1-0:  CP0HYN1-0: Comparator 0 Negative Hysteresis Control Bits

             00: Negative Hysteresis Disabled

             01: Negative Hysteresis = 2mV

             10: Negative Hysteresis = 4mV

             11: Negative Hysteresis = 10mV

57                                                    Rev. 1.7
                                                                         C8051F000/1/2/5/6/7

                                                                         C8051F010/1/2/5/6/7

                    Figure 8.4. CPT1CN: Comparator 1 Control Register

R/W           R       R/W                R/W      R/W       R/W          R/W                 R/W      Reset Value

CP1EN         CP1OUT  CP1RIF            CP1FIF    CP1HYP1   CP1HYP0      CP1HYN1             CP1HYN0  00000000

Bit7          Bit6    Bit5                  Bit4  Bit3             Bit2  Bit1                Bit0     SFR Address:

                                                                                                      0x9F

Bit7:    CP1EN: Comparator 1 Enable Bit

         0: Comparator 1 Disabled.

         1: Comparator 1 Enabled.

Bit6:    CP1OUT: Comparator 1 Output State Flag

         0: Voltage on CP1+ < CP1-

         1: Voltage on CP1+ > CP1-

Bit5:    CP1RIF: Comparator 1 Rising-Edge Interrupt Flag

         0: No Comparator 1 Rising-Edge Interrupt has occurred since this flag was cleared

         1: Comparator 1 Rising-Edge Interrupt has occurred since this flag was cleared

Bit4:    CP1FIF: Comparator 1 Falling-Edge Interrupt Flag

         0: No Comparator 1 Falling-Edge Interrupt has occurred since this flag was cleared

         1: Comparator 1 Falling-Edge Interrupt has occurred since this flag was cleared

Bit3-2:  CP1HYP1-0: Comparator 1 Positive Hysteresis Control Bits

         00:  Positive Hysteresis Disabled

         01: Positive Hysteresis = 2mV

         10: Positive Hysteresis = 4mV

         11: Positive Hysteresis = 10mV

Bit1-0:  CP1HYN1-0: Comparator 1 Negative Hysteresis Control Bits

         00: Negative Hysteresis Disabled

         01: Negative Hysteresis = 2mV

         10: Negative Hysteresis = 4mV

         11: Negative Hysteresis = 10mV

                                                  Rev. 1.7                                                          58
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                            Table 8.1. Comparator Electrical Characteristics

VDD = 3.0V, AV+ = 3.0V, -40C to +85C unless otherwise specified.

       PARAMETER                     CONDITIONS                     MIN       TYP    MAX     UNITS

Response Time1              (CP+) – (CP-) = 100mV (Note 1)                    4              s

Response Time2              (CP+) – (CP-) = 10mV (Note 1)                     12             s

Common Mode Rejection                                                         1.5    4       mV/V

Ratio

Positive Hysteresis1        CPnHYP1-0 = 00                                    0      1       mV

Positive Hysteresis2        CPnHYP1-0 = 01                          2         4.5    7       mV

Positive Hysteresis3        CPnHYP1-0 = 10                          4         9      13      mV

Positive Hysteresis4        CPnHYP1-0 = 11                          10        17     25      mV

Negative Hysteresis1        CPnHYN1-0 = 00                                    0      1       mV

Negative Hysteresis2        CPnHYN1-0 = 01                          2         4.5    7       mV

Negative Hysteresis3        CPnHYN1-0 = 10                          4         9      13      mV

Negative Hysteresis4        CPnHYN1-0 = 11                          10        17     25      mV

Inverting or Non-inverting                                          -0.25            (AV+)   V

Input Voltage Range                                                                  + 0.25

Input Capacitance                                                             7              pF

Input Bias Current                                                  -5        0.001  +5      nA

Input Offset Voltage                                                -10              +10     mV

POWER SUPPLY

Power-up Time               CPnEN from 0 to 1                                 20             s

Power Supply Rejection                                                        0.1    1       mV/V

Supply Current              Operating Mode (each comparator) at DC            1.5    10      A

Note 1: CPnHYP1-0 = CPnHYN1-0 = 00.

59                                             Rev. 1.7
                                                                   C8051F000/1/2/5/6/7

                                                                   C8051F010/1/2/5/6/7

9.     VOLTAGE REFERENCE

The voltage reference circuit consists of a 1.2V, 15ppm/C (typical) bandgap voltage reference generator and a

gain-of-two output buffer amplifier. The reference voltage on VREF can be connected to external devices in the

system, as long as the maximum load seen by the VREF pin is less than 200A to AGND (see Figure 9.1).

If a different reference voltage is required, an external reference can be connected to the VREF pin and the internal

bandgap and buffer amplifier disabled in software.  The external reference voltage must still be less than AV+ -

0.3V.  The Reference Control Register, REF0CN (defined in Figure 9.2), provides the means to enable or disable

the bandgap and buffer amplifier.        The BIASE bit in REF0CN enables the bias circuitry for the ADC and DACs

while the REFBE bit enables the bandgap reference and buffer amplifier which drive the VREF pin.               When

disabled, the supply current drawn by the bandgap and buffer amplifier falls to less than 1uA (typical) and the

output of the buffer amplifier enters a high impedance state.  If the internal bandgap is used as the reference voltage

generator, BIASE and REFBE must both be set to 1.   If an external reference is used, REFBE must be set to 0 and

BIASE must be set to 1.       If neither the ADC nor the DAC are being used, both of these bits can be set to 0 to

conserve power. The electrical specifications for the Voltage Reference are given in Table 9.1.

The temperature sensor connects to the highest order input of the A/D converter’s input multiplexer (see Figure 5.1

and Figure 5.5 for details). The TEMPE bit within REF0CN enables and disables the temperature sensor.          While

disabled, the temperature sensor defaults to a high impedance state and any A/D measurements performed on the

sensor while disabled result in meaningless data.

                              Figure 9.1. Voltage Reference Functional Block Diagram

                     AV+      External                             EN    Temp

                              Voltage                                    Sensor                  (to Analog Mux)

                              Reference  REF0CN

                          R1  Circuit

                                                    TEMPE      EN  Bias                          (Bias to ADC

                                                    BIASE      Generator                         and DAC)

                                                    REFBE

                     AGND                                              AGND

                              VREF                             EN  2.4V                          (to ADC

       External Equivalent                                     Reference                         and DAC)

              Load Circuit

                                                                       AGND

       (max)  200uA  RLOAD

                     AGND

                                                    Rev. 1.7                                                             60
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                          Figure 9.2.     REF0CN: Reference Control Register

    R/W          R/W                R/W   R/W             R/W             R/W         R/W         R/W          Reset Value

       -             -              -              -      -           TEMPE     BIASE             REFBE        00000000

    Bit7         Bit6               Bit5  Bit4            Bit3            Bit2        Bit1        Bit0         SFR Address:

                                                                                                               0xD1

Bits7-3:     UNUSED. Read = 00000b; Write = don’t care

Bit2:        TEMPE: Temperature Sensor Enable Bit

             0: Internal Temperature Sensor Off.

             1: Internal Temperature Sensor On.

Bit1:        BIASE: Bias Enable Bit for ADC and DAC’s

             0: Internal Bias Off.

             1: Internal Bias On (required for use of ADC or DAC’s).

Bit0:        REFBE: Internal Voltage Reference Buffer Enable Bit

             0: Internal Reference Buffer Off. System reference can be driven from external source on

               VREF pin.

             1: Internal Reference Buffer On. System reference provided by internal voltage reference.

                            Table 9.1. Reference Electrical Characteristics

VDD = 3.0V, AV+ = 3.0V, -40C to +85C unless otherwise specified.

       PARAMETER                          CONDITIONS                            MIN         TYP        MAX     UNITS

INTERNAL REFERENCE (REFBE = 1)

Output Voltage                      25C ambient                                2.34        2.43        2.50   V

VREF Short Circuit Current                                                                              30     mA

VREF Power Supply                                                                           50                 A

Current (supplied by AV+)

VREF Temperature                                                                            15                 ppm/C

Coefficient

Load Regulation                     Load = (0-to-200A) to AGND (Note 1)                    0.5                ppm/A

VREF Turn-on Time1                  4.7F tantalum, 0.1F ceramic bypass                    2                  ms

VREF Turn-on Time2                  0.1F ceramic bypass                                    20                 s

VREF Turn-on Time3                  no bypass cap                                           10                 s

EXTERNAL REFERENCE (REFBE = 0)

Input Voltage Range                                                             1.00                   (AV+)   V

                                                                                                       – 0.3V

Input Current                                                                               0           1      A

Note 1: The reference can only source current. When driving an external load, it is recommended to add a load

       resistor to AGND.

61                                                        Rev. 1.7
                                                                                            C8051F000/1/2/5/6/7

                                                                                            C8051F010/1/2/5/6/7

10.  CIP-51 CPU

The MCUs’ system CPU is the CIP-51.               The CIP-51 is fully compatible with the MCS-51TM 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 description in Section

19), a full-duplex UART (see description in Section 18), 256 bytes of internal RAM, 128 byte Special Function

Register (SFR) address space (see Section 10.3), and four byte-wide I/O Ports (see description in Section 14).          The

CIP-51 also includes on-chip debug hardware (see description in Section 21), and interfaces directly with the

MCUs’ analog and digital subsystems providing a complete data acquisition or control-system solution in a single

integrated circuit.

Features

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                   Figure 10.1 for a block diagram).  The CIP-51

includes the following features:

-    Fully Compatible with MCS-51 Instruction Set                                -   Reset Input

-    25 MIPS Peak Throughput with 25MHz Clock                                    -   Power Management Modes

-    0 to 25MHz Clock Frequency (on ‘F0x5/6/7)                                   -   On-chip Debug Circuitry

-    Four Byte-Wide I/O Ports                                                    -   Program and Data Memory Security

-    Extended Interrupt Handler

                                  Figure 10.1. CIP-51 Block Diagram

                                                              DATA        BUS

                                      D8                                         D8               D8

                                                    D8        D8

                                  ACCUMULATOR                                 B  REGISTER   STACK POINTER

                     BUS                       TMP1           TMP2

                     DATA         PSW                                                SRAM   SRAM

                                                                                 ADDRESS    (256 X 8)

                                                        ALU                      REGISTER

                                  D8                                                 D8     D8

                                                        D8

                                                              DATA        BUS

                                                                                            SFR_ADDRESS

                                          BUFFER              D8

                                                                                     SFR    SFR_CONTROL

                                                                          D8         BUS    SFR_WRITE_DATA

                                      DATA POINTER            D8                 INTERFACE

                                                                                            SFR_READ_DATA

                                  PC INCREMENTER

                                                                    BUS   D8                MEM_ADDRESS

                                  PROGRAM  COUNTER (PC)

                                                                    DATA                    MEM_CONTROL

                                                                                    MEMORY

                                  PRGM. ADDRESS REG.                      A16    INTERFACE  MEM_WRITE_DATA

                                                                                            MEM_READ_DATA

                                                    PIPELINE              D8

                     RESET        CONTROL

                                  LOGIC                                                     SYSTEM_IRQs

                     CLOCK

                                                                                 INTERRUPT

                     STOP                                                 D8     INTERFACE  EMULATION_IRQ

                                  POWER    CONTROL            D8

                     IDLE                 REGISTER

                                                              Rev. 1.7                                                               62
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

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

execute, and usually have a maximum system clock of 12MHz.               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 25MHz, it has a peak throughput of 25MIPS. The CIP-51 has a total

of 109 instructions.  The number of instructions versus the system clock cycles required to execute them is as

follows:

                Instructions           26     50          5          14         7           3      1           2  1

            Clocks to Execute          1      2           2/3        3     3/4              4      4/5         5  8

Programming and Debugging Support

A   JTAG-based  serial      interface  is  provided  for  in-system  programming   of       the  Flash  program   memory    and

communication with on-chip debug support circuitry.            The reprogrammable Flash can also be read and changed a

single byte at a time by the application software using the MOVC and MOVX instructions.                 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 circuitry facilitates full speed in-circuit debugging, allowing the setting of hardware

breakpoints and watch points, 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 and non-invasive, requiring no RAM, Stack, timers,

or other on-chip resources.

The CIP-51 is supported by development tools from Silicon Laboratories 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 its JTAG interface to provide fast

and efficient in-system device programming and debugging.            Third party macro assemblers and C compilers are also

available.

10.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.

10.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

timing.   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.               Table 10.1 is the CIP-51 Instruction Set

Summary, which includes the mnemonic, number of bytes, and number of clock cycles for each instruction.

10.1.2.     MOVX Instruction and Program Memory

The MOVX instruction is typically used to access external data memory.             In the CIP-51, the MOVX instruction can

access the on-chip program memory space implemented as reprogrammable Flash memory using the control bits in

the PSCTL register (see Figure 11.1).      This feature provides a mechanism for the CIP-51 to update program code

and use the program memory space for non-volatile data storage. For the products with RAM mapped into external

data memory space (C8051F005/06/07/15/16/17), MOVX is still used to read/write this memory with the PSCTL

63                                                        Rev. 1.7
                                                                                 C8051F000/1/2/5/6/7

                                                                                 C8051F010/1/2/5/6/7

register  configured  for  accessing  the  external  data  memory space.  Refer  to Section 11 (Flash Memory) for further

details.

                                                           Rev. 1.7                                                        64
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                      Table 10.1. CIP-51 Instruction Set Summary

    Mnemonic          Description                                 Bytes  Clock

                                                                         Cycles

                         ARITHMETIC OPERATIONS

    ADD A,Rn          Add register to A                           1      1

    ADD A,direct      Add direct byte to A                        2      2

    ADD A,@Ri         Add indirect RAM to A                       1      2

    ADD A,#data       Add immediate to A                          2      2

    ADDC A,Rn         Add register to A with carry                1      1

    ADDC A,direct     Add direct byte to A with carry             2      2

    ADDC A,@Ri        Add indirect RAM to A with carry            1      2

    ADDC A,#data      Add immediate to A with carry               2      2

    SUBB A,Rn         Subtract register from A with borrow        1      1

    SUBB A,direct     Subtract direct byte from A with borrow     2      2

    SUBB A,@Ri        Subtract indirect RAM from A with borrow    1      2

    SUBB A,#data      Subtract immediate from A with borrow       2      2

    INC A             Increment A                                 1      1

    INC Rn            Increment register                          1      1

    INC direct        Increment direct byte                       2      2

    INC @Ri           Increment indirect RAM                      1      2

    DEC A             Decrement A                                 1      1

    DEC Rn            Decrement register                          1      1

    DEC direct        Decrement direct byte                       2      2

    DEC @Ri           Decrement indirect RAM                      1      2

    INC DPTR          Increment Data Pointer                      1      1

    MUL AB            Multiply A and B                            1      4

    DIV AB            Divide A by B                               1      8

    DA A              Decimal Adjust A                            1      1

                         LOGICAL OPERATIONS

    ANL A,Rn          AND Register to A                           1      1

    ANL A,direct      AND direct byte to A                        2      2

    ANL A,@Ri         AND indirect RAM to A                       1      2

    ANL A,#data       AND immediate to A                          2      2

    ANL direct,A      AND A to direct byte                        2      2

    ANL direct,#data  AND immediate to direct byte                3      3

    ORL A,Rn          OR Register to A                            1      1

    ORL A,direct      OR direct byte to A                         2      2

    ORL A,@Ri         OR indirect RAM to A                        1      2

    ORL A,#data       OR immediate to A                           2      2

    ORL direct,A      OR A to direct byte                         2      2

    ORL direct,#data  OR immediate to direct byte                 3      3

    XRL A,Rn          Exclusive-OR Register to A                  1      1

    XRL A,direct      Exclusive-OR direct byte to A               2      2

    XRL A,@Ri         Exclusive-OR indirect RAM to A              1      2

    XRL A,#data       Exclusive-OR immediate to A                 2      2

    XRL direct,A      Exclusive-OR A to direct byte               2      2

    XRL direct,#data  Exclusive-OR immediate to direct byte       3      3

    CLR A             Clear A                                     1      1

    CPL A             Complement A                                1      1

    RL A              Rotate A left                               1      1

    RLC A             Rotate A left through carry                 1      1

65                                   Rev. 1.7
                                                             C8051F000/1/2/5/6/7

                                                             C8051F010/1/2/5/6/7

Mnemonic           Description                                 Bytes  Clock

                                                                      Cycles

RR A               Rotate A right                              1      1

RRC A              Rotate A right through carry                1      1

SWAP A             Swap nibbles of A                           1      1

                                DATA TRANSFER

MOV A,Rn           Move register to A                          1      1

MOV A,direct       Move direct byte to A                       2      2

MOV A,@Ri          Move indirect RAM to A                      1      2

MOV A,#data        Move immediate to A                         2      2

MOV Rn,A           Move A to register                          1      1

MOV Rn,direct      Move direct byte to register                2      2

MOV Rn,#data       Move immediate to register                  2      2

MOV direct,A       Move A to direct byte                       2      2

MOV direct,Rn      Move register to direct byte                2      2

MOV direct,direct  Move direct byte to direct                  3      3

MOV direct,@Ri     Move indirect RAM to direct byte            2      2

MOV direct,#data   Move immediate to direct byte               3      3

MOV @Ri,A          Move A to indirect RAM                      1      2

MOV @Ri,direct     Move direct byte to indirect RAM            2      2

MOV @Ri,#data      Move immediate to indirect RAM              2      2

MOV DPTR,#data16   Load data pointer with 16-bit constant      3      3

MOVC A,@A+DPTR     Move code byte relative DPTR to A           1      3

MOVC A,@A+PC       Move code byte relative PC to A             1      3

MOVX A,@Ri         Move external data (8-bit address) to A     1      3

MOVX @Ri,A         Move A to external data (8-bit address)     1      3

MOVX A,@DPTR       Move external data (16-bit address) to A    1      3

MOVX @DPTR,A       Move A to external data (16-bit address)    1      3

PUSH direct        Push direct byte onto stack                 2      2

POP direct         Pop direct byte from stack                  2      2

XCH A,Rn           Exchange register with A                    1      1

XCH A,direct       Exchange direct byte with A                 2      2

XCH A,@Ri          Exchange indirect RAM with A                1      2

XCHD A,@Ri         Exchange low nibble of indirect RAM with A  1      2

                   BOOLEAN MANIPULATION

CLR C              Clear carry                                 1      1

CLR bit            Clear direct bit                            2      2

SETB C             Set carry                                   1      1

SETB bit           Set direct bit                              2      2

CPL C              Complement carry                            1      1

CPL bit            Complement direct bit                       2      2

ANL C,bit          AND direct bit to carry                     2      2

ANL C,/bit         AND complement of direct bit to carry       2      2

ORL C,bit          OR direct bit to carry                      2      2

ORL C,/bit         OR complement of direct bit to carry        2      2

MOV C,bit          Move direct bit to carry                    2      2

MOV bit,C          Move carry to direct bit                    2      2

JC rel             Jump if carry is set                        2      2/3

JNC rel            Jump if carry not set                       2      2/3

JB bit,rel         Jump if direct bit is set                   3      3/4

JNB bit,rel        Jump if direct bit is not set               3      3/4

JBC bit,rel        Jump if direct bit is set and clear bit     3      3/4

                                     Rev. 1.7                                     66
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

    Mnemonic                        Description                                     Bytes                                Clock

                                                                                                                         Cycles

                                           PROGRAM BRANCHING

    ACALL addr11                    Absolute subroutine call                        2                                    3

    LCALL addr16                    Long subroutine call                            3                                    4

    RET                             Return from subroutine                          1                                    5

    RETI                            Return from interrupt                           1                                    5

    AJMP addr11                     Absolute jump                                   2                                    3

    LJMP addr16                     Long jump                                       3                                    4

    SJMP rel                        Short jump (relative address)                   2                                    3

    JMP @A+DPTR                     Jump indirect relative to DPTR                  1                                    3

    JZ rel                          Jump if A equals zero                           2                                    2/3

    JNZ rel                         Jump if A does not equal zero                   2                                    2/3

    CJNE A,direct,rel               Compare direct byte to A and jump if not equal  3                                    3/4

    CJNE A,#data,rel                Compare immediate to A and jump if not equal    3                                    3/4

    CJNE Rn,#data,rel               Compare immediate to register and jump if not   3                                    3/4

                                    equal

    CJNE @Ri,#data,rel              Compare immediate to indirect and jump if not   3                                    4/5

                                    equal

    DJNZ Rn,rel                     Decrement register and jump if not zero         2                                    2/3

    DJNZ direct,rel                 Decrement direct byte and jump if not zero      3                                    3/4

    NOP                             No operation                                    1                                    1

    Notes on Registers, Operands and Addressing Modes:

    Rn - Register R0-R7 of the currently selected register bank.

    @Ri - Data RAM location addressed indirectly through register R0-R1

    rel - 8-bit, signed (two’s compliment) 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

    #data 16 - 16-bit constant

    bit - Direct-addressed bit in Data RAM or SFR.

    addr 11 - 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.

    addr 16 - 16-bit destination address used by LCALL and LJMP. The destination may be anywhere within the

    64K-byte program memory space.

    There is one unused opcode (0xA5) that performs the same function as NOP.

    All mnemonics copyrighted © Intel Corporation 1980.

67                                                  Rev. 1.7
                                                                             C8051F000/1/2/5/6/7

                                                                             C8051F010/1/2/5/6/7

10.2.    MEMORY ORGANIZATION

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. There are 256 bytes of internal data memory and 64K bytes of

internal program memory address space implemented within the CIP-51.         The CIP-51 memory organization is

shown in Figure 10.2.

10.2.1.  Program Memory

The CIP-51 has a 64K-byte program memory space.          The MCU implements 32896 bytes of this program memory

space as in-system, reprogrammable Flash memory, organized in a contiguous block from addresses 0x0000 to

0x807F.  Note: 512 bytes (0x7E00 – 0x7FFF) of this memory are reserved for factory use and are not available for

user program storage.

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 Section 11 (Flash Memory) for further details.

10.2.2.  Data Memory

The CIP-51 implements 256 bytes 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 bytes of data memory. Locations 0x00 through 0x1F are

addressable as four banks of general purpose registers, each bank consisting of eight byte-wide registers. The next

16 bytes, locations 0x20 through 0x2F, may be addressed as bytes or as 128 bit locations accessible with the direct-

bit 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 will access the upper 128 bytes of data memory.         Figure

10.2 illustrates the data memory organization of the CIP-51.

The C8051F005/06/07/15/16/17 also have 2048 bytes of RAM in the external data memory space of the CIP-51,

accessible using the MOVX instruction. Refer to Section 12 (External RAM) for details.

10.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 Figure 10.6).  This allows fast context switching when entering

subroutines and interrupt service routines. Indirect addressing modes use registers R0 and R1 as index registers.

10.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 individually addressable bits.     Each bit has a bit address from 0x00 to 0x7F.      Bit 0

of the byte at 0x20 has bit address 0x00 while bit 7 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:

         MOV        C,  22h.3

moves the Boolean value at 0x13 (bit 3 of the byte at location 0x22) into the user Carry flag.

                                                         Rev. 1.7                                                          68
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                                    Figure 10.2. Memory Map

               PROGRAM MEMORY                                        DATA MEMORY

    0x807F                                          INTERNAL DATA ADDRESS SPACE

    0x8000     128 Byte ISP FLASH           0xFF

                                                          Upper 128 RAM           Special Function

    0x7FFF      RESERVED                            (Indirect Addressing          Register's

    0x7E00                                  0x80              Only)               (Direct Addressing Only)

    0x7DFF                                  0x7F

                                                    (Direct and Indirect

                                                          Addressing)             Lower 128 RAM

                FLASH                       0x30                                  (Direct and Indirect

                                            0x2F          Bit Addressable         Addressing)

                (In-System                  0x20

               Programmable in 512          0x1F    General Purpose

                Byte Sectors)               0x00          Registers

    0x0000                                          EXTERNAL DATA ADDRESS SPACE

                                            0xFFFF  (same 2048 byte RAM block )

                                            0xF800

                                            0x17FF                                The same 2048 byte RAM

                                            0x1000  (same 2048 byte RAM block )   block can be addressed on

                                                                                  2k boundaries throughout

                                            0x0FFF                                the 64k External Data

                                            0x0800  (same 2048 byte RAM block )   Memory space.

                                            0x07FF  RAM - 2048 Bytes

                                                    (accessable using MOVX

                                            0x0000        command)

10.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.

The MCUs also have built-in hardware for a stack record.      The stack record is a 32-bit shift register, where each

Push or increment SP pushes one record bit onto the register, and each Call or interrupt pushes two record bits onto

the register.  (A Pop or decrement SP pops one record bit, and a Return pops two record bits, also.)        The stack

record circuitry can also detect an overflow or underflow on the Stack, and can notify the debug software even with

the MCU running full-speed debug.

69                                                  Rev. 1.7
                                                                             C8051F000/1/2/5/6/7

                                                                             C8051F010/1/2/5/6/7

10.3.     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. Table 10.3 lists the SFRs implemented in the CIP-51 System Controller.

The SFR registers are accessed any time 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, P1, SCON, 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 Table 10.3, for a detailed description of each register.

                           Table 10.2. Special    Function         Register Memory Map

F8        SPI0CN        PCA0H       PCA0CPH0      PCA0CPH1         PCA0CPH2       PCA0CPH3  PCA0CPH4            WDTCN

F0        B                                                                                 EIP1                EIP2

E8        ADC0CN        PCA0L       PCA0CPL0      PCA0CPL1         PCA0CPL2       PCA0CPL3  PCA0CPL4            RSTSRC

E0        ACC           XBR0        XBR1          XBR2                                      EIE1                EIE2

D8        PCA0CN        PCA0MD      PCA0CPM0      PCA0CPM1         PCA0CPM2       PCA0CPM3  PCA0CPM4

D0        PSW           REF0CN      DAC0L         DAC0H            DAC0CN         DAC1L     DAC1H               DAC1CN

C8        T2CON                     RCAP2L        RCAP2H           TL2            TH2                           SMB0CR

C0        SMB0CN        SMB0STA     SMB0DAT       SMB0ADR          ADC0GTL        ADC0GTH   ADC0LTL             ADC0LTH

B8        IP                        AMX0CF        AMX0SL           ADC0CF                   ADC0L               ADC0H

B0        P3            OSCXCN      OSCICN                                                  FLSCL               FLACL***

A8        IE                                                                      PRT1IF                        EMI0CN***

A0        P2                                                       PRT0CF         PRT1CF    PRT2CF              PRT3CF

98        SCON          SBUF        SPI0CFG       SPI0DAT                         SPI0CKR   CPT0CN              CPT1CN

90        P1            TMR3CN      TMR3RLL       TMR3RLH          TMR3L          TMR3H

88        TCON          TMOD        TL0           TL1              TH0            TH1       CKCON               PSCTL

80        P0            SP          DPL           DPH                                                           PCON

              0(8)          1(9)    2(A)                  3(B)     4(C)           5(D)      6(E)                7(F)

          Bit Addressable

                                  Table 10.3. Special Function Registers

SFRs are listed in alphabetical order. All undefined SFR locations are reserved.

* Refers to a register in the C8051F000/1/2/5/6/7 only.

** Refers to a register in the C8051F010/1/2/5/6/7 only.

*** Refers to a register in the C8051F005/06/07/15/16/17 only.

Address       Register         Description                                                                      Page No.

0xE0          ACC              Accumulator                                                                            76

0xBC          ADC0CF           ADC Configuration                                                                33*, 42**

0xE8          ADC0CN           ADC Control                                                                      34*, 45**

0xC5          ADC0GTH          ADC Greater-Than Data Word (High Byte)                                           36*, 47**

0xC4          ADC0GTL          ADC Greater-Than Data Word (Low Byte)                                            36*, 47**

0xBF          ADC0H            ADC Data Word (High Byte)                                                        35*, 46**

0xBE          ADC0L            ADC Data Word (Low Byte)                                                         35*, 46**

                                                         Rev. 1.7                                                          70
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

    Address  Register  Description                                 Page No.

    0xC7     ADC0LTH   ADC Less-Than Data Word (High Byte)         36*, 47**

    0xC6     ADC0LTL   ADC Less-Than Data Word (Low Byte)          36*, 47**

    0xBA     AMX0CF    ADC MUX Configuration                       31*, 42**

    0xBB     AMX0SL    ADC MUX Channel Selection                   32*, 43**

    0xF0     B         B Register                                  76

    0x8E     CKCON     Clock Control                               144

    0x9E     CPT0CN    Comparator 0 Control                        56

    0x9F     CPT1CN    Comparator 1 Control                        58

    0xD4     DAC0CN    DAC 0 Control                               52

    0xD3     DAC0H     DAC 0 Data Word (High Byte)                 52

    0xD2     DAC0L     DAC 0 Data Word (Low Byte)                  52

    0xD7     DAC1CN    DAC 1 Control                               53

    0xD6     DAC1H     DAC 1 Data Word (High Byte)                 53

    0xD5     DAC1L     DAC 1 Data Word (Low Byte)                  53

    0x83     DPH       Data Pointer (High Byte)                    74

    0x82     DPL       Data Pointer (Low Byte)                     74

    0xE6     EIE1      Extended Interrupt Enable 1                 81

    0xE7     EIE2      Extended Interrupt Enable 2                 82

    0xF6     EIP1      External Interrupt Priority 1               83

    0xF7     EIP2      External Interrupt Priority 2               84

    0xAF     EMI0CN    External Memory Interface Control           92***

    0xB7     FLACL     Flash Access Limit                          90***

    0xB6     FLSCL     Flash Memory Timing Prescaler               91

    0xA8     IE        Interrupt Enable                            79

    0xB8     IP        Interrupt Priority Control                  80

    0xB2     OSCICN    Internal Oscillator Control                 100

    0xB1     OSCXCN    External Oscillator Control                 101

    0x80     P0        Port 0 Latch                                109

    0x90     P1        Port 1 Latch                                110

    0xA0     P2        Port 2 Latch                                111

    0xB0     P3        Port 3 Latch                                112

    0xD8     PCA0CN    Programmable Counter Array 0 Control        160

    0xFA     PCA0CPH0  PCA Capture Module 0 Data Word (High Byte)  163

    0xFB     PCA0CPH1  PCA Capture Module 1 Data Word (High Byte)  163

    0xFC     PCA0CPH2  PCA Capture Module 2 Data Word (High Byte)  163

    0xFD     PCA0CPH3  PCA Capture Module 3 Data Word (High Byte)  163

    0xFE     PCA0CPH4  PCA Capture Module 4 Data Word (High Byte)  163

    0xEA     PCA0CPL0  PCA Capture Module 0 Data Word (Low Byte)   163

    0xEB     PCA0CPL1  PCA Capture Module 1 Data Word (Low Byte)   163

    0xEC     PCA0CPL2  PCA Capture Module 2 Data Word (Low Byte)   163

    0xED     PCA0CPL3  PCA Capture Module 3 Data Word (Low Byte)   163

71                                           Rev. 1.7
                                                              C8051F000/1/2/5/6/7

                                                              C8051F010/1/2/5/6/7

Address  Register  Description                                     Page No.

0xEE     PCA0CPL4  PCA Capture Module 4 Data Word (Low Byte)       163

0xDA     PCA0CPM0  Programmable Counter Array 0 Capture/Compare 0  162

0xDB     PCA0CPM1  Programmable Counter Array 0 Capture/Compare 1  162

0xDC     PCA0CPM2  Programmable Counter Array 0 Capture/Compare 2  162

0xDD     PCA0CPM3  Programmable Counter Array 0 Capture/Compare 3  162

0xDE     PCA0CPM4  Programmable Counter Array 0 Capture/Compare 4  162

0xF9     PCA0H     PCA Counter/Timer Data Word (High Byte)         163

0xE9     PCA0L     PCA Counter/Timer Data Word (Low Byte)          163

0xD9     PCA0MD    Programmable Counter Array 0 Mode               161

0x87     PCON      Power Control                                   86

0xA4     PRT0CF    Port 0 Configuration                            109

0xA5     PRT1CF    Port 1 Configuration                            110

0xAD     PRT1IF    Port 1 Interrupt Flags                          110

0xA6     PRT2CF    Port 2 Configuration                            111

0xA7     PRT3CF    Port 3 Configuration                            112

0x8F     PSCTL     Program Store RW Control                        88

0xD0     PSW       Program Status Word                             75

0xCB     RCAP2H    Counter/Timer 2 Capture (High Byte)             151

0xCA     RCAP2L    Counter/Timer 2 Capture (Low Byte)              151

0xD1     REF0CN    Voltage Reference Control Register              61

0xEF     RSTSRC    Reset Source Register                           97

0x99     SBUF      Serial Data Buffer (UART)                       136

0x98     SCON      Serial Port Control (UART)                      137

0xC3     SMB0ADR   SMBus 0 Address                                 120

0xC0     SMB0CN    SMBus 0 Control                                 118

0xCF     SMB0CR    SMBus 0 Clock Rate                              119

0xC2     SMB0DAT   SMBus 0 Data                                    120

0xC1     SMB0STA   SMBus 0 Status                                  121

0x81     SP        Stack Pointer                                   74

0x9A     SPI0CFG   Serial Peripheral Interface Configuration       127

0x9D     SPI0CKR   SPI Clock Rate                                  129

0xF8     SPI0CN    SPI Bus Control                                 128

0x9B     SPI0DAT   SPI Port 1Data                                  129

0xC8     T2CON     Counter/Timer 2 Control                         150

0x88     TCON      Counter/Timer Control                           142

0x8C     TH0       Counter/Timer 0 Data Word (High Byte)           145

0x8D     TH1       Counter/Timer 1 Data Word (High Byte)           145

0xCD     TH2       Counter/Timer 2 Data Word (High Byte)           151

0x8A     TL0       Counter/Timer 0 Data Word (Low Byte)            145

0x8B     TL1       Counter/Timer 1 Data Word (Low Byte)            145

0xCC     TL2       Counter/Timer 2 Data Word (Low Byte)            151

                                           Rev. 1.7                                72
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

    Address  Register    Description                               Page No.

    0x89     TMOD        Counter/Timer Mode                        143

    0x91     TMR3CN      Timer 3 Control                           152

    0x95     TMR3H       Timer 3 High                              153

    0x94     TMR3L       Timer 3 Low                               153

    0x93     TMR3RLH     Timer 3 Reload High                       153

    0x92     TMR3RLL     Timer 3 Reload Low                        153

    0xFF     WDTCN       Watchdog Timer Control                    96

    0xE1     XBR0        Port I/O Crossbar Configuration 1         105

    0xE2     XBR1        Port I/O Crossbar Configuration 2         107

    0xE3     XBR2        Port I/O Crossbar Configuration 3         108

0x84-86, 0x96-97, 0x9C,

0xA1-A3, 0xA9-AC,

0xAE, 0xB3-B5, 0xB9,     Reserved

0xBD, 0xC9, 0xCE,

0xDF, 0xE4-E5, 0xF1-F5

* Refers to a register in the C8051F000/1/2/5/6/7 only.

** Refers to a register in the C8051F010/1/2/5/6/7 only.

*** Refers to a register in the C8051F005/06/07/15/16/17 only.

73                                                       Rev. 1.7
                                                                      C8051F000/1/2/5/6/7

                                                                      C8051F010/1/2/5/6/7

10.3.1.  Register Descriptions

Following are descriptions of SFRs related to the operation of the CIP-51 System Controller.    Reserved bits should

not be set to logic l. Future product versions may use these bits to implement new features in which case the reset

value of the bit will be logic 0, selecting the feature’s default state. Detailed descriptions of the remaining SFRs are

included in the sections of the datasheet associated with their corresponding system function.

                                    Figure 10.3. SP: Stack Pointer

R/W      R/W                  R/W   R/W   R/W                   R/W     R/W                     R/W   Reset Value

                                                                                                      00000111

Bit7     Bit6                 Bit5  Bit4  Bit3                  Bit2    Bit1                    Bit0  SFR Address:

                                                                                                      0x81

Bits 7-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 10.4. DPL: Data Pointer Low Byte

R/W      R/W                  R/W   R/W   R/W                   R/W     R/W                     R/W   Reset Value

                                                                                                      00000000

Bit7     Bit6                 Bit5  Bit4  Bit3                  Bit2    Bit1                    Bit0  SFR Address:

                                                                                                      0x82

Bits 7-0: DPL: Data Pointer Low.

         The DPL register is the low byte of the 16-bit DPTR.   DPTR is used to access indirectly

         addressed RAM and Flash Memory.

                              Figure 10.5. DPH: Data Pointer High Byte

R/W      R/W                  R/W   R/W   R/W                   R/W     R/W                     R/W   Reset Value

                                                                                                      00000000

Bit7     Bit6                 Bit5  Bit4  Bit3                  Bit2    Bit1                    Bit0  SFR Address:

                                                                                                      0x83

Bits 7-0: DPH: Data Pointer High.

         The DPH register is the high byte of the 16-bit DPTR.  DPTR is used to access indirectly

         addressed RAM and Flash Memory.

                                          Rev. 1.7                                                                        74
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                                Figure 10.6. PSW: Program Status Word

    R/W             R/W         R/W           R/W    R/W               R/W             R/W                R/W     Reset Value

    CY              AC            F0          RS1    RS0               OV              F1                 PARITY  00000000

    Bit7            Bit6        Bit5           Bit4  Bit3              Bit2            Bit1               Bit0    SFR Address:

                                                                                               (bit addressable)  0xD0

    Bit7:     CY: Carry Flag.

              This bit is set when the last arithmetic operation results in a carry (addition) or a borrow

              (subtraction). It is cleared to 0 by all other arithmetic operations.

    Bit6:     AC: Auxiliary Carry Flag.

              This bit is set when the last arithmetic operation results in a carry into (addition) or a

              borrow from (subtraction) the high order nibble. It is cleared to 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.

              RS1          RS0    Register Bank      Address

                 0          0            0           0x00-0x07

                 0          1            1           0x08-0x0F

                 1          0            2           0x10-0x17

                 1          1            3           0x18-0x1F

              Note: Any instruction which changes the RS1-RS0 bits must not be immediately followed

              by the “MOV Rn, A” instruction.

    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.

              (Read only)

              This bit is set to 1 if the sum of the eight bits in the accumulator is odd and cleared if the

              sum is even.

75                                                   Rev. 1.7
                                                                           C8051F000/1/2/5/6/7

                                                                           C8051F010/1/2/5/6/7

                                  Figure 10.7. ACC: Accumulator

R/W    R/W                  R/W   R/W    R/W                        R/W    R/W          R/W                Reset Value

ACC.7  ACC.6             ACC.5    ACC.4  ACC.3                      ACC.2  ACC.1        ACC.0              00000000

Bit7   Bit6                 Bit5  Bit4   Bit3                       Bit2   Bit1         Bit0               SFR Address:

                                                                                        (bit addressable)  0xE0

Bits 7-0: ACC: Accumulator

       This register is the accumulator for arithmetic operations.

                                  Figure 10.8. B: B Register

R/W    R/W                  R/W   R/W    R/W                        R/W    R/W          R/W                Reset Value

B.7    B.6                  B.5   B.4    B.3                        B.2    B.1          B.0                00000000

Bit7   Bit6                 Bit5  Bit4   Bit3                       Bit2   Bit1         Bit0               SFR Address:

                                                                                        (bit addressable)  0xF0

Bits 7-0: B: B Register

       This register serves as a second accumulator for certain arithmetic operations.

                                         Rev. 1.7                                                                        76
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

10.4.    INTERRUPT HANDLER

The CIP-51 includes an extended interrupt system supporting a total of 22 interrupt sources with two priority levels.

The allocation of interrupt sources between on-chip peripherals and external inputs pins varies according to the

specific 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 1.

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 program 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 1 regardless of the interrupt’s enable/disable state.)

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 1 before

the 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 interrupt-pending 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.

10.4.1.  MCU Interrupt Sources and Vectors

The MCUs allocate 12 interrupt sources to on-chip peripherals.       Up to 10 additional external interrupt sources are

available depending on the I/O pin configuration of the device.      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 Table 10.4.           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).

10.4.2.  External Interrupts

Two of the external interrupt sources (/INT0 and /INT1) are configurable as active-low level-sensitive or active-low

edge-sensitive inputs depending on the setting of IT0 (TCON.0) and IT1 (TCON.2).                     IE0 (TCON.1) and IE1

(TCON.3) serve as the interrupt-pending flag for the /INT0 and /INT1 external interrupts, respectively. If an /INT0

or /INT1 external interrupt is configured as edge-sensitive, the corresponding interrupt-pending flag is automatically

cleared by the hardware when the CPU vectors to the ISR.             When configured as level sensitive, the interrupt-

pending flag follows the state of the external interrupt’s input pin. 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.

The remaining four external interrupts (External Interrupts 4-7) are active-low, edge-sensitive inputs. The interrupt-

pending flags for these interrupts are in the Port 1 Interrupt Flag Register shown in Figure 15.10.

77                                                      Rev. 1.7
                                                                          C8051F000/1/2/5/6/7

                                                                          C8051F010/1/2/5/6/7

                                       Table 10.4. Interrupt Summary

         Interrupt Source              Interrupt  Priority  Interrupt-Pending Flag                  Enable

                                       Vector     Order

Reset                                  0x0000     Top       None                    Always enabled

External Interrupt 0 (/INT0)           0x0003     0         IE0 (TCON.1)            EX0 (IE.0)

Timer 0 Overflow                       0x000B     1         TF0 (TCON.5)            ET0 (IE.1)

External Interrupt 1 (/INT1)           0x0013     2         IE1 (TCON.3)            EX1 (IE.2)

Timer 1 Overflow                       0x001B     3         TF1 (TCON.7)            ET1 (IE.3)

Serial Port (UART)                     0x0023     4         RI (SCON.0)             ES (IE.4)

                                                            TI (SCON.1)

Timer 2 Overflow (or EXF2)             0x002B     5         TF2 (T2CON.7)           ET2 (IE.5)

Serial Peripheral Interface            0x0033     6         SPIF (SPI0CN.7)         ESPI0 (EIE1.0)

                                                            WCOL (SPI0CN.6)

                                                            MODF (SPI0CN.5)

                                                            RXOVRN (SPI0CN.4)

SMBus Interface                        0x003B     7         SI (SMB0CN.3)           ESMB0 (EIE1.1)

ADC0 Window Comparison                 0x0043     8         ADWINT (ADC0CN.2)       EWADC0 (EIE1.2)

Programmable Counter Array        0    0x004B     9         CF (PCA0CN.7)           EPCA0 (EIE1.3)

                                                            CCFn (PCA0CN.n)

Comparator 0 Falling Edge              0x0053     10        CP0FIF (CPT0CN.4)       ECP0F (EIE1.4)

Comparator 0 Rising Edge               0x005B     11        CP0RIF (CPT0CN.5)       ECP0R (EIE1.5)

Comparator 1 Falling Edge              0x0063     12        CP1FIF (CPT1CN.4)       ECP1F (EIE1.6)

Comparator 1 Rising Edge               0x006B     13        CP1RIF (CPT1CN.5)       ECP1R (EIE1.7)

Timer 3 Overflow                       0x0073     14        TF3 (TMR3CN.7)          ET3 (EIE2.0)

ADC0 End of Conversion                 0x007B     15        ADCINT (ADC0CN.5)       EADC0 (EIE2.1)

External Interrupt 4                   0x0083     16        IE4 (PRT1IF.4)          EX4 (EIE2.2)

External Interrupt 5                   0x008B     17        IE5 (PRT1IF.5)          EX5 (EIE2.3)

External Interrupt 6                   0x0093     18        IE6 (PRT1IF.6)          EX6 (EIE2.4)

External Interrupt 7                   0x009B     19        IE7 (PRT1IF.7)          EX7 (EIE2.5)

Unused Interrupt Location              0x00A3     20        None                    Reserved (EIE2.6)

External Crystal OSC Ready             0x00AB     21        XTLVLD (OSCXCN.7)       EXVLD (EIE2.7)

10.4.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-EIP2) used to configure its priority

level.   Low priority 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.

10.4.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 system clock cycles: 1 clock cycle

to detect the interrupt, 5 clock cycles to execute the RETI, 8 clock cycles to complete the DIV instruction and 4

clock cycles to execute the LCALL 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.

                                                  Rev. 1.7                                                                 78
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

10.4.5.    Interrupt Register Descriptions

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 10.9. IE: Interrupt Enable

    R/W    R/W        R/W                     R/W              R/W   R/W       R/W              R/W       Reset Value

    EA     IEGF0      ET2                      ES              ET1   EX1       ET0              EX0       00000000

    Bit7   Bit6       Bit5                     Bit4            Bit3  Bit2      Bit1             Bit0      SFR Address:

                                                                                     (bit addressable)    0xA8

    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:  IEGF0: General Purpose Flag 0.

           This is a general purpose flag for use under software control.

    Bit5:  ET2: Enable Timer 2 Interrupt.

           This bit sets the masking of the Timer 2 interrupt.

           0: Disable all Timer 2 interrupts.

           1: Enable interrupt requests generated by the TF2 flag (T2CON.7)

    Bit4:  ES: Enable Serial Port (UART) Interrupt.

           This bit sets the masking of the Serial Port (UART) interrupt.

           0: Disable all UART interrupts.

           1: Enable interrupt requests generated by the R1 flag (SCON.0) or T1 flag (SCON.1).

    Bit3:  ET1: Enable Timer 1 Interrupt.

           This bit sets the masking of the Timer 1 interrupt.

           0: Disable all Timer 1 interrupts.

           1: Enable interrupt requests generated by the TF1 flag (TCON.7).

    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 pin.

    Bit1:  ET0: Enable Timer 0 Interrupt.

           This bit sets the masking of the Timer 0 interrupt.

           0: Disable all Timer 0 interrupts.

           1: Enable interrupt requests generated by the TF0 flag (TCON.5).

    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 pin.

79                                                   Rev. 1.7
                                                                                C8051F000/1/2/5/6/7

                                                                                C8051F010/1/2/5/6/7

                Figure 10.10. IP: Interrupt Priority

R/W       R/W   R/W   R/W                                    R/W   R/W          R/W   R/W                Reset Value

-         -     PT2   PS                                     PT1   PX1          PT0   PX0                00000000

Bit7      Bit6  Bit5  Bit4                                   Bit3  Bit2         Bit1  Bit0               SFR Address:

                                                                                      (bit addressable)  0xB8

Bits7-6:  UNUSED. Read = 11b, Write = don’t care.

Bit5:     PT2 Timer 2 Interrupt Priority Control.

          This bit sets the priority of the Timer 2 interrupts.

          0: Timer 2 interrupts set to low priority level.

          1: Timer 2 interrupts set to high priority level.

Bit4:     PS: Serial Port (UART) Interrupt Priority Control.

          This bit sets the priority of the Serial Port (UART)     interrupts.

          0: UART interrupts set to low priority level.

          1: UART interrupts set to high priority level.

Bit3:     PT1: Timer 1 Interrupt Priority Control.

          This bit sets the priority of the Timer 1 interrupts.

          0: Timer 1 interrupts 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   interrupts.

          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 interrupts.

          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   interrupts.

          0: External Interrupt 0 set to low priority level.

          1: External Interrupt 0 set to high priority level.

                                                    Rev. 1.7                                                           80
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                  Figure 10.11. EIE1: Extended Interrupt Enable 1

    R/W    R/W    R/W                        R/W            R/W      R/W          R/W   R/W    Reset Value

    ECP1R  ECP1F  ECP0R                     ECP0F        EPCA0     EWADC0     ESMB0     ESPI0  00000000

    Bit7   Bit6   Bit5                       Bit4           Bit3     Bit2         Bit1  Bit0   SFR Address:

                                                                                               0xE6

    Bit7:  ECP1R: Enable Comparator 1 (CP1) Rising Edge Interrupt.

           This bit sets the masking of the CP1 interrupt.

           0: Disable CP1 Rising Edge interrupt.

           1: Enable interrupt requests generated by the CP1RIF flag (CPT1CN.5).

    Bit6:  ECP1F: Enable Comparator 1 (CP1) Falling Edge Interrupt.

           This bit sets the masking of the CP1 interrupt.

           0: Disable CP1 Falling Edge interrupt.

           1: Enable interrupt requests generated by the CP1FIF flag (CPT1CN.4).

    Bit5:  ECP0R: Enable Comparator 0 (CP0) Rising Edge Interrupt.

           This bit sets the masking of the CP0 interrupt.

           0: Disable CP0 Rising Edge interrupt.

           1: Enable interrupt requests generated by the CP0RIF flag (CPT0CN.5).

    Bit4:  ECP0F: Enable Comparator 0 (CP0) Falling Edge Interrupt.

           This bit sets the masking of the CP0 interrupt.

           0: Disable CP0 Falling Edge interrupt.

           1: Enable interrupt requests generated by the CP0FIF flag (CPT0CN.4).

    Bit3:  EPCA0: Enable Programmable Counter Array (PCA0) Interrupt.

           This bit sets the masking of the PCA0 interrupts.

           0: Disable all PCA0 interrupts.

           1: Enable interrupt requests generated by PCA0.

    Bit2:  EWADC0: Enable Window Comparison ADC0 Interrupt.

           This bit sets the masking of ADC0 Window Comparison interrupt.

           0: Disable ADC0 Window Comparison Interrupt.

           1: Enable Interrupt requests generated by ADC0 Window Comparisons.

    Bit1:  ESMB0: Enable SMBus 0 Interrupt.

           This bit sets the masking of the SMBus interrupt.

           0: Disable all SMBus interrupts.

           1: Enable interrupt requests generated by the SI flag (SMB0CN.3).

    Bit0:  ESPI0: Enable Serial Peripheral Interface 0 Interrupt.

           This bit sets the masking of SPI0 interrupt.

           0: Disable all SPI0 interrupts.

           1: Enable Interrupt requests generated by SPI0.

81                                                 Rev. 1.7
                                                                  C8051F000/1/2/5/6/7

                                                                  C8051F010/1/2/5/6/7

                  Figure 10.12. EIE2: Extended Interrupt Enable 2

R/W    R/W        R/W                    R/W     R/W        R/W            R/W        R/W   Reset Value

EXVLD  -          EX7                    EX6     EX5        EX4            EADC0      ET3   00000000

Bit7   Bit6       Bit5                     Bit4  Bit3       Bit2           Bit1       Bit0  SFR Address:

                                                                                            0xE7

Bit7:  EXVLD: Enable External Clock Source Valid (XTLVLD) Interrupt.

       This bit sets the masking of the XTLVLD interrupt.

       0: Disable all XTLVLD interrupts.

       1: Enable interrupt requests generated by the XTLVLD flag (OSCXCN.7)

Bit6:  Reserved.  Must Write 0.  Reads 0.

Bit5:  EX7: Enable External Interrupt 7.

       This bit sets the masking of External Interrupt 7.

       0: Disable External Interrupt 7.

       1: Enable interrupt requests generated by the External Interrupt 7 input pin.

Bit4:  EX6: Enable External Interrupt 6.

       This bit sets the masking of External Interrupt 6.

       0: Disable External Interrupt 6.

       1: Enable interrupt requests generated by the External Interrupt 6 input pin.

Bit3:  EX5: Enable External Interrupt 5.

       This bit sets the masking of External Interrupt 5.

       0: Disable External Interrupt 5.

       1: Enable interrupt requests generated by the External Interrupt 5 input pin.

Bit2:  EX4: Enable External Interrupt 4.

       This bit sets the masking of External Interrupt 4.

       0: Disable External Interrupt 4.

       1: Enable interrupt requests generated by the External Interrupt 4 input pin.

Bit1:  EADC0: Enable ADC0 End of Conversion Interrupt.

       This bit sets the masking of the ADC0 End of Conversion Interrupt.

       0: Disable ADC0 Conversion Interrupt.

       1: Enable interrupt requests generated by the ADC0 Conversion Interrupt.

Bit0:  ET3: Enable Timer 3 Interrupt.

       This bit sets the masking of the Timer 3 interrupt.

       0: Disable all Timer 3 interrupts.

       1: Enable interrupt requests generated by the TF3 flag (TMR3CN.7)

                                                 Rev. 1.7                                                 82
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                  Figure 10.13. EIP1: Extended Interrupt Priority 1

    R/W    R/W    R/W    R/W                                  R/W    R/W         R/W   R/W    Reset Value

    PCP1R  PCP1F  PCP0R  PCP0F                               PPCA0   PWADC0  PSMB0     PSPI0  00000000

    Bit7   Bit6   Bit5   Bit4                                 Bit3   Bit2        Bit1  Bit0   SFR Address:

                                                                                              0xF6

    Bit7:  PCP1R: Comparator 1 (CP1) Rising Interrupt Priority Control.

           This bit sets the priority of the CP1 interrupt.

           0: CP1 rising interrupt set to low priority level.

           1: CP1 rising interrupt set to high priority level.

    Bit6:  PCP1F: Comparator 1 (CP1) Falling Interrupt Priority Control.

           This bit sets the priority of the CP1 interrupt.

           0: CP1 falling interrupt set to low priority level.

           1: CP1 falling interrupt set to high priority level.

    Bit5:  PCP0R: Comparator 0 (CP0) Rising Interrupt Priority Control.

           This bit sets the priority of the CP0 interrupt.

           0: CP0 rising interrupt set to low priority level.

           1: CP0 rising interrupt set to high priority level.

    Bit4:  PCP0F: Comparator 0 (CP0) Falling Interrupt Priority Control.

           This bit sets the priority of the CP0 interrupt.

           0: CP0 falling interrupt set to low priority level.

           1: CP0 falling interrupt set to high priority level.

    Bit3:  PPCA0: Programmable Counter Array (PCA0) Interrupt Priority Control.

           This bit sets the priority of the PCA0 interrupt.

           0: PCA0 interrupt set to low priority level.

           1: PCA0 interrupt set to high priority level.

    Bit2:  PWADC0: ADC0 Window Comparator Interrupt Priority Control.

           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:  PSMB0: SMBus 0 Interrupt Priority Control.

           This bit sets the priority of the SMBus interrupt.

           0: SMBus interrupt set to low priority level.

           1: SMBus interrupt set to high priority level.

    Bit0:  PSPI0: Serial Peripheral Interface 0 Interrupt Priority Control.

           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.

83                                                       Rev. 1.7
                                                                        C8051F000/1/2/5/6/7

                                                                        C8051F010/1/2/5/6/7

             Figure 10.14. EIP2: Extended Interrupt Priority 2

R/W    R/W   R/W   R/W                                   R/W    R/W         R/W    R/W   Reset Value

PXVLD  -     PX7   PX6                                   PX5    PX4         PADC0  PT3   00000000

Bit7   Bit6  Bit5  Bit4                                  Bit3   Bit2        Bit1   Bit0  SFR Address:

                                                                                         0xF7

Bit7:  PXVLD: External Clock Source Valid (XTLVLD) Interrupt Priority Control.

       This bit sets the priority of the XTLVLD interrupt.

       0: XTLVLD interrupt set to low priority level.

       1: XTLVLD interrupt set to high priority level.

Bit6:  Reserved: Must write 0. Reads 0.

Bit5:  PX7: External Interrupt 7 Priority Control.

       This bit sets the priority of the External Interrupt 7.

       0: External Interrupt 7 set to low priority level.

       1: External Interrupt 7 set to high priority level.

Bit4:  PX6: External Interrupt 6 Priority Control.

       This bit sets the priority of the External Interrupt 6.

       0: External Interrupt 6 set to low priority level.

       1: External Interrupt 6 set to high priority level.

Bit3:  PX5: External Interrupt 5 Priority Control.

       This bit sets the priority of the External Interrupt 5.

       0: External Interrupt 5 set to low priority level.

       1: External Interrupt 5 set to high priority level.

Bit2:  PX4: External Interrupt 4 Priority Control.

       This bit sets the priority of the External Interrupt 4.

       0: External Interrupt 4 set to low priority level.

       1: External Interrupt 4 set to high priority level.

Bit1:  PADC0: ADC End of Conversion Interrupt Priority Control.

       This bit sets the priority of the ADC0 End of Conversion Interrupt.

       0: ADC0 End of Conversion interrupt set to low priority level.

       1: ADC0 End of Conversion interrupt set to high priority level.

Bit0:  PT3: Timer 3 Interrupt Priority Control.

       This bit sets the priority of the Timer 3 interrupts.

       0: Timer 3 interrupt set to low priority level.

       1: Timer 3 interrupt set to high priority level.

                                                 Rev. 1.7                                              84
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

10.5.       Power Management Modes

The CIP-51 core has two software programmable power management modes: Idle and Stop.                Idle mode halts the

CPU while leaving the external peripherals and internal clocks active.    In Stop mode, the CPU is halted, all

interrupts and timers (except the Missing Clock Detector) are inactive, and the system clock is stopped.                  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 10.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 by enabling/disabling individual peripherals as needed.            Each analog

peripheral can be disabled when not in use and put into low power mode.   Digital peripherals, such as timers or

serial buses, draw little power whenever they are not in use.   Turning off the oscillator saves even more power, but

requires a reset to restart the MCU.

10.5.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.   All internal registers and memory maintain their original data.  All analog

and digital peripherals can remain active during Idle mode.

Idle mode is terminated when an enabled interrupt or /RST is asserted.    The assertion of an enabled interrupt will

cause the Idle Mode Selection bit (PCON.0) to be cleared and the CPU will resume operation.                 The pending

interrupt 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.

Note: If the instruction following the write of the IDLE bit is a single-byte instruction and an interrupt occurs during

the execution phase of the instruction that sets the IDLE bit, the CPU may not wake from Idle mode when a future

interrupt occurs. Any instructions that set the IDLE bit should be followed by an instruction that has 2 or more op-

code bytes, for example:

// in ‘C’:

PCON |= 0x01;             // set IDLE bit

PCON = PCON;              // ... followed by a 3-cycle dummy instruction

; in assembly:

ORL    PCON, #01h         ; set IDLE bit

MOV PCON, PCON            ; ... followed by a 3-cycle dummy instruction

If enabled, the 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 Section 13.8 Watchdog Timer for more information on the use and configuration of the

WDT.

10.5.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.     In Stop mode, the CPU and oscillators are stopped, effectively shutting down all digital

peripherals.    Each analog peripheral must 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.

85                                                    Rev. 1.7
                                                                           C8051F000/1/2/5/6/7

                                                                           C8051F010/1/2/5/6/7

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 sleep for longer than the MCD timeout of

100sec.

                Figure 10.15. PCON: Power Control Register

R/W       R/W   R/W                R/W         R/W          R/W                  R/W               R/W    Reset Value

SMOD      GF4   GF3                GF2         GF1          GF0                  STOP              IDLE   00000000

Bit7      Bit6  Bit5               Bit4        Bit3         Bit2                 Bit1              Bit0   SFR Address:

                                                                                                          0x87

Bit7:     SMOD: Serial Port Baud Rate Doubler Enable.

          0: Serial Port baud rate is that defined by Serial Port Mode in SCON.

          1: Serial Port baud rate is double that defined by Serial Port Mode in SCON.

Bits6-2:  GF4-GF0: General Purpose Flags 4-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: Goes into power down mode. (Turns off internal oscillator).

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: Goes into idle mode. (Shuts off clock to CPU, but clock to Timers, Interrupts, Serial

          Ports, and Analog Peripherals are still active.)

                                               Rev. 1.7                                                                 86
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

11.      FLASH MEMORY

These devices include 32k + 128 bytes of on-chip, reprogrammable Flash memory for program code and non-

volatile data storage. The Flash memory can be programmed in-system, a single byte at a time, through the JTAG

interface or by software using the MOVX instruction.  Once cleared to 0, a Flash bit must be erased to set it back to

1.  The bytes would typically be erased (set to 0xFF) before being reprogrammed.           The write and erase operations

are automatically timed by hardware for proper execution.           Data polling to determine the end of the write/erase

operation is not required.  The Flash memory is designed to withstand at least 20,000 write/erase cycles.  Refer to

Table 11.1 for the electrical characteristics of the Flash memory.

11.1.    Programming The Flash Memory

The simplest means of programming the Flash memory is through the JTAG interface using programming tools

provided by Silicon Labs or a third party vendor.     This is the only means for programming a non-initialized device.

For details on the JTAG commands to program Flash memory, see Section 21.2.

The Flash memory can be programmed by software using the MOVX instruction with the address and data byte to

be  programmed    provided  as  normal  operands.     Before  writing  to  Flash  memory   using  MOVX,    Flash      write

operations must be enabled by setting the PSWE Program Store Write Enable bit (PSCTL.0) to logic 1.        Writing to

Flash remains enabled until the PSWE bit is cleared by software.

Writes to Flash memory can clear bits but cannot set them. Only an erase operation can set bits in Flash. Therefore,

the byte location to be programmed must be erased before a new value can be written.       The 32kbyte Flash memory

is organized in 512-byte sectors.   The erase operation applies to an entire sector (setting all bytes in the sector to

0xFF).   Setting the PSEE Program Store Erase Enable bit (PSCTL.1) and PSWE (PSCTL.0) bit to logic 1 and then

using the MOVX command to write a data byte to any byte location within the sector will erase an entire 512-byte

sector.  The data byte written can be of any value because it is not actually written to the Flash.        Flash erasure

remains enabled until the PSEE bit is cleared by software.          The following sequence illustrates the algorithm for

programming the Flash memory by software:

     1.  Enable Flash Memory write/erase in FLSCL Register using FLASCL bits.

     2.  Set PSEE (PSCTL.1) to enable Flash sector erase.

     3.  Set PSWE (PSCTL.0) to enable Flash writes.

     4.  Use MOVX to write a data byte to any location within the 512-byte sector to be erased.

     5.  Clear PSEE to disable Flash sector erase.

     6.  Use MOVX to write a data byte to the desired byte location within the erased 512-byte sector.     Repeat until

         finished. (Any number of bytes can be written from a single byte to and entire sector.)

     7.  Clear the PSWE bit to disable Flash writes.

Write/Erase timing is automatically controlled by hardware based on the prescaler value held in the Flash Memory

Timing Prescaler register (FLSCL).  The 4-bit prescaler value FLASCL determines the time interval for write/erase

operations.  The FLASCL value required for a given system clock is shown in Figure 11.4, along with the formula

used to derive the FLASCL values.   When FLASCL is set to 1111b, the write/erase operations are disabled.             Note

that code execution in the 8051 is stalled while the Flash is being programmed or erased.

                    Table 11.1. FLASH Memory Electrical Characteristics

VDD = 2.7 to 3.6V, -40C to +85C unless otherwise specified.

         PARAMETER                         CONDITIONS                             MIN      TYP       MAX   UNITS

Endurance                                                                         20k      100k            Erase/Wr

Erase Cycle Time                                                                  10                              ms

Write Cycle Time                                                                  40                              s

87                                                    Rev. 1.7
                                                                                     C8051F000/1/2/5/6/7

                                                                                     C8051F010/1/2/5/6/7

11.2.        Non-volatile Data Storage

The Flash memory can be used for non-volatile data storage as well as program code.                   This allows data such as

calibration coefficients to be calculated and stored at run time.        Data is written using the MOVX instruction and

read using the MOVC instruction.

The MCU incorporates an additional 128-byte sector of Flash memory located at 0x8000 – 0x807F. This sector can

be used for program code or data storage. However, its smaller sector size makes it particularly well suited as

general purpose, non-volatile scratchpad memory.          Even though Flash memory can be written a single byte at a

time, an entire sector must be erased first.  In order to change a single byte of a multi-byte data set, the data must be

moved to temporary storage.         Next, the sector is erased, the data set updated and the data set returned to the original

sector.     The 128-byte sector-size facilitates updating data without wasting program memory space by allowing the

use of internal data RAM for temporary storage. (A normal 512-byte sector is too large to be stored in the 256-byte

internal data memory.)

11.3.        Security Options

The CIP-51 provides security options to protect the Flash memory from inadvertent modification by software as

well  as    prevent  the   viewing  of    proprietary     program  code  and  constants.  The        Program  Store  Write  Enable

(PSCTL.0)    and     the  Program   Store  Erase  Enable  (PSCTL.1)      bits  protect    the  Flash  memory        from  accidental

modification by software.  These bits must be explicitly set to logic 1 before software can modify the Flash memory.

Additional security features prevent proprietary program code and data constants from being read or altered across

the JTAG interface or by software running on the system controller.

A set of security lock bytes stored at 0x7DFE and 0x7DFF protect the Flash program memory from being read or

altered across the JTAG interface.        Each bit in a security lock-byte protects one 4kbyte block of memory.           Clearing

a bit to logic 0 in a Read lock byte prevents the corresponding block of Flash memory from being read across the

JTAG interface.      Clearing a bit in the Write/Erase lock byte protects the block from JTAG erasures and/or writes.

The Read lock byte is at location 0x7DFF.         The Write/Erase lock byte is located at 0x7DFE.             Figure 11.2 shows the

location and bit definitions of the security bytes.       The 512-byte sector containing the lock bytes can be written to,

but not erased by software. Writing to the reserved area should not be performed.

                           Figure 11.1. PSCTL: Program Store RW Control

      R/W            R/W            R/W           R/W              R/W         R/W             R/W            R/W         Reset Value

         -           -              -                  -           -           -          PSEE                PSWE        00000000

       Bit7          Bit6           Bit5          Bit4             Bit3        Bit2            Bit1           Bit0        SFR Address:

                                                                                                                          0x8F

Bits7-2:     UNUSED. Read = 000000b, Write = don’t care.

Bit1:        PSEE: Program Store Erase Enable.

             Setting this bit allows an entire page of the Flash program memory to be erased provided

             the PSWE bit is also set. After setting this bit, a write to Flash memory using the MOVX

             instruction will erase the entire page that contains the location addressed by the MOVX

             instruction. The value of the data byte written does not matter.

             0: Flash program memory erasure disabled.

             1: Flash program memory erasure enabled.

Bit0:        PSWE: Program Store Write Enable.

             Setting this bit allows writing a byte of data to the Flash program memory using the

             MOVX instruction. The location must be erased before writing data.

             0: Write to Flash program memory disabled.

             1: Write to Flash program memory enabled.

                                                          Rev. 1.7                                                                      88
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                        Figure 11.2. Flash Program Memory Security Bytes

                                        (This Block locked only if all  0x807F

                                         other blocks are locked)       0x8000

                                                                        0x7FFF

                                         Reserved

                                                                        0x7E00

                                         Read Lock Byte                 0x7DFF

                                        Write/Erase Lock Byte           0x7DF

                                                                        E       Read and Write/Erase Security Bits.

                        Program Memory                                  0x7DFD  (Bit 7 is MSB.)

                          Space                                                 Bit  Memory Block

                                                                                7    0x7000 - 0x7DFD

                                                                                6    0x6000 - 0x6FFF

                                         Software Read Limit                    5    0x5000 - 0x5FFF

                                                                                4    0x4000 - 0x4FFF

                                                                                3    0x3000 - 0x3FFF

                                                                                2    0x2000 - 0x2FFF

                                                                                1    0x1000 - 0x1FFF

                                                                        0x0000  0    0x0000 - 0x0FFF

    FLASH Read Lock Byte

    Bits7-0: Each bit locks a corresponding block of memory. (Bit 7 is MSB.)

        0: Read operations are locked (disabled) for corresponding block across the JTAG interface.

        1: Read operations are unlocked (enabled) for corresponding block across the JTAG interface.

    FLASH Write/Erase Lock Byte

    Bits7-0: Each bit locks a corresponding block of memory.

        0: Write/Erase operations are locked (disabled) for corresponding block across the JTAG interface.

        1: Write/Erase operations are unlocked (enabled) for corresponding block across the JTAG interface.

    FLASH Access Limit Register (FLACL)

        The content of this register is used as the high byte of the 16-bit software read limit address. The 16-

        bit read limit address value is calculated as 0xNN00 where NN is replaced by the contents of this

        register. Software running at or above this address is prohibited from using the MOVX or MOVC

        instructions to read, write, or erase, locations below this address. Any attempts to read locations

        below this limit will return the value 0x00.

The lock bits can always be read and cleared to logic 0 regardless of the security setting applied to the block

containing the security bytes.   This allows additional blocks to be protected after the block containing the security

bytes has been locked.  However, the only means of removing a lock once set is to erase the entire program memory

space by performing a JTAG erase operation (i.e. cannot be done in user firmware).                    NOTE: Addressing either

security byte while performing a JTAG erase operation will automatically initiate erasure of the entire

program memory space (except for the reserved area).                       This erasure can only be performed via JTAG.  If a

non-security byte in the 0x7C00-0x7DFF page is addressed during erasure, only that page (including the

security bytes) will be erased.

The Flash Access Limit security feature (see Figure 11.3) protects proprietary program code and data from being

read by software running on the C8051F005/06/07/15/16/17 MCUs.                  This feature provides support for OEMs that

wish to program the MCU with proprietary value-added firmware before distribution.                    The value-added firmware

can be protected while allowing additional code to be programmed in remaining program memory space later.

The Software Read Limit (SRL) is a 16-bit address that establishes two logical partitions in the program memory

space.  The first is an upper partition consisting of all the program memory locations at or above the SRL address,

and the second is a lower partition consisting of all the program memory locations starting at 0x0000 up to (but

excluding) the SRL address.      Software in the upper partition can execute code in the lower partition, but is

89                                                    Rev. 1.7
                                                                                C8051F000/1/2/5/6/7

                                                                                C8051F010/1/2/5/6/7

prohibited    from  reading  locations  in  the  lower  partition  using  the  MOVC  instruction.    (Executing  a  MOVC

instruction from the upper partition with a source address in the lower partition will always return a data value of

0x00.)  Software running in the lower partition can access locations in both the upper and lower partition without

restriction.

The Value-added firmware should be placed in the lower partition.         On reset, control is passed to the value-added

firmware via the reset vector.       Once the value-added firmware completes its initial execution, it branches to a

predetermined location in the upper partition.   If entry points are published, software running in the upper partition

may execute program code in the lower partition, but it cannot read the contents of the lower partition.         Parameters

may be passed to the program code running in the lower partition either through the typical method of placing them

on the stack or in registers before the call or by placing them in prescribed memory locations in the upper partition.

The SRL address is specified using the contents of the Flash Access Register. The 16-bit SRL address is calculated

as 0xNN00, where NN is the contents of the SRL Security Register.              Thus, the SRL can be located on 256-byte

boundaries anywhere in program memory space.            However, the 512-byte erase sector size essentially requires that a

512 boundary be used. The contents of a non-initialized SRL security byte is 0x00, thereby setting the SRL address

to 0x0000 and allowing read access to all locations in program memory space by default.

            Figure 11.3. FLACL: Flash Access Limit (C8051F005/06/07/15/16/17 only)

R/W                 R/W         R/W              R/W    R/W               R/W        R/W             R/W         Reset Value

                                                                                                                 00000000

Bit7                Bit6        Bit5             Bit4   Bit3              Bit2       Bit1            Bit0        SFR Address:

                                                                                                                 0xB7

Bits 7-0: FLACL: Flash Access Limit.

              This register holds the high byte of the 16-bit program memory read/write/erase limit

              address. The entire 16-bit access limit address value is calculated as 0xNN00 where NN is

              replaced by contents of FLACL. A write to this register sets the Flash Access Limit. This

              register can only be written once after any reset. Any subsequent writes are ignored

              until the next reset.

                                                        Rev. 1.7                                                               90
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                    Figure 11.4. FLSCL: Flash Memory Timing Prescaler

    R/W       R/W   R/W                        R/W     R/W       R/W           R/W                      R/W   Reset Value

    FOSE      FRAE  -                            -                     FLASCL                                 10001111

    Bit7      Bit6  Bit5                       Bit4    Bit3      Bit2          Bit1                     Bit0  SFR Address:

                                                                                                              0xB6

    Bit7:     FOSE: Flash One-Shot Timer Enable

              0: Flash One-shot timer disabled.

              1: Flash One-shot timer enabled

    Bit6:     FRAE: Flash Read Always Enable

              0: Flash reads per one-shot timer

              1: Flash always in read mode

    Bits5-4:  UNUSED. Read = 00b, Write = don’t care.

    Bits3-0:  FLASCL: Flash Memory Timing Prescaler.

              This register specifies the prescaler value for a given system clock required to generate the

              correct timing for Flash write/erase operations. If the prescaler is set to 1111b, Flash

              write/erase operations are disabled.

              0000: System Clock < 50kHz

              0001: 50kHz  System Clock < 100kHz

              0010: 100kHz  System Clock < 200kHz

              0011: 200kHz  System Clock < 400kHz

              0100: 400kHz  System Clock < 800kHz

              0101: 800kHz  System Clock < 1.6MHz

              0110: 1.6MHz  System Clock < 3.2MHz

              0111: 3.2MHz  System Clock < 6.4MHz

              1000: 6.4MHz  System Clock < 12.8MHz

              1001: 12.8MHz  System Clock < 25.6MHz

              1010: 25.6MHz  System Clock < 51.2MHz *

              1011, 1100, 1101, 1110: Reserved Values

              1111: Flash Memory Write/Erase Disabled

              The prescaler value is the smallest value satisfying the following equation:

              FLASCL > log2(System Clock / 50kHz)

              * For test purposes. The C8051F000 family is not guaranteed for operation over 25MHz.

91                                                     Rev. 1.7
                                                                            C8051F000/1/2/5/6/7

                                                                            C8051F010/1/2/5/6/7

12.  EXTERNAL RAM (C8051F005/06/07/15/16/17)

The C8051F005/06/07/15/16/17 MCUs include 2048 bytes of RAM mapped into the external data memory space.

All of these address locations may be accessed using the external move instruction (MOVX) and the data pointer

(DPTR), or using MOVX indirect addressing mode.   If the MOVX instruction is used with an 8-bit address operand

(such as @R1), then the high byte of the 16-bit address is provided by the External Memory Interface Control

Register (EMI0CN as shown in Figure 12.1).        Note: the MOVX instruction is also used for writes to the Flash

memory. See Section 11 for details. The MOVX instruction accesses XRAM by default (i.e. PSTCL.0 = 0).

For any of the addressing modes the upper 5-bits of the 16-bit external data memory address word are “don’t cares”.

As a result, the 2048-byte RAM is mapped modulo style over the entire 64k external data memory address range.

For example, the XRAM byte at address 0x0000 is also at address 0x0800, 0x1000, 0x1800, 0x2000, etc.  This is a

useful feature when doing a linear memory fill, as the address pointer doesn’t have to be reset when reaching the

RAM block boundary.

           Figure 12.1. EMI0CN: External Memory Interface Control

     R     R               R                R     R                 R/W     R/W                R/W    Reset Value

     -     -               -                -     -                 PGSEL2  PGSEL1  PGSEL0            00000000

     Bit7  Bit6            Bit5             Bit4  Bit3              Bit2    Bit1               Bit0   SFR Address:

                                                                                                      0xAF

Bits 7-3: Not Used – reads 00000b

Bits 2-0: PGSEL[2:0]: XRAM Page Select Bits

           The XRAM Page Select Bits provide the high byte of the 16-bit external data memory

           address when using an 8-bit MOVX command, effectively selecting a 256-byte page of

           RAM. The upper 5-bits are “don’t cares”, so the 2k address blocks are repeated modulo

           over the entire 64k external data memory address space.

           000: xxxxx000b

           001: xxxxx001b

           010: xxxxx010b

           011: xxxxx011b

           100: xxxxx100b

           101: xxxxx101b

           110: xxxxx110b

           111: xxxxx111b

                                                  Rev. 1.7                                                           92
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

13.  RESET SOURCES

The reset circuitry of the MCUs allows the controller to be easily placed in a predefined default condition.                   On entry

to this reset state, the CIP-51 halts program execution, forces the external port pins to a known state and initializes

the SFRs to their defined reset values.                   Interrupts and timers are disabled.                      On exit, the program counter (PC) is

reset, and program execution starts at location 0x0000.

All of the SFRs are reset to predefined values.                             The reset values of the SFR bits are defined in the SFR detailed

descriptions.  The contents of internal data memory are not changed during a reset and 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 are not altered.

The I/O port latches are reset to 0xFF (all logic ones), activating internal weak pull-ups which take the external I/O

pins to a high state. The weak pull-ups are enabled during and after the reset. If the source of reset is from the VDD

Monitor or writing a 1 to PORSF, the /RST pin is driven low until the end of the VDD reset timeout.

On exit from the reset state, the MCU uses the internal oscillator running at 2MHz as the system clock by default.

Refer to Section 14 for information on selecting and configuring the system clock source.                          The Watchdog Timer is

enabled using its longest timeout interval. (Section 13.8 details the use of the Watchdog Timer.)

There are seven sources for putting the MCU into the reset state: power-on/power-fail, external /RST pin, external

CNVSTR signal, software commanded, Comparator 0, Missing Clock Detector, and Watchdog Timer.                                   Each reset

source is described below:

                                          Figure 13.1. Reset Sources Diagram

                                                                                    VDD

     (Port                        CNVSTR

     I/O)               Crossbar                                                              Supply

                                  CNVRSEF                                                     Monitor

                                                                                              +         Supply

                                                                                              -         Reset      (wired-OR)  /RST

                                                                                                        Timeout

                                  Comparator 0

     CP0+                         +

     CP0-                         -

                                                  C0RSEF

                        System    Missing                                                                          Reset

                        Clock        Clock                                                                         Funnel

                                  Detector

                                     (one-

                                     shot)                        WDT

                                     EN

                                     MCD  Enable                                                 (Software Reset)

                                                                  EN  PRE                        SWRSF

                                                  WDT     Enable       WDT  Strobe  CIP-51       System Reset

                                                                                    Core

93                                                                                  Rev. 1.7
                                                                  C8051F000/1/2/5/6/7

                                                                  C8051F010/1/2/5/6/7

13.1.  Power-on Reset

The C8051F000 family incorporates a power supply monitor that holds the MCU in the reset state until VDD rises

above the VRST level during power-up.   (See Figure 13.2 for timing diagram, and refer to Table 13.1 for the

Electrical Characteristics of the power supply monitor circuit.)  The /RST pin is asserted (low) until the end of the

100ms VDD Monitor timeout in order to allow the VDD supply to become stable.

On exit from a power-on reset, the PORSF flag (RSTSRC.1) is set by hardware to logic 1.  All of the other reset

flags in the RSTSRC Register are indeterminate.  PORSF is cleared by a reset from any other source.              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.

13.2.  Software Forced Reset

Writing a 1 to the PORSF bit forces a Power-On Reset as described in Section 13.1.

                                Figure 13.2. VDD Monitor Timing Diagram

                   volts

       2.70                     VRST

       2.40

       2.0                         VDD

       1.0

                                                                                                                    t

       Logic HIGH         /RST

                                                 100ms                                   100ms

       Logic LOW

13.3.  Power-fail Reset

When a power-down transition or power irregularity causes VDD to drop below VRST, the power supply monitor

will drive the /RST pin low and return the CIP-51 to the reset state (see Figure 13.2).  When VDD returns to a level

above VRST, the CIP-51 will leave the reset state in the same manner as that for the power-on reset.  Note that even

though internal data memory contents are not altered by the power-fail reset, it is impossible to determine if VDD

dropped below the level required for data retention. If the PORSF flag is set, the data may no longer be valid.

                                                 Rev. 1.7                                                              94
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

13.4.  External Reset

The external /RST pin provides a means for external circuitry to force the MCU into a reset state.          Asserting an

active-low signal on the /RST pin will cause the MCU to enter the reset state.  Although there is a weak internal

pullup, it may be desirable to provide an external pull-up and/or decoupling of the /RST pin to avoid erroneous

noise-induced resets.  The MCU will remain in reset until at least 12 clock cycles after the active-low /RST signal is

removed. The PINRSF flag (RSTSRC.0) is set on exit from an external reset. The /RST pin is also 5V tolerant.

13.5.  Missing Clock Detector Reset

The Missing Clock Detector is essentially a one-shot circuit that is triggered by the MCU system clock.             If the

system clock goes away for more than 100s, the one-shot will time out and generate a reset. After a Missing Clock

Detector reset, the MCDRSF flag (RSTSRC.2) will be set, signifying the MSD as the reset source; otherwise, this

bit reads 0.  The state of the /RST pin is unaffected by this reset.  Setting the MSCLKE bit in the OSCICN register

(see Figure 14.2) enables the Missing Clock Detector.

13.6.  Comparator 0 Reset

Comparator 0 can be configured as an active-low reset input by writing a 1 to the C0RSEF flag (RSTSRC.5).

Comparator 0 should be enabled using CPT0CN.7 (see Figure 8.3) at least 20s prior to writing to C0RSEF to

prevent any turn-on chatter on the output from generating an unwanted reset.    When configured as a reset, if the

non-inverting input voltage (on CP0+) is less than the inverting input voltage (on CP0-), the MCU is put into the

reset state.  After a Comparator 0 Reset, the C0RSEF flag (RSTSRC.5) will read 1 signifying Comparator 0 as the

reset source; otherwise, this bit reads 0.  The state of the /RST pin is unaffected by this reset.  Also, Comparator 0

can generate a reset with or without the system clock.

13.7.  External CNVSTR Pin Reset

The external CNVSTR signal can be configured as an active-low reset input by writing a 1 to the CNVRSEF flag

(RSTSRC.6).   The CNVSTR signal can appear on any of the P0, P1, or P2 I/O pins as described in Section 15.1.

(Note that the Crossbar must be configured for the CNVSTR signal to be routed to the appropriate Port I/O.)             The

Crossbar should be configured and enabled before the CNVRSEF is set to configure CNVSTR as a reset source.

When configured as a reset, CNVSTR is active-low and level sensitive. After a CNVSTR reset, the CNVRSEF flag

(RSTSRC.6) will read 1 signifying CNVSTR as the reset source; otherwise, this bit reads 0.          The state of the /RST

pin is unaffected by this reset.

13.8.  Watchdog Timer Reset

The MCU includes a programmable Watchdog Timer (WDT) running off the system clock.                  The WDT will force

the MCU into the reset state when the watchdog timer overflows.       To prevent the reset, the WDT must be restarted

by application software before the overflow occurs.     If the system experiences a software/hardware malfunction

preventing the software from restarting the WDT, the WDT will overflow and cause a reset.           This should prevent

the system from running out of control.

The WDT is automatically enabled and started with the default maximum time interval on exit from all resets.            If

desired the WDT can be disabled by system software or locked on to prevent accidental disabling. Once locked, the

WDT cannot be disabled until the next system reset. The state of the /RST pin is unaffected by this reset.

95                                                      Rev. 1.7
                                                                                C8051F000/1/2/5/6/7

                                                                                C8051F010/1/2/5/6/7

13.8.1.       Watchdog Usage

The WDT consists of a 21-bit timer running from the programmed system clock.               The timer measures the period

between specific writes to its control register.     If this period exceeds the programmed limit, a WDT reset is

generated.    The WDT can be enabled and disabled as needed in software, or can be permanently enabled if desired.

Watchdog features are controlled via the Watchdog Timer Control Register (WDTCN) shown in Figure 13.3.

Enable/Reset WDT

The watchdog timer is both enabled and the countdown restarted by writing 0xA5 to the WDTCN register.               The

user’s application software should include periodic writes of 0xA5 to WDTCN as needed to prevent a watchdog

timer overflow. The WDT is enabled and restarted as a result of any system reset.

Disable WDT

Writing 0xDE followed by 0xAD to the WDTCN register disables                    the  WDT.   The following code segment

illustrates disabling the WDT.

         CLR        EA                  ;  disable   all   interrupts

         MOV        WDTCN,#0DEh         ;  disable   software

         MOV        WDTCN,#0ADh         ;  watchdog   timer

         SETB       EA                  ;  re-enable       interrupts

The writes of 0xDE and 0xAD must occur within 4 clock cycles of each other, or the disable operation is ignored.

Interrupts should be disabled during this procedure to avoid delay between the two writes.

Disable WDT Lockout

Writing 0xFF to WDTCN locks out the disable feature.       Once locked out, the disable operation is ignored until the

next system reset.  Writing 0xFF does not enable or reset the watchdog timer.        Applications always intending to use

the watchdog should write 0xFF to WDTCN in their initialization code.

Setting WDT Interval

WDTCN.[2:0] control the watchdog timeout interval. The interval is given by the following equation:

         43+WDTCN[2:0] x TSYSCLK , (where TSYSCLK is the system clock period).

For a 2MHz system clock, this provides an interval range of 0.032msec to 524msec.           WDTCN.7 must be a 0 when

setting this interval.    Reading WDTCN returns the programmed interval.             WDTCN.[2:0] is 111b after a system

reset.

                        Figure 13.3. WDTCN: Watchdog Timer Control Register

        R/W         R/W           R/W         R/W          R/W         R/W           R/W           R/W    Reset Value

                                                                                                          xxxxx111

        Bit7        Bit6          Bit5        Bit4         Bit3        Bit2          Bit1          Bit0   SFR Address:

                                                                                                          0xFF

Bits7-0:      WDT Control

              Writing 0xA5 both enables and reloads the WDT.

              Writing 0xDE followed within 4 clocks by 0xAD disables the WDT.

              Writing 0xFF locks out the disable feature.

Bit4:         Watchdog Status Bit (when Read)

              Reading the WDTCN.[4] bit indicates the Watchdog Timer Status.

              0: WDT is inactive

              1: WDT is active

Bits2-0:      Watchdog Timeout Interval Bits

              The WDTCN.[2:0] bits set the Watchdog Timeout Interval. When writing          these  bits,

              WDTCN.7 must be set to 0.

                                                      Rev. 1.7                                                          96
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

                              Figure 13.4. RSTSRC: Reset Source Register

    R               R/W       R/W        R/W                  R          R          R/W    R          Reset Value

    JTAGRST  CNVRSEF          C0RSEF     SWRSEF          WDTRSF         MCDRSF      PORSF  PINRSF     xxxxxxxx

    Bit7            Bit6      Bit5            Bit4           Bit3        Bit2       Bit1   Bit0       SFR Address:

                                                                                                      0xEF

    (Note:  Do not use read-modify-write operations on this register.)

    Bit7:    JTAGRST. JTAG Reset Flag.

             0: JTAG is not currently in reset state.

             1: JTAG is in reset state.

    Bit6:    CNVRSEF: Convert Start Reset Source Enable and Flag

             Write

             0: CNVSTR is not a reset source

             1: CNVSTR is a reset source (active low)

             Read

             0: Source of prior reset was not from CNVSTR

             1: Source of prior reset was from CNVSTR

    Bit5:    C0RSEF: Comparator 0 Reset Enable and Flag

             Write

             0: Comparator 0 is not a reset source

             1: Comparator 0 is a reset source (active low)

             Read

             Note: The value read from C0RSEF is not defined if Comparator 0 has not been enabled as

             a reset source.

             0: Source of prior reset was not from Comparator 0

             1: Source of prior reset was from Comparator 0

    Bit4:    SWRSF: Software Reset Force and Flag

             Write

             0: No Effect

             1: Forces an internal reset. /RST pin is not effected.

             Read

             0: Prior reset source was not from write to the SWRSF bit.

             1: Prior reset source was from write to the SWRSF bit.

    Bit3:    WDTRSF: Watchdog Timer Reset Flag

             0: Source of prior reset was not from WDT timeout.

             1: Source of prior reset was from WDT timeout.

    Bit2:    MCDRSF: Missing Clock Detector Flag

             0: Source of prior reset was not from Missing Clock Detector timeout.

             1: Source of prior reset was from Missing Clock Detector timeout.

    Bit1:    PORSF: Power-On Reset Force and Flag

             Write

             0: No effect

             1: Forces a Power-On Reset. /RST is driven low.

             Read

             0: Source of prior reset was not from POR.

             1: Source of prior reset was from POR.

    Bit0:    PINRSF: HW Pin Reset Flag

             0: Source of prior reset was not from /RST pin.

             1: Source of prior reset was from /RST pin.

97                                                     Rev. 1.7
                                                                   C8051F000/1/2/5/6/7

                                                                   C8051F010/1/2/5/6/7

                            Table 13.1. Reset Electrical Characteristics

-40C to +85C unless otherwise specified.

PARAMETER                                   CONDITIONS             MIN    TYP   MAX    UNITS

/RST Output Low Voltage     IOL = 8.5mA, VDD = 2.7 to 3.6V                      0.6    V

/RST Input High Voltage                                            0.7 x               V

                                                                   VDD

/RST Input Low Voltage                                                          0.3 x  V

                                                                                VDD

/RST Input Leakage Current  /RST = 0.0V                                   20           A

VDD for /RST Output Valid                                          1.0                 V

AV+ for /RST Output Valid                                          1.0                 V

VDD POR Threshold (VRST)                                           2.40   2.55  2.70   V

Reset Time Delay            /RST rising edge after crossing reset  80     100   120    ms

                            threshold

Missing Clock Detector      Time from last system clock to reset   100    220   500    s

Timeout                     generation

                                            Rev. 1.7                                       98
    C8051F000/1/2/5/6/7

    C8051F010/1/2/5/6/7

14.      OSCILLATOR

Each MCU includes an internal oscillator and an external oscillator drive circuit, either of which can generate the

system clock.    The MCUs boot from the internal oscillator after any reset.                                                               The internal oscillator starts up instantly.

It  can      be  enabled/disabled  and       its    frequency                               can                   be     changed   using   the  Internal  Oscillator  Control    Register

(OSCICN) as shown in Figure 14.2. The internal oscillator’s electrical specifications are given in Table 14.1.

Both oscillators are disabled when the /RST pin is held low.                                                             The MCUs can run from the internal oscillator or

external oscillator, and switch between the two at will using the CLKSL bit in the OSCICN Register.                                                                   The external

oscillator       requires  an      external  resonator,  parallel-mode                                                   crystal,  capacitor,   or  RC    network     connected  to  the

XTAL1/XTAL2 pins (see Figure 14.1).                 The oscillator circuit must be configured for one of these sources in the

OSCXCN register.           An external CMOS clock can also provide the system clock via overdriving the XTAL1 pin.

The XTAL1 and XTAL2 pins are 3.6V (not 5V) tolerant.                                                                     The external oscillator can be left enabled and running

even when the MCU has switched to using the internal oscillator.

                                                  Figure 14.1. Oscillator Diagram

                                                                          OSCICN

                                                         MSCLKE                    IFRDY    CLKSL  IOSCEN  IFCN1  IFCN0

                                                    VDD

                                                                                                   EN

                                                                          Internal Clock

                           opt. 2                                         Generator

                           AV+                                                                                                     SYSCLK

                                                    AV+

     opt. 4      opt. 3            opt. 1

         XTAL1   XTAL1     XTAL1             XTAL1

                                                         Input                                     OSC

                 XTAL2                       XTAL2       Circuit

                                             AGND

                                                         XTLVLD  XOSCMD2  XOSCMD1  XOSCMD0  XFCN2  XFCN1   XFCN0

                                                                 OSCXCN

99                                                                                                         Rev. 1.7
                                                                            C8051F000/1/2/5/6/7

                                                                            C8051F010/1/2/5/6/7

                     Figure 14.2. OSCICN: Internal Oscillator Control Register

R/W                  R/W     R/W            R            R/W    R/W               R/W               R/W    Reset Value

MSCLKE               -       -              IFRDY        CLKSL  IOSCEN      IFCN1                   IFCN0  00000100

Bit7                 Bit6    Bit5           Bit4         Bit3   Bit2              Bit1              Bit0   SFR Address:

                                                                                                           0xB2

Bit7:      MSCLKE: Missing Clock Enable Bit

           0: Missing Clock Detector Disabled

           1: Missing Clock Detector Enabled; triggers a reset if a missing clock is detected

Bits6-5:   UNUSED. Read = 00b, Write = don’t care

Bit4:      IFRDY: Internal Oscillator Frequency Ready Flag

           0: Internal Oscillator Frequency not running at speed specified by the IFCN bits.

           1: Internal Oscillator Frequency running at speed specified by the IFCN bits.

Bit3:      CLKSL: System Clock Source Select Bit

           0: Uses Internal Oscillator as System Clock.

           1: Uses External Oscillator as System Clock.

Bit2:      IOSCEN: Internal Oscillator Enable Bit

           0: Internal Oscillator Disabled

           1: Internal Oscillator Enabled

Bits1-0:   IFCN1-0: Internal Oscillator Frequency Control Bits

           00: Internal Oscillator typical frequency is 2MHz.

           01: Internal Oscillator typical frequency is 4MHz.

           10: Internal Oscillator typical frequency is 8MHz.

           11: Internal Oscillator typical frequency is 16MHz.

                        Table 14.1. Internal Oscillator         Electrical  Characteristics

-40C to +85C unless otherwise specified.

PARAMETER                                   CONDITIONS                      MIN           TYP       MAX    UNITS

Internal Oscillator          OSCICN.[1:0] = 00                              1.5                2    2.4    MHz

Frequency                    OSCICN.[1:0] = 01                              3.1                4    4.8

                             OSCICN.[1:0] = 10                              6.2                8    9.6

                             OSCICN.[1:0] = 11                              12.3               16   19.2

Internal Oscillator Current  OSCICN.2 = 1                                                      200         A

Consumption (from VDD)

Internal Oscillator                                                                            4           ppm/C

Temperature Stability

Internal Oscillator Power                                                                      6.4         %/V

Supply (VDD) Stability

                                                   Rev. 1.7                                                      100
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

                   Figure 14.3. OSCXCN: External Oscillator Control Register

       R           R/W         R/W            R/W             R/W        R/W       R/W             R/W    Reset Value

     XTLVLD  XOSCMD2           XOSCMD1       XOSCMD0          -          XFCN2     XFCN1           XFCN0  00110000

     Bit7          Bit6        Bit5            Bit4           Bit3       Bit2      Bit1            Bit0   SFR Address:

                                                                                                          0xB1

Bit7:      XTLVLD: Crystal Oscillator Valid Flag

           (Valid only when XOSCMD = 1xx.)

           0: Crystal Oscillator is unused or not yet stable

           1: Crystal Oscillator is running and stable (should read 1ms  after Crystal Oscillator  is

             enabled to avoid transient condition).

Bits6-4:   XOSCMD2-0: External Oscillator Mode Bits

           00x: Off. XTAL1 pin is grounded internally.

           010: System Clock from External CMOS Clock on XTAL1           pin.

           011: System Clock from External CMOS Clock on XTAL1           pin divided by 2.

           10x: RC/C Oscillator Mode with divide by 2 stage.

           110: Crystal Oscillator Mode

           111: Crystal Oscillator Mode with divide by 2 stage.

Bit3:      RESERVED. Read = undefined, Write = don’t care

Bits2-0:   XFCN2-0: External Oscillator Frequency Control Bits

           000-111: see table below

             XFCN        Crystal (XOSCMD =            RC (XOSCMD = 10x)         C (XOSCMD = 10x)

                         11x)

             000         f  12.5kHz                  f  25kHz                 K Factor = 0.44

             001         12.5kHz < f  30.3kHz        25kHz < f  50kHz         K Factor = 1.4

             010         30.35kHz < f  93.8kHz       50kHz < f  100kHz        K Factor = 4.4

             011         93.8kHz < f  267kHz         100kHz < f  200kHz       K Factor = 13

             100         267kHz < f  722kHz          200kHz < f  400kHz       K Factor = 38

             101         722kHz < f  2.23MHz         400kHz < f  800kHz       K Factor = 100

             110         2.23MHz < f  6.74MHz        800kHz < f  1.6MHz       K Factor = 420

             111         f > 6.74MHz                  1.6MHz < f  3.2MHz       K Factor = 1400

CRYSTAL MODE (Circuit from Figure 14.1, Option 1; XOSCMD = 11x)

           Choose XFCN value to match the crystal or ceramic resonator frequency.

RC MODE (Circuit from Figure 14.1, Option 2; XOSCMD = 10x)

           Choose oscillation frequency range where:

           f = 1.23(103) / (R * C), where

           f = frequency of oscillation in MHz

           C = capacitor value in pF

           R = Pull-up resistor value in k

C MODE (Circuit from Figure 14.1, Option 3; XOSCMD = 10x)

           Choose K Factor (KF) for the oscillation frequency desired:

           f = KF / (C * AV+), where

           f = frequency of oscillation in MHz

           C = capacitor value on XTAL1, XTAL2 pins in pF

           AV+ = Analog Power Supply on MCU in volts

101                                                   Rev. 1.7
                                                                          C8051F000/1/2/5/6/7

                                                                          C8051F010/1/2/5/6/7

14.1.  External Crystal Example

If a crystal or ceramic resonator were used to generate the system clock for the MCU, the circuit would be as shown

in Figure 14.1, Option 1.  For an ECS-110.5-20-4 crystal, the resonate frequency is 11.0592MHz, the intrinsic

capacitance is 7pF, and the ESR is 60.  The compensation capacitors should be 33pF each, and the PWB parasitic

capacitance is estimated to be 2pF.   The appropriate External Oscillator Frequency Control value (XFCN) from the

Crystal column in the table in Figure 14.3 (OSCXCN Register) should be 111b.

Because the oscillator detect circuitry needs time to settle after the crystal oscillator is enabled, software should wait

at least 1ms between enabling the crystal oscillator and polling the XTLVLD bit. The recommend procedure is:

1. Enable the external oscillator

2. Wait at least 1 ms

3. Poll for XTLVLD '0' ==> '1'

4. Switch to the external oscillator

Switching to the external oscillator before the crystal oscillator has stabilized could result in unpredictable behavior.

NOTE: Crystal oscillator circuits are quite sensitive to PCB layout. The crystal should be placed as close as possible

to the XTAL pins on the device, keeping the traces as short as possible and shielded with ground plane from any

other traces which could introduce noise or interference.

14.2.  External RC Example

If an external RC network were used to generate the system clock for the MCU, the circuit would be as shown in

Figure 14.1, Option 2.  The capacitor must be no greater than 100pF, but using a very small capacitor will increase

the frequency drift due to the PWB parasitic capacitance.  To determine the required External Oscillator Frequency

Control value (XFCN) in the OSCXCN Register, first select the RC network value to produce the desired frequency

of oscillation. If the frequency desired is 100kHz, let R = 246k and C = 50pF:

       f = 1.23(103)/RC = 1.23(103) / [246 * 50] = 0.1MHz = 100kHz

       XFCN  log2(f/25kHz)

       XFCN  log2(100kHz/25kHz) = log2(4)

       XFCN  2, or code 010

14.3.  External Capacitor Example

If an external capacitor were used to generate the system clock for the MCU, the circuit would be as shown in

Figure 14.1, Option 3.  The capacitor must be no greater than 100pF, but using a very small capacitor will increase

the frequency inaccuracy due to the PWB parasitic capacitance.      To determine the required External Oscillator

Frequency Control value (XFCN) in the OSCXCN Register, select the capacitor to be used and find the frequency

of oscillation from the equations below. Assume AV+ = 3.0V and C = 50pF:

       f = KF / (C * VDD) = KF / (50 * 3)

       f = KF / 150

If a frequency of roughly 90kHz is desired, select the K Factor from the table in Figure 14.3 as KF = 13:

       f = 13 /150 = 0.087MHz, or 87kHz

Therefore, the XFCN value to use in this example is 011.

                                            Rev. 1.7                                                                        102
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

15.     PORT INPUT/OUTPUT

The MCUs have a wide array of digital resources, which are available through four digital I/O ports, P0, P1, P2 and

P3. Each of the pins on Ports 0, 1, and 2 can be defined as either its corresponding port I/O or one of the internal

digital resources assigned as shown in Figure 15.1.              The designer has complete control over which functions are

assigned,   limited     only  by      the  number      of  physical   I/O   pins     available  on   the   selected  package   (the

C8051F000/05/10/15 have all four ports pinned out, the F001/06/11/16 have P0 and P1, and the F002/07/12/17

have P0).   This resource assignment flexibility is achieved through the use of a Priority CrossBar Decoder.                  (Note

that the state of a Port I/O pin can always be read in the corresponding Port latch regardless of the Crossbar

settings).

The CrossBar assigns the selected internal digital resources to the I/O pins based on the Priority Decode Table 15.1.

The registers XBR0, XBR1, and XBR2, defined in Figure 15.3, Figure 15.4, and Figure 15.5 are used to select an

internal digital function or let an I/O pin default to being a Port I/O.             The crossbar functions identically for each

MCU, with the caveat that P2 is not pinned out on the F001/06/11/16, and both P1 and P2 are not pinned out on the

F002/07/12/17. Digital resources assigned to port pins that are not pinned out cannot be accessed.

All Port I/Os are 5V tolerant (Refer to Figure 15.2 for the port cell circuit.)              The Port I/O cells are configured as

either  push-pull   or  open-drain    in   the   Port  Configuration      Registers  (PRT0CF,        PRT1CF,  PRT2CF,    PRT3CF).

Complete Electrical Specifications for Port I/O are given in Table 15.2.

15.1.       Priority Cross Bar Decoder

One of the design goals of this MCU family was to make the entire palette of digital resources available to the

designer even on reduced pin count packages.               The Priority CrossBar Decoder provides an elegant solution to the

problem of connecting the internal digital resources to the physical I/O pins.

The Priority CrossBar Decode (Table 15.1) assigns a priority to each I/O function, starting at the top with the

SMBus. As the table illustrates, when selected, its two signals will be assigned to Pin 0 and 1 of I/O Port 0. The

decoder always fills I/O bits from LSB to MSB starting with Port 0, then Port 1, finishing if necessary with Port 2.

If you choose not to use a resource, the next function down on the table will fill the priority slot.                In this way it is

possible to choose only the functions required by the design, making full use of the available I/O pins.                 Also, any

extra Port I/O are grouped together for more convenient use in application code.

Registers XBR0, XBR1 and XBR2 are used to assign the digital I/O resources to the physical I/O Port pins.                      It is

important to understand that when the SMBus, SPI Bus, or UART is selected, the crossbar assigns all pins

associated with the selected bus.     It would be impossible for instance to assign the RX pin from the UART function

without also assigning the TX function.          Standard Port I/Os appear contiguously after the prioritized functions have

been assigned.      For example, if you choose functions that take the first 14 Port I/O (P0.[7:0], P1.[5:0]), you would

have 18 Port I/O left unused by the crossbar (P1.[7:6], P2 and P3).

15.2.       Port I/O Initialization

Port I/O initialization is straightforward. Registers XBR0, XBR1 and XBR2 must be loaded with the appropriate

values to select the digital I/O functions required by the design.          Setting the XBARE bit in XBR2 to 1 enables the

CrossBar.   Until the Crossbar is enabled, the external pins remain as standard Ports in input mode regardless

of the XBRn Register settings.             For given XBRn Register settings, one can determine the I/O pin-out using the

Priority    Decode  Table;    as  an  alternative,  the    Code  Configuration       Wizard  function  of  the  IDE  software  will

determine the Port I/O pin-assignments based on the XBRn Register settings.

The output driver characteristics of the I/O pins are defined using the Port Configuration Registers PRT0CF,

PRT1CF, PRT2CF and PRT3CF (see Figure 15.7, Figure 15.9, Figure 15.12, and Figure 15.14).                       Each Port Output

driver can be configured as either Open Drain or Push-Pull.               This is required even for the digital resources selected

in the XBRn registers and is not automatic.             The only exception to this is the SMBus (SDA, SCL) and UART

Receive     (RX,  when  in    mode    0)   pins  which     are  Open-drain  regardless  of      the  PRTnCF   settings.  When  the

WEAKPUD bit in XBR2 is 0, a weak pullup is enabled for all Port I/O configured as open-drain. WEAKPUD does

103                                                             Rev. 1.7
                                                                                 C8051F000/1/2/5/6/7

                                                                                 C8051F010/1/2/5/6/7

not affect the push-pull Port I/O.                Furthermore, the weak pullup is turned off on an open-drain output that is driving

a 0 to avoid unnecessary power dissipation.

The third and final step is to initialize the individual resources selected using the appropriate setup registers.

Initialization procedures for the various digital resources may be found in the detailed explanation of each available

function. The reset state of each register is shown in the figures that describe each individual register.

                                         Figure 15.1. Port I/O Functional Block Diagram

                            SMBus           2

Highest                                                      XBR0, XBR1,         PRT0CF, PRT1CF,

Priority                                    4                XBR2  Registers     PRT2CF Registers

                            SPI

                            UART            2                                                           External

(Internal Digital Signals)                  6                                                           Pins

                            PCA                              Priority

                            Comptr.         2                Decoder

                            Outputs                                           8  P0                         P0.0  Highest

                                                                                 I/O                                   Priority

                            T0, T1, T2,                                          Cells                      P0.7

                            T2EX,                            Digital

                            /INT0,             6             Crossbar

                            /INT1                                                P1                         P1.0

                                                                              8  I/O

Lowest                      /SYSCLK                                              Cells                      P1.7

Priority                    CNVSTR

                                         8                                    8  P2                         P2.0

                            P0                                                   I/O                              Lowest

                                    (P0.0-P0.7)                                  Cells                      P2.7       Priority

                                         8

                            P1      (P1.0-P1.7)

Port                                                                             PRT3CF

Latches                                  8                                       Register

                            P2      (P2.0-P2.7)

                                         8                                       P3                         P3.0

                                                                                 I/O

                            P3      (P3.0-P3.7)                                  Cells                      P3.7

                                               Figure 15.2.  Port I/O Cell Block Diagram

WEAKPUD

PUSH-PULL                                                                        VDD               VDD

/PORT-OUTENABLE                                                                                    (WEAK)

                                                                                                                  PORT

                                                                                                                  PAD

PORT-OUTPUT

                                                                   VDD           DGND

PORT-INPUT

                                                             Rev. 1.7                                                                 104
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

                                     Table 15.1. Crossbar Priority Decode

                              P0                           P1                                 P2

         PIN I/O  0  1  2  3      4  5  6  7  0  1  2  3       4  5  6  7  0  1  2  3             4  5  6  7

     SDA          

     SCL             

     SCK               

     MISO                 

     MOSI                    

     NSS                            

     TX                              

     RX                                 

     CEX0                                 

     CEX1                                    

     CEX2                                       

     CEX3                                          

     CEX4                                              

     ECI                                             

     CP0                                               

     CP1                                                 

     T0                                                    

     /INT0                                                   

     T1                                                        

     /INT1                                                       

     T2                                                          

     T2EX                                                                       

     /SYSCLK                                                                      

     CNVSTR                                                                         

In the Priority Decode Table, a dot () is used to show the external Port I/O pin (column) to which each signal (row)

can be assigned by the user application code via programming registers XBR2, XBR1, and XBR0.

105                                              Rev. 1.7
                                                                    C8051F000/1/2/5/6/7

                                                                    C8051F010/1/2/5/6/7

                Figure 15.3. XBR0: Port I/O CrossBar Register 0

R/W       R/W            R/W                R/W       R/W     R/W     R/W      R/W      Reset Value

CP0OEN    ECIE                        PCA0ME                  UARTEN  SPI0OEN  SMB0OEN  00000000

Bit7      Bit6           Bit5               Bit4      Bit3    Bit2    Bit1     Bit0     SFR Address:

                                                                                        0xE1

Bit7:     CP0OEN: Comparator 0 Output Enable Bit

          0: CP0 unavailable at Port pin.

          1: CP0 routed to Port Pin.

Bit6:     ECIE: PCA0 Counter Input Enable Bit

          0: ECI unavailable at Port pin.

          1: ECI routed to Port Pin.

Bits3-5:  PCA0ME: PCA Module I/O Enable Bits

          000: All PCA I/O unavailable at Port pins.

          001: CEX0 routed to Port Pin.

          010: CEX0, CEX1 routed to 2 Port Pins.

          011: CEX0, CEX1, CEX2 routed to 3 Port Pins.

          100: CEX0, CEX1, CEX2, CEX3 routed to 4 Port Pins.

          101: CEX0, CEX1, CEX2, CEX3, CEX4 routed to 5 Port  Pins.

          110: RESERVED

          111: RESERVED

Bit2:     UARTEN: UART I/O Enable Bit

          0: UART I/O unavailable at Port pins.

          1: RX, TX routed to 2 Port Pins.

Bit1:     SPI0OEN: SPI Bus I/O Enable Bit

          0: SPI I/O unavailable at Port pins.

          1: MISO, MOSI, SCK, and NSS routed to 4 Port Pins.

Bit0:     SMB0OEN: SMBus Bus I/O Enable Bit

          0: SMBus I/O unavailable at P0.0, P0.1.

          1: SDA routed to P0.0, SCL routed to P0.1.

                                                   Rev. 1.7                                   106
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

                    Figure 15.4.              XBR1: Port I/O    CrossBar  Register  1

     R/W     R/W                 R/W            R/W   R/W       R/W       R/W          R/W     Reset Value

     SYSCKE  T2EXE               T2E          INT1E   T1E       INT0E     T0E          CP1OEN  00000000

     Bit7    Bit6                Bit5           Bit4  Bit3      Bit2      Bit1         Bit0    SFR Address:

                                                                                               0xE2

     Bit7:   SYSCKE: SYSCLK Output Enable Bit

             0: SYSCLK unavailable at Port pin.

             1: SYSCLK output routed to Port Pin.

     Bit6:   T2EXE: T2EX Enable Bit

             0: T2EX unavailable at Port pin.

             1: T2EX routed to Port Pin.

     Bit5:   T2E: T2 Enable Bit

             0: T2 unavailable at Port pin.

             1: T2 routed to Port Pin.

     Bit4:   INT1E: /INT1 Enable Bit

             0: /INT1 unavailable at Port pin.

             1: /INT1 routed to Port Pin.

     Bit3:   T1E: T1 Enable Bit

             0: T1 unavailable at Port pin.

             1: T1 routed to Port Pin.

     Bit2:   INT0E: /INT0 Enable Bit

             0: /INT0 unavailable at Port pin.

             1: /INT0 routed to Port Pin.

     Bit1:   T0E: T0 Enable Bit

             0: T0 unavailable at Port pin.

             1: T0 routed to Port Pin.

     Bit0:   CP1OEN: Comparator 1 Output Enable Bit

             0: CP1 unavailable at Port pin.

             1: CP1 routed to Port Pin.

107                                                   Rev. 1.7
                                                                         C8051F000/1/2/5/6/7

                                                                         C8051F010/1/2/5/6/7

                     Figure 15.5. XBR2: Port I/O CrossBar Register 2

R/W            R/W   R/W                 R/W   R/W               R/W              R/W   R/W            Reset Value

WEAKPUD   XBARE                -         -            -               -           -     CNVSTE         00000000

Bit7           Bit6  Bit5                Bit4  Bit3              Bit2             Bit1           Bit0  SFR Address:

                                                                                                       0xE3

Bit7:     WEAKPUD: Port I/O Weak Pull-up Disable Bit

          0: Weak Pull-ups Enabled (except for Ports whose  I/O  are  configured  as    push-pull)

          1: Weak Pull-ups Disabled

Bit6:     XBARE: Crossbar Enable Bit

          0: Crossbar Disabled

          1: Crossbar Enabled

Bits5-1:  UNUSED. Read = 00000b, Write = don’t care.

Bit0:     CNVSTE: ADC Convert Start Input Enable Bit

          0: CNVSTR unavailable at Port pin.

          1: CNVSTR routed to Port Pin.

Example Usage of XBR0, XBR1, XBR2:

When selected, the digital resources fill the Port I/O pins in order (top to bottom as shown in

Table 15.1) starting with P0.0 through P0.7, and then P1.0 through P1.7, and finally P2.0

through P2.7.  If the digital resources are not mapped to the Port I/O pins, they default to their

matching internal Port Register bits.

Example1: If XBR0 = 0x11, XBR1 = 0x00, and XBR2 = 0x40:

P0.0=SDA, P0.1=SCL, P0.2=CEX0, P0.3=CEX1, P0.4 … P2.7 map to corresponding Port I/O.

Example2: If XBR0 = 0x80, XBR1 = 0x04, and XBR2 = 0x41:

P0.0=CP0, P0.1=/INT0, P0.2 = CNVSTR, P0.3 … P2.7 map to corresponding Port I/O.

                                               Rev. 1.7                                                      108
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

15.3.        General Purpose Port I/O

Each MCU has four byte-wide, bi-directional parallel ports that can be used general purpose I/O.                Each port is

accessed through a corresponding special function register (SFR) that is both byte addressable and bit addressable.

When writing to a port, the value written to the SFR is latched to maintain the output data value at each pin.        When

reading, the logic levels of the port’s input pins are returned regardless of the XBRn settings (i.e. even when the pin

is assigned to another signal by the Crossbar, the Port Register can always still read its corresponding Port I/O pin).

The exception to this is the execution of the read-modify-write instructions.        The read-modify-write instructions

when operating on a port SFR are the following: ANL, ORL, XRL, JBC, CPL, INC, DEC, DJNZ and MOV, CLR

or SET, when the destination is an individual bit in a port SFR.     For these instructions, the value of the port register

(not the pin) is read, modified, and written back to the SFR.

15.4.        Configuring Ports Which are not Pinned Out

P2 and P3 are not pinned out on the F001/06/11/16.  P1, P2, and P3 are not pinned out on the F002/07/12/17.           These

port registers (and corresponding interrupts, where applicable) are still available for software use in these reduced

pin count MCUs.        Whether used or not in software, it is recommended not to let these port drivers go to high

impedance state.       This is prevented after reset by having the weak pull-ups enabled as described in the XBR2

register.    It is recommended that each output driver for ports not pinned out should be configured as push-pull using

the corresponding PRTnCF register. This will inhibit a high impedance state even if the weak pull-up is disabled.

                                           Figure 15.6. P0: Port0 Register

     R/W          R/W        R/W           R/W                 R/W   R/W             R/W         R/W            Reset Value

     P0.7         P0.6       P0.5          P0.4                P0.3  P0.2            P0.1        P0.0           11111111

       Bit7            Bit6  Bit5          Bit4                Bit3  Bit2            Bit1        Bit0           SFR Address:

                                                                                           (bit addressable)    0x80

     Bits7-0:  P0.[7:0]

               (Write – Output appears on I/O pins per XBR0, XBR1, and XBR2 Registers)

               0: Logic Low Output.

               1: Logic High Output (high-impedance if corresponding PRT0CF.n bit = 0)

               (Read – Regardless of XBR0, XBR1, and XBR2 Register settings).

               0: P0.n pin is logic low.

               1: P0.n pin is logic high.

                             Figure 15.7.  PRT0CF: Port0 Configuration Register

     R/W          R/W        R/W           R/W                 R/W   R/W             R/W         R/W            Reset Value

                                                                                                                00000000

       Bit7            Bit6  Bit5          Bit4                Bit3  Bit2            Bit1        Bit0           SFR Address:

                                                                                                                0xA4

     Bits7-0:  PRT0CF.[7:0]: Output Configuration Bits for P0.7-P0.0 (respectively)

               0: Corresponding P0.n Output mode is Open-Drain.

               1: Corresponding P0.n Output mode is Push-Pull.

               (Note:    When SDA, SCL, and RX appear on any of the P0 I/O, each are open-drain

                         regardless of the value of PRT0CF).

109                                                 Rev. 1.7
                                                                   C8051F000/1/2/5/6/7

                                                                   C8051F010/1/2/5/6/7

                                      Figure 15.8. P1: Port1 Register

R/W       R/W       R/W               R/W            R/W     R/W                    R/W   R/W                Reset Value

P1.7      P1.6      P1.5              P1.4           P1.3    P1.2                   P1.1  P1.0               11111111

Bit7      Bit6      Bit5              Bit4           Bit3    Bit2                   Bit1  Bit0               SFR Address:

                                                                                          (bit addressable)  0x90

Bits7-0:  P1.[7:0]

          (Write – Output appears on I/O pins per XBR0, XBR1, and XBR2 registers)

          0: Logic Low Output.

          1: Logic High Output (high-impedance if corresponding PRT1CF.n bit = 0)

          (Read – Regardless of XBR0, XBR1, and XBR2 Register settings).

          0: P1.n pin is logic low.

          1: P1.n pin is logic high.

                    Figure 15.9.      PRT1CF: Port1 Configuration Register

R/W       R/W       R/W               R/W            R/W     R/W                    R/W   R/W                Reset Value

                                                                                                             00000000

Bit7      Bit6      Bit5              Bit4           Bit3    Bit2                   Bit1  Bit0               SFR Address:

                                                                                                             0xA5

Bits7-0:  PRT1CF.[7:0]: Output Configuration Bits for P1.7-P1.0 (respectively)

          0: Corresponding P1.n Output mode is Open-Drain.

          1: Corresponding P1.n Output mode is Push-Pull.

                    Figure 15.10. PRT1IF: Port1 Interrupt Flag Register

R/W       R/W       R/W               R/W            R/W     R/W                    R/W   R/W                Reset Value

IE7       IE6       IE5               IE4            -       -                      -     -                  00000000

Bit7      Bit6      Bit5              Bit4           Bit3    Bit2                   Bit1  Bit0               SFR Address:

                                                                                                             0xAD

Bit7:     IE7: External Interrupt 7 Pending Flag.

          0: No falling edge detected on P1.7.

          1: This flag is set by hardware when a falling edge on P1.7 is detected.

Bit6:     IE6: External Interrupt 6 Pending Flag.

          0: No falling edge detected on P1.6.

          1: This flag is set by hardware when a falling edge on P1.6 is detected.

Bit5:     IE5: External Interrupt 5 Pending Flag.

          0: No falling edge detected on P1.5.

          1: This flag is set by hardware when a falling edge on P1.5 is detected.

Bit4:     IE4: External Interrupt 4 Pending Flag.

          0: No falling edge detected on P1.4.

          1: This flag is set by hardware when a falling edge on P1.4 is detected.

Bits3-0:  UNUSED. Read = 0000b, Write = don’t care.

                                                   Rev. 1.7                                                        110
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

                                       Figure 15.11.  P2: Port2 Register

     R/W       R/W       R/W            R/W           R/W        R/W                 R/W   R/W                Reset Value

     P2.7      P2.6      P2.5           P2.4          P2.3       P2.2                P2.1  P2.0               11111111

     Bit7      Bit6      Bit            Bit4          Bit3       Bit2                Bit1  Bit0               SFR Address:

                                                                                           (bit addressable)  0xA0

     Bits7-0:  P2.[7:0]

               (Write – Output appears on I/O pins per XBR0, XBR1, and XBR2 registers)

               0: Logic Low Output.

               1: Logic High Output (high-impedance if corresponding PRT2CF.n bit = 0)

               (Read – Regardless of XBR0, XBR1, and XBR2 Register settings).

               0: P2.n is logic low.

               1: P2.n is logic high.

                         Figure 15.12.  PRT2CF: Port2 Configuration Register

     R/W       R/W       R/W            R/W           R/W        R/W                 R/W   R/W                Reset Value

                                                                                                              00000000

     Bit7      Bit6      Bit5           Bit4          Bit3       Bit2                Bit1  Bit0               SFR Address:

                                                                                                              0xA6

     Bits7-0:  PRT2CF.[7:0]: Output Configuration Bits for P2.7-P2.0 (respectively)

               0: Corresponding P2.n Output mode is Open-Drain.

               1: Corresponding P2.n Output mode is Push-Pull.

111                                                   Rev. 1.7
                                                                      C8051F000/1/2/5/6/7

                                                                      C8051F010/1/2/5/6/7

                                  Figure 15.13. P3: Port3 Register

R/W                R/W    R/W            R/W        R/W         R/W             R/W            R/W                Reset Value

P3.7               P3.6   P3.5           P3.4       P3.3        P3.2            P3.1           P3.0               11111111

Bit7                Bit6  Bit5           Bit4       Bit3        Bit2            Bit1           Bit0               SFR Address:

                                                                                               (bit addressable)  0xB0

Bits7-0:  P3.[7:0]

          (Write)

          0: Logic Low Output.

          1: Logic High Output (high-impedance  if  corresponding PRT3CF.n      bit =  0)

          (Read)

          0: P3.n is logic low.

          1: P3.n is logic high.

                          Figure 15.14.  PRT3CF: Port3 Configuration Register

R/W                R/W    R/W            R/W        R/W         R/W             R/W            R/W                Reset Value

                                                                                                                  00000000

Bit7                Bit6  Bit5           Bit4       Bit3        Bit2            Bit1           Bit0               SFR Address:

                                                                                                                  0xA7

Bits7-0:  PRT3CF.[7:0]: Output Configuration Bits for P3.7-P3.0 (respectively)

          0: Corresponding P3.n Output mode is Open-Drain.

          1: Corresponding P3.n Output mode is Push-Pull.

                          Table 15.2. Port I/O DC Electrical    Characteristics

VDD = 2.7 to 3.6V, -40C to +85C unless otherwise specified.

PARAMETER                                CONDITIONS                   MIN              TYP     MAX                UNITS

Output High Voltage       IOH = -10uA, Port I/O push-pull             VDD –                                             V

                                                                      0.1

                          IOH = -3mA, Port I/O push-pull              VDD –

                                                                      0.7

                          IOH = -10mA, Port I/O push-pull                              VDD –

                                                                                       0.8

Output Low Voltage        IOL = 10uA                                                           0.1                      V

                          IOL = 8.5mA                                                          0.6

                          IOL = 25mA                                                   1.0

Input High Voltage                                                    0.7 x                                             V

                                                                      VDD

Input Low Voltage                                                                              0.3 x                    V

                                                                                               VDD

Input Leakage Current     DGND < Port Pin < VDD, Pin Tri-state                                                          A

                          Weak Pull-up Off                                                           1

                          Weak Pull-up On                                                  30

Capacitive Loading                                                                         5                            pF

                                                Rev. 1.7                                                                    112
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

16.  SMBus / I2C Bus

The SMBus serial I/O interface is compliant with the System Management Bus Specification, version 1.1.                                                                 It is a

two-wire, bi-directional serial bus, which is also compatible with the I2C serial bus.                                                                              Reads and writes to the

interface by the system controller are byte oriented with the SMBus interface autonomously controlling the serial

transfer of the data.                         Data can be transferred at up to 1/8th of the system clock if desired (this can be faster than

allowed by the SMBus specification, depending on the system clock used).                                                                            A method of extending the clock-low

duration is used to accommodate devices with different speed capabilities on the same bus.

Two types of data transfers are possible: data transfers from a master transmitter to an addressed slave receiver, and

data transfers from an addressed slave transmitter to a master receiver.                                                                            The master device initiates both types of

data transfers and provides the serial clock pulses.                                                               The SMBus interface may operate as a master or a slave.

Multiple master devices on the same bus are also supported.                                                                           If two or more masters attempt to initiate a data

transfer simultaneously, an arbitration scheme is employed with a single master always winning the arbitration.

                                                                               Figure 16.1.               SMBus Block Diagram

                                                                        SFR Bus

                            SMB0CN                                             SMB0STA                          SMB0CR

                   B     E     S     S     S     A  F     T          S  S      S  S  S  S  S     S     C  C     C  C  C   C     C  C

                   U     N     T     T     I     A  T     O          T  T      T  T  T  T  T     T     R  R     R  R  R   R     R  R

                   S     S     A     O              E     E          A  A      A  A  A  A  A     A     7  6     5  4  3   2     1  0

                   Y     M                                           7  6      5  4  3  2  1     0

                         B

                                                                                                             Clock Divide                   SYSCLK

                                                                                                                   Logic

                                                                                                                                                    FILTER     SCL

                                                             SMBUS CONTROL                          LOGIC

SMBUS                                                             Arbitration

                   Interrupt                                      SCL Synchronization                                                 SCL

     IRQ           Request                                        Status Generation                                                   Control               N

                                                                  SCL Generation (Master Mode)

                                                                  IRQ Generation

                                                                                                             Data Path             SDA

                                                                                                             Control               Control                          C

                                                                                                                                                                    R

                                                                                                                                                                    O

                                                                                                                                                                    S  Port I/O

                                                                                                                                                                    S

                            A=B                              A=B                                                                                                    B

                      B           A                    B          A                                                                                                 A

                                                                                                                                                                    R

                                                             0000000b

                                                                     7 MSBs                      8

                            7

                                                                                                    SMB0DAT                                                    SDA

                                                                                           7     6  5  4  3     2  1  0                             FILTER

                                                                                  8                          8                        1

          S  S  S     S     S     S     S                                                                                                                   N

          L  L  L     L     L     L     L                                                                                             0

          V  V  V     V     V     V     V     G

          6  5  4     3     2     1     0     C

                SMB0ADR                                                                    Read                       Write to

                                                                                        SMB0DAT                    SMB0DAT

                                                             SFR Bus

113                                                                                                             Rev. 1.7
                                                                                 C8051F000/1/2/5/6/7

                                                                                 C8051F010/1/2/5/6/7

Figure 16.2 shows a typical SMBus configuration.   The SMBus interface will work at any voltage between 3.0V

and 5.0V and different devices on the bus may operate at different voltage levels.  The SCL (serial clock) and SDA

(serial data) lines are bi-directional.  They must be connected to a positive power supply voltage through a pull-up

resistor or similar circuit.  When the bus is free, both lines are pulled high.  Every device connected to the bus must

have an open-drain or open-collector output for both the SCL and SDA lines.         The maximum number of devices on

the bus is limited only by the requirement that the rise and fall times on the bus will not exceed 300ns and 1000ns,

respectively.

                              Figure 16.2. Typical SMBus Configuration

               VDD = 5V                  VDD = 3V  VDD = 5V                         VDD = 3V

                                         Master    Slave                            Slave

                                         Device    Device 1                         Device 2

                                                                                                SDA

                                                                                                SCL

16.1.  Supporting Documents

It is assumed the reader is familiar with or has access to the following supporting documents:

1.     The I2C-bus and how to use it (including specifications), Philips Semiconductor.

2.     The I2C-Bus Specification -- Version 2.0, Philips Semiconductor.

3.     System Management Bus Specification -- Version 1.1, SBS Implementers Forum.

                                                   Rev. 1.7                                                           114
C8051F000/1/2/5/6/7

C8051F010/1/2/5/6/7

16.2.      Operation

A typical SMBus transaction consists of a START condition, followed by an address byte, one or more bytes of

data, and a STOP condition.        The address byte and each of the data bytes are followed by an ACKNOWLEDGE bit

from the receiver.         The address byte consists of a 7-bit address plus a direction bit.       The direction bit (R/W)

occupies the least-significant bit position of the address.      The direction bit is set to logic 1 to indicate a “READ”

operation and cleared to logic 0 to indicate a “WRITE” operation.                A general call address (0x00 +R/W) is

recognized by all slave devices allowing a master to address multiple slave devices simultaneously.

All transactions are initiated by the master, with one or more addressed slave devices as the target.        The master

generates the START condition and then transmits the address and direction bit.           If the transaction is a WRITE

operation  from       the  master  to  the  slave,  the  master  transmits  the  data  a  byte  at  a  time  waiting  for       an

ACKNOWLEDGE from the slave at the end of each byte.                  If it is a READ operation, the slave transmits the data

waiting for an ACKNOWLEDGE from the master at the end of each byte.                    At the end of the data transfer, the

master generates a STOP condition to terminate the transaction and free the bus.          Figure 16.3 illustrates a typical

SMBus transaction.

                                        Figure 16.3. SMBus Transaction

       START     SLAVE ADDR        R/W      ACK          DATA        ACK                  DATA         NACK  STOP

                                                               Time

The SMBus interface may be configured to operate as either a master or a slave.           At any particular time, it will be

operating in one of the following four modes:

16.2.1.    Master Transmitter Mode

Serial data is transmitted on SDA while the serial clock is output on SCL. The first byte transmitted contains the

address of the target slave device and the data direction bit.       In this case the data direction bit (R/W) will be logic 0

to indicate a “WRITE” operation.        The master then transmits one or more bytes of serial data.    After each byte is

transmitted, an acknowledge bit is generated by the slave.           To indicate the beginning and the end of the serial

transfer, the master device outputs START and STOP conditions.

16.2.2.    Master Receiver Mode

Serial data is received on SDA while the serial clock is output on SCL. The first byte is transmitted by the master

and contains the address of the target slave and the data direction bit.    In this case the data direction bit (R/W) will

be logic 1 to indicate a “READ” operation.          Serial data is then received from the slave on SDA while the master

outputs the serial clock.   The slave transmits one or more bytes of serial data.         After each byte is received, an

acknowledge bit is transmitted by the master.            The master outputs START and STOP conditions to indicate the

beginning and end of the serial transfer.

16.2.3.    Slave Transmitter Mode

Serial data is transmitted on SDA while the serial clock is received on SCL. First, a byte is received that contains an