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

产品描述

搜索
 

PIC12LC672T-04/SM

器件型号:PIC12LC672T-04/SM
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Microchip
厂商官网:https://www.microchip.com
下载文档

器件描述

8-BIT, OTPROM, 4 MHz, RISC MICROCONTROLLER, PDSO8

8位, OTPROM, 4 MHz, 精简指令集微控制器, PDSO8

参数
PIC12LC672T-04/SM功能数量 1
PIC12LC672T-04/SM端子数量 8
PIC12LC672T-04/SM最大工作温度 85 Cel
PIC12LC672T-04/SM最小工作温度 -40 Cel
PIC12LC672T-04/SM最大供电/工作电压 5.5 V
PIC12LC672T-04/SM最小供电/工作电压 2.5 V
PIC12LC672T-04/SM额定供电电压 5 V
PIC12LC672T-04/SM外部数据总线宽度 0.0
PIC12LC672T-04/SM输入输出总线数量 6
PIC12LC672T-04/SM线速度 4 MHz
PIC12LC672T-04/SM加工封装描述 0.208 INCH, PLASTIC, SO-8
PIC12LC672T-04/SM无铅 Yes
PIC12LC672T-04/SM欧盟RoHS规范 Yes
PIC12LC672T-04/SM中国RoHS规范 Yes
PIC12LC672T-04/SM状态 ACTIVE
PIC12LC672T-04/SM工艺 CMOS
PIC12LC672T-04/SM包装形状 RECTANGULAR
PIC12LC672T-04/SM包装尺寸 SMALL OUTLINE
PIC12LC672T-04/SM表面贴装 Yes
PIC12LC672T-04/SM端子形式 GULL WING
PIC12LC672T-04/SM端子间距 1.27 mm
PIC12LC672T-04/SM端子涂层 MATTE TIN
PIC12LC672T-04/SM端子位置 DUAL
PIC12LC672T-04/SM包装材料 PLASTIC/EPOXY
PIC12LC672T-04/SM温度等级 INDUSTRIAL
PIC12LC672T-04/SMADC通道 Yes
PIC12LC672T-04/SM地址总线宽度 0.0
PIC12LC672T-04/SM位数 8
PIC12LC672T-04/SM最大FCLK时钟频率 4 MHz
PIC12LC672T-04/SM微处理器类型 RISC MICROCONTROLLER
PIC12LC672T-04/SMROM编程 OTPROM

文档预览

PIC12LC672T-04/SM器件文档内容

                                                          PIC12C67X

8-Pin, 8-Bit CMOS Microcontroller with A/D Converter
                 and EEPROM Data Memory

Devices Included in this Data Sheet:                      Pin Diagrams:

PIC12C671                                                  PDIP, SOIC, Windowed CERDIP

PIC12C672                                                      VDD        1                    8  VSS
                                                                                                    GP0/AN0
PIC12CE673                                              GP5/OSC1/CLKIN    2        PIC12C671   7  GP1/AN1/VREF
                                                                                  PIC12C672         GP2/T0CKI/AN2/
PIC12CE674                                              GP4/OSC2/AN3/     3                    6  INT
                                                                    CLKOUT
                                                                                                    VSS
Note:   Throughout this data sheet PIC12C67X              GP3/MCLR/VPP      4                    5  GP0/AN0
        refers to the PIC12C671, PIC12C672,                                                         GP1/AN1/VREF
        PIC12CE673 and PIC12CE674.                        PDIP, Windowed CERDIP                     GP2/T0CKI/AN2/
        PIC12CE67X refers to PIC12CE673 and                                                         INT
        PIC12CE674.                                              VDD                 PIC12CE673
                                                                                  PIC12CE674
High-Performance RISC CPU:                                                  1                    8

                                                          GP5/OSC1/CLKIN    2                    7

Only 35 single word instructions to learn               GP4/OSC2/AN3/     3                    6
                                                                    CLKOUT
All instructions are single cycle (400 ns) except for                     4                    5
   program branches which are two-cycle                   GP3/MCLR/VPP

Operating speed: DC - 10 MHz clock input                Special Microcontroller Features:
                           DC - 400 ns instruction cycle

                       Memory                              In-Circuit Serial Programming (ICSPTM)

Device                   Data                              Internal 4 MHz oscillator with programmable calibration
                         RAM
              Program                Data                  Selectable clockout
                                  EEPROM                   Power-on Reset (POR)

PIC12C671 1024 x 14 128 x 8           --                   Power-up Timer (PWRT) and Oscillator Start-up
                                                             Timer (OST)
PIC12C672 2048 x 14 128 x 8           --
                                                          Watchdog Timer (WDT) with its own on-chip RC
PIC12CE673 1024 x 14 128 x 8          16 x 8                 oscillator for reliable operation

PIC12CE674 2048 x 14 128 x 8          16 x 8               Programmable code protection

14-bit wide instructions                                 Power saving SLEEP mode
8-bit wide data path
Interrupt capability                                     Interrupt-on-pin change (GP0, GP1, GP3)
Special function hardware registers
8-level deep hardware stack                              Internal pull-ups on I/O pins (GP0, GP1, GP3)
Direct, indirect and relative addressing modes for
                                                          Internal pull-up on MCLR pin
   data and instructions
                                                          Selectable oscillator options:
                                                             - INTRC: Precision internal 4 MHz oscillator

Peripheral Features:                                      - EXTRC: External low-cost RC oscillator
                                                          - XT: Standard crystal/resonator

Four-channel, 8-bit A/D converter                       - HS:  High speed crystal/resonator
                                                          - LP:  Power saving, low frequency crystal
8-bit real time clock/counter (TMR0) with 8-bit
   programmable prescaler                                 CMOS Technology:

1,000,000 erase/write cycle EEPROM data                  Low-power, high-speed CMOS EPROM/EEPROM
   memory                                                    technology

EEPROM data retention > 40 years                         Fully static design

                                                          Wide operating voltage range 2.5V to 5.5V

                                                          Commercial, Industrial and Extended
                                                             temperature ranges

                                                          Low power consumption
                                                             < 2 mA @ 5V, 4 MHz
                                                             15 A typical @ 3V, 32 kHz
                                                             < 1 A typical standby current

1999 Microchip Technology Inc.                                                                    DS30561B-page 1
PIC12C67X

Table of Contents

1.0 General Description ...................................................................................................................................................................... 3
2.0 PIC12C67X Device Varieties ........................................................................................................................................................ 5
3.0 Architectural Overview .................................................................................................................................................................. 7
4.0 Memory Organization.................................................................................................................................................................. 11
5.0 I/O Port........................................................................................................................................................................................ 25
6.0 EEPROM Peripheral Operation .................................................................................................................................................. 33
7.0 Timer0 Module ............................................................................................................................................................................ 39
8.0 Analog-to-Digital Converter (A/D) Module................................................................................................................................... 45
9.0 Special Features of the CPU....................................................................................................................................................... 53
10.0 Instruction Set Summary............................................................................................................................................................. 69
11.0 Development Support ................................................................................................................................................................. 83
12.0 Electrical Specifications .............................................................................................................................................................. 89
13.0 DC and AC Characteristics ....................................................................................................................................................... 109
14.0 Packaging Information .............................................................................................................................................................. 115
Appendix A:Compatibility ................................................................................................................................................................... 119
Appendix B:Code for Accessing EEPROM Data Memory ................................................................................................................. 119
Index .................................................................................................................................................................................................. 121
On-Line Support................................................................................................................................................................................. 125
Reader Response .............................................................................................................................................................................. 126
PIC12C67X Product Identification System ........................................................................................................................................ 127

                                              To Our Valued Customers

  Most Current Data Sheet

  To automatically obtain the most up-to-date version of this data sheet, please register at our Worldwide Web site at:
         http://www.microchip.com

  You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page.
  The last character of the literature number is the version number. e.g., DS30000A is version A of document DS30000.

  New Customer Notification System

  Register on our web site (www.microchip.com/cn) to receive the most current information on our products.

  Errata

  An errata sheet may exist for current devices, describing minor operational differences (from the data sheet) and recommended
  workarounds. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revi-
  sion of silicon and revision of document to which it applies.
  To determine if an errata sheet exists for a particular device, please check with one of the following:
   Microchip's Worldwide Web site; http://www.microchip.com
   Your local Microchip sales office (see last page)
   The Microchip Corporate Literature Center; U.S. FAX: (480) 786-7277
  When contacting a sales office or the literature center, please specify which device, revision of silicon and data sheet (include liter-
  ature number) you are using.

  Corrections to this Data Sheet

  We constantly strive to improve the quality of all our products and documentation. We have spent a great deal of time to ensure
  that this document is correct. However, we realize that we may have missed a few things. If you find any information that is missing
  or appears in error, please:
   Fill out and mail in the reader response form in the back of this data sheet.
   E-mail us at webmaster@microchip.com.
  We appreciate your assistance in making this a better document.

DS30561B-page 2   1999 Microchip Technology Inc.
1.0 GENERAL DESCRIPTION                                                    PIC12C67X

The PIC12C67X devices are low-cost, high-perfor-              A highly reliable Watchdog Timer with its own on-chip
mance, CMOS, fully-static, 8-bit microcontrollers with        RC oscillator provides protection against software
integrated analog-to-digital (A/D) converter and              lock-up.
EEPROM data memory (EEPROM on PIC12CE67X
versions only).                                               A UV erasable windowed package version is ideal for
                                                              code development, while the cost-effective One-Time-
All PICmicro microcontrollers employ an advanced             Programmable (OTP) version is suitable for production
RISC architecture. The PIC12C67X microcontrollers             in any volume. The customer can take full advantage of
have enhanced core features, eight-level deep stack,          Microchip's price leadership in OTP microcontrollers,
and multiple internal and external interrupt sources.         while benefiting from the OTP's flexibility.
The separate instruction and data buses of the Harvard
architecture allow a 14-bit wide instruction word with        1.1 Applications
the separate 8-bit wide data. The two stage instruction
pipeline allows all instructions to execute in a single       The PIC12C67X series fits perfectly in applications
cycle, except for program branches, which require two         ranging from personal care appliances and security
cycles. A total of 35 instructions (reduced instruction       systems to low-power remote transmitters/receivers.
set) are available. Additionally, a large register set gives  The EPROM technology makes customizing applica-
some of the architectural innovations used to achieve a       tion programs (transmitter codes, appliance settings,
very high performance.                                        receiver frequencies, etc.) extremely fast and conve-
                                                              nient, while the EEPROM data memory (PIC12CE67X
PIC12C67X microcontrollers typically achieve a 2:1            only) technology allows for the changing of calibration
code compression and a 4:1 speed improvement over             factors and security codes. The small footprint pack-
other 8-bit microcontrollers in their class.                  ages, for through hole or surface mounting, make this
                                                              microcontroller series perfect for applications with
The PIC12C67X devices have 128 bytes of RAM, 16               space limitations. Low-cost, low-power, high perfor-
bytes of EEPROM data memory (PIC12CE67X only), 5              mance, ease of use and I/O flexibility make the
I/O pins and 1 input pin. In addition a timer/counter is      PIC12C67X series very versatile even in areas where
available. Also a 4-channel, high-speed, 8-bit A/D is         no microcontroller use has been considered before
provided. The 8-bit resolution is ideally suited for appli-   (i.e., timer functions, replacement of "glue" logic and
cations requiring low-cost analog interface, (i.e.,           PLD's in larger systems, coprocessor applications).
thermostat control, pressure sensing, etc.)
                                                              1.2 Family and Upward Compatibility
The PIC12C67X devices have special features to
reduce external components, thus reducing cost,               The PIC12C67X products are compatible with other
enhancing system reliability and reducing power con-          members of the 14-bit PIC16CXXX families.
sumption. The Power-On Reset (POR), Power-up
Timer (PWRT), and Oscillator Start-up Timer (OST)             1.3 Development Support
eliminate the need for external reset circuitry. There are
five oscillator configurations to choose from, including      The PIC12C67X devices are supported by a full-
INTRC precision internal oscillator mode and the              featured macro assembler, a software simulator, an in-
power-saving LP (Low Power) oscillator mode. Power-           circuit emulator, a low-cost development programmer
saving SLEEP mode, Watchdog Timer and code                    and a full-featured programmer. A "C" compiler and
protection features improve system cost, power and            fuzzy logic support tools are also available.
reliability. The SLEEP (power-down) feature provides a
power-saving mode. The user can wake-up the chip
from SLEEP through several external and internal
interrupts and resets.

1999 Microchip Technology Inc.                              DS30561B-page 3
PIC12C67X

TABLE 1-1: PIC12C67X & PIC12CE67X FAMILY OF DEVICES

                             PIC12C671 PIC12LC671 PIC12C672 PIC12LC672 PIC12CE673 PIC12LCE673 PIC12CE674 PIC12LCE674

             Maximum 10                  10          10    10               10          10            10          10

Clock        Frequency
             of Operation

             (MHz)

             EPROM           1024 x 14   1024 x 14   2048 x 14 2048 x 14    1024 x 14 1024 x 14       2048 x 14 2048 x 14
             Program         128         128
Memory       Memory                                  128   128

             RAM Data                                                       128         128           128         128
             Memory
             (bytes)

             EEPROM --                   --          --    --               16          16            16          16

             Data Memory

             (bytes)

Peripherals  Timer           TMR0        TMR0        TMR0  TMR0             TMR0        TMR0          TMR0        TMR0
             Module(s)

             A/D Con-        4           4           4     4                4           4             4           4

             verter (8-bit)

             Channels

             Wake-up         Yes         Yes         Yes   Yes              Yes         Yes           Yes         Yes

             from SLEEP

             on pin

             change

             Interrupt       4           4           4     4                4           4             4           4

             Sources

Features I/O Pins            5           5           5     5                5           5             5           5

             Input Pins 1                1           1     1                1           1             1           1

             Internal        Yes         Yes         Yes   Yes              Yes         Yes           Yes         Yes

             Pull-ups

             In-Circuit      Yes         Yes         Yes   Yes              Yes         Yes           Yes         Yes

             Serial

             Programming

             Number of 35                35          35    35               35          35            35          35

             Instructions

             Voltage         3.0V - 5.5V 2.5V - 5.5V 3.0V - 5.5V 2.5V - 5.5V 3.0V - 5.5V 2.5V - 5.5V  3.0V - 5.5V 2.5V - 5.5V

             Range (Volts)

             Packages        8-pin DIP,  8-pin DIP,  8-pin DIP, 8-pin DIP,  8-pin DIP,  8-pin DIP,    8-pin DIP,  8-pin DIP,
                             JW, SOIC    JW, SOIC    JW, SOIC JW, SOIC      JW          JW            JW          JW

All PIC12C67X devices have Power-on Reset, selectable Watchdog Timer, selectable code protect and high I/O current capability.
All PIC12C67X devices use serial programming with data pin GP0 and clock pin GP1.

DS30561B-page 4                                                                               1999 Microchip Technology Inc.
2.0 PIC12C67X DEVICE VARIETIES                                         PIC12C67X

A variety of frequency ranges and packaging options       2.3 Quick-Turn-Programming (QTP)
are available. Depending on application and production              Devices
requirements, the proper device option can be selected
using the information in the PIC12C67X Product Iden-      Microchip offers a QTP Programming Service for fac-
tification System section at the end of this data sheet.  tory production orders. This service is made available
When placing orders, please use that page of the data     for users who choose not to program a medium to high
sheet to specify the correct part number.                 quantity of units and whose code patterns have stabi-
                                                          lized. The devices are identical to the OTP devices, but
For example, the PIC12C67X device "type" is indicated     with all EPROM locations and configuration options
in the device number:                                     already programmed by the factory. Certain code and
                                                          prototype verification procedures apply before produc-
1. C, as in PIC12C671. These devices have                 tion shipments are available. Please contact your local
      EPROM type memory and operate over the              Microchip Technology sales office for more details.
      standard voltage range.
                                                          2.4 Serialized Quick-Turn Programming
2. LC, as in PIC12LC671. These devices have                         (SQTPSM) Devices
      EPROM type memory and operate over an
      extended voltage range.                             Microchip offers a unique programming service where
                                                          a few user-defined locations in each device are pro-
3. CE, as in PIC12CE674. These devices have               grammed with different serial numbers. The serial num-
      EPROM type memory, EEPROM data memory               bers may be random, pseudo-random, or sequential.
      and operate over the standard voltage range.
                                                          Serial programming allows each device to have a
4. LCE, as in PIC12LCE674. These devices have             unique number which can serve as an entry-code,
      EPROM type memory, EEPROM data memory               password, or ID number.
      and operate over an extended voltage range.

2.1 UV Erasable Devices

The UV erasable version, offered in windowed pack-
age, is optimal for prototype development and pilot pro-
grams.

The UV erasable version can be erased and repro-
grammed to any of the configuration modes.
Microchip's PICSTART Plus and PRO MATE pro-
grammers both support the PIC12C67X. Third party
programmers also are available; refer to the Microchip
Third Party Guide for a list of sources.

Note:  Please note that erasing the device will
       also erase the pre-programmed internal
       calibration value for the internal oscillator.
       The calibration value must be saved prior
       to erasing the part.

2.2 One-Time-Programmable (OTP)
          Devices

The availability of OTP devices is especially useful for
customers who need the flexibility for frequent code
updates and small volume applications.

The OTP devices, packaged in plastic packages, per-
mit the user to program them once. In addition to the
program memory, the configuration bits must also be
programmed.

1999 Microchip Technology Inc.                          DS30561B-page 5
PIC12C67X

NOTES:

DS30561B-page 6   1999 Microchip Technology Inc.
3.0 ARCHITECTURAL OVERVIEW                                               PIC12C67X

The high performance of the PIC12C67X family can be         The PIC12C67X can directly or indirectly address its
attributed to a number of architectural features com-       register files or data memory. All special function regis-
monly found in RISC microprocessors. To begin with,         ters, including the program counter, are mapped in the
the PIC12C67X uses a Harvard architecture, in which         data memory. The PIC12C67X has an orthogonal
program and data are accessed from separate memo-           (symmetrical) instruction set that makes it possible to
ries using separate buses. This improves bandwidth          carry out any operation on any register using any
over traditional von Neumann architecture in which pro-     addressing mode. This symmetrical nature and lack of
gram and data are fetched from the same memory              `special optimal situations' make programming with the
using the same bus. Separating program and data             PIC12C67X simple yet efficient. In addition, the learn-
buses also allow instructions to be sized differently than  ing curve is reduced significantly.
the 8-bit wide data word. Instruction opcodes are 14-
bits wide making it possible to have all single word        PIC12C67X devices contain an 8-bit ALU and working
instructions. A 14-bit wide program memory access           register. The ALU is a general purpose arithmetic unit.
bus fetches a 14-bit instruction in a single instruction    It performs arithmetic and Boolean functions between
cycle. A two-stage pipeline overlaps fetch and execu-       the data in the working register and any register file.
tion of instructions (Example 3-1). Consequently, all
instructions (35) execute in a single cycle (400 ns @ 10    The ALU is 8-bits wide and capable of addition, sub-
MHz) except for program branches.                           traction, shift and logical operations. Unless otherwise
                                                            mentioned, arithmetic operations are two's comple-
The table below lists program memory (EPROM), data          ment in nature. In two-operand instructions, typically
memory (RAM), and non-volatile memory (EEPROM)              one operand is the working register (W register). The
for each PIC12C67X device.                                  other operand is a file register or an immediate con-
                                                            stant. In single operand instructions, the operand is
Device      Program   RAM Data             EEPROM           either the W register or a file register.
            Memory     Memory                 Data
PIC12C671                                                   The W register is an 8-bit working register used for ALU
PIC12C672    1K x 14                       Memory           operations. It is not an addressable register.
PIC12CE673   2K x 14
PIC12CE674   1K x 14              128 x 8   --              Depending on the instruction executed, the ALU may
             2K x 14              128 x 8   --              affect the values of the Carry (C), Digit Carry (DC), and
                                  128 x 8  16x8             Zero (Z) bits in the STATUS register. The C and DC bits
                                  128 x 8  16x8             operate as a borrow bit and a digit borrow out bit,
                                                            respectively, in subtraction. See the SUBLW and SUBWF
                                                            instructions for examples.

1999 Microchip Technology Inc.                            DS30561B-page 7
PIC12C67X

FIGURE 3-1: PIC12C67X BLOCK DIAGRAM

     Device      Program Memory   Data Memory (RAM)                   Non-Volatile Memory (EEPROM)

PIC12C671               1K x 14            128 x 8                                         --
PIC12C672               2K x 14            128 x 8                                         --
PIC12CE673              1K x 14            128 x 8                                      16 x 8
PIC12CE674              2K x 14            128 x 8                                      16 x 8

                                  13                        Data Bus                                          8  GPIO
                                        Program Counter

                 EPROM            8 Level Stack                RAM                                                                  GP0/AN0
                 Program              (13 bit)              128 bytes                                                               GP1/AN1/VREF
                 Memory                                                                                                             GP2/T0CKI/AN2/INT
                                                                File                                                                GP3/MCLR/VPP
                                                            Registers                                                               GP4/OSC2/AN3/CLKOUT
                                                                                                                                    GP5/OSC1/CLKIN

Program          14                                     RAM Addr (1)   9
   Bus
                                                                                                                 SCL
                                                            Addr MUX                                                           SDA

                 Instruction reg

                                  Direct Addr 7                              Indirect                               16x8
                                                                      8 Addr                                     EEPROM

                                                                      FSR reg                                       Data            PIC12CE673
                                                                                                                  Memory            PIC12CE674

                                                                                     STATUS reg
                                  8

                                     Power-up            3             MUX
                                       Timer
OSC1/CLKIN      Instruction                                     ALU
OSC2/CLKOUT      Decode &            Oscillator          8
                                  Start-up Timer
                   Control                                      W reg
                                    Watchdog
                   Timing              Timer
                 Generation
                                     Power-on
                                       Reset

   Internal                       MCLR                                Timer0
4 MHz Clock                                   VDD, VSS

                                                                                                         A/D
Note 1: Higher order bits are from the STATUS Register.

DS30561B-page 8                                                                                                   1999 Microchip Technology Inc.
                                                                                  PIC12C67X

TABLE 3-1: PIC12C67X PINOUT DESCRIPTION

         Name        DIP Pin #       I/O/P  Buffer         Description
                                     Type    Type

GP0/AN0                           7  I/O TTL/ST Bi-directional I/O port/serial programming data/analog input 0.

                                                    Can be software programmed for internal weak pull-up and

                                                    interrupt-on-pin change. This buffer is a Schmitt Trigger input

                                                    when used in serial programming mode.

GP1/AN1/VREF                      6  I/O TTL/ST Bi-directional I/O port/serial programming clock/analog input 1/

                                                    voltage reference. Can be software programmed for internal

                                                    weak pull-up and interrupt-on-pin change. This buffer is a

                                                    Schmitt Trigger input when used in serial programming mode.

GP2/T0CKI/AN2/INT                 5  I/O ST Bi-directional I/O port/analog input 2. Can be configured as

                                                    T0CKI or external interrupt.

GP3/MCLR/VPP                      4  I TTL/ST Input port/master clear (reset) input/programming voltage

                                                    input. When configured as MCLR, this pin is an active low

                                                    reset to the device. Voltage on MCLR/VPP must not exceed

                                                    VDD during normal device operation. Can be software pro-

                                                    grammed for internal weak pull-up and interrupt-on-pin

                                                    change. Weak pull-up always on if configured as MCLR . This

                                                    buffer is Schmitt Trigger when in MCLR mode.

GP4/OSC2/AN3/CLKOUT               3  I/O TTL Bi-directional I/O port/oscillator crystal output/analog input 3.
                                                          Connections to crystal or resonator in crystal oscillator mode
                                                          (HS, XT and LP modes only, GPIO in other modes). In EXTRC
                                                          and INTRC modes, the pin output can be configured to CLK-
                                                          OUT, which has 1/4 the frequency of OSC1 and denotes the
                                                          instruction cycle rate.

GP5/OSC1/CLKIN                    2  I/O TTL/ST Bi-directional IO port/oscillator crystal input/external clock

                                                    source input (GPIO in INTRC mode only, OSC1 in all other

                                                    oscillator modes). Schmitt trigger input for EXTRC oscillator

                                                    mode.

VDD                               1  P      -- Positive supply for logic and I/O pins.

VSS                               8  P      -- Ground reference for logic and I/O pins.

Legend: I = input, O = output, I/O = input/output, P = power, -- = not used, TTL = TTL input,
            ST = Schmitt Trigger input.

1999 Microchip Technology Inc.                                                               DS30561B-page 9
PIC12C67X                                                      3.2 Instruction Flow/Pipelining

3.1 Clocking Scheme/Instruction Cycle                          An "Instruction Cycle" consists of four Q cycles (Q1,
                                                               Q2, Q3 and Q4). The instruction fetch and execute
The clock input (from OSC1) is internally divided by           are pipelined such that fetch takes one instruction
four to generate four non-overlapping quadrature               cycle, while decode and execute takes another
clocks, namely Q1, Q2, Q3 and Q4. Internally, the pro-         instruction cycle. However, due to the pipelining, each
gram counter (PC) is incremented every Q1, and the             instruction effectively executes in one cycle. If an
instruction is fetched from the program memory and             instruction causes the program counter to change
latched into the instruction register in Q4. The instruc-      (i.e., GOTO), then two cycles are required to complete
tion is decoded and executed during the following Q1           the instruction (Example 3-1).
through Q4. The clocks and instruction execution flow
is shown in Figure 3-2.                                        A fetch cycle begins with the program counter (PC)
                                                               incrementing in Q1.

                                                               In the execution cycle, the fetched instruction is
                                                               latched into the "Instruction Register" (IR) in cycle
                                                               Q1. This instruction is then decoded and executed
                                                               during the Q2, Q3, and Q4 cycles. Data memory is
                                                               read during Q2 (operand read) and written during Q4
                                                               (destination write).

FIGURE 3-2: CLOCK/INSTRUCTION CYCLE

                     Q1  Q2 Q3                Q4  Q1       Q2         Q3  Q4     Q1  Q2    Q3 Q4

             OSC1                                                                                               Internal
                                                                                                                phase
                 Q1                                                                                             clock

                 Q2                  PC                            PC+1                       PC+2

                 Q3         Fetch INST (PC)                 Fetch INST (PC+1)         Fetch INST (PC+2)
                 Q4      Execute INST (PC-1)               Execute INST (PC)         Execute INST (PC+1)
                 PC
OSC2/CLKOUT
    (EXTRC and
INTRC modes)

EXAMPLE 3-1: INSTRUCTION PIPELINE FLOW

                         TCY0   TCY1                          TCY2       TCY3        TCY4                 TCY5

1. MOVLW 55h             Fetch 1 Execute 1                 Execute 2  Execute 3
                                                            Fetch 3    Fetch 4
2. MOVWF GPIO                   Fetch 2

3. CALL SUB_1

4. BSF GPIO, BIT3 (Forced NOP)                                                        Flush
                                                                                 Fetch SUB_1 Execute SUB_1
5. Instruction @ address SUB_1

All instructions are single cycle, except for any program branches. These take two cycles since the fetched
instruction is "flushed" from the pipeline while the new instruction is being fetched and then executed.

DS30561B-page 10                                                                      1999 Microchip Technology Inc.
4.0 MEMORY ORGANIZATION                                            PIC12C67X

4.1 Program Memory Organization                       4.2 Data Memory Organization

The PIC12C67X has a 13-bit program counter capable    The data memory is partitioned into two banks, which
of addressing an 8K x 14 program memory space.        contain the General Purpose Registers and the Special
                                                      Function Registers. Bit RP0 is the bank select bit.
For the PIC12C671 and the PIC12CE673, the first 1K x  RP0 (STATUS<5>) = 1  Bank 1
14 (0000h-03FFh) is implemented.                      RP0 (STATUS<5>) = 0  Bank 0
                                                      Each Bank extends up to 7Fh (128 bytes). The lower
For the PIC12C672 and the PIC12CE674, the first 2K    locations of each Bank are reserved for the Special
x 14 (0000h-07FFh) is implemented. Accessing a loca-  Function Registers. Above the Special Function Regis-
tion above the physically implemented address will    ters are General Purpose Registers implemented as
cause a wraparound. The reset vector is at 0000h and  static RAM. Both Bank 0 and Bank 1 contain Special
the interrupt vector is at 0004h.                     Function Registers. Some "high use" Special Function
                                                      Registers from Bank 0 are mirrored in Bank 1 for code
FIGURE 4-1: PIC12C67X PROGRAM                         reduction and quicker access.
                     MEMORY MAP AND STACK             Also note that F0h through FFh on the PIC12C67X is
                                                      mapped into Bank 0 registers 70h-7Fh as common
               PC<12:0>                               RAM.

CALL, RETURN   13                                     4.2.1 GENERAL PURPOSE REGISTER FILE
RETFIE, RETLW
                                                      The register file can be accessed either directly or indi-
Stack Level 1                                         rectly through the File Select Register FSR
                                                      (Section 4.5).

Stack Level 8                     0000h
Reset Vector

Peripheral Interrupt Vector 0004h
                                      0005h

On-Chip Program                  03FFh
       Memory                     0400h

(PIC12C672 and                   07FFh
PIC12CE674 only)                  0800h

                                  1FFFh

1999 Microchip Technology Inc.                      DS30561B-page 11
PIC12C67X

FIGURE 4-2: PIC12C67X REGISTER FILE                     4.2.2 SPECIAL FUNCTION REGISTERS
                     MAP
                                                        The Special Function Registers are registers used by
   File                            File                 the CPU and Peripheral Modules for controlling the
Address                         Address                 desired operation of the device. These registers are
                                                        implemented as static RAM.
00h INDF(1)            INDF(1)    80h
                      OPTION      81h                   The Special Function Registers can be classified into
01h TMR0                          82h                   two sets (core and peripheral). Those registers associ-
                         PCL      83h                   ated with the "core" functions are described in this sec-
02h      PCL          STATUS      84h                   tion, and those related to the operation of the peripheral
                                  85h                   features are described in the section of that peripheral
03h STATUS               FSR      86h                   feature.
                        TRIS      87h
04h      FSR                      88h
                      PCLATH      89h
05h GPIO              INTCON      8Ah
                                  8Bh
06h                      PIE1     8Ch
                       PCON       8Dh
07h                   OSCCAL      8Eh
                                  8Fh
08h                   ADCON1      90h
                      General     91h
09h                   Purpose     92h
                      Register    93h
0Ah PCLATH                        94h
                                  95h
0Bh INTCON                        96h
                                  97h
0Ch PIR1                          98h
                                  99h
0Dh                               9Ah
                                  9Bh
0Eh                               9Ch
                                  9Dh
0Fh                               9Eh
                                  9Fh
10h
                                  A0h
11h
                                  BFh
12h                               C0h

13h

14h

15h

16h

17h

18h

19h

1Ah

1Bh

1Ch

1Dh

1Eh ADRES

1Fh ADCON0

20h

            General                     EFh
            Purpose
            Register  Mapped F0h
                      in Bank 0
70h
                                        FFh
7Fh                    Bank 1
           Bank 0

             Unimplemented data memory locations, read
             as '0'.
Note 1: Not a physical register.

DS30561B-page 12                                        1999 Microchip Technology Inc.
                                                                                         PIC12C67X

TABLE 4-1: PIC12C67X SPECIAL FUNCTION REGISTER SUMMARY

Address Name         Bit 7        Bit 6        Bit 5       Bit 4    Bit 3  Bit 2  Bit 1  Bit 0                  Value on  Value on
                                                                                                                Power-on  all other
                                                                                                                          Resets(3)
                                                                                                                  Reset

  Bank 0             Addressing this location uses contents of FSR to address data memory (not a physical register) 0000 0000 0000 0000
00h(1) INDF

01h       TMR0       Timer0 module's register                                                                   xxxx xxxx uuuu uuuu
02h(1)    PCL                                                                                                   0000 0000 0000 0000
03h(1)    STATUS     Program Counter's (PC) Least Significant Byte                                              0001 1xxx 000q quuu
04h(1)    FSR                                                                                                   xxxx xxxx uuuu uuuu
05h       GPIO       IRP(4)       RP1(4)       RP0         TO       PD       Z    DC      C                     11xx xxxx 11uu uuuu
                                                                    GP3    GP2    GP1    GP0
                     Indirect data memory address pointer

                     SCL(5)       SDA(5)       GP5         GP4

06h             --   Unimplemented                                                                              --        --

07h             --   Unimplemented                                                                              --        --

08h             --   Unimplemented                                                                              --        --

09h              --  Unimplemented                                                                              --        --
0Ah(1,2)  PCLATH
0Bh(1)    INTCON     --             --          --    Write Buffer for the upper 5 bits of the Program Counter  ---0 0000 ---0 0000
                                               T0IE
                     GIE          PEIE                     INTE     GPIE   T0IF   INTF   GPIF                   0000 000x 0000 000u

0Ch       PIR1       --           ADIF         --          --       --     --     --     --                     -0-- ---- -0-- ----

0Dh             --   Unimplemented                                                                              --        --

0Eh             --   Unimplemented                                                                              --        --

0Fh             --   Unimplemented                                                                              --        --

10h             --   Unimplemented                                                                              --        --

11h             --   Unimplemented                                                                              --        --

12h             --   Unimplemented                                                                              --        --

13h             --   Unimplemented                                                                              --        --

14h             --   Unimplemented                                                                              --        --

15h             --   Unimplemented                                                                              --        --

16h             --   Unimplemented                                                                              --        --

17h             --   Unimplemented                                                                              --        --

18h             --   Unimplemented                                                                              --        --

19h             --   Unimplemented                                                                              --        --

1Ah             --   Unimplemented                                                                              --        --

1Bh             --   Unimplemented                                                                              --        --

1Ch             --   Unimplemented                                                                              --        --

1Dh             --   Unimplemented                                                                              --        --

1Eh       ADRES      A/D Result Register                                                                        xxxx xxxx uuuu uuuu

1Fh       ADCON0     ADCS1 ADCS0 reserved CHS1                      CHS0 GO/DONE reserved ADON 0000 0000 0000 0000

Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented read as '0'.
             Shaded locations are unimplemented, read as `0'.

Note 1: These registers can be addressed from either bank.
        2: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for the PC<12:8> whose con-
             tents are transferred to the upper byte of the program counter.
        3: Other (non power-up) resets include external reset through MCLR and Watchdog Timer Reset.
        4: The IRP and RP1 bits are reserved on the PIC12C67X; always maintain these bits clear.
        5: The SCL (GP7) and SDA (GP6) bits are unimplemented on the PIC12C671/672 and read as '0'.

1999 Microchip Technology Inc.                                                                                DS30561B-page 13
PIC12C67X

TABLE 4-1: PIC12C67X SPECIAL FUNCTION REGISTER SUMMARY (CONT.)

Address Name           Bit 7   Bit 6      Bit 5              Bit 4    Bit 3  Bit 2  Bit 1         Bit 0  Value on  Value on
                                                                                                         Power-on  all other
                                                                                                                   Resets(3)
                                                                                                           Reset

  Bank 1               Addressing this location uses contents of FSR to address data memory (not a physical register) 0000 0000 0000 0000
80h(1) INDF

81h         OPTION     GPPU INTEDG T0CS                      T0SE     PSA    PS2    PS1           PS0    1111 1111 1111 1111

82h(1) PCL             Program Counter's (PC) Least Significant Byte                                     0000 0000 0000 0000

83h(1) STATUS          IRP(4)  RP1(4)     RP0                TO       PD     Z      DC            C      0001 1xxx 000q quuu

84h(1) FSR             Indirect data memory address pointer                                              xxxx xxxx uuuu uuuu

85h         TRIS       --             -- GPIO Data Direction Register                                    --11 1111 --11 1111

86h               --   Unimplemented                                                                     --        --

87h               --   Unimplemented                                                                     --        --

88h               --   Unimplemented                                                                     --        --

89h                --  Unimplemented                                                                     --        --
8Ah(1,2)    PCLATH
8Bh(1)      INTCON     --             --   --    Write Buffer for the upper 5 bits of the PC             ---0 0000 ---0 0000
                                          T0IE
                       GIE     PEIE                          INTE     GPIE   T0IF   INTF          GPIF   0000 000x 0000 000u

8Ch         PIE1       --      ADIE       --                 --       --     --               --  --     -0-- ---- -0-- ----

8Dh               --   Unimplemented                                                                     --        --

8Eh         PCON       --             --  --                 --       --     --     POR           --     ---- --0- ---- --u-

8Fh         OSCCAL     CAL3    CAL2       CAL1               CAL0 CALFST CALSLW               --  --     0111 00-- uuuu uu--

90h               --   Unimplemented                                                                     --        --

91h               --   Unimplemented                                                                     --        --

92h               --   Unimplemented                                                                     --        --

93h               --   Unimplemented                                                                     --        --

94h               --   Unimplemented                                                                     --        --

95h               --   Unimplemented                                                                     --        --

96h               --   Unimplemented                                                                     --        --

97h               --   Unimplemented                                                                     --        --

98h               --   Unimplemented                                                                     --        --

99h               --   Unimplemented                                                                     --        --

9Ah               --   Unimplemented                                                                     --        --

9Bh               --   Unimplemented                                                                     --        --

9Ch               --   Unimplemented                                                                     --        --

9Dh               --   Unimplemented                                                                     --        --

9Eh               --   Unimplemented                                                                     --        --

9Fh         ADCON1     --             --  --                 --       --     PCFG2 PCFG1 PCFG0 ---- -000 ---- -000

Legend:     x = unknown, u = unchanged, q = value depends on condition, - = unimplemented read as '0'.
            Shaded locations are unimplemented, read as `0'.
Note 1:     These registers can be addressed from either bank.
        2:  The upper byte of the program counter is not directly accessible. PCLATH is a holding register for the PC<12:8> whose con-
            tents are transferred to the upper byte of the program counter.
        3:  Other (non power-up) resets include external reset through MCLR and Watchdog Timer Reset.
        4:  The IRP and RP1 bits are reserved on the PIC12C67X; always maintain these bits clear.
        5:  The SCL (GP7) and SDA (GP6) bits are unimplemented on the PIC12C671/672 and read as '0'.

DS30561B-page 14                                                                                  1999 Microchip Technology Inc.
                                                                                      PIC12C67X

4.2.2.1 STATUS REGISTER                                             It is recommended, therefore, that only BCF, BSF,
                                                                    SWAPF and MOVWF instructions are used to alter the
The STATUS Register, shown in Register 4-1, contains                STATUS Register, because these instructions do not
the arithmetic status of the ALU, the RESET status and              affect the Z, C or DC bits from the STATUS Register.
the bank select bits for data memory.                               For other instructions, not affecting any status bits, see
                                                                    the "Instruction Set Summary."
The STATUS Register can be the destination for any
instruction, as with any other register. If the STATUS                  Note 1: Bits IRP and RP1 (STATUS<7:6>) are not
Register is the destination for an instruction that affects                         used by the PIC12C67X and should be
the Z, DC or C bits, then the write to these three bits is                          maintained clear. Use of these bits as
disabled. These bits are set or cleared according to the                            general purpose R/W bits is NOT recom-
device logic. Furthermore, the TO and PD bits are not                               mended, since this may affect upward
writable. Therefore, the result of an instruction with the                          compatibility with future products.
STATUS Register as destination may be different than
intended.                                                                      2: The C and DC bits operate as a borrow
                                                                                    and digit borrow bit, respectively, in sub-
For example, CLRF STATUS will clear the upper three                                 traction. See the SUBLW and SUBWF
bits and set the Z bit. This leaves the STATUS Register                             instructions for examples.
as 000u u1uu (where u = unchanged).

REGISTER 4-1: STATUS REGISTER (ADDRESS 03h, 83h)

Reserved Reserved R/W-0           R-1  R-1                   R/W-x  R/W-x  R/W-x
                                                                              C
IRP       RP1  RP0                TO   PD                    Z      DC          bit0  R = Readable bit
                                                                                      W = Writable bit
bit7                                                                                  U = Unimplemented bit,

                                                                                              read as `0'
                                                                                      - n = Value at POR reset

bit 7:    IRP: Register Bank Select bit (used for indirect addressing)
          1 = Bank 2, 3 (100h - 1FFh)
          0 = Bank 0, 1 (00h - FFh)
          The IRP bit is reserved; always maintain this bit clear.

bit 6-5:  RP<1:0>: Register Bank Select bits (used for direct addressing)
          11 = Bank 3 (180h - 1FFh)
          10 = Bank 2 (100h - 17Fh)
          01 = Bank 1 (80h - FFh)
          00 = Bank 0 (00h - 7Fh)
          Each bank is 128 bytes. The RP1 bit is reserved; always maintain this bit clear.

bit 4:    TO: Time-out bit
          1 = After power-up, CLRWDT instruction, or SLEEP instruction
          0 = A WDT time-out occurred

bit 3:    PD: Power-down bit
          1 = After power-up or by the CLRWDT instruction
          0 = By execution of the SLEEP instruction

bit 2:    Z: Zero bit
          1 = The result of an arithmetic or logic operation is zero
          0 = The result of an arithmetic or logic operation is not zero

bit 1:    DC: Digit Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow the polarity is reversed)
          1 = A carry-out from the 4th low order bit of the result occurred
          0 = No carry-out from the 4th low order bit of the result

bit 0:    C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions)
          1 = A carry-out from the most significant bit of the result occurred
          0 = No carry-out from the most significant bit of the result occurred

Note:     For borrow the polarity is reversed. A subtraction is executed by adding the two's complement of the sec-
          ond operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low order bit of
          the source register.

1999 Microchip Technology Inc.                                                            DS30561B-page 15
PIC12C67X

4.2.2.2 OPTION REGISTER                                    Note:  To achieve a 1:1 prescaler assignment for
                                                                  the TMR0 register, assign the prescaler to
The OPTION Register is a readable and writable regis-             the Watchdog Timer by setting bit PSA
ter, which contains various control bits to configure the         (OPTION<3>).
TMR0/WDT prescaler, the External INT Interrupt,
TMR0 and the weak pull-ups on GPIO.

REGISTER 4-2: OPTION REGISTER (ADDRESS 81h)

  R/W-1   R/W-1   R/W-1    R/W-1  R/W-1       R/W-1        R/W-1  R/W-1       R = Readable bit
  GPPU   INTEDG   T0CS     T0SE    PSA         PS2          PS1    PS0        W = Writable bit
bit7                                                                          U = Unimplemented bit,
                                                                        bit0
                                                                                      read as `0'
                                                                              - n = Value at POR reset

bit 7:   GPPU: Weak Pull-up Enable
bit 6:   1 = Weak pull-ups disabled
bit 5:   0 = Weak pull-ups enabled (GP0, GP1, GP3)
bit 4:
         INTEDG: Interrupt Edge
         1 = Interrupt on rising edge of GP2/T0CKI/AN2/INT pin
         0 = Interrupt on falling edge of GP2/T0CKI/AN2/INT pin

         T0CS: TMR0 Clock Source Select bit
         1 = Transition on GP2/T0CKI/AN2/INT pin
         0 = Internal instruction cycle clock (CLKOUT)

         T0SE: TMR0 Source Edge Select bit
         1 = Increment on high-to-low transition on GP2/T0CKI/AN2/INT pin
         0 = Increment on low-to-high transition on GP2/T0CKI/AN2/INT pin

bit 3:   PSA: Prescaler Assignment bit
         1 = Prescaler is assigned to the WDT
         0 = Prescaler is assigned to the Timer0 module

bit 2-0: PS<2:0>: Prescaler Rate Select bits

         Bit Value TMR0 Rate WDT Rate

         000      1:2      1:1

         001      1:4      1:2

         010      1:8      1:4

         011      1 : 16   1:8

         100      1 : 32   1 : 16

         101      1 : 64   1 : 32

         110      1 : 128  1 : 64

         111      1 : 256  1 : 128

DS30561B-page 16                                                               1999 Microchip Technology Inc.
                                                                                   PIC12C67X

4.2.2.3 INTCON REGISTER                                   Note:        Interrupt flag bits get set when an interrupt
                                                                       condition occurs, regardless of the state of
The INTCON Register is a readable and writable regis-                  its corresponding enable bit or the global
ter, which contains various enable and flag bits for the               enable bit, GIE (INTCON<7>).
TMR0 Register overflow, GPIO port change and exter-
nal GP2/INT pin interrupts.

REGISTER 4-3: INTCON REGISTER (ADDRESS 0Bh, 8Bh)

  R/W-0  R/W-0  R/W-0             R/W-0  R/W-0     R/W-0  R/W-0        R/W-x       R = Readable bit
    GIE  PEIE    T0IE             INTE   GPIE       T0IF  INTF         GPIF        W = Writable bit
                                                                                   U = Unimplemented bit,
bit7                                                                         bit0
                                                                                           read as `0'
                                                                                   - n = Value at POR reset

bit 7:   GIE: Global Interrupt Enable bit
         1 = Enables all un-masked interrupts
         0 = Disables all interrupts

bit 6:   PEIE: Peripheral Interrupt Enable bit
         1 = Enables all un-masked peripheral interrupts
         0 = Disables all peripheral interrupts

bit 5:   T0IE: TMR0 Overflow Interrupt Enable bit
         1 = Enables the TMR0 interrupt
         0 = Disables the TMR0 interrupt

bit 4:   INTE: INT External Interrupt Enable bit
         1 = Enables the external interrupt on GP2/INT/T0CKI/AN2 pin
         0 = Disables the external interrupt on GP2/INT/T0CKI/AN2 pin

bit 3:   GPIE: GPIO Interrupt on Change Enable bit
         1 = Enables the GPIO Interrupt on Change
         0 = Disables the GPIO Interrupt on Change

bit 2:   T0IF: TMR0 Overflow Interrupt Flag bit
         1 = TMR0 register has overflowed (must be cleared in software)
         0 = TMR0 register did not overflow

bit 1:   INTF: INT External Interrupt Flag bit
         1 = The external interrupt on GP2/INT/T0CKI/AN2 pin occurred (must be cleared in software)
         0 = The external interrupt on GP2/INT/T0CKI/AN2 pin did not occur

bit 0:   GPIF: GPIO Interrupt on Change Flag bit
         1 = GP0, GP1 or GP3 pins changed state (must be cleared in software)
         0 = Neither GP0, GP1 nor GP3 pins have changed state

1999 Microchip Technology Inc.                                                   DS30561B-page 17
PIC12C67X                                                       Note: Bit PEIE (INTCON<6>) must be set to
                                                                            enable any peripheral interrupt.
4.2.2.4 PIE1 REGISTER
This register contains the individual enable bits for the
Peripheral interrupts.

REGISTER 4-4: PIE1 REGISTER (ADDRESS 8Ch)

U-0       R/W-0   U-0  U-0           U-0                   U-0  U-0  U-0
                                                                     --
      --  ADIE    --   --            --                    --   --             R = Readable bit
                                                                         bit0  W = Writable bit
bit7                                                                           U = Unimplemented bit,

                                                                                       read as `0'
                                                                               - n = Value at POR reset

bit 7: Unimplemented: Read as '0'

bit 6:    ADIE: A/D Converter Interrupt Enable bit
          1 = Enables the A/D interrupt
          0 = Disables the A/D interrupt

bit 5-0: Unimplemented: Read as '0'

DS30561B-page 18                                                                1999 Microchip Technology Inc.
                                                                                   PIC12C67X

4.2.2.5 PIR1 REGISTER                                         Note:  Interrupt flag bits get set when an interrupt
                                                                     condition occurs, regardless of the state of
This register contains the individual flag bits for the              its corresponding enable bit or the global
Peripheral interrupts.                                               enable bit, GIE (INTCON<7>). User soft-
                                                                     ware should ensure the appropriate inter-
                                                                     rupt flag bits are clear prior to enabling an
                                                                     interrupt.

REGISTER 4-5: PIR1 REGISTER (ADDRESS 0Ch)

U-0       R/W-0  U-0              U-0  U-0               U-0  U-0        U-0

      --  ADIF   --               --   --                --   --         --        R = Readable bit
                                                                                   W = Writable bit
bit7                                                                         bit0  U = Unimplemented bit,

                                                                                           read as `0'
                                                                                   - n = Value at POR reset

bit 7: Unimplemented: Read as '0'

bit 6:    ADIF: A/D Converter Interrupt Flag bit
          1 = An A/D conversion completed (must be cleared in software)
          0 = The A/D conversion is not complete

bit 5-0: Unimplemented: Read as '0'

1999 Microchip Technology Inc.                                                   DS30561B-page 19
PIC12C67X

4.2.2.6 PCON REGISTER

The Power Control (PCON) Register contains a flag bit
to allow differentiation between a Power-on Reset
(POR), an external MCLR Reset and a WDT Reset.

REGISTER 4-6: PCON REGISTER (ADDRESS 8Eh)

U-0       U-0     U-0  U-0           U-0               U-0  R/W-0  U-0

      --  --      --   --            --                --   POR    --   R = Readable bit

bit7                                                                   bit0 W = Writable bit
                                                                                U = Unimplemented bit,

                                                                        read as `0'

                                                                        - n = Value at POR reset

bit 7-2: Unimplemented: Read as '0'

bit 1:    POR: Power-on Reset Status bit
          1 = No Power-on Reset occurred
          0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

bit 0: Unimplemented: Read as '0'

DS30561B-page 20                                                         1999 Microchip Technology Inc.
                                                                             PIC12C67X

4.2.2.7 OSCCAL REGISTER

The Oscillator Calibration (OSCCAL) Register is used
to calibrate the internal 4 MHz oscillator. It contains four
bits for fine calibration and two other bits to either
increase or decrease frequency.

REGISTER 4-7: OSCCAL REGISTER (ADDRESS 8Fh)

R/W-0 R/W-1 R/W-1 R/W-1 R/W-0 R/W-0                           U-0  U-0
                                                                   --
CAL3 CAL2 CAL1 CAL0 CALFST CALSLW                             --             R = Readable bit
                                                                       bit0  W = Writable bit
bit7                                                                         U = Unimplemented bit,

                                                                                     read as `0'
                                                                             - n = Value at POR reset

bit 7-4: CAL<3:0>: Fine Calibration

bit 3:  CALFST: Calibration Fast
        1 = Increase frequency
        0 = No change

bit 2:  CALSLW: Calibration Slow
        1 = Decrease frequency
        0 = No change

bit 1-0: Unimplemented: Read as '0'

Note: If CALFST = 1 and CALSLW = 1, CALFST has precedence.

1999 Microchip Technology Inc.                                             DS30561B-page 21
PIC12C67X

4.3 PCL and PCLATH                                                   4.3.2 STACK

The Program Counter (PC) is 13-bits wide. The low                    The PIC12C67X family has an 8-level deep x 13-bit
byte comes from the PCL Register, which is a readable                wide hardware stack. The stack space is not part of
and writable register. The high byte (PC<12:8>) is not               either program or data space and the stack pointer is
directly readable or writable and comes from PCLATH.                 not readable or writable. The PC is PUSHed onto the
On any reset, the PC is cleared. Figure 4-3 shows the                stack when a CALL instruction is executed or an inter-
two situations for the loading of the PC. The upper                  rupt causes a branch. The stack is POPed in the event
example in the figure shows how the PC is loaded on a                of a RETURN, RETLW or a RETFIE instruction execu-
write to PCL (PCLATH<4:0>  PCH). The lower exam-                     tion. PCLATH is not affected by a PUSH or POP oper-
ple in the figure shows how the PC is loaded during a                ation.
CALL or GOTO instruction (PCLATH<4:3>  PCH).
                                                                     The stack operates as a circular buffer. This means that
FIGURE 4-3: LOADING OF PC IN                                         after the stack has been PUSHed eight times, the ninth
                     DIFFERENT SITUATIONS                            push overwrites the value that was stored from the first
                                                                     push. The tenth push overwrites the second push (and
          PCH              PCL                                       so on).

      12           87               0  Instruction with                  Note 1: There are no status bits to indicate stack
PC                              8      PCL as                                        overflow or stack underflow conditions.
                                       Destination
                  PCLATH<4:0>                                                   2: There are no instructions/mnemonics
          5                            ALU result                                    called PUSH or POP. These are actions
                                                                                     that occur from the execution of the
                   PCLATH                                                            CALL, RETURN, RETLW, and RETFIE
                                                                                     instructions, or the vectoring to an inter-
              PCH  87      PCL                                                       rupt address.
      12 11 10                                 0
PC                                                    GOTO, CALL     4.4 Program Memory Paging

2 PCLATH<4:3>                         11                             The PIC12C67X ignores both paging bits
                                                      Opcode <10:0>  PCLATH<4:3>, which are used to access program
                                                                     memory when more than one page is available. The
                   PCLATH                                            use of PCLATH<4:3> as general purpose read/write
                                                                     bits for the PIC12C67X is not recommended since this
4.3.1 COMPUTED GOTO                                                  may affect upward compatibility with future products.

A Computed GOTO is accomplished by adding an off-
set to the program counter (ADDWF PCL). When doing
a table read using a computed GOTO method, care
should be exercised if the table location crosses a PCL
memory boundary (each 256 byte block). Refer to the
application note "Implementing a Table Read" (AN556).

DS30561B-page 22                                                      1999 Microchip Technology Inc.
                                                                                           PIC12C67X

4.5 Indirect Addressing, INDF and FSR                           EXAMPLE 4-1: INDIRECT ADDRESSING
          Registers
                                                                          movlw     0x20   ;initialize pointer
The INDF Register is not a physical register. Address-                              FSR    ;to RAM
ing the INDF Register will cause indirect addressing.                     movwf     INDF   ;clear INDF register
                                                                                    FSR,F  ;inc pointer
Any instruction using the INDF register actually                NEXT      clrf      FSR,4  ;all done?
accesses the register pointed to by the File Select Reg-                            NEXT   ;no clear next
ister, FSR. Reading the INDF Register itself indirectly                   incf
(FSR = '0') will read 00h. Writing to the INDF Register                                     ;yes continue
indirectly results in a no-operation (although status bits                btfss
may be affected). An effective 9-bit address is obtained
by concatenating the 8-bit FSR Register and the IRP bit                   goto
(STATUS<7>), as shown in Figure 4-4. However, IRP is
not used in the PIC12C67X.                                      CONTINUE

A simple program to clear RAM locations 20h-2Fh                           :
using indirect addressing is shown in Example 4-1.

FIGURE 4-4: DIRECT/INDIRECT ADDRESSING

Direct Addressing                                                                         Indirect Addressing

RP1 RP0(1) 6  from opcode              0                                     IRP(1) 7      FSR register        0

bank select location select                                                   bank select  location select

                                       00         01        10        11

                                  00h                                         180h

                                                            not used

              Data
              Memory

                                  7Fh             Bank 1 Bank 2                     1FFh

                                          Bank 0                      Bank 3

For register file map detail see Figure 4-2.
Note 1: The RP1 and IRP bits are reserved; always maintain these bits clear.

1999 Microchip Technology Inc.                                                           DS30561B-page 23
PIC12C67X

NOTES:

DS30561B-page 24   1999 Microchip Technology Inc.
                                                                    PIC12C67X

5.0 I/O PORT                                                 5.3 I/O Interfacing

As with any other register, the I/O register can be          The equivalent circuit for an I/O port pin is shown in
written and read under program control. However, read        Figure 5-1 through Figure 5-5. All port pins, except
instructions (i.e., MOVF GPIO,W) always read the I/O         GP3, which is input only, may be used for both input
pins independent of the pin's input/output modes. On         and output operations. For input operations, these
RESET, all I/O ports are defined as input (inputs are at     ports are non-latching. Any input must be present until
hi-impedance), since the I/O control registers are all       read by an input instruction (i.e., MOVF GPIO,W). The
set.                                                         outputs are latched and remain unchanged until the
                                                             output latch is rewritten. To use a port pin as output,
5.1 GPIO                                                     the corresponding direction control bit in TRIS must be
                                                             cleared (= 0). For use as an input, the corresponding
GPIO is an 8-bit I/O register. Only the low order 6 bits     TRIS bit must be set. Any I/O pin (except GP3) can be
are used (GP<5:0>). Bits 6 and 7 (SDA and SCL,               programmed individually as input or output.
respectively) are used by the EEPROM peripheral on
the PIC12CE673/674. Refer to Section 6.0 and                 Port pins GP6 (SDA) and GP7 (SCL) are used for the
Appendix B for use of SDA and SCL. Please note that          serial EEPROM interface on the PIC12CE673/674.
GP3 is an input only pin. The configuration word can         These port pins are not available externally on the
set several I/O's to alternate functions. When acting as     package. Users should avoid writing to pins GP6
alternate functions, the pins will read as `0' during port   (SDA) and GP7 (SCL) when not communicating with
read. Pins GP0, GP1 and GP3 can be configured with           the serial EEPROM memory. Please see Section 6.0,
weak pull-ups and also with interrupt-on-change. The         EEPROM Peripheral Operation, for information on
interrupt on change and weak pull-up functions are not       serial EEPROM communication.
pin selectable. If pin 4, (GP3), is configured as MCLR,
a weak pull-up is always on. Interrupt-on-change for         Note:  On a Power-on Reset, GP0, GP1, GP2
this pin is not set and GP3 will read as '0'. Interrupt-on-         and GP4 are configured as analog inputs
change is enabled by setting bit GPIE, INTCON<3>.                   and read as '0'.
Note that external oscillator use overrides the GPIO
functions on GP4 and GP5.

5.2 TRIS Register

This register controls the data direction for GPIO. A '1'
from a TRIS Register bit puts the corresponding output
driver in a hi-impedance mode. A '0' puts the contents
of the output data latch on the selected pins, enabling
the output buffer. The exceptions are GP3, which is
input only and its TRIS bit will always read as '1', while
GP6 and GP7 TRIS bits will read as '0'.

Note:  A read of the ports reads the pins, not the
       output data latches. That is, if an output
       driver on a pin is enabled and driven high,
       but the external system is holding it low, a
       read of the port will indicate that the pin is
       low.

Upon reset, the TRIS Register is all '1's, making all
pins inputs.

TRIS for pins GP4 and GP5 is forced to a '1' where
appropriate. Writes to TRIS <5:4> will have an effect
in EXTRC and INTRC oscillator modes only. When
GP4 is configured as CLKOUT, changes to TRIS<4>
will have no effect.

1999 Microchip Technology Inc.                                    DS30561B-page 25
PIC12C67X

FIGURE 5-1: BLOCK DIAGRAM OF GP0/AN0 AND GP1/AN1/VREF PIN

                              GPPU

Data Bus          D  Q                       VDD                  VDD          VDD
WR PORT                                      P                    P                       I/O Pin
                   CK Q                      N
                  Data Latch                 VSS                                    VSS

                  D  Q

WR TRIS            CK Q
                  TRIS Latch

                                                              Analog   TTL
                                                              Input    Input
                                                              Mode     Buffer

                              RD TRIS

                                                           Q  D

                                                              EN

                                   RD PORT
                  GP0/INT(1) and GP1/INT(1)
                  To A/D Converter

Note 1: Wake-up on pin change interrupts for GP0 and GP1.

DS30561B-page 26                                                       1999 Microchip Technology Inc.
                                                                                  PIC12C67X

FIGURE 5-2: BLOCK DIAGRAM OF GP2/T0CKI/AN2/INT PIN

Data Bus  D                       Q           VDD                                  VDD
WR PORT                                       P                                                  I/O Pin
           CK Q                               N
          Data Latch                                                                     VSS
                                              VSS
          D                       Q                                               Schmitt Trigger
                                                                          Analog  Input Buffer
WR TRIS    CK Q                                                           Input
          TRIS Latch                                                      Mode

                                     RD TRIS

                                              Q     D

                                                 EN

                          RD PORT
          TMR0 Clock Input
          GP2/INT
          To A/D Converter

1999 Microchip Technology Inc.                                                  DS30561B-page 27
PIC12C67X

FIGURE 5-3: BLOCK DIAGRAM OF GP3/MCLR/VPP PIN

                                                                                                              VDD

                                GPPU

                                MCLREN                                 P                                           Input Pin

                                MCLR                                                                                  VSS

                                                  Schmitt Trigger                                                  TTL Input
                                                  Input Buffer                                                     Buffer

                  Program Mode  HV Detect

Data Bus                                          Q                D
                      RD PORT
                                                                   EN

RD TRIS                         VSS

GP3/INT(1)

Note 1: Wake-up on pin change interrupt for GP3.

DS30561B-page 28                                                                                                    1999 Microchip Technology Inc.
                                                                                      PIC12C67X

FIGURE 5-4: BLOCK DIAGRAM OF GP4/OSC2/AN3/CLKOUT PIN

                                            INTRC or EXTRC w/ CLKOUT

          CLKOUT (FOSC/4)
                                         1

                                     0

Data Bus  D                       Q                    From OSC1 Oscillator
WR PORT                                                                      Circuit
           CK Q                                                                       VDD
          Data Latch                          VDD                                                 I/O Pin

                                              P

                                                           N                          VSS
                                            INTRC/ VSS
          D                       Q         EXTRC

WR TRIS    CK Q                                                  INTRC or EXTRC
          TRIS Latch                                             w/o CLKOUT

                                                                      Analog          TTL
                                                                      Input           Input Buffer
                                                                      Mode

                                     RD TRIS                  Q  D

                          RD PORT                                EN
          To A/D Converter

1999 Microchip Technology Inc.                                                      DS30561B-page 29
PIC12C67X

FIGURE 5-5: BLOCK DIAGRAM OF GP5/OSC1/CLKIN PIN

                                              To OSC2     Oscillator
                                                           Circuit
Data Bus
WR PORT           D  Q                        VDD                            VDD
                                                                                          I/O Pin
                   EN Q                       P
                  Data Latch

                                              N

                  D  Q

WR TRIS            EN Q                INTRC  VSS                                          VSS
                  TRIS Latch

                                                                      INTRC

                                                                             TTL
                                                                             Input Buffer

                        RD TRIS

                                                       Q  D

                                                          EN

                              RD PORT

DS30561B-page 30                                                             1999 Microchip Technology Inc.
                                                                                           PIC12C67X

TABLE 5-1: SUMMARY OF PORT REGISTERS

Address     Name    Bit 7         Bit 6   Bit 5  Bit 4 Bit 3 Bit 2 Bit 1 Bit 0             Value on  Value on
                                                                                           Power-on  all other
                                                                                                      Resets
                                                                                             Reset

85h         TRIS    --            -- GPIO Data Direction Register                          --11 1111 --11 1111

81h         OPTION GPPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111

03h         STATUS  IRP(1)        RP1(1)  RP0                  TO  PD  Z  DC C 0001 1xxx 000q quuu

05h         GPIO    SCL(2) SDA(2) GP5 GP4 GP3 GP2 GP1 GP0 11xx xxxx 11uu uuuu

Legend:     Shaded cells not used by Port Registers, read as `0', -- = unimplemented, read as '0', x = unknown, u = unchanged,
            q = see tables in Section 9.4 for possible values.
Note 1:     The IRP and RP1 bits are reserved on the PIC12C67X; always maintain these bits clear.
        2:  The SCL and SDA bits are unimplemented on the PIC12C671 and PIC12C672.

5.4 I/O Programming Considerations                                 Example 5-1 shows the effect of two sequential read-
                                                                   modify-write instructions on an I/O port.
5.4.1 BI-DIRECTIONAL I/O PORTS
                                                                   EXAMPLE 5-1: READ-MODIFY-WRITE
Any instruction which writes, operates internally as a                                     INSTRUCTIONS ON AN
read followed by a write operation. The BCF and BSF                                        I/O PORT
instructions, for example, read the register into the
CPU, execute the bit operation and write the result back           ;Initial GPIO Settings
to the register. Caution must be used when these
instructions are applied to a port with both inputs and            ; GPIO<5:3> Inputs
outputs defined. For example, a BSF operation on bit5
of GPIO will cause all eight bits of GPIO to be read into          ; GPIO<2:0> Outputs
the CPU. Then the BSF operation takes place on bit5
and GPIO is written to the output latches. If another bit          ;
of GPIO is used as a bi-directional I/O pin (i.e., bit0) and
it is defined as an input at this time, the input signal           ;                       GPIO latch GPIO pins
present on the pin itself would be read into the CPU and
rewritten to the data latch of this particular pin, overwrit-      ;                       ---------- ----------
ing the previous content. As long as the pin stays in the
input mode, no problem occurs. However, if bit0 is                     BCF GPIO, 5 ;--01 -ppp --11 pppp
switched to an output, the content of the data latch may
now be unknown.                                                        BCF GPIO, 4 ;--10 -ppp --11 pppp

Reading the port register reads the values of the port                 MOVLW 007h       ;
pins. Writing to the port register writes the value to the
port latch. When using read-modify-write instructions                  TRIS GPIO   ;--10 -ppp --10 pppp
(i.e., BCF, BSF, etc.) on a port, the value of the port
pins is read, the desired operation is done to this value,         ;
and this value is then written to the port latch.
                                                                   ;Note that the user may have expected the pin

                                                                   ;values to be --00 pppp. The 2nd BCF caused

                                                                   ;GP5 to be latched as the pin value (High).

                                                                   A pin actively outputting a Low or High should not be
                                                                   driven from external devices at the same time in order
                                                                   to change the level on this pin ("wired-or", "wired-and").
                                                                   The resulting high output currents may damage the
                                                                   chip.

1999 Microchip Technology Inc.                                                           DS30561B-page 31
PIC12C67X

NOTES:

DS30561B-page 32   1999 Microchip Technology Inc.
6.0 EEPROM PERIPHERAL                                                  PIC12C67X
         OPERATION
                                                         6.1 Bus Characteristics
The PIC12CE673 and PIC12CE674 each have 16
bytes of EEPROM data memory. The EEPROM mem-             The following bus protocol is to be used with the
ory has an endurance of 1,000,000 erase/write cycles     EEPROM data memory. In this section, the term "proces-
and a data retention of greater than 40 years. The       sor" is used to denote the portion of the PIC12C67X that
EEPROM data memory supports a bi-directional 2-wire      interfaces to the EEPROM via software.
bus and data transmission protocol. These two-wires       Data transfer may be initiated only when the bus
are serial data (SDA) and serial clock (SCL), that are
mapped to bit6 and bit7, respectively, of the GPIO reg-     is not busy.
ister (SFR 06h). Unlike the GP0-GP5 that are con-        During data transfer, the data line must remain stable
nected to the I/O pins, SDA and SCL are only             whenever the clock line is HIGH. Changes in the data
connected to the internal EEPROM peripheral. For         line while the clock line is HIGH will be interpreted as a
most applications, all that is required is calls to the  START or STOP condition.
following functions:                                     Accordingly, the following bus conditions have been
                                                         defined (Figure 6-3).
; Byte_Write: Byte write routine
                                                         6.1.1 BUS NOT BUSY (A)
;        Inputs: EEPROM Address   EEADDR
                                                         Both data and clock lines remain HIGH.
;        EEPROM Data              EEDATA
                                                         6.1.2 START DATA TRANSFER (B)
;        Outputs: Return 01 in W if OK, else
                                                         A HIGH to LOW transition of the SDA line while the
         return 00 in W                                  clock (SCL) is HIGH determines a START condition. All
                                                         commands must be preceded by a START condition.
;
                                                         6.1.3 STOP DATA TRANSFER (C)
; Read_Current: Read EEPROM at address
                                                         A LOW to HIGH transition of the SDA line while the
currently held by EE device.                             clock (SCL) is HIGH determines a STOP condition. All
                                                         operations must be ended with a STOP condition.
;        Inputs: NONE
                                                         6.1.4 DATA VALID (D)
;        Outputs: EEPROM Data EEDATA
                                                         The state of the data line represents valid data when,
;        Return 01 in W if OK, else                      after a START condition, the data line is stable for the
                                                         duration of the HIGH period of the clock signal.
         return 00 in W                                  The data on the line must be changed during the LOW
                                                         period of the clock signal. There is one bit of data per
;                                                        clock pulse.
                                                         Each data transfer is initiated with a START condition
; Read_Random: Read EEPROM byte at supplied              and terminated with a STOP condition. The number of
                                                         the data bytes transferred between the START and
address                                                  STOP conditions is determined by the available data
                                                         EEPROM space.
;        Inputs: EEPROM Address   EEADDR

;        Outputs: EEPROM Data EEDATA

;        Return 01 in W if OK,

         else return 00 in W

The code for these functions is available on our web
site (www.microchip.com). The code will be accessed
by either including the source code FL67XINC.ASM or
by linking FLASH67X.ASM. FLASH67X.INC provides
external definition to the calling program.

6.0.1 SERIAL DATA

SDA is a bi-directional pin used to transfer addresses
and data into and data out of the device.

For normal data transfer, SDA is allowed to change only
during SCL low. Changes during SCL high are
reserved for indicating the START and STOP condi-
tions.

6.0.2 SERIAL CLOCK

This SCL signal is used to synchronize the data trans-
fer from and to the EEPROM.

1999 Microchip Technology Inc.                         DS30561B-page 33
PIC12C67X

6.1.5 ACKNOWLEDGE                                          The device that acknowledges has to pull down the
                                                           SDA line during the acknowledge clock pulse in such a
The EEPROM, when addressed, will generate an               way that the SDA line is stable LOW during the HIGH
acknowledge after the reception of each byte. The pro-     period of the acknowledge related clock pulse. Of
cessor must generate an extra clock pulse which is         course, setup and hold times must be taken into
associated with this acknowledge bit.                      account. The processor must signal an end of data to
                                                           the EEPROM by not generating an acknowledge bit on
   Note: Acknowledge bits are not generated if an          the last byte that has been clocked out of the EEPROM.
               internal programming cycle is in progress.  In this case, the EEPROM must leave the data line
                                                           HIGH to enable the processor to generate the STOP
                                                           condition (Figure 6-4).

FIGURE 6-1: BLOCK DIAGRAM OF GPIO6 (SDA LINE)

                                                                            VDD

                            Reset

                         D                                                                                   To EEPROM SDA
                                                                                                             Pad
                  Write        EN
                            CK Q                                            P

Data Bus          GPIO   Output Latch

                         Q        D

                               ECNK                        Schmitt Trigger
                         Input Latch
                  Read
                  GPIO                   ltchpin

FIGURE 6-2: BLOCK DIAGRAM OF GPIO7 (SCL LINE)

                                                                            VDD

                         D                                                  P    To EEPROM SCL
                                                                                 Pad

                  Write      EN
                         CK Q
                  GPIO
Data Bus                 Output Latch
                                                                            N

                         Q  D

                            ECNK                           Schmitt Trigger

                  Read                 ltchpin
                  GPIO

DS30561B-page 34                                                                  1999 Microchip Technology Inc.
                                                                                     PIC12C67X

FIGURE 6-3: DATA TRANSFER SEQUENCE ON THE SERIAL BUS

SCL (A) (B)                       (C)                                   (D)                      (C) (A)

SDA

        START                      ADDRESS OR                   DATA                                 STOP
     CONDITION                    ACKNOWLEDGE               ALLOWED                              CONDITION
                                                           TO CHANGE
                                         VALID

FIGURE 6-4: ACKNOWLEDGE TIMING

                                                           Acknowledge
                                                                  Bit

SCL          12 345678 9 123

SDA                            Data from transmitter                      Data from transmitter

     Transmitter must release the SDA line at this point                Receiver must release the SDA line at this
     allowing the Receiver to pull the SDA line low to                  point so the Transmitter can continue
     acknowledge the previous eight bits of data.                       sending data.

6.2 Device Addressing                                      FIGURE 6-5: CONTROL BYTE FORMAT

After generating a START condition, the processor                                                       Read/Write Bit
transmits a control byte consisting of a EEPROM
address and a Read/Write bit that indicates what type                 Device Select  Don't Care
of operation is to be performed. The EEPROM address                         Bits         Bits
consists of a 4-bit device code (1010) followed by three
don't care bits.                                                      S 1 0 1 0 X X X R/W ACK

The last bit of the control byte determines the operation                    EEPROM Address
to be performed. When set to a one, a read operation
is selected, and when set to a zero, a write operation is  Start Condition           Acknowledge Condition
selected (Figure 6-5). The bus is monitored for its cor-
responding EEPROM address all the time. It generates
an acknowledge bit if the EEPROM address was true
and it is not in a programming mode.

1999 Microchip Technology Inc.                                                             DS30561B-page 35
PIC12C67X

6.3 Write Operations                                         6.4 Acknowledge Polling
                                                             Since the EEPROM will not acknowledge during a write
6.3.1 BYTE WRITE                                             cycle, this can be used to determine when the cycle is
                                                             complete (this feature can be used to maximize bus
Following the start signal from the processor, the           throughput). Once the stop condition for a write com-
device code (4 bits), the don't care bits (3 bits), and the  mand has been issued from the processor, the device
R/W bit (which is a logic low) are placed onto the bus       initiates the internally timed write cycle. ACK polling
by the processor. This indicates to the addressed            can be initiated immediately. This involves the proces-
EEPROM that a byte with a word address will follow           sor sending a start condition followed by the control
after it has generated an acknowledge bit during the         byte for a write command (R/W = 0). If the device is still
ninth clock cycle. Therefore, the next byte transmitted      busy with the write cycle, then no ACK will be returned.
by the processor is the word address and will be written     If no ACK is returned, then the start bit and control byte
into the address pointer. Only the lower four address        must be re-sent. If the cycle is complete, then the
bits are used by the device, and the upper four bits are     device will return the ACK and the processor can then
don't cares. If the address byte is acknowledged, the        proceed with the next read or write command. (See
processor will then transmit the data word to be written     Figure 6-6 for flow diagram.)
into the addressed memory location. The memory
acknowledges again and the processor generates a             FIGURE 6-6: ACKNOWLEDGE POLLING
stop condition. This initiates the internal write cycle,                          FLOW
and during this time will not generate acknowledge sig-
nals. After a byte write command, the internal address                                          Send
counter will not be incremented and will point to the                                    Write Command
same address location that was just written. If a stop bit
sequence is transmitted to the device at any point in the                                   Send Stop
write command sequence before the entire sequence                                          Condition to
is complete, then the command will abort and no data                                  Initiate Write Cycle
will be written. If more than 8 data bits are transmitted
before the stop bit sequence is sent, then the device will                                  Send Start
clear the previously loaded byte and begin loading the
data buffer again. If more than one data byte is trans-                               Send Control Byte
mitted to the device and a stop bit is sent before a full                                 with R/W = 0
eight data bits have been transmitted, then the write
command will abort and no data will be written. The
EEPROM memory employs a VCC threshold detector
circuit, which disables the internal erase/write logic if
the VCC is below minimum VDD. Byte write operations
must be preceded and immediately followed by a bus
not busy bus cycle where both SDA and SCL are held
high. (See Figure 6-7 for Byte Write operation.)

                                                                         Did EEPROM   NO
                                                                         Acknowledge

                                                                         (ACK = 0)?

                                                                         YES

                                                                            Next
                                                                         Operation

FIGURE 6-7: BYTE WRITE

                    S                                                                      S
                                                                                           T
                    T  CONTROL                                 WORD      DATA              O
                    A     BYTE                               ADDRESS                       P
                    R
                                                                                          P
                    T
                                                                                      A
SDA LINE            S1 0 1 0 XX X 0     XXXX                                          C
ACTIVITY                                                                              K

                                     A                                A

                                     C                                C

                                     K                                K

X = Don't Care Bit

DS30561B-page 36                                                          1999 Microchip Technology Inc.
                                                                                                PIC12C67X

6.5 Read Operations                                                  address is sent, the processor generates a start condi-
                                                                     tion following the acknowledge. This terminates the
Read operations are initiated in the same way as write               write operation, but not before the internal address
operations with the exception that the R/W bit of the                pointer is set. Then the processor issues the control
EEPROM address is set to one. There are three basic                  byte again, but with the R/W bit set to a one. The
types of read operations; current address read, random               EEPROM will then issue an acknowledge and trans-
read and sequential read.                                            mits the 8-bit data word. The processor will not
                                                                     acknowledge the transfer, but does generate a stop
6.5.1 CURRENT ADDRESS READ                                           condition and the EEPROM discontinues transmission
                                                                     (Figure 6-9). After this command, the internal address
The EEPROM contains an address counter that main-                    counter will point to the address location following the
tains the address of the last word accessed, internally              one that was just read.
incremented by one. Therefore, if the previous read
access was to address n, the next current address read               6.5.3 SEQUENTIAL READ
operation would access data from address n + 1. Upon
receipt of the EEPROM address with the R/W bit set to                Sequential reads are initiated in the same way as a ran-
one, the EEPROM issues an acknowledge and trans-                     dom read, except that after the device transmits the first
mits the 8-bit data word. The processor will not                     data byte, the processor issues an acknowledge as
acknowledge the transfer, but does generate a stop                   opposed to a stop condition in a random read. This
condition and the EEPROM discontinues transmission                   directs the EEPROM to transmit the next sequentially
(Figure 6-8).                                                        addressed 8-bit word (Figure 6-10).

6.5.2 RANDOM READ                                                    To provide sequential reads, the EEPROM contains an
                                                                     internal address pointer, which is incremented by one
Random read operations allow the processor to access                 at the completion of each read operation. This address
any memory location in a random manner. To perform                   pointer allows the entire memory contents to be serially
this type of read operation, first the word address must             read during one operation.
be set. This is done by sending the word address to the
EEPROM as part of a write operation. After the word

FIGURE 6-8:  CURRENT ADDRESS READ

                                                      S

                                                      T                                         S
                                                                                                T
                                                      A CONTROL                                 O
                                                                                                P
                                                      R   BYTE

                                                      T

                                  SDA LINE            S 1 0 1 0 XXX 1                           P
                                  ACTIVITY

                                                                           A                 N
                                                                           C
                                                                           K  DATA           O

                                  X = Don't Care Bit                                         A
                                                                                             C
                                                                                             K

FIGURE 6-9: RANDOM READ

                    S                                                   S

                    T             CONTROL                               T                                             S
                                                                                                                      T
                    A             BYTE                    WORD          A CONTROL                                     O
                                                      ADDRESS (n)                                                     P
                    R                                                   R     BYTE
                                                                                                                       P
                    T                                                   T
                                                                                                                   N
                    S 10 10 XXX0 X XXX                                  S 10 10 XXX1            DATA (n) O

          SDA LINE                                A                  A                    A                        A
          ACTIVITY                                C                                                                C
                                                  K                  C                    C                        K

                                                                     K                    K

X = Don't Care Bit

FIGURE 6-10: SEQUENTIAL READ

                                                                                                                             S

                    CONTROL                                                                                                  T
                       BYTE
                                  DATA n                 DATA n + 1           DATA n + 2           DATA n + X                O

                                                                                                                             P

SDA LINE                                                                                                                     P
ACTIVITY
                       A                    A                           A                 A                               N
                       C                                                                                                  O
                       K                    C                           C                 C
                                                                                                                          A
                                            K                           K                 K                               C
                                                                                                                          K

1999 Microchip Technology Inc.                                                                   DS30561B-page 37
PIC12C67X

NOTES:

DS30561B-page 38   1999 Microchip Technology Inc.
7.0 TIMER0 MODULE                                                                PIC12C67X

The Timer0 module timer/counter has the following fea-              (OPTION<4>). Clearing bit T0SE selects the rising
tures:                                                              edge. Restrictions on the external clock input are dis-
                                                                    cussed in detail in Section 7.2.
8-bit timer/counter
Readable and writable                                             The prescaler is mutually exclusively shared between
8-bit software programmable prescaler                             the Timer0 module and the Watchdog Timer. The pres-
Internal or external clock select                                 caler assignment is controlled in software by control bit
Interrupt on overflow from FFh to 00h                             PSA (OPTION<3>). Clearing bit PSA will assign the
Edge select for external clock                                    prescaler to the Timer0 module. The prescaler is not
                                                                    readable or writable. When the prescaler is assigned to
Figure 7-1 is a simplified block diagram of the Timer0              the Timer0 module, prescale values of 1:2, 1:4, ...,
module.                                                             1:256 are selectable. Section 7.3 details the operation
                                                                    of the prescaler.
Timer mode is selected by clearing bit T0CS
(OPTION<5>). In timer mode, the Timer0 module will                  7.1 Timer0 Interrupt
increment every instruction cycle (without prescaler). If
the TMR0 register is written, the increment is inhibited            The TMR0 interrupt is generated when the TMR0 reg-
for the following two instruction cycles (Figure 7-2 and            ister overflows from FFh to 00h. This overflow sets bit
Figure 7-3). The user can work around this by writing               T0IF (INTCON<2>). The interrupt can be masked by
an adjusted value to the TMR0 register.                             clearing bit T0IE (INTCON<5>). Bit T0IF must be
                                                                    cleared in software by the Timer0 module interrupt ser-
Counter mode is selected by setting bit T0CS                        vice routine before re-enabling this interrupt. The
(OPTION<5>). In counter mode, Timer0 will increment                 TMR0 interrupt cannot awaken the processor from
either on every rising or falling edge of pin RA4/T0CKI.            SLEEP, since the timer is shut off during SLEEP. See
The incrementing edge is determined by the bit T0SE                 Figure 7-4 for Timer0 interrupt timing.

FIGURE 7-1: TIMER0 BLOCK DIAGRAM

                         FOSC/4      0                           1        Sync with     Data Bus
                                     1                                      Internal                 8
GP2/TOCKI/                              Programmable        0                clocks
AN2/INT                           TOCS     Prescaler       PSA                           TMR0
                                                                         (2 TCY delay)
                   TOSE                          3                                                         Set interrupt
                                         PS<2:0>                                                           flag bit T0IF
                                                                                                           on overflow

Note 1: TOCS, TOSE, PSA, PS<2:0> (OPTION<5:0>).
        2: The prescaler is shared with Watchdog Timer (refer to Figure 7-6 for detailed block diagram).

FIGURE 7-2: TIMER0 TIMING: INTERNAL CLOCK/NO PRESCALE

PC           Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
(Program
Counter)         PC-1             PC    PC+1               PC+2     PC+3  PC+4          PC+5              PC+6
Instruction
Fetch                            MOVWF TMR0 MOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,W

TMR0         T0                  T0+1   T0+2      NT0               NT0   NT0           NT0+1             NT0+2           T0

Instruction                             Write TMR0 Read TMR0 Read TMR0 Read TMR0 Read TMR0 Read TMR0
Executed

                                        executed  reads NT0 reads NT0 reads NT0 reads NT0 + 1 reads NT0 + 2

1999 Microchip Technology Inc.                                                                          DS30561B-page 39
PIC12C67X

FIGURE 7-3: TIMER0 TIMING: INTERNAL CLOCK/PRESCALE 1:2

PC           Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
(Program
Counter)            PC-1            PC         PC+1    PC+2       PC+3                         PC+4           PC+5       PC+6
Instruction
Fetch                               MOVWF TMR0 MOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,WMOVF TMR0,W

TMR0            T0                  T0+1                          NT0                                               NT0+1

Instruction                               Write TMR0 Read TMR0 Read TMR0 Read TMR0 Read TMR0 Read TMR0
Execute                                                reads NT0 reads NT0 reads NT0 reads NT0 reads NT0 + 1
                                          executed

FIGURE 7-4: TIMER0 INTERRUPT TIMING

                    Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4

OSC1
CLKOUT(3)

Timer0              FEh                   FFh                00h                               01h                  02h

                                 1             1
T0IF bit                                                                 Interrupt Latency(2)
(INTCON<2>)

GIE bit
(INTCON<7>)

INSTRUCTION
FLOW

            PC          PC                 PC +1               PC +1                                0004h              0005h
                    Inst (PC)             Inst (PC+1)        Dummy cycle                        Inst (0004h)        Inst (0005h)
Instruction         Inst (PC-1)            Inst (PC)                                           Dummy cycle          Inst (0004h)
fetched

Instruction
executed

Note 1:      Interrupt flag bit T0IF is sampled here (every Q1).
       2:    Interrupt latency = 3TCY where TCY = instruction cycle time.
       3:    CLKOUT is available only in the INTRC and EXTRC oscillator modes.

DS30561B-page 40                                                                                     1999 Microchip Technology Inc.
7.2 Using Timer0 with an External Clock                                                  PIC12C67X

When an external clock input is used for Timer0, it must                    caler, so that the prescaler output is symmetrical. For
meet certain requirements. The requirements ensure                          the external clock to meet the sampling requirement,
the external clock can be synchronized with the internal                    the ripple-counter must be taken into account. There-
phase clock (TOSC). Also, there is a delay in the actual                    fore, it is necessary for T0CKI to have a period of at
incrementing of Timer0 after synchronization.                               least 4TOSC (and a small RC delay of 40 ns) divided by
                                                                            the prescaler value. The only requirement on T0CKI
7.2.1 EXTERNAL CLOCK SYNCHRONIZATION                                        high and low time is that they do not violate the mini-
                                                                            mum pulse width requirement of 10 ns. Refer to param-
When no prescaler is used, the external clock input is                      eters 40, 41 and 42 in the electrical specification of the
used as the clock source. The synchronization of                            desired device.
T0CKI with the internal phase clocks is accomplished
by sampling the prescaler output on the Q2 and Q4                           7.2.2 TMR0 INCREMENT DELAY
cycles of the internal phase clocks (Figure 7-5). There-
fore, it is necessary for T0CKI to be high for at least                     Since the prescaler output is synchronized with the
2TOSC (and a small RC delay of 20 ns) and low for at                        internal clocks, there is a small delay from the time the
least 2TOSC (and a small RC delay of 20 ns). Refer to                       external clock edge occurs to the time the Timer0 mod-
the electrical specification of the desired device.                         ule is actually incremented. Figure 7-5 shows the delay
                                                                            from the external clock edge to the timer incrementing.
When a prescaler is used, the external clock input is
divided by the asynchronous ripple-counter type pres-

FIGURE 7-5: TIMER0 TIMING WITH EXTERNAL CLOCK

           External Clock Input or  Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
           Prescaler output(2)
                                                                                                                                             Small pulse
                                                                                                                                             misses sampling

                                                                   (1)

           External Clock/Prescaler (3)
           Output after sampling

           Increment Timer0 (Q4)

           Timer0                                                       T0  T0 + 1  T0 + 2

Note 1:    Delay from clock input change to Timer0 increment is 3TOSC to 7TOSC. (Duration of Q = TOSC). Therefore, the error
           in measuring the interval between two edges on Timer0 input = 4TOSC max.
       2:  External clock if no prescaler selected; prescaler output otherwise.
       3:  The arrows indicate the points in time where sampling occurs.

1999 Microchip Technology Inc.                                                    DS30561B-page 41
PIC12C67X

7.3 Prescaler                                                           The PSA and PS<2:0> bits (OPTION<3:0>) determine
                                                                        the prescaler assignment and prescale ratio.
An 8-bit counter is available as a prescaler for the
Timer0 module, or as a postscaler for the Watchdog                      When assigned to the Timer0 module, all instructions
Timer, respectively (Figure 7-6). For simplicity, this                  writing to the TMR0 register (i.e., CLRF 1, MOVWF 1,
counter is being referred to as "prescaler" throughout                  BSF 1,x...., etc.) will clear the prescaler. When
this data sheet. Note that there is only one prescaler                  assigned to WDT, a CLRWDT instruction will clear the
available which is mutually exclusively shared between                  prescaler along with the Watchdog Timer. The pres-
the Timer0 module and the Watchdog Timer. Thus, a                       caler is not readable or writable.
prescaler assignment for the Timer0 module means
that there is no prescaler for the Watchdog Timer, and
vice-versa.

FIGURE 7-6: BLOCK DIAGRAM OF THE TIMER0/WDT PRESCALER                                    Data Bus
                                                                                                 8
      CLKOUT (= FOSC/4)
                                                                                       TMR0 reg
GP2/T0CKI/                      0M                      1               SYNC
  AN2/INT                            U                        M            2                             Set flag bit T0IF
                                      X                                                                     on Overflow
                                                        0            U  Cycles
                                1                                    X

                  T0SE            T0CS

                                                           PSA

  Watchdog              0                8-bit Prescaler                      PS<2:0>
     Timer                   M               8                          PSA
                             U
WDT Enable bit                           8 - to - 1MUX
                        1X

                           PSA

                                         0              1

                                            MUX

                                                             WDT
                                                           Time-out

Note: T0CS, T0SE, PSA, PS<2:0> are (OPTION<5:0>).

DS30561B-page 42                                                                        1999 Microchip Technology Inc.
                                                                                  PIC12C67X

7.3.1 SWITCHING PRESCALER ASSIGNMENT                               To change prescaler from the WDT to the Timer0 mod-
                                                                   ule, use the sequence shown in Example 7-2.
The prescaler assignment is fully under software con-
trol, (i.e., it can be changed "on-the-fly" during program         EXAMPLE 7-2: CHANGING PRESCALER
execution).                                                                                (WDTTIMER0)

Note:  To avoid an unintended device RESET, the                    CLRWDT                       ;Clear WDT and
       following instruction sequence (shown in                                                 ;prescaler
       Example 7-1) must be executed when                          BSF     STATUS, RP0 ;Bank 1
       changing the prescaler assignment from                      MOVLW   b'xxxx0xxx' ;Select TMR0, new
       Timer0 to the WDT. This sequence must                                                    ;prescale value and
       be followed even if the WDT is disabled.                    MOVWF   OPTION_REG ;clock source
                                                                   BCF     STATUS, RP0 ;Bank 0

EXAMPLE 7-1: CHANGING PRESCALER
                        (TIMER0WDT)

BCF STATUS, RP0    ;Bank 0
CLRF TMR0          ;Clear TMR0 & Prescaler
BSF STATUS, RP0    ;Bank 1
CLRWDT             ;Clears WDT
MOVLW b'xxxx1xxx'  ;Select new prescale
MOVWF OPTION_REG   ;value & WDT
BCF STATUS, RP0    ;Bank 0

TABLE 7-1: REGISTERS ASSOCIATED WITH TIMER0

Address Name Bit 7 Bit 6              Bit 5  Bit 4          Bit 3  Bit 2   Bit 1  Bit 0  Value on  Value on
                                                                                           POR     all other
                                                                                                    Resets

01h    TMR0 Timer0 module's register                                                     xxxx xxxx uuuu uuuu

0Bh/8Bh INTCON GIE PEIE               T0IE   INTE GPIE T0IF INTF GPIF 0000 000x 0000 000u

81h    OPTION GPPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111

85h    TRIS  --                   --  TRIS5 TRIS4 TRIS3 TRIS2 TRIS1 TRIS0 --11 1111 --11 1111

Legend: x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by Timer0.

1999 Microchip Technology Inc.                                                         DS30561B-page 43
PIC12C67X

NOTES:

DS30561B-page 44   1999 Microchip Technology Inc.
                                                                                  PIC12C67X

8.0 ANALOG-TO-DIGITAL                                      The ADCON0 Register, shown in Figure 8-1, controls
         CONVERTER (A/D) MODULE                            the operation of the A/D module. The ADCON1 Regis-
                                                           ter, shown in Figure 8-2, configures the functions of the
The Analog-To-Digital (A/D) converter module has four      port pins. The port pins can be configured as analog
analog inputs.                                             inputs (GP1 can also be a voltage reference) or as dig-
                                                           ital I/O.
The A/D allows conversion of an analog input signal to
a corresponding 8-bit digital number (refer to Applica-        Note 1: If the port pins are configured as analog
tion Note AN546 for use of A/D Converter). The output                      inputs (reset condition), reading the port
of the sample and hold is the input into the converter,                    (MOVF GPIO,W) results in reading '0's.
which generates the result via successive approxima-
tion. The analog reference voltage is software select-                2: Changing ADCON1 Register can cause
able to either the device's positive supply voltage (VDD)                  the GPIF and INTF flags to be set in the
or the voltage level on the GP1/AN1/VREF pin. The A/D                      INTCON Register. These interrupts
converter has a unique feature of being able to operate                    should be disabled prior to modifying
while the device is in SLEEP mode.                                         ADCON1.

The A/D module has three registers. These registers
are:

       A/D Result Register (ADRES)
       A/D Control Register 0 (ADCON0)
       A/D Control Register 1 (ADCON1)

REGISTER 8-1: ADCON0 REGISTER (ADDRESS 1Fh)

R/W-0 R/W-0 R/W-0 R/W-0          R/W-0 R/W-0 R/W-0        R/W-0                  R = Readable bit
ADCS1 ADCS0 reserved CHS1         CHS0 GO/DONE reserved    ADON                   W = Writable bit
bit7                                                                              U = Unimplemented bit,
                                                                bit0
                                                                                        read as `0'
                                                                                  - n = Value at POR reset

bit 7-6:  ADCS<1:0>: A/D Conversion Clock Select bits
          00 = FOSC/2
          01 = FOSC/8
          10 = FOSC/32
          11 = FRC (clock derived from an RC oscillation)

bit 5: Reserved

bit 4-3: CHS<1:0>: Analog Channel Select bits
            00 = channel 0, (GP0/AN0)
            01 = channel 1, (GP1/AN1)
            10 = channel 2, (GP2/AN2)
            11 = channel 3, (GP4/AN3)

bit 2: GO/DONE: A/D Conversion Status bit

          If ADON = 1
          1 = A/D conversion in progress (setting this bit starts the A/D conversion)
          0 = A/D conversion not in progress (this bit is automatically cleared by hardware when the A/D conversion
          is complete)

bit 1: Reserved

bit 0:    ADON: A/D on bit
          1 = A/D converter module is operating
          0 = A/D converter module is shut off and consumes no operating current

1999 Microchip Technology Inc.                                                  DS30561B-page 45
PIC12C67X

REGISTER 8-2: ADCON1 REGISTER (ADDRESS 9Fh)

U-0   U-0         U-0       U-0      U-0  R/W-0          R/W-0  R/W-0
                                                         PCFG1  PCFG0
--    --                --       --  --   PCFG2                             R = Readable bit
                                                                      bit0  W = Writable bit
bit7                                                                        U = Unimplemented bit,

                                                                                  read as `0'
                                                                            - n =Value at POR reset

bit 7-2: Unimplemented: Read as '0'
bit 1-0: PCFG<2:0>: A/D Port Configuration Control bits

         PCFG<2:0>          GP4      GP2  GP1            GP0    VREF
             000(1)
              001             A       A     A              A    VDD
              010
              011             A       A   VREF             A    GP1
              100            D        A     A              A    VDD
              101            D        A                    A    GP1
              110            D        D   VREF             A    VDD
              111            D        D     A              A    GP1
                             D        D                    A    VDD
      A = Analog input       D        D   VREF            D     VDD
      D = Digital I/O                       D
                                            D

      Note 1: Value on reset.
             2: Any instruction that reads a pin configured as an analog input will read a '0'.

DS30561B-page 46                                                 1999 Microchip Technology Inc.
                                                                          PIC12C67X

The ADRES Register contains the result of the A/D                         2. Configure A/D interrupt (if desired):
conversion. When the A/D conversion is complete, the                            Clear ADIF bit
result is loaded into the ADRES register, the GO/DONE                            Set ADIE bit
bit (ADCON0<2>) is cleared, and A/D interrupt flag bit                           Set GIE bit
ADIF (PIE1<6>) is set. The block diagrams of the A/D
module are shown in Figure 8-1.                                           3. Wait the required acquisition time.
                                                                          4. Start conversion:
After the A/D module has been configured as desired,
the selected channel must be acquired before the con-                            Set GO/DONE bit (ADCON0)
version is started. The analog input channels must                        5. Wait for A/D conversion to complete, by either:
have their corresponding TRIS bits selected as an
input. To determine sample time, see Section 8.1. After                         Polling for the GO/DONE bit to be cleared
this acquisition time has elapsed, the A/D conversion                           OR
can be started. The following steps should be followed                           Waiting for the A/D interrupt
for doing an A/D conversion:                                              6. Read A/D Result Register (ADRES), clear bit
                                                                                ADIF if required.
1. Configure the A/D module:                                              7. For the next conversion, go to step 1, step 2 or
       Configure analog pins / voltage reference /                             step 3 as required. The A/D conversion time per
         and digital I/O (ADCON1 and TRIS)                                      bit is defined as TAD. A minimum wait of 2TAD is
       Select A/D input channel (ADCON0)                                       required before next acquisition starts.
       Select A/D conversion clock (ADCON0)
       Turn on A/D module (ADCON0)                                                      CHS<1:0>

FIGURE 8-1: A/D BLOCK DIAGRAM

    A/D                                              VIN                  11
Converter                                      (Input voltage)                                         GP4/AN3

                                                                     VDD  10
                                     VREF                                                             GP2/AN2
                                  (Reference
                                   voltage)                               01
                                                                                                      GP1/AN1/VREF
                                                     PCFG<2:0>
                                                                          00
                                                                                                      GP0/AN0

1999 Microchip Technology Inc.                                          DS30561B-page 47
PIC12C67X

8.1 A/D Sampling Requirements                                            Note 1: The reference voltage (VREF) has no
                                                                                     effect on the equation, since it cancels
For the A/D converter to meet its specified accuracy,                                itself out.
the charge holding capacitor (CHOLD) must be allowed
to fully charge to the input channel voltage level. The                         2: The charge holding capacitor (CHOLD) is
analog input model is shown in Figure 8-2. The source                                not discharged after each conversion.
impedance (RS) and the internal sampling switch (RSS)
impedance directly affect the time required to charge                           3: The maximum recommended impedance
the capacitor CHOLD. The sampling switch (RSS)                                       for analog sources is 10 k. This is
impedance varies over the device voltage (VDD), see                                  required to meet the pin leakage specifi-
Figure 8-2. The maximum recommended imped-                                           cation.
ance for analog sources is 10 k. After the analog
input channel is selected (changed), this acquisition                           4: After a conversion has completed, a
must be done before the conversion can be started.                                   2.0 TAD delay must complete before
                                                                                     acquisition can begin again. During this
To calculate the minimum acquisition time, Equation 8-1                              time, the holding capacitor is not con-
may be used. This equation assumes that 1/2 LSb error                                nected to the selected A/D input channel.
is used (512 steps for the A/D). The 1/2 LSb error is the
maximum error allowed for the A/D to meet its specified              EXAMPLE 8-1: CALCULATING THE
resolution.                                                                                  MINIMUM REQUIRED
                                                                                             SAMPLE TIME
EQUATION 8-1: A/D MINIMUM CHARGING
                           TIME                                      TACQ = Internal Amplifier Settling Time +

VHOLD = (VREF - (VREF/512)) (1 - e(-Tc/CHOLD(RIC + RSS + RS)))                Holding Capacitor Charging Time +

or                                                                              Temperature Coefficient

Tc = -(51.2 pF)(1 k + RSS + RS) ln(1/511)                            TACQ = 5 s + Tc + [(Temp - 25C)(0.05 s/C)]
                                                                     TC = -CHOLD (RIC + RSS + RS) ln(1/512)
Example 8-1 shows the calculation of the minimum
required acquisition time TACQ. This calculation is                             -51.2 pF (1 k + 7 k + 10 k) ln(0.0020)
based on the following system assumptions.                                      -51.2 pF (18 k) ln(0.0020)
                                                                                -0.921 s (-6.2146)
Rs = 10 k                                                                       5.724 s
                                                                     TACQ = 5 s + 5.724 s + [(50C - 25C)(0.05 s/C)]
1/2 LSb error                                                                   10.724 s + 1.25 s
                                                                                11.974 s
VDD = 5V  Rss = 7 k

Temp (system max.) = 50C

VHOLD = 0 @ t = 0

FIGURE 8-2: ANALOG INPUT MODEL

                      Rs RAx          VDD                                       Sampling
                                            VT = 0.6V                           Switch

                                                                      RIC  1k   SS Rss

                  VA            CPIN                                 I leakage              CHOLD
                                                                      500 nA               = DAC capacitance
                                5 pF  VT = 0.6V                                             = 51.2 pF

                                                                                          VSS

                  Legend: CPIN  = input capacitance                                   6V
                                                                                      5V
                      VT        = threshold voltage                             VDD 4V
                                                                                      3V
                      I leakage = leakage current at the pin due to                   2V
                                      various junctions
                                                                                                   5 6 7 8 9 10 11
                      RIC       = interconnect resistance                                          Sampling Switch
                      SS        = sampling switch
                      CHOLD     = sample/hold capacitance (from DAC)                                      ( k )

DS30561B-page 48                                                                           1999 Microchip Technology Inc.
                                                                        PIC12C67X

8.2 Selecting the A/D Conversion Clock                   8.3 Configuring Analog Port Pins

The A/D conversion time per bit is defined as TAD. The   The ADCON1 and TRIS Registers control the opera-
A/D conversion requires 9.5 TAD per 8-bit conversion.    tion of the A/D port pins. The port pins that are desired
The source of the A/D conversion clock is software       as analog inputs must have their corresponding TRIS
selected. The four possible options for TAD are:         bits set (input). If the TRIS bit is cleared (output), the
                                                         digital output level (VOH or VOL) will be converted.
       2TOSC
       8TOSC                                            The A/D operation is independent of the state of the
       32TOSC                                           CHS<2:0> bits and the TRIS bits.
       Internal ADC RC oscillator
                                                             Note 1: When reading the port register, all pins
For correct A/D conversions, the A/D conversion clock                    configured as analog input channel will
(TAD) must be selected to ensure a minimum TAD time                      read as cleared (a low level). Pins config-
of 1.6 s. If the minimum TAD time of 1.6 s can not be                  ured as digital inputs, will convert an ana-
obtained, TAD should be 8 s for preferred operation.                    log input. Analog levels on a digitally
                                                                         configured input will not affect the conver-
Table 8-1 shows the resultant TAD times derived from                     sion accuracy.
the device operating frequencies and the A/D clock
source selected.                                                    2: Analog levels on any pin that is defined as
                                                                         a digital input (including the AN<3:0>
                                                                         pins) may cause the input buffer to con-
                                                                         sume current that is out of the devices
                                                                         specification.

TABLE 8-1: TAD vs. DEVICE OPERATING FREQUENCIES

            AD Clock Source (TAD)                                       Device Frequency

Operation                         ADCS<1:0>              4 MHz          1.25 MHz                               333.33 kHz
                                                                                                                   6 s
2TOSC                              00                    500 ns(2)      1.6 s
8TOSC                                                                                                            24 s(3)
                                   01                    2.0 s         6.4 s                                   96 s(3)
                                                                                                                2 - 6 s(1)
32TOSC                             10                    8.0 s         25.6 s(3)

Internal ADC RC Oscillator(5)      11                    2 - 6 s(1,4)  2 - 6 s(1,4)

Note 1:     The RC source has a typical TAD time of 4 s.
        2:  These values violate the minimum required TAD time.
        3:  For faster conversion times, the selection of another clock source is recommended.
        4:  While in RC mode, with device frequency above 1 MHz, conversion accuracy is out of specification.
        5:  For extended voltage devices (LC), please refer to Electrical Specifications section.

1999 Microchip Technology Inc.                                                                               DS30561B-page 49
PIC12C67X

8.4 A/D Conversions                                         Clearing the GO/DONE bit during a conversion will
                                                            abort the current conversion. The ADRES register will
Example 8-2 shows how to perform an A/D conversion.         NOT be updated with the partially completed A/D con-
The GPIO pins are configured as analog inputs. The          version sample. That is, the ADRES register will con-
analog reference (VREF) is the device VDD. The A/D          tinue to contain the value of the last completed
interrupt is enabled and the A/D conversion clock is        conversion (or the last value written to the ADRES reg-
FRC. The conversion is performed on the GP0 channel.        ister). After the A/D conversion is aborted, a 2TAD wait
                                                            is required before the next acquisition is started. After
   Note: The GO/DONE bit should NOT be set in               this 2TAD wait, an acquisition is automatically started on
               the same instruction that turns on the A/D.  the selected channel.

EXAMPLE 8-2: DOING AN A/D CONVERSION

   BSF  STATUS, RP0   ; Select Page 1

   CLRF ADCON1        ; Configure A/D inputs

   BSF  PIE1, ADIE    ; Enable A/D interrupts

   BCF  STATUS, RP0   ; Select Page 0

   MOVLW 0xC1         ; RC Clock, A/D is on, Channel 0 is selected

   MOVWF ADCON0       ;

   BCF  PIR1, ADIF    ; Clear A/D interrupt flag bit

   BSF  INTCON, PEIE  ; Enable peripheral interrupts

   BSF  INTCON, GIE   ; Enable all interrupts

;

; Ensure that the required sampling time for the selected input channel has elapsed.

; Then the conversion may be started.

;

   BSF  ADCON0, GO    ; Start A/D Conversion

   :                  ; The ADIF bit will be set and the GO/DONE bit

   :                  ; is cleared upon completion of the A/D Conversion.

DS30561B-page 50                                             1999 Microchip Technology Inc.
                                                                                   PIC12C67X

8.5 A/D Operation During Sleep                                8.7 Effects of a Reset

The A/D module can operate during SLEEP mode. This            A device reset forces all registers to their reset state.
requires that the A/D clock source be set to RC               This forces the A/D module to be turned off, and any
(ADCS<1:0> = 11). When the RC clock source is                 conversion is aborted. The value that is in the ADRES
selected, the A/D module waits one instruction cycle          register is not modified for a Reset. The ADRES regis-
before starting the conversion. This allows the SLEEP         ter will contain unknown data after a Power-on Reset.
instruction to be executed, which eliminates all digital
switching noise from the conversion. When the conver-         8.8 Connection Considerations
sion is completed, the GO/DONE bit will be cleared,
and the result loaded into the ADRES Register. If the         If the input voltage exceeds the rail values (VSS or VDD)
A/D interrupt is enabled, the device will wake-up from        by greater than 0.2V, then the accuracy of the conver-
SLEEP. If the A/D interrupt is not enabled, the A/D mod-      sion is out of specification.
ule will then be turned off, although the ADON bit will
remain set.                                                   Note:                For the PIC12C67X, care must be taken
                                                                                   when using the GP4 pin in A/D conversions
When the A/D clock source is another clock option (not                             due to its proximity to the OSC1 pin.
RC), a SLEEP instruction will cause the present conver-
sion to be aborted and the A/D module to be turned off,       An external RC filter is sometimes added for anti-
though the ADON bit will remain set.                          aliasing of the input signal. The R component should be
                                                              selected to ensure that the total source impedance is
Turning off the A/D places the A/D module in its lowest       kept under the 10 k recommended specification. Any
current consumption state.                                    external components connected (via hi-impedance) to
                                                              an analog input pin (capacitor, zener diode, etc.) should
Note:  For the A/D module to operate in SLEEP,                have very little leakage current at the pin.
       the A/D clock source must be set to RC
       (ADCS<1:0> = 11). To perform an A/D                    8.9 Transfer Function
       conversion in SLEEP, the GO/DONE bit
       must be set, followed by the SLEEP                     The ideal transfer function of the A/D converter is as fol-
       instruction.                                           lows: the first transition occurs when the analog input
                                                              voltage (VAIN) is 1 LSb (or Analog VREF / 256)
8.6 A/D Accuracy/Error                                        (Figure 8-3).

The overall accuracy of the A/D is less than 1 LSb for      FIGURE 8-3: A/D TRANSFER FUNCTION
VDD = 5V 10% and the analog VREF = VDD. This over-
all accuracy includes offset error, full scale error, and     Digital code output  FFh
integral error. The A/D converter is monotonic over the                            FEh
full VDD range. The resolution and accuracy may be                                                                            255 LSb
less when either the analog reference (VDD) is less than                           04h                                            256 LSb
5.0V or when the analog reference (VREF) is less than                              03h                                               (full scale)
VDD.                                                                               02h
                                                                                   01h
The maximum pin leakage current is specified in the                                00h
Device Data Sheet electrical specification, parameter
#D060.                                                                                                  Analog input voltage
                                                                                   0.5 LSb
In systems where the device frequency is low, use of                                  1 LSb
the A/D RC clock is preferred. At moderate to high fre-                                   2 LSb
quencies, TAD should be derived from the device oscil-                                         3 LSb
lator. TAD must not violate the minimum and should be                                               4 LSb
8 s for preferred operation. This is because TAD,
when derived from TOSC, is kept away from on-chip
phase clock transitions. This reduces, to a large extent,
the effects of digital switching noise. This is not possible
with the RC derived clock. The loss of accuracy due to
digital switching noise can be significant if many I/O
pins are active.

In systems where the device will enter SLEEP mode
after the start of the A/D conversion, the RC clock
source selection is required. In this mode, the digital
noise from the modules in SLEEP are stopped. This
method gives high accuracy.

1999 Microchip Technology Inc.                                                                           DS30561B-page 51
PIC12C67X

FIGURE 8-4: FLOWCHART OF A/D OPERATION

                               ADON = 0

                                             Yes
                             ADON = 0?

                                       No
                               Acquire
                        Selected Channel

                         Yes            Start of A/D          SLEEP Yes    Finish Conversion
          GO = 0?                  Conversion Delayed      Instruction?           GO = 0
                                   1 Instruction Cycle                          ADIF = 1
                  No                                                 No
                                                                                 Wake-up Yes
                         Yes                            Finish Conversion     From Sleep?
         A/D Clock                                             GO = 0
                                                             ADIF = 1                    No
           = RC?                                                              Stay in Sleep
                  No                                        Wait 2 TAD      Power-down A/D

                              Yes  Abort Conversion                                           Wait 2 TAD
               Device in                 GO = 0
               SLEEP?                   ADIF = 0

                        No               SLEEP
                                   Power-down A/D
         Finish Conversion
                GO = 0
              ADIF = 1

               Wait 2 TAD

TABLE 8-2: SUMMARY OF A/D REGISTERS

Address Name               Bit 7 Bit 6 Bit 5 Bit 4 Bit 3                   Bit 2  Bit 1       Bit 0  Value on     Value on
                                                                                                     Power-on     all other
                                                                                                                   Resets
                                                                                                       Reset

0Bh/8Bh  INTCON(1) GIE             PEIE  T0IE           INTE  GPIE         T0IF   INTF        GPIF 0000 000x      0000 000u
0Ch                                ADIF   --             --     --          --     --           -- -0-- ----      -0-- ----
8Ch      PIR1              --                                   --                                                -0-- ----
1Eh                                                                                                               uuuu uuuu
1Fh      PIE1              --      ADIE  --             --    CHS0         --     --          -- -0-- ----        0000 0000
9Fh                                                             --                                                ---- -000
05h      ADRES A/D Result Register                                                                   xxxx xxxx    11uu uuuu
                                                              GP3
         ADCON0 ADCS1 ADCS0 reserved CHS1                                  GO/DONE reserved ADON 0000 0000

         ADCON1            --      --    --             --                 PCFG2 PCFG1 PCFG0 ---- -000

         GPIO              SCL(2) SDA(2) GP5 GP4                           GP2    GP1         GP0 11xx xxxx

85h      TRIS              --      --    TRIS5 TRIS4 TRIS3 TRIS2                  TRIS1 TRIS0 --11 1111 --11 1111

Legend: x = unknown, u = unchanged, - = unimplemented read as '0'. Shaded cells are not used for A/D conversion.
Note 1: These registers can be addressed from either bank.

        2: The SCL (GP7) and SDA (GP6) bits are unimplemented on the PIC12C671/672 and read as '0'.

DS30561B-page 52                                                                               1999 Microchip Technology Inc.
                                                           PIC12C67X

9.0 SPECIAL FEATURES OF THE                                the chip in reset until the crystal oscillator is stable. The
         CPU                                               other is the Power-up Timer (PWRT), which provides a
                                                           fixed delay of 72 ms (nominal) on power-up only,
What sets a microcontroller apart from other proces-       designed to keep the part in reset while the power sup-
sors are special circuits to deal with the needs of real-  ply stabilizes. With these two timers on-chip, most
time applications. The PIC12C67X family has a host of      applications need no external reset circuitry.
such features intended to maximize system reliability,
minimize cost through elimination of external compo-       SLEEP mode is designed to offer a very low current
nents, provide power saving operating modes and offer      power-down mode. The user can wake-up from SLEEP
code protection. These are:                                through external reset, Watchdog Timer Wake-up, or
                                                           through an interrupt. Several oscillator options are also
Oscillator selection                                     made available to allow the part to fit the application.
Reset                                                    The INTRC/EXTRC oscillator option saves system
                                                           cost, while the LP crystal option saves power. A set of
   - Power-on Reset (POR)                                  configuration bits are used to select various options.
   - Power-up Timer (PWRT)
   - Oscillator Start-up Timer (OST)                       9.1 Configuration Bits
Interrupts
Watchdog Timer (WDT)                                     The configuration bits can be programmed (read as '0')
SLEEP                                                    or left unprogrammed (read as '1') to select various
Code protection                                          device configurations. These bits are mapped in pro-
ID locations                                             gram memory location 2007h.
In-circuit serial programming
                                                           The user will note that address 2007h is beyond the
The PIC12C67X has a Watchdog Timer, which can be           user program memory space. In fact, it belongs to the
shut off only through configuration bits. It runs off its  special test/configuration memory space (2000h-
own RC oscillator for added reliability. There are two     3FFFh), which can be accessed only during
timers that offer necessary delays on power-up. One is     programming.
the Oscillator Start-up Timer (OST), intended to keep

REGISTER 9-1: CONFIGURATION WORD

CP1 CP0 CP1 CP0 CP1 CP0 MCLRE CP1 CP0 PWRTE WDTE FOSC2 FOSC1 FOSC0 Register:                                   CONFIG
                                                                                                                  2007h
bit13                                                      bit0 Address

bit 13-8, CP<1:0>: Code Protection bit pairs(1)
    6-5: 11 = Code protection off

          10 = Locations 400h through 7FEh code protected (do not use for PIC12C671 and PIC12CE673)
          01 = Locations 200h through 7FEh code protected

          00 = All memory is code protected

bit 7:    MCLRE: Master Clear Reset Enable bit
          1 = Master Clear Enabled
          0 = Master Clear Disabled

bit 4:    PWRTE: Power-up Timer Enable bit
          1 = PWRT disabled
          0 = PWRT enabled

bit 3:    WDTE: Watchdog Timer Enable bit
          1 = WDT enabled
          0 = WDT disabled

bit 2-0:  FOSC<2:0>: Oscillator Selection bits
          111 = EXTRC, Clockout on OSC2
          110 = EXTRC, OSC2 is I/O
          101 = INTRC, Clockout on OSC2
          100 = INTRC, OSC2 is I/O
          011 = Invalid Selection
          010 = HS Oscillator
          001 = XT Oscillator
          000 = LP Oscillator

Note 1: All of the CP<1:0> pairs have to be given the same value to enable the code protection scheme listed.

1999 Microchip Technology Inc.                                                                     DS30561B-page 53
PIC12C67X

9.2 Oscillator Configurations                               TABLE 9-1:  CAPACITOR SELECTION
                                                                        FOR CERAMIC RESONATORS
9.2.1 OSCILLATOR TYPES                                                  - PIC12C67X

The PIC12C67X can be operated in seven different            Osc Resonator Cap. Range Cap. Range
oscillator modes. The user can program three
configuration bits (FOSC<2:0>) to select one of these       Type        Freq   C1        C2
seven modes:
                                                            XT    455 kHz 22-100 pF 22-100 pF

                                                                  2.0 MHz 15-68 pF       15-68 pF

LP:       Low Power Crystal                                     4.0 MHz 15-68 pF       15-68 pF
HS:       High Speed Crystal/Resonator
                                                            HS    4.0 MHz      15-68 pF  15-68 pF
                                                                                         10-68 pF
XT:       Crystal/Resonator                                     8.0 MHz 10-68 pF       10-22 pF

INTRC*: Internal 4 MHz Oscillator                               10.0 MHz 10-22 pF

EXTRC*: External Resistor/Capacitor                       These values are for design guidance only. Since
                                                            each resonator has its own characteristics, the user
*Can be configured to support CLKOUT                        should consult the resonator manufacturer for
                                                            appropriate values of external components.

9.2.2 CRYSTAL OSCILLATOR / CERAMIC                          TABLE 9-2:  CAPACITOR SELECTION
            RESONATORS                                                  FOR CRYSTAL OSCILLATOR
                                                                        - PIC12C67X
In XT, HS or LP modes, a crystal or ceramic resonator
is connected to the GP5/OSC1/CLKIN and GP4/OSC2             Osc Resonator Cap. Range Cap. Range
pins to establish oscillation (Figure 9-1). The
PIC12C67X oscillator design requires the use of a           Type        Freq   C1        C2
parallel cut crystal. Use of a series cut crystal may give
a frequency out of the crystal manufacturers                LP    32 kHz(1)    15 pF       15 pF
specifications. When in XT, HS or LP modes, the                                          30-47 pF
device can have an external clock source drive the                100 kHz 15-30 pF       15-82 pF
GP5/OSC1/CLKIN pin (Figure 9-2).
                                                                  200 kHz 15-30 pF

                                                            XT    100 kHz 15-30 pF 200-300 pF

                                                                  200 kHz 15-30 pF 100-200 pF

FIGURE 9-1:        CRYSTAL OPERATION                              455 kHz 15-30 pF 15-100 pF
                   (OR CERAMIC RESONATOR)
            C1(1)  (XT, HS OR LP OSC                                    1 MHz  15-30 pF  15-30 pF
                   CONFIGURATION)
                                                                        2 MHz  15-30 pF  15-30 pF

                                                                        4 MHz  15-47 pF  15-47 pF

                                                            HS          4 MHz  15-30 pF  15-30 pF

                       OSC1           PIC12C67X                         8 MHz  15-30 pF  15-30 pF

                                                                  10 MHz       15-30 pF  15-30 pF

                 XTAL        RF(3)     SLEEP                Note 1: For VDD > 4.5V, C1 = C2  30 pF is
                                       To internal                       recommended.
                RS(2) OSC2
       C2(1)                               logic            These values are for design guidance only. Rs may
                                                            be required in HS mode, as well as XT mode, to
Note 1:     See Capacitor Selection tables for              avoid overdriving crystals with low drive level specifi-
        2:  recommended values of C1 and C2.                cation. Since each crystal has its own characteris-
        3:  A series resistor (RS) may be required for AT   tics, the user should consult the crystal manufacturer
            strip cut crystals.                             for appropriate values of external components.
            RF varies with the oscillator mode selected
            (approx. value = 10 M).

FIGURE 9-2:        EXTERNAL CLOCK INPUT
                   OPERATION (XT, HS OR LP
                   OSC CONFIGURATION)

Clock from                   OSC1
ext. system                            PIC12C67X

                 Open        OSC2

DS30561B-page 54                                                                1999 Microchip Technology Inc.
                                                                              PIC12C67X

9.2.3 EXTERNAL CRYSTAL OSCILLATOR                            9.2.4 EXTERNAL RC OSCILLATOR
            CIRCUIT
                                                             For timing insensitive applications, the RC device
Either a pre-packaged oscillator or a simple oscillator      option offers additional cost savings. The RC oscillator
circuit with TTL gates can be used as an external            frequency is a function of the supply voltage, the
crystal oscillator circuit. Pre-packaged oscillators         resistor (REXT) and capacitor (CEXT) values, and the
provide a wide operating range and better stability. A       operating temperature. In addition to this, the oscillator
well-designed crystal oscillator will provide good           frequency will vary from unit to unit due to normal
performance with TTL gates. Two types of crystal             process parameter variation. Furthermore, the
oscillator circuits can be used; one with parallel           difference in lead frame capacitance between package
resonance or one with series resonance.                      types will also affect the oscillation frequency,
                                                             especially for low CEXT values. The user also needs to
Figure 9-3 shows implementation of a parallel                take into account variation due to tolerance of external
resonant oscillator circuit. The circuit is designed to      R and C components used.
use the fundamental frequency of the crystal. The
74AS04 inverter performs the 180-degree phase shift          Figure 9-5 shows how the R/C combination is
that a parallel oscillator requires. The 4.7 k resistor      connected to the PIC12C67X. For REXT values below
provides the negative feedback for stability. The 10 k       2.2 k, the oscillator operation may become unstable
potentiometers bias the 74AS04 in the linear region.         or stop completely. For very high REXT values
This circuit could be used for external oscillator           (i.e., 1 M), the oscillator becomes sensitive to noise,
designs.                                                     humidity and leakage. Thus, we recommend keeping
                                                             REXT between 3 k and 100 k.
FIGURE 9-3:  EXTERNAL PARALLEL
             RESONANT CRYSTAL                                Although the oscillator will operate with no external
             OSCILLATOR CIRCUIT                              capacitor (CEXT = 0 pF), we recommend using values
                                                             above 20 pF for noise and stability reasons. With no or
+5V                                     To Other             small external capacitance, the oscillation frequency
                                        Devices              can vary dramatically due to changes in external
    10k                                                      capacitances, such as PCB trace capacitance or
           4.7k      74AS04                       PIC12C67X  package lead frame capacitance.

         74AS04                                   CLKIN      The variation is larger for larger R (since leakage
                                                             current variation will affect RC frequency more for
                                   10k                       large R) and for smaller C (since variation of input
                 XTAL                                        capacitance will affect RC frequency more).
10k
                                                             FIGURE 9-5: EXTERNAL RC OSCILLATOR
           20 pF 20 pF                                                            MODE

                                                                      VDD

                                                             REXT                   Internal
                                                                                    clock
Figure 9-4 shows a series resonant oscillator circuit.                        OSC1
This circuit is also designed to use the fundamental
frequency of the crystal. The inverter performs a 180-       CEXT              N
degree phase shift in a series resonant oscillator           VSS                                  PIC12C67X
circuit. The 330  resistors provide the negative
feedback to bias the inverters in their linear region.                FOSC/4  OSC2/CLKOUT

FIGURE 9-4:  EXTERNAL SERIES
             RESONANT CRYSTAL
        330  OSCILLATOR CIRCUIT

                                        To Other

                330                     Devices

74AS04          74AS04 74AS04                     PIC12C67X
                                                  CLKIN

        0.1 F

        XTAL

1999 Microchip Technology Inc.                                                    DS30561B-page 55
PIC12C67X

9.2.5 INTERNAL 4 MHz RC OSCILLATOR                           9.3 Reset

The internal RC oscillator provides a fixed 4 MHz (nom-      The PIC12C67X differentiates between various kinds
inal) system clock at VDD = 5V and 25C. See                 of reset:
Section 13.0 for information on variation over voltage
and temperature.                                              Power-on Reset (POR)
                                                             MCLR Reset during normal operation
In addition, a calibration instruction is programmed into    MCLR Reset during SLEEP
the last address of the program memory which contains         WDT Reset (normal operation)
the calibration value for the internal RC oscillator. This
value is programmed as a RETLW XX instruction where          Some registers are not affected in any reset condition;
XX is the calibration value. In order to retrieve the cali-  their status is unknown on POR and unchanged in any
bration value, issue a CALL YY instruction where YY is       other reset. Most other registers are reset to a "reset
the last location in program memory (03FFh for the           state" on Power-on Reset (POR), MCLR Reset, WDT
PIC12C671 and the PIC12CE673, 07FFh for the                  Reset, and MCLR Reset during SLEEP. They are not
PIC12C672 and the PIC12CE674). Control will be               affected by a WDT Wake-up, which is viewed as the
returned to the user's program with the calibration          resumption of normal operation. The TO and PD bits
value loaded into the W register. The program should         are set or cleared differently in different reset situations,
then perform a MOVWF OSCCAL instruction to load the          as indicated in Table 9-5. These bits are used in
value into the internal RC oscillator trim register.         software to determine the nature of the reset. See
                                                             Table 9-6 for a full description of reset states of all
OSCCAL, when written to with the calibration value, will     registers.
"trim" the internal oscillator to remove process variation
from the oscillator frequency. Bits <7:4>, CAL<3:0> are      A simplified block diagram of the on-chip reset circuit is
used for fine calibration, while bit 3, CALFST, and bit 2,   shown in Figure 9-6.
CALSLW, are used for more coarse adjustment. Adjust-
ing CAL<3:0> from 0000 to 1111 yields a higher clock         The PIC12C67X has a MCLR noise filter in the MCLR
speed. Set CALFST = 1 for greater increase in fre-           reset path. The filter will detect and ignore small pulses.
quency or set CALSLW = 1 for greater decrease in fre-
quency. Note that bits 1 and 0 of OSCCAL are                 It should be noted that a WDT Reset does not drive
unimplemented and should be written as 0 when mod-           MCLR pin low.
ifying OSCCAL for compatibility with future devices.
                                                             When MCLR is asserted, the state of the OSC1/CLKIN
                                                             and CLKOUT/OSC2 pins are as follows:

Note:  Please note that erasing the device will              TABLE 9-3: CLKIN/CLKOUT PIN STATES
       also erase the pre-programmed internal                                     WHEN MCLR ASSERTED
       calibration value for the internal oscillator.
       The calibration value must be saved prior             Oscillator Mode OSC1/CLKIN Pin OSC2/CLKout Pin
       to erasing the part.
                                                             EXTRC, CLKOUT   OSC1 pin is         OSC2 pin is driven
9.2.6 CLKOUT                                                 on OSC2         tristated and       low
                                                                             driven by external
The PIC12C67X can be configured to provide a clock           EXTRC, OSC2 is  circuit             OSC2 pin is
out signal (CLKOUT) on pin 3 when the configuration          I/O                                 tristate input
word address (2007h) is programmed with FOSC2,                               OSC1 pin is
FOSC1, and FOSC0, equal to 101 for INTRC or 111 for          INTRC, CLKOUT   tristated and       OSC2 pin is driven
EXTRC. The oscillator frequency, divided by 4, can be        on OSC2         driven by external  low
used for test purposes or to synchronize other logic.        INTRC, OSC2 is  circuit             OSC2 pin is
                                                             I/O                                 tristate input
                                                                             OSC1 pin is
                                                                             tristate input

                                                                             OSC1 pin is
                                                                             tristate input

DS30561B-page 56                                                             1999 Microchip Technology Inc.
                                                                                PIC12C67X

FIGURE 9-6: SIMPLIFIED BLOCK DIAGRAM OF ON-CHIP RESET CIRCUIT

       Weak
       Pull-up

GP3/MCLR/VPP Pin

                                               MCLRE

                                                                                 INTERNAL MCLR

                      WDT SLEEP
                    Module

                                  WDT Time-out

                    VDD rise
                      detect Power-on Reset
VDD

                                                                                                                                        S

       OST/PWRT

                   OST                                                                                                                          Chip_Reset
                                                                                                                                           Q
                   10-bit Ripple-counter                                        R

OSC1/              PWRT
                        10-bit Ripple-counter
CLKIN
  Pin

       On-chip(1)
        RC OSC

                                               Enable PWRT                      See Table 9-4 for time-out situations.
                                               Enable OST

Note 1: This is a separate oscillator from the RC oscillator of the CLKIN pin.

1999 Microchip Technology Inc.                                                                                                           DS30561B-page 57
PIC12C67X

9.4 Power-on Reset (POR), Power-up                         9.4.3 OSCILLATOR START-UP TIMER (OST)
          Timer (PWRT) and Oscillator Start-up
          Timer (OST)                                      The Oscillator Start-up Timer (OST) provides 1024
                                                           oscillator cycle (from OSC1 input) delay after the
9.4.1 POWER-ON RESET (POR)                                 PWRT delay is over. This ensures that the crystal oscil-
                                                           lator or resonator has started and stabilized.
The on-chip POR circuit holds the chip in reset until
VDD has reached a high enough level for proper opera-      The OST time-out is invoked only for XT, LP and HS
tion. To take advantage of the POR, just tie the MCLR      modes and only on Power-on Reset or wake-up from
pin through a resistor to VDD. This will eliminate exter-  SLEEP.
nal RC components usually needed to create a Power-
on Reset. A maximum rise time for VDD is specified.        9.4.4 TIME-OUT SEQUENCE
See Electrical Specifications for details.
                                                           On power-up, the Time-out Sequence is as follows:
When the device starts normal operation (exits the         first, PWRT time-out is invoked after the POR time
reset condition), device operating parameters (voltage,    delay has expired; then, OST is activated. The total
frequency, temperature, ...) must be met to ensure         time-out will vary, based on oscillator configuration and
operation. If these conditions are not met, the device     the status of the PWRT. For example, in RC mode with
must be held in reset until the operating conditions are   the PWRT disabled, there will be no time-out at all.
met.                                                       Figure 9-7, Figure 9-8, and Figure 9-9 depict time-out
                                                           sequences on power-up.
For additional information, refer to Application Note
AN607, "Power-up Trouble Shooting."                        Since the time-outs occur from the POR pulse, if MCLR
                                                           is kept low long enough, the time-outs will expire. Then
9.4.2 POWER-UP TIMER (PWRT)                                bringing MCLR high will begin execution immediately
                                                           (Figure 9-9). This is useful for testing purposes or to
The Power-up Timer provides a fixed 72 ms nominal          synchronize more than one PIC12C67X device operat-
time-out on power-up only, from the POR. The Power-        ing in parallel.
up Timer operates on an internal RC oscillator. The
chip is kept in reset as long as the PWRT is active. The   9.4.5 POWER CONTROL (PCON)/STATUS
PWRT's time delay allows VDD to rise to an acceptable                  REGISTER
level. A configuration bit is provided to enable/disable
the PWRT.                                                  The Power Control/Status Register, PCON (address
                                                           8Eh), has one bit. See Register 4-6 for register.
The power-up time delay will vary from chip to chip due
to VDD, temperature and process variation. See             Bit1 is POR (Power-on Reset). It is cleared on a Power-
Table 11-4.                                                on Reset and is unaffected otherwise. The user sets
                                                           this bit following a Power-on Reset. On subsequent
                                                           resets, if POR is `0', it will indicate that a Power-on
                                                           Reset must have occurred.

TABLE 9-4: TIME-OUT IN VARIOUS SITUATIONS

Oscillator Configuration             Power-up              Wake-up from SLEEP

      XT, HS, LP              PWRTE = 0        PWRTE = 1           1024TOSC
   INTRC, EXTRC           72 ms + 1024TOSC      1024TOSC                --

                                  72 ms              --

TABLE 9-5: STATUS/PCON BITS AND THEIR SIGNIFICANCE

POR TO PD

0  1              1 Power-on Reset

0  0              x Illegal, TO is set on POR

0  x              0 Illegal, PD is set on POR

1  0              u WDT Reset

1  0              0 WDT Wake-up

1  u              u MCLR Reset during normal operation

1  1              0 MCLR Reset during SLEEP or interrupt wake-up from SLEEP

Legend: u = unchanged, x = unknown.

DS30561B-page 58                                           1999 Microchip Technology Inc.
                                                               PIC12C67X

TABLE 9-6:       RESET CONDITION FOR SPECIAL REGISTERS

                 Condition          Program                    STATUS     PCON
                                    Counter                    Register  Register

Power-on Reset                      000h                0001 1xxx        ---- --0-

MCLR Reset during normal operation  000h                000u uuuu        ---- --u-

MCLR Reset during SLEEP             000h                0001 0uuu        ---- --u-

WDT Reset during normal operation   000h                0000 uuuu        ---- --u-

WDT Wake-up from SLEEP               PC + 1             uuu0 0uuu        ---- --u-
Interrupt wake-up from SLEEP        PC + 1(1)           uuu1 0uuu        ---- --u-

Legend: u = unchanged, x = unknown, - = unimplemented bit read as '0'.
Note 1: When the wake-up is due to an interrupt and the GIE bit is set, the PC is loaded with the interrupt vector (0004h).

TABLE 9-7:       INITIALIZATION CON\DITIONS FOR ALL REGISTERS
       Register
                 Power-on Reset     MCLR Resets                             Wake-up via
                                     WDT Reset                           WDT or Interrupt

W                        xxxx xxxx  uuuu uuuu                            uuuu uuuu

INDF                     0000 0000  0000 0000                            0000 0000

TMR0                     xxxx xxxx   uuuu uuuu                            uuuu uuuu
PCL                      0000 0000   0000 0000                              PC + 1(2)
STATUS                   0001 1xxx  000q quuu(3)
                                                                         uuuq quuu(3)

FSR                      xxxx xxxx  uuuu uuuu                            uuuu uuuu

GPIO                     11xx xxxx  11uu uuuu                            11uu uuuu
PIC12CE67X

GPIO                     --xx xxxx  --uu uuuu                            --uu uuuu
PIC12C67X

PCLATH                   ---0 0000  ---0 0000                             ---u uuuu
INTCON                   0000 000x  0000 000u                            uuuu uqqq(1)
PIR1                     -0-- ----  -0-- ----                            -q-- ----(4)
ADCON0                   0000 0000  0000 0000                            uuuu uquu(5)

OPTION                   1111 1111  1111 1111                            uuuu uuuu

TRIS                     --11 1111  --11 1111                            --uu uuuu

PIE1                     -0-- ----  -0-- ----                            -u-- ----

PCON                     ---- --0-  ---- --u-                            ---- --u-

OSCCAL                   0111 00--  uuuu uu--                            uuuu uu--

ADCON1                   ---- -000  ---- -000                            ---- -uuu

Legend:     u = unchanged, x = unknown, - = unimplemented bit, read as '0', q = value depends on condition.
Note 1:     One or more bits in INTCON and PIR1 will be affected (to cause wake-up).
            When the wake-up is due to an interrupt and the GIE bit is set, the PC is loaded with the interrupt vector (0004h).
        2:  See Table 9-5 for reset value for specific condition.
        3:  If wake-up was due to A/D completing then bit 6 = 1, all other interrupts generating a wake-up will cause bit 6 = u.
        4:  If wake-up was due to A/D completing then bit 3 = 0, all other interrupts generating a wake-up will cause bit 3 = u.
        5:

1999 Microchip Technology Inc.                                         DS30561B-page 59
PIC12C67X

FIGURE 9-7: TIME-OUT SEQUENCE ON POWER-UP (MCLR NOT TIED TO VDD): CASE 1

                 VDD
             MCLR
INTERNAL POR

                                TPWRT

PWRT TIME-OUT                                TOST

OST TIME-OUT

   INTERNAL RESET

FIGURE 9-8: TIME-OUT SEQUENCE ON POWER-UP (MCLR NOT TIED TO VDD): CASE 2

VDD

               MCLR             TPWRT
INTERNAL POR
                                             TOST
PWRT TIME-OUT
  OST TIME-OUT

    INTERNAL RESET

FIGURE 9-9: TIME-OUT SEQUENCE ON POWER-UP (MCLR TIED TO VDD)

                    VDD  TPWRT
                 MCLR
   INTERNAL POR                        TOST

PWRT TIME-OUT
    OST TIME-OUT

INTERNAL RESET

DS30561B-page 60                                    1999 Microchip Technology Inc.
                                                                                   PIC12C67X

FIGURE 9-10: EXTERNAL POWER-ON                             FIGURE 9-11: EXTERNAL BROWN-OUT
                     RESET CIRCUIT (FOR SLOW                                    PROTECTION CIRCUIT 1
                     VDD POWER-UP)

                                                           VDD                            VDD
                                                                  33k
            VDD

         D  R                                                                 10k         MCLR

                    R1                                                             4.3k PIC12C67X
                               MCLR
                 C
                               PIC12C67X

Note 1:  External Power-on Reset circuit is required only  Note 1: This circuit will activate reset when VDD goes
         if VDD power-up slope is too slow. The diode D                 below (Vz + 0.7V), where Vz = Zener voltage.
         helps discharge the capacitor quickly when VDD
         powers down.                                              2: Resistors should be adjusted for the character-
                                                                        istics of the transistor.

2: R < 40 k is recommended to make sure that               FIGURE 9-12: EXTERNAL BROWN-OUT
     voltage drop across R does not violate the                                 PROTECTION CIRCUIT 2
     device's electrical specification.

3: R1 = 100 to 1 k will limit any current flowing          VDD
     into MCLR from external capacitor C, in the                  R1
     event of MCLR/VPP pin breakdown due to
     Electrostatic Discharge (ESD) or Electrical                  R2
     Overstress (EOS).

                                                                                          VDD

                                                                                   Q1         MCLR
                                                                                    4.3k  PIC12C67X

                                                           Note 1:  This brown-out circuit is less expensive,

                                                                    albeit less accurate. Transistor Q1 turns off

                                                                    when VDD is below a certain level such that:

                                                                       VDD            R1
                                                                                                   = 0.7V

                                                                                   R1 + R2

                                                           2: Resistors should be adjusted for the charac-
                                                                teristics of the transistor.

1999 Microchip Technology Inc.                                                          DS30561B-page 61
PIC12C67X

9.5 Interrupts                                                 The "return-from-interrupt" instruction, RETFIE, exits
There are four sources of interrupt:                           the interrupt routine, as well as sets the GIE bit, which
                                                               re-enables interrupts.
                       Interrupt Sources
                                                               The GP2/INT, GPIO port change interrupt and the
TMR0 Overflow Interrupt                                       TMR0 overflow interrupt flags are contained in the
External Interrupt GP2/INT pin                                INTCON register.
GPIO Port Change Interrupts (pins GP0, GP1, GP3)
A/D Interrupt                                                 The peripheral interrupt flag ADIF, is contained in the
                                                               Special Function Register PIR1. The corresponding
The Interrupt Control Register (INTCON) records indi-          interrupt enable bit is contained in Special Function
vidual interrupt requests in flag bits. It also has individ-   Register PIE1, and the peripheral interrupt enable bit is
ual and global interrupt enable bits.                          contained in Special Function Register INTCON.

Note:  Individual interrupt flag bits are set, regard-         When an interrupt is responded to, the GIE bit is
       less of the status of their corresponding               cleared to disable any further interrupt, the return
       mask bit or the GIE bit.                                address is pushed onto the stack and the PC is loaded
                                                               with 0004h. Once in the interrupt service routine, the
A global interrupt enable bit, GIE (INTCON<7>),                source(s) of the interrupt can be determined by polling
enables (if set) all un-masked interrupts or disables (if      the interrupt flag bits. The interrupt flag bit(s) must be
cleared) all interrupts. When bit GIE is enabled and an        cleared in software before re-enabling interrupts to
interrupt's flag bit and mask bit are set, the interrupt will  avoid repeated interrupts.
vector immediately. Individual interrupts can be dis-
abled through their corresponding enable bits in vari-         For external interrupt events, such as GPIO change
ous registers. Individual interrupt flag bits are set,         interrupt, the interrupt latency will be three or four
regardless of the status of their corresponding mask bit       instruction cycles. The exact latency depends on when
or the GIE bit. The GIE bit is cleared on reset.               the interrupt event occurs (Figure 9-14). The latency is
                                                               the same for one or two cycle instructions. Individual
FIGURE 9-13: INTERRUPT LOGIC                                   interrupt flag bits are set, regardless of the status of
                                                               their corresponding mask bit or the GIE bit.
                                             T0IF
                                             T0IE                                      Wake-up
                                                                                       (If in SLEEP mode)
                                      INTF
                                      INTE                                                  Interrupt to CPU

                                             GPIF
                                             GPIE

                  ADIF                PEIE
                  ADIE                GIE

DS30561B-page 62                                                1999 Microchip Technology Inc.
                                                                                               PIC12C67X

FIGURE 9-14: INT PIN INTERRUPT TIMING

                           Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
    OSC1

CLKOUT 3
                                      4

INT pin                                  1
                                                             Interrupt Latency 2
INTF flag    1
                            5

(INTCON<1>)

GIE bit
(INTCON<7>)

INSTRUCTION FLOW

         PC       PC                           PC+1   PC+1                             0004h        0005h
                                         Inst (PC+1)   --                         Inst (0004h)  Inst (0005h)
Instruction  Inst (PC)
fetched

Instruction  Inst (PC-1)                 Inst (PC)    Dummy Cycle                 Dummy Cycle   Inst (0004h)
executed

Note 1: INTF flag is sampled here (every Q1).
        2: Interrupt latency = 3-4 TCY where TCY = instruction cycle time.
            Latency is the same whether Inst (PC) is a single cycle or a 2-cycle instruction.

        3: CLKOUT is available only in INTRC and EXTRC oscillator modes.
        4: For minimum width of INT pulse, refer to AC specs.
        5: INTF is enabled to be set anytime during the Q4-Q1 cycles.

1999 Microchip Technology Inc.                                                                DS30561B-page 63
PIC12C67X

9.5.1 TMR0 INTERRUPT                                            9.6 Context Saving During Interrupts

An overflow (FFh  00h) in the TMR0 register will set            During an interrupt, only the return PC value is saved
flag bit T0IF (INTCON<2>). The interrupt can be                 on the stack. Typically, users may wish to save key reg-
enabled/disabled by setting/clearing enable bit T0IE            isters during an interrupt (i.e., W register and STATUS
(INTCON<5>) (Section 7.0). The flag bit T0IF                    register). This will have to be implemented in software.
(INTCON<2>) will be set, regardless of the state of the
enable bits. If used, this flag must be cleared in software.    Example 9-1 shows the storing and restoring of the
                                                                STATUS and W registers. The register, W_TEMP, must
9.5.2 INT INTERRUPT                                             be defined in both banks and must be defined at the
                                                                same offset from the bank base address (i.e., if
External interrupt on GP2/INT pin is edge triggered;            W_TEMP is defined at 0x20 in bank 0, it must also be
either rising if bit INTEDG (OPTION<6>) is set, or fall-        defined at 0xA0 in bank 1).
ing, if the INTEDG bit is clear. When a valid edge
appears on the GP2/INT pin, flag bit INTF                       Example 9-2 shows the saving and restoring of STA-
(INTCON<1>) is set. This interrupt can be disabled by           TUS and W using RAM locations 0x70 - 0x7F.
clearing enable bit INTE (INTCON<4>). Flag bit INTF             W_TEMP is defined at 0x70 and STATUS_TEMP is
must be cleared in software in the interrupt service rou-       defined at 0x71.
tine before re-enabling this interrupt. The INT interrupt
can wake-up the processor from SLEEP, if bit INTE was           The example:
set prior to going into SLEEP. The status of global inter-
rupt enable bit GIE decides whether or not the proces-          a) Stores the W register.
sor branches to the interrupt vector following wake-up.         b) Stores the STATUS register in bank 0.
See Section 9.8 for details on SLEEP mode.                      c) Executes the ISR code.
                                                                d) Restores the STATUS register (and bank select
9.5.3 GPIO INTCON CHANGE
                                                                      bit).
An input change on GP3, GP1 or GP0 sets flag bit GPIF           e) Restores the W register.
(INTCON<0>). The interrupt can be enabled/disabled by           f) Returns from interrupt.
setting/clearing enable bit GPIE (INTCON<3>)
(Section 5.1) . This flag bit GPIF (INTCON<0>) will be
set, regardless of the state of the enable bits. If used, this
flag must be cleared in software.

EXAMPLE 9-1: SAVING STATUS AND W REGISTERS USING GENERAL PURPOSE RAM
                        (0x20 - 0x6F)

MOVWF             W_TEMP         ;Copy W to TEMP register, could be bank one or zero
SWAPF             STATUS,W       ;Swap status to be saved into W
BCF               STATUS,RP0     ;Change to bank zero, regardless of current bank
MOVWF             STATUS_TEMP    ;Save status to bank zero STATUS_TEMP register
:
:(ISR)            STATUS_TEMP,W  ;Swap STATUS_TEMP register into W
:                                ;(sets bank to original state)
SWAPF                            ;Move W into STATUS register
                                 ;Swap W_TEMP
MOVWF             STATUS         ;Swap W_TEMP into W
SWAPF             W_TEMP,F       ;Return from interrupt
SWAPF             W_TEMP,W
RETFIE

EXAMPLE 9-2: SAVING STATUS AND W REGISTERS USING SHARED RAM (0x70 - 0x7F)

MOVWF             W_TEMP         ;Copy W to TEMP register (bank independent)
MOVF              STATUS,W       ;Move STATUS register into W
MOVWF             STATUS_TEMP    ;Save contents of STATUS register
:
:(ISR)            STATUS_TEMP,W  ;Retrieve copy of STATUS register
:                 STATUS         ;Restore pre-isr STATUS register contents
MOVF              W_TEMP,F       ;
MOVWF             W_TEMP,W       ;Restore pre-isr W register contents
SWAPF                            ;Return from interrupt
SWAPF
RETFIE

DS30561B-page 64                                                 1999 Microchip Technology Inc.
                                                                                                PIC12C67X

9.7 Watchdog Timer (WDT)                                  The CLRWDT and SLEEP instructions clear the WDT
                                                          and the postscaler, if assigned to the WDT, and prevent
The Watchdog Timer is a free running, on-chip RC          it from timing out early and generating a premature
oscillator, which does not require any external compo-    device RESET condition.
nents. This RC oscillator is separate from the RC oscil-
lator of the OSC1/CLKIN pin. That means that the WDT      The TO bit in the STATUS register will be cleared upon
will run, even if the clock on the OSC1/CLKIN and         a Watchdog Timer time-out.
OSC2/CLKOUT pins of the device has been stopped,
for example, by execution of a SLEEP instruction. Dur-    9.7.2 WDT PROGRAMMING CONSIDERATIONS
ing normal operation, a WDT time-out generates a
device RESET (Watchdog Timer Reset). If the device is     It should also be taken into account that under worst
in SLEEP mode, a WDT time-out causes the device to        case conditions (VDD = Min., Temperature = Max., and
wake-up and continue with normal operation (Watch-        max. WDT prescaler), it may take several seconds
dog Timer Wake-up). The WDT can be permanently            before a WDT time-out occurs.
disabled by clearing configuration bit WDTE
(Section 9.1).                                            Note:   When the prescaler is assigned to the
                                                                  WDT, always execute a CLRWDT instruction
9.7.1 WDT PERIOD                                                  before changing the prescale value, other-
                                                                  wise a WDT reset may occur.
The WDT has a nominal time-out period of 18 ms (with
no prescaler). The time-out periods vary with tempera-    See Example 7-1 and Example 7-2 for changing pres-
ture, VDD and process variations from part to part (see   caler between WDT and Timer0.
DC specs). If longer time-out periods are desired, a
prescaler with a division ratio of up to 1:128 can be
assigned to the WDT under software control by writing
to the OPTION register. Thus, time-out periods up to
2.3 seconds can be realized.

FIGURE 9-15: WATCHDOG TIMER BLOCK DIAGRAM

                                  From TMR0 Clock Source
                                  (Figure 7-5)

                                         0

            WDT Timer                    1  M                Postscaler
                                            U                         8

                                            X

                                                             8 - to - 1 MUX                     PS<2:0>

               WDT                          PSA
            Enable Bit

                                                                                           To TMR0 (Figure 7-5)

                                                          0       1

                                                             MUX                           PSA

Note: PSA and PS<2:0> are bits in the OPTION register.         WDT
                                                             Time-out

TABLE 9-8:  SUMMARY OF WATCHDOG TIMER REGISTERS
Address
            Name                  Bit 7     Bit 6 Bit 5 Bit 4            Bit 3                  Bit 2    Bit 1   Bit 0

2007h       Config. bits(1) MCLRE CP1                     CP0 PWRTE WDTE                        FOSC2    FOSC1   FOSC0
                                                                                                  PS2      PS1     PS0
81h         OPTION                GPPU INTEDG T0CS T0SE PSA

Legend: Shaded cells are not used by the Watchdog Timer.
Note 1: See Register 9-1 for operation of these bits. Not all CP0 and CP1 bits are shown.

1999 Microchip Technology Inc.                                                                         DS30561B-page 65
PIC12C67X                                                 Other peripherals can not generate interrupts since
                                                          during SLEEP, no on-chip Q clocks are present.
9.8 Power-down Mode (SLEEP)
                                                          When the SLEEP instruction is being executed, the next
Power-down mode is entered by executing a SLEEP           instruction (PC + 1) is pre-fetched. For the device to
instruction.                                              wake-up through an interrupt event, the corresponding
                                                          interrupt enable bit must be set (enabled). Wake-up is
If enabled, the Watchdog Timer will be cleared but        regardless of the state of the GIE bit. If the GIE bit is
keeps running, the PD bit (STATUS<3>) is cleared, the     clear (disabled), the device continues execution at the
TO (STATUS<4>) bit is set, and the oscillator driver is   instruction after the SLEEP instruction. If the GIE bit is
turned off. The I/O ports maintain the status they had,   set (enabled), the device executes the instruction after
before the SLEEP instruction was executed (driving        the SLEEP instruction and then branches to the inter-
high, low or hi-impedance).                               rupt address (0004h). In cases where the execution of
                                                          the instruction following SLEEP is not desirable, the
For lowest current consumption in this mode, place all    user should have a NOP after the SLEEP instruction.
I/O pins at either VDD or VSS, ensure no external cir-
cuitry is drawing current from the I/O pin, power-down    9.8.2 WAKE-UP USING INTERRUPTS
the A/D, and disable external clocks. Pull all I/O pins
that are hi-impedance inputs, high or low externally, to  When global interrupts are disabled (GIE cleared) and
avoid switching currents caused by floating inputs. The   any interrupt source has both its interrupt enable bit
T0CKI input, if enabled, should also be at VDD or VSS     and interrupt flag bit set, one of the following will occur:
for lowest current consumption. The contribution from
on-chip pull-ups on GPIO should be considered.             If the interrupt occurs before the the execution of
                                                             a SLEEP instruction, the SLEEP instruction will
The MCLR pin, if enabled, must be at a logic high level      complete as a NOP. Therefore, the WDT and WDT
(VIHMC).                                                     postscaler will not be cleared, the TO bit will not
                                                             be set and PD bits will not be cleared.
9.8.1 WAKE-UP FROM SLEEP
                                                          If the interrupt occurs during or after the execu-
The device can wake-up from SLEEP through one of             tion of a SLEEP instruction, the device will imme-
the following events:                                        diately wake-up from sleep . The SLEEP
                                                             instruction will be completely executed before the
1. External reset input on MCLR pin.                         wake-up. Therefore, the WDT and WDT
2. Watchdog Timer Wake-up (if WDT was                        postscaler will be cleared, the TO bit will be set
                                                             and the PD bit will be cleared.
      enabled).
3. GP2/INT interrupt, interrupt GPIO port change          Even if the flag bits were checked before executing a
                                                          SLEEP instruction, it may be possible for flag bits to
      or some Peripheral Interrupts.                      become set before the SLEEP instruction completes. To
                                                          determine whether a SLEEP instruction executed, test
External MCLR Reset will cause a device reset. All        the PD bit. If the PD bit is set, the SLEEP instruction
other events are considered a continuation of program     was executed as a NOP.
execution and cause a "wake-up". The TO and PD bits
in the STATUS register can be used to determine the       To ensure that the WDT is cleared, a CLRWDT instruc-
cause of device reset. The PD bit, which is set on        tion should be executed before a SLEEP instruction.
power-up, is cleared when SLEEP is invoked. The TO
bit is cleared if a WDT time-out occurred (and caused
wake-up).

The following peripheral interrupt can wake the device
from SLEEP:

1. A/D conversion (when A/D clock source is RC).

DS30561B-page 66                                           1999 Microchip Technology Inc.
                                                                                                   PIC12C67X

FIGURE 9-16: WAKE-UP FROM SLEEP THROUGH INTERRUPT

                    Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1                 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
        OSC1                                    TOST(2)
CLKOUT(4)

GPIO pin

GPIF flag                                                                       Interrupt Latency
(INTCON<0>)                                                                           (Note 3)

GIE bit                                         Processor in
(INTCON<7>)                                        SLEEP

INSTRUCTION FLOW                                            PC+2

            PC    PC                PC+1                               PC+2           PC + 2          0004h        0005h
                                  Inst(PC + 1)                    Inst(PC + 2)  Dummy cycle        Inst(0004h)  Inst(0005h)
Instruction     Inst(PC) = SLEEP  SLEEP                           Inst(PC + 1)                     Dummy cycle  Inst(0004h)
fetched             Inst(PC - 1)

Instruction
executed

Note 1:     XT, HS or LP oscillator mode assumed.
        2:  TOST = 1024TOSC (drawing not to scale) This delay will not be there for INTRC and EXTRC osc mode.
        3:  GIE = '1' assumed. In this case after wake- up, the processor jumps to the interrupt routine. If GIE = '0', execution will
            continue in-line.
        4:  CLKOUT is not available in XT, HS or LP osc modes, but shown here for timing reference.

9.9 Program Verification/Code Protection                          After reset, and if the device is placed into program-
                                                                  ming/verify mode, the program counter (PC) is at loca-
If the code protection bit(s) have not been pro-                  tion 00h. A 6-bit command is then supplied to the
grammed, the on-chip program memory can be read                   device. Depending on the command, 14-bits of pro-
out for verification purposes.                                    gram data are then supplied to or from the device,
                                                                  depending if the command was a load or a read. For
   Note: Microchip does not recommend code pro-                   complete details of serial programming, please refer to
               tecting windowed devices.                          the PIC12C67X Programming Specifications.

9.10 ID Locations                                                 FIGURE 9-17: TYPICAL IN-CIRCUIT SERIAL
                                                                                       PROGRAMMING
Four memory locations (2000h - 2003h) are designated                                   CONNECTION
as ID locations, where the user can store checksum or
other code-identification numbers. These locations are            External                         To Normal
not accessible during normal execution, but are read-             Connector                        Connections
able and writable during program/verify. It is recom-             Signals
mended that only the 4 least significant bits of the ID                                                         PIC12C67X
location are used.                                                      +5V
                                                                          0V                                    VDD
9.11 In-Circuit Serial Programming                                                                              VSS
                                                                        VPP                                     MCLR/VPP
PIC12C67X microcontrollers can be serially pro-
grammed while in the end application circuit. This is                  CLK                                      GP1
simply done with two lines for clock and data, and three
other lines for power, ground and the programming volt-           Data I/O                                      GP0
age. This allows customers to manufacture boards with
unprogrammed devices, and then program the micro-                                                                                  VDD
controller just before shipping the product. This also
allows the most recent firmware or a custom firmware                                               To Normal
to be programmed.                                                                                  Connections

The device is placed into a program/verify mode by
holding the GP1 and GP0 pins low, while raising the
MCLR (VPP) pin from VIL to VIHH (see programming
specification). GP1 (clock) becomes the programming
clock and GP0 (data) becomes the programming data.
Both GP0 and GP1 are Schmitt Trigger inputs in this
mode.

1999 Microchip Technology Inc.                                                                                DS30561B-page 67
PIC12C67X

NOTES:

DS30561B-page 68   1999 Microchip Technology Inc.
                                                                                  PIC12C67X

10.0 INSTRUCTION SET SUMMARY                                      The instruction set is highly orthogonal and is grouped
                                                                  into three basic categories:
Each PIC12C67X instruction is a 14-bit word divided
into an OPCODE which specifies the instruction type                Byte-oriented operations
and one or more operands which further specify the                Bit-oriented operations
operation of the instruction. The PIC12C67X instruc-               Literal and control operations
tion set summary in Table 10-2 lists byte-oriented, bit-
oriented, and literal and control operations. Table 10-           All instructions are executed within one single instruc-
1 shows the opcode field descriptions.                            tion cycle, unless a conditional test is true or the pro-
                                                                  gram counter is changed as a result of an instruction.
For byte-oriented instructions, 'f' represents a file reg-        In this case, the execution takes two instruction cycles
ister designator and 'd' represents a destination desig-          with the second cycle executed as a NOP. One instruc-
nator. The file register designator specifies which file          tion cycle consists of four oscillator periods. Thus, for
register is to be used by the instruction.                        an oscillator frequency of 4 MHz, the normal instruction
                                                                  execution time is 1 s. If a conditional test is true or the
The destination designator specifies where the result of          program counter is changed as a result of an instruc-
the operation is to be placed. If 'd' is zero, the result is      tion, the instruction execution time is 2 s.
placed in the W register. If 'd' is one, the result is placed
in the file register specified in the instruction.                Table 10-2 lists the instructions recognized by the
                                                                  MPASM assembler.
For bit-oriented instructions, 'b' represents a bit field
designator which selects the number of the bit affected           Figure 10-1 shows the three general formats that the
by the operation, while 'f' represents the number of the          instructions can have.
file in which the bit is located.
                                                                  Note:  To maintain upward compatibility with
For literal and control operations, 'k' represents an                    future PIC12C67X products, do not use the
eight or eleven bit constant or literal value.                           OPTION and TRIS instructions.

TABLE 10-1: OPCODE FIELD                                          All examples use the following format to represent a
                     DESCRIPTIONS                                 hexadecimal number:

                                                                  0xhh

Field  Description                                                where h signifies a hexadecimal digit.

   f Register file address (0x00 to 0x7F)                         FIGURE 10-1: GENERAL FORMAT FOR
   W Working register (accumulator)                                                    INSTRUCTIONS
   b Bit address within an 8-bit file register
   k Literal field, constant data or label                        Byte-oriented file register operations
   x Don't care location (= 0 or 1)
                                                                  13             8 76                                 0
          The assembler will generate code with x = 0. It is the
          recommended form of use for compatibility with all             OPCODE   d                       f (FILE #)
          Microchip software tools.
   d Destination select; d = 0: store result in W,                       d = 0 for destination W
          d = 1: store result in file register f.                        d = 1 for destination f
          Default is d = 1                                               f = 7-bit file register address
label Label name
TOS Top of Stack                                                 Bit-oriented file register operations
  PC Program Counter
PCLATH Program Counter High Latch                                 13             10 9 7 6                             0
GIE Global Interrupt Enable bit
WDT Watchdog Timer/Counter                                              OPCODE   b (BIT #) f (FILE #)
  TO Time-out bit
  PD Power-down bit                                                      b = 3-bit bit address
dest Destination either the W register or the specified                  f = 7-bit file register address
          register file location
  [ ] Options                                                     Literal and control operations

  ( ) Contents                                                    General
   Assigned to
< > Register bit field                                           13              87                                       0
   In the set of                                                                                          k (literal)
italics User defined term (font is courier)                              OPCODE

                                                                         k = 8-bit immediate value

                                                                  CALL and GOTO instructions only

                                                                  13       11 10                                      0

                                                                         OPCODE        k (literal)

                                                                         k = 11-bit immediate value

1999 Microchip Technology Inc.                                                                          DS30561B-page 69
PIC12C67X                                                  10.1.3 PCL AS SOURCE OR DESTINATION

10.1 Special Function Registers as                         Read, write or read-modify-write on PCL may have the
          Source/Destination                               following results:

The PIC12C67X's orthogonal instruction set allows          Read PC:            PCL  dest
read and write of all file registers, including special
function registers. There are some special situations      Write PCL:          PCLATH  PCH;
the user should be aware of:                                                   8-bit destination value  PCL

10.1.1 STATUS AS DESTINATION                               Read-Modify-Write:  PCL ALU operand
                                                                               PCLATH  PCH;
If an instruction writes to STATUS, the Z, C and DC bits                       8-bit result  PCL
may be set or cleared as a result of the instruction and
overwrite the original data bits written. For example,     Where PCH = program counter high byte (not an
executing CLRF STATUS will clear register STATUS,          addressable register), PCLATH = Program counter
and then set the Z bit leaving 0000 0100b in the reg-      high holding latch, dest = destination, WREG or f.
ister.
                                                           10.1.4 BIT MANIPULATION
10.1.2 TRIS AS DESTINATION
                                                           All bit manipulation instructions are done by first read-
Bit 3 of the TRIS register always reads as a '1' since     ing the entire register, operating on the selected bit and
GP3 is an input only pin. This fact can affect some read-  writing the result back (read-modify-write). The user
modify-write operations on the TRIS register.              should keep this in mind when operating on special
                                                           function registers, such as ports.

DS30561B-page 70                                                                1999 Microchip Technology Inc.
                                                                  PIC12C67X

TABLE 10-2: INSTRUCTION SET SUMMARY

Mnemonic,      Description                     Cycles       14-Bit Opcode        Status Notes
Operands
                                                       MSb                 LSb Affected

BYTE-ORIENTED FILE REGISTER OPERATIONS

ADDWF       f, d Add W and f                    1 00        0111  dfff     ffff  C,DC,Z  1,2
ANDWF                                           1 00        0101  dfff     ffff  Z       1,2
CLRF        f, d AND W with f                   1 00        0001  lfff     ffff  Z       2
CLRW                                            1 00        0001  0000     0011  Z
COMF        f  Clear f                          1 00        1001  dfff     ffff  Z       1,2
DECF                                            1 00        0011  dfff     ffff  Z       1,2
DECFSZ      -  Clear W                         1(2) 00      1011  dfff     ffff          1,2,3
INCF                                            1 00        1010  dfff     ffff  Z       1,2
INCFSZ      f, d Complement f                  1(2) 00      1111  dfff     ffff          1,2,3
IORWF                                           1 00        0100  dfff     ffff  Z       1,2
MOVF        f, d Decrement f                    1 00        1000  dfff     ffff  Z       1,2
MOVWF                                           1 00        0000  lfff     ffff
NOP         f, d Decrement f, Skip if 0         1 00        0000  0xx0     0000  C       1,2
RLF                                             1 00        1101  dfff     ffff  C       1,2
RRF         f, d Increment f                    1 00        1100  dfff     ffff  C,DC,Z  1,2
SUBWF                                           1 00        0010  dfff     ffff          1,2
SWAPF       f, d Increment f, Skip if 0         1 00        1110  dfff     ffff  Z       1,2
XORWF                                           1 00        0110  dfff     ffff
            f, d Inclusive OR W with f

            f, d Move f

            f  Move W to f

            -  No Operation

            f, d Rotate Left f through Carry

            f, d Rotate Right f through Carry

            f, d Subtract W from f

            f, d Swap nibbles in f

            f, d Exclusive OR W with f

BIT-ORIENTED FILE REGISTER OPERATIONS

BCF         f, b Bit Clear f                   1 01 00bb bfff ffff                       1,2
BSF         f, b Bit Set f
BTFSC       f, b Bit Test f, Skip if Clear     1 01 01bb bfff ffff                       1,2
BTFSS       f, b Bit Test f, Skip if Set
                                               1 (2) 01 10bb bfff ffff                   3

                                               1 (2) 01 11bb bfff ffff                   3

LITERAL AND CONTROL OPERATIONS

ADDLW       k  Add literal and W               1 11 111x kkkk kkkk C,DC,Z
               AND literal with W              1 11 1001 kkkk kkkk Z
ANDLW       k  Call subroutine                 2 10 0kkk kkkk kkkk
               Clear Watchdog Timer            1 00 0000 0110 0100 TO,PD
CALL        k  Go to address                   2 10 1kkk kkkk kkkk
               Inclusive OR literal with W     1 11 1000 kkkk kkkk Z
CLRWDT -       Move literal to W               1 11 00xx kkkk kkkk
               Return from interrupt           2 00 0000 0000 1001
GOTO        k  Return with literal in W        2 11 01xx kkkk kkkk
               Return from Subroutine          2 00 0000 0000 1000
IORLW       k  Go into standby mode            1 00 0000 0110 0011 TO,PD
               Subtract W from literal         1 11 110x kkkk kkkk C,DC,Z
MOVLW       k  Exclusive OR literal with W     1 11 1010 kkkk kkkk Z

RETFIE      -

RETLW       k

RETURN -

SLEEP       -

SUBLW       k

XORLW       k

Note 1:     When an I/O register is modified as a function of itself ( i.e., MOVF PORTB, 1), the value used will be that value present
            on the pins themselves. For example, if the data latch is '1' for a pin configured as input and is driven low by an external
        2:  device, the data will be written back with a '0'.
        3:  If this instruction is executed on the TMR0 register (and, where applicable, d = 1), the prescaler will be cleared if assigned
            to the Timer0 Module.
            If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is
            executed as a NOP.

1999 Microchip Technology Inc.                                                 DS30561B-page 71
PIC12C67X

10.2 Instruction Descriptions

ADDLW             Add Literal and W                           ANDLW             And Literal with W
Syntax:                                                       Syntax:
Operands:         [ label ] ADDLW k                           Operands:         [ label ] ANDLW k
Operation:                                                    Operation:
Status Affected:  0  k  255                                   Status Affected:  0  k  255
Encoding:         (W) + k  (W)                                Encoding:         (W) .AND. (k)  (W)
Description:                                                  Description:
                  C, DC, Z                                                      Z
Words:                                                        Words:
Cycles:                11 111x kkkk kkkk                      Cycles:                11 1001 kkkk kkkk
Example                                                       Example
                  The contents of the W register are                            The contents of W register are
                  added to the eight bit literal 'k' and                        AND'ed with the eight bit literal 'k'.
                  the result is placed in the W regis-                          The result is placed in the W reg-
                  ter.                                                          ister.

                  1                                                             1

                  1                                                             1

                    ADDLW 0x15                                                    ANDLW 0x5F

                  Before Instruction                                            Before Instruction

                               W = 0x10                                                      W = 0xA3

                  After Instruction                                             After Instruction

                               W = 0x25                                                      W = 0x03

ADDWF             Add W and f                                 ANDWF             AND W with f
Syntax:                                                       Syntax:
Operands:         [ label ] ADDWF f,d                         Operands:         [ label ] ANDWF f,d

Operation:        0  f  127                                   Operation:        0  f  127
Status Affected:  d  [0,1]                                    Status Affected:  d  [0,1]
Encoding:                                                     Encoding:
Description:      (W) + (f)  (dest)                           Description:      (W) .AND. (f)  (dest)

Words:            C, DC, Z                                    Words:            Z
Cycles:                                                       Cycles:
Example                00 0111 dfff ffff                      Example                00 0101 dfff ffff

                  Add the contents of the W register                            AND the W register with register
                  with register 'f'. If 'd' is 0, the result                    'f'. If 'd' is 0, the result is stored in
                  is stored in the W register. If 'd' is                        the W register. If 'd' is 1, the result
                  1, the result is stored back in reg-                          is stored back in register 'f'.
                  ister 'f'.
                                                                                1
                  1
                                                                                1
                  1
                                                                                  ANDWF FSR, 1
                    ADDWF FSR, 0
                                                                                Before Instruction
                  Before Instruction
                                                                                              W = 0x17
                               W = 0x17                                                      FSR = 0xC2
                               FSR = 0xC2
                                                                                After Instruction
                  After Instruction
                                                                                             W = 0x17
                               W = 0xD9                                                      FSR = 0x02
                               FSR = 0xC2

DS30561B-page 72                                                                1999 Microchip Technology Inc.
                                                                                PIC12C67X

BCF               Bit Clear f                          BTFSC             Bit Test, Skip if Clear
Syntax:                                                Syntax:
Operands:         [ label ] BCF f,b                    Operands:         [ label ] BTFSC f,b
                                                       Operation:
Operation:        0  f  127                            Status Affected:  0  f  127
Status Affected:  0b7                                  Encoding:         0b7
Encoding:                                              Description:
Description:      0  (f)                                              skip if (f) = 0
Words:                                                 Words:
Cycles:           None                                 Cycles:           None
Example                                                Example
                     01 00bb bfff ffff                                      01      10bb bfff ffff

                  Bit 'b' in register 'f' is cleared.                    If bit 'b' in register 'f' is '0', then the
                                                                         next instruction is skipped.
                  1                                                      If bit 'b' is '0', then the next instruc-
                                                                         tion fetched during the current
                  1                                                      instruction execution is discarded,
                                                                         and a NOP is executed instead,
                     BCF          FLAG_REG, 7                            making this a 2 cycle instruction.

                  Before Instruction                                     1

                               FLAG_REG = 0xC7                           1(2)

                  After Instruction

                               FLAG_REG = 0x47

                                                                            HERE    BTFSC    FLAG,1
                                                                            FALSE            PROCESS_CO
                                                                            TRUE    GOTO     DE

                                                                                    
                                                                                    
                                                                                    

                                                                         Before Instruction

                                                                                      PC = address HERE

                                                                         After Instruction

                                                                                      if FLAG<1> = 0,

                                                                                      PC = address TRUE

                                                                                      if FLAG<1>=1,

                                                                                      PC = address FALSE

BSF               Bit Set f
Syntax:
Operands:         [ label ] BSF f,b

Operation:        0  f  127
Status Affected:  0b7
Encoding:         1  (f)
Description:
Words:            None
Cycles:
Example              01 01bb bfff ffff

                  Bit 'b' in register 'f' is set.

                  1

                  1

                     BSF       FLAG_REG, 7

                  Before Instruction

                               FLAG_REG = 0x0A

                  After Instruction

                               FLAG_REG = 0x8A

1999 Microchip Technology Inc.                                                             DS30561B-page 73
PIC12C67X

BTFSS             Bit Test f, Skip if Set                      CLRF              Clear f
Syntax:                                                        Syntax:
Operands:         [ label ] BTFSS f,b                          Operands:         [ label ] CLRF f
Operation:                                                     Operation:
Status Affected:  0  f  127                                                      0  f  127
Encoding:         0b<7                                         Status Affected:  00h  (f)
Description:                                                   Encoding:         1Z
                  skip if (f) = 1                           Description:
Words:
Cycles:           None                                         Words:            Z
Example                                                        Cycles:
                     01 11bb bfff ffff                         Example              00 0001 1fff ffff

                  If bit 'b' in register 'f' is '1', then the                    The contents of register 'f' are
                  next instruction is skipped.                                   cleared and the Z bit is set.
                  If bit 'b' is '1', then the next instruc-
                  tion fetched during the current                                1
                  instruction execution, is discarded
                  and a NOP is executed instead,                                 1
                  making this a 2 cycle instruction.
                                                                                    CLRF     FLAG_REG

                  1                                                              Before Instruction

                                                                                          FLAG_REG =    0x5A

                  1(2)                                                           After Instruction      0x00
                                                                                                        1
                     HERE    BTFSS    FLAG,1                                              FLAG_REG =
                     FALSE   GOTO     PROCESS_CO
                     TRUE            DE                                                  Z          =
                             
                             

                  Before Instruction

                               PC = address HERE

                  After Instruction

                               if FLAG<1> = 0,

                               PC = address FALSE

                               if FLAG<1> = 1,

                               PC = address TRUE

CALL              Call Subroutine                              CLRW              Clear W
Syntax:                                                        Syntax:
Operands:         [ label ] CALL k                             Operands:         [ label ] CLRW
Operation:                                                     Operation:
                  0  k  2047                                                     None
Status Affected:                                               Status Affected:  00h  (W)
Encoding:         (PC)+ 1 TOS,                                 Encoding:         1Z
Description:      k  PC<10:0>,                                 Description:      Z
                  (PCLATH<4:3>)  PC<12:11>
Words:                                                         Words:                 00 0001 0000 0011
Cycles:           None                                         Cycles:
Example                                                        Example           W register is cleared. Zero bit (Z)
                     10 0kkk kkkk kkkk                                           is set.

                  Call Subroutine. First, return                                 1
                  address (PC+1) is pushed onto
                  the stack. The eleven bit immedi-                              1
                  ate address is loaded into PC bits
                  <10:0>. The upper bits of the PC                                 CLRW
                  are loaded from PCLATH. CALL is
                  a two cycle instruction.                                       Before Instruction

                  1                                                                           W = 0x5A

                  2                                                              After Instruction

                                                                                              W = 0x00
                                                                                              Z=1

                     HERE    CALL

                                     THER
                                     E

                  Before Instruction

                               PC = Address HERE

                  After Instruction

                               PC = Address THERE

                               TOS = Address HERE+1

DS30561B-page 74                                                                     1999 Microchip Technology Inc.
                                                                                   PIC12C67X

CLRWDT            Clear Watchdog Timer                     DECF              Decrement f
Syntax:                                                    Syntax:
Operands:         [ label ] CLRWDT                         Operands:         [ label ] DECF f,d
Operation:
                  None                                     Operation:        0  f  127
Status Affected:                                           Status Affected:  d  [0,1]
Encoding:         00h  WDT                                 Encoding:
Description:      0  WDT prescaler,                        Description:      (f) - 1  (dest)
                  1  TO
Words:            1  PD                                    Words:            Z
Cycles:                                                    Cycles:
Example           TO, PD                                   Example              00 0011 dfff ffff

                     00 0000 0110 0100                                       Decrement register 'f'. If 'd' is 0,
                                                                             the result is stored in the W regis-
                  CLRWDT instruction resets the                              ter. If 'd' is 1, the result is stored
                  Watchdog Timer. It also resets the                         back in register 'f'.
                  prescaler of the WDT. Status bits
                  TO and PD are set.                                         1

                  1                                                          1

                  1                                                             DECF CNT, 1

                     CLRWDT                                                  Before Instruction       0x01
                                                                                                      0
                                                                                          CNT =
                                                                                                      0x00
                  Before Instruction                                                  Z            =  1

                               WDT counter =  ?                              After Instruction

                  After Instruction           0x00                                    CNT =
                                              0
                               WDT counter =  1                                       Z            =
                                              1
                             WDT prescaler=

                             TO           =

                             PD           =

COMF              Complement f                             DECFSZ            Decrement f, Skip if 0
Syntax:                                                    Syntax:
Operands:         [ label ] COMF f,d                       Operands:         [ label ] DECFSZ f,d
                                                           Operation:
Operation:        0  f  127                                Status Affected:  0  f  127
Status Affected:  d  [0,1]                                 Encoding:         d  [0,1]
Encoding:         (f)  (dest)                              Description:
Description:                                                                 (f) - 1  (dest); skip if result = 0
                  Z                                        Words:
Words:                                                     Cycles:           None
Cycles:                                                    Example
Example              00 1001 dfff ffff                                          00 1011 dfff ffff

                  The contents of register 'f' are                           The contents of register 'f' are
                  complemented. If 'd' is 0, the                             decremented. If 'd' is 0, the result
                  result is stored in W. If 'd' is 1, the                    is placed in the W register. If 'd' is
                  result is stored back in register 'f'.                     1, the result is placed back in reg-
                                                                             ister 'f'.
                  1                                                          If the result is 0, the next instruc-
                                                                             tion, which is already fetched, is
                  1                                                          discarded. A NOP is executed
                                                                             instead making it a two cycle
                     COMF         REG1,0                                     instruction.

                  Before Instruction

                             REG1 =       0x13                               1

                  After Instruction       0x13
                                          0xEC
                             REG1 =                                          1(2)

                             W        =

                                                                                HERE     DECFSZ       CNT, 1
                                                                                                      LOOP
                                                                                         GOTO

                                                                                CONTINUE
                                                                                                
                                                                                                

                                                                             Before Instruction

                                                                                  PC = address HERE

                                                                             After Instruction

                                                                                  CNT = CNT - 1

                                                                                  if CNT = 0,

                                                                                  PC = address CONTINUE

                                                                                  if CNT  0,
                                                                                  PC = address HERE+1

1999 Microchip Technology Inc.                                                                   DS30561B-page 75
PIC12C67X

GOTO              Unconditional Branch                    INCFSZ            Increment f, Skip if 0
Syntax:                                                   Syntax:
Operands:         [ label ] GOTO k                        Operands:         [ label ] INCFSZ f,d
Operation:                                                Operation:
Status Affected:  0  k  2047                              Status Affected:  0  f  127
Encoding:         k  PC<10:0>                             Encoding:         d  [0,1]
Description:      PCLATH<4:3>  PC<12:11>                  Description:
                                                                            (f) + 1  (dest), skip if result = 0
Words:            None                                    Words:
Cycles:                                                   Cycles:           None
Example                10 1kkk kkkk kkkk                  Example
                                                                               00 1111 dfff ffff
                  GOTO is an unconditional branch.
                  The eleven bit immediate value is                         The contents of register 'f' are
                  loaded into PC bits <10:0>. The                           incremented. If 'd' is 0, the result
                  upper bits of PC are loaded from                          is placed in the W register. If 'd' is
                  PCLATH<4:3>. GOTO is a two                                1, the result is placed back in reg-
                  cycle instruction.                                        ister 'f'.
                                                                            If the result is 0, the next instruc-
                  1                                                         tion, which is already fetched, is
                                                                            discarded. A NOP is executed
                  2                                                         instead making it a two cycle
                                                                            instruction.
                    GOTO THERE
                                                                            1
                  After Instruction
                                                                            1(2)
                               PC = Address THERE

                                                                               HERE    INCFSZ        CNT, 1
                                                                                                    LOOP
                                                                                       GOTO

                                                                               CONTINUE

                                                                                       

                                                                                       

                                                                            Before Instruction

                                                                                 PC = address HERE

                                                                            After Instruction

                                                                                 CNT = CNT + 1

                                                                                 if CNT= 0,

                                                                                 PC = address CONTINUE

                                                                                 if CNT 0,
                                                                                 PC = address HERE +1

INCF              Increment f
Syntax:
Operands:         [ label ] INCF f,d                      IORLW             Inclusive OR Literal with W
                                                          Syntax:
Operation:        0  f  127                               Operands:         [ label ] IORLW k
Status Affected:  d  [0,1]                                Operation:
Encoding:                                                 Status Affected:  0  k  255
Description:      (f) + 1  (dest)                         Encoding:         (W) .OR. k  (W)
                                                          Description:
Words:            Z                                                         Z
Cycles:                                                   Words:
Example              00 1010 dfff ffff                    Cycles:                11 1000 kkkk kkkk
                                                          Example
                  The contents of register 'f' are                          The contents of the W register are
                  incremented. If 'd' is 0, the result                      OR'ed with the eight bit literal 'k'.
                  is placed in the W register. If 'd' is                    The result is placed in the W reg-
                  1, the result is placed back in reg-                      ister.
                  ister 'f'.
                                                                            1
                  1
                                                                            1
                  1
                                                                              IORLW 0x35
                     INCF CNT, 1
                                                                            Before Instruction
                  Before Instruction  0xFF
                                      0                                                  W = 0x9A
                               CNT =
                                      0x00                                  After Instruction
                     Z             =  1
                                                                                         W = 0xBF
                  After Instruction                                                      Z=1

                               CNT =

                     Z             =

DS30561B-page 76                                                                   1999 Microchip Technology Inc.
                                                                                    PIC12C67X

IORWF             Inclusive OR W with f                     MOVF              Move f
Syntax:                                                     Syntax:
Operands:         [ label ] IORWF f,d                       Operands:         [ label ] MOVF f,d
                                                            Operation:
Operation:        0  f  127                                 Status Affected:  0  f  127
Status Affected:  d  [0,1]                                  Encoding:         d  [0,1]
Encoding:                                                   Description:
Description:      (W) .OR. (f)  (dest)                                        (f)  (dest)
                                                            Words:
Words:            Z                                         Cycles:           Z
Cycles:                                                     Example
Example              00 0100 dfff ffff                                             00 1000 dfff ffff

                  Inclusive OR the W register with                            The contents of register f are
                  register 'f'. If 'd' is 0, the result is                    moved to a destination dependant
                  placed in the W register. If 'd' is 1,                      upon the status of d. If d = 0, des-
                  the result is placed back in regis-                         tination is W register. If d = 1, the
                  ter 'f'.                                                    destination is file register f itself.
                                                                              d = 1 is useful to test a file register
                  1                                                           since status flag Z is affected.

                  1                                                           1

                     IORWF        RESULT, 0                                   1

                  Before Instruction     0x13                                   MOVF FSR, 0
                                         0x91
                               RESULT =                                       After Instruction
                                         0x13
                            W     =      0x93                                              W = value in FSR register
                                         1                                                 Z =1
                  After Instruction

                               RESULT =

                            W     =

                            Z     =

                                                            MOVWF             Move W to f
                                                            Syntax:
MOVLW             Move Literal to W                         Operands:         [ label ] MOVWF f
Syntax:           [ label ] MOVLW k                         Operation:
Operands:         0  k  255                                 Status Affected:  0  f  127
Operation:        k  (W)                                    Encoding:
Status Affected:  None                                      Description:      (W)  (f)
Encoding:
Description:           11 00xx kkkk kkkk                    Words:            None
                                                            Cycles:
Words:            The eight bit literal 'k' is loaded       Example              00 0000 1fff ffff
Cycles:           into W register. The don't cares
Example           will assemble as 0's.                                       Move data from W register to reg-
                  1                                                           ister 'f'.
                  1
                                                                              1
                    MOVLW 0x5A
                                                                              1
                  After Instruction
                                                                                 MOVWF     OPTION
                               W = 0x5A
                                                                              Before Instruction     0xFF
                                                                                                     0x4F
                                                                                           OPTION =
                                                                                                     0x4F
                                                                                        W  =         0x4F

                                                                              After Instruction

                                                                                           OPTION =

                                                                                        W  =

1999 Microchip Technology Inc.                                                           DS30561B-page 77
PIC12C67X

NOP               No Operation   0xx0  0000             RETFIE            Return from Interrupt
Syntax:           [ label ] NOP                         Syntax:
Operands:         None                                  Operands:         [ label ] RETFIE
Operation:        No operation                          Operation:
Status Affected:  None                                  Status Affected:  None
Encoding:                                               Encoding:
Description:           00 0000                          Description:      TOS  PC,
Words:                                                                    1  GIE
Cycles:           No operation.                         Words:
Example           1                                     Cycles:           None
                  1                                     Example
                                                                               00 0000 0000 1001
                    NOP
                                                                          Return from Interrupt. Stack is
                                                                          POPed and Top of Stack (TOS) is
                                                                          loaded in the PC. Interrupts are
                                                                          enabled by setting Global Inter-
                                                                          rupt Enable bit, GIE
                                                                          (INTCON<7>). This is a two cycle
                                                                          instruction.

                                                                          1

                                                                          2

                                                                            RETFIE

                                                                          After Interrupt

                                                                                       PC = TOS
                                                                                       GIE = 1

  OPTION          Load Option Register                  RETLW             Return with Literal in W
Syntax:                                                 Syntax:
Operands:         [ label ] OPTION                      Operands:         [ label ] RETLW k
Operation:                                              Operation:
Status Affected:  None                                                    0  k  255
Encoding:         (W)  OPTION                           Status Affected:  k  (W);
Description:      None                                  Encoding:         TOS  PC
                                                        Description:
Words:                 00 0000 0110 0010                                  None
Cycles:                                                 Words:
Example           The contents of the W register are    Cycles:              11 01xx kkkk kkkk
                  loaded in the OPTION register.        Example
                  This instruction is supported for                       The W register is loaded with the
                  code compatibility with PIC16C5X      TABLE             eight bit literal 'k'. The program
                  products. Since OPTION is a read-                       counter is loaded from the top of
                  able/writable register, the user can                    the stack (the return address).
                  directly address it.                                    This is a two cycle instruction.

                  1                                                       1

                  1                                                       2

                   To maintain upward compatibility                       CALL TABLE;W contains
                   with future PIC12C67X products,
                   do not use this instruction.                           table

                                                                                 ;offset value

                                                                                ;W now has table value

                                                                          

                                                                          

                                                                          ADDWF PC ;W = offset

                                                                          RETLW k1 ;Begin table

                                                                          RETLW k2 ;

                                                                          

                                                                          

                                                                          

                                                                          RETLW kn ; End of table

                                                                          Before Instruction

                                                                                       W = 0x07

                                                                          After Instruction

                                                                                       W = value of k8

DS30561B-page 78                                                             1999 Microchip Technology Inc.
                                                                                     PIC12C67X

RETURN            Return from Subroutine                   RRF               Rotate Right f through Carry
Syntax:                                                    Syntax:
Operands:         [ label ] RETURN                         Operands:         [ label ] RRF f,d
Operation:
Status Affected:  None                                     Operation:        0  f  127
Encoding:                                                  Status Affected:  d  [0,1]
Description:      TOS  PC                                  Encoding:         See description below
                  None                                     Description:
Words:                                                                       C
Cycles:                00 0000 0000 1000
Example                                                                         00 1100 dfff ffff
                  Return from subroutine. The stack
                  is POPed and the top of the stack                          The contents of register 'f' are
                  (TOS) is loaded into the program                           rotated one bit to the right through
                  counter. This is a two cycle                               the Carry Flag. If 'd' is 0, the result
                  instruction.                                               is placed in the W register. If 'd' is
                                                                             1, the result is placed back in reg-
                  1                                                          ister 'f'.

                  2                                                                  C          Register f

                    RETURN                                 Words:            1
                                                           Cycles:
                  After Interrupt                          Example           1

                               PC = TOS

                                                                                RRF             REG1,

                                                                                                0

                                                                             Before Instruction

                                                                                     REG1 =         1110 0110
                                                                                                    0
                                                                                     C           =
                                                                                                    1110 0110
                                                                             After Instruction      0111 0011
                                                                                                    0
                                                                                     REG1 =

                                                                                     W           =

                                                                                     C           =

RLF               Rotate Left f through Carry              SLEEP
Syntax:                                                    Syntax:
Operands:         [ label ] RLF f,d                        Operands:         [ label ] SLEEP
                                                           Operation:
Operation:        0  f  127                                                  None
Status Affected:  d  [0,1]                                 Status Affected:
Encoding:                                                  Encoding:         00h  WDT,
Description:      See description below                    Description:      0  WDT prescaler,
                                                                             1  TO,
                  C                                        Words:            0  PD
                                                           Cycles:
                     00 1101 dfff ffff                     Example:          TO, PD

                  The contents of register 'f' are                                00 0000 0110 0011
                  rotated one bit to the left through
                  the Carry Flag. If 'd' is 0, the result                    The power-down status bit, PD is
                  is placed in the W register. If 'd' is                     cleared. Time-out status bit, TO
                  1, the result is stored back in reg-                       is set. Watchdog Timer and its
                  ister 'f'.                                                 prescaler are cleared.
                                                                             The processor is put into SLEEP
                          C          Register f                              mode with the oscillator stopped.

Words:            1                                                          1
Cycles:
Example           1                                                          1

                     RLF          REG1,0                                     SLEEP

                  Before Instruction      1110 0110
                                          0
                               REG1 =
                                          1110 0110
                             C       =    1100 1100
                                          1
                  After Instruction

                             REG1 =

                             W       =

                             C       =

1999 Microchip Technology Inc.                                                                DS30561B-page 79
PIC12C67X

SUBLW         Subtract W from Literal                   SUBWF         Subtract W from f
Syntax:       [ label ] SUBLW k                         Syntax:       [ label ] SUBWF f,d
Operands:     0  k  255                                 Operands:     0  f  127
Operation:    k - (W)  (W)                              Operation:    d  [0,1]
Status        C, DC, Z                                  Status        (f) - (W)  (dest)
Affected:                                               Affected:     C, DC, Z
Encoding:                                               Encoding:
Description:      11 110x kkkk kkkk                     Description:

Words:        The W register is subtracted (2's         Words:           00 0010 dfff ffff
Cycles:       complement method) from the eight         Cycles:
Example 1:    bit literal 'k'. The result is placed in  Example 1:    Subtract (2's complement method) W
              the W register.                                         register from register 'f'. If 'd' is 0, the
Example 2:                                              Example 2:    result is stored in the W register. If 'd'
              1                                                       is 1, the result is stored back in regis-
Example 3:                                              Example 3:    ter 'f'.

              1                                                       1

              SUBLW 0x02                                              1

              Before Instruction                                      SUBWF REG1,1

                  W= 1                                                Before Instruction
                  C= ?

              After Instruction                                          REG1  =3
                                                                         W     =2
                  W= 1                                                   C     =?
                  C = 1; result is positive
                                                                      After Instruction

              Before Instruction                                         REG1  =1
                                                                         W     =2
                  W= 2                                                   C     = 1; result is positive
                  C= ?

              After Instruction                                       Before Instruction

                  W= 0                                                   REG1  =2
                  C = 1; result is zero                                  W     =2
                                                                         C     =?
              Before Instruction

                  W= 3                                                After Instruction
                  C= ?
                                                                         REG1  =0
              After Instruction                                          W     =2
                                                                         C     = 1; result is zero

                  W=              0xFF                                Before Instruction
                  C=              0; result is nega-
                  tive
                                                                         REG1  =1
                                                                         W     =2
                                                                         C     =?

                                                                      After Instruction

                                                                         REG1  = 0xFF
                                                                         W     =2
                                                                         C     = 0; result is negative

DS30561B-page 80                                                          1999 Microchip Technology Inc.
                                                                                  PIC12C67X

SWAPF             Swap Nibbles in f                          XORLW             Exclusive OR Literal with W
Syntax:                                                      Syntax:           [ label ] XORLW k
Operands:         [ label ] SWAPF f,d                        Operands:         0  k  255
Operation:                                                   Operation:        (W) .XOR. k  (W)
Status Affected:  0  f  127                                  Status Affected:  Z
Encoding:         d  [0,1]                                   Encoding:
Description:      (f<3:0>)  (dest<7:4>),                     Description:          11 1010 kkkk kkkk
                  (f<7:4>)  (dest<3:0>)
Words:                                                       Words:            The contents of the W register
Cycles:           None                                       Cycles:           are XOR'ed with the eight bit lit-
Example                                                      Example:          eral 'k'. The result is placed in the
                     00 1110 dfff ffff                                         W register.
                                                                               1
                  The upper and lower nibbles of                               1
                  register 'f' are exchanged. If 'd' is
                  0, the result is placed in W regis-                          XORLW 0xAF
                  ter. If 'd' is 1, the result is placed in
                  register 'f'.                                                Before Instruction

                  1                                                                            W = 0xB5

                  1                                                            After Instruction

                     SWAPF REG, 0                                                              W = 0x1A

                  Before Instruction

                        REG1 = 0xA5

                  After Instruction

                        REG1 = 0xA5

                        W             = 0x5A

  TRIS            Load TRIS Register                         XORWF             Exclusive OR W with f
Syntax:           [ label ] TRIS f                           Syntax:
Operands:         5f7                                        Operands:         [ label ] XORWF f,d
Operation:        (W)  TRIS register f;
Status Affected:  None                                       Operation:        0  f  127
Encoding:                                                    Status Affected:  d  [0,1]
Description:          00 0000 0110 0fff                      Encoding:         (W) .XOR. (f)  (dest)
                                                             Description:
Words:            The instruction is supported for                             Z
Cycles:           code compatibility with the                Words:
Example           PIC16C5X products. Since TRIS              Cycles:              00 0110 dfff ffff
                  registers are readable and writ-           Example
                  able, the user can directly address                          Exclusive OR the contents of the
                  them.                                                        W register with register 'f'. If 'd' is
                                                                               0, the result is stored in the W
                  1                                                            register. If 'd' is 1, the result is
                  1                                                            stored back in register 'f'.

                   To maintain upward compatibility                            1
                   with future PIC12C67X products,
                   do not use this instruction.                                1

                                                                               XORWF REG 1

                                                                               Before Instruction

                                                                                  REG              = 0xAF
                                                                                  W                = 0xB5

                                                                               After Instruction

                                                                                  REG              = 0x1A
                                                                                  W                = 0xB5

1999 Microchip Technology Inc.                                                                  DS30561B-page 81
PIC12C67X

NOTES:

DS30561B-page 82   1999 Microchip Technology Inc.
11.0 DEVELOPMENT SUPPORT                                             PIC12C67X

The PICmicro microcontrollers are supported with a     MPLAB allows you to:
full range of hardware and software development tools:
                                                         Edit your source files (either assembly or `C')
Integrated Development Environment                     One touch assemble (or compile) and download
   - MPLAB IDE Software
                                                           to PICmicro tools (automatically updates all
Assemblers/Compilers/Linkers                             project information)
   - MPASM Assembler                                     Debug using:
   - MPLAB-C17 and MPLAB-C18 C Compilers                   - source files
   - MPLINK/MPLIB Linker/Librarian                         - absolute listing file
                                                           - object code
Simulators
   - MPLAB-SIM Software Simulator                       The ability to use MPLAB with Microchip's simulator,
                                                        MPLAB-SIM, allows a consistent platform and the abil-
Emulators                                             ity to easily switch from the cost-effective simulator to
   - MPLAB-ICE Real-Time In-Circuit Emulator            the full featured emulator with minimal retraining.
   - PICMASTER/PICMASTER-CE In-Circuit
      Emulator                                          11.2 MPASM Assembler
   - ICEPICTM
                                                        MPASM is a full featured universal macro assembler for
In-Circuit Debugger                                   all PICmicro MCU's. It can produce absolute code
   - MPLAB-ICD for PIC16F877                            directly in the form of HEX files for device program-
                                                        mers, or it can generate relocatable objects for
Device Programmers                                    MPLINK.
   - PRO MATE II Universal Programmer
   - PICSTART Plus Entry-Level Prototype               MPASM has a command line interface and a Windows
      Programmer                                        shell and can be used as a standalone application on a
                                                        Windows 3.x or greater system. MPASM generates
Low-Cost Demonstration Boards                         relocatable object files, Intel standard HEX files, MAP
   - SIMICE                                             files to detail memory usage and symbol reference, an
   - PICDEM-1                                           absolute LST file which contains source lines and gen-
   - PICDEM-2                                           erated machine code, and a COD file for MPLAB
   - PICDEM-3                                           debugging.
   - PICDEM-17
   - SEEVAL                                            MPASM features include:
   - KEELOQ
                                                         MPASM and MPLINK are integrated into MPLAB
11.1 MPLAB Integrated Development                          projects.
          Environment Software
                                                         MPASM allows user defined macros to be created
The MPLAB IDE software brings an ease of software          for streamlined assembly.
development previously unseen in the 8-bit microcon-
troller market. MPLAB is a Windows-based applica-       MPASM allows conditional assembly for multi pur-
tion which contains:                                       pose source files.

Multiple functionality                                 MPASM directives allow complete control over the
   - editor                                                assembly process.
   - simulator
   - programmer (sold separately)                       11.3 MPLAB-C17 and MPLAB-C18
   - emulator (sold separately)                                   C Compilers

A full featured editor                                The MPLAB-C17 and MPLAB-C18 Code Development
A project manager                                     Systems are complete ANSI `C' compilers and inte-
Customizable tool bar and key mapping                 grated development environments for Microchip's
A status bar                                          PIC17CXXX and PIC18CXXX family of microcontrol-
On-line help                                          lers, respectively. These compilers provide powerful
                                                        integration capabilities and ease of use not found with
                                                        other compilers.

                                                        For easier source level debugging, the compilers pro-
                                                        vide symbol information that is compatible with the
                                                        MPLAB IDE memory display.

1999 Microchip Technology Inc.                        DS30561B-page 83
PIC12C67X                                                   Interchangeable processor modules allow the system
                                                            to be easily reconfigured for emulation of different pro-
11.4 MPLINK/MPLIB Linker/Librarian                          cessors. The universal architecture of the MPLAB-ICE
                                                            allows expansion to support new PICmicro microcon-
MPLINK is a relocatable linker for MPASM and                trollers.
MPLAB-C17 and MPLAB-C18. It can link relocatable
objects from assembly or C source files along with pre-     The MPLAB-ICE Emulator System has been designed
compiled libraries using directives from a linker script.   as a real-time emulation system with advanced fea-
                                                            tures that are generally found on more expensive devel-
MPLIB is a librarian for pre-compiled code to be used       opment tools. The PC platform and Microsoft Windows
with MPLINK. When a routine from a library is called        3.x/95/98 environment were chosen to best make these
from another source file, only the modules that contains    features available to you, the end user.
that routine will be linked in with the application. This
allows large libraries to be used efficiently in many dif-  MPLAB-ICE 2000 is a full-featured emulator system
ferent applications. MPLIB manages the creation and         with enhanced trace, trigger, and data monitoring fea-
modification of library files.                              tures. Both systems use the same processor modules
                                                            and will operate across the full operating speed range
MPLINK features include:                                    of the PICmicro MCU.

MPLINK works with MPASM and MPLAB-C17                     11.7 PICMASTER/PICMASTER CE
   and MPLAB-C18.
                                                            The PICMASTER system from Microchip Technology is
MPLINK allows all memory areas to be defined as           a full-featured, professional quality emulator system.
   sections to provide link-time flexibility.               This flexible in-circuit emulator provides a high-quality,
                                                            universal platform for emulating Microchip 8-bit
MPLIB features include:                                     PICmicro microcontrollers (MCUs). PICMASTER sys-
                                                            tems are sold worldwide, with a CE compliant model
MPLIB makes linking easier because single librar-         available for European Union (EU) countries.
   ies can be included instead of many smaller files.
                                                            11.8 ICEPIC
MPLIB helps keep code maintainable by grouping
   related modules together.                                ICEPIC is a low-cost in-circuit emulation solution for the
                                                            Microchip Technology PIC16C5X, PIC16C6X,
MPLIB commands allow libraries to be created              PIC16C7X, and PIC16CXXX families of 8-bit one-time-
   and modules to be added, listed, replaced,               programmable (OTP) microcontrollers. The modular
   deleted, or extracted.                                   system can support different subsets of PIC16C5X or
                                                            PIC16CXXX products through the use of
11.5 MPLAB-SIM Software Simulator                           interchangeable personality modules or daughter
                                                            boards. The emulator is capable of emulating without
The MPLAB-SIM Software Simulator allows code                target application circuitry being present.
development in a PC host environment by simulating
the PICmicro series microcontrollers on an instruction      11.9 MPLAB-ICD In-Circuit Debugger
level. On any given instruction, the data areas can be
examined or modified and stimuli can be applied from        Microchip's In-Circuit Debugger, MPLAB-ICD, is a pow-
a file or user-defined key press to any of the pins. The    erful, low-cost run-time development tool. This tool is
execution can be performed in single step, execute until    based on the flash PIC16F877 and can be used to
break, or trace mode.                                       develop for this and other PICmicro microcontrollers
                                                            from the PIC16CXXX family. MPLAB-ICD utilizes the
MPLAB-SIM fully supports symbolic debugging using           In-Circuit Debugging capability built into the
MPLAB-C17 and MPLAB-C18 and MPASM. The Soft-                PIC16F87X. This feature, along with Microchip's In-Cir-
ware Simulator offers the flexibility to develop and        cuit Serial Programming protocol, offers cost-effective
debug code outside of the laboratory environment mak-       in-circuit flash programming and debugging from the
ing it an excellent multi-project software development      graphical user interface of the MPLAB Integrated
tool.                                                       Development Environment. This enables a designer to
                                                            develop and debug source code by watching variables,
11.6 MPLAB-ICE High Performance                             single-stepping and setting break points. Running at
           Universal In-Circuit Emulator with               full speed enables testing hardware in real-time. The
           MPLAB IDE                                        MPLAB-ICD is also a programmer for the flash
                                                            PIC16F87X family.
The MPLAB-ICE Universal In-Circuit Emulator is
intended to provide the product development engineer
with a complete microcontroller design tool set for
PICmicro microcontrollers (MCUs). Software control of
MPLAB-ICE is provided by the MPLAB Integrated
Development Environment (IDE), which allows editing,
"make" and download, and source debugging from a
single environment.

DS30561B-page 84                                             1999 Microchip Technology Inc.
11.10 PRO MATE II Universal Programmer                                 PIC12C67X

The PRO MATE II Universal Programmer is a full-fea-       the PICDEM-1 board, on a PRO MATE II or
tured programmer capable of operating in stand-alone      PICSTART-Plus programmer, and easily test firm-
mode as well as PC-hosted mode. PRO MATE II is CE         ware. The user can also connect the PICDEM-1
compliant.                                                board to the MPLAB-ICE emulator and download the
                                                          firmware to the emulator for testing. Additional proto-
The PRO MATE II has programmable VDD and VPP              type area is available for the user to build some addi-
supplies which allows it to verify programmed memory      tional hardware and connect it to the microcontroller
at VDD min and VDD max for maximum reliability. It has    socket(s). Some of the features include an RS-232
an LCD display for instructions and error messages,       interface, a potentiometer for simulated analog input,
keys to enter commands and a modular detachable           push-button switches and eight LEDs connected to
socket assembly to support various package types. In      PORTB.
stand-alone mode the PRO MATE II can read, verify or
program PICmicro devices. It can also set code-protect    11.14 PICDEM-2 Low-Cost PIC16CXX
bits in this mode.                                                  Demonstration Board

11.11 PICSTART Plus Entry Level                           The PICDEM-2 is a simple demonstration board that
          Development System                              supports the PIC16C62, PIC16C64, PIC16C65,
                                                          PIC16C73 and PIC16C74 microcontrollers. All the
The PICSTART programmer is an easy-to-use, low-           necessary hardware and software is included to
cost prototype programmer. It connects to the PC via      run the basic demonstration programs. The user
one of the COM (RS-232) ports. MPLAB Integrated           can program the sample microcontrollers provided
Development Environment software makes using the          with the PICDEM-2 board, on a PRO MATE II pro-
programmer simple and efficient.                          grammer or PICSTART-Plus, and easily test firmware.
                                                          The MPLAB-ICE emulator may also be used with the
PICSTART Plus supports all PICmicro devices with up       PICDEM-2 board to test firmware. Additional prototype
to 40 pins. Larger pin count devices such as the          area has been provided to the user for adding addi-
PIC16C92X, and PIC17C76X may be supported with            tional hardware and connecting it to the microcontroller
an adapter socket. PICSTART Plus is CE compliant.         socket(s). Some of the features include a RS-232 inter-
                                                          face, push-button switches, a potentiometer for simu-
11.12 SIMICE Entry-Level                                  lated analog input, a Serial EEPROM to demonstrate
          Hardware Simulator                              usage of the I2C bus and separate headers for connec-
                                                          tion to an LCD module and a keypad.
SIMICE is an entry-level hardware development sys-
tem designed to operate in a PC-based environment         11.15 PICDEM-3 Low-Cost PIC16CXXX
with Microchip's simulator MPLAB-SIM. Both SIMICE                   Demonstration Board
and MPLAB-SIM run under Microchip Technology's
MPLAB Integrated Development Environment (IDE)            The PICDEM-3 is a simple demonstration board that
software. Specifically, SIMICE provides hardware sim-     supports the PIC16C923 and PIC16C924 in the PLCC
ulation for Microchip's PIC12C5XX, PIC12CE5XX, and        package. It will also support future 44-pin PLCC
PIC16C5X families of PICmicro 8-bit microcontrollers.     microcontrollers with a LCD Module. All the neces-
SIMICE works in conjunction with MPLAB-SIM to pro-        sary hardware and software is included to run the
vide non-real-time I/O port emulation. SIMICE enables     basic demonstration programs. The user can pro-
a developer to run simulator code for driving the target  gram the sample microcontrollers provided with
system. In addition, the target system can provide input  the PICDEM-3 board, on a PRO MATE II program-
to the simulator code. This capability allows for simple  mer or PICSTART Plus with an adapter socket, and
and interactive debugging without having to manually      easily test firmware. The MPLAB-ICE emulator may
generate MPLAB-SIM stimulus files. SIMICE is a valu-      also be used with the PICDEM-3 board to test firm-
able debugging tool for entry-level system develop-       ware. Additional prototype area has been provided to
ment.                                                     the user for adding hardware and connecting it to the
                                                          microcontroller socket(s). Some of the features include
11.13 PICDEM-1 Low-Cost PICmicro                          an RS-232 interface, push-button switches, a potenti-
          Demonstration Board                             ometer for simulated analog input, a thermistor and
                                                          separate headers for connection to an external LCD
The PICDEM-1 is a simple board which demonstrates         module and a keypad. Also provided on the PICDEM-3
the capabilities of several of Microchip's microcontrol-  board is an LCD panel, with 4 commons and 12 seg-
lers. The microcontrollers supported are: PIC16C5X        ments, that is capable of displaying time, temperature
(PIC16C54 to PIC16C58A), PIC16C61, PIC16C62X,             and day of the week. The PICDEM-3 provides an addi-
PIC16C71, PIC16C8X, PIC17C42, PIC17C43 and                tional RS-232 interface and Windows 3.1 software for
PIC17C44. All necessary hardware and software is          showing the demultiplexed LCD signals on a PC. A sim-
included to run basic demo programs. The users can        ple serial interface allows the user to construct a hard-
program the sample microcontrollers provided with         ware demultiplexer for the LCD signals.

1999 Microchip Technology Inc.                                                                                 DS30561B-page 85
PIC12C67X

11.16 PICDEM-17

The PICDEM-17 is an evaluation board that demon-
strates the capabilities of several Microchip microcon-
trollers, including PIC17C752, PIC17C756,
PIC17C762, and PIC17C766. All necessary hardware
is included to run basic demo programs, which are sup-
plied on a 3.5-inch disk. A programmed sample is
included, and the user may erase it and program it with
the other sample programs using the PRO MATE II or
PICSTART Plus device programmers and easily debug
and test the sample code. In addition, PICDEM-17 sup-
ports down-loading of programs to and executing out of
external FLASH memory on board. The PICDEM-17 is
also usable with the MPLAB-ICE or PICMASTER emu-
lator, and all of the sample programs can be run and
modified using either emulator. Additionally, a gener-
ous prototype area is available for user hardware.

11.17 SEEVAL Evaluation and Programming
           System

The SEEVAL SEEPROM Designer's Kit supports all
Microchip 2-wire and 3-wire Serial EEPROMs. The kit
includes everything necessary to read, write, erase or
program special features of any Microchip SEEPROM
product including Smart SerialsTM and secure serials.
The Total EnduranceTM Disk is included to aid in trade-
off analysis and reliability calculations. The total kit can
significantly reduce time-to-market and result in an
optimized system.

11.18 KEELOQ Evaluation and
           Programming Tools

KEELOQ evaluation and programming tools support
Microchips HCS Secure Data Products. The HCS eval-
uation kit includes an LCD display to show changing
codes, a decoder to decode transmissions, and a pro-
gramming interface to program test transmitters.

DS30561B-page 86                                              1999 Microchip Technology Inc.
1999 Microchip Technology Inc.                                                                                  PIC12CXXX                                                                                                                                                                                                                          TABLE 11-1: DEVELOPMENT TOOLS FROM MICROCHIP
                                                                                                                              PIC14000
                                                                                                                                           PIC16C5X                                                                                                                                                                                          
                                                                                                                                                       PIC16C6X

                                                                                                                                                                    PIC16CXXX
                                                                                                                                                                                PIC16F62X
                                                                                                                                                                                             PIC16C7X
                                                                                                                                                                                                         PIC16C7XX
                                                                                                                                                                                                                      PIC16C8X
                                                                                                                                                                                                                                  PIC16F8XX
                                                                                                                                                                                                                                               PIC16C9XX
                                                                                                                                                                                                                                                           PIC17C4X
                                                                                                                                                                                                                                                                        PIC17C7XX
                                                                                                                                                                                                                                                                                     PIC18CXX2

                                                                                                                                                                                                                                                                                              24CXX/
                                                                                                                                                                                                                                                                                                  25CXX/
                                                                                                                                                                                                                                                                                                     93CXX
                                                                                                                                                                                                                                                                                                              HCSXXX
                                                                                                                                                                                                                                                                                                                          MCRFXXX
                                                                                                                                                                                                                                                                                                                                       MCP2510

                                  Programmers Debugger Emulators Software Tools  MPLAB Integrated                                                                                                   
                                                                                 Development Environment
                                                                                 MPLAB C17 Compiler                                                                            
                                                                                 MPLAB C18 Compiler
                                                                                                                                                             **
                                                                                 MPASM/MPLINK
                                                                                 MPLAB-ICE                                                      *                          *               

                                                                                 PICMASTER/PICMASTER-CE

                                                                                 ICEPICTM Low-Cost
                                                                                 In-Circuit Emulator

                                                                                 MPLAB-ICD In-Circuit
                                                                                 Debugger

                                                                                 PICSTARTPlus                                                     **
                                                                                 Low-Cost Universal Dev. Kit                                                                                                 
                                                                                                                                                   
                                                                                 PRO MATE II                                                                **                                                                      
                                                                                 Universal Programmer

                                                                                 SIMICE                                                                                    
                                                                                 PICDEM-1
                                                                                 PICDEM-2                                                                                 

                                                                                                                                                                                                                          

                                  Demo Boards and Eval Kits                      PICDEM-3                                                                                                         

                                                                                 PICDEM-14A                              

                                                                                 PICDEM-17                                                                                                                        
                                                                                 KEELOQ Evaluation Kit
                                                                                                                                                                                                                                      
                                                                                 KEELOQ Transponder Kit                                                                                                                                                                                                                                                                                            PIC12C67X

                                                                                 microIDTM Programmer's Kit                                                                                                                              

                                                                                 125 kHz microID Developer's Kit

DS30561B-page 87                                                                 125 kHz Anticollision microID
                                                                                 Developer's Kit

                                                                                 13.56 MHz Anticollision microID
                                                                                 Developer's Kit

                                                                                 MCP2510 CAN Developer's Kit

                                   * Contact the Microchip Technology Inc. web site at www.microchip.com for information on how to use the MPLAB-ICD In-Circuit Debugger (DV164001) with PIC16C62, 63, 64, 65, 72, 73, 74, 76, 77
                                  ** Contact Microchip Technology Inc. for availability date.
                                    Development tool is available on select devices.
PIC12C67X

NOTES:

DS30561B-page 88   1999 Microchip Technology Inc.
                                                PIC12C67X

12.0 ELECTRICAL SPECIFICATIONS FOR PIC12C67X

Absolute Maximum Ratings
Ambient temperature under bias...............................................................................................................40 to +125C
Storage temperature ............................................................................................................................. 65C to +150C
Voltage on any pin with respect to VSS (except VDD and MCLR)................................................... 0.3V to (VDD + 0.3V)
Voltage on VDD with respect to VSS ................................................................................................................ 0 to +7.0V
Voltage on MCLR with respect to VSS (Note 2)..................................................................................................0 to +14V
Total power dissipation (Note 1)...........................................................................................................................700 mW
Maximum current out of VSS pin ...........................................................................................................................200 mA
Maximum current into VDD pin ..............................................................................................................................150 mA
Input clamp current, IIK (VI < 0 or VI > VDD)..................................................................................................................... 20 mA
Output clamp current, IOK (VO < 0 or VO > VDD) ............................................................................................................. 20 mA
Maximum output current sunk by any I/O pin..........................................................................................................25 mA
Maximum output current sourced by any I/O pin ....................................................................................................25 mA
Maximum current sunk by GPIO pins combined ...................................................................................................100 mA
Maximum current sourced by GPIO pins combined..............................................................................................100 mA

   Note 1: Power dissipation is calculated as follows: Pdis = VDD x {IDD -  IOH} +  {(VDD - VOH) x IOH} + (VOl x IOL).
  NOTICE: 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 device 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.

1999 Microchip Technology Inc.  DS30561B-page 89
PIC12C67X

FIGURE 12-1: PIC12C67X VOLTAGE-FREQUENCY GRAPH, -40C  TA < 0C, +70C                      6.0

                     5.5

           5.0
VDD 4.5
(Volts)

           4.0
           3.5

           3.0
           2.5

2.0                  4  10               20                     25
     0

                        Frequency (MHz)

Note 1: The shaded region indicates the permissible combinations of voltage and frequency.

       2: The maximum rated speed of the part limits the permissible combinations of voltage and frequency.
            Please reference the Product Identification System section for the maximum rated speed of the parts.

FIGURE 12-2: PIC12C67X VOLTAGE-FREQUENCY GRAPH, 0C  TA  +70C

6.0

5.5

5.0

VDD 4.5
(Volts)

           4.0

3.5

3.0

2.5

                  0  4      10           20                     25

                        Frequency (MHz)

Note 1: The shaded region indicates the permissible combinations of voltage and frequency.

       2: The maximum rated speed of the part limits the permissible combinations of voltage and frequency.
            Please reference the Product Identification System section for the maximum rated speed of the parts.

DS30561B-page 90                         1999 Microchip Technology Inc.
                                                          PIC12C67X

FIGURE 12-3: PIC12LC67X VOLTAGE-FREQUENCY GRAPH, -40C  TA  +85C
                     6.0

                     5.5

                     5.0
                     4.5
           VDD
          (Volts) 4.0

                     3.5

                     3.0

                     2.5

2.0                               4  10               20           25
     0

                                     Frequency (MHz)

Note 1: The shaded region indicates the permissible combinations of voltage and frequency.

       2: The maximum rated speed of the part limits the permissible combinations of voltage and frequency.
            Please reference the Product Identification System section for the maximum rated speed of the parts.

1999 Microchip Technology Inc.                                   DS30561B-page 91
PIC12C67X

12.1 DC Characteristics: PIC12C671/672 (Commercial, Industrial, Extended)
                                           PIC12CE673/674 (Commercial, Industrial, Extended)

DC CHARACTERISTICS                     Standard Operating Conditions (unless otherwise specified)

                                       Operating Temperature 0C  TA  +70C (commercial)
                                                                         40C  TA  +85C (industrial)
                                                                         40C  TA  +125C (extended)

Parm        Characteristic        Sym Min Typ(1) Max Units               Conditions
No.

D001 Supply Voltage               VDD 3.0                5.5 V

D002 RAM Data Retention           VDR              1.5*  V Device in SLEEP mode

            Voltage(2)

D003 VDD Start Voltage to ensure VPOR              VSS   V See section on Power-on Reset for details

            Power-on Reset

D004 VDD Rise Rate to ensure      SVDD 0.05*             V/ms See section on Power-on Reset for details
           Power-on Reset

D010 Supply Current(3)            IDD  -- 1.2 2.5 mA FOSC = 4MHz, VDD = 3.0V
D010C
                                                                XT and EXTRC mode (Note 4)
D010A
                                       -- 1.2 2.5 mA FOSC = 4MHz, VDD = 3.0V

                                                                INTRC mode (Note 6)

                                       -- 2.2 8 mA FOSC = 10MHz, VDD = 5.5V

                                                                HS mode

                                       -- 19 29 A FOSC = 32kHz, VDD = 3.0V, WDT disabled

                                                                LP mode, Commercial Temperature

                                       -- 19 37 A FOSC = 32kHz, VDD = 3.0V, WDT disabled

                                                                LP mode, Industrial Temperature

                                       -- 32 60 A FOSC = 32kHz, VDD = 3.0V, WDT disabled

                                                                LP mode, Extended Temperature

D020 Power-down Current(5)        IPD  -- 0.25 6 A VDD = 3.0V, Commercial, WDT disabled

D021                                   -- 0.25 7 A VDD = 3.0V, Industrial, WDT disabled

D021B                                  -- 2 14 A VDD = 3.0V, Extended, WDT disabled

                                       -- 0.5 8 A VDD = 5.5V, Commercial, WDT disabled

                                       -- 0.8 9 A VDD = 5.5V, Industrial, WDT disabled

                                       -- 3 16 A VDD = 5.5V, Extended, WDT disabled

D022 Watchdog Timer Current       IWDT --          2.2 5 A VDD = 3.0V, Commercial
                                               --  2.2 6 A VDD = 3.0V, Industrial
                                               --   4 11 A VDD = 3.0V, Extended

D028        Supply Current(3)     IEE  -- 0.1 0.2 mA FOSC = 4MHz, VDD = 5.5V, SCL = 400kHz
            During read/write to                                          For PIC12CE673/674 only
            EEPROM peripheral

        *   These parameters are characterized but not tested.
Note 1:     Data in Typical ("Typ") column is based on characterization results at 25C. This data is for design guidance only and is not
            tested.
        2:  This is the limit to which VDD can be lowered in SLEEP mode without losing RAM data.
        3:  The supply current is mainly a function of the operating voltage and frequency. Other factors such as bus loading, oscillator
            type, bus rate, internal code execution pattern and temperature also have an impact on the current consumption.
        4:
        5:  a) The test conditions for all IDD measurements in active operation mode are:
        6:      OSC1 = external square wave, from rail-to-rail; all I/O pins tristated, pulled to VSS, T0CKI = VDD,
                MCLR = VDD; WDT disabled.

            b) For standby current measurements, the conditions are the same, except that the device is in SLEEP mode.

            For EXTRC osc configuration, current through REXT is not included. The current through the resistor can be estimated by the
            formula:
            Ir = VDD/2REXT (mA) with REXT in kOhm.
            The power-down current in SLEEP mode does not depend on the oscillator type. Power-down current is measured with the
            part in SLEEP mode, with all I/O pins in hi-impedance state and tied to VDD or VSS.
            INTRC calibration value is for 4MHz nominal at 5V, 25C.

DS30561B-page 92                                                          1999 Microchip Technology Inc.
                                                               PIC12C67X

DC CHARACTERISTICS                   Standard Operating Conditions (unless otherwise specified)

                                     Operating Temperature 0C  TA  +70C (commercial)
                                                                       40C  TA  +85C (industrial)
                                                                       40C  TA  +125C (extended)

Parm        Characteristic           Sym Min Typ(1) Max Units  Conditions
No.

            LP Oscillator Operating  FOSC 0  200 kHz All temperatures
                                             4(6) MHz All temperatures
            Frequency                         4 MHz All temperatures
                                             10 MHz All temperatures
            INTRC/EXTRC Oscillator   --

            Operating Frequency

            XT Oscillator Operating  0

            Frequency

            HS Oscillator Operating  0

            Frequency

        *   These parameters are characterized but not tested.
Note 1:     Data in Typical ("Typ") column is based on characterization results at 25C. This data is for design guidance only and is not
            tested.
        2:  This is the limit to which VDD can be lowered in SLEEP mode without losing RAM data.
        3:  The supply current is mainly a function of the operating voltage and frequency. Other factors such as bus loading, oscillator
            type, bus rate, internal code execution pattern, and temperature also have an impact on the current consumption.
        4:
        5:  a) The test conditions for all IDD measurements in active operation mode are:
        6:      OSC1 = external square wave, from rail-to-rail; all I/O pins tristated, pulled to VSS, T0CKI = VDD,
                MCLR = VDD; WDT disabled.

            b) For standby current measurements, the conditions are the same, except that the device is in SLEEP mode.

            For EXTRC osc configuration, current through REXT is not included. The current through the resistor can be estimated by the
            formula:
            Ir = VDD/2REXT (mA) with REXT in kOhm.
            The power-down current in SLEEP mode does not depend on the oscillator type. Power-down current is measured with the
            part in SLEEP mode, with all I/O pins in hi-impedance state and tied to VDD or VSS.
            INTRC calibration value is for 4MHz nominal at 5V, 25C.

1999 Microchip Technology Inc.                                        DS30561B-page 93
PIC12C67X

12.2 DC Characteristics: PIC12LC671/672 (Commercial, Industrial)
                                           PIC12LCE673/674 (Commercial, Industrial)

DC CHARACTERISTICS                         Standard Operating Conditions (unless otherwise specified)
                                           Operating temperature 0C  TA  +70C (commercial)

                                                                         40C  TA  +85C (industrial)

Param       Characteristic           Sym Min Typ Max Units                           Conditions
  No.

D001        Supply Voltage           VDD 2.5          5.5 V
D002
            RAM Data Retention       VDR        1.5*  V Device in SLEEP mode
D003
            Voltage(2)
D004
            VDD Start Voltage to     VPOR       VSS   V See section on Power-on Reset for details
D010
D010C       ensure Power-on Reset
D010A
            VDD Rise Rate to ensure SVDD 0.05*        V/ms See section on Power-on Reset for details
D020        Power-on Reset
D021
D021B       Supply Current(3)        IDD   -- 0.4 2.1 mA FOSC = 4MHz, VDD = 2.5V

                                                             XT and EXTRC mode (Note 4)

                                           -- 0.4 2.1 mA FOSC = 4MHz, VDD = 2.5V

                                                             INTRC mode (Note 6)

                                           -- 15 33 A FOSC = 32kHz, VDD = 2.5V, WDT disabled

                                                             LP mode, Industrial Temperature

            Power-down Current(5) IPD

                                           -- 0.2 5 A VDD = 2.5V, Commercial
                                           -- 0.2 6 A VDD = 2.5V, Industrial

            Watchdog Timer Current IWDT -- 2.0 4 A VDD = 2.5V, Commercial
                                                                       2.0 6 A VDD = 2.5V, Industrial

            LP Oscillator Operating FOSC 0            200 kHz All temperatures
                                                      4(6) MHz All temperatures
            Frequency                                  4 MHz All temperatures
                                                      10 MHz All temperatures
            INTRC/EXTRC Oscillator         --

            Operating Frequency

            XT Oscillator Operating        0

            Frequency

            HS Oscillator Operating        0

            Frequency

        *   These parameters are characterized but not tested.
Note 1:     Data in Typical ("Typ") column is based on characterization results at 25C. This data is for design guidance only and is not
            tested.
        2:  This is the limit to which VDD can be lowered in SLEEP mode without losing RAM data.
        3:  The supply current is mainly a function of the operating voltage and frequency. Other factors such as bus loading, oscillator
            type, bus rate, internal code execution pattern, and temperature also have an impact on the current consumption.
        4:
            a) The test conditions for all IDD measurements in active operation mode are:
        5:      OSC1 = external square wave, from rail-to-rail; all I/O pins tristated, pulled to VSS, T0CKI = VDD,
        6:      MCLR = VDD; WDT disabled.

            b) For standby current measurements, the conditions are the same, except that the device is in SLEEP mode.

            For EXTRC osc configuration, current through REXT is not included. The current through the resistor can be estimated by the
            formula:
            Ir = VDD/2REXT (mA) with REXT in kOhm.
            The power-down current in SLEEP mode does not depend on the oscillator type. Power-down current is measured with the
            part in SLEEP mode, with all I/O pins in hi-impedance state and tied to VDD or VSS.
            INTRC calibration value is for 4MHz nominal at 5V, 25C.

DS30561B-page 94                                                                      1999 Microchip Technology Inc.
                                                                                   PIC12C67X

12.3 DC CHARACTERISTICS:                        PIC12C671/672 (Commercial, Industrial, Extended)
                                                PIC12CE673/674 (Commercial, Industrial, Extended)

                                                Standard Operating Conditions (unless otherwise specified)

DC CHARACTERISTICS                              Operating temperature 0C  TA  +70C (commercial)
                                                                                  40C  TA  +85C (industrial)
                                                                                  40C  TA  +125C (extended)

                                                Operating voltage VDD range as described in DC spec Section 12.1 and

                                                Section 12.2.

Param                  Characteristic           Sym            Min   Typ Max Units          Conditions
  No.

            Input Low Voltage

            I/O ports                           VIL

D030        with TTL buffer                                    VSS   -- 0.8V V For 4.5V  VDD  5.5V

                                                               VSS   -- 0.15VDD V otherwise

D031        with Schmitt Trigger buffer                        VSS   -- 0.2VDD V

D032 MCLR, GP2/T0CKI/AN2/INT                                   VSS   -- 0.2VDD V
           (in EXTRC mode)

D033 OSC1 (in EXTRC mode)                                      VSS   -- 0.2VDD      Note 1

D033 OSC1 (in XT, HS, and LP)                                  VSS   -- 0.3VDD V Note 1

            Input High Voltage

            I/O ports                           VIH                  --

D040        with TTL buffer                                    2.0V  -- VDD     V 4.5V  VDD  5.5V

D040A                                                 0.25VDD + 0.8V -- VDD     V otherwise

D041        with Schmitt Trigger buffer               0.8VDD         -- VDD     V For entire VDD range

D042 MCLR, GP2/T0CKI/AN2/INT                          0.8VDD         -- VDD     V

D042A OSC1 (XT, HS, and LP)                           0.7VDD         -- VDD     V Note 1

D043 OSC1 (in EXTRC mode)                             0.9VDD         -- VDD     V

            Input Leakage Current (Notes 2, 3)

D060 I/O ports                                  IIL            --    --  +1     A VSS  VPIN  VDD, Pin at

                                                                                    hi-impedance

D061 GP3/MCLR (Note 5)                                                   +30    A VSS  VPIN  VDD

D061A GP3 (Note 6)                                                       +5     A VSS  VPIN  VDD

D062 GP2/T0CKI                                                 --    --  +5     A VSS  VPIN  VDD

D063 OSC1                                                      --    --  +5     A VSS  VPIN  VDD, XT, HS, and

                                                                                    LP osc configuration

D070 GPIO weak pull-up current (Note 4)         IPUR           50    250 400    A VDD = 5V, VPIN = VSS

            MCLR pull-up current                --             --    --  30     A VDD = 5V, VPIN = VSS

            Output Low Voltage

D080 I/O ports                                  VOL            --    -- 0.6     V IOL = 8.5 mA, VDD = 4.5V,

                                                                                    40C to +85C

D080A                                                          --    -- 0.6     V IOL = 7.0 mA, VDD = 4.5V,

                                                                                    40C to +125C

D083 OSC2/CLKOUT                                               --    -- 0.6     V IOL = 1.6 mA, VDD = 4.5V,

                                                                                    40C to +85C

D083A                                                          --    -- 0.6     V IOL = 1.2 mA, VDD = 4.5V,

                                                                                    40C to +125C

            Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not
            tested.
Note 1:     In EXTRC oscillator configuration, the OSC1/CLKIN pin is a Schmitt Trigger input. It is not recommended that the PIC12C67X
            be driven with external clock in RC mode.
        2:  The leakage current on the MCLR pin is strongly dependent on the applied voltage level. The specified levels represent
            normal operating conditions. Higher leakage current may be measured at different input voltages.
        3:  Negative current is defined as coming out of the pin.
        4:  Does not include GP3. For GP3 see parameters D061 and D061A.
        5:  This spec. applies to GP3/MCLR configured as external MCLR and GP3/MCLR configured as input with internal pull-up
            enabled.
        6:  This spec. applies when GP3/MCLR is configured as an input with pull-up disabled. The leakage current of the MCLR circuit
            is higher than the standard I/O logic.

1999 Microchip Technology Inc.                                                            DS30561B-page 95
PIC12C67X

DC CHARACTERISTICS                      Standard Operating Conditions (unless otherwise specified)
                                        Operating temperature 0C  TA  +70C (commercial)

                                                                          40C  TA  +85C (industrial)
                                                                          40C  TA  +125C (extended)
                                        Operating voltage VDD range as described in DC spec Section 12.1 and

                                        Section 12.2.

Param              Characteristic       Sym    Min        Typ Max Units         Conditions
  No.

            Output High Voltage

D090 I/O ports (Note 3)                 VOH    VDD - 0.7  --  --  V IOH = -3.0 mA, VDD = 4.5V,
D090A                                                                   40C to +85C
D092 OSC2/CLKOUT                               VDD - 0.7  --  --
                                                                  V IOH = -2.5 mA, VDD = 4.5V,
                                               VDD - 0.7  --  --         40C to +125C

                                                                  V IOH = 1.3 mA, VDD = 4.5V,
                                                                        40C to +85C

D092A                                          VDD - 0.7  --  --  V IOH = 1.0 mA, VDD = 4.5V,
                                                                        40C to +125C
           Capacitive Loading Specs on
           Output Pins

D100 OSC2 pin                           COSC2  --         --  15  pF In XT and LP modes when

                                                                         external clock is used to drive

                                                                         OSC1.

D101 All I/O pins                       CIO    --         --  50  pF

            Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not
            tested.
Note 1:     In EXTRC oscillator configuration, the OSC1/CLKIN pin is a Schmitt Trigger input. It is not recommended that the PIC12C67X
            be driven with external clock in RC mode.
        2:  The leakage current on the MCLR pin is strongly dependent on the applied voltage level. The specified levels represent
            normal operating conditions. Higher leakage current may be measured at different input voltages.
        3:  Negative current is defined as coming out of the pin.
        4:  Does not include GP3. For GP3 see parameters D061 and D061A.
        5:  This spec. applies to GP3/MCLR configured as external MCLR and GP3/MCLR configured as input with internal pull-up
            enabled.
        6:  This spec. applies when GP3/MCLR is configured as an input with pull-up disabled. The leakage current of the MCLR circuit
            is higher than the standard I/O logic.

DS30561B-page 96                                                   1999 Microchip Technology Inc.
                                                                               PIC12C67X

12.4 DC CHARACTERISTICS:                        PIC12LC671/672 (Commercial, Industrial)
                                                PIC12LCE673/674 (Commercial, Industrial)

                                                Standard Operating Conditions (unless otherwise specified)

                                                Operating temperature     0C  TA  +70C (commercial)
                                                                       40C  TA  +85C (industrial)
DC CHARACTERISTICS

                                                Operating voltage VDD range as described in DC spec Section 12.1 and

                                                Section 12.2.

Param       Characteristic                      Sym            Min     Typ Max Units       Conditions
  No.

            Input Low Voltage                   VIL
            I/O ports
D030                                                           VSS     -- 0.8V V For 4.5V  VDD  5.5V
                 with TTL buffer

                                                               VSS     -- 0.15VDD V otherwise

D031             with Schmitt Trigger buffer                   VSS     -- 0.2VDD V
D032        MCLR, GP2/T0CKI/AN2/INT
            (in EXTRC mode)                                    VSS     -- 0.2VDD V
D033        OSC1 (in EXTRC mode)
D033        OSC1 (in XT, HS, and LP)                           VSS     -- 0.2VDD V Note 1
            Input High Voltage
D040        I/O ports                                          VSS     -- 0.3VDD V Note 1
D040A
D041             with TTL buffer                VIH                    --
D042
D042A            with Schmitt Trigger buffer                   2.0V    -- VDD  V 4.5V  VDD  5.5V
D043        MCLR, GP2/T0CKI/AN2/INT                                            V otherwise
            OSC1 (XT, HS, and LP)                     0.25VDD + 0.8V -- VDD    V For entire VDD range
D060        OSC1 (in EXTRC mode)                                               V
            Input Leakage Current (Notes 2, 3)                 0.8VDD  -- VDD  V Note 1
            I/O ports                                                          V
                                                               0.8VDD  -- VDD

                                                               0.7VDD  -- VDD

                                                               0.9VDD  -- VDD

                                                 IIL           --      -- +1   A Vss  VPIN  VDD, Pin at

                                                IPUR                                  hi-impedance
                                                 --
D061        GP3/MCLR (Note 5)                                              +30 A Vss  VPIN  VDD
D061A       GP3 (Note 6)
D062        GP2/T0CKI                                                      +5  A Vss  VPIN  VDD
D063        OSC1
                                                               --      -- +5   A Vss  VPIN  VDD

                                                               --      -- +5   A Vss  VPIN  VDD, XT, HS and

                                                                                      LP osc configuration

D070        GPIO weak pull-up current (Note 4)                 50      250 400 A VDD = 5V, VPIN = VSS
D080        MCLR pull-up current
            Output Low Voltage                                 --      -- 30   A VDD = 5V, VPIN = VSS
            I/O ports
                                                VOL            --      -- 0.6  V IOL = 8.5 mA, VDD = 4.5V,

                                                                                      40C to +85C

D080A                                                          --      -- 0.6  V IOL = 7.0 mA, VDD = 4.5V,

                                                                                      40C to +125C

D083 OSC2/CLKOUT                                               --      -- 0.6  V IOL = TBD, VDD = 4.5V,

                                                                                      40C to +85C

D083A                                                          --      -- 0.6  V IOL = TBD, VDD = 4.5V,

                                                                                      40C to +125C

            Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not
            tested.
Note 1:     In EXTRC oscillator configuration, the OSC1/CLKIN pin is a Schmitt Trigger input. It is not recommended that the PIC12C67X
            be driven with external clock in RC mode.
        2:  The leakage current on the MCLR pin is strongly dependent on the applied voltage level. The specified levels represent nor-
            mal operating conditions. Higher leakage current may be measured at different input voltages.
        3:  Negative current is defined as coming out of the pin.
        4:  Does not include GP3. For GP3 see parameters D061 and D061A.
        5:  This spec. applies to GP3/MCLR configured as external MCLR and GP3/MCLR configured as input with internal pull-up
            enabled.
        6:  This spec. applies when GP3/MCLR is configured as an input with pull-up disabled. The leakage current of the MCLR circuit is
            higher than the standard I/O logic.

1999 Microchip Technology Inc.                                                           DS30561B-page 97
PIC12C67X

                                         Standard Operating Conditions (unless otherwise specified)

                                         Operating temperature  0C  TA  +70C (commercial)

DC CHARACTERISTICS                                              40C  TA  +85C (industrial)

                                         Operating voltage VDD range as described in DC spec Section 12.1 and

                                         Section 12.2.

Param              Characteristic        Sym            Min     Typ Max Units  Conditions
  No.

            Output High Voltage

D090 I/O ports (Note 3)                  VOH    VDD - 0.7       --  --  V IOH = -3.0 mA, VDD = 4.5V,
                                                                              40C to +85C

D090A                                           VDD - 0.7       --  --  V IOH = -2.5 mA, VDD = 4.5V,
                                                                               40C to +125C

D092 OSC2/CLKOUT                                VDD - 0.7       --  --  V IOH = TBD, VDD = 4.5V,
                                                                               40C to +85C

D092A                                           VDD - 0.7       --  --  V IOH = TBD, VDD = 4.5V,
                                                                               40C to +125C

            Capacitive Loading Specs on
            Output Pins

D100 OSC2 pin                            COSC2          --      -- 15   pF In XT and LP modes when
                                                                               external clock is used to drive
                                                                               OSC1.

D101 All I/O pins                        CIO            --      -- 50   pF

            Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not
            tested.
Note 1:     In EXTRC oscillator configuration, the OSC1/CLKIN pin is a Schmitt Trigger input. It is not recommended that the PIC12C67X
            be driven with external clock in RC mode.
        2:  The leakage current on the MCLR pin is strongly dependent on the applied voltage level. The specified levels represent nor-
            mal operating conditions. Higher leakage current may be measured at different input voltages.
        3:  Negative current is defined as coming out of the pin.
        4:  Does not include GP3. For GP3 see parameters D061 and D061A.
        5:  This spec. applies to GP3/MCLR configured as external MCLR and GP3/MCLR configured as input with internal pull-up
            enabled.
        6:  This spec. applies when GP3/MCLR is configured as an input with pull-up disabled. The leakage current of the MCLR circuit is
            higher than the standard I/O logic.

DS30561B-page 98                                                         1999 Microchip Technology Inc.
                                                                                        PIC12C67X

12.5 Timing Parameter Symbology

The timing parameter symbols have been created following one of the following formats:

1. TppS2ppS                                     3. TCC:ST                 (I2C specifications only)
                                                4. Ts                     (I2C specifications only)
2. TppS

T

   F         Frequency                                         T     Time

   Lowercase letters (pp) and their meanings:

pp

   cc        CCP1                                              osc   OSC1

   ck        CLKOUT                                            rd    RD

   cs        CS                                                rw    RD or WR

   di        SDI                                               sc    SCK

   do        SDO                                               ss    SS

   dt        Data in                                           t0    T0CKI

   io        I/O port                                          t1    T1CKI

   mc        MCLR                                              wr    WR

   Uppercase letters and their meanings:

S

   F         Fall                                              P     Period
                                                               R     Rise
   H         High                                              V     Valid
                                                               Z     Hi-impedance
   I         Invalid (Hi-impedance)
                                                               High  High
   L         Low                                               Low   Low

I2C only

   AA        output access

   BUF       Bus free

   TCC:ST (I2C specifications only)

CC

   HD        Hold                                              SU    Setup
                                                               STO   STOP condition
ST

   DAT       DATA input hold

   STA       START condition

FIGURE 12-4: LOAD CONDITIONS

                        Load condition 1                                  Load condition 2

                                     VDD/2

                                          RL

                       Pin                  CL                       Pin             CL
                                                                               VSS
                                     VSS

                   RL = 464          for all pins except OSC2
                   CL = 50 pF        for OSC2 output

                           15 pF

1999 Microchip Technology Inc.                                                                     DS30561B-page 99
PIC12C67X

12.6 Timing Diagrams and Specifications

FIGURE 12-5: EXTERNAL CLOCK TIMING

                   Q4                 Q1  Q2             Q3      Q4                Q1

    OSC1                              1               3       3  4   4
CLKOUT
                                              2

TABLE 12-1: CLOCK TIMING REQUIREMENTS

Parameter Sym Characteristic              Min Typ Max Units Conditions
    No.

          FOSC External CLKIN Frequency   DC --          4       MHz XT and EXTRC osc mode
                    (Note 1)              DC --
                                                         4       MHz HS osc mode (PIC12CE67X-04)

                                          DC --          10 MHz HS osc mode (PIC12CE67X-10)

                                          DC --          200 kHz LP osc mode

                   Oscillator Frequency   DC --          4       MHz EXTRC osc mode
                   (Note 1)               .455 --
                                                         4       MHz XT osc mode

                                          4   --         4       MHz HS osc mode (PIC12CE67X-04)

                                          4   --         10 MHz HS osc mode (PIC12CE67X-10)

                                          5   --         200 kHz LP osc mode

1         TOSC External CLKIN Period      250 --         --      ns XT and EXTRC osc mode

                   (Note 1)               250 --         --      ns HS osc mode (PIC12CE67X-04)

                                          100 --         --      ns HS osc mode (PIC12CE67X-10)

                                          5   --         --      s LP osc mode

                   Oscillator Period      250 --         --      ns EXTRC osc mode
                   (Note 1)
                                          250 -- 10,000 ns XT osc mode

                                          250 --         250     ns HS osc mode (PIC12CE67X-04)

                                          100 --         250     ns HS osc mode (PIC12CE67X-10)

                                          5   --         --      s LP osc mode

2         TCY Instruction Cycle Time (Note 1) 400 --     DC      ns TCY = 4/FOSC

3         TosL, External Clock in (OSC1) High 50 --      --      ns XT oscillator

          TosH or Low Time                2.5 --         --      s LP oscillator

                                          10 --          --      ns HS oscillator

4         TosR, External Clock in (OSC1) Rise -- --      25      ns XT oscillator

          TosF or Fall Time               ----           50      ns LP oscillator

                                          ----           15      ns HS oscillator

        Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and
            are not tested.

Note 1: Instruction cycle period (TCY) equals four times the input oscillator time-base period. All specified values are based
            on characterization data for that particular oscillator type under standard operating conditions with the device exe-
            cuting code. Exceeding these specified limits may result in an unstable oscillator operation and/or higher than
            expected current consumption. All devices are tested to operate at "min." values with an external clock applied to
            the OSC1/CLKIN pin.
            When an external clock input is used, the "Max." cycle time limit is "DC" (no clock) for all devices. OSC2 is discon-
            nected (has no loading) for the PIC12C67X.

DS30561B-page 100                                                    1999 Microchip Technology Inc.
                                                                                  PIC12C67X

TABLE 12-2:  CALIBRATED INTERNAL RC FREQUENCIES -PIC12C671, PIC12C672, PIC12CE673,
                                                                              PIC12CE674, PIC12LC671,
                                                                              PIC12LC672, PIC12LCE673,
                                                                              PIC12LCE674

AC Characteristics  Standard Operating Conditions (unless otherwise specified)

                    Operating Temperature         0C  TA  +70C (commercial),

                                                  40C  TA  +85C (industrial),

                                                  40C  TA  +125C (extended)

                    Operating Voltage VDD range is described in Section 10.1

Parameter    Sym                  Characteristic      Min* Typ(1) Max* Units      Conditions
    No.

                    Internal Calibrated RC Frequency  3.65 4.00 4.28 MHz VDD = 5.0V

                    Internal Calibrated RC Frequency  3.55 4.00 4.31 MHz VDD = 2.5V

      * These parameters are characterized but not tested.
Note 1: Data in the Typical ("Typ") column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only

             and are not tested.

1999 Microchip Technology Inc.                                                  DS30561B-page 101
PIC12C67X

FIGURE 12-6: CLKOUT AND I/O TIMING

                   Q4                          Q1                     Q2                              Q3

OSC1

                                     10                                                          11

CLKOUT

                                     13                          19 18                           12
                                           14                                            15               16

I/O Pin                                 17
(input)

I/O Pin            old value                                                                          new value
(output)

                                                         20, 21
           Note: Refer to Figure 12-4 for load conditions.

TABLE 12-3: CLKOUT AND I/O TIMING REQUIREMENTS

Param Sym          Characteristic                                Min Typ Max Units Conditions
  No.

10* TosH2ckL OSC1 to CLKOUT                                      --                          75  200          ns Note 1

11* TosH2ckH OSC1 to CLKOUT                                      --                          75  200          ns Note 1

12* TckR           CLKOUT rise time                              --                          35  100          ns Note 1

13* TckF           CLKOUT fall time                              --                          35  100          ns Note 1

14* TckL2ioV CLKOUT  to Port out valid                           --                          -- 0.5TCY + 20 ns Note 1

15* TioV2ckH Port in valid before CLKOUT                         TOSC + 200 --                   --           ns Note 1

16* TckH2ioI Port in hold after CLKOUT                           0                           --  --           ns Note 1

17* TosH2ioV OSC1 (Q1 cycle) to Port out valid                   --                          50  150          ns

18* TosH2ioI OSC1 (Q2 cycle) to Port PIC12C67X                   100                         --  --           ns

18A*               input invalid (I/O in hold PIC12LC67X         200                         --  --           ns

                   time)

19* TioV2osH Port input valid to OSC1 (I/O in setup              0                           --  --           ns
                         time)

20* TioR           Port output rise time       PIC12C67X         --                          10  40           ns

20A*                                           PIC12LC67X        --                          --  80           ns

21* TioF           Port output fall time       PIC12C67X         --                          10  40           ns

21A*                                           PIC12LC67X        --                          --  80           ns

22* Tinp           GP2/INT pin high or low time                  TCY                         --  --           ns

23* Trbp           GP0/GP1/GP3 change INT high or low            TCY                         --  --           ns
                   time

      *  These parameters are characterized but not tested.
         Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not
         tested.
         These parameters are asynchronous events not related to any internal clock edge.
Note 1:  Measurements are taken in EXTRC and INTRC modes where CLKOUT output is 4 x TOSC.

DS30561B-page 102                                                                                 1999 Microchip Technology Inc.
                                                                                 PIC12C67X

FIGURE 12-7: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER, AND POWER-UP
                     TIMER TIMING

        VDD

   MCLR

   Internal                                                         30

       POR

     PWRT                33
   Timeout                              32

       OSC
   Timeout

   Internal
   RESET

Watchdog                                                        34                      36
     Timer
                                                                         31
   RESET
                                                                                    34
  I/O Pins

TABLE 12-4: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER, POWER-UP TIMER

Parameter Sym Characteristic                          Min           Typ  Max Units  Conditions
    No.

   30        TmcL MCLR Pulse Width (low)                    2       --   -- s VDD = 5V, 40C to +125C

   31*       Twdt Watchdog Timer Time-out Period 7                  18   33 ms VDD = 5V, 40C to +125C

                         (No Prescaler)

   32        Tost Oscillation Start-up Timer Period -- 1024TOSC -- -- TOSC = OSC1 period

   33*       Tpwrt Power up Timer Period                    28      72   132 ms VDD = 5V, 40C to +125C

   34        TIOZ I/O Hi-impedance from MCLR                --      --   2.1 s

                         Low or Watchdog Timer Reset

*       These parameters are characterized but not tested.

        Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and

        are not tested.

1999 Microchip Technology Inc.                                                    DS30561B-page 103
PIC12C67X

FIGURE 12-8: TIMER0 CLOCK TIMINGS
              GP2/T0CKI

                                     40                          41

                                                        42

             TMR0

       Note: Refer to Figure 12-4 for load conditions.

TABLE 12-5: TIMER0 AND TIMER1 EXTERNAL CLOCK REQUIREMENTS

Param       Sym                Characteristic                    Min          Typ Max Units Conditions
  No.

40*         Tt0H T0CKI High Pulse Width No Prescaler             0.5TCY + 20  -- -- ns Must also meet

                                     With Prescaler              10           -- -- ns parameter 42

41*         Tt0L T0CKI Low Pulse Width No Prescaler              0.5TCY + 20  -- -- ns Must also meet

                                     With Prescaler              10           -- -- ns parameter 42

42*         Tt0P T0CKI Period        No Prescaler                TCY + 40     -- -- ns

                                     With Prescaler Greater of:               -- -- ns N = prescale
                                                            20 or TCY + 40                              value (2, 4,...,
                                                                          N                             256)

48 TCKE2tmr1 Delay from external clock edge to timer             2TOSC        -- 7Tos --
                           increment                                                    c

* These parameters are characterized but not tested.
Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are

   not tested.

TABLE 12-6: GPIO PULL-UP RESISTOR RANGES

VDD (Volts)        Temperature (C)  Min                         Typ          Max          Units

       2.5         40               38K                GP0/GP1  42K          63K            
                                                           GP3   48K          63K            
                   25                42K                         49K          63K            
                                                                 55K          63K            
                   85                42K                         17K          20K            
                                                                 20K          23K            
                   125               50K                         22K          25K            
                                                                 24K          28K            
       5.5         40               15K
                                                                 346K         417K           
                   25                18K                         414K         532K           
                                                                 457K         532K           
                   85                19K                         504K         593K           
                                                                 292K         360K           
                   125               22K                         341K         437K           
                                                                 371K         448K           
       2.5         40               285K                        407K         500K           

                   25                343K

                   85                368K

                   125               431K

       5.5         40               247K

                   25                288K

                   85                306K

                   125               351K

* These parameters are characterized but not tested.

DS30561B-page 104                                                             1999 Microchip Technology Inc.
                                                                        PIC12C67X

TABLE 12-7:  A/D CONVERTER CHARACTERISTICS:
             PIC12C671/672-04/PIC12CE673/674-04 (COMMERCIAL, INDUSTRIAL, EXTENDED)
             PIC12C671/672-10/PIC12CE673/674-10 (COMMERCIAL, INDUSTRIAL, EXTENDED)
             PIC12LC671/672-04/PIC12LCE673/674-04 (COMMERCIAL, INDUSTRIAL)

Param Sym Characteristic              Min        Typ         Max Units            Conditions
  No.

A01 NR Resolution                      --              --      8-bits    bit VREF = VDD = 5.12V,
A02 EABS Total absolute error          --              --       < 1            VSS  VAIN  VREF
A03 EIL Integral linearity error       --              --       < 1
A04 EDL Differential linearity error   --                       < 1    LSb VREF = VDD = 5.12V,
A05 EFS Full scale error               --              --       < 1            VSS  VAIN  VREF
A06 EOFF Offset error                  --                       < 1
A10 -- Monotonicity                    --              --         --    LSb VREF = VDD = 5.12V,
A20 VREF Reference voltage            2.5V                   VDD + 0.3          VSS  VAIN  VREF
                                                       --
                                                                        LSb VREF = VDD = 5.12V,
                                                 guaranteed                     VSS  VAIN  VREF
                                                   (Note 3)
                                                       --               LSb VREF = VDD = 5.12V,
                                                                                VSS  VAIN  VREF

                                                                        LSb VREF = VDD = 5.12V,
                                                                                VSS  VAIN  VREF

                                                                         -- VSS  VAIN  VREF

                                                                         V

A25 VAIN Analog input voltage         VSS - 0.3  --          VREF + 0.3 V

A30 ZAIN Recommended impedance of     --         --          10.0       k

             analog voltage source

A40 IAD A/D conversion PIC12C67X      --         180         --         A Average current con-

             current (VDD)        PIC12LC67X --  90          --         A sumption when A/D is on.

                                                                           (Note 1)

A50 IREF VREF input current (Note 2)  10         --          1000       A During VAIN acquisition.

                                                                           Based on differential of

                                                                           VHOLD to VAIN to charge

                                                                           CHOLD, see Section 8.1.

                                      --         --          10         A During A/D Conversion

                                                                           cycle

       *   These parameters are characterized but not tested.
           Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and
           are not tested.
Note 1:    When A/D is off, it will not consume any current other than minor leakage current. The power-down current spec
           includes any such leakage from the A/D module.
       2:  VREF current is from GP1 pin or VDD pin, whichever is selected as reference input.
       3:  The A/D conversion result never decreases with an increase in the Input Voltage, and has no missing codes.

1999 Microchip Technology Inc.                                                  DS30561B-page 105
PIC12C67X

FIGURE 12-9: A/D CONVERSION TIMING

           BSF ADCON0, GO      (TOSC/2)(1)                                                                  1 TCY
                        134                                        131
                                                                   130
               Q4

           A/D CLK  132

A/D DATA                              7     6           5  4       3         2      1      0

        ADRES                               OLD_DATA                                                               NEW_DATA
            ADIF
              GO                                                                                                   DONE

       SAMPLE                                              SAMPLING STOPPED

Note 1: If the A/D clock source is selected as RC, a time of TCY is added before the A/D clock starts. This allows the
             SLEEP instruction to be executed.

TABLE 12-8: A/D CONVERSION REQUIREMENTS

Param      Sym Characteristic                               Min    Typ          Max Units                          Conditions
  No.
  130       TAD     A/D clock period        PIC12C67X        1.6    --          --     s TOSC based, VREF  3.0V
                                                             2.0    --
  131      TCNV                             PIC12LC67X       2.0    4.0         --     s TOSC based, VREF full range
  132      TACQ                                              3.0    6.0
                                            PIC12C67X        11     --          6.0 s A/D RC Mode

                                            PIC12LC67X     Note 2   20          9.0 s A/D RC Mode

                    Conversion time (not including S/H                          11 TAD
                    time) (Note 1)

                    Acquisition time                                            --     s

                                                           5*         --        --     s The minimum time is the

                                                                                              amplifier setting time. This

                                                                                              may be used if the "new"

                                                                                              input voltage has not

                                                                                              changed by more than 1 LSb

                                                                                              (i.e., 20.0 mV @ 5.12V) from

                                                                                              the last sampled voltage (as

                                                                                              stated on CHOLD).

134 TGO Q4 to A/D clock start                              -- TOSC/2 --              -- If the A/D clock source is
                                                                                              selected as RC, a time of
                                                                                              TCY is added before the A/D
                                                                                              clock starts. This allows the
                                                                                              SLEEP instruction to be exe-
                                                                                              cuted.

135 TSWC Switching from convert  sample time 1.5                     --        --     TAD

       *   These parameters are characterized but not tested.
           Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and
           are not tested.
          This specification ensured by design.
Note 1:    ADRES register may be read on the following TCY cycle.
           See Section 8.1 for min. conditions.
       2:

DS30561B-page 106                                                                      1999 Microchip Technology Inc.
                                                                          PIC12C67X

TABLE 12-9: EEPROM MEMORY BUS TIMING REQUIREMENTS - PIC12CE673/674 ONLY.

AC Characteristics                Standard Operating Conditions (unless otherwise specified)

                                  Operating Temperature 0C  TA  +70C, Vcc = 3.0V to 5.5V (commercial)
                                                                40C  TA  +85C, Vcc = 3.0V to 5.5V (industrial)
                                                                40C  TA  +125C, Vcc = 4.5V to 5.5V (extended)

                                  Operating Voltage VDD range is described in Section 12.1

           Parameter              Symbol Min Max Units                    Conditions

Clock frequency                   FCLK        --   100   kHz 4.5V  Vcc  5.5V (E Temp range)
                                              --   100            3.0V  Vcc  4.5V
Clock high time                   THIGH       --   400            4.5V  Vcc  5.5V

Clock low time                    TLOW      4000    --    ns 4.5V  Vcc  5.5V (E Temp range)
                                            4000    --            3.0V  Vcc  4.5V
SDA and SCL rise time                TR      600    --            4.5V  Vcc  5.5V
(Note 1)
                                     TF     4700    --    ns 4.5V  Vcc  5.5V (E Temp range)
SDA and SCL fall time             THD:STA   4700    --            3.0V  Vcc  4.5V
START condition hold time                   1300    --            4.5V  Vcc  5.5V

START condition setup time        TSU:STA     --   1000   ns 4.5V  Vcc  5.5V (E Temp range)
                                              --   1000           3.0V  Vcc  4.5V
Data input hold time              THD:DAT     --   300            4.5V  Vcc  5.5V
Data input setup time             TSU:DAT
                                              --   300    ns (Note 1)
STOP condition setup time         TSU:STO
                                            4000    --    ns 4.5V  Vcc  5.5V (E Temp range)
Output valid from clock           TAA       4000    --            3.0V  Vcc  4.5V
                                             600    --            4.5V  Vcc  5.5V
(Note 2)
                                            4700    --    ns 4.5V  Vcc  5.5V (E Temp range)
Bus free time: Time the bus must  TBUF      4700    --            3.0V  Vcc  4.5V
be free before a new transmis-    TOF        600    --            4.5V  Vcc  5.5V
sion can start
                                              0     --    ns (Note 2)
Output fall time from VIH
minimum to VIL maximum                       250    --    ns 4.5V  Vcc  5.5V (E Temp range)
                                             250    --            3.0V  Vcc  4.5V
                                             100    --            4.5V  Vcc  5.5V

                                            4000    --    ns 4.5V  Vcc  5.5V (E Temp range)
                                            4000    --            3.0V  Vcc  4.5V
                                             600    --            4.5V  Vcc  5.5V

                                              --   3500   ns 4.5V  Vcc  5.5V (E Temp range)
                                              --   3500           3.0V  Vcc  4.5V
                                              --   900            4.5V  Vcc  5.5V

                                            4700    --    ns 4.5V  Vcc  5.5V (E Temp range)
                                            4700    --            3.0V  Vcc  4.5V
                                            1300    --            4.5V  Vcc  5.5V

                                           20+0.1  250    ns (Note 1), CB  100 pF
                                             CB

Input filter spike suppression    TSP      --      50    ns (Notes 1, 3)
(SDA and SCL pins)

Write cycle time                  TWC      --      4     ms

Endurance                                  1M      -- cycles 25C, VCC = 5.0V, Block Mode (Note 4)

Note 1: Not 100% tested. CB = total capacitance of one bus line in pF.
       2: As a transmitter, the device must provide an internal minimum delay time to bridge the undefined region (min-
            imum 300 ns) of the falling edge of SCL and avoid unintended generation of START or STOP conditions.
       3: The combined TSP and VHYS specifications are due to new Schmitt Trigger inputs which provide improved
            noise spike suppression. This eliminates the need for a TI specification for standard operation.
       4: This parameter is not tested but ensured by characterization. For endurance estimates in a specific applica-
            tion, please consult the Total Endurance Model which can be obtained on Microchip's website.

1999 Microchip Technology Inc.                                          DS30561B-page 107
PIC12C67X

NOTES:

DS30561B-page 108   1999 Microchip Technology Inc.
                                                                                                                   PIC12C67X

13.0 DC AND AC CHARACTERISTICS - PIC12C671/PIC12C672/PIC12LC671/
         PIC12LC672/PIC12CE673/PIC12CE674/PIC12LCE673/PIC12LCE674

The graphs and tables provided in this section are for design guidance and are not tested. In some graphs or tables
the data presented are outside specified operating range (i.e., outside specified VDD range). This is for information only
and devices will operate properly only within the specified range.

The data presented in this section is a statistical summary of data collected on units from different lots over a period of
time. "Typical" represents the mean of the distribution while "max" or "min" represents (mean + 3) and (mean 3)
respectively, where  is standard deviation.

FIGURE 13-1: CALIBRATED INTERNAL RC              FIGURE 13-2: CALIBRATED INTERNAL RC
                     FREQUENCY RANGE VS.                              FREQUENCY RANGE VS.
                     TEMPERATURE (VDD = 5.0V)                         TEMPERATURE (VDD = 2.5V)
                     (INTERNAL RC IS                                  (INTERNAL RC IS
                     CALIBRATED TO 25C, 5.0V)                        CALIBRATED TO 25C, 5.0V)

4.50                                                                                                 4.50

4.40                                                                                                 4.40

4.30                                                                                                 4.30                                Max.
4.20                                                                                                 4.20
4.10                                  Max.                                                           4.10

Frequency (MHz)4.00                                                                                  4.00
                                                                                    Frequency (MHz)
3.90                                                                                                 3.90

3.80                                                                                                 3.80

3.70                                  Min.                                                           3.70

3.60                                                                                                 3.60

3.50                                                                                                 3.50                                Min.
                                                                                                           -40                                 125
-40   0  25                       85        125                                                                 0  25                85

      Temperature (Deg.C)                                                                                       Temperature (Deg.C)

1999 Microchip Technology Inc.                                                                                       DS30561B-page 109
PIC12C67X

TABLE 13-1: DYNAMIC IDD (TYPICAL) - WDT ENABLED, 25C

    Oscillator     Frequency                                                                   VDD = 2.5V             VDD = 5.5V

External RC        4 MHz                                                                         400 A*                900 A*
                                                                                                 400 A                 900 A
Internal RC        4 MHz                                                                         400 A                 900 A
                                                                                                  15 A                  60 A
XT                 4 MHz

LP                 32 kHz

*Does not include current through external R&C.

FIGURE 13-3: WDT TIMER TIME-OUT                                               FIGURE 13-4: IOH vs. VOH, VDD = 2.5 V
                     PERIOD vs. VDD
                                                                                               -0
          55
                                                                                               -1
          50                                                                                   -2

          45                                                                                   -3

          40WDT period (mS)                                                                    -4
                                                                                     IOH (mA)          Min +125C
          35
                                                                                               -5          Min +85C
                                                                  Max +125C
                                                                                               -6
          30                                                                                          Typ +25C

                                                                  Max +85C                    -7

          25                                                                                    -8

          20                                                                                    -9
                                                                                                              Max -40C
                                                                   Typ +25C
                                                                                               -10
          15                                                                                         .5 .75 1.0 1.25 1.5 1.75 2.0 2.25 2.5

                                                                   MIn 40C                                        VOH (Volts)

          10
              0 2.5 3.5 4.5 5.5 6.5
                                 VDD (Volts)

DS30561B-page 110                                                                                                   1999 Microchip Technology Inc.
                                                                                                           PIC12C67X

FIGURE 13-5: IOH vs. VOH, VDD = 3.5 V             FIGURE 13-7: IOL vs. VOL, VDD = 2.5 V

             0                                                 35

-5                                                                                           30
                                                                                                                                                     Max -40C
       Min +125C
-10                                                                                           25

         Min +85C
                Typ +25C

-15
IOH (mA)                                                                                      20
                                                                                   IOL (mA)                                                          Typ +25C

-20       Max -40C                                                                           15
                                                                                                                                                     Min +85C
-25
                                                                                              10
     1.5       2.0         2.5          3.0  3.5                                                                                                    Min +125C

                                                                                               5

                       VOH (Volts)

                                                                                              0

FIGURE 13-6: IOH vs. VOH, VDD = 5.5 V                                                             0  0.25  0.5          0.75  1.0

              0                                                                                            VOL (Volts)
             -5
                                                  FIGURE 13-8: IOL vs. VOL, VDD = 3.5 V

                                                                45

-10

               +125C                                                                                                                                Max -40C
               +85C                                                                          40

-15       Min
          Min
IOH (mA)  Typ +25C                                                                           35
-20
                      Max 40C
-25                                                                                           30
                                                                                    IOL (mA)
-30                                                                                                                                                  Typ +25C
                                                                                              25

-35                                                                                           20

-40                                                                                           15
                                                                                                                                                     Min +85C
     3.5       4.0         4.5          5.0  5.5
                                                                                                                                                    Min +125C
                           VOH (Volts)                                                        10

                                                                                              0

                                                                                                  0  0.25  0.5          0.75  1.0

                                                                                                           VOL (Volts)

1999 Microchip Technology Inc.                                                                                DS30561B-page 111
PIC12C67X

FIGURE 13-9: IOL vs. VOL, VDD = 5.5 V             FIGURE 13-10: VTH (INPUT THRESHOLD
                                                                       VOLTAGE) OF GPIO PINS
55                                    Max -40C                        vs. VDD
50
45