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

型号

产品描述

搜索
 

PIC12F683

器件型号:PIC12F683
器件类别:微处理器   
厂商名称:Microchip
厂商官网:https://www.microchip.com
下载文档

器件描述

8-BIT, FLASH, 20 MHz, RISC MICROCONTROLLER, PDIP8

8位, FLASH, 20 MHz, 精简指令集微控制器, PDIP8

参数

PIC12F683功能数量 1
PIC12F683端子数量 8
PIC12F683最大工作温度 85 Cel
PIC12F683最小工作温度 -40 Cel
PIC12F683最大供电/工作电压 5.5 V
PIC12F683最小供电/工作电压 4.5 V
PIC12F683额定供电电压 5 V
PIC12F683外部数据总线宽度 0.0
PIC12F683输入输出总线数量 6
PIC12F683线速度 20 MHz
PIC12F683加工封装描述 0.300 INCH, 塑料, DIP-8
PIC12F683无铅 Yes
PIC12F683欧盟RoHS规范 Yes
PIC12F683中国RoHS规范 Yes
PIC12F683状态 ACTIVE
PIC12F683工艺 CMOS
PIC12F683包装形状 矩形的
PIC12F683包装尺寸 IN-线
PIC12F683端子形式 THROUGH-孔
PIC12F683端子间距 2.54 mm
PIC12F683端子涂层 MATTE 锡
PIC12F683端子位置
PIC12F683包装材料 塑料/环氧树脂
PIC12F683温度等级 INDUSTRIAL
PIC12F683ADC通道 Yes
PIC12F683地址总线宽度 0.0
PIC12F683位数 8
PIC12F683最大FCLK时钟频率 20 MHz
PIC12F683微处理器类型 精简指令集微控制器
PIC12F683PWM通道 Yes
PIC12F683ROM编程 FLASH

文档预览

PIC12F683器件文档内容

                                               PIC12F683
                                               Data Sheet

                                      8-Pin Flash-Based, 8-Bit
                                 CMOS Microcontrollers with

                                          nanoWatt Technology

* 8-bit, 8-pin Devices Protected by Microchip's Low Pin Count Patent: U.S. Patent No. 5,847,450. Additional U.S. and
foreign patents and applications may be issued or pending.

2004 Microchip Technology Inc.  Preliminary  DS41211B
Note the following details of the code protection feature on Microchip devices:
Microchip products meet the specification contained in their particular Microchip Data Sheet.

Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
      intended manner and under normal conditions.

There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
      knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip's Data
      Sheets. Most likely, the person doing so is engaged in theft of intellectual property.

Microchip is willing to work with the customer who is concerned about the integrity of their code.

Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
      mean that we are guaranteeing the product as "unbreakable."

Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip's code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Information contained in this publication regarding device       Trademarks
applications and the like is intended through suggestion only
and may be superseded by updates. It is your responsibility to   The Microchip name and logo, the Microchip logo, Accuron,
ensure that your application meets with your specifications.     dsPIC, KEELOQ, MPLAB, PIC, PICmicro, PICSTART,
No representation or warranty is given and no liability is       PRO MATE, PowerSmart and rfPIC are registered
assumed by Microchip Technology Incorporated with respect        trademarks of Microchip Technology Incorporated in the
to the accuracy or use of such information, or infringement of   U.S.A. and other countries.
patents or other intellectual property rights arising from such
use or otherwise. Use of Microchip's products as critical        AmpLab, FilterLab, microID, MXDEV, MXLAB, PICMASTER,
components in life support systems is not authorized except      SEEVAL, SmartShunt and The Embedded Control Solutions
with express written approval by Microchip. No licenses are      Company are registered trademarks of Microchip Technology
conveyed, implicitly or otherwise, under any intellectual        Incorporated in the U.S.A.
property rights.
                                                                 Application Maestro, dsPICDEM, dsPICDEM.net,
                                                                 dsPICworks, ECAN, ECONOMONITOR, FanSense,
                                                                 FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP,
                                                                 ICEPIC, Migratable Memory, MPASM, MPLIB, MPLINK,
                                                                 MPSIM, PICkit, PICDEM, PICDEM.net, PICtail, PowerCal,
                                                                 PowerInfo, PowerMate, PowerTool, rfLAB, Select Mode,
                                                                 SmartSensor, SmartTel and Total Endurance are trademarks
                                                                 of Microchip Technology Incorporated in the U.S.A. and other
                                                                 countries.

                                                                 Serialized Quick Turn Programming (SQTP) is a service mark
                                                                 of Microchip Technology Incorporated in the U.S.A.

                                                                 All other trademarks mentioned herein are property of their
                                                                 respective companies.

                                                                  2004, Microchip Technology Incorporated, Printed in the
                                                                 U.S.A., All Rights Reserved.

                                                                      Printed on recycled paper.

                                                                 Microchip received ISO/TS-16949:2002 quality system certification for
                                                                 its worldwide headquarters, design and wafer fabrication facilities in
                                                                 Chandler and Tempe, Arizona and Mountain View, California in October
                                                                 2003. The Company's quality system processes and procedures are for
                                                                 its PICmicro 8-bit MCUs, KEELOQ code hopping devices, Serial
                                                                 EEPROMs, microperipherals, nonvolatile memory and analog
                                                                 products. In addition, Microchip's quality system for the design and
                                                                 manufacture of development systems is ISO 9001:2000 certified.

DS41211B-page ii  Preliminary                                     2004 Microchip Technology Inc.
                                                                    PIC12F683

8-Pin Flash-Based, 8-Bit CMOS Microcontrollers with
                    nanoWatt Technology

High-Performance RISC CPU                                Low-Power Features

Only 35 instructions to learn:                         Standby Current:
   - All single-cycle instructions except branches          - 1 nA @ 2.0V, typical

Operating speed:                                        Operating Current:
   - DC 20 MHz oscillator/clock input                     - 8.5 A @ 32 kHz, 2.0V, typical
   - DC 200 ns instruction cycle                          - 100 A @ 1 MHz, 2.0V, typical

Interrupt capability                                    Watchdog Timer Current:
8-level deep hardware stack                               - 1 A @ 2.0V, typical
Direct, Indirect and Relative Addressing modes
                                                         Peripheral Features
Special Microcontroller Features
                                                          6 I/O pins with individual direction control:
Precision Internal Oscillator:                            - High current source/sink for direct LED drive
   - Factory calibrated to 1%                              - Interrupt-on-pin change
   - Software selectable frequency range of                 - Individually programmable weak pull-ups
      8 MHz to 31 kHz                                       - Ultra Low-Power Wake-up on GP0
   - Two-speed Start-up mode
   - Crystal fail detect for critical applications       Analog comparator module with:
   - Clock mode switching during operation for              - One analog comparator
      power savings                                         - Programmable on-chip voltage reference
                                                               (CVREF) module (% of VDD)
Power-saving Sleep mode                                   - Comparator inputs and output externally
Wide operating voltage range. (2.0V-5.5V)                    accessible
Industrial and Extended temperature range
Power-on Reset (POR)                                    A/D Converter:
Power-up Timer (PWRT) and Oscillator Start-up             - 10-bit resolution and 4 channels

   Timer (OST)                                           Timer0: 8-bit timer/counter with 8-bit
Multiplexed Master Clear with pull-up/input pin           programmable prescaler
Programmable code protection
High Endurance Flash/EEPROM cell:                      Enhanced Timer1:
                                                            - 16-bit timer/counter with prescaler
   - 100,000 write Flash endurance                          - External Gate Input mode
   - 1,000,000 write EEPROM endurance                       - Option to use OSC1 and OSC2 in LP mode as
   - Flash/Data EEPROM Retention: > 40 years                   Timer1 oscillator if INTOSC mode selected

                                                          Timer2: 8-bit timer/counter with 8-bit period
                                                            register, prescaler and postscaler

                                                          Capture, Compare, PWM module:
                                                            - 16-bit Capture, max resolution 12.5 ns
                                                            - Compare, max resolution 200 ns
                                                            - 10-bit PWM, max frequency 20 kHz

                                                          In-Circuit Serial ProgrammingTM (ICSPTM) via
                                                            two pins

           Program Memory             Data Memory                                                 Timers
             Flash (words)                                                                        8/16-bit
   Device           2048                                         I/O 10-bit A/D (ch) Comparators
PIC12F683                                                                                            2/1
                                 SRAM (bytes) EEPROM (bytes)

                                 128                256          6  4  1

2004 Microchip Technology Inc.                     Preliminary           DS41211B-page 1
PIC12F683

Pin Diagram

      8-pin PDIP, SOIC, DFN-S

                                                     VDD  1             8  VSS
                        GP5/T1CKI/OSC1/CLKIN                               GP0/AN0/CIN+/ICSPDAT/ULPWU
                 GP4/AN3/T1G/OSC2/CLKOUT                  2  PIC12F683  7  GP1/AN1/CIN-/VREF/ICSPCLK
                                                                           GP2/AN2/T0CKI/INT/COUT/CCP1
                                     GP3/MCLR/VPP         3             6

                                                          4             5

DS41211B-page 2                                           Preliminary       2004 Microchip Technology Inc.
                                                 PIC12F683

Table of Contents

1.0 Device Overview .......................................................................................................................................................................... 5
2.0 Memory Organization ................................................................................................................................................................... 7
3.0 Clock Sources ............................................................................................................................................................................ 19
4.0 GPIO Port................................................................................................................................................................................... 31
5.0 Timer0 Module ........................................................................................................................................................................... 39
6.0 Timer1 Module with Gate Control............................................................................................................................................... 41
7.0 Timer2 Module ........................................................................................................................................................................... 45
8.0 Comparator Module.................................................................................................................................................................... 47
9.0 Analog-to-Digital Converter (A/D) Module.................................................................................................................................. 55
10.0 Data EEPROM Memory ............................................................................................................................................................. 65
11.0 Capture/Compare/PWM (CCP) Module ..................................................................................................................................... 69
12.0 Special Features of the CPU...................................................................................................................................................... 75
13.0 Instruction Set Summary ............................................................................................................................................................ 95
14.0 Development Support............................................................................................................................................................... 103
15.0 Electrical Specifications............................................................................................................................................................ 109
16.0 DC and AC Characteristics Graphs and Tables....................................................................................................................... 131
17.0 Packaging Information.............................................................................................................................................................. 133
Appendix A: Data Sheet Revision History.......................................................................................................................................... 137
Appendix B: Migrating From Other PICmicro Devices .................................................................................................................... 137
Index .................................................................................................................................................................................................. 139
On-line Support .................................................................................................................................................................................. 143
Systems Information and Upgrade Hot Line ...................................................................................................................................... 143
Reader Response .............................................................................................................................................................................. 144
Product Identification System ............................................................................................................................................................ 145

                                    TO OUR VALUED CUSTOMERS

  It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Microchip
  products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined and
  enhanced as new volumes and updates are introduced.
  If you have any questions or comments regarding this publication, please contact the Marketing Communications Department via
  E-mail at docerrors@mail.microchip.com or fax the Reader Response Form in the back of this data sheet to (480) 792-4150.
  We welcome your feedback.

Most Current Data Sheet

  To 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).

Errata

  An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current
  devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision
  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) 792-7277
  When contacting a sales office or the literature center, please specify which device, revision of silicon and data sheet (include
  literature number) you are using.

Customer Notification System

  Register on our web site at www.microchip.com/cn to receive the most current information on all of our products.

2004 Microchip Technology Inc.  Preliminary  DS41211B-page 3
PIC12F683

NOTES:

DS41211B-page 4  Preliminary   2004 Microchip Technology Inc.
                                                                                                                   PIC12F683

1.0 DEVICE OVERVIEW                                                  this data sheet and is highly recommended reading for
                                                                     a better understanding of the device architecture and
This document contains device specific information for               operation of the peripheral modules.
the PIC12F683. Additional information may be found in
the "PICmicro Mid-Range MCU Family Reference                        The PIC12F683 is covered by this data sheet. It is
Manual" (DS33023), which may be obtained from your                   available in 8-pin PDIP, SOIC and DFN-S packages.
local Microchip Sales Representative or downloaded                   Figure 1-1 shows a block diagram of the PIC12F683
from the Microchip web site. The reference manual                    device. Table 1-1 shows the pinout description.
should be considered a complementary document to

FIGURE 1-1:  PIC12F683 BLOCK DIAGRAM

                                                INT

                         Configuration

                                          13                                                             8
                                                    Program Counter            Data Bus

                         Flash                                                                                     GP0
                                                                                                                   GP1
                         2k x 14                                                                                   GP2
                                                                                                                   GP3
                               Program          8-Level Stack                     RAM                              GP4
                               Memory               (13-bit)                   128 bytes                           GP5

             Program 14                                                            File
                Bus                                                            Registers

                                                                     RAM Addr        9

             Instruction reg                                                   Addr MUX

                                                Direct Addr 7                             Indirect

                                                                               8          Addr

                                                                                     FSR reg

                                                                                                       Status reg
                                          8

                                                                     3               MUX

                         Instruction              Power-up                     ALU
                         Decode &                    Timer           8

                           Control                Oscillator                  W reg
                                               Start-up Timer
OSC1/CLKIN                  Timing
                         Generation               Power-on
                                                     Reset
OSC2/CLKOUT
                                                  Watchdog
              Internal                               Timer
             Oscillator
                                                  Brown-out
               Block                                Detect

      T1G                                 MCLR VDD VSS                         CCP1
                                                                               CCP
T1CKI

             Timer0                     Timer1       Timer2

T0CKI

             Analog-to-Digital Converter           1 Analog Comparator                                                  EEDATA
                                                       and Reference                                               8 256 bytes
VREF         AN0 AN1 AN2 AN3
                                                     CIN- CIN+ COUT                                                        Data
2004 Microchip Technology Inc.                                                                                         EEPROM
                                                Preliminary                                                             EEADDR

                                                                                                                                              DS41211B-page 5
PIC12F683

TABLE 1-1: PIC12F683 PINOUT DESCRIPTION

         Name                Function             Input  Output  Description
                                                  Type    Type

VDD                          VDD                  Power      -- Positive supply
GP5/T1CKI/OSC1/CLKIN         GP5                   TTL   CMOS GPIO I/O w/programmable pull-up and interrupt-on-change
                                                    ST
                             T1CKI                XTAL       -- Timer1 clock
                                                    ST       -- Crystal/Resonator
                             OSC1                  TTL       -- External clock input/RC oscillator connection
                                                    AN   CMOS GPIO I/O w/programmable pull-up and interrupt-on-change
                             CLKIN                  ST       -- A/D Channel 3 input
                                                    --       -- Timer1 gate
GP4/AN3/T1G/OSC2/CLKOUT      GP4                    --    XTAL Crystal/Resonator
                                                   TTL   CMOS FOSC/4 output
                             AN3                    ST       -- GPIO input with interrupt-on-change
                                                    HV       -- Master Clear w/internal pull-up
                             T1G                    ST       -- Programming voltage
                                                    AN   CMOS GPIO I/O w/programmable pull-up and interrupt-on-change
                               OSC2                 ST       -- A/D Channel 2 input
                             CLKOUT                 ST       -- Timer0 clock input
                                                    --       -- External Interrupt
GP3/MCLR/VPP                 GP3                    ST   CMOS Comparator 1 output
                                                   TTL   CMOS Capture input/Compare output/PWM output
                             MCLR                   AN   CMOS GPIO I/O w/programmable pull-up and interrupt-on-change
                                                    AN       -- A/D Channel 1 input
GP2/AN2/T0CKI/INT/COUT/CCP1  VPP                    AN       -- Comparator 1 input
                             GP2                    ST       -- External Voltage Reference for A/D
                                                   TTL       -- Serial Programming Clock
                             AN2                    AN   CMOS GPIO I/O w/programmable pull-up and interrupt-on-change
                                                    AN       -- A/D Channel 0 input
                             T0CKI                  ST       -- Comparator 1 input
                                                    AN   CMOS Serial Programming Data I/O
                             INT                             -- Ultra Low-power Wake-up input
                                                  Power      -- Ground reference
                             COUT                        CMOS = CMOS compatible input or output
                                                         ST = Schmitt Trigger input with CMOS levels
                             CCP1                        XTAL = Crystal

GP1/AN1/CIN-/VREF/ICSPCLK    GP1
                             AN1

                             CIN-

                                VREF
                             ICSPCLK

GP0/AN0/CIN+/ICSPDAT/ULPWU GP0

                             AN0

                             CIN+

                             ICSPDAT
                              ULPWU

VSS                                          VSS
Legend:
              AN = Analog input or output
              TTL = TTL compatible input
              HV = High Voltage

DS41211B-page 6                                   Preliminary     2004 Microchip Technology Inc.
                                                              PIC12F683

2.0 MEMORY ORGANIZATION                                2.2 Data Memory Organization

2.1 Program Memory Organization                        The data memory (see Figure 2-2) is partitioned into
                                                       two banks, which contain the General Purpose Regis-
The PIC12F683 has a 13-bit program counter capable     ters (GPR) and the Special Function Registers (SFR).
of addressing an 8k x 14 program memory space. Only    The Special Function Registers are located in the first
the first 2k x 14 (0000h-07FFh) for the PIC12F683 is   32 locations of each bank. Register locations 20h-7Fh
physically implemented. Accessing a location above     in Bank 0 and A0h-BFh in Bank 1 are general purpose
these boundaries will cause a wrap around within the   registers, implemented as static RAM. Register loca-
first 2k x 14 space. The Reset vector is at 0000h and  tions F0h-FFh in Bank 1 point to addresses 70h-7Fh in
the interrupt vector is at 0004h (see Figure 2-1).     Bank 0. All other RAM is unimplemented and returns `0'
                                                       when read. RP0 (Status<5>) is the bank select bit.

FIGURE 2-1:    PROGRAM MEMORY MAP                      RP0 = 0: Bank 0 is selected
               AND STACK FOR THE                        RP0 = 1: Bank 1 is selected
               PIC12F683
                                                       Note:  The IRP and RP1 bits (Status<7:6>) are
                                                              reserved and should always be
               PC<12:0>                                       maintained as `0's.

CALL, RETURN                  13

RETFIE, RETLW                                          2.2.1  GENERAL PURPOSE REGISTER
                                                              FILE

               Stack Level 1                           The register file is organized as 128 x 8 in the
               Stack Level 2                           PIC12F683. Each register is accessed, either directly
                                                       or indirectly, through the File Select Register FSR (see
               Stack Level 8                           Section 2.4 "Indirect Addressing, INDF and FSR
               Reset Vector                            Registers").

                                  000h

               Interrupt Vector   0004
                                  0005
              On-chip Program
                   Memory         07FFh
                                  0800h

                                  1FFFh

2004 Microchip Technology Inc.          Preliminary                                  DS41211B-page 7
PIC12F683                                                  FIGURE 2-2:  DATA MEMORY MAP OF
                                                                        THE PIC12F683
2.2.2 SPECIAL FUNCTION REGISTERS
The Special Function Registers are registers used by                       File                         File
the CPU and peripheral functions for controlling the                    Address                      Address
desired operation of the device (see Table 2-1). These
registers are static RAM.                                  Indirect addr.(1) 00h  Indirect addr.(1)  80h
The special registers can be classified into two sets:
core and peripheral. The Special Function Registers        TMR0         01h       OPTION_REG 81h
associated with the "core" are described in this section.
Those related to the operation of the peripheral           PCL          02h       PCL                82h
features are described in the section of that peripheral
feature.                                                   STATUS       03h       STATUS             83h

                                                           FSR          04h       FSR                84h

                                                           GPIO         05h       TRISIO             85h

                                                                        06h                          86h

                                                                        07h                          87h

                                                                        08h                          88h

                                                                        09h                          89h

                                                           PCLATH       0Ah       PCLATH             8Ah

                                                           INTCON       0Bh       INTCON             8Bh

                                                           PIR1         0Ch       PIE1               8Ch

                                                                        0Dh                          8Dh

                                                           TMR1L        0Eh       PCON               8Eh

                                                           TMR1H        0Fh       OSCCON             8Fh

                                                           T1CON        10h       OSCTUNE            90h

                                                           TMR2         11h                          91h

                                                           T2CON        12h       PR2                92h

                                                           CCPR1L       13h                          93h

                                                           CCPR1H       14h                          94h

                                                           CCP1CON      15h       WPU                95h

                                                                        16h       IOC                96h

                                                                        17h                          97h

                                                           WDTCON       18h                          98h

                                                           CMCON0       19h       VRCON              99h

                                                           CMCON1       1Ah       EEDAT              9Ah

                                                                        1Bh       EEADR              9Bh

                                                                        1Ch       EECON1             9Ch

                                                                        1Dh       EECON2(1)          9Dh

                                                           ADRESH       1Eh       ADRESL             9Eh

                                                           ADCON0       1Fh       ANSEL              9Fh
                                                                                  General            A0h
                                                                        20h       Purpose
                                                                                  Registers          BFh
                                                            General               32 Bytes
                                                           Purpose
                                                           Registers

                                                           96 Bytes

                                                                                                                F0h
                                                                                  Accesses 70h-7Fh

                                                                        7Fh                          FFh

                                                           BANK 0                 BANK 1

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

DS41211B-page 8  Preliminary                                             2004 Microchip Technology Inc.
                                                                                                     PIC12F683

TABLE 2-1: PIC12F683 SPECIAL REGISTERS SUMMARY BANK 0

Addr Name Bit 7   Bit 6             Bit 5  Bit 4           Bit 3  Bit 2         Bit 1                Bit 0   Value on  Page
                                                                                                            POR, BOD

Bank 0

00h INDF    Addressing this location uses contents of FSR to address data memory (not a physical register) xxxx xxxx 17, 83

01h TMR0    Timer0 Module's Register                                                                        xxxx xxxx 39, 83

02h PCL     Program Counter's (PC) Least Significant Byte                                                   0000 0000 17, 83

03h STATUS IRP(1) RP1(1)            RP0    TO              PD     Z             DC                   C 0001 1xxx 11, 83

04h FSR     Indirect Data Memory Address Pointer                                                            xxxx xxxx 17, 83

05h GPIO    --    --                GP5    GP4             GP3    GP2           GP1                  GP0 --xx xxxx 31, 83

06h      -- Unimplemented                                                                                   --         --

07h      -- Unimplemented                                                                                   --         --

08h      -- Unimplemented                                                                                   --         --

09h      -- Unimplemented                                                                                   --         --

0Ah PCLATH  --    --                  -- Write Buffer for upper 5 bits of Program Counter                   ---0 0000 17, 83

0Bh INTCON  GIE   PEIE              T0IE   INTE            GPIE   T0IF          INTF                 GPIF 0000 0000 13, 83

0Ch PIR1    EEIF  ADIF CCP1IF              --              CMIF OSFIF TMR2IF TMR1IF 000- 0000 15, 83

0Dh      -- Unimplemented                                                                                   --         --

0Eh TMR1L   Holding Register for the Least Significant Byte of the 16-bit TMR1                              xxxx xxxx 41, 83
0Fh TMR1H   Holding Register for the Most Significant Byte of the 16-bit TMR1                               xxxx xxxx 41, 83

10h T1CON   T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 43, 83
11h TMR2
            Timer2 Module Register                                                                          0000 0000 45, 83

12h T2CON   -- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 45, 83

13h CCPR1L Capture/Compare/PWM Register 1 Low Byte                                                          xxxx xxxx 70, 83

14h CCPR1H Capture/Compare/PWM Register 1 High Byte                                                         xxxx xxxx 70, 83

15h CCP1CON --    --             DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 69, 83

16h      -- Unimplemented                                                                                   --         --

17h      -- Unimplemented                                                                                   --         --

18h WDTCON --     --                  --   WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN ---0 1000 90, 83

19h CMCON0 --     COUT                --   CINV            CIS    CM2           CM1                  CM0 -0-0 0000 47, 83

1Ah CMCON1 --     --                  --   --              --     --            T1GSS CMSYNC ---- --10 50, 83

1Bh      -- Unimplemented                                                                                   --         --

1Ch      -- Unimplemented                                                                                   --         --

1Dh      -- Unimplemented                                                                                   --         --

1Eh ADRESH Most Significant 8 bits of the left shifted A/D result or 2 bits of right shifted result         xxxx xxxx 57,83

1Fh ADCON0 ADFM VCFG                  --   --              CHS1 CHS0 GO/DONE ADON 00-- 0000 58,83

Legend:   -- = unimplemented locations read as `0', u = unchanged, x = unknown, q = value depends on condition,
Note 1:   shaded = unimplemented
          IRP and RP1 bits are reserved, always maintain these bits clear.

2004 Microchip Technology Inc.            Preliminary                                                      DS41211B-page 9
PIC12F683

TABLE 2-2: PIC12F683 SPECIAL FUNCTION REGISTERS SUMMARY BANK 1

Addr Name         Bit 7   Bit 6   Bit 5          Bit 4           Bit 3  Bit 2  Bit 1                         Bit 0   Value on  Page
                                                                                                                    POR, BOD

Bank 1

80h INDF          Addressing this location uses contents of FSR to address data memory (not a physical register) xxxx xxxx 17, 83

81h OPTION_REG GPPU INTEDG T0CS T0SE                             PSA    PS2    PS1                           PS0 1111 1111 12, 83

82h PCL           Program Counter's (PC) Least Significant Byte                                                     0000 0000 17, 83

83h STATUS        IRP(1)  RP1(1)  RP0            TO              PD     Z      DC                            C 0001 1xxx 11, 83

84h FSR           Indirect Data Memory Address Pointer                                                              xxxx xxxx 17, 83

85h TRISIO        --      --      TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 32, 83

86h          --   Unimplemented                                                                                     --         --

87h          --   Unimplemented                                                                                     --         --

88h          --   Unimplemented                                                                                     --         --

89h          --   Unimplemented                                                                                     --         --

8Ah PCLATH        --      --      -- Write Buffer for upper 5 bits of Program Counter                               ---0 0000 17, 83

8Bh INTCON        GIE     PEIE    T0IE           INTE            GPIE   T0IF   INTF                          GPIF 0000 0000 13, 83

8Ch PIE1          EEIE    ADIE CCP1IE            --              CMIE OSFIE TMR2IE TMR1IE 000- 0000 14, 83

8Dh          --   Unimplemented                                                                                     --         --

8Eh PCON          --      -- ULPWUE SBODEN --                           --     POR                           BOD --01 --qq 16, 83
8Fh OSCCON
                  --      IRCF2 IRCF1 IRCF0 OSTS(2) HTS                        LTS                           SCS -110 x000 28, 83

90h OSCTUNE       --      --      --             TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 23, 83

91h          --   Unimplemented                                                                                     --         --

92h PR2           Timer2 Module Period Register                                                                     1111 1111 45, 83

93h          --   Unimplemented                                                                                     --         --

94h          --   Unimplemented                                                                                     --         --

95h WPU(3)        --      --      WPU5 WPU4                      --     WPU2 WPU1 WPU0 --11 -111 32, 83

96h IOC           --      --      IOC5           IOC4            IOC3   IOC2   IOC1                          IOC0 --00 0000 33, 83

97h          --   Unimplemented                                                                                     --         --

98h          --   Unimplemented                                                                                     --         --

99h VRCON         VREN    --      VRR            --              VR3    VR2    VR1                           VR0 0-0- 0000 53, 83

9Ah EEDAT         EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 0000 0000 65, 83

9Bh EEADR         EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 65, 83

9Ch EECON1        --      --      --             --     WRERR WREN             WR                            RD ---- x000 66, 84

9Dh EECON2        EEPROM Control Register 2 (not a physical register)                                               ---- ---- 66, 84

9Eh ADRESL        Least Significant 2 bits of the left shifted result or 8 bits of the right shifted result         xxxx xxxx 57, 84

9Fh ANSEL         --      ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0 -000 1111 59, 84

Legend:      -- = unimplemented locations read as `0', u = unchanged, x = unknown, q = value depends on condition,
             shaded = unimplemented
Note 1:      IRP and RP1 bits are reserved, always maintain these bits clear.
         2:  OSCCON bit reset to `0' with Dual Speed Start-up and LP, HS or XT selected as the oscillator.
         3:  GP3 pull-up is enabled when MCLRE is `1' in the Configuration Word register.

DS41211B-page 10                                 Preliminary                           2004 Microchip Technology Inc.
                                                                                     PIC12F683

2.2.2.1 Status Register                                       For example, CLRF STATUS, will clear the upper three
                                                              bits and set the Z bit. This leaves the Status register as
The Status register, shown in Register 2-1, contains:         000u u1uu (where u = unchanged).

Arithmetic status of the ALU                                It is recommended, therefore, that only BCF, BSF,
Reset status                                                SWAPF and MOVWF instructions are used to alter the
Bank select bits for data memory (SRAM)                     Status register, because these instructions do not affect
                                                              any Status bits. For other instructions not affecting any
The Status register can be the destination for any            Status bits, see the "Instruction Set Summary".
instruction, like any other register. If the Status register
is the destination for an instruction that affects the Z,         Note 1: Bits IRP and RP1 (Status<7:6>) are not
DC or C bits, then the write to these three bits is                           used by the PIC12F683 and should be
disabled. These bits are set or cleared according to the                      maintained as clear. Use of these bits is
device logic. Furthermore, the TO and PD bits are not                         not recommended, since this may affect
writable. Therefore, the result of an instruction with the                    upward 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 out bit, respectively, in
                                                                              subtraction. See the SUBLW and SUBWF
                                                                              instructions for examples.

REGISTER 2-1:  STATUS STATUS REGISTER (ADDRESS: 03h OR 83h)

               Reserved Reserved R/W-0                        R-1  R-1         R/W-x  R/W-x  R/W-x
                                                                                        DC      C
               IRP               RP1  RP0                     TO   PD             Z               bit 0

               bit 7

bit 7          IRP: This bit is reserved and should be maintained as `0'

bit 6          RP1: This bit is reserved and should be maintained as `0'

bit 5          RP0: Register Bank Select bit (used for direct addressing)

               1 = Bank 1 (80hFFh)
               0 = Bank 0 (00h7Fh)

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 1: For borrow, the polarity is reversed. A subtraction is executed by adding the two's
                           complement of the second operand. For rotate (RRF, RLF) instructions, this bit is
                           loaded with either the high or low-order bit of the source register.

               Legend:                W = Writable bit             U = Unimplemented bit, read as `0'
               R = Readable bit       `1' = Bit is set             `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.       Preliminary                                     DS41211B-page 11
PIC12F683

2.2.2.2 Option Register                                           Note:  To achieve a 1:1 prescaler assignment for
                                                                         TMR0, assign the prescaler to the WDT by
The Option register is a readable and writable register,                 setting PSA bit to `1' (Option<3>). See
which contains various control bits to configure:                        Section 5.4 "Prescaler".

TMR0/WDT prescaler
External GP2/INT interrupt
TMR0
Weak pull-ups on GPIO

REGISTER 2-2:     OPTION_REG 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
                                                                                    PS1           PS0
                  GPPU INTEDG T0CS                        T0SE           PSA  PS2
                                                                                                      bit 0
                  bit 7

bit 7             GPPU: GPIO Pull-up Enable bit
bit 6             1 = GPIO pull-ups are disabled
bit 5             0 = GPIO pull-ups are enabled by individual port latch values in WPU register
bit 4
bit 3             INTEDG: Interrupt Edge Select bit
bit 2-0           1 = Interrupt on rising edge of GP2/INT pin
                  0 = Interrupt on falling edge of GP2/INT pin

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

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

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

                  PS<2:0>: Prescaler Rate Select bits
                               Bit Value TMR0 Rate WDT Rate(1)

                         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

                  Note 1: A dedicated 16-bit WDT postscaler is available for the PIC12F683. See
                              Section 12.6 "Watchdog Timer (WDT)" for more information.

                  Legend:             W = Writable bit                   U = Unimplemented bit, read as `0'
                  R = Readable bit    `1' = Bit is set                   `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

DS41211B-page 12                      Preliminary                              2004 Microchip Technology Inc.
                                                                               PIC12F683

2.2.2.3 INTCON Register                                    Note:  Interrupt flag bits are set when an interrupt
                                                                  condition occurs, regardless of the state of
The INTCON register is a readable and writable                    its corresponding enable bit or the global
register, which contains the various enable and flag bits         enable bit, GIE (INTCON<7>). User
for TMR0 register overflow, GPIO change and external              software should ensure the appropriate
GP2/INT pin interrupts.                                           interrupt flag bits are clear prior to
                                                                  enabling an interrupt.

REGISTER 2-3:  INTCON INTERRUPT CONTROL REGISTER (ADDRESS: 0Bh OR 8Bh)

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

               GIE               PEIE  T0IE                INTE   GPIE  T0IF   INTF       GPIF

               bit 7                                                                      bit 0

bit 7          GIE: Global Interrupt Enable bit

               1 = Enables all unmasked interrupts
               0 = Disables all interrupts

bit 6          PEIE: Peripheral Interrupt Enable bit

               1 = Enables all unmasked 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: GP2/INT External Interrupt Enable bit

               1 = Enables the GP2/INT external interrupt
               0 = Disables the GP2/INT external interrupt

bit 3          GPIE: GPIO Change Interrupt Enable bit(1)

               1 = Enables the GPIO change interrupt
               0 = Disables the GPIO change interrupt

bit 2          T0IF: TMR0 Overflow Interrupt Flag bit(2)

               1 = TMR0 register has overflowed (must be cleared in software)
               0 = TMR0 register did not overflow

bit 1          INTF: GP2/INT External Interrupt Flag bit

               1 = The GP2/INT external interrupt occurred (must be cleared in software)

               0 = The GP2/INT external interrupt did not occur

bit 0          GPIF: GPIO Change Interrupt Flag bit

               1 = When at least one of the GPIO<5:0> pins changed state (must be cleared in software)
               0 = None of the GPIO<5:0> pins have changed state

               Note 1: IOC register must also be enabled.

                                 2: T0IF bit is set when Timer0 rolls over. Timer0 is unchanged on Reset and should
                                      be initialized before clearing T0IF bit.

               Legend:                 W = Writable bit           U = Unimplemented bit, read as `0'
               R = Readable bit        `1' = Bit is set           `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.        Preliminary                                        DS41211B-page 13
PIC12F683

2.2.2.4 PIE1 Register                                             Note: Bit PEIE (INTCON<6>) must be set to
                                                                              enable any peripheral interrupt.
The PIE1 register contains the interrupt enable bits, as
shown in Register 2-4.

REGISTER 2-4:     PIE1 PERIPHERAL INTERRUPT ENABLE REGISTER 1 (ADDRESS: 8Ch)

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

                  EEIE   ADIE CCP1IE                          --   CMIE OSFIE TMR2IE TMR1IE

                  bit 7                                                         bit 0

bit 7             EEIE: EE Write Complete Interrupt Enable bit

                  1 = Enables the EE write complete interrupt
                  0 = Disables the EE write complete interrupt

bit 6             ADIE: A/D Converter Interrupt Enable bit

                  1 = Enables the A/D converter interrupt
                  0 = Disables the A/D converter interrupt

bit 5             CCP1IE: CCP1 Interrupt Enable bit

                  1 = Enables the CCP1 interrupt

                  0 = Disables the CCP1 interrupt

bit 4             Unimplemented: Read as `0'

bit 3             CMIE: Comparator Interrupt Enable bit

                  1 = Enables the Comparator 1 interrupt
                  0 = Disables the Comparator 1 interrupt

bit 2             OSFIE: Oscillator Fail Interrupt Enable bit

                  1 = Enables the oscillator fail interrupt

                  0 = disables the oscillator fail interrupt

bit 1             TMR2IE: Timer 2 to PR2 Match Interrupt Enable bit

                  1 = Enables the Timer 2 to PR2 match interrupt
                  0 = Disables the Timer 2 to PR2 match interrupt

bit 0             TMR1IE: Timer 1 Overflow Interrupt Enable bit

                  1 = Enables the Timer 1 overflow interrupt
                  0 = Disables the Timer 1 overflow interrupt

                  Legend:             W = Writable bit             U = Unimplemented bit, read as `0'
                  R = Readable bit    `1' = Bit is set             `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

DS41211B-page 14                      Preliminary                     2004 Microchip Technology Inc.
                                                                                  PIC12F683

2.2.2.5 PIR1 Register                                         Note:  Interrupt flag bits are set when an interrupt
                                                                     condition occurs, regardless of the state of
The PIR1 register contains the interrupt flag bits, as               its corresponding enable bit or the global
shown in Register 2-5.                                               enable bit, GIE (INTCON<7>). User
                                                                     software should ensure the appropriate
                                                                     interrupt flag bits are clear prior to
                                                                     enabling an interrupt.

REGISTER 2-5:  PIR1 PERIPHERAL INTERRUPT REQUEST REGISTER 1 (ADDRESS: 0Ch)

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

               EEIF              ADIF CCP1IF              --         CMIF OSFIF TMR2IF TMR1IF

               bit 7                                                                     bit 0

bit 7          EEIF: EEPROM Write Operation Interrupt Flag bit

               1 = The write operation completed (must be cleared in software)
               0 = The write operation has not completed or has not been started

bit 6          ADIF: A/D Interrupt Flag bit

               1 = A/D conversion complete

               0 = A/D conversion has not completed or has not been started

bit 5          CCP1IF: CCP1 Interrupt Flag bit

               Capture mode:
               1 = A TMR1 register capture occurred (must be cleared in software)
               0 = No TMR1 register capture occurred

               Compare mode:
               1 = A TMR1 register compare match occurred (must be cleared in software)
               0 = No TMR1 register compare match occurred

               PWM mode:
               Unused in this mode.

bit 4          Unimplemented: Read as `0'

bit 3          CMIF: Comparator Interrupt Flag bit

               1 = Comparator 1 output has changed (must be cleared in software)
               0 = Comparator 1 output has not changed

bit 2          OSFIF: Oscillator Fail Interrupt Flag bit

               1 = System oscillator failed, clock input has changed to INTOSC (must be cleared in software)

               0 = System clock operating

bit 1          TMR2IF: Timer 2 to PR2 Match Interrupt Flag bit

               1 = Timer 2 to PR2 match occurred (must be cleared in software)
               0 = Timer 2 to PR2 match has not occurred

bit 0          TMR1IF: Timer 1 Overflow Interrupt Flag bit

               1 = Timer 1 register overflowed (must be cleared in software)
               0 = Timer 1 has not overflowed

               Legend:                       W = Writable bit        U = Unimplemented bit, read as `0'
               R = Readable bit              `1' = Bit is set        `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.    Preliminary                                           DS41211B-page 15
PIC12F683

2.2.2.6 PCON Register

The Power Control (PCON) register contains flag bits
(see Table 12-2) to differentiate between a:

Power-on Reset (POR)
Brown-out Detect (BOD)
Watchdog Timer Reset (WDT)
External MCLR Reset

The PCON register also controls the Ultra Low-Power
Wake-up and software enable of the BOD.

The PCON register bits are shown in Register 2-6.

REGISTER 2-6:     PCON POWER CONTROL REGISTER (ADDRESS: 8Eh)

                  U-0    U-0          R/W-0 R/W-1       U-0  U-0  R/W-0  R/W-x
                                                                   POR   BOD
                  --     --           ULPWUE SBODEN     --   --
                                                                              bit 0
                  bit 7

bit 7-6           Unimplemented: Read as `0'
bit 5             ULPWUE: Ultra Low-Power Wake-up Enable bit
                  1 = Ultra Low-Power Wake-up enabled
bit 4             0 = Ultra Low-Power Wake-up disabled
                  SBODEN: Software BOD Enable bit(1)
bit 3-2           1 = BOD enabled
bit 1             0 = BOD disabled
                  Unimplemented: Read as `0'
bit 0             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)
                  BOD: Brown-out Detect Status bit
                  1 = No Brown-out Detect occurred
                  0 = A Brown-out Detect occurred (must be set in software after a Brown-out Detect occurs)

                     Note 1: BODEN<1:0> = 01 in the Configuration Word register for this bit to control the BOD.

                  Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
                  R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

DS41211B-page 16                      Preliminary             2004 Microchip Technology Inc.
                                                                                             PIC12F683

2.3 PCL and PCLATH                                                The stack operates as a circular buffer. This means that
                                                                  after the stack has been PUSHed eight times, the ninth
The Program Counter (PC) is 13 bits wide. The low byte            push overwrites the value that was stored from the first
comes from the PCL register, which is a readable and              push. The tenth push overwrites the second push (and
writable register. The high byte (PC<12:8>) is not                so on).
directly readable or writable and comes from PCLATH.
On any Reset, the PC is cleared. Figure 2-3 shows the                 Note 1: There are no Status bits to indicate stack
two situations for the loading of the PC. The upper                               overflow or stack underflow conditions.
example in Figure 2-3 shows how the PC is loaded on a
write to PCL (PCLATH<4:0>  PCH). The lower exam-                             2: There are no instructions/mnemonics
ple in Figure 2-3 shows how the PC is loaded during a                             called PUSH or POP. These are actions
CALL or GOTO instruction (PCLATH<4:3>  PCH).                                      that occur from the execution of the
                                                                                  CALL, RETURN, RETLW and RETFIE
FIGURE 2-3:                LOADING OF PC IN                                       instructions or the vectoring to an
                           DIFFERENT SITUATIONS                                   interrupt address.

         PCH               PCL                                    2.4 Indirect Addressing, INDF and
                                                                           FSR Registers
     12            87                     Instruction with
PC                                   0 PCL as                     The INDF register is not a physical register. Addressing
                                                                  the INDF register will cause indirect addressing.
                 PCLATH<4:0>              Destination
         5                                                        Indirect addressing is possible by using the INDF
                                 8                                register. Any instruction using the INDF register
                                          ALU Result              actually accesses data pointed to by the File Select
                                                                  Register (FSR). Reading INDF itself indirectly will
                   PCLATH                                         produce 00h. Writing to the INDF register indirectly
                                                                  results in a no operation (although Status bits may be
              PCH  87      PCL                                    affected). An effective 9-bit address is obtained by
     12 11 10                                  0                  concatenating the 8-bit FSR register and the IRP bit
PC                                                  GOTO, CALL    (Status<7>), as shown in Figure 2-4.

2 PCLATH<4:3>                         11                          A simple program to clear RAM location 20h-2Fh using
                                                    OPCODE<10:0>  indirect addressing is shown in Example 2-1.

                   PCLATH

2.3.1 COMPUTED GOTO                                               EXAMPLE 2-1: INDIRECT ADDRESSING

A computed GOTO is accomplished by adding an offset                            MOVLW  0x20   ;initialize pointer
to the program counter (ADDWF PCL). When perform-                              MOVWF  FSR    ;to RAM
ing a table read using a computed GOTO method, care               NEXT CLRF           INDF   ;clear INDF register
should be exercised if the table location crosses a PCL                        INCF   FSR    ;inc pointer
memory boundary (each 256-byte block). Refer to the                            BTFSS  FSR,4  ;all done?
Application Note AN556, "Implementing a Table Read"                            GOTO   NEXT   ;no clear next
(DS00556).                                                        CONTINUE                   ;yes continue

2.3.2 STACK

The PIC12F683 family has an 8-level x 13-bit wide
hardware stack (see Figure 2-1). The stack space is
not part of either program or data space and the stack
pointer is not readable or writable. The PC is PUSHed
onto the stack when a CALL instruction is executed or
an interrupt causes a branch. The stack is POPed in
the event of a RETURN, RETLW or a RETFIE instruction
execution. PCLATH is not affected by a PUSH or POP
operation.

2004 Microchip Technology Inc.  Preliminary                                                 DS41211B-page 17
PIC12F683

FIGURE 2-4:       DIRECT/INDIRECT ADDRESSING PIC12F683

             Direct Addressing                                                       Indirect Addressing
                                                                                    7 File Select Register 0
RP1(1) RP0 6      From Opcode 0                                     IRP(1)

Bank Select       Location Select                                   Bank Select     Location Select

                                     00          01  10         11

                                00h                                 180h

                  Data                                   Not Used
                  Memory

                                7Fh              Bank 1 Bank 2                1FFh
                                         Bank 0                 Bank 3

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

DS41211B-page 18                                 Preliminary                         2004 Microchip Technology Inc.
                                                                                              PIC12F683

3.0 CLOCK SOURCES                                          The PIC12F683 can be configured in one of eight clock
                                                           modes.
3.1 Overview
                                                           1. EC External clock with I/O on GP4.
The PIC12F683 has a wide variety of clock sources and
selection features to allow it to be used in a wide range  2. LP Low gain crystal or Ceramic Resonator
of applications while maximizing performance and mini-           Oscillator mode.
mizing power consumption. Figure 3-1 illustrates a block
diagram of the PIC12F683 clock sources.                    3. XT Medium gain crystal or Ceramic Resonator
                                                                 Oscillator mode.
Clock sources can be configured from external oscilla-
tors, quartz crystal resonators, ceramic resonators and    4. HS High gain crystal or Ceramic Resonator
Resistor-Capacitor (RC) circuits. In addition, the sys-          mode.
tem clock source can be configured from one of two
internal oscillators, with a choice of speeds selectable   5. RC External Resistor-Capacitor (RC) with
via software. Additional clock features include:                 FOSC/4 output on GP4

Selectable system clock source between external          6. RCIO External Resistor-Capacitor with I/O on
   or internal via software.                                     GP4.

Two-Speed Clock Start-up mode, which                     7. INTRC Internal oscillator with FOSC/4 output
   minimizes latency between external oscillator                 on GP4 and I/O on GP5.
   start-up and code execution.
                                                           8. INTRCIO Internal oscillator with I/O on GP4
Fail-Safe Clock Monitor (FSCM) designed to                     and GP5.
   detect a failure of the external clock source (LP,
   XT, HS, EC or RC modes) and switch to the               Clock source modes are configured by the FOSC<2:0>
   internal oscillator.                                    bits in the Configuration Word register (see
                                                           Section 12.0 "Special Features of the CPU"). The
                                                           internal clock can be generated by two oscillators. The
                                                           HFINTOSC is a high-frequency calibrated oscillator. The
                                                           LFINTOSC is a low-frequency uncalibrated oscillator.

FIGURE 3-1:  PIC12F683 CLOCK SOURCE BLOCK DIAGRAM

             External Oscillator                                          FOSC<2:0>
                                     Sleep                          (Configuration Word)

                                                                              SCS
                                                                       (OSCCON<0>)

OSC2                                                                LP, XT, HS, RC, RCIO, EC
OSC1

                                            Postscaler   IRCF<2:0>                                                                               System Clock
                                                                           MUX(OSCCON<6:4>)                                          (CPU and Peripherals)
                                                                                                                                MUX
             Internal Oscillator              8 MHz
                                                           111
                  HFINTOSC
                     8 MHz                    4 MHz
                                                           110
                  LFINTOSC
                     31 kHz                   2 MHz
                                                           101

                                              1 MHz
                                                           100

                                            500 kHz
                                                           011

                                            250 kHz
                                                           010

                                            125 kHz
                                                           001

                                             31 kHz 000

                                                                    Power-up Timer (PWRT)
                                                                    Watchdog Timer (WDT)
                                                                    Fail-Safe Clock Monitor (FSCM)

2004 Microchip Technology Inc.             Preliminary                                                                              DS41211B-page 19
PIC12F683

3.2 Clock Source Modes                                       3.3 External Clock Modes

Clock source modes can be classified as external or          3.3.1  OSCILLATOR START-UP TIMER
internal.                                                           (OST)

External clock modes rely on external circuitry            If the PIC12F683 is configured for LP, XT or HS modes,
   for the clock source. Examples are oscillator             the Oscillator Start-up Timer (OST) counts 1024 oscil-
   modules (EC mode), quartz crystal resonators or           lations from the OSC1 pin, following a Power-on Reset
   ceramic resonators (LP, XT and HS modes) and              (POR) and the Power-up Timer (PWRT) has expired (if
   Resistor-Capacitor (RC mode) circuits.                    configured), or a wake-up from Sleep. During this time,
                                                             the program counter does not increment and program
Internal clock sources are contained internally            execution is suspended. The OST ensures that the
   within the PIC12F683. The PIC12F683 has two               oscillator circuit, using a quartz crystal resonator or
   internal oscillators: the 8 MHz High-Frequency            ceramic resonator, has started and is providing a stable
   Internal Oscillator (HFINTOSC) and 31 kHz                 system clock to the PIC12F683. When switching
   Low-Frequency Internal Oscillator (LFINTOSC).             between clock sources a delay is required to allow the
                                                             new clock to stabilize. These oscillator delays are
The system clock can be selected between external or         shown in Table 3-1.
internal clock sources via the System Clock Selection
(SCS) bit (see Section 3.5 "Clock Switching").

                                                             In order to minimize latency between external oscillator
                                                             start-up and code execution, the Two-Speed Clock Start-
                                                             up mode can be selected (see Section 3.6 "Two-Speed
                                                             Clock Start-up Mode").

TABLE 3-1: OSCILLATOR DELAY EXAMPLES

Switch From        Switch To                                 Frequency                    Oscillator Delay

Sleep/POR          LFINTOSC                                       31 kHz            5 s10 s (approx.) CPU
                   HFINTOSC                                  125 kHz-8 MHz                    Start-up(1)

Sleep/POR          EC, RC                                    DC 20 MHz            1024 Clock Cycles (OST)
                                                                                            1 s (approx.)
LFINTOSC (31 kHz)  EC, RC                                    DC 20 MHz

Sleep/POR          LP, XT, HS                                31 kHz-20 MHz

LFINTOSC (31 kHz)  HFINTOSC                                  125 kHz-8 MHz

Note 1: The 5 s10 s start-up delay is based on a 1 MHz system clock.

3.3.2 EC MODE                                                FIGURE 3-2:            EXTERNAL CLOCK (EC)
                                                                                    MODE OPERATION
The External Clock (EC) mode allows an externally
generated logic level as the system clock source.            Clock from             OSC1/CLKIN
When operating in this mode, an external clock source        Ext. System                      PIC12F683
is connected to the OSC1 pin and the GP5 pin is
available for general purpose I/O. Figure 3-2 shows the                        GP4  I/O (OSC2)
pin connections for EC mode.

The Oscillator Start-up Timer (OST) is disabled when
EC mode is selected. Therefore, there is no delay in
operation after a Power-on Reset (POR) or wake-up
from Sleep. Because the PIC12F683 design is fully
static, stopping the external clock input will have the
effect of halting the device while leaving all data intact.
Upon restarting the external clock, the device will
resume operation as if no time had elapsed.

DS41211B-page 20               Preliminary                                           2004 Microchip Technology Inc.
                                                                                           PIC12F683

3.3.3 LP, XT, HS MODES                                     FIGURE 3-4:   CERAMIC RESONATOR
                                                                         OPERATION
The LP, XT and HS modes support the use of quartz                        (XT OR HS MODE)
crystal resonators or ceramic resonators connected to
the OSC1 and OSC2 pins (Figure 3-1). The mode                                     PIC12F683
selects a low, medium or high gain setting of the inter-                 OSC1
nal inverter-amplifier to support various resonator
types and speed.                                                 C1                               To Internal

LP Oscillator mode selects the lowest gain setting of                                             Logic
the internal inverter-amplifier. LP mode current con-
sumption is the least of the three modes. This mode is                   RP(3)             RF(2)  Sleep
best suited to drive resonators with a low drive level
specification, for example, tuning fork type crystals.           C2      OSC2

XT Oscillator mode selects the intermediate gain set-                               RS(1)
ting of the internal inverter-amplifier. XT mode current             Ceramic
consumption is the medium of the three modes. This                   Resonator
mode is best suited to drive resonators with a medium
drive level specification, for example, AT-cut quartz      Note 1: A series resistor (RS) may be required for
crystal resonators.                                                      ceramic resonators with low drive level.

HS Oscillator mode selects the highest gain setting of              2: The value of RF varies with the oscillator
the internal inverter-amplifier. HS mode current con-                    mode selected (typically between 2 M to
sumption is the highest of the three modes. This mode                    10 M).
is best suited for resonators that require a high drive
setting, for example, AT-cut quartz crystal resonators or           3: An additional parallel feedback resistor (RP)
ceramic resonators.                                                      may be required for proper ceramic resonator
                                                                         operation (typical value 1 M).
Figure 3-3 and Figure 3-4 show typical circuits for
quartz crystal and ceramic resonators, respectively.       3.3.4 EXTERNAL RC MODES

FIGURE 3-3:  QUARTZ CRYSTAL                                The External Resistor-Capacitor (RC) modes support
             OPERATION (LP, XT OR                          the use of an external RC circuit. This allows the
             HS MODE)                                      designer maximum flexibility in frequency choice while
                                                           keeping costs to a minimum when clock accuracy is not
                   PIC12F683                               required. There are two modes, RC and RCIO.

             OSC1                                          In RC mode, the RC circuit connects to the OSC1 pin.
                                                           The OSC2/CLKOUT pin outputs the RC oscillator fre-
C1                               To Internal               quency divided by 4. This signal may be used to provide
                                                           a clock for external circuitry, synchronization, calibra-
                                                           tion, test or other application requirements. Figure 3-5
                                                           shows the RC mode connections.

                                 Logic

           Quartz                                          FIGURE 3-5:          RC MODE
           Crystal
                        RF(2)    Sleep                              VDD
                  OSC2
                                                           REXT          OSC1                     Internal
              RS(1)                                                                                Clock
C2                                                         CEXT
                                                            VSS
Note 1: A series resistor (RS) may be required for                                                       PIC12F683
              quartz crystals with low drive level.                                  OSC2/CLKOUT
                                                                         FOSC/4
        2: The value of RF varies with the oscillator
              mode selected (typically between 2 M to
              10 M).

Note 1: Quartz crystal characteristics vary                Recommended values: 3 k  REXT  100 k
            according to type, package and manufac-                                           CEXT > 20 pF
            turer. The user should consult the manu-
            facturer data sheets for specifications and    In RCIO mode, the RC circuit is connected to the OSC1
            recommended application.                       pin. The OSC2 pin becomes an additional general pur-
                                                           pose I/O pin. The I/O pin becomes bit 4 of GPIO (GP4).
       2: Always verify oscillator performance over        Figure 3-6 shows the RCIO mode connections.
            the VDD and temperature range that is
            expected for the application.

2004 Microchip Technology Inc.         Preliminary                                               DS41211B-page 21
PIC12F683

FIGURE 3-6:       RCIO MODE                                3.4.1 INTRC AND INTRCIO MODES

        VDD                                                The INTRC and INTRCIO modes configure the internal
                                                           oscillators as the system clock source when the device
REXT                                                       is programmed using the Oscillator Selection (FOSC)
                                                           bits in the Configuration Word register (Register 12-1).
                  OSC1       Internal
                              Clock                        In INTRC mode, the OSC1 pin is available for general
                                                           purpose I/O. The OSC2/CLKOUT pin outputs the
CEXT                                 PIC12F683             selected internal oscillator frequency divided by 4. The
VSS               I/O (OSC2)                               CLKOUT signal may be used to provide a clock for
                                                           external circuitry, synchronization, calibration, test or
      GP4                                                  other application requirements.

Recommended values: 3 k  REXT  100 k                       In INTRCIO mode, the OSC1 and OSC2 pins are
                                    CEXT > 20 pF           available for general purpose I/O.

The RC oscillator frequency is a function of the supply    3.4.2 HFINTOSC
voltage, the resistor (REXT) and capacitor (CEXT)
values and the operating temperature. Other factors        The High-Frequency Internal Oscillator (HFINTOSC) is
affecting the oscillator frequency are:                    a factory calibrated 8 MHz internal clock source. The
                                                           frequency of the HFINTOSC can be altered approxi-
threshold voltage variation                              mately 12% via software using the OSCTUNE register
component tolerances                                     (Register 3-1).
packaging variations in capacitances
                                                           The output of the HFINTOSC connects to a postscaler
3.4 Internal Clock Modes                                   and multiplexer (see Figure 3-1). One of seven fre-
                                                           quencies can be selected via software using the IRCF
The PIC12F683 has two independent, internal oscilla-       bits (see Section 3.4.4 "Frequency Select Bits
tors that can be configured or selected as the system      (IRCF)").
clock source.
                                                           The HFINTOSC is enabled by selecting any frequency
1. The HFINTOSC (High-Frequency Internal Oscil-            between 8 MHz and 125 kHz (IRCF  000) as the
      lator) is factory calibrated and operates at 8 MHz.  system clock source (SCS = 1), or when Two-Speed
      The frequency of the HFINTOSC can be user            Start-up is enabled (IESO = 1 and IRCF  000).
      adjusted 12% via software using the OSCTUNE
      register (Register 3-1).                             The HF Internal Oscillator (HTS) bit (OSCCON<2>)
                                                           indicates whether the HFINTOSC is stable or not.
2. The LFINTOSC (Low-Frequency Internal
      Oscillator) is uncalibrated and operates at
      approximately 31 kHz.

The system clock speed can be selected via software
using the Internal Oscillator Frequency Select (IRCF)
bits.

The system clock can be selected between external or
internal clock sources via the System Clock Selection
(SCS) bit (see Section 3.5 "Clock Switching").

DS41211B-page 22                                  Preliminary   2004 Microchip Technology Inc.
                                                                                           PIC12F683

3.4.2.1 OSCTUNE Register                               When the OSCTUNE register is modified, the
                                                       HFINTOSC frequency will begin shifting to the new fre-
The HFINTOSC is factory calibrated but can be          quency. The HFINTOSC clock will stabilize within 1 ms.
adjusted in software by writing to the OSCTUNE         Code execution continues during this shift. There is no
register (Register 3-1).                               indication that the shift has occurred.

The OSCTUNE register has a tuning range of 12%.       OSCTUNE does not affect the LFINTOSC frequency.
The default value of the OSCTUNE register is `0'. The  Operation of features that depend on the LFINTOSC
value is a 5-bit two's complement number. Due to pro-  clock source frequency, such as the Power-up Timer
cess variation, the monotonicity and frequency step    (PWRT), Watchdog Timer (WDT), Fail-Safe Clock
cannot be specified.                                   Monitor (FSCM) and peripherals, are not affected by
                                                       the change in frequency.

REGISTER 3-1:           OSCTUNE OSCILLATOR TUNING RESISTOR (ADDRESS: 90h)

               bit 7-5  U-0      U-0        U-0        R/W-0 R/W-0 R/W-0 R/W-0                   R/W-0
               bit 4-0                                                                           TUN0
                        --       --         --         TUN4   TUN3  TUN2                   TUN1
                                                                                                      bit 0
                        bit 7

                        Unimplemented: Read as `0'

                        TUN<4:0>: Frequency Tuning bits

                        01111 = Maximum frequency
                        01110 =
                        
                        
                        
                        00001 =
                        00000 = Oscillator module is running at the calibrated frequency.
                        11111 =
                        
                        
                        
                        10000 = Minimum frequency

                        Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
                        R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
                        - n = Value at POR

2004 Microchip Technology Inc.             Preliminary                                    DS41211B-page 23
PIC12F683

3.4.3 LFINTOSC                                              3.4.5  HF AND LF INTOSC CLOCK
                                                                   SWITCH TIMING
The Low-Frequency Internal Oscillator (LFINTOSC) is
an uncalibrated (approximate) 31 kHz internal clock         When switching between the LFINTOSC and the
source.                                                     HFINTOSC, the new oscillator may already be shut
                                                            down to save power. If this is the case, there is a 10 s
The output of the LFINTOSC connects to a postscaler         delay after the IRCF bits are modified before the fre-
and multiplexer (see Figure 3-1). 31 kHz can be             quency selection takes place. The LTS/HTS bits will
selected via software using the IRCF bits (see              reflect the current active status of the LFINTOSC and
Section 3.4.4 "Frequency Select Bits (IRCF)"). The          the HFINTOSC oscillators. The timing of a frequency
LFINTOSC is also the frequency for the Power-up             selection is as follows:
Timer (PWRT), Watchdog Timer (WDT) and Fail-Safe
Clock Monitor (FSCM).                                       1. IRCF bits are modified.
                                                            2. If the new clock is shut down, a 10 s clock
The LFINTOSC is enabled by selecting 31 kHz
(IRCF = 000) as the system clock source (SCS = 1), or             start-up delay is started.
when any of the following are enabled:
                                                            3. Clock switch circuitry waits for a falling edge of
Two-Speed Start-up (IESO = 1 and IRCF = 000)                    the current clock.
Power-up Timer (PWRT)
Watchdog Timer (WDT)                                      4. CLKOUT is held low and the clock switch
Fail-Safe Clock Monitor (FSCM)                                  circuitry waits for a rising edge in the new clock.

The LF Internal Oscillator (LTS) bit (OSCCON<1>)            5. CLKOUT is now connected with the new clock.
indicates whether the LFINTOSC is stable or not.                  HTS/LTS bits are updated as required.

                                                            6. Clock switch is complete.

3.4.4 FREQUENCY SELECT BITS (IRCF)                          If the internal oscillator speed selected is between
                                                            8 MHz and 125 kHz, there is no start-up delay before
The output of the 8 MHz HFINTOSC and 31 kHz                 the new frequency is selected. This is because the old
LFINTOSC connects to a postscaler and multiplexer           and the new frequencies are derived from the
(see Figure 3-1). The Internal Oscillator Frequency         HFINTOSC via the postscaler and multiplexer.
select bits, IRCF<2:0> (OSCCON<6:4>), select the
frequency output of the internal oscillators. One of eight  3.5 Clock Switching
frequencies can be selected via software:
                                                            The system clock source can be switched between
8 MHz                                                     external and internal clock sources via software using
4 MHz (Default after Reset)                               the System Clock Select (SCS) bit.

2 MHz                                                     3.5.1 SYSTEM CLOCK SELECT (SCS) BIT
1 MHz
500 kHz                                                   The System Clock Select (SCS) bit (OSCCON<0>)
250 kHz                                                   selects the system clock source that is used for the
125 kHz                                                   CPU and peripherals.
31 kHz
                                                             When SCS = 0, the system clock source is
Note:      Following any Reset, the IRCF bits are set          determined by configuration of the FOSC<2:0>
           to `110' and the frequency selection is set         bits in the Configuration Word register (CONFIG).
           to 4 MHz. The user can modify the IRCF
           bits to select a different frequency.             When SCS = 1, the system clock source is
                                                               chosen by the internal oscillator frequency
                                                               selected by the IRCF bits. After a Reset, SCS is
                                                               always cleared.

                                                            Note:  Any automatic clock switch, which may
                                                                   occur from Two-Speed Start-up or Fail-
                                                                   Safe Clock Monitor, does not update the
                                                                   SCS bit. The user can monitor the OSTS
                                                                   (OSCCON<3>) to determine the current
                                                                   system clock source.

DS41211B-page 24               Preliminary                          2004 Microchip Technology Inc.
                                                                   PIC12F683

3.5.2  OSCILLATOR START-UP TIME-OUT                         3.6.1  TWO-SPEED START-UP MODE
       STATUS BIT                                                  CONFIGURATION

The Oscillator Start-up Time-out Status (OSTS) bit          Two-Speed Start-up mode is configured by the
(OSCCON<3>) indicates whether the system clock is           following settings:
running from the external clock source, as defined by
the FOSC bits, or from internal clock source. In partic-    IESO = 1 (CONFIG<10>) Internal/External Switch
ular, OSTS indicates that the Oscillator Start-up Timer        Over bit.
(OST) has timed out for LP, XT or HS modes.
                                                             SCS = 0.
                                                             FOSC configured for LP, XT or HS mode.

3.6 Two-Speed Clock Start-up Mode                           Two-Speed Start-up mode is entered after:

Two-Speed Start-up mode provides additional power            Power-on Reset (POR) and, if enabled, after
savings by minimizing the latency between external             PWRT has expired, or
oscillator start-up and code execution. In applications
that make heavy use of the Sleep mode, Two-Speed             Wake-up from Sleep.
Start-up will remove the external oscillator start-up time
from the time spent awake and can reduce the overall        If the external clock oscillator is configured to be any-
power consumption of the device.                            thing other than LP, XT or HS mode, then Two-Speed
                                                            Start-up is disabled. This is because the external clock
This mode allows the application to wake-up from            oscillator does not require any stabilization time after
Sleep, perform a few instructions using the INTOSC as       POR or an exit from Sleep.
the clock source and go back to Sleep without waiting
for the primary oscillator to become stable.                3.6.2  TWO-SPEED START-UP
                                                                   SEQUENCE

Note:  Executing a SLEEP instruction will abort             1. Wake-up from Power-on Reset or Sleep.
       the oscillator start-up time and will cause          2. Instructions begin execution by the internal
       the OSTS bit (OSCCON<3>) to remain
       clear.                                                     oscillator at the frequency set in the IRCF bits
                                                                  (OSCCON<6:4>).
When the PIC12F683 is configured for LP, XT or HS           3. OST enabled to count 1024 clock cycles.
modes, the Oscillator Start-up Timer (OST) is enabled       4. OST timed out, wait for falling edge of the
(see Section 3.3.1 "Oscillator Start-up Timer                     internal oscillator.
(OST)"). The OST timer will suspend program execu-          5. OSTS is set.
tion until 1024 oscillations are counted. Two-Speed
Start-up mode minimizes the delay in code execution         6. System clock held low until the next falling edge
by operating from the internal oscillator as the OST is           of new clock (LP, XT or HS mode).
counting. When the OST count reaches 1024 and the
OSTS bit (OSCCON<3>) is set, program execution              7. System clock is switched to external clock
switches to the external oscillator.                              source.

2004 Microchip Technology Inc.  Preliminary                       DS41211B-page 25
PIC12F683

3.6.3  CHECKING EXTERNAL/INTERNAL
       CLOCK STATUS

Checking the state of the OSTS bit (OSCCON<3>) will
confirm if the PIC12F683 is running from the external
clock source as defined by the FOSC bits in the
Configuration Word register (CONFIG) or the internal
oscillator.

FIGURE 3-7:          TWO-SPEED START-UP

                     Q1 Q2 Q3 Q4 Q1                    Q2  Q3      Q4  Q1

       INTOSC

                     TOST

             OSC1 0 1 1022 1023

             OSC2

Program Counter            PC                              PC + 1      PC + 2

       System Clock

DS41211B-page 26               Preliminary                          2004 Microchip Technology Inc.
                                                                     PIC12F683

3.7 Fail-Safe Clock Monitor                                 active and the WDT is cleared. The SCS bit
                                                            (OSCCON<0>) is not updated. Enabling FSCM does
The Fail-Safe Clock Monitor (FSCM) is designed to           not affect the LTS bit.
allow the device to continue to operate in the event of
an oscillator failure. The FSCM can detect oscillator       The FSCM sample clock is generated by dividing the
failure at any point after the device has exited a Reset    INTRC clock by 64. This will allow enough time
or Sleep condition and the Oscillator Start-up Timer        between FSCM sample clocks for a system clock edge
(OST) has expired.                                          to occur. Figure 3-8 shows the FSCM block diagram.

FIGURE 3-8:       FSCM BLOCK DIAGRAM                        On the rising edge of the sample clock, the monitoring
                                                            latch (CM = 0) will be cleared. On a falling edge of the
Primary                  Clock    Clock                     primary system clock, the monitoring latch will be set
Clock                     Fail   Failure                   (CM = 1). In the event that a falling edge of the sample
                        Detector  Detected                  clock occurs and the monitoring latch is not set, a clock
                                                            failure has been detected. The assigned internal oscil-
                                                            lator is enabled when FSCM is enabled, as reflected by
                                                            the IRCF.

LFINTOSC          64                                      Note:    Two-Speed Start-up is automatically
                                                                     enabled when the Fail-Safe Clock Monitor
Oscillator                                                           mode is enabled.

The FSCM function is enabled by setting the FCMEN           Note:    Primary clocks with a frequency  ~488 Hz
bit in the Configuration Word register (CONFIG). It is               will be considered failed by the FSCM. A
applicable to all external clock options (LP, XT, HS, EC,            slow starting oscillator can cause an
RC or IO modes).                                                     FSCM interrupt.

In the event of an external clock failure, the FSCM will    3.7.1 FAIL-SAFE CONDITION CLEARING
set the OSFIF bit (PIR1<2>) and generate an oscillator
fail interrupt if the OSFIE bit (PIE1<2>) is set. The       The Fail-Safe condition is cleared after a Reset, the
device will then switch the system clock to the internal    execution of a SLEEP instruction, or a modification of
oscillator. The system clock will continue to come from     the SCS bit. While in Fail-Safe condition, the
the internal oscillator unless the external clock recovers  PIC12F683 uses the internal oscillator as the system
and the Fail-Safe condition is exited.                      clock source. The IRCF bits (OSCCON<6:4>) can be
                                                            modified to adjust the internal oscillator frequency
The frequency of the internal oscillator will depend        without exiting the Fail-Safe condition.
upon the value contained in the IRCF bits
(OSCCON<6:4>). Upon entering the Fail-Safe                  The Fail-Safe condition must be cleared before the
condition, the OSTS bit (OSCCON<3>) is automati-            OSFIF flag can be cleared.
cally cleared to reflect that the internal oscillator is

FIGURE 3-9:       FSCM TIMING DIAGRAM

Sample Clock                                                Oscillator
                                                            Failure
        System
           Clock                                                                           Failure
                                                                                        Detected
         Output

CM Output
          (Q)

OSCFIF

                                 CM Test                    CM Test  CM Test

Note:        The system clock is normally at a much higher frequency than the sample clock. The relative frequencies in
             this example have been chosen for clarity.

2004 Microchip Technology Inc.           Preliminary                                               DS41211B-page 27
PIC12F683

3.7.2 RESET OR WAKE-UP FROM SLEEP                            OST has timed out). This is identical to Two-Speed
                                                             Start-up mode. Once the external oscillator is stable,
The FSCM is designed to detect oscillator failure at any     the LFINTOSC returns to its role as the FSCM source.
point after the device has exited a Reset or Sleep con-
dition and the Oscillator Start-up Timer (OST) has           Note:  Due to the wide range of oscillator start-up
expired. If the external clock is EC or RC mode,                    times, the Fail-Safe circuit is not active
monitoring will begin immediately following these                   during oscillator start-up (i.e., after exiting
events.                                                             Reset or Sleep). After an appropriate
                                                                    amount of time, the user should check the
For LP, XT or HS mode the external oscillator may                   OSTS bit (OSCCON<3>) to verify the
require a start-up time considerably longer than the                oscillator start-up and system clock
FSCM sample clock time or a false clock failure may be              switchover has successfully completed.
detected (see Figure 3-9). To prevent this, the internal
oscillator is automatically configured as the system
clock and functions until the external clock is stable (the

REGISTER 3-2:          OSCCON OSCILLATOR CONTROL REGISTER (ADDRESS: 8Fh)

              bit 7    U-0    R/W-1 R/W-1 R/W-0                     R-1     R-0  R-0                R/W-0
              bit 6-4                                                                                SCS
                       --     IRCF2        IRCF1             IRCF0 OSTS(1)  HTS  LTS
              bit 3                                                                                      bit 0
              bit 2    bit 7
              bit 1
              bit 0    Unimplemented: Read as `0'

                       IRCF<2:0>: Internal Oscillator Frequency Select bits

                       000 = 31 kHz
                       001 = 125 kHz
                       010 = 250 kHz
                       011 = 500 kHz
                       100 = 1 MHz
                       101 = 2 MHz
                       110 = 4 MHz
                       111 = 8 MHz

                       OSTS: Oscillator Start-up Time-out Status bit

                       1 = Device is running from the external system clock defined by FOSC<2:0>
                       0 = Device is running from the internal system clock (HFINTOSC or LFINTOSC)

                       HTS: HFINTOSC (High Frequency 8 MHz to 125 kHz) Status bit

                       1 = HFINTOSC is stable
                       0 = HFINTOSC is not stable

                       LTS: LFINTOSC (Low Frequency 31 kHz) Stable bit

                       1 = LFINTOSC is stable
                       0 = LFINTOSC is not stable

                       SCS: System Clock Select bit

                       1 = Internal oscillator is used for system clock
                       0 = Clock source defined by FOSC<2:0>

                       Note 1: Bit resets to `0' with Two-Speed Start-up and LP, XT or HS selected as the oscillator
                                     mode or Fail-Safe mode is enabled.

                       Legend:             W = Writable bit         U = Unimplemented bit, read as `0'
                       R = Readable bit    `1' = Bit is set         `0' = Bit is cleared x = Bit is unknown
                       - n = Value at POR

DS41211B-page 28                           Preliminary                       2004 Microchip Technology Inc.
                                                                           PIC12F683

TABLE 3-2: SUMMARY OF REGISTERS ASSOCIATED WITH CLOCK SOURCES

Addr         Name     Bit 7      Bit 6  Bit 5  Bit 4  Bit 3  Bit 2  Bit 1  Bit 0  Value on:  Value on
                                                                                  POR, BOD   all other
                      EEIF                                                                    Resets
                      EEIE
0Ch          PIR1                ADIF CCP1IF --       CMIF OSFIF TMR2IF TMR1IF 000- 0000 0000 0000
                       --
8Ch          PIE1      --        ADIE CCP1IE --       CMIE OSFIE TMR2IE TMR1IE 000- 0000 0000 0000
                      CPD
8Fh          OSCCON              IRCF2 IRCF1 IRCF0 OSTS(2) HTS      LTS    SCS -110 x000 -110 x000

90h          OSCTUNE             --     --     TUN4 TUN3 TUN2 TUN1 TUN0 ---0 0000 ---u uuuu

2007h(1) CONFIG                  CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0            --         --

Legend:      x = unknown, u = unchanged, -- = unimplemented locations read as `0'. Shaded cells are not used by oscillators.
Note 1:      See Register 12-1 for operation of all Configuration Word register bits.
             See Register 3-2 for details.
         2:

2004 Microchip Technology Inc.                Preliminary                            DS41211B-page 29
PIC12F683

NOTES:

DS41211B-page 30  Preliminary   2004 Microchip Technology Inc.
                                                                                  PIC12F683

4.0 GPIO PORT                                                  Note:  The ANSEL (9Fh) and CMCON0 (19h)
                                                                      registers must be initialized to configure
There are as many as six general purpose I/O pins                     an analog channel as a digital input. Pins
available. Depending on which peripherals are                         configured as analog inputs will read `0'.
enabled, some or all of the pins may not be available as
general purpose I/O. In general, when a peripheral is          EXAMPLE 4-1: INITIALIZING GPIO
enabled, the associated pin may not be used as a
general purpose I/O pin.                                       BCF    STATUS,RP0  ;Bank 0
                                                               CLRF   GPIO        ;Init GPIO
Note:  Additional information on I/O ports may be              MOVLW  07h         ;Set GP<2:0> to
       found in the "PICmicro Mid-Range MCU                   MOVWF  CMCON0      ;digital I/O
                                                               BSF    STATUS,RP0  ;Bank 1
       Family Reference Manual" (DS33023).                     CLRF   ANSEL       ;digital I/O
                                                               MOVLW  0Ch         ;Set GP<3:2> as inputs
4.1 GPIO and the TRISIO Registers                              MOVWF  TRISIO      ;and set GP<5:4,1:0>
                                                                                  ;as outputs
GPIO is a 6-bit wide, bidirectional port. The                  BCF STATUS,RP0     ;Bank 0
corresponding data direction register is TRISIO.
Setting a TRISIO bit (= 1) will make the corresponding         4.2 Additional Pin Functions
GPIO pin an input (i.e., put the corresponding output
driver in a High-impedance mode). Clearing a TRISIO            Every GPIO pin on the PIC12F683 has an interrupt-on-
bit (= 0) will make the corresponding GPIO pin an              change option and a weak pull-up option. GP0 has an
output (i.e., put the contents of the output latch on the      Ultra Low-Power Wake-up option. The next three
selected pin). The exception is GP3, which is input only       sections describe these functions.
and its TRISIO bit will always read as `1'. Example 4-1
shows how to initialize GPIO.                                  4.2.1 WEAK PULL-UPS

Reading the GPIO register reads the status of the pins,        Each of the GPIO pins, except GP3, has an individually
whereas writing to it will write to the port latch. All write  configurable weak internal pull-up. Control bits WPUx
operations are read-modify-write operations. There-            enable or disable each pull-up. Refer to Register 4-3.
fore, a write to a port implies that the port pins are read,   Each weak pull-up is automatically turned off when the
this value is modified and then written to the port data       port pin is configured as an output. The pull-ups are
latch. GP3 reads `0' when MCLRE = 1.                           disabled on a Power-on Reset by the GPPU bit
                                                               (OPTION<7>). A weak pull-up is automatically enabled
The TRISIO register controls the direction of the GPIO         for GP3 when configured as MCLR and disabled when
pins, even when they are being used as analog inputs.          GP3 is an I/O. There is no software control of the MCLR
The user must ensure the bits in the TRISIO register           pull-up.
are maintained set when using them as analog inputs.
I/O pins configured as analog input always read `0'.

REGISTER 4-1:    GPIO GENERAL PURPOSE I/O REGISTER (ADDRESS: 05h)

                 U-0             U-0  R/W-x R/W-x                     R/W-x       R/W-x  R/W-0  R/W-0
                                                                                          GP1    GP0
                 --              --   GP5                      GP4    GP3         GP2
                                                                                                     bit 0
                 bit 7

       bit 7-6:  Unimplemented: Read as `0'
       bit 5-0:
                 GPIO<5:0>: GPIO I/O pin
                 1 = Port pin is > VIH
                 0 = Port pin is < VIL

                 Legend:              W = Writable bit                U = Unimplemented bit, read as `0'
                 R = Readable bit     `1' = Bit is set                `0' = Bit is cleared x = Bit is unknown
                 - n = Value at POR

2004 Microchip Technology Inc.       Preliminary                                        DS41211B-page 31
PIC12F683

REGISTER 4-2:     TRISIO GPIO TRI-STATE REGISTER (ADDRESS: 85h)

                  U-0    U-0          R/W-1 R/W-1       R-1                   R/W-1   R/W-1    R/W-1
                                                                                     TRISIO1  TRISIO0
                  --     --           TRISIO5 TRISIO4 TRISIO3 TRISIO2
                                                                                                    bit 0
                  bit 7

bit 7-6:          Unimplemented: Read as `0'
bit 5-0:          TRISIO<5:0>: GPIO Tri-State Control bit
                  1 = GPIO pin configured as an input (tri-stated)
                  0 = GPIO pin configured as an output

                     Note 1: TRISIO<3> always reads `1'.
                            2: TRISIO<5:4> reads `1' in XT, LP and HS modes.

                  Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
                  R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

REGISTER 4-3:     WPU WEAK PULL-UP REGISTER (ADDRESS: 95h)

                  U-0    U-0          R/W-1 R/W-1       U-0                   R/W-1  R/W-1    R/W-1
                                                                                     WPU1     WPU0
                  --     --           WPU5 WPU4         --                    WPU2
                                                                                                   bit 0
                  bit 7

bit 7-6           Unimplemented: Read as `0'
bit 5-4           WPU<5:4>: Weak Pull-up register bit
                  1 = Pull-up enabled
bit 3             0 = Pull-up disabled
bit 2-0           Unimplemented: Read as `0'
                  WPU<2:0>: Weak Pull-up register bit
                  1 = Pull-up enabled
                  0 = Pull-up disabled

                     Note 1: Global GPPU must be enabled for individual pull-ups to be enabled.

                            2: The weak pull-up device is automatically disabled if the pin is in output mode
                                 (TRISIO = 0).

                            3: The GP3 pull-up is enabled when configured as MCLR and disabled as an I/O in
                                 the Configuration Word.

                            4: WPU<5:4> reads `1' in XT, LP and HS modes.

                  Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
                  R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

DS41211B-page 32                      Preliminary                              2004 Microchip Technology Inc.
                                                                         PIC12F683

4.2.2 INTERRUPT-ON-CHANGE                                   This interrupt can wake the device from Sleep. The user,
                                                            in the Interrupt Service Routine, clears the interrupt by:
Each of the GPIO pins is individually configurable as an
interrupt-on-change pin. Control bits IOCx enable or        a) Any read or write of GPIO. This will end the
disable the interrupt function for each pin. Refer to             mismatch condition, then
Register 4-4. The interrupt-on-change is disabled on a
Power-on Reset.                                             b) Clear the flag bit GPIF.

For enabled interrupt-on-change pins, the values are        A mismatch condition will continue to set flag bit GPIF.
compared with the old value latched on the last read of     Reading GPIO will end the mismatch condition and
GPIO. The `mismatch' outputs of the last read are OR'd      allow flag bit GPIF to be cleared. The latch holding the
together to set the GPIO Change Interrupt Flag bit          last read value is not affected by a MCLR nor BOD
(GPIF) in the INTCON register.                              Reset. After these resets, the GPIF flag will continue to
                                                            be set if a mismatch is present.

                                                            Note:  If a change on the I/O pin should occur
                                                                   when the read operation is being executed
                                                                   (start of the Q2 cycle), then the GPIF
                                                                   interrupt flag may not get set.

REGISTER 4-4:  IOC INTERRUPT-ON-CHANGE GPIO REGISTER (ADDRESS: 96h)

               U-0               U-0  R/W-0 R/W-0 R/W-0 R/W-0 R/W-0                  R/W-0
                                                                                     IOC0
               --                --   IOC5                  IOC4   IOC3  IOC2  IOC1
                                                                                          bit 0
               bit 7

bit 7-6        Unimplemented: Read as `0'
bit 5-0
               IOC<5:0>: Interrupt-on-change GPIO Control bit
               1 = Interrupt-on-change enabled
               0 = Interrupt-on-change disabled

                  Note 1: Global Interrupt Enable (GIE) must be enabled for individual interrupts to be
                              recognized.

                         2: IOC<5:4> reads `1' in XT, LP and HS modes.

               Legend:                W = Writable bit             U = Unimplemented bit, read as `0'
               R = Readable bit       `1' = Bit is set             `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

4.2.3 ULTRA LOW-POWER WAKE-UP                               This feature provides a low-power technique for period-
                                                            ically waking up the device from Sleep. The time-out is
The Ultra Low-Power Wake-up (ULPWU) on GP0                  dependent on the discharge time of the RC circuit
allows a slow falling voltage to generate an interrupt-     on GP0. See Example 4-2 for initializing the Ultra
on-change on GP0 without excess current consump-            Low-Power Wake-up module.
tion. The mode is selected by setting the ULPWUE bit
(PCON<5>). This enables a small current sink which          The series resistor provides overcurrent protection for the
can be used to discharge a capacitor on GP0.                GP0 pin and can allow for software calibration of the time-
                                                            out (see Figure 4-1). A timer can be used to measure the
To use this feature, the GP0 pin is configured to output    charge time and discharge time of the capacitor. The
`1' to charge the capacitor, interrupt-on-change for GP0    charge time can then be adjusted to provide the desired
is enabled and GP0 is configured as an input. The           interrupt delay. This technique will compensate for the
ULPWUE bit is set to begin the discharge and a SLEEP        affects of temperature, voltage and component accuracy.
instruction is performed. When the voltage on GP0           The Ultra Low-Power Wake-up peripheral can also be
drops below VIL, an interrupt will be generated which will  configured as a simple Programmable Low-Voltage
cause the device to wake-up. Depending on the state of      Detect or temperature sensor.
the GIE bit (INTCON<7>), the device will either jump to
the interrupt vector (0004h) or execute the next instruc-   Note:  For more information, refer to the Applica-
tion when the interrupt event occurs. See Section 4.2.2            tion Note AN879, "Using the Microchip
"Interrupt-on-change" and Section 12.4.3 "GPIO                     Ultra Low-Power Wake-up Module"
Interrupt" for more information.                                   (DS00879).

2004 Microchip Technology Inc.       Preliminary                              DS41211B-page 33
PIC12F683

EXAMPLE 4-2:      ULTRA LOW-POWER                                        4.2.4 PIN DESCRIPTIONS AND DIAGRAMS
                  WAKE-UP INITIALIZATION
                                                                         Each GPIO pin is multiplexed with other functions. The
BCF    STATUS,RP0                ;Bank 0                                 pins and their combined functions are briefly described
BSF    GPIO,0                    ;Set GP0 data latch                     here. For specific information about individual functions
MOVLW  H'7'                      ;Turn off                               such as the comparator or the A/D, refer to the
MOVWF  CMCON0                    ; comparator                            appropriate section in this data sheet.
BSF    STATUS,RP0                ;Bank 1
BCF    ANSEL,0                   ;GP0 to digital I/O                     4.2.4.1 GP0/AN0/CIN+/ICSPDAT/ULPWU
BCF    TRISIO,0                  ;Output high to
CALL   CapDelay                  ; charge capacitor                      Figure 4-1 shows the diagram for this pin. The GP0 pin
BSF    PCON,ULPWUE               ;Enable ULP Wake-up                     is configurable to function as one of the following:
BSF    IOC,0                     ;Select GP0 IOC
BSF    TRISIO,0                  ;GP0 to input                            a general purpose I/O
MOVLW  B'10001000'               ;Enable interrupt                        an analog input for the A/D
MOVWF  INTCON                    ; and clear flag                         an analog input to the comparator
SLEEP                            ;Wait for IOC                            an analog input to the Ultra Low-Power Wake-up
                                                                         In-Circuit Serial Programming data

FIGURE 4-1:       BLOCK DIAGRAM OF GP0

             Data Bus    DQ                               Analog                 VDD
                          CK Q                        Input Mode(1)               Weak
                    WR
                  WPU                                               GPPU

                     RD                                                                          VDD
                  WPU

                    WR   DQ                                                                              I/O pin
                  GPIO    CK Q                                                                   VSS

                                                                              -              VT

                                                                              +

                  WR     DQ                                                            IULP
             TRISIO       CK Q
                                                                                   VSS
                  RD                                             01              ULPWUE
             TRISIO
                                               Analog
                                           Input Mode(1)

                     RD  DQ                           QD
                  GPIO    CK Q

                    WR                                EN                 Q3
                    IOC
                                                      QD
                     RD
                    IOC

                  Interrupt-on-                                      EN
                     Change                           RD GPIO

                         To Comparator
                         To A/D Converter

             Note 1: Comparator mode and ANSEL determines Analog Input mode.

DS41211B-page 34                           Preliminary                                        2004 Microchip Technology Inc.
                                                                                              PIC12F683

4.2.4.2 GP1/AN1/CIN-/VREF/ICSPCLK                                    4.2.4.3 GP2/AN2/T0CKI/INT/COUT/CCP1

Figure 4-1 shows the diagram for this pin. The GP1 pin               Figure 4-3 shows the diagram for this pin. The GP2 pin
is configurable to function as one of the following:                 is configurable to function as one of the following:

a general purpose I/O                                              a general purpose I/O
an analog input for the A/D                                        an analog input for the A/D
a analog input to the comparator                                    the clock input for TMR0
a voltage reference input for the A/D                               an external edge triggered interrupt
In-Circuit Serial Programming clock                                 a digital output from the comparator
                                                                      a digital input/output for the CCP (refer to
FIGURE 4-2:     BLOCK DIAGRAM OF GP1
                                                                        Section 11.0 "Capture/Compare/PWM (CCP)
                                                                        Module").

Data     DQ         Analog                                  VDD      FIGURE 4-3:              BLOCK DIAGRAM OF GP2
Bus      CK Q  Input Mode(1)                                  Weak
                                                                     Data                       Analog
WR                         GPPU                                      Bus                     Input Mode
WPU
                                                                       WR
  RD                                                                 WPU               DQ                       VDD
WPU                                                                                     CK Q                       Weak

                                          VDD                          RD                     GPPU
                                                                     WPU
         DQ                                      I/O pin
  WR      CK Q                                                                                COUT          Analog
GPIO                                      VSS                                                 Enable         Input
                    Analog
                Input Mode(1)                                                          DQ                   Mode
                                                                                        CK Q                              VDD

         DQ                                                            WR                     COUT 1
          CK Q                                                       GPIO                                0

     WR                                                                                                                        I/O pin
TRISIO

     RD                                                                   WR           DQ                             VSS
TRISIO                                                               TRISIO             CK Q
                                                                                                Analog
   RD                                                                     RD                  Input Mode
GPIO                                                                 TRISIO
         DQ
  WR      CK Q                   QD                                     RD
  IOC                                                                GPIO

                                        EN                  Q3         WR              DQ
                                                                       IOC              CK Q
RD                               QD                                                                       QD
IOC

                                                        EN                                                  EN                 Q3
Interrupt-on-
                                                                                  RD                      QD
   change                                                                         IOC

                               RD GPIO                               Interrupt-on-                          EN
         To Comparator                                                  change
         To A/D Converter

                                                                                                      RD GPIO

Note 1: Comparator mode and ANSEL determines Analog                               To TMR0
            Input mode.                                                           To INT
                                                                                  To A/D Converter

                                                                     Note 1: Comparator mode and ANSEL determines Analog
                                                                                     Input mode.

2004 Microchip Technology Inc.                                      Preliminary                            DS41211B-page 35
PIC12F683

4.2.4.4 GP3/MCLR/VPP                                          4.2.4.5 GP4/AN3/T1G/OSC2/CLKOUT

Figure 4-4 shows the diagram for this pin. The GP3 pin        Figure 4-5 shows the diagram for this pin. The GP4 pin
is configurable to function as one of the following:          is configurable to function as one of the following:

a general purpose input                                     a general purpose I/O
as Master Clear Reset with weak pull-up                      an analog input for the A/D
                                                               a TMR1 gate input
FIGURE 4-4:       BLOCK DIAGRAM OF GP3                         a crystal/resonator connection
                                                               a clock output
                                              VDD
                  MCLRE                          Weak         FIGURE 4-5:       BLOCK DIAGRAM OF GP4

   Data              Reset          MCLRE              Input                      Analog
    Bus                        VSS                      pin                     Input Mode CLK(1)
                                                              Data
     RD  DQ                         MCLRE     VSS              Bus       DQ                      Modes
TRISIO    CK Q                                                            CK Q                                  VDD
                                                                WR
     RD                                                       WPU                                                  Weak
  GPIO
                                    QD                          RD                      GPPU
     WR                                                       WPU                          Oscillator
    IOC                                                                                      Circuit

                                    EN        Q3                                OSC1                           VDD
                                                                                         CLKOUT
RD                                  QD                                                    Enable                      I/O pin
IOC                                       EN                                                                   VSS
                                                                                 Fosc/4 1
Interrupt-on-                                                   WR       DQ
   change                                                     GPIO        CK Q                0

                                    RD GPIO                                          CLKOUT
                                                                                       Enable
                                                                   WR    DQ
                                                              TRISIO      CK Q       INTOSC/
                                                                                     RC/EC(2)
                                                                   RD
                                                              TRISIO                  CLKOUT
                                                                                       Enable

                                                                                          Analog
                                                                                       Input Mode

                                                                 RD      DQ                       QD
                                                              GPIO        CK Q

                                                                WR
                                                                IOC

                                                                                                  EN           Q3

                                                                     RD                           QD
                                                                    IOC

                                                                    Interrupt-on-                          EN
                                                                       change                     RD GPIO

                                                                                To T1G
                                                                                To A/D Converter

                                                              Note 1: CLK modes are XT, HS, LP, LPTMR1 and CLKOUT
                                                                          Enable.

                                                                     2: With CLKOUT option.

DS41211B-page 36                                       Preliminary               2004 Microchip Technology Inc.
                                                                   PIC12F683

4.2.4.6 GP5/T1CKI/OSC1/CLKIN

Figure 4-6 shows the diagram for this pin. The GP5 pin
is configurable to function as one of the following:

a general purpose I/O
a TMR1 clock input
a crystal/resonator connection
a clock input

FIGURE 4-6:     BLOCK DIAGRAM OF GP5

Data     DQ     INTOSC
Bus      CK Q   Mode
                              TMR1LPEN(1)
WR                                         VDD
WPU
                                                Weak

  RD                        GPPU
WPU

                                 Oscillator
                                   Circuit

                OSC2                          VDD

  WR     DQ
GPIO      CK Q

     WR  DQ                                          I/O pin
TRISIO    CK Q                                VSS

     RD                     INTOSC                      (1)
TRISIO                       Mode

   RD    DQ                      QD
GPIO      CK Q

  WR
  IOC

                                    EN        Q3

RD
IOC

Interrupt-on-                      QD
   change                                 EN

                                 RD GPIO

         To TMR1 or CLKGEN

Note     1: Timer1 LP oscillator enabled.

         2: When using Timer1 with LP oscillator, the
              Schmitt Trigger is bypassed.

2004 Microchip Technology Inc.                       Preliminary  DS41211B-page 37
PIC12F683

TABLE 4-1: SUMMARY OF REGISTERS ASSOCIATED WITH GPIO

Addr       Name   Bit 7  Bit 6  Bit 5  Bit 4  Bit 3  Bit 2  Bit 1  Bit 0  Value on:  Value on
                                                                          POR, BOD   all other
                                                                                      Resets

05h   GPIO        --     --     GP5 GP4 GP3 GP2 GP1 GP0 --xx xx00 --uu uu00

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

19h   CMCON0      -- COUT --           CINV CIS CM2 CM1 CM0 -0-0 0000 -0-0 0000

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

85h   TRISIO      --     -- TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111

95h   WPU         --     -- WPU5 WPU4 -- WPU2 WPU1 WPU0 --11 -111 --11 -111

96h   IOC         --     --     IOC5 IOC4 IOC3 IOC2 IOC1 IOC0 --00 0000 --00 0000

9Fh   ANSEL       -- ADCS2 ADCS1 ADCS0 ANS3 ANS2 ANS1 ANS0 -000 1111 -000 1111

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

DS41211B-page 38                       Preliminary                  2004 Microchip Technology Inc.
                                                                           PIC12F683

5.0 TIMER0 MODULE                                                 Counter mode is selected by setting the T0CS bit
                                                                  (OPTION_REG<5>). In this mode, the Timer0 module
The Timer0 module timer/counter has the following                 will increment either on every rising or falling edge of
features:                                                         pin GP2/T0CKI. The incrementing edge is determined
                                                                  by the source edge (T0SE) control bit
8-bit timer/counter                                             (OPTION_REG<4>). Clearing the T0SE bit selects the
Readable and writable                                           rising edge.
8-bit software programmable prescaler
Internal or external clock select                               Note:    Counter mode has specific external clock
Interrupt on overflow from FFh to 00h                                    requirements. Additional information on
Edge select for external clock                                           these requirements is available in the
                                                                           "PICmicro Mid-Range MCU Family
Figure 5-1 is a block diagram of the Timer0 module and                     Reference Manual (DS33023).
the prescaler shared with the WDT.

Note:  Additional information on the Timer0                       5.2 Timer0 Interrupt
       module is available in the "PICmicro
       Mid-Range MCU Family Reference                             A Timer0 interrupt is generated when the TMR0
       Manual" (DS33023).                                         register timer/counter overflows from FFh to 00h. This
                                                                  overflow sets the T0IF bit (INTCON<2>). The interrupt
5.1 Timer0 Operation                                              can be masked by clearing the T0IE bit (INTCON<5>).
                                                                  The T0IF bit must be cleared in software by the Timer0
Timer mode is selected by clearing the T0CS bit                   module Interrupt Service Routine before re-enabling
(OPTION_REG<5>). In Timer mode, the Timer0                        this interrupt. The Timer0 interrupt cannot wake the
module will increment every instruction cycle (without            processor from Sleep since the timer is shut off during
prescaler). If TMR0 is written, the increment is inhibited        Sleep.
for the following two instruction cycles. The user can
work around this by writing an adjusted value to the
TMR0 register.

FIGURE 5-1:          BLOCK DIAGRAM OF THE TIMER0/WDT PRESCALER

       CLKOUT           0                    8-bit                           1                     Data Bus
      (= FOSC/4)                          Prescaler                                     SYNC 2     8
                        1                                                               Cycles
     T0CKI                             0                                                             TMR0
       pin                                                                   0
               T0SE  T0CS                                                                          Set Flag bit T0IF
                                       1                                   PSA                        on Overflow

   WDTE                                                        8
SWDTEN                           PSA

        31 kHz                                                    PS<2:0>    1
        INTRC                                                                              WDT
                                   16-bit
                                 Prescaler 16                                            Time-out
                                                                             0
                     Watchdog
                       Timer                                               PSA

                                          WDTPS<3:0>

Note 1: T0SE, T0CS, PSA and PS<2:0> are bits in the Option register, WDTPS<3:0> are bits in the WDTCON register.

2004 Microchip Technology Inc.                Preliminary                                         DS41211B-page 39
PIC12F683

5.3 Using Timer0 with an External                           5.4.1              SWITCHING PRESCALER
         Clock                                                                 ASSIGNMENT

When no prescaler is used, the external clock input is      The prescaler assignment is fully under software control
the same as the prescaler output. The synchronization       (i.e., it can be changed "on the fly" during program
of T0CKI, with the internal phase clocks, is accom-         execution). To avoid an unintended device Reset, the
plished by sampling the prescaler output on the Q2 and      following instruction sequence (Example 5-1 and
Q4 cycles of the internal phase clocks. Therefore, it is    Example 5-2) must be executed when changing the
necessary for T0CKI to be high for at least 2 TOSC (and     prescaler assignment from Timer0 to WDT.
a small RC delay of 20 ns) and low for at least 2 TOSC
(and a small RC delay of 20 ns). Refer to the electrical    EXAMPLE 5-1:                   CHANGING PRESCALER
specification of the desired device.                                                       (TIMER0  WDT)

Note:  The ANSEL (9Fh) and CMCON0 (19h)                            BCF         STATUS,RP0         ;Bank 0
       registers must be initialized to configure                                                 ;Clear WDT
       an analog channel as a digital input. Pins                  CLRWDT                         ;Clear TMR0 and
       configured as analog inputs will read `0'.                                                 ; prescaler
                                                                   CLRF TMR0                      ;Bank 1

                                                                   BSF         STATUS,RP0

5.4 Prescaler                                                      MOVLW b'00101111'              ;Required if desired
                                                                   MOVWF OPTION_REG               ; PS2:PS0 is
An 8-bit counter is available as a prescaler for the               CLRWDT                         ; 000 or 001
Timer0 module, or as a postscaler for the Watchdog                                                ;
Timer. For simplicity, this counter will be referred to as         MOVLW       b'00101xxx'        ;Set postscaler to
"prescaler" throughout this data sheet. The prescaler              MOVWF       OPTION_REG         ; desired WDT rate
assignment is controlled in software by the control bit            BCF         STATUS,RP0         ;Bank 0
PSA (OPTION_REG<3>). Clearing the PSA bit will
assign the prescaler to Timer0. Prescale values are         To change prescaler from the WDT to the TMR0
selectable via the PS<2:0> bits (OPTION_REG<2:0>).          module, use the sequence shown in Example 5-2. This
                                                            precaution must be taken even if the WDT is disabled.
The prescaler is not readable or writable. When
assigned to the Timer0 module, all instructions writing     EXAMPLE 5-2:                   CHANGING PRESCALER
to the TMR0 register (e.g., CLRF 1, MOVWF 1,                                               (WDT  TIMER0)
BSF 1, x....etc.) will clear the prescaler. When
assigned to WDT, a CLRWDT instruction will clear the               CLRWDT                         ;Clear WDT and
prescaler along with the Watchdog Timer.                                                          ; prescaler
                                                                                                  ;Bank 1
                                                                   BSF         STATUS,RP0

                                                                   MOVLW b'xxxx0xxx'              ;Select TMR0,
                                                                                                  ; prescale, and
                                                                   MOVWF OPTION_REG               ; clock source
                                                                                                  ;
                                                                   BCF         STATUS,RP0         ;Bank 0

TABLE 5-1: REGISTERS ASSOCIATED WITH TIMER0

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

01h    TMR0       Timer0 Module Register                                                          xxxx xxxx uuuu uuuu

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

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

85h    TRISIO     --     -- TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111

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

DS41211B-page 40                          Preliminary                                        2004 Microchip Technology Inc.
                                                                                              PIC12F683

6.0 TIMER1 MODULE WITH GATE                                     The Timer1 Control register (T1CON), shown in
         CONTROL                                                Register 6-1, is used to enable/disable Timer1 and
                                                                select the various features of the Timer1 module.
The PIC12F683 has a 16-bit timer. Figure 6-1 shows
the basic block diagram of the Timer1 module. Timer1            Note:  Additional information on timer modules is
has the following features:                                            available in the PICmicro Mid-Range
                                                                       MCU Family Reference Manual
16-bit timer/counter (TMR1H:TMR1L)                                   (DS33023).
Readable and writable
Internal or external clock selection
Synchronous or asynchronous operation
Interrupt on overflow from FFFFh to 0000h
Wake-up upon overflow (Asynchronous mode)
Optional external enable input

   - Selectable gate source: T1G or COUT
      (T1GSS)

   - Selectable gate polarity (T1GINV)
Optional LP oscillator

FIGURE 6-1:        TIMER1 ON THE PIC12F683 BLOCK DIAGRAM

                                                                          TMR1ON                                                          T1GINV
                                                                          TMR1GE

                                                                          TMR1ON

             Set Flag bit                                                 TMR1GE
             TMR1IF on
             Overflow            TMR1(1)                        To Comparator Module
                                                                TMR1 Clock

                                                                       0                      Synchronized

                                 TMR1H       TMR1L                                            Clock Input

                                 Oscillator                            1

     OSC1/T1CKI                                     (2)                         T1SYNC        Synchronize
                                                                   1                                 det
       OSC2/T1G                                        FOSC/4
           INTOSC                                     Internal                   Prescaler    Sleep Input
                                                      Clock                       1, 2, 4, 8
without CLKOUT                                                                                  1
        T1OSCEN                                                    0
                                                                                         2

                                                                              T1CKPS<1:0>

                                                                TMR1CS

                                                                          COUT                0

                                                                                                                                   T1GSS

Note 1: Timer1 increments on the rising edge.
        2: ST Buffer is low-power type when using LP oscillator or high-speed type when using T1CKI.

2004 Microchip Technology Inc.                     Preliminary                                                                           DS41211B-page 41
PIC12F683

6.1 Timer1 Modes of Operation                               6.3 Timer1 Prescaler

Timer1 can operate in one of three modes:                   Timer1 has four prescaler options allowing 1, 2, 4 or 8
                                                            divisions of the clock input. The T1CKPS bits
16-bit timer with prescaler                               (T1CON<5:4>) control the prescale counter. The
16-bit synchronous counter                                prescale counter is not directly readable or writable;
16-bit asynchronous counter                               however, the prescaler counter is cleared upon a write
                                                            to TMR1H or TMR1L.
In Timer mode, Timer1 is incremented on every
instruction cycle. In Counter mode, Timer1 is               6.4 Timer1 Gate
incremented on the rising edge of the external clock
input T1CKI. In addition, the Counter mode clock can        Timer1 gate source is software configurable to be the
be synchronized to the microcontroller system clock or      T1G pin or the output of the comparator. This allows the
run asynchronously.                                         device to directly time external events using T1G or
                                                            analog events using the comparator. See CMCON1
In Counter and Timer modules, the counter/timer clock       (Register 8-2) for selecting the Timer1 gate source.
can be gated by the Timer 1 gate, which can be              This feature can simplify the software for a Delta-Sigma
selected as either the T1G pin or the comparator            A/D converter and many other applications. For more
output.                                                     information on Delta-Sigma A/D Converters, see the
                                                            Microchip web site (www.microchip.com).
If an external clock oscillator is needed (and the
microcontroller is using the INTOSC w/o CLKOUT),            Note:  TMR1GE bit (T1CON<6>) must be set to
Timer1 can use the LP oscillator as a clock source.                use either T1G or COUT as the Timer1
                                                                   gate source. See Register 8-2 for more
Note:  In Counter mode, a falling edge must be                     information on selecting the Timer1 gate
       registered by the counter prior to the first                source.
       incrementing rising edge.

6.2 Timer1 Interrupt                                        Timer1 gate can be inverted by using the T1GINV bit
                                                            (T1CON<7>), whether it originates from the T1G pin or
The Timer1 register pair (TMR1H:TMR1L) increments           the comparator output. This configures Timer1 to
to FFFFh and rolls over to 0000h. When Timer1 rolls         measure either the active-high or active-low time
over, the Timer1 interrupt flag bit (PIR1<0>) is set. To    between events.
enable the interrupt on rollover, you must set these bits:

Timer1 interrupt enable bit (PIE1<0>)
PEIE bit (INTCON<6>)
GIE bit (INTCON<7>).

The interrupt is cleared by clearing the TMR1IF bit in
the Interrupt Service Routine.

Note:  The TMR1H:TTMR1L register pair and the
       TMR1IF bit should be cleared before
       enabling interrupts.

FIGURE 6-2:       TIMER1 INCREMENTING EDGE

      T1CKI = 1
      when TMR1
      Enabled

T1CKI = 0
when TMR1
Enabled

Note 1:          Arrows indicate counter increments.
         2:      In Counter mode, a falling edge must be registered by the counter prior to the first incrementing rising edge of the
                 clock.

DS41211B-page 42               Preliminary                          2004 Microchip Technology Inc.
                                                            PIC12F683

REGISTER 6-1:  T1CON TIMER1 CONTROL REGISTER (ADDRESS: 10h)

               R/W-0 R/W-0 R/W-0 R/W-0               R/W-0  R/W-0   R/W-0    R/W-0
                                                                   TMR1CS  TMR1ON
               T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC
                                                                                  bit 0
               bit 7

bit 7          T1GINV: Timer1 Gate Invert bit(1)
bit 6          1 = Timer1 gate is inverted
               0 = Timer1 gate is not inverted
bit 5-4        TMR1GE: Timer1 Gate Enable bit(2)
bit 3          If TMR1ON = 0:
               This bit is ignored.
bit 2          If TMR1ON = 1:
               1 = Timer1 is on if Timer1 gate is not active
bit 1          0 = Timer1 is on
bit 0
               T1CKPS<1:0>: Timer1 Input Clock Prescale Select bits
               11 = 1:8 Prescale Value
               10 = 1:4 Prescale Value
               01 = 1:2 Prescale Value
               00 = 1:1 Prescale Value

               T1OSCEN: LP Oscillator Enable Control bit
               If INTOSC without CLKOUT oscillator is active:
               1 = LP oscillator is enabled for Timer1 clock
               0 = LP oscillator is off
               Else:
               This bit is ignored.

               T1SYNC: Timer1 External Clock Input Synchronization Control bit
               TMR1CS = 1:
               1 = Do not synchronize external clock input
               0 = Synchronize external clock input
               TMR1CS = 0:
               This bit is ignored. Timer1 uses the internal clock.

               TMR1CS: Timer1 Clock Source Select bit
               1 = External clock from T1CKI pin (on the rising edge)
               0 = Internal clock (FOSC/4)

               TMR1ON: Timer1 On bit
               1 = Enables Timer1
               0 = Stops Timer1

                  Note 1: T1GINV bit inverts the Timer1 gate logic, regardless of source.

                         2: TMR1GE bit must be set to use either T1G pin or COUT, as selected by the T1GSS
                              bit (CMCON1<1>), as a Timer1 gate source.

               Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
               R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.    Preliminary                     DS41211B-page 43
PIC12F683

6.5 Timer1 Operation in                                          6.6 Timer1 Oscillator
         Asynchronous Counter Mode
                                                                 A crystal oscillator circuit is built-in between pins OSC1
If control bit T1SYNC (T1CON<2>) is set, the external            (input) and OSC2 (amplifier output). It is enabled by
clock input is not synchronized. The timer continues to          setting control bit, T1OSCEN (T1CON<3>). The oscil-
increment asynchronous to the internal phase clocks.             lator is a low-power oscillator rated up to 32 kHz. It will
The timer will continue to run during Sleep and can gen-         continue to run during Sleep. It is primarily intended for
erate an interrupt on overflow, which will wake-up the           a 32 kHz crystal. Table 3-1 shows the capacitor
processor. However, special precautions in software are          selection for the Timer1 oscillator.
needed to read/write the timer (see Section 6.5.1
"Reading and Writing Timer1 in Asynchronous                      The Timer1 oscillator is shared with the system LP
Counter Mode").                                                  oscillator. Thus, Timer1 can use this mode only when
                                                                 the primary system clock is derived from the internal
Note:  The ANSEL (9Fh) and CMCON0 (19h)                          oscillator. As with the system LP oscillator, the user
       registers must be initialized to configure                must provide a software time delay to ensure proper
       an analog channel as a digital input. Pins                oscillator start-up.
       configured as analog inputs will read `0'.
                                                                 TRISIO5 and TRISIO4 bits are set when the Timer1
6.5.1  READING AND WRITING TIMER1 IN                             oscillator is enabled. GP5 and GP4 read as `0' and
       ASYNCHRONOUS COUNTER                                      TRISIO5 and TRISIO4 bits read as `1'.
       MODE
                                                                 Note:  The oscillator requires a start-up and
                                                                        stabilization time before use. Thus,
Reading TMR1H or TMR1L while the timer is running                       T1OSCEN should be set and a suitable
from an external asynchronous clock will ensure a valid                 delay observed prior to enabling Timer1.
read (taken care of in hardware). However, the user
should keep in mind that reading the 16-bit timer in two         6.7 Timer1 Operation During Sleep
8-bit values itself, poses certain problems, since the
timer may overflow between the reads.                            Timer1 can only operate during Sleep when setup in
                                                                 Asynchronous Counter mode. In this mode, an external
For writes, it is recommended that the user simply stop          crystal or clock source can be used to increment the
the timer and write the desired values. A write                  counter. To set up the timer to wake the device:
contention may occur by writing to the timer registers,
while the register is incrementing. This may produce an          Timer1 must be on (T1CON<0>)
unpredictable value in the timer register.                        TMR1IE bit (PIE1<0>) must be set
                                                                  PEIE bit (INTCON<6>) must be set
Reading the 16-bit value requires some care.
Examples in the "PICmicro Mid-Range MCU Family                  The device will wake-up on an overflow. If the GIE bit
Reference Manual (DS33023) show how to read and                  (INTCON<7>) is set, the device will wake-up and jump
write Timer1 when it is running in Asynchronous mode.            to the Interrupt Service Routine (0004h) on an overflow.
                                                                 If the GIE bit is clear, execution will continue with the
                                                                 next instruction.

TABLE 6-1: REGISTERS ASSOCIATED WITH TIMER1

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

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

0Ch PIR1          EEIF ADIF CCP1IF  --                    CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

0Eh TMR1L Holding Register for the Least Significant Byte of the 16-bit TMR1 Register         xxxx xxxx uuuu uuuu

0Fh TMR1H Holding Register for the Most Significant Byte of the 16-bit TMR1 Register          xxxx xxxx uuuu uuuu

10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 uuuu uuuu

1Ah CMCON1 --     --    --          --                    --     -- T1GSS CMSYNC ---- --10 ---- --10

8Ch PIE1          EEIE ADIE CCP1IE  --                    CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

Legend: x = unknown, u = unchanged, -- = unimplemented, read as `0'. Shaded cells are not used by the Timer1 module.

DS41211B-page 44                    Preliminary                                         2004 Microchip Technology Inc.
                                                                 PIC12F683

7.0 TIMER2 MODULE                                       7.1 Timer2 Operation

The Timer2 module timer has the following features:     Timer2 can be used as the PWM time base for the
                                                        PWM mode of the CCP module. The TMR2 register is
8-bit timer (TMR2 register)                           readable and writable and is cleared on any device
8-bit period register (PR2)                           Reset. The input clock (FOSC/4) has a prescale option
Readable and writable (both registers)                of 1:1, 1:4 or 1:16, selected by control bits,
Software programmable prescaler (1:1, 1:4, 1:16)      T2CKPS<1:0> (T2CON<1:0>). The match output of
Software programmable postscaler (1:1 to 1:16)        TMR2 goes through a 4-bit postscaler (which gives a
Interrupt on TMR2 match with PR2                      1:1 to 1:16 scaling inclusive) to generate a TMR2
                                                        interrupt (latched in flag bit, TMR2IF (PIR1<1>)).
Timer2 has a control register shown in Register 7-1.
TMR2 can be shut off by clearing control bit, TMR2ON    The prescaler and postscaler counters are cleared
(T2CON<2>), to minimize power consumption.              when any of the following occurs:
Figure 7-1 is a simplified block diagram of the Timer2
module. The prescaler and postscaler selection of       A write to the TMR2 register
Timer2 are controlled by this register.                  A write to the T2CON register
                                                         Any device Reset (Power-on Reset, MCLR Reset,

                                                           Watchdog Timer Reset or Brown-out Reset)

                                                        TMR2 is not cleared when T2CON is written.

REGISTER 7-1:  T2CON TIMER2 CONTROL REGISTER (ADDRESS: 12h)

               U-0               R/W-0  R/W-0           R/W-0  R/W-0 R/W-0    R/W-0    R/W-0
                                                                            T2CKPS1  T2CKPS0
               -- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON
                                                                                             bit 0
               bit 7

bit 7          Unimplemented: Read as `0'
bit 6-3
               TOUTPS<3:0>: Timer2 Output Postscale Select bits
bit 2          0000 = 1:1 postscale
bit 1-0        0001 = 1:2 postscale
               
               
               
               1111 = 1:16 postscale

               TMR2ON: Timer2 On bit
               1 = Timer2 is on
               0 = Timer2 is off

               T2CKPS<1:0>: Timer2 Clock Prescale Select bits
               00 = Prescaler is 1
               01 = Prescaler is 4
               1x = Prescaler is 16

               Legend:                  W = Writable bit       U = Unimplemented bit, read as `0'
               R = Readable bit         `1' = Bit is set       `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.         Preliminary                         DS41211B-page 45
PIC12F683

7.2 Timer2 Interrupt

The Timer2 module has an 8-bit period register, PR2.
Timer2 increments from 00h until it matches PR2 and
then resets to 00h on the next increment cycle. PR2 is
a readable and writable register. The PR2 register is
initialized to FFh upon Reset.

FIGURE 7-1:       TIMER2 BLOCK DIAGRAM

                                                                      TMR2                 Sets Flag
                                                                      Output              bit TMR2IF

FOSC/4              Prescaler                 TMR2             Reset
                  1:1, 1:4, 1:16
                                       Comparator                     Postscaler
                            2
                                                               EQ 1:1 to 1:16
                    T2CKPS<1:0>

                                              PR2                     4

                                                                      TOUTPS<3:0>

TABLE 7-1: REGISTERS ASSOCIATED WITH TIMER2

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

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

0Ch PIR1     EEIF ADIF CCP1IF          --               CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

11h TMR2 Holding Register for the 8-bit TMR2 Register                                     0000 0000 0000 0000

12h T2CON -- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000

8Ch PIE1     EEIE ADIE CCP1IE          --               CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

92h PR2 Timer2 Module Period Register                                                     1111 1111 1111 1111

Legend: x = unknown, u = unchanged, -- = unimplemented, read as `0'. Shaded cells are not used by the Timer2 module.

DS41211B-page 46                           Preliminary                              2004 Microchip Technology Inc.
                                                                   PIC12F683

8.0 COMPARATOR MODULE                                   The CMCON0 register (Register 8-1) controls the
                                                        comparator input and output multiplexers. A block
The comparator module contains one analog com-          diagram of the various comparator configurations is
parator. The inputs to the comparator are multiplexed   shown in Figure 8-3.
with I/O port pins, GP0 and GP1, while the outputs are
multiplexed to GP2. An on-chip Comparator Voltage
Reference (CVREF) can also be applied to the inputs of
the comparator.

REGISTER 8-1:  CMCON0 COMPARATOR CONTROL REGISTER 0 (ADDRESS: 19h)

               U-0               R-0    U-0             R/W-0 R/W-0 R/W-0 R/W-0      R/W-0
                                                                                      CM0
               --                COUT   --              CINV  CIS  CM2          CM1
                                                                                          bit 0
               bit 7

bit 7          Unimplemented: Read as `0'

bit 6          COUT: Comparator Output bit

               When CINV = 0:
               1 = VIN+ > VIN-
               0 = VIN+ < VIN-

               When CINV = 1:
               1 = VIN+ < VIN-
               0 = VIN+ > VIN-

bit 5          Unimplemented: Read as `0'

bit 4          CINV: Comparator Output Inversion bit

               1 = Output inverted
               0 = Output not inverted

bit 3          CIS: Comparator Input Switch bit

               When CM<2:0> = 110 or 101:
               1 = VIN- connects to CIN+
               0 = VIN- connects to CIN-

bit 2          CM<2:0>: Comparator Mode bits

               Figure 8-3 shows the Comparator modes and CM<2:0> bit settings.

               Legend:                  W = Writable bit      U = Unimplemented bit, read as `0'
               R = Readable bit         `1' = Bit is set      `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.         Preliminary                             DS41211B-page 47
PIC12F683

8.1 Comparator Operation                                     FIGURE 8-1:         SINGLE COMPARATOR
                                                                                +
A single comparator is shown in Figure 8-1 along with                 VIN+
the relationship between the analog input levels and                  VIN-                              Output
the digital output. When the analog input at VIN+ is less                       
than the analog input VIN-, the output of the comparator
is a digital low level. When the analog input at VIN+ is       VIVNI-N
greater than the analog input VIN-, the output of the
comparator is a digital high level. The shaded areas of        VVININ++
the output of the comparator in Figure 8-1 represent
the uncertainty due to input offsets and response time.        OOuuttppuutt

Note:  To use CIN+ and CIN- pins as analog                   8.2 Analog Input Connection
       inputs, the appropriate bits must be                           Considerations
       programmed in the CMCON0 (19h)
       register.                                             A simplified circuit for an analog input is shown in
                                                             Figure 8-2. Since the analog pins are connected to a
The polarity of the comparator output can be inverted        digital output, they have reverse biased diodes to VDD
by setting the CINV bit (CMCON0<4>). Clearing CINV           and VSS. The analog input, therefore, must be between
results in a non-inverted output. A complete table           VSS and VDD. If the input voltage deviates from this
showing the output state versus input conditions and         range by more than 0.6V in either direction, one of the
the polarity bit is shown in Table 8-1.                      diodes is forward biased and a latch-up may occur. A
                                                             maximum source impedance of 10 k is recommended
TABLE 8-1: OUTPUT STATE VS. INPUT                            for the analog sources. Any external component
                     CONDITIONS                              connected to an analog input pin, such as a capacitor
                                                             or a Zener diode, should have very little leakage
Input Conditions            CINV  COUT                       current.

VIN- > VIN+                 0     0                              Note 1: When reading the GPIO register, all pins
VIN- < VIN+                                                                  configured as analog inputs will read as a
VIN- > VIN+                 0     1                                          `0'. Pins configured as digital inputs will
VIN- < VIN+                                                                  convert as analog inputs according to the
                            1     1                                          input specification.

                            1     0                                     2: Analog levels on any pin defined as a
                                                                             digital input may cause the input buffer to
                                                                             consume more current than is specified.

FIGURE 8-2:       ANALOG INPUT MODEL
                                                        VDD

             Rs < 10K                                      VT = 0.6V            RIC

                       AIN

       VA                   CPIN                           VT = 0.6V  ILEAKAGE
                                                                      500 nA
                            5 pF

                                                                      Vss

             Legend:   CPIN       = Input Capacitance

                       VT         = Threshold Voltage

                       ILEAKAGE = Leakage Current at the pin due to various junctions

                       RIC        = Interconnect Resistance

                       RS         = Source Impedance

                       VA         = Analog Voltage

DS41211B-page 48                     Preliminary                                      2004 Microchip Technology Inc.
                                                                                PIC12F683

8.3 Comparator Configuration                            Note:   Comparator interrupts should be disabled
                                                                during a Comparator mode change.
There are eight modes of operation for the comparator.          Otherwise, a false interrupt may occur.
The CMCON0 register is used to select these modes.
Figure 8-3 shows the eight possible modes.

If the Comparator mode is changed, the comparator
output level may not be valid for the specified mode
change delay shown in Section 15.0 "Electrical
Specifications".

FIGURE 8-3:    COMPARATOR I/O OPERATING MODES

Comparator Reset (POR Default Value Low Power) Comparator Off (Lowest Power)

CM<2:0> = 000                                           CM<2:0> = 111

  GP1/CIN- A                     Off (Read as `0')      GP1/CIN- D              Off (Read as `0')
  GP0/CIN+ A                                            GP0/CIN+ D
  GP2/COUT D
                                                        GP2/COUT D
Comparator without Output
CM<2:0> = 010                                           Comparator w/o Output and with Internal Reference
                                                        CM<2:0> = 100

GP1/CIN- A                       COUT                   GP1/CIN- A              COUT
GP0/CIN+ A                                              GP0/CIN+ D
GP2/COUT D
                                                        GP2/COUT D

                                                                       From CVREF Module

Comparator with Output and Internal Reference           Multiplexed Input with Internal Reference and Output
CM<2:0> = 011                                           CM<2:0> = 101

GP1/CIN- A                                   COUT       GP1/CIN- A     CIS = 0            COUT
GP0/CIN+ D              From CVREF Module               GP0/CIN+ A     CIS = 1
GP2/COUT D
                                                          GP2/COUT D
Comparator with Output                                                                                  From CVREF Module
CM<2:0> = 001
                                                        Multiplexed Input with Internal Reference
                                                        CM<2:0> = 110

GP1/CIN- A                       COUT                   GP1/CIN- A     CIS = 0
GP0/CIN+ A                                              GP0/CIN+ A     CIS = 1
GP2/COUT D                                              GP2/COUT D                        COUT

                                                                                From CVREF Module

Legend: A = Analog Input, ports always read `0'         CIS = Comparator Input Switch (CMCON0<3>)
              D = Digital Input

2004 Microchip Technology Inc.                    Preliminary                  DS41211B-page 49
PIC12F683

FIGURE 8-4:       COMPARATOR OUTPUT BLOCK DIAGRAM

                                                 MULTIPLEX                                       CINV
                                       Port Pins

    To TMR1                   CMSYNC        Q                   D
  To COUT pin                       0
                                    1                       EN               TMR1
To Data Bus                                                            Clock Source(1)
                         RD CMCON
                                            Q                   D

                                                            EN              Q3

Set CMIF bit                                                Q       D

                                                                  EN        RD CMCON
                                                                CL

                                                                                     Reset
Note 1: Comparator output is latched on falling edge of T1 clock source.

REGISTER 8-2:     CMCON1 COMPARATOR CONTROL REGISTER 1 (ADDRESS: 1Ah)

                  U-0    U-0           U-0                     U-0     U-0                  U-0  R/W-1    R/W-0
                                                                                                        CMSYNC
                  --     --            --                      --      --                   --   T1GSS
                                                                                                               bit 0
                  bit 7

bit 7-2:          Unimplemented: Read as `0'
bit 1
                  T1GSS: Timer1 Gate Source Select bit
bit 0             1 = Timer1 gate source is T1G pin (GP4 must be configured as digital input)
                  0 = Timer1 gate source is comparator output

                  CMSYNC: Comparator Synchronize bit
                  1 = COUT output synchronized with falling edge of Timer1 clock
                  0 = COUT output not synchronized with Timer1 clock

                  Legend:              W = Writable bit                U = Unimplemented bit, read as `0'
                  R = Readable bit     `1' = Bit is set                `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

DS41211B-page 50                       Preliminary                                           2004 Microchip Technology Inc.
                                                                   PIC12F683

8.4 Comparator Output                                       8.5 Comparator Interrupt

The comparator output is read through the CMCON0            The comparator interrupt flag is set whenever there is
register. This bit is read-only. The comparator output      a change in the output value of the comparator.
may also be directly output to the GP2 pin. When            Software will need to maintain information about the
enabled, multiplexors in the output path of the GP2 pin     status of the output bit, as read from CMCON0<6>, to
will switch and the output will be the unsynchronized       determine the actual change that has occurred. The
output of the comparator. The uncertainty of the            CMIF bit (PIR1<3>) is the Comparator Interrupt Flag.
comparator is related to the input offset voltage and       This bit must be reset in software by clearing it to `0'.
the response time given in the specifications.              Since it is also possible to write a `1' to this register, a
Figure 8-4 shows the output block diagram for the           simulated interrupt may be initiated.
comparator.
                                                            The CMIE bit (PIE1<3>) and the PEIE bit
The TRISIO bit will still function as an output enable/     (INTCON<6>) must be set to enable the interrupts. In
disable for the GP2 pin while in this mode.                 addition, the GIE bit must also be set. If any of these
                                                            bits are cleared, the interrupt is not enabled, though the
The polarity of the comparator outputs can be changed       CMIF bit will still be set if an interrupt condition occurs.
using the CINV bit (CMCON0<4>).
                                                            The user, in the Interrupt Service Routine, can clear the
Timer1 gate source can be configured to use the T1G         interrupt in the following manner:
pin or the comparator output as selected by the T1GSS
bit (CMCON1<1>). This feature can be used to time the       a) Any read or write of CMCON0. This will end the
duration or interval of analog events. The output of the          mismatch condition.
comparator can also be synchronized with Timer1 by
setting the CMSYNC bit (CMCON1<0>). When                    b) Clear flag bit CMIF.
enabled, the output of the comparator is latched on the
falling edge of the Timer1 clock source. If a prescaler is  A mismatch condition will continue to set flag bit CMIF.
used with Timer1, the comparator is latched after the       Reading CMCON0 will end the mismatch condition and
prescaler. To prevent a race condition, the comparator      allow flag bit CMIF to be cleared.
output is latched on the falling edge of the Timer1 clock
source and Timer1 increments on the rising edge of its      Note:  If a change in the CMCON0 register
clock source. See Figure 8-4, Comparator Output                    (COUT) should occur when a read
Block Diagram and Figure 6-1, Timer1 on the                        operation is being executed (start of the
PIC12F683 Block Diagram for more information.                      Q2 cycle), then the CMIF (PIR1<3>)
                                                                   interrupt flag may not get set.
It is recommended to synchronize the comparator with
Timer1 by setting the CMSYNC bit when the compara-
tor is used as the Timer1 gate source. This ensures
Timer1 does not miss an increment if the comparator
changes during an increment.

2004 Microchip Technology Inc.  Preliminary                       DS41211B-page 51
PIC12F683

8.6 Comparator Reference                                8.6.2     VOLTAGE REFERENCE
                                                                  ACCURACY/ERROR
The comparator module also allows the selection of an
internally generated voltage reference for one of the   The full range of VSS to VDD cannot be realized due to the
comparator inputs. The VRCON register, Register 8-3,    construction of the module. The transistors on the top
controls the voltage reference module shown in          and bottom of the resistor ladder network (Figure 8-5)
Figure 8-5.                                             keep CVREF from approaching VSS or VDD. The excep-
                                                        tion is when the module is disabled by clearing the VREN
8.6.1  CONFIGURING THE VOLTAGE                          bit (VRCON<7>). When disabled, the reference voltage
       REFERENCE                                        is VSS when VR<3:0> is `0000' and the VRR
                                                        (VRCON<5>) bit is set. This allows the comparator to
The voltage reference can output 32 distinct voltage    detect a zero-crossing and not consume CVREF module
levels, 16 in a high range and 16 in a low range.       current.

The following equation determines the output voltages:  The voltage reference is VDD derived and therefore, the
                                                        CVREF output changes with fluctuations in VDD. The
EQUATION 8-1:                                           tested absolute accuracy of the comparator voltage
                                                        reference can be found in Section 15.0 "Electrical
   VRR = 1 (Low Range): CVREF = (VR3:VR0/24) x VDD      Specifications".
   VRR = 0 (High Range):
   CVREF = (VDD/4) + (VR3:VR0 X VDD/32)

FIGURE 8-5:             COMPARATOR VOLTAGE REFERENCE BLOCK DIAGRAM

                                                                            16 Stages

                        8R           R              R          R  R

VDD                                                                                    8R  VRR

                 VREN   16-1 Analog
           CVREF to         MUX
       Comparator

                 Input

                        VR<3:0>

                                        VREN
                                        VR<3:0> = 0000
                                        VRR

DS41211B-page 52                        Preliminary                   2004 Microchip Technology Inc.
                                                                             PIC12F683

8.7 Comparator Response Time                             While the comparator is enabled during Sleep, an inter-
                                                         rupt will wake-up the device. If the GIE bit
Response time is the minimum time, after selecting a     (INTCON<7>) is set, the device will jump to the inter-
new reference voltage or input source, before the        rupt vector (0004h) and if clear, continues execution
comparator output is ensured to have a valid level. If   with the next instruction. If the device wakes up from
the internal reference is changed, the maximum delay     Sleep, the contents of the CMCON0, CMCON1 and
of the internal voltage reference must be considered     VRCON registers are not affected.
when using the comparator output. Otherwise, the
maximum delay of the comparator should be used           8.9 Effects of a Reset
(Table 15-8).
                                                         A device Reset forces the CMCON0, CMCON1 and
8.8 Operation During Sleep                               VRCON registers to their Reset states. This forces the
                                                         comparator module to be in the Comparator Reset
The comparator and voltage reference, if enabled         mode, CM<2:0> = 000 and the voltage reference to its
before entering Sleep mode, remain active during         off state. Thus, all potential inputs are analog inputs
Sleep. This results in higher Sleep currents than shown  with the comparator and voltage reference disabled to
in the power-down specifications. The additional         consume the smallest current possible.
current consumed by the comparator and the voltage
reference is shown separately in the specifications. To
minimize power consumption while in Sleep mode, turn
off the comparator, CM<2:0> = 111 and voltage
reference, VRCON<7> = 0.

REGISTER 8-3:  VRCON VOLTAGE REFERENCE CONTROL REGISTER (ADDRESS: 99h)

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

               VREN              --   VRR                --  VR3  VR2        VR1  VR0

               bit 7                                                              bit 0

bit 7          VREN: CVREF Enable bit
               1 = CVREF circuit powered on
bit 6          0 = CVREF circuit powered down, no IDD drain and CVREF = VSS
bit 5
               Unimplemented: Read as `0'
bit 4
bit 3-0        VRR: CVREF Range Selection bit
               1 = Low range
               0 = High range

               Unimplemented: Read as `0'
               VR<3:0>: CVREF Value Selection 0  VR <3:0>  15
               When VRR = 1: CVREF = (VR<3:0>/24) * VDD
               When VRR = 0: CVREF = VDD/4 + (VR<3:0>/32) * VDD

               Legend:                W = Writable bit       U = Unimplemented bit, read as `0'
               R = Readable bit       `1' = Bit is set       `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.       Preliminary                            DS41211B-page 53
PIC12F683

TABLE 8-2: REGISTERS ASSOCIATED WITH COMPARATOR MODULE

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

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

0Ch  PIR1         EEIF ADIF CCP1IF --     CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

19h  CMCON0 -- COUT       --       CINV   CIS    CM2    CM1    CM0 -0-0 0000 -0-0 0000

1Ah  CMCON1 --        --  --       --     --     -- T1GSS CMSYNC ---- --10 ---- --10

85h  TRISIO       --  -- TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111

8Ch  PIE1         EEIE ADIE CCPIE  --     CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

99h  VRCON VREN --        VRR      --     VR3    VR2    VR1    VR0 0-0- 0000 0-0- 0000

Legend: x = unknown, u = unchanged, -- = unimplemented, read as `0'. Shaded cells are not used by the comparator or
                comparator voltage reference module.

DS41211B-page 54                   Preliminary                  2004 Microchip Technology Inc.
                                                                               PIC12F683

9.0 ANALOG-TO-DIGITAL                                       circuit. The output of the sample and hold is connected
         CONVERTER (A/D) MODULE                             to the input of the converter. The converter generates a
                                                            binary result via successive approximation and stores
The Analog-to-Digital converter (A/D) allows                the result in a 10-bit register. The voltage reference
conversion of an analog input signal to a 10-bit binary     used in the conversion is software selectable to either
representation of that signal. The PIC12F683 has four       VDD or a voltage applied by the VREF pin. Figure 9-1
analog inputs, multiplexed into one sample and hold         shows the block diagram of the A/D on the PIC12F683.

FIGURE 9-1:  A/D BLOCK DIAGRAM

                                               VDD

                                 VREF                       VCFG = 0
                                                            VCFG = 1

                    GP0/AN0                                               A/D
             GP1/AN1/VREF
                                               GO/DONE                         10
                    GP2/AN2
                    GP4/AN3                                                    ADFM
                                                                                                      10
                                     CHS<1:0>
                                                                                      ADRESH ADRESL
                                                            ADON
                                                                     VSS

9.1 A/D Configuration and Operation                         9.1.3 VOLTAGE REFERENCE

There are two registers available to control the            There are two options for the voltage reference to the
functionality of the A/D module:                            A/D converter: either VDD is used, or an analog voltage
1. ADCON0 (Register 9-1)                                    applied to VREF is used. The VCFG bit (ADCON0<6>)
2. ANSEL (Register 9-2)                                     controls the voltage reference selection. If VCFG is set,
                                                            then the voltage on the VREF pin is the reference;
9.1.1 ANALOG PORT PINS                                      otherwise, VDD is the reference.

The ANS<3:0> bits (ANSEL<3:0>) and the TRISIO bits          9.1.4 CONVERSION CLOCK
control the operation of the A/D port pins. Set the cor-
responding TRISIO bits to set the pin output driver to its  The A/D conversion cycle requires 11 TAD. The source
high-impedance state. Likewise, set the corresponding       of the conversion clock is software selectable via the
ANSEL bit to disable the digital input buffer.              ADCS bits (ANSEL<6:4>). There are seven possible
                                                            clock options:
Note:  Analog voltages on any pin that is defined
       as a digital input may cause the input                FOSC/2
       buffer to conduct excess current.                     FOSC/4
                                                             FOSC/8
9.1.2 CHANNEL SELECTION                                     FOSC/16
                                                             FOSC/32
There are four analog channels on the PIC12F683,             FOSC/64
AN0 through AN3. The CHS bits (ADCON0<3:2>)                  FRC (dedicated internal oscillator)
control which channel is connected to the sample and
hold circuit.                                               For correct conversion, the A/D conversion clock
                                                            (1/TAD) must be selected to ensure a minimum TAD of
                                                            1.6 s. Table 9-1 shows a few TAD calculations for
                                                            selected frequencies.

2004 Microchip Technology Inc.                Preliminary                                                DS41211B-page 55
PIC12F683

TABLE 9-1: TAD vs. DEVICE OPERATING FREQUENCIES

A/D Clock Source (TAD)                                  Device Frequency

Operation         ADCS<2:0>  20 MHz                     5 MHz             4 MHz        1.25 MHz

2 TOSC            000        100 ns(2)                  400 ns(2)         500 ns(2)      1.6 s
                             200 ns(2)                  800 ns(2)          1.0 s(2)
4 TOSC            100        400 ns(2)                                                   3.2 s
                             800 ns(2)                    1.6 s            2.0 s
8 TOSC            001                                     3.2 s                         6.4 s
                               1.6 s                     6.4 s            4.0 s     12.8 s(3)
16 TOSC           101          3.2 s                   12.8 s(3)         8.0 s(3)   25.6 s(3)
                             2-6 s(1,4)                2-6 s(1,4)       16.0 s(3)   51.2 s(3)
32 TOSC           010                                                     2-6 s(1,4)  2-6 s(1,4)

64 TOSC           110

A/D RC            x11

Legend: Shaded cells are outside of recommended range.

Note 1: The A/D RC source has a typical TAD time of 4 s for VDD > 3.0V.

2: These values violate the minimum required TAD time.

3: For faster conversion times, the selection of another clock source is recommended.

4: When the device frequency is greater than 1 MHz, the A/D RC clock source is only recommended if the
      conversion will be performed during Sleep.

DS41211B-page 56                     Preliminary                           2004 Microchip Technology Inc.
                                                                               PIC12F683

9.1.5 STARTING A CONVERSION                                A/D conversion sample. Instead, the
                                                           ADRESH:ADRESL registers will retain the value of the
The A/D conversion is initiated by setting the             previous conversion. After an aborted conversion, a
GO/DONE bit (ADCON0<1>). When the conversion is            2 TAD delay is required before another acquisition can
complete, the A/D module:                                  be initiated. Following the delay, an input acquisition is
                                                           automatically started on the selected channel.
Clears the GO/DONE bit
Sets the ADIF flag (PIR1<6>)                                Note: The GO/DONE bit should not be set in the
Generates an interrupt (if enabled)                                     same instruction that turns on the A/D.

If the conversion must be aborted, the GO/DONE bit
can be cleared in software. The ADRESH:ADRESL
registers will not be updated with the partially complete

FIGURE 9-2:  A/D CONVERSION TAD CYCLES

TCY to TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11
                            b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

             Conversion Starts
    Holding Capacitor is Disconnected from Analog Input (typically 100 ns)

Set GO bit                                                 ADRESH and ADRESL registers are Loaded,
                                                           GO bit is Cleared,
                                                           ADIF bit is Set,
                                                           Holding Capacitor is Connected to Analog Input

9.1.6 CONVERSION OUTPUT

The A/D conversion can be supplied in two formats: left
or right shifted. The ADFM bit (ADCON0<7>) controls
the output format. Figure 9-3 shows the output formats.

FIGURE 9-3:  10-BIT A/D RESULT FORMAT

                                   ADRESH                                      ADRESL

(ADFM = 0)   MSB                                                          LSB

             bit 7                                         bit 0   bit 7                                   bit 0

                                   10-bit A/D Result                           Unimplemented: Read as `0'

(ADFM = 1)                                         MSB                                                     LSB
                            bit 7                           bit 0
                                                                   bit 7                                   bit 0

             Unimplemented: Read as `0'                                   10-bit A/D Result

2004 Microchip Technology Inc.            Preliminary                                       DS41211B-page 57
PIC12F683

REGISTER 9-1:     ADCON0 A/D CONTROL REGISTER (ADDRESS: 1Fh)

                  R/W-0 R/W-0         U-0  R/W-0 R/W-0 R/W-0         R/W-0  R/W-0
                                                                   GO/DONE  ADON
                  ADFM VCFG           --   --           CHS1 CHS0
                                                                                 bit 0
                  bit 7

bit 7             ADFM: A/D Result Formed Select bit
bit 6             1 = Right justified
bit 5-4           0 = Left justified
bit 3-2
                  VCFG: Voltage Reference bit
bit 1             1 = VREF pin
                  0 = VDD
bit 0
                  Unimplemented: Read as `0'

                  CHS<1:0>: Analog Channel Select bits
                  00 = Channel 00 (AN0)
                  01 = Channel 01 (AN1)
                  10 = Channel 02 (AN2)
                  11 = Channel 03 (AN3)

                  GO/DONE: A/D Conversion Status bit
                  1 = A/D conversion cycle in progress. Setting this bit starts an A/D conversion cycle.

                        This bit is automatically cleared by hardware when the A/D conversion has completed.
                  0 = A/D conversion completed/not in progress

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

                  Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
                  R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

DS41211B-page 58                      Preliminary        2004 Microchip Technology Inc.
                                                              PIC12F683

REGISTER 9-2:  ANSEL ANALOG SELECT REGISTER (ADDRESS: 9Fh)

               U-0               R/W-0 R/W-0 R/W-0   R/W-1  R/W-1  R/W-1  R/W-1
                                                                   ANS1   ANS0
               --                ADCS2 ADCS1 ADCS0   ANS3   ANS2
                                                                               bit 0
               bit 7

bit 7          Unimplemented: Read as `0'
bit 6-4
               ADCS<2:0>: A/D Conversion Clock Select bits
bit 3-0        000 = FOSC/2
               001 = FOSC/8
               010 = FOSC/32
               x11 = FRC (clock derived from a dedicated internal oscillator = 500 kHz max)
               100 = FOSC/4
               101 = FOSC/16
               110 = FOSC/64

               ANS<3:0>: Analog Select bits
               Analog select between analog or digital function on pins ANS<3:0>, respectively.
               1 = Analog input. Pin is assigned as analog input(1).
               0 = Digital I/O. Pin is assigned to port or special function.

                  Note 1: Setting a pin to an analog input automatically disables the digital input circuitry,
                              weak pull-ups and interrupt-on-change if available. The corresponding TRISIO bit
                              must be set to input mode in order to allow external control of the voltage on the pin.

               Legend:             W = Writable bit  U = Unimplemented bit, read as `0'
               R = Readable bit    `1' = Bit is set  `0' = Bit is cleared x = Bit is unknown
               - n = Value at POR

2004 Microchip Technology Inc.    Preliminary                     DS41211B-page 59
PIC12F683                                              EXAMPLE 9-1: A/D CONVERSION

9.1.7 CONFIGURING THE A/D                              ;This code block configures the A/D

After the A/D module has been configured as desired,   ;for polling, Vdd reference, R/C clock
the selected channel must be acquired before the
conversion is started. The analog input channels must  ;and GP0 input.
have their corresponding TRISIO bits selected as
inputs.                                                ;

To determine sample time, see Section 15.0 "Electri-   ;Conversion start & wait for complete
cal Specifications". After this sample time has
elapsed, the A/D conversion can be started.            ;polling code included.

These steps should be followed for an A/D conversion:  ;

1. Configure the A/D module:                              BSF STATUS,RP0 ;Bank 1
       Configure analog/digital I/O (ANSEL)
       Configure voltage reference (ADCON0)              MOVLW B'01110001' ;A/D RC clock
       Select A/D input channel (ADCON0)
       Select A/D conversion clock (ANSEL)               MOVWF ANSEL      ;Set GP0 to analog
       Turn on A/D module (ADCON0)
                                                          BSF TRISIO,0     ;Set GP0 to input
2. Configure A/D interrupt (if desired):
       Clear ADIF bit (PIR1<6>)                          BCF STATUS,RP0 ;Bank 0
       Set ADIE bit (PIE1<6>)
       Set PEIE and GIE bits (INTCON<7:6>)               MOVLW B'10000001' ;Right, Vdd Vref, AN0

3. Wait the required acquisition time.                    MOVWF ADCON0
4. Start conversion:
                                                          CALL SampleTime ;Wait min sample time
       Set GO/DONE bit (ADCON0<1>)
5. Wait for A/D conversion to complete, by either:        BSF ADCON0,GO    ;Start conversion

       Polling for the GO/DONE bit to be cleared         BTFSC ADCON0,GO  ;Is conversion done?
         (with interrupts disabled); OR
                                                          GOTO $-1         ;No, test again
       Waiting for the A/D interrupt
6. Read A/D Result register pair                          MOVF ADRESH,W    ;Read upper 2 bits

      (ADRESH:ADRESL), clear bit ADIF if required.        MOVWF RESULTHI
7. For next conversion, go to step 1 or step 2 as
                                                          BSF STATUS,RP0 ;Bank 1
      required. The A/D conversion time per bit is
      defined as TAD. A minimum wait of 2 TAD is          MOVF ADRESL,W    ;Read lower 8 bits
      required before the next acquisition starts.
                                                          MOVWF RESULTLO

DS41211B-page 60  Preliminary                                               2004 Microchip Technology Inc.
                                                                                         PIC12F683

9.2 A/D Acquisition Requirements                             As the impedance is decreased, the acquisition time
                                                             may be decreased. After the analog input channel is
For the A/D converter to meet its specified accuracy, the    selected (changed), this acquisition must be done
charge holding capacitor (CHOLD) must be allowed to          before the conversion can be started.
fully charge to the input channel voltage level. The Ana-
log Input model is shown in Figure 9-4. The source           To calculate the minimum acquisition time, Equation 9-
impedance (RS) and the internal sampling switch (RSS)        1 may be used. This equation assumes that 1/2 LSb
impedance directly affect the time required to charge the    error is used (1024 steps for the A/D). The 1/2 LSb
capacitor CHOLD. The sampling switch (RSS) impedance         error is the maximum error allowed for the A/D to meet
varies over the device voltage (VDD), see Figure 9-4.        its specified resolution.
The maximum recommended impedance for analog
sources is 10 k.                                             To calculate the minimum acquisition time, TACQ, see
                                                             the "PICmicro Mid-Range MCU Family Reference
                                                             Manual" (DS33023).

EQUATION 9-1: ACQUISITION TIME

TACQ = Amplifier Settling Time + Hold Capacitor Charging Time + Temperature Coefficient

      = TAMP + TC = TCOFF
      = 2 s + TC + [(Temperature 25C)(0.05 s/C)]

  TC = CHOLD (RIC + RSS + RS) In(1/2047)
      = -120 pF (1 k + 7 k +10 k) In(0.0004885)
      = 16.47 s

TACQ = 2 s + 16.47 s + [(50C 25C)(0.05 s/C)]
      = 19.72 s

Note 1: The reference voltage (VREF) has no effect on the equation, since it cancels itself out.

       2: The charge holding capacitor (CHOLD) is not discharged after each conversion.

       3: The maximum recommended impedance for analog sources is 10 k. This is required to meet the pin
            leakage specification.

FIGURE 9-4:            ANALOG INPUT MODEL

                           RS ANx      VDD                                     Sampling
                                            VT = 0.6V                          Switch
                                                                RIC  1k SS RSS
                       VA        CPIN  VT = 0.6V                                           CHOLD
                                                             ILEAKAGE                      = DAC capacitance
                                 5 pF                         500 nA                      = 120 pF
                                                                                         VSS

Legend: CPIN           = Input Capacitance                         6V
             VT                                                    5V
             ILEAKAGE  = Threshold Voltage                   VDD 4V
                       = Leakage Current at the pin due to         3V
             RIC                                                   2V
             SS          various junctions
             CHOLD                                                            5 6 7 8 9 10 11
                       = Interconnect Resistance                             Sampling Switch
                       = Sampling Switch
                                                                                    (k)
                       = Sample/Hold Capacitance (from DAC)

2004 Microchip Technology Inc.        Preliminary                                             DS41211B-page 61
PIC12F683

9.3 A/D Operation During Sleep                               If the A/D interrupt is enabled, the device awakens from
                                                             Sleep. If the GIE bit (INTCON<7>) is set, the program
The A/D converter module can operate during Sleep.           counter is set to the interrupt vector (0004h); if GIE is
This requires the A/D clock source to be set to the          clear, the next instruction is executed. If the A/D inter-
internal oscillator. When the RC clock source is             rupt is not enabled, the A/D module is turned off,
selected, the A/D waits one instruction before starting      although the ADON bit remains set.
the conversion. This allows the SLEEP instruction to be
executed, thus eliminating much of the switching noise       When the A/D clock source is something other than
from the conversion. When the conversion is complete,        RC, a SLEEP instruction causes the present conversion
the GO/DONE bit is cleared and the result is loaded          to be aborted and the A/D module is turned off. The
into the ADRESH:ADRESL registers.                            ADON bit remains set.

FIGURE 9-5:       PIC12F683 A/D TRANSFER FUNCTION

                                           Full-Scale Range

                  A/D Output Code   3FFh                                1 LSB ideal
                                    3FEh                               Full-Scale
                                    3FDh   1 LSB ideal                 Transition
                                    3FCh
                                    3FBh   Zero-Scale                    Analog Input Voltage
                                           Transition        VREF
                                     004h
                                     003h
                                     002h
                                     001h
                                     000h

                                   0V

DS41211B-page 62                           Preliminary        2004 Microchip Technology Inc.
                                                                                                           PIC12F683

9.4 Effects of Reset

A device Reset forces all registers to their Reset state.
Thus, the A/D module is turned off and any pending
conversion is aborted. The ADRESH:ADRESL
registers are unchanged.

TABLE 9-2: SUMMARY OF A/D REGISTERS

Addr Name Bit 7 Bit 6 Bit 5            Bit 4               Bit 3  Bit 2  Bit 1  Bit 0                      Value on:  Value on
                                                                                                           POR, BOD   all other
                                                                                                                       Resets

05h   GPIO  --     --            GP5   GP4                 GP3    GP2    GP1    GP0 --xx xxxx --uu uuuu
0Bh/              PEIE           T0IE  INTE                GPIE   T0IF   INTF   GPIF 0000 0000 0000 0000
8Bh   INTCON GIE
0Ch
1Eh   PIR1  EEIF ADIF CCP1IF           --                  CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

      ADRESH Most Significant 8 bits of the left shifted A/D result or 2 bits of the right shifted result  xxxx xxxx uuuu uuuu

1Fh ADCON0 ADFM VCFG             --    --                  CHS1 CHS0 GO/DONE ADON 00-- 0000 00-- 0000

85h TRISIO  --    -- TRISIO5 TRISIO4 TRISIO3 TRISIO2 TRISIO1 TRISIO0 --11 1111 --11 1111

8Ch PIE1    EEIE ADIE CCPIE            --                  CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

9Eh ADRESL Least Significant 2 bits of the left shifted A/D result or 8 bits of the right shifted result   xxxx xxxx uuuu uuuu

9Fh ANSEL   -- ADCS2 ADCS1 ADCS0 ANS3 ANS2                               ANS1   ANS0 -000 1111 -000 1111

Legend: x = unknown, u = unchanged, -- = unimplemented read as `0'. Shaded cells are not used for A/D module.

2004 Microchip Technology Inc.               Preliminary                                                  DS41211B-page 63
PIC12F683

NOTES:

DS41211B-page 64  Preliminary   2004 Microchip Technology Inc.
                                                                PIC12F683

10.0 DATA EEPROM MEMORY                                  The EEPROM data memory allows byte read and write.
                                                         A byte write automatically erases the location and
The EEPROM data memory is readable and writable          writes the new data (erase before write). The EEPROM
during normal operation (full VDD range). This memory    data memory is rated for high erase/write cycles. The
is not directly mapped in the register file space.       write time is controlled by an on-chip timer. The write
Instead, it is indirectly addressed through the Special  time will vary with voltage and temperature as well as
Function Registers. There are four SFRs used to read     from chip-to-chip. Please refer to AC Specifications in
and write this memory:                                   Section 15.0 "Electrical Specifications" for exact
                                                         limits.
EECON1
EECON2 (not a physically implemented register)         When the data memory is code protected, the CPU
EEDAT                                                  may continue to read and write the data EEPROM
EEADR                                                  memory. The device programmer can no longer access
                                                         the data EEPROM data and will read zeroes.
EEDAT holds the 8-bit data for read/write and EEADR
holds the address of the EEPROM location being           Additional information on the data EEPROM is
accessed. PIC12F683 has 256 bytes of data EEPROM         available in the "PICmicro Mid-Range MCU Family
with an address range from 0h to FFh.                    Reference Manual" (DS33023).

REGISTER 10-1:  EEDAT EEPROM DATA REGISTER (ADDRESS: 9Ah)

                R/W-0 R/W-0 R/W-0 R/W-0                  R/W-0  R/W-0          R/W-0         R/W-0
                                                                              EEDAT1        EEDAT0
                EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2
                                                                                                  bit 0
                bit 7

bit 7-0         EEDATn: Byte Value to Write to or Read From Data EEPROM bits

                Legend:             W = Writable bit     U = Unimplemented bit, read as `0'
                R = Readable bit    `1' = Bit is set     `0' = Bit is cleared x = Bit is unknown
                - n = Value at POR

REGISTER 10-2:  EEADR EEPROM ADDRESS REGISTER (ADDRESS: 9Bh)

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

                EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0

                bit 7                                                                       bit 0

bit 7-0         EEADR: Specifies One of 256 Locations for EEPROM Read/Write Operation bits

                Legend:             W = Writable bit     U = Unimplemented bit, read as `0'
                R = Readable bit    `1' = Bit is set     `0' = Bit is cleared x = Bit is unknown
                - n = Value at POR

2004 Microchip Technology Inc.     Preliminary                               DS41211B-page 65
PIC12F683

10.1 EECON1 and EECON2 Registers                            In these situations, following Reset, the user can check
                                                            the WRERR bit, clear it and rewrite the location. The
EECON1 is the control register with four low-order bits     data and address will be cleared. Therefore, the EEDAT
physically implemented. The upper four bits are non-        and EEADR registers will need to be re-initialized.
implemented and read as `0'.
                                                            Interrupt flag, EEIF bit (PIR1<7>), is set when write is
Control bits RD and WR initiate read and write,             complete. This bit must be cleared in software.
respectively. These bits cannot be cleared, only set in
software. They are cleared in hardware at completion        EECON2 is not a physical register. Reading EECON2
of the read or write operation. The inability to clear the  will read all `0's. The EECON2 register is used
WR bit in software prevents the accidental, premature       exclusively in the data EEPROM write sequence.
termination of a write operation.
                                                                Note:  The EECON1, EEDAT and EEADR
The WREN bit, when set, will allow a write operation.                  registers should not be modified during a
On power-up, the WREN bit is clear. The WRERR bit is                   data EEPROM write (WR bit = 1).
set when a write operation is interrupted by a MCLR
Reset, or a WDT Time-out Reset during normal
operation.

REGISTER 10-3:    EECON1 EEPROM CONTROL REGISTER (ADDRESS: 9Ch)

                  U-0    U-0               U-0              U-0        R/W-x R/W-0  R/S-0  R/S-0
                                                                                     WR     RD
                  --     --                --               --         WRERR WREN               bit 0

                  bit 7

bit 7-4           Unimplemented: Read as `0'
bit 3
                  WRERR: EEPROM Error Flag bit
bit 2             1 = A write operation is prematurely terminated (any MCLR Reset, any WDT Reset during
bit 1
                        normal operation or BOD detect)
bit 0             0 = The write operation completed

                  WREN: EEPROM Write Enable bit
                  1 = Allows write cycles
                  0 = Inhibits write to the data EEPROM

                  WR: Write Control bit
                  1 = Initiates a write cycle (The bit is cleared by hardware once write is complete. The WR bit

                        can only be set, not cleared, in software.)
                  0 = Write cycle to the data EEPROM is complete

                  RD: Read Control bit
                  1 = Initiates an EEPROM read (Read takes one cycle. RD is cleared in hardware. The RD bit

                        can only be set, not cleared, in software.)
                  0 = Does not initiate an EEPROM read

                  Legend:                  W = Writable bit            U = Unimplemented bit, read as `0'
                  S = Bit can only be set  `1' = Bit is set            `0' = Bit is cleared x = Bit is unknown
                  R = Readable bit
                  - n = Value at POR

DS41211B-page 66                           Preliminary                  2004 Microchip Technology Inc.
                                                                              PIC12F683

10.2 Reading the EEPROM Data                               After a write sequence has been initiated, clearing the
         Memory                                            WREN bit will not affect this write cycle. The WR bit will
                                                           be inhibited from being set unless the WREN bit is set.
To read a data memory location, the user must write the
address to the EEADR register and then set control bit     At the completion of the write cycle, the WR bit is
RD (EECON1<0>), as shown in Example 10-1. The              cleared in hardware and the EE Write Complete
data is available, in the very next cycle, in the EEDAT    Interrupt Flag bit (EEIF) is set. The user can either
register. Therefore, it can be read in the next            enable this interrupt or poll this bit. The EEIF bit
instruction. EEDAT holds this value until another read,    (PIR1<7>) must be cleared by software.
or until it is written to by the user (during a write
operation).                                                10.4 Write Verify

EXAMPLE 10-1: DATA EEPROM READ                             Depending on the application, good programming
                                                           practice may dictate that the value written to the data
BSF                STATUS,RP0    ;Bank 1                   EEPROM should be verified (see Example 10-3) to the
MOVLW              CONFIG_ADDR   ;                         desired value to be written.
MOVWF              EEADR         ;Address to read
BSF                EECON1,RD     ;EE Read                  EXAMPLE 10-3: WRITE VERIFY
MOVF               EEDAT,W       ;Move data to W
                                                           BSF    STATUS,RP0  ;Bank 1
10.3 Writing to the EEPROM Data                            MOVF   EEDAT,W     ;EEDAT not changed
         Memory                                                               ;from previous write
                                                           BSF    EECON1,RD   ;YES, Read the
To write an EEPROM data location, the user must first                         ;value written
write the address to the EEADR register and the data       XORWF  EEDAT,W
to the EEDAT register. Then the user must follow a         BTFSS  STATUS,Z    ;Is data the same
specific sequence to initiate the write for each byte, as  GOTO   WRITE_ERR   ;No, handle error
shown in Example 10-2.                                     :                  ;Yes, continue

EXAMPLE 10-2: DATA EEPROM WRITE                            10.4.1 USING THE DATA EEPROM

Required    BSF    STATUS,RP0    ;Bank 1                   The data EEPROM is a high-endurance, byte address-
  Sequence  BSF    EECON1,WREN   ;Enable write             able array that has been optimized for the storage of
            BCF    INTCON,GIE    ;Disable INTs             frequently changing information. The maximum endur-
            MOVLW  55h           ;Unlock write             ance for any EEPROM cell is specified as Dxxx. D120
            MOVWF  EECON2        ;                         or D120A specify a maximum number of writes to any
            MOVLW  AAh           ;                         EEPROM location before a refresh is required of
            MOVWF  EECON2        ;                         infrequently changing memory locations.
            BSF    EECON1,WR     ;Start the write
            BSF    INTCON,GIE    ;Enable INTS              10.4.1.1 EEPROM Endurance

The write will not initiate if the above sequence is not   A hypothetical data EEPROM is 64 bytes long and has
exactly followed (write 55h to EECON2, write AAh to        an endurance of 1M writes. It also has a refresh param-
EECON2, then set WR bit) for each byte. We strongly        eter of 10M writes. If every memory location in the cell
recommend that interrupts be disabled during this          were written the maximum number of times, the data
code segment. A cycle count is executed during the         EEPROM would fail after 64M write cycles. If every
required sequence. Any number that is not equal to the     memory location, save one, were written the maximum
required cycles to execute the required sequence will      number of times, the data EEPROM would fail after
prevent the data from being written into the EEPROM.       63M write cycles but the one remaining location could
                                                           fail after 10M cycles. If proper refreshes occurred, then
Additionally, the WREN bit in EECON1 must be set to        the lone memory location would have to be refreshed
enable write. This mechanism prevents accidental           six times for the data to remain correct.
writes to data EEPROM due to errant (unexpected)
code execution (i.e., lost programs). The user should
keep the WREN bit clear at all times, except when
updating EEPROM. The WREN bit is not cleared
by hardware.

2004 Microchip Technology Inc.  Preliminary                                  DS41211B-page 67
PIC12F683

10.5 Protection Against Spurious Write                  10.6 Data EEPROM Operation During
                                                                 Code-Protect
There are conditions when the user may not want to
write to the data EEPROM memory. To protect against     Data memory can be code-protected by programming
spurious EEPROM writes, various mechanisms have         the CPD bit in the Configuration Word (Register 12-1)
been built in. On power-up, WREN is cleared. Also, the  to `0'.
Power-up Timer (64 ms duration) prevents
EEPROM write.                                           When the data memory is code-protected, the CPU is
                                                        able to read and write data to the data EEPROM. It is
The write initiate sequence and the WREN bit together   recommended to code-protect the program memory
help prevent an accidental write during:                when code-protecting data memory. This prevents
                                                        anyone from programming zeroes over the existing
brown-out                                             code (which will execute as NOPs) to reach an added
power glitch                                          routine, programmed in unused program memory,
software malfunction                                  which outputs the contents of data memory.
                                                        Programming unused locations in program memory to
                                                        `0' will also help prevent data memory code protection
                                                        from becoming breached.

TABLE 10-1: REGISTERS/BITS ASSOCIATED WITH DATA EEPROM

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

0Bh/8Bh  INTCON   GIE PEIE T0IE INTE GPIE T0IF INTF GPIF 0000 0000 0000 0000
0Ch
8Ch      PIR1     EEIF ADIF CCP1IF --                   CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000
9Ah
9Bh      PIE1     EEIE ADIE CCP1IE --                   CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000
9Ch
9Dh      EEDAT EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0 0000 0000 0000 0000
Legend:
         EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0 0000 0000 0000 0000
Note 1:
         EECON1   --     --     --            -- WRERR WREN WR               RD ---- x000 ---- q000
                                                                                       ---- ---- ---- ----
         EECON2(1) EEPROM Control Register 2

         x = unknown, u = unchanged, -- = unimplemented read as `0', q = value depends upon condition.
         Shaded cells are not used by data EEPROM module.
         EECON2 is not a physical register.

DS41211B-page 68                              Preliminary                     2004 Microchip Technology Inc.
                                                                    PIC12F683

11.0 CAPTURE/COMPARE/PWM                                  TABLE 11-1: CCP MODE TIMER
         (CCP) MODULE                                                          RESOURCES REQUIRED

The Capture/Compare/PWM (CCP) module contains a           CCP Mode         Timer Resource
16-bit register which can operate as a:
                                                          Capture          Timer1
16-bit Capture register                                 Compare          Timer1
16-bit Compare register                                                  Timer2
PWM Master/Slave Duty Cycle register                      PWM

Capture/Compare/PWM Register 1 (CCPR1) is
comprised of two 8-bit registers: CCPR1L (low byte)
and CCPR1H (high byte). The CCP1CON register
controls the operation of CCP. The special event trigger
is generated by a compare match and will clear both
TMR1H and TMR1L registers.

REGISTER 11-1:  CCP1CON CCP CONTROL REGISTER 1 (ADDRESS: 15h)

                U-0              U-0  R/W-0 R/W-0         R/W-0     R/W-0   R/W-0   R/W-0
                                                                           CCP1M1  CCP1M0
                --               --   DC1B1 DC1B0 CCP1M3 CCP1M2
                                                                                          bit 0
                bit 7

bit 7-6         Unimplemented: Read as `0'
bit 5-4
                DC1B<1:0>: PWM Least Significant bits
bit 3-0
                Capture mode:
                Unused.

                Compare mode:
                Unused.

                PWM mode:
                These bits are the two LSbs of the PWM duty cycle. The eight MSbs are found in CCPR1L.

                CCP1M<3:0>: CCP1 Mode Select bits

                0000 = Capture/Compare/PWM disabled (resets CCP1 module)
                0100 = Capture mode, every falling edge
                0101 = Capture mode, every rising edge
                0110 = Capture mode, every 4th rising edge
                0111 = Capture mode, every 16th rising edge
                1000 = Compare mode, set output on match (CCP1IF bit is set)
                1001 = Compare mode, clear output on match (CCP1IF bit is set)
                1010 = Compare mode, generate software interrupt on match (CCP1IF bit is set,

                          CCP1 pin is unaffected)
                1011 = Compare mode, trigger special event (CCP1IF bit is set, CCP1 pin is unaffected);

                          CCP1 resets TMR1 and starts an A/D conversion (if A/D module is enabled)
                11xx = PWM mode

                Legend:               W = Writable bit    U = Unimplemented bit, read as `0'
                R = Readable bit      `1' = Bit is set    `0' = Bit is cleared x = Bit is unknown
                - n = Value at POR

2004 Microchip Technology Inc.       Preliminary                          DS41211B-page 69
PIC12F683

11.1 Capture Mode                                        11.1.2 TIMER1 MODE SELECTION

In Capture mode, CCPR1H:CCPR1L captures the              Timer1 must be running in Timer mode or Synchro-
16-bit value of the TMR1 register when an event occurs   nized Counter mode for the CCP module to use the
on pin GP2/AN2/T0CKI/INT/COUT/CCP1. An event is          capture feature. In Asynchronous Counter mode, the
defined as one of the following and is configured by     capture operation may not work.
CCP1CON<3:0>:
                                                         11.1.3 SOFTWARE INTERRUPT
Every falling edge
Every rising edge                                      When the Capture mode is changed, a false capture
                                                         interrupt may be generated. The user should keep bit
Every 4th rising edge                                  CCP1IE (PIE1<5>) clear to avoid false interrupts and
Every 16th rising edge                                 should clear the flag bit CCP1IF following any such
                                                         change in operating mode.
When a capture is made, the interrupt request flag bit,
CCP1IF (PIR1<5>), is set. The interrupt flag must be     11.1.4 CCP PRESCALER
cleared in software. If another capture occurs before
the value in register CCPR1 is read, the old captured    There are four prescaler settings specified by bits
value is overwritten by the new captured value.          CCP1M<3:0> (CCP1CON<3:0>). Whenever the CCP
                                                         module is turned off, or the CCP module is not in Cap-
11.1.1 CCP1 PIN CONFIGURATION                            ture mode, the prescaler counter is cleared. Any Reset
                                                         will clear the prescaler counter.
In Capture mode, the GP2/AN2/T0CKI/INT/COUT/
CCP1 pin should be configured as an input by setting     Switching from one capture prescaler to another may
the TRISIO<2> bit.                                       generate an interrupt. Also, the prescaler counter will
                                                         not be cleared; therefore, the first capture may be from
Note:     If the GP2/AN2/T0CKI/INT/COUT/CCP1             a non-zero prescaler. Example 11-1 shows the recom-
          pin is configured as an output, a write to     mended method for switching between capture
          the port can cause a capture condition.        prescalers. This example also clears the prescaler
                                                         counter and will not generate the "false" interrupt.
FIGURE 11-1:           CAPTURE MODE
                       OPERATION BLOCK
                       DIAGRAM                           EXAMPLE 11-1: CHANGING BETWEEN
                                                                                    CAPTURE PRESCALERS

                      Set Flag bit CCP1IF                CLRF   CCP1CON  ;Turn CCP module off
                                                         MOVLW
          Prescaler    (PIR1<5>)
                                                         MOVWF
          1, 4, 16                                            NEW_CAPT_PS ;Load the W reg with

                                                                         ;the new prescaler

GP2/CCP1                          CCPR1H   CCPR1L                        ;move value and CCP ON
pin
                                                                CCP1CON  ;Load CCP1CON with this

               and             Capture                                   ;value
          Edge Detect          Enable

                                  TMR1H TMR1L

                 CCP1CON<3:0>
          Q's

DS41211B-page 70                               Preliminary                2004 Microchip Technology Inc.
                                                                                       PIC12F683

11.2 Compare Mode                                                 11.2.1 CCP1 PIN CONFIGURATION

In Compare mode, the 16-bit CCPR1 register value is               The user must configure the GP2/AN2/T0CKI/INT/
constantly compared against the TMR1 register pair                COUT/CCP1 pin as an output by clearing the
value. When a match occurs, the GP2/AN2/T0CKI/INT/                TRISIO<2> bit.
COUT/CCP1 pin is:
                                                                  Note:  Clearing the CCP1CON register will
Driven high                                                            force the GP2/AN2/T0CKI/INT/COUT/
Driven low                                                             CCP1 compare output latch to the default
Remains unchanged                                                      low level. This is not the GPIO data latch.

The action on the pin is based on the value of control            11.2.2 TIMER1 MODE SELECTION
bits, CCP1M<3:0> (CCP1CON<3:0>). At the same
time, interrupt flag bit, CCP1IF (PIR1<5>), is set.               Timer1 must be running in Timer mode or Synchro-
                                                                  nized Counter mode if the CCP module is using the
FIGURE 11-2:        COMPARE MODE                                  compare feature. In Asynchronous Counter mode, the
                    OPERATION BLOCK                               compare operation may not work.
                    DIAGRAM
                                                                  11.2.3 SOFTWARE INTERRUPT MODE
                    CCP1CON<3:0>
                      Mode Select                                 When Generate Software Interrupt mode is chosen
                                                                  (CCP1M<3:0> = 1010), the CCP1 pin is not affected.
                         Set Flag bit CCP1IF                      The CCP1IF (PIR1<5>) bit is set, causing a CCP
                              (PIR1<5>)                           interrupt (if enabled). See Register 11-1.

GP2/CCP1                                    CCPR1H CCPR1L         11.2.4 SPECIAL EVENT TRIGGER
     pin

             Q S Output          Match  Comparator                In this mode, an internal hardware trigger is generated,
                   R Logic                                        which may be used to initiate an action.

      TRISIO<2>                         TMR1H TMR1L               The special event trigger output of CCP1 resets the
     Output Enable                                                TMR1 register pair and starts A/D conversion, if
                                                                  enabled. This allows the CCPR1 register to effectively
              Special Event Trigger                               be a 16-bit programmable period register for Timer1.

Special Event Trigger will:                                       Note:  The special event trigger from the CCP1
                                                                         modules will not set interrupt flag bit
Clear TMR1H and TMR1L registers                                        TMR1IF (PIR1<0>).
NOT set interrupt flag bit TMR1F (PIR1<0>)
Set the GO/DONE bit (ADCON0<1>)

TABLE 11-2: REGISTERS ASSOCIATED WITH CAPTURE, COMPARE AND TIMER1

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

0Bh/ INTCON         GIE     PEIE        T0IE   INTE        GPIE   T0IF INTF GPIF 0000 0000 0000 0000

8Bh

0Ch PIR1            EEIF ADIF CCP1IF                --     CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

0Eh TMR1L Holding Register for the Least Significant Byte of the 16-bit TMR1 Register         xxxx xxxx uuuu uuuu

0Fh TMR1H Holding Register for the Most Significant Byte of the 16-bit TMR1 Register          xxxx xxxx uuuu uuuu

10h T1CON T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 uuuu uuuu

1Ah CMCON1 --               --          --          --     --     -- T1GSS CMSYNC ---- --10 ---- --10

13h CCPR1L Capture/Compare/PWM Register 1 Low Byte                                            xxxx xxxx uuuu uuuu

14h CCPR1H Capture/Compare/PWM Register 1 High Byte                                           xxxx xxxx uuuu uuuu

15h CCP1CON --              --          DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000

8Ch PIE1            EEIE ADIE CCP1IE                --     CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

Legend: -- = unimplemented locations, read as `0', u = unchanged, x = unknown.
                Shaded cells are not used by the Capture, Compare or Timer1 module.

2004 Microchip Technology Inc.                     Preliminary                               DS41211B-page 71
PIC12F683

11.3 PWM Mode (PWM)                                                         FIGURE 11-4:          PWM OUTPUT

In Pulse Width Modulation mode, the CCP1 pin                                              Period
produces up to a 10-bit resolution PWM output. Since
the CCP1 pin is multiplexed with the GPIO data latch,                            Duty Cycle
the TRISIO<2> bit must be cleared to make the CCP1                                                        TMR2 = PR2
pin an output.
                                                                                                TMR2 = Duty Cycle
Note:  Clearing the CCP1CON register will force                             TMR2 = PR2
       the CCP1 PWM output latch to the default
       low level. This is not the GPIO data latch.

Figure 11-3 shows a simplified block diagram of the
CCP module in PWM mode.

For a step-by-step procedure on how to set up the CCP                       11.3.1 PWM PERIOD
module for PWM operation, see Section 11.3.3                                The PWM period is specified by writing to the PR2
"Setup for PWM Operation".                                                  register. The PWM period can be calculated using the
                                                                            following formula.
FIGURE 11-3:        SIMPLIFIED PWM BLOCK
                    DIAGRAM                                                 EQUATION 11-1:

Duty Cycle Registers    CCP1CON<5:4>                                          PWM Period = [(PR2) + 1] 4 Tosc TMR2 Prescale Value

CCPR1L

                                                                            PWM frequency is defined as 1/[PWM period].

CCPR1H (Slave)                                                              When TMR2 is equal to PR2, the following three events
        Comparator                                                          occur on the next increment cycle:

                                      GP2/CCP1                               TMR2 is cleared.

                        R         Q                                          The CCP1 pin is set (Exception: If PWM duty
                                                                               cycle = 0%, the CCP1 pin will not be set).
       TMR2   (Note 1)
                                                                            The PWM duty cycle is latched from CCPR1L into
                        S                                                      CCPR1H.

Comparator                           TRISIO<2>                              Note:  The Timer2 postscaler (see Section 7.1
     PR2                                                                           "Timer2 Operation") is not used in the
                    Clear Timer,                                                   determination of the PWM frequency. The
                    CCP1 pin and                                                   postscaler could be used to have a servo
                    latch D.C.                                                     update rate at a different frequency than
                                                                                   the PWM output.
     Note 1: The 8-bit timer is concatenated with 2-bit internal Q
                  clock, or 2 bits of the prescaler, to create 10-bit time
                  base.

A PWM output (Figure 11-4) has a time base (period)
and a time that the output stays high (duty cycle). The
frequency of the PWM is the inverse of the period
(1/period).

DS41211B-page 72                                Preliminary                                        2004 Microchip Technology Inc.
                                                                                    PIC12F683

11.3.2 PWM DUTY CYCLE                                     EQUATION 11-3:

The PWM duty cycle is specified by writing to the                       log            FOSC           
CCPR1L register and to the CCP1CON<5:4> bits. Up
to 10-bit resolution is available. The CCPR1L contains    Resolution =        FPWM    TMR2 Prescale  Value  bits
the eight MSbs and the CCP1CON<5:4> contains the                                           log(2)
two LSbs. This 10-bit value is represented by
CCPR1L:CCP1CON<5:4>. The following equation is            Note:  If the PWM duty cycle value is longer than
used to calculate the PWM duty cycle in time.                    the PWM period, the CCP1 pin will not be
                                                                 cleared.
EQUATION 11-2:
                                                          11.3.3 SETUP FOR PWM OPERATION
        PWM Duty Cycle = (CCPR1L:CCP1CON<5:4>
        TOSC TMR2 Prescale Value                        The following steps should be taken when configuring
                                                          the CCP1 module for PWM operation:
CCPR1L and CCP1CON<5:4> can be written to at any
time, but the duty cycle value is not latched into        1. Set the PWM period by writing to the PR2
CCPR1H until after a match between PR2 and TMR2                 register.
occurs (i.e., the period is complete). In PWM mode,
CCPR1H is a read-only register.                           2. Set the PWM duty cycle by writing to the
                                                                CCPR1L register and CCP1CON<5:4> bits.
The CCPR1H register and a 2-bit internal latch are
used to double-buffer the PWM duty cycle. This            3. Make the CCP1 pin an output by clearing the
double-buffering is essential for glitch-free PWM               TRISIO<2> bit.
operation.
                                                          4. Set the TMR2 prescale value and enable Timer2
When the CCPR1H and 2-bit latch match TMR2,                     by writing to T2CON.
concatenated with an internal 2-bit Q clock or 2 bits of
the TMR2 prescaler, the CCP1 pin is cleared.              5. Configure the CCP1 module for PWM operation.

The maximum PWM resolution (bits) for a given PWM         Note:  The PWM module may generate a prema-
frequency is given by the following formula.                     ture pulse when changing the duty cycle.
                                                                 For sensitive applications, disable the
                                                                 PWM module prior to modifying the duty
                                                                 cycle.

TABLE 11-3: EXAMPLE PWM FREQUENCIES AND RESOLUTIONS AT 20 MHz

PWM Frequency                    1.22 kHz 4.88 kHz 19.53 kHz 78.12 kHz 156.3 kHz                      208.3 kHz
                                                                                                            1
Timer Prescaler (1, 4, 16)         16      4                 1             1              1
PR2 Value                        0xFFh  0xFFh             0xFFh         0x3Fh          0x1Fh            0x17h
Maximum Resolution (bits)                                                                                 6.6
                                   10     10                10             8              7

2004 Microchip Technology Inc.         Preliminary                                          DS41211B-page 73
PIC12F683

TABLE 11-4: REGISTERS ASSOCIATED WITH PWM AND TIMER2

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

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

0Ch PIR1          EEIF ADIF CCP1IF        --         CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

11h TMR2   Timer2 Module Register                                                             0000 0000 0000 0000

12h T2CON         -- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 -000 0000

13h CCPR1L Capture/Compare/PWM Register 1 Low Byte                                            xxxx xxxx uuuu uuuu

14h CCPR1H Capture/Compare/PWM Register 1 High Byte                                           xxxx xxxx uuuu uuuu

15h CCP1CON --    --   DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 --00 0000 --00 0000

8Ch PIE1          EEIE ADIE CCP1IE        --         CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

92h PR2    Timer2 Module Period Register                                                      1111 1111 1111 1111

Legend: -- = unimplemented locations, read as `0', u = unchanged, x = unknown.
                Shaded cells are not used by the PWM or Timer2 module.

DS41211B-page 74                          Preliminary                                   2004 Microchip Technology Inc.
12.0 SPECIAL FEATURES OF THE                                      PIC12F683
         CPU
                                                    The PIC12F683 has two timers that offer necessary
The PIC12F683 has a host of features intended to    delays on power-up. One is the Oscillator Start-up Timer
maximize system reliability, minimize cost through  (OST), intended to keep the chip in Reset until the crys-
elimination of external components, provide power   tal oscillator is stable. The other is the Power-up Timer
saving features and offer code protection.          (PWRT), which provides a fixed delay of 64 ms (nomi-
                                                    nal) on power-up only, designed to keep the part in
These features are:                                 Reset while the power supply stabilizes. There is also
                                                    circuitry to reset the device if a brown-out occurs, which
Reset                                             can use the Power-up Timer to provide at least a 64 ms
   - Power-on Reset (POR)                           Reset. With these three functions on-chip, most
   - Power-up Timer (PWRT)                          applications need no external Reset circuitry.
   - Oscillator Start-up Timer (OST)
   - Brown-out Detect (BOD)                         The Sleep mode is designed to offer a very low-current
                                                    Power-down mode. The user can wake-up from Sleep
Interrupts                                        through:
Watchdog Timer (WDT)
Oscillator Selection                               External Reset
Sleep                                              Watchdog Timer Wake-up
Code Protection                                    An interrupt
ID Locations
In-Circuit Serial Programming                     Several oscillator options are also made available to
                                                    allow the part to fit the application. The INTOSC option
                                                    saves system cost while the LP crystal option saves
                                                    power. A set of configuration bits are used to select
                                                    various options (see Register 12-1).

2004 Microchip Technology Inc.  Preliminary        DS41211B-page 75
PIC12F683

12.1 Configuration Bits                                     Note:  Address 2007h is beyond the user
                                                                   program memory space. It belongs to the
The configuration bits can be programmed (read as                  special configuration memory space
`0'), or left unprogrammed (read as `1') to select various         (2000h-3FFFh), which can be accessed
device configurations as shown in Register 12-1.                   only during programming. See
These bits are mapped in program memory location                   "PIC12F6XX/16F6XX Memory Program-
2007h.                                                             ming Specification" (DS41204) for more
                                                                   information.

REGISTER 12-1: CONFIG CONFIGURATION WORD (ADDRESS: 2007h)

   --      -- FCMEN IESO BODEN1 BODEN0 CPD                  CP MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0
bit 13                                                                                                                                      bit 0

bit 13-12  Unimplemented: Read as `1'
bit 11
bit 10     FCMEN: Fail-Safe Clock Monitor Enabled bit
bit 9-8    1 = Fail-Safe Clock Monitor is enabled
           0 = Fail-Safe Clock Monitor is disabled
bit 7
bit 6      IESO: Internal External Switchover bit
bit 5      1 = Internal External Switchover mode is enabled
bit 4      0 = Internal External Switchover mode is disabled
bit 3      BODEN<1:0>: Brown-out Detect Selection bits(1)
bit 2-0    11 = BOD enabled
           10 = BOD enabled during operation and disabled in Sleep
           01 = BOD controlled by SBODEN bit (PCON<4>)
           00 = BOD disabled
           CPD: Data Code Protection bit(2)
           1 = Data memory code protection is disabled
           0 = Data memory code protection is enabled
           CP: Code Protection bit(3)
           1 = Program memory code protection is disabled
           0 = Program memory code protection is enabled
           MCLRE: GP3/MCLR pin function select bit(4)
           1 = GP3/MCLR pin function is MCLR
           0 = GP3/MCLR pin function is digital input, MCLR internally tied to VDD

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

           WDTE: Watchdog Timer Enable bit
           1 = WDT enabled
           0 = WDT disabled and can be enabled by SWDTEN bit (WDTCON<0>)

           FOSC<2:0>: Oscillator Selection bits
           111 = RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
           110 = RCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
           101 = INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
           100 = INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
           011 = EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN
           010 = HS oscillator: High-speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
           001 = XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
           000 = LP oscillator: Low-power crystal on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN

              Note 1: Enabling Brown-out Detect does not automatically enable Power-up Timer.
                       2: The entire data EEPROM will be erased when the code protection is turned off.
                       3: The entire program memory will be erased when the code protection is turned off. When MCLR is asserted
                            in INTOSC or RC mode, the internal clock oscillator is disabled.

           Legend:             W = Writable bit             U = Unimplemented bit, read as `0'
           R = Readable bit    `1' = Bit is set
           - n = Value at POR                               `0' = Bit is cleared  x = Bit is unknown

DS41211B-page 76               Preliminary                                         2004 Microchip Technology Inc.
                                                                                 PIC12F683

12.2 Calibration Bits                                      Specification" (DS41204). Therefore, it is not neces-
                                                           sary to store and reprogram these values when the
The Brown-out Detect (BOD), Power-on Reset (POR)           device is erased.
and 8 MHz internal oscillator (HFINTOSC) are factory
calibrated. These calibration values are stored in the     Note:  Address 2008h is beyond the user program
Calibration Word register, as shown in Register 12-2              memory space. It belongs to the special
and are mapped in program memory location 2008h.                  configuration memory space (2000h-
                                                                  3FFFh), which can be accessed only during
The Calibration Word register is not erased when the              programming. See "PIC12F6XX/16F6XX
device is erased when using the procedure described               Memory Programming Specification"
in the "PIC12F6XX/16F6XX Memory Programming                       (DS41204) for more information.

REGISTER 12-2: CALIB CALIBRATION WORD (ADDRESS: 2008h)

   -- FCAL6 FCAL5 FCAL4 FCAL3 FCAL2 FCAL1 FCAL0 --                POR1           POR0  BOD2    BOD1        BOD0
bit 13                                                                                                         bit 0

bit 13    Unimplemented: Read as `0'
bit 12-6
          FCAL<6:0>: Internal Oscillator Calibration bits
bit 5     0111111 = Maximum frequency
bit 4-3   .
bit 2-0   .
          0000001
          0000000 = Center frequency
          1111111
          .
          .
          1000000 = Minimum frequency

          Unimplemented: Read as `0'

          POR<1:0>: POR Calibration bits
          00 = Lowest POR voltage
          11 = Highest POR voltage

          BOD<2:0>: BOD Calibration bits
          000 = Reserved
          001 = Lowest BOD voltage
          111 = Highest BOD voltage

          Legend:                W = Writable bit          U = Unimplemented bit, read as `0'
          R = Readable bit       `1' = Bit is set
          - n = Value at POR                               `0' = Bit is cleared        x = Bit is unknown

2004 Microchip Technology Inc.  Preliminary                                                   DS41211B-page 77
PIC12F683

12.3 Reset                                                         They are not affected by a WDT wake-up since this is
                                                                   viewed as the resumption of normal operation. TO and
The PIC12F683 differentiates between various kinds of              PD bits are set or cleared differently in different Reset
Reset:                                                             situations, as indicated in Table 12-2. These bits are
                                                                   used in software to determine the nature of the Reset.
a) Power-on Reset (POR)                                            See Table 12-4 for a full description of Reset states of
b) WDT Reset during normal operation                               all registers.
c) WDT Reset during Sleep
d) MCLR Reset during normal operation                              A simplified block diagram of the On-Chip Reset Circuit
e) MCLR Reset during Sleep                                         is shown in Figure 12-1.
f) Brown-out Detect (BOD)
                                                                   The MCLR Reset path has a noise filter to detect and
Some registers are not affected in any Reset condition;            ignore small pulses. See Section 15.0 "Electrical
their status is unknown on POR and unchanged in any                Specifications" for pulse width specifications.
other Reset. Most other registers are reset to a "Reset
state" on:

Power-on Reset
MCLR Reset
MCLR Reset during Sleep
WDT Reset
Brown-out Detect (BOD)

FIGURE 12-1:      SIMPLIFIED BLOCK DIAGRAM OF ON-CHIP RESET CIRCUIT

                                External
                                 Reset

MCLR/VPP pin                    SLEEP
      VDD
                   WDT          WDT
                  Module
                                Time-out
                                Reset

                  VDD Rise
                   Detect

                                Power-on Reset

                  Brown-out(1)

                  Detect        BODEN

                                SBODEN                                               S

              OST/PWRT                                                                     Chip_Reset
                              OST
                                    10-bit Ripple Counter                            R  Q

OSC1/
CLKI pin

                        PWRT

              LFINTOSC          11-bit Ripple Counter

                                                                        Enable PWRT
                                                                        Enable OST

Note 1: Refer to the Configuration Word register (Register 12-1).

DS41211B-page 78                                           Preliminary   2004 Microchip Technology Inc.
                                                                                  PIC12F683

12.3.1 POWER-ON RESET                                      FIGURE 12-2:  RECOMMENDED MCLR
                                                                         CIRCUIT
The on-chip POR circuit holds the chip in Reset until
VDD has reached a high enough level for proper             VDD                       PIC12F683
operation. To take advantage of the POR, simply con-
nect the MCLR pin through a resistor to VDD. This will          R1
eliminate external RC components usually needed to              1 k (or greater)
create Power-on Reset. A maximum rise time for VDD
is required. See Section 15.0 "Electrical Specifica-                                 MCLR
tions" for details. If the BOD is enabled, the maximum
rise time specification does not apply. The BOD            C1
circuitry will keep the device in Reset until VDD reaches  0.1 F
VBOD (see Section 12.3.4 "Brown-out Detect                 (optional, not critical)
(BOD)").

Note:  The POR circuit does not produce an
       internal Reset when VDD declines. To
       re-enable the POR, VDD must reach Vss               12.3.3 POWER-UP TIMER (PWRT)
       for a minimum of 100 s.
                                                           The Power-up Timer provides a fixed 64 ms (nominal)
When the device starts normal operation (exits the         time-out on power-up only, from POR or Brown-out
Reset condition), device operating parameters (i.e.,       Detect. The Power-up Timer operates from the 31 kHz
voltage, frequency, temperature, etc.) must be met to      LFINTOSC oscillator. For more information, see
ensure operation. If these conditions are not met, the     Section 3.4 "Internal Clock Modes". The chip is kept
device must be held in Reset until the operating           in Reset as long as PWRT is active. The PWRT delay
conditions are met.                                        allows the VDD to rise to an acceptable level. A config-
                                                           uration bit, PWRTE, can disable (if set) or enable (if
For additional information, refer to the Application Note  cleared or programmed) the Power-up Timer. The
AN607, "Power-up Trouble Shooting" (DS00607).              Power-up Timer should be enabled when Brown-out
                                                           Detect is enabled, although it is not required.
12.3.2 MCLR
                                                           The Power-up Timer delay will vary from chip-to-chip
PIC12F683 has a noise filter in the MCLR Reset path.       and vary due to:
The filter will detect and ignore small pulses.
                                                            VDD variation
It should be noted that a WDT Reset does not drive
MCLR pin low.                                              Temperature variation
                                                            Process variation
The behavior of the ESD protection on the MCLR pin
has been altered from early devices of this family.        See DC parameters for details (Section 15.0 "Electrical
Voltages applied to the pin that exceed its specification  Specifications").
can result in both MCLR Resets and excessive current
beyond the device specification during the ESD event.
For this reason, Microchip recommends that the MCLR
pin no longer be tied directly to VDD. The use of an RC
network, as shown in Figure 12-2, is suggested.

An internal MCLR option is enabled by clearing the
MCLRE bit in the Configuration Word register. When
cleared, MCLR is internally tied to VDD and an internal
weak pull-up is enabled for the MCLR pin. In-Circuit
Serial Programming is not affected by selecting the
internal MCLR option.

2004 Microchip Technology Inc.  Preliminary                                         DS41211B-page 79
PIC12F683

12.3.4 BROWN-OUT DETECT (BOD)                                If VDD drops below VBOD while the Power-up Timer is
                                                             running, the chip will go back into a Brown-out Detect
The BODEN0 and BODEN1 bits in the Configuration              and the Power-up Timer will be re-initialized. Once VDD
Word register select one of four BOD modes. Two              rises above VBOD, the Power-up Timer will execute a
modes have been added to allow software or hardware          64 ms Reset.
control of the BOD enable. When BODEN<1:0> = 01,
the SBODEN bit (PCON<4>) enables/disables the                12.3.4.1 BOD Calibration
BOD allowing it to be controlled in software. By select-
ing BODEN<1:0>, the BOD is automatically disabled in         The PIC12F683 stores the BOD calibration values in
Sleep to conserve power and enabled on wake-up. In           fuses located in the Calibration Word register (2008h).
this mode, the SBODEN bit is disabled. See                   The Calibration Word register is not erased when using
Register 12-1 for the Configuration Word register            the specified bulk erase sequence in the "PIC12F6XX/
definition.                                                  16F6XX Memory Programming Specification"
                                                             (DS41204) and thus, does not require reprogramming.
If VDD falls below VBOD for greater than parameter
TBOD (see Section 15.0 "Electrical Specifications"),         Note:             Address 2008h is beyond the user
the Brown-out situation will reset the device. This will                       program memory space. It belongs to the
occur regardless of VDD slew rate. A Reset is not                              special configuration memory space
ensured to occur if VDD falls below VBOD for less than                         (2000h-3FFFh), which can be accessed
parameter (TBOD).                                                              only during programming. See
                                                                               "PIC12F6XX/16F6XX Memory Program-
On any Reset (Power-on, Brown-out Detect, Watchdog                             ming Specification" (DS41204) for more
Timer, etc.), the chip will remain in Reset until VDD rises                    information.
above VBOD (see Figure 12-3). The Power-up Timer
will now be invoked, if enabled and will keep the chip in
Reset an additional 64 ms.

Note:  The Power-up Timer is enabled by the
       PWRTE bit in the Configuration Word
       register.

FIGURE 12-3:      BROWN-OUT SITUATIONS

                  VDD                                                            VBOD
                                                                                 VBOD
              Internal                                       64 ms(1)
                Reset

                  VDD

              Internal                                       < 64 ms 64 ms(1)
                Reset

                  VDD                                                            VBOD

              Internal                                                 64 ms(1)
                Reset

              Note 1: 64 ms delay only if PWRTE bit is programmed to `0'.

DS41211B-page 80               Preliminary                                        2004 Microchip Technology Inc.
                                                                                       PIC12F683

12.3.5 TIME-OUT SEQUENCE                                          12.3.6 POWER CONTROL (PCON)
                                                                                REGISTER
On power-up, the time-out sequence is as follows: first,
PWRT time-out is invoked after POR has expired, then              The Power Control register PCON (address 8Eh) has
OST is activated after the PWRT time-out has expired.             two status bits to indicate what type of Reset that last
The total time-out will vary based on oscillator configu-         occurred.
ration and PWRTE bit status. For example, in EC mode
with PWRTE bit erased (PWRT disabled), there will be              Bit 0 is BOD (Brown-out). BOD is unknown on Power-
no time-out at all. Figure 12-4, Figure 12-5 and                  on Reset. It must then be set by the user and checked
Figure 12-6 depict time-out sequences. The device can             on subsequent Resets to see if BOD = 0, indicating that
execute code from the INTOSC while OST is active by               a Brown-out has occurred. The BOD status bit is a
enabling Two-Speed Start-up or Fail-Safe Monitor (see             "don't care" and is not necessarily predictable if the
Section 3.6 "Two-Speed Clock Start-up Mode" and                   brown-out circuit is disabled (BODEN<1:0> = 00 in the
Section 3.7 "Fail-Safe Clock Monitor").                           Configuration Word register).

Since the time-outs occur from the POR pulse, if MCLR             Bit 1 is POR (Power-on Reset). It is a `0' on Power-on
is kept low long enough, the time-outs will expire. Then,         Reset and unaffected otherwise. The user must write a
bringing MCLR high will begin execution immediately               `1' to this bit following a Power-on Reset. On a
(see Figure 12-5). This is useful for testing purposes or         subsequent Reset, if POR is `0', it will indicate that a
to synchronize more than one PIC12F683 device                     Power-on Reset has occurred (i.e., VDD may have
operating in parallel.                                            gone too low).

Table 12-5 shows the Reset conditions for some                    For more information, see Section 4.2.3 "Ultra Low-
special registers, while Table 12-4 shows the Reset               Power Wake-up" and Section 12.3.4 "Brown-out
conditions for all the registers.                                 Detect (BOD)".

TABLE 12-1: TIME-OUT IN VARIOUS SITUATIONS

  Oscillator                     Power-up                             Brown-out Detect           Wake-up from
Configuration                                                                                          Sleep
                     PWRTE = 0             PWRTE = 1              PWRTE = 0         PWRTE = 1
                                                                                                  1024 TOSC
XT, HS, LP       TPWRT + 1024 TOSC       1024 TOSC     TPWRT + 1024 TOSC      1024 TOSC          --
                                                 --                 TPWRT                 --
RC, EC, INTOSC       TPWRT

TABLE 12-2: PCON BITS AND THEIR SIGNIFICANCE

POR         BOD      TO          PD                                      Condition

     0      u        1           1         Power-on Reset

     1      0        1           1         Brown-out Detect

     u      u        0           u         WDT Reset

     u      u        0           0         WDT Wake-up

     u      u        u           u         MCLR Reset during normal operation

     u      u        1           0         MCLR Reset during Sleep

Legend: u = unchanged, x = unknown

TABLE 12-3: SUMMARY OF REGISTERS ASSOCIATED WITH BROWN-OUT

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

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

8Eh      PCON    --              -- ULPWUE SBODEN --              --     POR BOD --01 --qq --0u --uu

Legend:  u = unchanged, x = unknown, -- = unimplemented bit, reads as `0', q = value depends on condition.
Note 1:  Shaded cells are not used by BOD.
         Other (non Power-up) Resets include MCLR Reset and Watchdog Timer Reset during normal operation.

2004 Microchip Technology Inc.            Preliminary                                           DS41211B-page 81
PIC12F683

FIGURE 12-4:         TIME-OUT SEQUENCE ON POWER-UP (DELAYED MCLR)

                VDD         TPWRT
             MCLR
    Internal POR                         TOST

PWRT Time-out
  OST Time-out
  Internal Reset

FIGURE 12-5:         TIME-OUT SEQUENCE ON POWER-UP (DELAYED MCLR)

                VDD         TPWRT
             MCLR
    Internal POR                         TOST

PWRT Time-out
  OST Time-out
  Internal Reset

FIGURE 12-6:         TIME-OUT SEQUENCE ON POWER-UP (MCLR WITH VDD)

                VDD  TPWRT
             MCLR
    Internal POR                   TOST

PWRT Time-out
  OST Time-out
  Internal Reset

DS41211B-page 82     Preliminary                2004 Microchip Technology Inc.
                                                                                      PIC12F683

TABLE 12-4: INITIALIZATION CONDITION FOR REGISTERS

   Register  Address Power-on Reset              MCLR Reset            Wake-up from Sleep
                                                                         through Interrupt
                                                  WDT Reset
                                            Brown-out Detect(1)  Wake-up from Sleep through
                                                                           WDT Time-out

W            --                  xxxx xxxx  uuuu uuuu                                           uuuu uuuu

INDF         00h/80h             xxxx xxxx  xxxx xxxx                                           uuuu uuuu

TMR0           01h               xxxx xxxx  uuuu uuuu                                           uuuu uuuu
PCL          02h/82h             0000 0000                                                        PC + 1(3)
STATUS       03h/83h             0001 1xxx  0000 0000
                                            000q quuu(4)                                        uuuq quuu(4)

FSR          04h/84h             xxxx xxxx  uuuu uuuu                                           uuuu uuuu

GPIO         05h                 --xx xx00  --00 0000                                           --uu uuuu

PCLATH       0Ah/8Ah             ---0 0000  ---0 0000                                           ---u uuuu
INTCON       0Bh/8Bh             0000 0000  0000 0000                                           uuuu uuuu(2)
PIR1                             0000 0000  0000 0000                                           uuuu uuuu(2)
                0Ch

TMR1L        0Eh                 xxxx xxxx  uuuu uuuu                                           uuuu uuuu

TMR1H        0Fh                 xxxx xxxx  uuuu uuuu                                           uuuu uuuu

T1CON        10h                 0000 0000  uuuu uuuu                                           -uuu uuuu

TMR2         11h                 0000 0000  0000 0000                                           uuuu uuuu

T2CON        12h                 -000 0000  -000 0000                                           -uuu uuuu

CCPR1L       13h                 xxxx xxxx  uuuu uuuu                                           uuuu uuuu

CCPR1H       14h                 xxxx xxxx  uuuu uuuu                                           uuuu uuuu

CCP1CON      15h                 0000 0000  0000 0000                                           uuuu uuuu

WDTCON       18h                 ---0 1000  ---0 1000                                           ---u uuuu

CMCON0       19h                 0000 0000  0000 0000                                           uuuu uuuu

CMCON1       20h                 ---- --10  ---- --10                                           ---- --uu

ADRESH       1Eh                 xxxx xxxx  uuuu uuuu                                           uuuu uuuu

ADCON0       1Fh                 00-- 0000  00-- 0000                                           uu-- uuuu

OPTION_REG   81h                 1111 1111  1111 1111                                           uuuu uuuu

TRISIO       85h                 --11 1111  --11 1111                                           --uu uuuu

PIE1         8Ch                 0000 0000  0000 0000                                           uuuu uuuu
PCON                                        --0u --uu(1,5)                                      --uu --uu
             8Eh                 --01 --0x

OSCCON       8Fh                 -110 x000  -110 x000                                           -uuu uuuu

OSCTUNE      90h                 ---0 0000  ---u uuuu                                           ---u uuuu

PR2          92h                 1111 1111  1111 1111                                           1111 1111

WPU          95h                 --11 -111  --11 -111                                           uuuu uuuu

IOC          96h                 --00 0000  --00 0000                                           --uu uuuu

VRCON        99h                 0-0- 0000  0-0- 0000                                           u-u- uuuu

EEDAT        9Ah                 0000 0000  0000 0000                                           uuuu uuuu

EEADR        9Bh                 0000 0000  0000 0000                                           uuuu uuuu

Legend: u = unchanged, x = unknown, -- = unimplemented bit, reads as `0', q = value depends on condition.

Note 1: If VDD goes too low, Power-on Reset will be activated and registers will be affected differently.

      2: One or more bits in INTCON and/or PIR1 will be affected (to cause wake-up).

      3: When the wake-up is due to an interrupt and the GIE bit is set, the PC is loaded with the interrupt
            vector (0004h).

      4: See Table 12-5 for Reset value for specific condition.

      5: If Reset was due to brown-out, then bit 0 = 0. All other Resets will cause bit 0 = u.

2004 Microchip Technology Inc.             Preliminary                                         DS41211B-page 83
PIC12F683

TABLE 12-4: INITIALIZATION CONDITION FOR REGISTERS (CONTINUED)

Register          Address Power-on Reset       MCLR Reset                        Wake-up from Sleep
                                                                                   through Interrupt
                                                WDT Reset
                                          Brown-out Detect(1)              Wake-up from Sleep through
                                                                                     WDT Time-out

EECON1            9Ch         ---- x000         ---- q000                                 ---- uuuu

EECON2            9Dh         ---- ----         ---- ----                                 ---- ----

ADRESL            9Eh         xxxx xxxx         uuuu uuuu                                 uuuu uuuu

ANSEL             9Fh         1111 1111         1111 1111                                 uuuu uuuu

Legend: u = unchanged, x = unknown, -- = unimplemented bit, reads as `0', q = value depends on condition.

Note 1: If VDD goes too low, Power-on Reset will be activated and registers will be affected differently.

2: One or more bits in INTCON and/or PIR1 will be affected (to cause wake-up).

3: When the wake-up is due to an interrupt and the GIE bit is set, the PC is loaded with the interrupt
      vector (0004h).

4: See Table 12-5 for Reset value for specific condition.

5: If Reset was due to brown-out, then bit 0 = 0. All other Resets will cause bit 0 = u.

TABLE 12-5: INITIALIZATION CONDITION FOR SPECIAL REGISTERS

                Condition                 Program           Status                         PCON
                                          Counter          Register                       Register

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

MCLR Reset during Normal Operation        000h             000u uuuu                      --0u --uu

MCLR Reset during Sleep                   000h             0001 0uuu                      --0u --uu

WDT Reset                                 000h             0000 uuuu                      --0u --uu

WDT Wake-up                               PC + 1           uuu0 0uuu                      --uu --uu

Brown-out Detect                            000h           0001 1uuu                      --01 --10
Interrupt Wake-up from Sleep              PC + 1(1)        uuu1 0uuu                      --uu --uu

Legend: u = unchanged, x = unknown, -- = unimplemented bit, reads as `0'.

Note 1: When the wake-up is due to an interrupt and Global Interrupt Enable bit, GIE, is set, the PC is loaded with
              the interrupt vector (0004h) after execution of PC + 1.

DS41211B-page 84                          Preliminary                       2004 Microchip Technology Inc.
                                                                  PIC12F683

12.4 Interrupts                                            For external interrupt events, such as the INT pin or
                                                           GPIO change interrupt, the interrupt latency will be
The PIC12F683 has 11 sources of interrupt:                 three or four instruction cycles. The exact latency
                                                           depends upon when the interrupt event occurs (see
External Interrupt GP2/INT                               Figure 12-8). The latency is the same for one or two-
TMR0 Overflow Interrupt                                  cycle instructions. Once in the Interrupt Service
GPIO Change Interrupts                                   Routine, the source(s) of the interrupt can be
2 Comparator Interrupts                                  determined by polling the interrupt flag bits. The
A/D Interrupt                                            interrupt flag bit(s) must be cleared in software before
Timer1 Overflow Interrupt                                re-enabling interrupts to avoid multiple interrupt
Timer2 Match Interrupt                                   requests.
EEPROM Data Write Interrupt
Fail-Safe Clock Monitor Interrupt                            Note 1: Individual interrupt flag bits are set,
CCP Interrupt                                                            regardless of the status of their
                                                                           corresponding mask bit or the GIE bit.
The Interrupt Control register (INTCON) and Peripheral
Interrupt Request Register 1 (PIR1) record individual                 2: When an instruction that clears the GIE
interrupt requests in flag bits. The INTCON register                       bit is executed, any interrupts that were
also has individual and global interrupt enable bits.                      pending for execution in the next cycle
                                                                           are ignored. The interrupts, which were
A Global Interrupt Enable bit, GIE (INTCON<7>),                            ignored, are still pending to be serviced
enables (if set) all unmasked interrupts, or disables (if                  when the GIE bit is set again.
cleared) all interrupts. Individual interrupts can be
disabled through their corresponding enable bits in the    For additional information on Timer1, Timer2,
INTCON register and PIE1 register. GIE is cleared on       comparators, A/D, data EEPROM or CCP modules,
Reset.                                                     refer to the respective peripheral section.

The Return from Interrupt instruction, RETFIE, exits       12.4.1 GP2/INT INTERRUPT
the interrupt routine, as well as sets the GIE bit, which
re-enables unmasked interrupts.                            External interrupt on GP2/INT pin is edge-triggered;
                                                           either rising if the INTEDG bit (OPTION<6>) is set, or
The following interrupt flags are contained in the         falling if the INTEDG bit is clear. When a valid edge
INTCON register:                                           appears on the GP2/INT pin, the INTF bit
                                                           (INTCON<1>) is set. This interrupt can be disabled by
INT Pin Interrupt                                        clearing the INTE control bit (INTCON<4>). The INTF
GPIO Change Interrupt                                    bit must be cleared in software in the Interrupt Service
TMR0 Overflow Interrupt                                  Routine before re-enabling this interrupt. The GP2/INT
                                                           interrupt can wake-up the processor from Sleep if the
The peripheral interrupt flags are contained in the        INTE bit was set prior to going into Sleep. The status of
special register, PIR1. The corresponding interrupt        the GIE bit decides whether or not the processor
enable bit is contained in special register, PIE1.         branches to the interrupt vector following wake-up
                                                           (0004h). See Section 12.7 "Power-Down Mode
The following interrupt flags are contained in the PIR1    (Sleep)" for details on Sleep and Figure 12-10 for
register:                                                  timing of wake-up from Sleep through GP2/INT
                                                           interrupt.
EEPROM Data Write Interrupt
A/D Interrupt                                            Note:  The ANSEL (91h) and CMCON0 (19h)
2 Comparator Interrupts                                         registers must be initialized to configure
Timer1 Overflow Interrupt                                       an analog channel as a digital input. Pins
Timer 2 Match Interrupt                                         configured as analog inputs will read `0'.
Fail-Safe Clock Monitor Interrupt
CCP Interrupt

When an interrupt is serviced:

The GIE is cleared to disable any further interrupt.
The return address is pushed onto the stack.
The PC is loaded with 0004h.

2004 Microchip Technology Inc.  Preliminary                      DS41211B-page 85
PIC12F683

12.4.2 TMR0 INTERRUPT                                 12.4.3 GPIO INTERRUPT

An overflow (FFh  00h) in the TMR0 register will set  An input change on GPIO change sets the GPIF
the T0IF (INTCON<2>) bit. The interrupt can be        (INTCON<0>) bit. The interrupt can be enabled/
enabled/disabled by setting/clearing T0IE             disabled by setting/clearing the GPIE (INTCON<3>)
(INTCON<5>) bit. See Section 5.0 "Timer0 Module"      bit. Plus, individual pins can be configured through the
for operation of the Timer0 module.                   IOC register.

                                                      Note:  If a change on the I/O pin should occur
                                                             when the read operation is being executed
                                                             (start of the Q2 cycle), then the GPIF
                                                             interrupt flag may not get set.

FIGURE 12-7:      INTERRUPT LOGIC

IOC-GP0
     IOC0

IOC-GP1
     IOC1

IOC-GP2
     IOC2

IOC-GP3
     IOC3

IOC-GP4
     IOC4

IOC-GP5
     IOC5

TMR2IF                             T0IF                      Wake-up (If in Sleep mode)
TMR2IE                             T0IE                                     Interrupt to CPU
                                   INTF
TMR1IF                             INTE
TMR1IE                             GPIF
                                   GPIE
   CMIF
   CMIE                            PEIE

    ADIF                             GIE
    ADIE

    EEIF
    EEIE

  OSFIF
  OSFIE

CCP1IF
CCP1IE

DS41211B-page 86                   Preliminary                2004 Microchip Technology Inc.
                                                                                                            PIC12F683

FIGURE 12-8:         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)
                                                  (5)
     INTF Flag       (1)                                                       Interrupt Latency(2)

(INTCON<1>)

         GIE bit
(INTCON<7>)

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

       Instruction
          Fetched

     Instruction     Inst (PC 1)                Inst (PC)                    Dummy Cycle           Dummy Cycle          Inst (0004h)
      Executed

Note 1:      INTF flag is sampled here (every Q1).
         2:  Asynchronous interrupt latency = 3-4 TCY. Synchronous latency = 3 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 INTOSC and RC Oscillator modes.
         4:  For minimum width of INT pulse, refer to AC specifications in Section 15.0 "Electrical Specifications".
         5:  INTF is enabled to be set any time during the Q4-Q1 cycles.

TABLE 12-6: SUMMARY OF INTERRUPT REGISTERS

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

0Bh, 8Bh INTCON GIE              PEIE T0IE INTE GPIE T0IF                                            INTF GPIF 0000 0000 0000 0000

0Ch          PIR1    EEIF ADIF CCP1IF --                                       CMIF OSFIF TMR2IF TMR1IF 000- 0000 000- 0000

8Ch          PIE1    EEIE ADIE CCP1IE --                                       CMIE OSFIE TMR2IE TMR1IE 000- 0000 000- 0000

Legend: x = unknown, u = unchanged, -- = unimplemented read as `0', q = value depends upon condition.
                Shaded cells are not used by the interrupt module.

2004 Microchip Technology Inc.                                         Preliminary                                       DS41211B-page 87
PIC12F683

12.5 Context Saving During Interrupts                    Note:  The PIC12F683 normally does not require
                                                                saving the PCLATH. However, if com-
During an interrupt, only the return PC value is saved          puted GOTOs are used in the ISR and the
on the stack. Typically, users may wish to save key             main code, the PCLATH must be saved
registers during an interrupt (e.g., W and Status               and restored in the ISR.
registers). This must be implemented in software.

Since the lower 16 bytes of all banks are common in the
PIC12F683 (see Figure 2-2), temporary holding regis-
ters, W_TEMP and STATUS_TEMP, should be placed
in here. These 16 locations do not require banking and
therefore, makes it easier to context save and restore.
The same code shown in Example 12-1 can be used
to:

Store the W register.
Store the Status register.
Execute the ISR code.
Restore the Status (and Bank Select Bit register).
Restore the W register.

EXAMPLE 12-1: SAVING STATUS AND W REGISTERS IN RAM

MOVWF   W_TEMP         ;Copy W to TEMP register
SWAPF   STATUS,W       ;Swap status to be saved into W
CLRF    STATUS         ;bank 0, regardless of current bank, Clears IRP,RP1,RP0
MOVWF   STATUS_TEMP    ;Save status to bank zero STATUS_TEMP register
:
:(ISR)  STATUS_TEMP,W  ;Insert user code here
:
SWAPF                  ;Swap STATUS_TEMP register into W
                       ;(sets bank to original state)
MOVWF   STATUS         ;Move W into Status register
SWAPF   W_TEMP,F       ;Swap W_TEMP
SWAPF   W_TEMP,W       ;Swap W_TEMP into W

DS41211B-page 88       Preliminary                               2004 Microchip Technology Inc.
                                                                                   PIC12F683

12.6 Watchdog Timer (WDT)                                               A new prescaler has been added to the path between
                                                                        the INTRC and the multiplexers used to select the path
For PIC12F683, the WDT has been modified from                           for the WDT. This prescaler is 16 bits and can be
previous PIC12F683 devices. The new WDT is code and                     programmed to divide the INTRC by 128 to 65536, giv-
functionally compatible with previous PIC12F683 WDT                     ing the time base used for the WDT a nominal range of
modules and adds a 16-bit prescaler to the WDT. This                    1 ms to 268s.
allows the user to have a scaler value for the WDT and
TMR0 at the same time. In addition, the WDT time-out                    12.6.2 WDT CONTROL
value can be extended to 268 seconds. WDT is cleared
under certain conditions described in Table 12-7.                       The WDTE bit is located in the Configuration Word
                                                                        register. When set, the WDT runs continuously.
12.6.1 WDT OSCILLATOR
                                                                        When the WDTE bit in the Configuration Word register
The WDT derives its time base from the 31 kHz                           is set, the SWDTEN bit (WDTCON<0>) has no effect.
LFINTOSC. The LTS bit does not reflect that the                         If WDTE is clear, then the SWDTEN bit can be used to
LFINTOSC is enabled.                                                    enable and disable the WDT. Setting the bit will enable
                                                                        it and clearing the bit will disable it.
The value of WDTCON is `---0 1000' on all Resets.
This gives a nominal time base of 16 ms, which is com-                  The PSA and PS<2:0> bits (OPTION_REG) have the
patible with the time base generated with previous                      same function as in previous versions of the
PIC12F683 microcontroller versions.                                     PIC12F683 family of microcontrollers. See Section 5.0
                                                                        "Timer0 Module" for more information.

Note:  When the Oscillator Start-up Timer (OST)
       is invoked, the WDT is held in Reset,
       because the WDT Ripple Counter is used
       by the OST to perform the oscillator delay
       count. When the OST count has expired,
       the WDT will begin counting (if enabled).

FIGURE 12-9:    WATCHDOG TIMER BLOCK DIAGRAM

                                 From TMR0 Clock Source                 0

                                 16-bit WDT Prescaler                   1          Prescaler(1)
                                                                                            8

                                                                           PSA                              PS<2:0>
                                                                                                              To TMR0
       31 kHz                    WDTPS<3:0>
LFINTOSC Clock                                                                                             PSA

                                                                                0  1

                                 WDTE from Configuration Word register
                                 SWDTEN from WDTCON

                                                                                WDT Time-out

       Note 1: This is the shared Timer0/WDT prescaler. See Section 5.4 "Prescaler" for more information.

TABLE 12-7: WDT STATUS                                                                         WDT
                                             Conditions                                      Cleared
                                                                                Cleared until the end of OST
WDTE = 0
CLRWDT Command
Oscillator Fail Detected
Exit Sleep + System Clock = T1OSC, EXTRC, INTRC, EXTCLK
Exit Sleep + System Clock = XT, HS, LP

2004 Microchip Technology Inc.              Preliminary                                      DS41211B-page 89
PIC12F683

REGISTER 12-3:    WDTCON WATCHDOG TIMER CONTROL REGISTER (ADDRESS: 18h)

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

                     --        --         --          WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN

                  bit 7                                                                         bit 0

         bit 7-5  Unimplemented: Read as `0'
         bit 4-1
                  WDTPS<3:0>: Watchdog Timer Period Select bits
         bit 0
                  Bit Value = Prescale Rate

                  0000 = 1:32
                  0001 = 1:64
                  0010 = 1:128
                  0011 = 1:256
                  0100 = 1:512 (Reset value)
                  0101 = 1:1024
                  0110 = 1:2048
                  0111 = 1:4096
                  1000 = 1:8192
                  1001 = 1:16384
                  1010 = 1:32768
                  1011 = 1:65536
                  1100 = Reserved
                  1101 = Reserved
                  1110 = Reserved
                  1111 = Reserved
                  SWDTEN: Software Enable or Disable the Watchdog Timer(1)

                  1 = WDT is turned on
                  0 = WDT is turned off (Reset value)

                     Note 1: If WDTE configuration bit = 1, then WDT is always enabled, irrespective of this
                                 control bit. If WDTE configuration bit = 0, then it is possible to turn WDT on/off with
                                 this control bit.

                  Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
                  R = Readable bit        `1' = Bit is set       `0' = Bit is cleared x = Bit is unknown
                  - n = Value at POR

TABLE 12-8: SUMMARY OF WATCHDOG TIMER REGISTERS

Address  Name             Bit 7 Bit 6          Bit 5      Bit 4  Bit 3            Bit 2  Bit 1  Bit 0

18h      WDTCON           --          --       -- WDTPS3 WDTPS2 WSTPS1 WDTPS0 SWDTEN

81h      OPTION_REG       GPPU INTEDG T0CS T0SE                  PSA              PS2    PS1    PS0

2007h(1) CONFIG           CPD         CP  MCLRE PWRTE WDTE                        FOSC2 FOSC1 FOSC0

Legend: Shaded cells are not used by the Watchdog Timer.

Note 1: See Register 12-1 for operation of all Configuration Word register bits.

DS41211B-page 90                          Preliminary                              2004 Microchip Technology Inc.
                                                                  PIC12F683

12.7 Power-Down Mode (Sleep)                               Other peripherals cannot generate interrupts, since
                                                           during Sleep, no on-chip clocks are present.
The Power-down mode is entered by executing a
SLEEP instruction.                                         When the SLEEP instruction is being executed, the next
                                                           instruction (PC + 1) is prefetched. For the device to
If the Watchdog Timer is enabled:                          wake-up through an interrupt event, the corresponding
                                                           interrupt enable bit must be set (enabled). Wake-up is
WDT will be cleared but keeps running.                   regardless of the state of the GIE bit. If the GIE bit is
PD bit in the Status register is cleared.                clear (disabled), the device continues execution at the
TO bit is set.                                           instruction after the SLEEP instruction. If the GIE bit is
Oscillator driver is turned off.                         set (enabled), the device executes the instruction after
I/O ports maintain the status they had before            the SLEEP instruction, then branches to the interrupt
                                                           address (0004h). In cases where the execution of the
   SLEEP was executed (driving high, low or                instruction following SLEEP is not desirable, the user
   high-impedance).                                        should have a NOP after the SLEEP instruction.

For lowest current consumption in this mode, all I/O       Note:  If the global interrupts are disabled (GIE is
pins should be either at VDD or VSS, with no external             cleared), but any interrupt source has both
circuitry drawing current from the I/O pin and the                its interrupt enable bit and the correspond-
comparators and CVREF should be disabled. I/O pins                ing interrupt flag bits set, the device will
that are high-impedance inputs should be pulled high              immediately wake-up from Sleep. The
or low externally to avoid switching currents caused by           SLEEP instruction is completely executed.
floating inputs. The T0CKI input should also be at VDD
or VSS for lowest current consumption. The                 The WDT is cleared when the device wakes up from
contribution from on-chip pull-ups on GPIO should be       Sleep, regardless of the source of wake-up.
considered.

The MCLR pin must be at a logic high level.                12.7.2 WAKE-UP USING INTERRUPTS

Note:  It should be noted that a Reset generated           When global interrupts are disabled (GIE cleared) and
       by a WDT time-out does not drive MCLR               any interrupt source has both its interrupt enable bit
       pin low.                                            and interrupt flag bit set, one of the following will occur:

12.7.1 WAKE-UP FROM SLEEP                                  If the interrupt occurs before the execution of a
                                                              SLEEP instruction, the SLEEP instruction will
The device can wake-up from Sleep through one of the          complete as a NOP. Therefore, the WDT and WDT
following events:                                             prescaler and postscaler (if enabled) will not be
                                                              cleared, the TO bit will not be set and the PD bit
1. External Reset input on MCLR pin.                          will not be cleared.
2. Watchdog Timer wake-up (if WDT was
                                                            If the interrupt occurs during or after the
      enabled).                                               execution of a SLEEP instruction, the device will
3. Interrupt from GP2/INT pin, GPIO change or a               immediately wake-up from Sleep. The SLEEP
                                                              instruction will be completely executed before the
      peripheral interrupt.                                   wake-up. Therefore, the WDT and WDT prescaler
                                                              and postscaler (if enabled) will be cleared, the TO
The first event will cause a device Reset. The two latter     bit will be set and the PD bit will be cleared.
events are considered a continuation of program exe-
cution. The TO and PD bits in the Status register can be   Even if the flag bits were checked before executing a
used to determine the cause of device Reset. The PD        SLEEP instruction, it may be possible for flag bits to
bit, which is set on power-up, is cleared when Sleep is    become set before the SLEEP instruction completes. To
invoked. TO bit is cleared if WDT wake-up occurred.        determine whether a SLEEP instruction executed, test
                                                           the PD bit. If the PD bit is set, the SLEEP instruction
The following peripheral interrupts can wake the device    was executed as a NOP.
from Sleep:
                                                           To ensure that the WDT is cleared, a CLRWDT instruction
1. TMR1 interrupt. Timer1 must be operating as an          should be executed before a SLEEP instruction.
      asynchronous counter.

2. ECCP Capture mode interrupt.
3. Special event trigger (Timer1 in Asynchronous

      mode using an external clock).
4. A/D conversion (when A/D clock source is RC).
5. EEPROM write operation completion.
6. Comparator output changes state.
7. Interrupt-on-change.
8. External Interrupt from INT pin.

2004 Microchip Technology Inc.                  Preliminary      DS41211B-page 91
PIC12F683

FIGURE 12-10: 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)

         INT pin                                                Interrupt Latency(3)

      INTF flag
(INTCON<1>)

         GIE bit                                  Processor in
(INTCON<7>)                                           Sleep

Instruction Flow

              PC  PC                  PC + 1      PC + 2           PC + 2          PC + 2       0004h       0005h
                                    Inst(PC + 1)                Inst(PC + 2)  Dummy Cycle    Inst(0004h)  Inst(0005h)
Instruction       Inst(PC) = Sleep                              Inst(PC + 1)               Dummy Cycle    Inst(0004h)
   Fetched                             Sleep

Instruction       Inst(PC 1)
Executed

Note 1:           XT, HS or LP Oscillator mode assumed.
          2:      TOST = 1024 TOSC (drawing not to scale). This delay does not apply to EC and RCIO Oscillator modes.
          3:      GIE = 1 assumed. In this case after wake-up, the processor jumps to 0004h. If GIE = 0, execution will continue in-line.
          4:      CLKOUT is not available in XT, HS, LP or EC Oscillator modes, but shown here for timing reference.

12.8 Code Protection                                            This allows customers to manufacture boards with
                                                                unprogrammed devices and then program the micro-
If the code protection bit(s) have not been                     controller just before shipping the product. This also
programmed, the on-chip program memory can be                   allows the most recent firmware or a custom firmware
read out using ICSP for verification purposes.                  to be programmed.

Note:         The entire data EEPROM and Flash                  The device is placed into a Program/Verify mode by
              program memory will be erased when the            holding the GP0 and GP1 pins low, while raising the
              code protection is turned off. See the            MCLR (VPP) pin from VIL to VIHH. See the "PIC12F6XX/
              PIC12F6XX/16F6XX Memory Program-                  16F6XX Memory Programming Specification"
              ming Specification (DS41204) for more             (DS41204) for more information. GP0 becomes the
              information.                                      programming data and GP1 becomes the program-
                                                                ming clock. Both GP0 and GP1 are Schmitt Trigger
12.9 ID Locations                                               inputs in this mode.

Four memory locations (2000h-2003h) are designated              After Reset, to place the device into Program/Verify
as ID locations where the user can store checksum or            mode, the Program Counter (PC) is at location 00h. A
other code identification numbers. These locations are          6-bit command is then supplied to the device.
not accessible during normal execution but are readable         Depending on the command, 14 bits of program data
and writable during Program/Verify mode. Only the               are then supplied to or from the device, depending on
Least Significant 7 bits of the ID locations are used.          whether the command was a load or a read. For
                                                                complete details of serial programming, please refer to
12.10 In-Circuit Serial Programming                             the "PIC12F6XX/16F6XX Memory Programming
                                                                Specification" (DS41204).
The PIC12F683 microcontrollers can be serially
programmed while in the end application circuit. This is        A typical In-Circuit Serial Programming connection is
simply done with two lines for clock and data and three         shown in Figure 12-11.
other lines for:

Power
Ground
Programming Voltage

DS41211B-page 92                                  Preliminary                               2004 Microchip Technology Inc.
                                                                               PIC12F683

FIGURE 12-11:  TYPICAL IN-CIRCUIT                        When the ICD pin on the PIC12F683 ICD device is held
               SERIAL PROGRAMMING                        low, the In-Circuit Debugger functionality is enabled.
               CONNECTION                                This function allows simple debugging functions when
                                                         used with MPLAB ICD 2. When the microcontroller has
External       To Normal                                 this feature enabled, some of the resources are not
Connector      Connections                               available for general use. Table 12-9 shows which
Signals                                                  features are consumed by the background debugger:
                        *
      +5V                          PIC12F683
        0V                                               TABLE 12-9: DEBUGGER RESOURCES
                                 VDD
        VPP                      VSS                        Resource                             Description
                                 MCLR/VPP/GP3
     CLK                         GP1                     I/O pins              ICDCLK, ICDDATA
Data I/O                         GP0                     Stack                 1 level
                                                         Program Memory        Address 0h must be NOP
                                                                               700h-7FFh

                                                         For more information, see "MPLAB ICD 2 In-Circuit
                                                         Debugger User's Guide" (DS51331), available on
                                                         Microchip's web site (www.microchip.com).

                       ***                               FIGURE 12-12: 14-PIN ICD PINOUT

                             To Normal                   14-Pin PDIP
                             Connections
                                                            In-Circuit Debug Device
  *Isolation devices (as required).
                                                                           NC  1 14                 ICDCLK
12.11 In-Circuit Debugger                                                         PIC12F683-ICD     ICDDATA
                                                            ICDMCLR/VPP        2 13
Since in-circuit debugging requires the loss of clock,                    VDD                       Vss
data and MCLR pins, MPLAB ICD 2 development with                        GP5   3 12                 GP0
an 8-pin device is not practical. A special 14-pin                       GP4                        GP1
PIC12F683 ICD device is used with MPLAB ICD 2 to                         GP3   4 11                 GP2
provide separate clock, data and MCLR pins and frees                      ICD  5 10
all normally available pins to the user.                                                            NC
A special debugging adapter allows the ICD device to                           6                 9
be used in place of a PIC12F683 device. The
debugging adapter is the only source of the ICD device.                        7                 8

2004 Microchip Technology Inc.                Preliminary                                          DS41211B-page 93
PIC12F683

NOTES:

DS41211B-page 94  Preliminary   2004 Microchip Technology Inc.
                                                                                         PIC12F683

13.0 INSTRUCTION SET SUMMARY                                   For example, a CLRF GPIO instruction will read GPIO,
                                                               clear all the data bits, then write the result back to
The PIC12F683 instruction set is highly orthogonal and         GPIO. This example would have the unintended result
is comprised of three basic categories:                        of clearing the condition that set the GPIF flag.

Byte-oriented operations                                     TABLE 13-1: OPCODE FIELD
                                                                                    DESCRIPTIONS
Bit-oriented operations
                                                               Field                 Description
Literal and control operations
                                                               f Register file address (0x00 to 0x7F)
Each PIC16 instruction is a 14-bit word divided into an        W Working register (accumulator)
opcode, which specifies the instruction type and one or
more operands, which further specify the operation of          b Bit address within an 8-bit file register
the instruction. The formats for each of the categories
is presented in Figure 13-1, while the various opcode          k Literal field, constant data or label
fields are summarized in Table 13-1.                           x Don't care location (= 0 or 1).

Table 13-2 lists the instructions recognized by the                   The assembler will generate code with x = 0.
MPASMTM Assembler. A complete description of each                     It is the recommended form of use for
instruction is also available in the "PICmicro Mid-Range             compatibility with all Microchip software tools.
MCU Family Reference Manual" (DS33023).
                                                               d Destination select; d = 0: store result in W,
For byte-oriented instructions, `f' represents a file                 d = 1: store result in file register f.
register designator and `d' represents a destination                  Default is d = 1.
designator. The file register designator specifies which
file register is to be used by the instruction.                PC Program Counter

The destination designator specifies where the result of       TO Time-out bit
the operation is to be placed. If `d' is zero, the result is   PD Power-down bit
placed in the W register. If `d' is one, the result is placed
in the file register specified in the instruction.             FIGURE 13-1:          GENERAL FORMAT FOR
                                                                                     INSTRUCTIONS
For bit-oriented instructions, `b' represents a bit field
designator, which selects the bit affected by the              Byte-oriented file register operations
operation, while `f' represents the address of the file in
which the bit is located.                                             13             8 76                              0

For literal and control operations, `k' represents an                     OPCODE         d                 f (FILE #)
8-bit or 11-bit constant, or literal value.
                                                                          d = 0 for destination W
One instruction cycle consists of four oscillator periods;                d = 1 for destination f
for an oscillator frequency of 4 MHz, this gives a normal                 f = 7-bit file register address
instruction execution time of 1 s. All instructions are
executed within a single instruction cycle, unless a           Bit-oriented file register operations
conditional test is true or the program counter is
changed as a result of an instruction. When this occurs,              13             10 9 7 6                          0
the execution takes two instruction cycles, with the
second cycle executed as a NOP.                                           OPCODE         b (BIT #) f (FILE #)

                                                                          b = 3-bit bit address
                                                                          f = 7-bit file register address

Note:  To maintain upward compatibility with                   Literal and control operations
       future products, do not use the OPTION
       and TRIS instructions.                                  General

All instruction examples use the format `0xhh' to                     13                 87                                 0
represent a hexadecimal number, where `h' signifies a                        OPCODE                        k (literal)
hexadecimal digit.
                                                                          k = 8-bit immediate value

13.1 READ-MODIFY-WRITE                                         CALL and GOTO instructions only
         OPERATIONS
                                                                      13          11 10                                0
Any instruction that specifies a file register as part of
the instruction performs a Read-Modify-Write (R-M-W)                      OPCODE                     k (literal)
operation. The register is read, the data is modified and
the result is stored according to either the instruction or               k = 11-bit immediate value
the destination designator `d'. A read operation is per-
formed on a register even if the instruction writes to that
register.

2004 Microchip Technology Inc.  Preliminary                                                               DS41211B-page 95
PIC12F683

TABLE 13-2: PIC12F683 INSTRUCTION SET

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

                                                                  MSb                    LSb

                                   BYTE-ORIENTED FILE REGISTER OPERATIONS

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

             f, d Move f                                          00 1000 dfff ffff           Z         1,2

             f    Move W to f                                     00 0000 lfff ffff

             -    No Operation                                    00 0000 0xx0 0000

             f, d Rotate Left f through Carry                     00 1101 dfff ffff           C         1,2

             f, d Rotate Right f through Carry                    00 1100 dfff ffff           C         1,2

             f, d Subtract W from f                               00 0010 dfff ffff C, DC, Z 1,2

             f, d Swap nibbles in f                               00 1110 dfff ffff                     1,2

             f, d Exclusive OR W with f                           00 0110 dfff ffff           Z         1,2

                                     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
ADDLW
ANDLW                                             1 (2) 01 11bb bfff ffff                               3
CALL
CLRWDT                                    LITERAL AND CONTROL OPERATIONS
GOTO
IORLW        k    Add literal and W                            1  11 111x kkkk kkkk C, DC, Z
MOVLW
RETFIE       k    AND literal with W                           1  11 1001 kkkk kkkk           Z
RETLW
RETURN       k    Call subroutine                              2  10 0kkk kkkk kkkk
SLEEP
SUBLW        -    Clear Watchdog Timer                         1  00 0000 0110 0100 TO, PD
XORLW
Note 1:      k    Go to address                                2  10 1kkk kkkk kkkk

         2:  k    Inclusive OR literal with W                  1  11 1000 kkkk kkkk           Z

         3:  k    Move literal to W                            1  11 00xx kkkk kkkk

             -    Return from interrupt                        2  00 0000 0000 1001

             k    Return with literal in W                     2  11 01xx kkkk kkkk

             -    Return from Subroutine                       2  00 0000 0000 1000

             -    Go into Standby mode                         1  00 0000 0110 0011 TO, PD

             k    Subtract W from literal                      1  11 110x kkkk kkkk C, DC, Z

             k    Exclusive OR literal with W                  1  11 1010 kkkk kkkk           Z

             When an I/O register is modified as a function of itself (e.g., MOVF GPIO, 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
             device, the data will be written back with a `0'.
             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 the Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second
             cycle is executed as a NOP.

Note: Additional information on the mid-range instruction set is available in the "PICmicro Mid-Range MCU
            Family Reference Manual" (DS33023).

DS41211B-page 96                                  Preliminary                2004 Microchip Technology Inc.
                                                                                       PIC12F683

13.2 Instruction Descriptions

ADDLW             Add Literal and W                             BCF               Bit Clear f
                                                                Syntax:
Syntax:           [ label ] ADDLW k                             Operands:         [ label ] BCF f,b
Operands:         0  k  255                                                       0  f  127
Operation:        (W) + k  (W)                                  Operation:        0b7
Status Affected:  C, DC, Z                                      Status Affected:  0  (f)
Description:                                                    Description:      None
                  The contents of the W register are                              Bit `b' in register `f' is cleared.
                  added to the eight-bit literal `k' and
                  the result is placed in the W
                  register.

ADDWF             Add W and f                                   BSF               Bit Set f
                                                                Syntax:
Syntax:           [ label ] ADDWF f,d                           Operands:         [ label ] BSF f,b
Operands:                                                                         0  f  127
                  0  f  127                                     Operation:        0b7
Operation:        d  [0,1]                                      Status Affected:  1  (f)
Status Affected:                                                Description:      None
Description:      (W) + (f)  (destination)                                        Bit `b' in register `f' is set.

                  C, DC, Z

                  Add the contents of the W register
                  with register `f'. If `d' is `0', the result
                  is stored in the W register. If `d' is
                  `1', the result is stored back in
                  register `f'.

ANDLW             AND Literal with W                            BTFSC             Bit Test, Skip if Clear

Syntax:           [ label ] ANDLW k                             Syntax:           [ label ] BTFSC f,b
Operands:         0  k  255
Operation:        (W) .AND. (k)  (W)                            Operands:         0  f  127
Status Affected:  Z                                                               0b7
Description:
                  The contents of W register are                Operation:        skip if (f) = 0
                  AND'ed with the eight-bit literal
                  `k'. The result is placed in the W            Status Affected: None
                  register.
                                                                Description:      If bit `b' in register `f' is `1', the next
                                                                                  instruction is executed.
                                                                                  If bit `b' in register `f' is `0', the next
                                                                                  instruction is discarded and a NOP
                                                                                  is executed instead, making this a
                                                                                  2-cycle instruction.

ANDWF             AND W with f                                  BTFSS             Bit Test f, Skip if Set
Syntax:
Operands:         [ label ] ANDWF f,d                           Syntax:           [ label ] BTFSS f,b
                                                                Operands:
Operation:        0  f  127                                                       0  f  127
Status Affected:  d  [0,1]                                      Operation:        0b<7
Description:      (W) .AND. (f)  (destination)                  Status Affected:
                  Z                                             Description:      skip if (f) = 1

                  AND the W register with register                                None
                  `f'. If `d' is `0', the result is stored in
                  the W register. If `d' is `1', the                              If bit `b' in register `f' is `0', the next
                  result is stored back in register `f'.                          instruction is executed.
                                                                                  If bit `b' is `1', then the next
                                                                                  instruction is discarded and a NOP
                                                                                  is executed instead, making this a
                                                                                  2-cycle instruction.

2004 Microchip Technology Inc.  Preliminary                                                          DS41211B-page 97
PIC12F683

CALL              Call Subroutine                         CLRWDT            Clear Watchdog Timer
                                                          Syntax:
Syntax:           [ label ] CALL k                        Operands:         [ label ] CLRWDT
                                                          Operation:
Operands:         0  k  2047                                                None
                                                          Status Affected:
Operation:        (PC) + 1  TOS,                          Description:      00h  WDT
                  k  PC<10:0>,                                              0  WDT prescaler,
                  (PCLATH<4:3>)  PC<12:11>                                  1  TO
                                                                            1  PD
Status Affected: None
                                                                            TO, PD
Description:      Call subroutine. First, return address
                  (PC + 1) is pushed onto the stack. The                    CLRWDT instruction resets the
                  eleven-bit immediate address is loaded                    Watchdog Timer. It also resets the
                  into PC bits <10:0>. The upper bits of                    prescaler of the WDT.
                  the PC are loaded from PCLATH.                            Status bits TO and PD are set.
                  CALL is a two-cycle instruction.

CLRF              Clear f                                 COMF              Complement f
Syntax:                                                   Syntax:
Operands:         [ label ] CLRF f                        Operands:         [ label ] COMF f,d
Operation:        0  f  127
                  00h  (f)                                Operation:        0  f  127
Status Affected:  1Z                                      Status Affected:  d  [0,1]
Description:      Z                                       Description:      (f)  (destination)
                  The contents of register `f' are                          Z
                  cleared and the Z bit is set.
                                                                            The contents of register `f' are
                                                                            complemented. If `d' is `0', the
                                                                            result is stored in W. If `d' is `1',
                                                                            the result is stored back in
                                                                            register `f'.

CLRW              Clear W                                 DECF              Decrement f
Syntax:                                                   Syntax:
Operands:         [ label ] CLRW                          Operands:         [ label ] DECF f,d
Operation:        None
                  00h  (W)                                Operation:        0  f  127
Status Affected:  1Z                                      Status Affected:  d  [0,1]
Description:      Z                                       Description:      (f) 1  (destination)
                  W register is cleared. Zero bit (Z)                       Z
                  is set.
                                                                            Decrement register `f'. If `d' is `0',
                                                                            the result is stored in the W
                                                                            register. If `d' is `1', the result is
                                                                            stored back in register `f'.

DS41211B-page 98                                    Preliminary              2004 Microchip Technology Inc.
                                                                            PIC12F683

DECFSZ            Decrement f, Skip if 0                  INCFSZ            Increment f, Skip if 0

Syntax:           [ label ] DECFSZ f,d                    Syntax:           [ label ] INCFSZ f,d
Operands:                                                 Operands:
                  0  f  127                                                 0  f  127
Operation:        d  [0,1]                                Operation:        d  [0,1]

                  (f) 1  (destination);                                   (f) + 1  (destination),
                  skip if result = 0                                        skip if result = 0

Status Affected:  None                                    Status Affected:  None
Description:                                              Description:
                  The contents of register `f' are                          The contents of register `f' are
                  decremented. If `d' is `0', the result                    incremented. If `d' is `0', the result
                  is placed in the W register. If `d' is                    is placed in the W register. If `d' is
                  `1', the result is placed back in                         `1', the result is placed back in
                  register `f'.                                             register `f'.
                  If the result is `1', the next                            If the result is `1', the next
                  instruction is executed. If the result                    instruction is executed. If the
                  is `0', then a NOP is executed                            result is `0', a NOP is executed
                  instead, making it a 2-cycle                              instead, making it a 2-cycle
                  instruction.                                              instruction.

GOTO              Unconditional Branch                    MOVF              Move f
Syntax:                                                   Syntax:
Operands:         [ label ] GOTO k                        Operands:         [ label ] MOVF f,d
Operation:                                                Operation:
                  0  k  2047                              Status Affected:  0  f  127
Status Affected:  k  PC<10:0>                             Encoding:         d  [0,1]
Description:      PCLATH<4:3>  PC<12:11>                  Description:      (f)  (dest)
                  None                                                      Z
                                                          Words:
                  GOTO is an unconditional branch.        Cycles:                00 1000 dfff ffff
                  The eleven-bit immediate value is       Example:
                  loaded into PC bits <10:0>. The                           The contents of register `f' are
                  upper bits of PC are loaded from                          moved to a destination
                  PCLATH<4:3>. GOTO is a                                    dependent upon the status of `d'.
                  two-cycle instruction.                                    If `d' = 0, destination is W register.
                                                                            If `d' = 1, the destination is file
INCF              Increment f                                               register `f' itself. `d' = 1 is useful to
Syntax:                                                                     test a file register since status flag
Operands:         [ label ] INCF f,d                                        Z is affected.

Operation:        0  f  127                                                 1
Status Affected:  d  [0,1]
Description:      (f) + 1  (destination)                                    1
                  Z
                                                                              MOVF FSR, 0
                  The contents of register `f' are
                  incremented. If `d' is `0', the result                    After Instruction
                  is placed in the W register. If `d' is
                  `1', the result is placed back in                                  W = value in FSR register
                  register `f'.                                                      Z =1

2004 Microchip Technology Inc.            Preliminary                      DS41211B-page 99
PIC12F683

MOVLW                Move Literal to W                         IORLW             Inclusive OR Literal with W
Syntax:              [ label ] MOVLW k                         Syntax:
Operands:            0  k  255                                 Operands:         [ label ] IORLW k
Operation:           k  (W)                                    Operation:
Status Affected:     None                                      Status Affected:  0  k  255
Encoding:                                                      Description:      (W) .OR. k  (W)
Description:              11 00xx kkkk kkkk                                      Z

Words:               The eight-bit literal `k' is loaded into                    The contents of the W register are
Cycles:              the W register. The don't cares will                        OR'ed with the eight-bit literal `k'.
Example:             assemble as `0's.                                           The result is placed in the W
                     1                                                           register.
                     1

                     MOVLW 0x5A

                     After Instruction
                                 W = 0x5A

MOVWF             Move W to f                                  IORWF             Inclusive OR W with f
                                                               Syntax:
Syntax:           [ label ] MOVWF f                            Operands:         [ label ] IORWF f,d

Operands:         0  f  127                                    Operation:        0  f  127
                                                               Status Affected:  d  [0,1]
Operation:        (W)  (f)                                     Description:      (W) .OR. (f)  (destination)
                                                                                 Z
Status Affected: None
                                                                                 Inclusive OR the W register with
Encoding:            00      0000 1fff ffff                                      register `f'. If `d' is `0', the result is
                                                                                 placed in the W register. If `d' is
Description: Move data from W register to register `f'.                          `1', the result is placed back in
                                                                                 register `f'.
Words:            1

Cycles:           1

Example:          MOVWF OPTION

                  Before Instruction

                         OPTION =        0xFF
                                         0x4F
                         W            =
                                         0x4F
                  After Instruction      0x4F

                         OPTION =

                         W            =

NOP                  No Operation                              RETFIE        Return from Interrupt
Syntax:              [ label ] NOP
Operands:            None                                      Syntax:       [ label ] RETFIE
Operation:           No operation
Status Affected:     None                                      Operands: None
Encoding:
Description:              00 0000                              Operation: TOS  PC, 1  GIE
Words:
Cycles:              No operation.                             Status Affected: None
Example:             1
                     1                   0xx0  0000            Encoding:         00      0000 0000 1001

                       NOP                                     Description:  Return from interrupt. Stack is POPed
                                                                             and Top-of-Stack (TOS) is loaded in the
                                                                             PC. Interrupts are enabled by setting
                                                                             Global Interrupt Enable bit, GIE
                                                                             (INTCON<7>). This is a two-cycle
                                                                             instruction.

                                                               Words:        1

                                                               Cycles:       2

                                                               Example:          RETFIE

                                                                             After Interrupt    TOS
                                                                                         PC =   1
                                                                                         GIE =

DS41211B-page 100                              Preliminary                                2004 Microchip Technology Inc.
                                                                                PIC12F683

RETLW             Return with Literal in W               RLF               Rotate Left f through Carry
                                                         Syntax:
Syntax:           [ label ] RETLW k                      Operands:         [ label ] RLF f,d
                                                         Operation:
Operands:         0  k  255                              Status Affected:  0  f  127
                                                         Encoding:         d  [0,1]
Operation:        k  (W);                                Description:
                  TOS  PC
                                                         Words:            See description below
                                                         Cycles:
Status Affected: None                                    Example:          C

Encoding:            11      01xx kkkk kkkk                                   00 1101 dfff ffff

Description:      The W register is loaded with the                        The contents of register `f' are
                  eight-bit literal `k'. The program                       rotated one bit to the left through
                  counter is loaded from the top of the                    the Carry flag. If `d' is `0', the result
                  stack (the return address). This is a                    is placed in the W register. If `d' is
                  two-cycle instruction.                                   `1', the result is stored back in
                                                                           register `f'.
Words:            1

Cycles:           2                                                             C             Register f

Example:          CALL TABLE;W contains table                              1

                             ;offset value

                            ;W now has table value                        1

                  

                                                                          RLF     REG1,0

                  ADDWF PC ;W = offset                                     Before Instruction

                  RETLW k1 ;Begin table                                            REG1 =         1110 0110
                                                                                                  0
                  RETLW k2 ;                                                       C
                                                                                                  1110 0110
                                                                                              =  1100 1100
                                                                                                  1
                                                                          After Instruction

                                                                                  REG1 =

                  RETLW kn ; End of table                                          W           =

                  Before Instruction                                               C           =
                              W = 0x07

                  After Instruction
                              W = value of k8

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

                                                                                C     Register f

2004 Microchip Technology Inc.                Preliminary                            DS41211B-page 101
PIC12F683

SLEEP              [ label ] SLEEP                         SWAPF             Swap Nibbles in f
Syntax:                                                    Syntax:
Operands:          None                                    Operands:         [ label ] SWAPF f,d
Operation:
                   00h  WDT,                               Operation:        0  f  127
Status Affected:   0  WDT prescaler,                                         d  [0,1]
Description:       1  TO,                                  Status Affected:  (f<3:0>)  (destination<7:4>),
                   0  PD                                   Description:      (f<7:4>)  (destination<3:0>)

                   TO, PD                                                    None

                   The Power-down status bit, PD,                            The upper and lower nibbles of
                   is cleared. Time-out status bit,                          register `f' are exchanged. If `d' is
                   TO, is set. Watchdog Timer and                            `0', the result is placed in the W
                   its prescaler are cleared.                                register. If `d' is `1', the result is
                   The processor is put into Sleep                           placed in register `f'.
                   mode with the oscillator stopped.

SUBLW             Subtract W from Literal                  XORLW             Exclusive OR Literal with W

Syntax:           [ label ] SUBLW k                        Syntax:           [ label ] XORLW k
                                                           Operands:         0  k  255
Operands:         0  k  255                                Operation:        (W) .XOR. k  (W)
                                                           Status Affected:  Z
Operation:        k - (W)  (W)                             Description:
                                                                             The contents of the W register
Status Affected: C, DC, Z                                                    are XOR'ed with the eight-bit
                                                                             literal `k'. The result is placed in
Description:      The W register is subtracted (2's                          the W register.
                  complement method) from the
                  eight-bit literal `k'. The result is
                  placed in the W register.

SUBWF             Subtract W from f                        XORWF             Exclusive OR W with f
                                                           Syntax:
Syntax:           [ label ] SUBWF f,d                      Operands:         [ label ] XORWF f,d

Operands:         0  f  127                                Operation:        0  f  127
                  d  [0,1]                                 Status Affected:  d  [0,1]
                                                           Description:      (W) .XOR. (f)  (destination)
Operation:        (f) (W)  (destination)
                                                                             Z
Status Affected: C, DC, Z
                                                                             Exclusive OR the contents of the
Description:      Subtract (2's complement method)                           W register with register `f'. If `d' is
                  W register from register `f'. If `d' is                    `0', the result is stored in the W
                  `0', the result is stored in the W                         register. If `d' is `1', the result is
                  register. If `d' is `1', the result is                     stored back in register `f'.
                  stored back in register `f'.

DS41211B-page 102                                       Preliminary           2004 Microchip Technology Inc.
14.0 DEVELOPMENT SUPPORT                                              PIC12F683

The PICmicro microcontrollers are supported with a     14.1 MPLAB Integrated Development
full range of hardware and software development tools:           Environment Software

Integrated Development Environment                    The MPLAB IDE software brings an ease of software
   - MPLAB IDE Software                                development previously unseen in the 8/16-bit micro-
                                                        controller market. The MPLAB IDE is a Windows
Assemblers/Compilers/Linkers                          based application that contains:
   - MPASMTM Assembler
   - MPLAB C17 and MPLAB C18 C Compilers                An interface to debugging tools
   - MPLINKTM Object Linker/                               - simulator
      MPLIBTM Object Librarian                             - programmer (sold separately)
   - MPLAB C30 C Compiler                                  - emulator (sold separately)
   - MPLAB ASM30 Assembler/Linker/Library                  - in-circuit debugger (sold separately)

Simulators                                             A full-featured editor with color coded context
   - MPLAB SIM Software Simulator                        A multiple project manager
   - MPLAB dsPIC30 Software Simulator                   Customizable data windows with direct edit of

Emulators                                                contents
   - MPLAB ICE 2000 In-Circuit Emulator                  High-level source code debugging
   - MPLAB ICE 4000 In-Circuit Emulator                  Mouse over variable inspection
                                                         Extensive on-line help
In-Circuit Debugger
   - MPLAB ICD 2                                        The MPLAB IDE allows you to:

Device Programmers                                     Edit your source files (either assembly or C)
   - PRO MATE II Universal Device Programmer            One touch assemble (or compile) and download
   - PICSTART Plus Development Programmer
   - MPLAB PM3 Device Programmer                           to PICmicro emulator and simulator tools
                                                           (automatically updates all project information)
Low-Cost Demonstration Boards                         Debug using:
   - PICDEMTM 1 Demonstration Board                        - source files (assembly or C)
   - PICDEM.netTM Demonstration Board                      - mixed assembly and C
   - PICDEM 2 Plus Demonstration Board                     - machine code
   - PICDEM 3 Demonstration Board
   - PICDEM 4 Demonstration Board                       MPLAB IDE supports multiple debugging tools in a
   - PICDEM 17 Demonstration Board                      single development paradigm, from the cost effective
   - PICDEM 18R Demonstration Board                     simulators, through low-cost in-circuit debuggers, to
   - PICDEM LIN Demonstration Board                     full-featured emulators. This eliminates the learning
   - PICDEM USB Demonstration Board                     curve when upgrading to tools with increasing flexibility
                                                        and power.
Evaluation Kits
   - KEELOQ                                            14.2 MPASM Assembler
   - PICDEM MSC
   - microID                                           The MPASM assembler is a full-featured, universal
   - CAN                                                macro assembler for all PICmicro MCUs.
   - PowerSmart
   - Analog                                             The MPASM assembler generates relocatable object
                                                        files for the MPLINK object linker, Intel standard HEX
                                                        files, MAP files to detail memory usage and symbol ref-
                                                        erence, absolute LST files that contain source lines and
                                                        generated machine code and COFF files for
                                                        debugging.

                                                        The MPASM assembler features include:

                                                         Integration into MPLAB IDE projects
                                                         User defined macros to streamline assembly code
                                                         Conditional assembly for multi-purpose source

                                                           files
                                                         Directives that allow complete control over the

                                                           assembly process

2004 Microchip Technology Inc.  Preliminary            DS41211B-page 103
PIC12F683                                                    14.6 MPLAB ASM30 Assembler, Linker
                                                                      and Librarian
14.3 MPLAB C17 and MPLAB C18
         C Compilers                                         MPLAB ASM30 assembler produces relocatable
                                                             machine code from symbolic assembly language for
The MPLAB C17 and MPLAB C18 Code Development                 dsPIC30F devices. MPLAB C30 compiler uses the
Systems are complete ANSI C compilers for                    assembler to produce it's object file. The assembler
Microchip's PIC17CXXX and PIC18CXXX family of                generates relocatable object files that can then be
microcontrollers. These compilers provide powerful           archived or linked with other relocatable object files and
integration capabilities, superior code optimization and     archives to create an executable file. Notable features
ease of use not found with other compilers.                  of the assembler include:

For easy source level debugging, the compilers provide       Support for the entire dsPIC30F instruction set
symbol information that is optimized to the MPLAB IDE         Support for fixed-point and floating-point data
debugger.                                                    Command line interface
                                                             Rich directive set
14.4 MPLINK Object Linker/                                    Flexible macro language
         MPLIB Object Librarian                               MPLAB IDE compatibility

The MPLINK object linker combines relocatable                14.7 MPLAB SIM Software Simulator
objects created by the MPASM assembler and the
MPLAB C17 and MPLAB C18 C compilers. It can link             The MPLAB SIM software simulator allows code devel-
relocatable objects from precompiled libraries, using        opment in a PC hosted environment by simulating the
directives from a linker script.                             PICmicro series microcontrollers on an instruction
                                                             level. On any given instruction, the data areas can be
The MPLIB object librarian manages the creation and          examined or modified and stimuli can be applied from
modification of library files of precompiled code. When      a file, or user defined key press, to any pin. The execu-
a routine from a library is called from a source file, only  tion can be performed in Single-Step, Execute Until
the modules that contain that routine will be linked in      Break or Trace mode.
with the application. This allows large libraries to be
used efficiently in many different applications.             The MPLAB SIM simulator fully supports symbolic
                                                             debugging using the MPLAB C17 and MPLAB C18
The object linker/library features include:                  C Compilers, as well as the MPASM assembler. The
                                                             software simulator offers the flexibility to develop and
Efficient linking of single libraries instead of many      debug code outside of the laboratory environment,
   smaller files                                             making it an excellent, economical software
                                                             development tool.
Enhanced code maintainability by grouping
   related modules together                                  14.8 MPLAB SIM30 Software Simulator

Flexible creation of libraries with easy module            The MPLAB SIM30 software simulator allows code
   listing, replacement, deletion and extraction             development in a PC hosted environment by simulating
                                                             the dsPIC30F series microcontrollers on an instruction
14.5 MPLAB C30 C Compiler                                    level. On any given instruction, the data areas can be
                                                             examined or modified and stimuli can be applied from
The MPLAB C30 C compiler is a full-featured, ANSI            a file, or user defined key press, to any of the pins.
compliant, optimizing compiler that translates standard
ANSI C programs into dsPIC30F assembly language              The MPLAB SIM30 simulator fully supports symbolic
source. The compiler also supports many command              debugging using the MPLAB C30 C Compiler and
line options and language extensions to take full            MPLAB ASM30 assembler. The simulator runs in either
advantage of the dsPIC30F device hardware capabili-          a Command Line mode for automated tasks, or from
ties and afford fine control of the compiler code            MPLAB IDE. This high-speed simulator is designed to
generator.                                                   debug, analyze and optimize time intensive DSP
                                                             routines.
MPLAB C30 is distributed with a complete ANSI C
standard library. All library functions have been vali-
dated and conform to the ANSI C library standard. The
library includes functions for string manipulation,
dynamic memory allocation, data conversion, time-
keeping and math functions (trigonometric, exponential
and hyperbolic). The compiler provides symbolic
information for high-level source debugging with the
MPLAB IDE.

DS41211B-page 104  Preliminary                                2004 Microchip Technology Inc.
14.9 MPLAB ICE 2000                                                      PIC12F683
         High-Performance Universal
         In-Circuit Emulator                               14.11 MPLAB ICD 2 In-Circuit Debugger

The MPLAB ICE 2000 universal in-circuit emulator is        Microchip's In-Circuit Debugger, MPLAB ICD 2, is a
intended to provide the product development engineer       powerful, low-cost, run-time development tool,
with a complete microcontroller design tool set for        connecting to the host PC via an RS-232 or high-speed
PICmicro microcontrollers. Software control of the         USB interface. This tool is based on the Flash
MPLAB ICE 2000 in-circuit emulator is advanced by          PICmicro MCUs and can be used to develop for these
the MPLAB Integrated Development Environment,              and other PICmicro microcontrollers. The MPLAB
which allows editing, building, downloading and source     ICD 2 utilizes the in-circuit debugging capability built
debugging from a single environment.                       into the Flash devices. This feature, along with
                                                           Microchip's In-Circuit Serial ProgrammingTM (ICSPTM)
The MPLAB ICE 2000 is a full-featured emulator sys-        protocol, offers cost effective in-circuit Flash debugging
tem with enhanced trace, trigger and data monitoring       from the graphical user interface of the MPLAB
features. Interchangeable processor modules allow the      Integrated Development Environment. This enables a
system to be easily reconfigured for emulation of differ-  designer to develop and debug source code by setting
ent processors. The universal architecture of the          breakpoints, single-stepping and watching variables,
MPLAB ICE in-circuit emulator allows expansion to          CPU status and peripheral registers. Running at full
support new PICmicro microcontrollers.                     speed enables testing hardware and applications in
                                                           real-time. MPLAB ICD 2 also serves as a development
The MPLAB ICE 2000 in-circuit emulator system has          programmer for selected PICmicro devices.
been designed as a real-time emulation system with
advanced features that are typically found on more         14.12 PRO MATE II Universal Device
expensive development tools. The PC platform and                    Programmer
Microsoft Windows 32-bit operating system were
chosen to best make these features available in a          The PRO MATE II is a universal, CE compliant device
simple, unified application.                               programmer with programmable voltage verification at
                                                           VDDMIN and VDDMAX for maximum reliability. It features
14.10 MPLAB ICE 4000                                       an LCD display for instructions and error messages
         High-Performance Universal                        and a modular detachable socket assembly to support
         In-Circuit Emulator                               various package types. In Stand-Alone mode, the
                                                           PRO MATE II device programmer can read, verify and
The MPLAB ICE 4000 universal in-circuit emulator is        program PICmicro devices without a PC connection. It
intended to provide the product development engineer       can also set code protection in this mode.
with a complete microcontroller design tool set for high-
end PICmicro microcontrollers. Software control of the     14.13 MPLAB PM3 Device Programmer
MPLAB ICE in-circuit emulator is provided by the
MPLAB Integrated Development Environment, which            The MPLAB PM3 is a universal, CE compliant device
allows editing, building, downloading and source           programmer with programmable voltage verification at
debugging from a single environment.                       VDDMIN and VDDMAX for maximum reliability. It features
                                                           a large LCD display (128 x 64) for menus and error
The MPLAB ICD 4000 is a premium emulator system,           messages and a modular detachable socket assembly
providing the features of MPLAB ICE 2000, but with         to support various package types. The ICSPTM cable
increased emulation memory and high-speed perfor-          assembly is included as a standard item. In Stand-
mance for dsPIC30F and PIC18XXXX devices. Its              Alone mode, the MPLAB PM3 device programmer can
advanced emulator features include complex triggering      read, verify and program PICmicro devices without a
and timing, up to 2 Mb of emulation memory and the         PC connection. It can also set code protection in this
ability to view variables in real-time.                    mode. MPLAB PM3 connects to the host PC via an
                                                           RS-232 or USB cable. MPLAB PM3 has high-speed
The MPLAB ICE 4000 in-circuit emulator system has          communications and optimized algorithms for quick
been designed as a real-time emulation system with         programming of large memory devices and incorpo-
advanced features that are typically found on more         rates an SD/MMC card for file storage and secure data
expensive development tools. The PC platform and           applications.
Microsoft Windows 32-bit operating system were
chosen to best make these features available in a
simple, unified application.

2004 Microchip Technology Inc.  Preliminary               DS41211B-page 105
PIC12F683                                                   14.17 PICDEM 2 Plus
                                                                     Demonstration Board
14.14 PICSTART Plus Development
         Programmer                                         The PICDEM 2 Plus demonstration board supports
                                                            many 18, 28 and 40-pin microcontrollers, including
The PICSTART Plus development programmer is an              PIC16F87X and PIC18FXX2 devices. All the neces-
easy-to-use, low-cost, prototype programmer. It con-        sary hardware and software is included to run the dem-
nects to the PC via a COM (RS-232) port. MPLAB              onstration programs. The sample microcontrollers
Integrated Development Environment software makes           provided with the PICDEM 2 demonstration board can
using the programmer simple and efficient. The              be programmed with a PRO MATE II device program-
PICSTART Plus development programmer supports               mer, PICSTART Plus development programmer, or
most PICmicro devices up to 40 pins. Larger pin count       MPLAB ICD 2 with a Universal Programmer Adapter.
devices, such as the PIC16C92X and PIC17C76X,               The MPLAB ICD 2 and MPLAB ICE in-circuit emulators
may be supported with an adapter socket. The                may also be used with the PICDEM 2 demonstration
PICSTART Plus development programmer is CE                  board to test firmware. A prototype area extends the
compliant.                                                  circuitry for additional application components. Some
                                                            of the features include an RS-232 interface, a 2 x 16
14.15 PICDEM 1 PICmicro                                     LCD display, a piezo speaker, an on-board temperature
         Demonstration Board                                sensor, four LEDs and sample PIC18F452 and
                                                            PIC16F877 Flash microcontrollers.
The PICDEM 1 demonstration board demonstrates the
capabilities of the PIC16C5X (PIC16C54 to                   14.18 PICDEM 3 PIC16C92X
PIC16C58A), PIC16C61, PIC16C62X, PIC16C71,                           Demonstration Board
PIC16C8X, PIC17C42, PIC17C43 and PIC17C44. All
necessary hardware and software is included to run          The PICDEM 3 demonstration board supports the
basic demo programs. The sample microcontrollers            PIC16C923 and PIC16C924 in the PLCC package. All
provided with the PICDEM 1 demonstration board can          the necessary hardware and software is included to run
be programmed with a PRO MATE II device program-            the demonstration programs.
mer or a PICSTART Plus development programmer.
The PICDEM 1 demonstration board can be connected           14.19 PICDEM 4 8/14/18-Pin
to the MPLAB ICE in-circuit emulator for testing. A                  Demonstration Board
prototype area extends the circuitry for additional appli-
cation components. Features include an RS-232               The PICDEM 4 can be used to demonstrate the capa-
interface, a potentiometer for simulated analog input,      bilities of the 8, 14 and 18-pin PIC16XXXX and
push button switches and eight LEDs.                        PIC18XXXX MCUs, including the PIC16F818/819,
                                                            PIC16F87/88, PIC16F62XA and the PIC18F1320
14.16 PICDEM.net Internet/Ethernet                          family of microcontrollers. PICDEM 4 is intended to
         Demonstration Board                                showcase the many features of these low pin count
                                                            parts, including LIN and Motor Control using ECCP.
The PICDEM.net demonstration board is an Internet/          Special provisions are made for low-power operation
Ethernet demonstration board using the PIC18F452            with the supercapacitor circuit and jumpers allow on-
microcontroller and TCP/IP firmware. The board              board hardware to be disabled to eliminate current
supports any 40-pin DIP device that conforms to the         draw in this mode. Included on the demo board are pro-
standard pinout used by the PIC16F877 or                    visions for Crystal, RC or Canned Oscillator modes, a
PIC18C452. This kit features a user friendly TCP/IP         five volt regulator for use with a nine volt wall adapter
stack, web server with HTML, a 24L256 Serial                or battery, DB-9 RS-232 interface, ICD connector for
EEPROM for Xmodem download to web pages into                programming via ICSP and development with MPLAB
Serial EEPROM, ICSP/MPLAB ICD 2 interface con-              ICD 2, 2 x 16 liquid crystal display, PCB footprints for
nector, an Ethernet interface, RS-232 interface and a       H-Bridge motor driver, LIN transceiver and EEPROM.
16 x 2 LCD display. Also included is the book and           Also included are: header for expansion, eight LEDs,
CD-ROM "TCP/IP Lean, Web Servers for Embedded               four potentiometers, three push buttons and a proto-
Systems," by Jeremy Bentham                                 typing area. Included with the kit is a PIC16F627A and
                                                            a PIC18F1320. Tutorial firmware is included along with
                                                            the User's Guide.

DS41211B-page 106  Preliminary                               2004 Microchip Technology Inc.
14.20 PICDEM 17 Demonstration Board                                   PIC12F683

The PICDEM 17 demonstration board is an evaluation      14.24 PICDEM USB PIC16C7X5
board that demonstrates the capabilities of several              Demonstration Board
Microchip microcontrollers, including PIC17C752,
PIC17C756A, PIC17C762 and PIC17C766. A pro-             The PICDEM USB Demonstration Board shows off the
grammed sample is included. The PRO MATE II device      capabilities of the PIC16C745 and PIC16C765 USB
programmer, or the PICSTART Plus development pro-       microcontrollers. This board provides the basis for
grammer, can be used to reprogram the device for user   future USB products.
tailored application development. The PICDEM 17
demonstration board supports program download and       14.25 Evaluation and
execution from external on-board Flash memory. A                 Programming Tools
generous prototype area is available for user hardware
expansion.                                              In addition to the PICDEM series of circuits, Microchip
                                                        has a line of evaluation kits and demonstration software
14.21 PICDEM 18R PIC18C601/801                          for these products.
         Demonstration Board
                                                         KEELOQ evaluation and programming tools for
The PICDEM 18R demonstration board serves to assist        Microchip's HCS Secure Data Products
development of the PIC18C601/801 family of Microchip
microcontrollers. It provides hardware implementation    CAN developers kit for automotive network
of both 8-bit Multiplexed/Demultiplexed and 16-bit         applications
Memory modes. The board includes 2 Mb external
Flash memory and 128 Kb SRAM memory, as well as          Analog design boards and filter design software
serial EEPROM, allowing access to the wide range of      PowerSmart battery charging evaluation/
memory types supported by the PIC18C601/801.
                                                           calibration kits
14.22 PICDEM LIN PIC16C43X                               IrDA development kit
         Demonstration Board                            microID development and rfLabTM development

The powerful LIN hardware and software kit includes a      software
series of boards and three PICmicro microcontrollers.    SEEVAL designer kit for memory evaluation and
The small footprint PIC16C432 and PIC16C433 are
used as slaves in the LIN communication and feature        endurance calculations
on-board LIN transceivers. A PIC16F874 Flash             PICDEM MSC demo boards for Switching mode
microcontroller serves as the master. All three micro-
controllers are programmed with firmware to provide        power supply, high-power IR driver, delta sigma
LIN bus communication.                                     ADC and flow rate sensor

14.23 PICkitTM 1 Flash Starter Kit                      Check the Microchip web page and the latest Product
                                                        Selector Guide for the complete list of demonstration
A complete "development system in a box", the PICkit    and evaluation kits.
Flash Starter Kit includes a convenient multi-section
board for programming, evaluation and development of
8/14-pin Flash PIC microcontrollers. Powered via
USB, the board operates under a simple Windows GUI.
The PICkit 1 Starter Kit includes the User's Guide (on
CD ROM), PICkit 1 tutorial software and code for
various applications. Also included are MPLAB IDE
(Integrated Development Environment) software,
software and hardware "Tips 'n Tricks for 8-pin Flash
PIC Microcontrollers" Handbook and a USB interface
cable. Supports all current 8/14-pin Flash PIC
microcontrollers, as well as many future planned
devices.

2004 Microchip Technology Inc.  Preliminary            DS41211B-page 107
PIC12F683

NOTES:

DS41211B-page 108  Preliminary   2004 Microchip Technology Inc.
                                              PIC12F683

15.0 ELECTRICAL SPECIFICATIONS

Absolute Maximum Ratings()

Ambient temperature under bias....................................................................................................... -40C to +125C
Storage temperature ........................................................................................................................ -65C to +150C
Voltage on VDD with respect to VSS ................................................................................................... -0.3V to +6.5V
Voltage on MCLR with respect to Vss ............................................................................................... -0.3V to +13.5V
Voltage on all other pins with respect to VSS ........................................................................... -0.3V to (VDD + 0.3V)
Total power dissipation(1) ............................................................................................................................... 800 mW
Maximum current out of VSS pin ..................................................................................................................... 300 mA
Maximum current into VDD pin ........................................................................................................................ 250 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 ..................................................................................................................... 200 mA
Maximum current sourced GPIO..................................................................................................................... 200 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.

Note:  Voltage spikes below VSS at the MCLR pin, inducing currents greater than 80 mA, may cause latch-up.
       Thus, a series resistor of 50-100 should be used when applying a "low" level to the MCLR pin, rather than
       pulling this pin directly to VSS.

2004 Microchip Technology Inc.  Preliminary  DS41211B-page 109
PIC12F683

FIGURE 15-1:          PIC12F683 VOLTAGE-FREQUENCY GRAPH, -40C  TA  +125C

5.5

5.0

4.5

VDD 4.0
(Volts)

           3.5

3.0

2.5

2.0

                   0  4  8 10 12          16  20

                         Frequency (MHz)

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

DS41211B-page 110        Preliminary           2004 Microchip Technology Inc.
                                                                PIC12F683

15.1 DC Characteristics: PIC12F683-I (Industrial)
                                        PIC12F683-E (Extended)

DC CHARACTERISTICS                         Standard Operating Conditions (unless otherwise stated)
                                           Operating temperature -40C  TA  +85C for industrial

                                                                            -40C  TA  +125C for extended

Param  Sym       Characteristic            Min Typ Max Units    Conditions
  No.

            VDD  Supply Voltage
D001
D001C                                      2.0 -- 5.5 V FOSC < = 4 MHz
D001D                                      3.0 -- 5.5 V FOSC < = 10 MHz
                                           4.5 -- 5.5 V FOSC < = 20 MHz

D002 VDR         RAM Data Retention        1.5* -- -- V Device in Sleep mode
                 Voltage(1)

D003 VPOR        VDD Start Voltage to      -- VSS --            V See Section 12.3.1 "Power-on Reset" for
                 ensure internal Power-on                             details
                 Reset signal

D004 SVDD        VDD Rise Rate to ensure   0.05* --  -- V/ms See Section 12.3.1 "Power-on Reset" for
                 internal Power-on Reset                            details
                 signal

D005 VBOD Brown-out Detect                 -- 2.1 -- V

       * These parameters are characterized but not tested.

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

Note 1: This is the limit to which VDD can be lowered in Sleep mode without losing RAM data.

2004 Microchip Technology Inc.            Preliminary                                        DS41211B-page 111
PIC12F683

15.2 DC Characteristics: PIC12F683-I (Industrial)

DC CHARACTERISTICS                  Standard Operating Conditions (unless otherwise stated)
                                    Operating temperature -40C  TA  +85C for industrial

Param  Sym               Device     Min Typ Max Units                               Conditions
  No.              Characteristics                                             VDD            Note

D010 IDD    Supply Current(1,2)     --  9 TBD A     2.0 FOSC = 32 kHz
D011                                                 3.0 LP Oscillator mode
D012                                -- 18 TBD A     5.0
D013                                                 2.0 FOSC = 1 MHz
D014                                -- 35 TBD A     3.0 XT Oscillator mode
D015                                                 5.0
D016                                -- 110 TBD A    2.0 FOSC = 4 MHz
D017                                                 3.0 XT Oscillator mode
D018                                -- 190 TBD A    5.0
                                                     2.0 FOSC = 1 MHz
                                    -- 330 TBD A    3.0 EC Oscillator mode
                                                     5.0
                                    -- 220 TBD A    2.0 FOSC = 4 MHz
                                                     3.0 EC Oscillator mode
                                    -- 370 TBD A    5.0
                                                     2.0 FOSC = 31 kHz
                                    -- 0.6 TBD A    3.0 INTRC mode
                                                     5.0
                                    -- 70 TBD A     2.0 FOSC = 4 MHz
                                                     3.0 INTOSC mode
                                    -- 140 TBD A    5.0
                                                     2.0 FOSC = 4 MHz
                                    -- 260 TBD A    3.0 EXTRC mode
                                                     5.0
                                    -- 180 TBD A    4.5 FOSC = 20 MHz
                                                     5.0 HS Oscillator mode
                                    -- 320 TBD A

                                    -- 580 TBD A

                                    -- 10 TBD A

                                    -- 25 TBD A

                                    -- 40 TBD A

                                    -- 340 TBD A

                                    -- 500 TBD A

                                    -- 0.8 TBD mA

                                    -- 250 TBD A

                                    -- 375 TBD A

                                    -- 750 TBD A

                                    -- 3.0 TBD mA

                                    -- 3.7 TBD mA

Legend: TBD = To Be Determined

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

Note 1: The test conditions for all IDD measurements in active operation mode are: OSC1 = external square wave,
              from rail to rail; all I/O pins tri-stated, pulled to VDD; MCLR = VDD; WDT disabled.

        2: The supply current is mainly a function of the operating voltage and frequency. Other factors, such as I/O
              pin loading and switching rate, oscillator type, internal code execution pattern and temperature, also have
              an impact on the current consumption.

        3: The peripheral current is the sum of the base IDD or IPD and the additional current consumed when this
              peripheral is enabled. The peripheral  current can be determined by subtracting the base IDD or IPD
              current from this limit. Max values should be used when calculating total current consumption.

        4: 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 high-impedance state and tied to VDD.

DS41211B-page 112                       Preliminary                                  2004 Microchip Technology Inc.
                                                                                     PIC12F683

15.2 DC Characteristics: PIC12F683-I (Industrial) (Continued)

DC CHARACTERISTICS               Standard Operating Conditions (unless otherwise stated)

                                 Operating temperature  -40C  TA  +85C for industrial

Param  Sym        Device         Min Typ Max Units                                   Conditions
  No.       Characteristics                                                     VDD            Note

D020 IPD    Power-down Base      -- 0.00099 TBD N/A     2.0 WDT, BOD, Comparator, VREF
            Current(4)           -- 0.0012 TBD N/A      3.0 and T1OSC disabled

                                 -- 0.0029 TBD N/A      5.0
                                                        2.0 WDT Current(3)
D021                             --  1.8 TBD A

                                 --  2.7 TBD A         3.0

                                 --  8.4 TBD A         5.0

D022                             --  58 TBD A          3.0 BOD Current(3)

                                 --  109 TBD A         5.0

D023                             --  18 TBD A          2.0 Comparator Current(3)

                                 --  28 TBD A          3.0

                                 --  60 TBD A          5.0

D024                             --  58 TBD A          2.0 CVREF Current(3)

                                 --  85 TBD A          3.0

                                 --  138 TBD A         5.0

D025                             --  7.0 TBD A         2.0 T1OSC Current(3)

                                 --  8.6 TBD A         3.0

                                 --  10 TBD A          5.0

D026                             --  1.2 TBD nA         3.0 A/D Current(3)

                                 -- 0.0029 TBD A       5.0

Legend: TBD = To Be Determined

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

Note 1: The test conditions for all IDD measurements in active operation mode are: OSC1 = external square wave,
              from rail to rail; all I/O pins tri-stated, pulled to VDD; MCLR = VDD; WDT disabled.

      2: The supply current is mainly a function of the operating voltage and frequency. Other factors, such as I/O
            pin loading and switching rate, oscillator type, internal code execution pattern and temperature, also have
            an impact on the current consumption.

      3: The peripheral current is the sum of the base IDD or IPD and the additional current consumed when this
            peripheral is enabled. The peripheral  current can be determined by subtracting the base IDD or IPD
            current from this limit. Max values should be used when calculating total current consumption.

      4: 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 high-impedance state and tied to VDD.

2004 Microchip Technology Inc.      Preliminary                                     DS41211B-page 113
PIC12F683

15.3 DC Characteristics: PIC12F683-E (Extended)

DC CHARACTERISTICS                  Standard Operating Conditions (unless otherwise stated)
                                    Operating temperature -40C  TA  +125C for extended

Param  Sym               Device     Min Typ Max Units                               Conditions
  No.              Characteristics                                             VDD            Note

D010E IDD          Supply Current(1,2) --  9 TBD A     2.0 FOSC = 32 kHz
D011E                                                   3.0 LP Oscillator mode
D012E                               -- 18 TBD A        5.0
D013E                                                   2.0 FOSC = 1 MHz
D014E                               -- 35 TBD A        3.0 XT Oscillator mode
D015E                                                   5.0
D016E                               -- 110 TBD A       2.0 FOSC = 4 MHz
D017E                                                   3.0 XT Oscillator mode
D018E                               -- 190 TBD A       5.0
                                                        2.0 FOSC = 1 MHz
                                    -- 330 TBD A       3.0 EC Oscillator mode
                                                        5.0
                                    -- 220 TBD A       2.0 FOSC = 4 MHz
                                                        3.0 EC Oscillator mode
                                    -- 370 TBD A       5.0
                                                        2.0 FOSC = 31 kHz
                                    -- 0.6 TBD mA       3.0 INTRC mode
                                                        5.0
                                    -- 70 TBD A        2.0 FOSC = 4 MHz
                                                        3.0 INTOSC mode
                                    -- 140 TBD A       5.0
                                                        2.0 FOSC = 4 MHz
                                    -- 260 TBD A       3.0 EXTRC mode
                                                        5.0
                                    -- 180 TBD A       4.5 FOSC = 20 MHz
                                                        5.0 HS Oscillator mode
                                    -- 320 TBD A

                                    -- 580 TBD A

                                    -- 10 TBD A

                                    -- 25 TBD A

                                    -- 40 TBD A

                                    -- 340 TBD A

                                    -- 500 TBD A

                                    -- 0.8 TBD mA

                                    -- 250 TBD A

                                    -- 375 TBD A

                                    -- 750 TBD A

                                    -- 3.0 TBD mA

                                    -- 3.7 TBD mA

Legend: TBD = To Be Determined

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

Note 1: The test conditions for all IDD measurements in active operation mode are: OSC1 = external square wave,
              from rail to rail; all I/O pins tri-stated, pulled to VDD; MCLR = VDD; WDT disabled.

        2: The supply current is mainly a function of the operating voltage and frequency. Other factors, such as I/O
              pin loading and switching rate, oscillator type, internal code execution pattern and temperature, also have
              an impact on the current consumption.

        3: The peripheral current is the sum of the base IDD or IPD and the additional current consumed when this
              peripheral is enabled. The peripheral  current can be determined by subtracting the base IDD or IPD
              current from this limit. Max values should be used when calculating total current consumption.

        4: 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 high-impedance state and tied to VDD.

DS41211B-page 114                          Preliminary                               2004 Microchip Technology Inc.
                                                                                    PIC12F683

15.3 DC Characteristics: PIC12F683-E (Extended) (Continued)

DC CHARACTERISTICS               Standard Operating Conditions (unless otherwise stated)
                                 Operating temperature -40C  TA  +125C for extended

Param  Sym        Device         Min Typ Max Units                                  Conditions
  No.       Characteristics                                                    VDD            Note

D020E IPD   Power-down Base -- 0.99 TBD nA         2.0 WDT, BOD, Comparator, VREF
                                                   3.0 and T1OSC disabled
            Current(4)           --  1.2 TBD nA

                                 --  2.9 TBD nA    5.0

D021E                            --  1.8 TBD A    2.0 WDT Current(3)

                                 --  2.7 TBD A    3.0

                                 --  8.4 TBD A    5.0

D022E                            --  58 TBD A     3.0 BOD Current(3)

                                 -- 109 TBD A     5.0

D023E                            --  18 TBD A     2.0 Comparator Current(3)

                                 --  28 TBD A     3.0

                                 --  60 TBD A     5.0

D024E                            --  58 TBD A     2.0 CVREF Current(3)

                                 --  85 TBD A     3.0

                                 -- 138 TBD A     5.0

D025E                            --  7.0 TBD A    2.0 T1OSC Current(3)

                                 --  8.6 TBD A    3.0

                                 --  10 TBD A     5.0

D026E                            --  1.2 TBD A    3.0 A/D Current(3)

                                 -- 0.0029 TBD A  5.0

Legend: TBD = To Be Determined

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

Note 1: The test conditions for all IDD measurements in active operation mode are: OSC1 = external square wave,
              from rail to rail; all I/O pins tri-stated, pulled to VDD; MCLR = VDD; WDT disabled.

2: The supply current is mainly a function of the operating voltage and frequency. Other factors, such as I/O
      pin loading and switching rate, oscillator type, internal code execution pattern and temperature, also have
      an impact on the current consumption.

3: The peripheral current is the sum of the base IDD or IPD and the additional current consumed when this
      peripheral is enabled. The peripheral  current can be determined by subtracting the base IDD or IPD
      current from this limit. Max values should be used when calculating total current consumption.

4: 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 high-impedance state and tied to VDD.

2004 Microchip Technology Inc.      Preliminary                                    DS41211B-page 115
PIC12F683

15.4 DC Characteristics:                    PIC12F683-I (Industrial)
                                            PIC12F683-E (Extended)

DC CHARACTERISTICS                              Standard Operating Conditions (unless otherwise stated)
                                                Operating temperature -40C  TA  +85C for industrial

                                                                                     -40C  TA  +125C for extended

Param        Sym            Characteristic      Min        Typ Max Units                Conditions
  No.

       VIL Input Low Voltage

                  I/O port:

D030               with TTL buffer              Vss        --         0.8   V 4.5V  VDD  5.5V

D030A                                           Vss        -- 0.15 VDD V Otherwise

D031               with Schmitt Trigger buffer  Vss        -- 0.2 VDD V Entire range

**TBD             Ultra Low-Power               --         --         --    --

D032              MCLR, OSC1 (RC mode)          VSS        -- 0.2 VDD V

D033              OSC1 (XT and LP modes)(1)     VSS        --         0.3   V

D033A             OSC1 (HS mode)(1)             VSS        -- 0.3 VDD V

       VIH Input High Voltage

                  I/O port:                                --

D040              with TTL buffer               2.0        --         VDD   V 4.5V  VDD  5.5V
D040A
                                                (0.25 VDD + 0.8) --   VDD   V Otherwise

D041               with Schmitt Trigger buffer  0.8 VDD    --         VDD   V Entire range

TBD               Ultra Low-Power               --         --         --    --

D042              MCLR                          0.8 VDD    --         VDD   V

D043              OSC1 (XT and LP modes)        1.6        --         VDD   V (Note 1)

D043A             OSC1 (HS mode)                0.7 VDD    --         VDD   V (Note 1)

D043B             OSC1 (RC mode)                0.9 VDD    --         VDD   V

D070 IPUR GPIO Weak Pull-up Current             50*        250        400*  A VDD = 5.0V, VPIN = VSS

       IIL Input Leakage Current(2)

D060              I/O port                      --          0.1 1         A VSS  VPIN  VDD,
D061              MCLR(3)
                                                                                Pin at hi-impedance

                                                --          0.1 5         A VSS  VPIN  VDD

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

                                                                                LP oscillator configuration

       VOL Output Low Voltage

D080              I/O port                      --         --         0.6   V IOL = 8.5 mA, VDD = 4.5V (Ind.)

D083              OSC2/CLKOUT (RC mode)         --         --         0.6   V IOL = 1.6 mA, VDD = 4.5V (Ind.)

                                                                                IOL = 1.2 mA, VDD = 4.5V (Ext.)

       VOH Output High Voltage

D090              I/O port                      VDD 0.7  --         --    V IOH = -3.0 mA, VDD = 4.5V (Ind.)

D092              OSC2/CLKOUT (RC mode)         VDD 0.7  --         --    V IOH = -1.3 mA, VDD = 4.5V (Ind.)

                                                                                IOH = -1.0 mA, VDD = 4.5V (Ext.)

Legend:      TBD = To Be Determined
          *  These parameters are characterized but not tested.
             Data in `Typ' column is at 5.0V, 25C unless otherwise stated. These parameters are for design guidance only
             and are not tested.
Note 1:      In RC oscillator configuration, the OSC1/CLKIN pin is a Schmitt Trigger input. It is not recommended to use an
             external clock in RC mode.
         2:  Negative current is defined as current sourced by the pin.
         3:  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.
         4:  See Section 10.4.1 "Using the Data EEPROM" for additional information.

DS41211B-page 116                               Preliminary                      2004 Microchip Technology Inc.
                                                                               PIC12F683

15.4 DC Characteristics: PIC12F683-I (Industrial)
                                      PIC12F683-E (Extended) (Continued)

                                             Standard Operating Conditions (unless otherwise stated)

DC CHARACTERISTICS                           Operating temperature       -40C  TA  +85C for industrial

                                                                         -40C  TA  +125C for extended

Param        Sym    Characteristic           Min   Typ              Max Units           Conditions
  No.

D100         IULP  Ultra Low-Power Wake-up   --    200              --   nA

                   Current

                   Capacitive Loading Specs
                   on Output Pins

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

                                                                               external clock is used to drive

                                                                               OSC1

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

                   Data EEPROM Memory

D120 ED            Byte Endurance            100K  1M               -- E/W -40C  TA  +85C

D120A ED           Byte Endurance            10K   100K             -- E/W +85C  TA  +125C

D121 VDRW VDD for Read/Write                 VMIN  --               5.5  V Using EECON1 to read/write

                                                                               VMIN = Minimum operating

                                                                               voltage

D122 TDEW Erase/Write Cycle Time             --    5                6    ms

D123 TRETD Characteristic Retention          40    --               -- Year Provided no other specifications

                                                                               are violated

D124 TREF Number of Total Erase/Write        1M    10M              -- E/W -40C  TA  +85C

                   Cycles before Refresh(4)

                   Program Flash Memory

D130 EP            Cell Endurance            10K   100K             -- E/W -40C  TA  +85C

D130A ED           Cell Endurance            1K    10K              -- E/W +85C  TA  +125C

D131 VPR           VDD for Read              VMIN  --               5.5  V VMIN = Minimum operating

                                                                               voltage

D132 VPEW VDD for Erase/Write                4.5   --               5.5  V

D133 TPEW Erase/Write cycle time             --    2                2.5 ms

D134 TRETD Characteristic Retention          40    --               -- Year Provided no other specifications

                                                                               are violated

Legend:      TBD = To Be Determined
          *  These parameters are characterized but not tested.
             Data in `Typ' column is at 5.0V, 25C unless otherwise stated. These parameters are for design guidance only and
             are not tested.
Note 1:      In RC oscillator configuration, the OSC1/CLKIN pin is a Schmitt Trigger input. It is not recommended to use an
             external clock in RC mode.
         2:  Negative current is defined as current sourced by the pin.
         3:  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.
         4:  See Section 10.4.1 "Using the Data EEPROM" for additional information.

2004 Microchip Technology Inc.              Preliminary                                     DS41211B-page 117
PIC12F683

15.5 Timing Parameter Symbology

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

1. TppS2ppS

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

   H         High                                    R          Rise

   I         Invalid (High-impedance)                V          Valid

   L         Low                                     Z          High-impedance

FIGURE 15-2:           LOAD CONDITIONS
                         Load Condition 1
                                            VDD/2                    Load Condition 2

                                          RL

                       pin                CL                    pin                    CL

                                      VSS                                 VSS

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

                           15 pF

DS41211B-page 118                                  Preliminary             2004 Microchip Technology Inc.
                                                                            PIC12F683

15.6 AC Characteristics: PIC12F683 (Industrial, Extended)

FIGURE 15-3:           EXTERNAL CLOCK TIMING

                       Q4               Q1        Q2            Q3      Q4                Q1

       OSC1                             1                    3       3  4   4
   CLKOUT
                                                         2

TABLE 15-1: EXTERNAL CLOCK TIMING REQUIREMENTS

Standard Operating Conditions (unless otherwise stated)

Operating temperature      -40C  TA  +125C

   Param     Sym           Characteristic     Min Typ Max Units                Conditions
     No.

          FOSC External CLKIN Frequency(1) DC            --     37      kHz LP Oscillator mode

                                              DC --             4       MHz XT Oscillator mode

                                              DC --             20 MHz HS Oscillator mode

                                              DC --             20 MHz EC Oscillator mode

                  Oscillator Frequency(1)     5          --     37      kHz LP Oscillator mode

                                              --         4      -- MHz INTOSC mode

                                              DC --             4       MHz RC Oscillator mode

                                              0.1 --            4       MHz XT Oscillator mode

                                              1          --     20 MHz HS Oscillator mode

1         TOSC External CLKIN Period(1)       27         --     --      s LP Oscillator mode

                                              50         --     --      ns HS Oscillator mode

                                              50         --     --      ns EC Oscillator mode

                                              250 --            --      ns XT Oscillator mode

                  Oscillator Period(1)        27         --     200     s LP Oscillator mode

                                              -- 250            --      ns INTOSC mode

                                              250 --            --      ns RC Oscillator mode

                                              250 -- 10,000 ns XT Oscillator mode

                                              50         --     1,000 ns HS Oscillator mode

2         TCY Instruction Cycle Time(1)       200 TCY           DC      ns TCY = 4/FOSC

3         TosL, External CLKIN (OSC1) High 2*            --     --      s LP oscillator, TOSC L/H duty cycle

          TosH External CLKIN Low             20* --            --      ns HS oscillator, TOSC L/H duty cycle

                                              100 * --          --      ns XT oscillator, TOSC L/H duty cycle

4         TosR, External CLKIN Rise           --         --     50*     ns LP oscillator

          TosF External CLKIN Fall            --         --     25*     ns XT oscillator

                                              --         --     15*     ns HS oscillator

          * 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: 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
               OSC1 pin. When an external clock input is used, the `max' cycle time limit is `DC' (no clock) for all devices.

2004 Microchip Technology Inc.               Preliminary                                 DS41211B-page 119
PIC12F683

TABLE 15-2: PRECISION INTERNAL OSCILLATOR PARAMETERS

Standard Operating Conditions (unless otherwise stated)
Operating temperature -40C  TA  +125C

Param  Sym         Characteristic                Freq    Min  Typ  Max Units  Conditions
  No.                                         Tolerance

F10 FOSC Internal Calibrated                  1%        -- 8.00   -- MHz VDD and Temperature (TBD)
                         INTOSC Frequency(1)  2%        -- 8.00
                                                                   -- MHz 2.5V  VDD  5.5V
                                                                                    0C  TA  +85C

                                              5%        -- 8.00   -- MHz 2.0V  VDD  5.5V
                                                                                    -40C  TA  +85C (Ind.)
                                                                                    -40C  TA  +125C (Ext.)

F14 TIOSCST Oscillator Wake-up from           --         -- TBD TBD s VDD = 2.0V, -40C to +85C
                                                         -- TBD TBD s VDD = 3.0V, -40C to +85C
                   Sleep Start-up Time*       --

                                              --         -- TBD TBD s VDD = 5.0V, -40C to +85C

Legend: TBD = To Be Determined

       * These parameters are characterized but not tested.

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

Note 1: To ensure these oscillator frequency tolerances, VDD and VSS must be capacitively decoupled as close to
              the device as possible. 0.1 F and 0.01 F values in parallel are recommended.

DS41211B-page 120                             Preliminary           2004 Microchip Technology Inc.
FIGURE 15-4:      CLKOUT AND I/O TIMING                                                    PIC12F683

          OSC1    Q4                             Q1                               Q2                       Q3
                                                                                              11
      CLKOUT                             10                         22
                                                                    23                                  12
         I/O pin                             13               19 18                                      16
         (Input)                                  14
         I/O pin                                                                                       New Value
       (Output)                          17                          15

                  Old Value

                                                      20, 21

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

Standard Operating Conditions (unless otherwise stated)
Operating temperature -40C  TA  +125C

Param  Sym                       Characteristic               Min                     Typ  Max   Units Conditions
  No.
                                                                                           200     ns (Note 1)
10     TosH2ckL OSC1 to CLOUT                                 --                      75   200     ns (Note 1)
                                                                                           100     ns (Note 1)
11     TosH2ckH OSC1 to CLOUT                                 --                      75   100     ns (Note 1)
                                                                                            20     ns (Note 1)
12     TckR       CLKOUT Rise Time                            --                      35    --     ns (Note 1)
                                                                                            --     ns (Note 1)
13     TckF       CLKOUT Fall Time