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

型号

产品描述

搜索
 

PIC16LF1829-I/SO

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

器件描述

8-BIT, FLASH, 32 MHz, RISC MICROCONTROLLER, PDSO20

8位, FLASH, 32 MHz, 精简指令集微控制器, PDSO20

参数

PIC16LF1829-I/SO功能数量 1
PIC16LF1829-I/SO端子数量 20
PIC16LF1829-I/SO最大工作温度 85 Cel
PIC16LF1829-I/SO最小工作温度 -40 Cel
PIC16LF1829-I/SO最大供电/工作电压 3.6 V
PIC16LF1829-I/SO最小供电/工作电压 2.5 V
PIC16LF1829-I/SO额定供电电压 3 V
PIC16LF1829-I/SO外部数据总线宽度 0.0
PIC16LF1829-I/SO输入输出总线数量 18
PIC16LF1829-I/SO线速度 32 MHz
PIC16LF1829-I/SO加工封装描述 7.50 MM, 塑料, SOIC-20
PIC16LF1829-I/SO无铅 Yes
PIC16LF1829-I/SO欧盟RoHS规范 Yes
PIC16LF1829-I/SO中国RoHS规范 Yes
PIC16LF1829-I/SO状态 ACTIVE
PIC16LF1829-I/SO工艺 CMOS
PIC16LF1829-I/SO包装形状 矩形的
PIC16LF1829-I/SO包装尺寸 SMALL OUTLINE
PIC16LF1829-I/SO表面贴装 Yes
PIC16LF1829-I/SO端子形式 GULL WING
PIC16LF1829-I/SO端子间距 1.27 mm
PIC16LF1829-I/SO端子涂层 MATTE 锡
PIC16LF1829-I/SO端子位置
PIC16LF1829-I/SO包装材料 塑料/环氧树脂
PIC16LF1829-I/SO温度等级 INDUSTRIAL
PIC16LF1829-I/SOADC通道 Yes
PIC16LF1829-I/SO地址总线宽度 0.0
PIC16LF1829-I/SO位数 8
PIC16LF1829-I/SO最大FCLK时钟频率 32 MHz
PIC16LF1829-I/SODAC通道 Yes
PIC16LF1829-I/SO微处理器类型 精简指令集微控制器
PIC16LF1829-I/SOPWM通道 Yes
PIC16LF1829-I/SOROM编程 FLASH

PIC16LF1829-I/SO器件文档内容

                                     PIC16F/LF1825/1829
                                                   Data Sheet

                                 14/20-Pin Flash Microcontrollers
                                  with nanoWatt XLP Technology

2010 Microchip Technology Inc.  Preliminary  DS41440A
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 provided only for your convenience
and may be superseded by updates. It is your responsibility to     The Microchip name and logo, the Microchip logo, dsPIC,
ensure that your application meets with your specifications.       KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART,
MICROCHIP MAKES NO REPRESENTATIONS OR                              PIC32 logo, rfPIC and UNI/O are registered trademarks of
WARRANTIES OF ANY KIND WHETHER EXPRESS OR                          Microchip Technology Incorporated in the U.S.A. and other
IMPLIED, WRITTEN OR ORAL, STATUTORY OR                             countries.
OTHERWISE, RELATED TO THE INFORMATION,
INCLUDING BUT NOT LIMITED TO ITS CONDITION,                        FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor,
QUALITY, PERFORMANCE, MERCHANTABILITY OR                           MXDEV, MXLAB, SEEVAL and The Embedded Control
FITNESS FOR PURPOSE. Microchip disclaims all liability             Solutions Company are registered trademarks of Microchip
arising from this information and its use. Use of Microchip        Technology Incorporated in the U.S.A.
devices in life support and/or safety applications is entirely at
the buyer's risk, and the buyer agrees to defend, indemnify and    Analog-for-the-Digital Age, Application Maestro, CodeGuard,
hold harmless Microchip from any and all damages, claims,          dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN,
suits, or expenses resulting from such use. No licenses are        ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial
conveyed, implicitly or otherwise, under any Microchip             Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified
intellectual property rights.                                      logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code
                                                                   Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit,
                                                                   PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance,
                                                                   TSHARC, UniWinDriver, WiperLock and ZENA are
                                                                   trademarks of Microchip Technology Incorporated in the
                                                                   U.S.A. and other countries.

                                                                   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.

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

                                                                        Printed on recycled paper.

                                                                   ISBN: 978-1-60932-473-5

                                                                   Microchip received ISO/TS-16949:2002 certification for its worldwide
                                                                   headquarters, design and wafer fabrication facilities in Chandler and
                                                                   Tempe, Arizona; Gresham, Oregon and design centers in California
                                                                   and India. The Company's quality system processes and procedures
                                                                   are for its PIC MCUs and dsPIC DSCs, 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.

DS41440A-page 2  Preliminary                                        2010 Microchip Technology Inc.
                                                      PIC16F/LF1825/1829

14/20-Pin Flash Microcontrollers with nanoWatt Technology

High-Performance RISC CPU:                            Extreme Low-Power Management
                                                      PIC16LF1825/1829 with nanoWatt XLP:
Only 49 Instructions to Learn:
   - All single-cycle instructions except branches    Sleep mode: 20 nA
                                                       Watchdog Timer: 500 nA
Operating Speed:                                     Timer1 Oscillator: 600 nA @ 32 kHz
   - DC 32 MHz oscillator/clock input
   - DC 125 ns instruction cycle                    Analog Features:

Up to 8 Kbytes Linear Program Memory                Analog-to-Digital Converter (ADC) Module:
   Addressing                                            - 10-bit resolution, up to 12 channels
                                                         - Auto acquisition capability
Up to 1024 bytes Linear Data Memory Addressing         - Conversion available during Sleep
Interrupt Capability with automatic context saving
16-Level Deep Hardware Stack with Optional          Analog Comparator Module:
                                                         - Two rail-to-rail analog comparators
   Overflow/Underflow Reset                              - Power mode control
Direct, Indirect and Relative Addressing modes:        - Software controllable hysteresis

   - Two full 16-bit File Select Registers (FSRs)      Voltage Reference Module:
   - FSRs can read program and data memory               - Fixed Voltage Reference (FVR) with 1.024V,
                                                            2.048V and 4.096V output levels
Flexible Oscillator Structure:                           - 5-bit rail-to-rail resistive DAC with positive
                                                            and negative reference selection
Precision 32 MHz Internal Oscillator Block:
   - Factory calibrated to 1%, typical              Peripheral Highlights:
   - Software selectable frequencies range of
      31 kHz to 32 MHz                                 Up to 17 I/O Pins and 1 Input Only Pin:
                                                         - High current sink/source 25 mA/25 mA
31 kHz Low-Power Internal Oscillator                   - Programmable weak pull-ups
Four Crystal modes up to 32 MHz                        - Programmable interrupt-on-change pins
Three External Clock modes up to 32 MHz
4X Phase Lock Loop (PLL)                            Timer0: 8-Bit Timer/Counter with 8-Bit Prescaler
Fail-Safe Clock Monitor:                            Enhanced Timer1:

   - Allows for safe shutdown if peripheral clock        - 16-bit timer/counter with prescaler
      stops                                              - External Gate Input mode
                                                         - Dedicated, low-power 32 kHz oscillator driver
Two-Speed Oscillator Start-up                        Three Timer2-types: 8-Bit Timer/Counter with 8-Bit
Reference Clock Module:                                Period Register, Prescaler and Postscaler
                                                       Two Capture, Compare, PWM (CCP) Modules
   - Programmable clock output frequency and          Two Enhanced CCP (ECCP) Modules:
      duty-cycle                                         - Software selectable time bases
                                                         - Auto-shutdown and auto-restart
Special Microcontroller Features:                        - PWM steering
                                                       Up to two Master Synchronous Serial Port
1.8V-5.5V Operation PIC16F1825/1829                  (MSSP) with SPI and I2CTM with:
1.8V-3.6V Operation PIC16LF1825/1829                 - 7-bit address masking
Self-Programmable under Software Control               - SMBus/PMBusTM compatibility
Power-on Reset (POR), Power-up Timer (PWRT)          Enhanced Universal Synchronous Asynchronous
                                                         Receiver Transmitter (EUSART) Module
   and Oscillator Start-up Timer (OST)                mTouchTM Sensing Oscillator Module:
Programmable Brown-out Reset (BOR)                     - Up to 12 input channels
Extended Watchdog Timer (WDT)                        Data Signal Modulator Module:
In-Circuit Serial ProgrammingTM (ICSPTM) via           - Selectable modulator and carrier sources
                                                       SR Latch:
   two pins                                              - Multiple Set/Reset input options
In-Circuit Debug (ICD) via Two Pins                    - Emulates 555 Timer applications
Enhanced Low-Voltage Programming (LVP)
Operating Voltage Range:

   - 1.8V-5.5V (PIC16F1825/1829)
   - 1.8V-3.6V (PIC16LF1825/1829)
Programmable Code Protection
Power-Saving Sleep mode

2010 Microchip Technology Inc.  Preliminary          DS41440A-page 3
PIC16F/LF1825/1829

PIC16F/LF1825/1829 Family Types

                 Program        Data
Device
                   Words
                              SRAM
                                  (bytes)
                                        Data EEPROM
                                            (bytes)

                                                  I/O's(1)
                                                            10-bit ADC (ch)
                                                                     Cap Sense (ch)

                                                                              Comparators
                                                                                       Timers (8/16-bit)

                                                                                                EUSART
                                                                                                         MSSP

                                                                                                                  ECCP (Full-Bridge)
                                                                                                                          ECCP (Half-Bridge)

                                                                                                                                   CCP
                                                                                                                                            SR Latch
                 Memory Memory

PIC16LF1825      8K 1024 256 12 8 8 2 4/1 1 1 1 1 2 Yes

PIC16F1825       8K 1024 256 12 8 8 2 4/1 1 1 1 1 2 Yes

PIC16LF1829      8K 1024 256 18 12 12 2 4/1 1 2 1 1 2 Yes

PIC16F1829       8K 1024 256 18 12 12 2 4/1 1 2 1 1 2 Yes

Note 1: One pin is input only.

DS41440A-page 4                       Preliminary   2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  FIGURE 1:  14-PIN DIAGRAM FOR PIC16F/LF1825

                                 PDIP, SOIC, TSSOP

                                                                                                                        VDD  1                 14  VSS
                                                             CCP2(1)/P2A(1)/T1CKI/T1OSI/OSC1/CLKIN/RA5                                             RA0/AN0/CPS0/C1IN+/VREF-/DACOUT/TX(1)/CK(1)/ICSPDAT
                                 T1G(1)/P2B(1)/SDO(1)/CLKR/T1OSO/CLKOUT/OSC2/CPS3/AN3/RA4                                    2                 13  RA1/AN1/CPS1/C12IN0-/VREF+/SRI/RX(1)/DT(1)/ICSPCLK
                                                                                                                                                   RA2/AN2/CPS2/T0CKI/INT/C1OUT/SRQ/CCP3/FLT0
                                                                                     MCLR/VPP/T1G(1)/SS1(1)/RA3              3  PIC16F/LF1825  12  RC0/AN4/CPS4/C2IN+/SCL/SCK/P1D(1)
                                                                            MDCIN2/DT(1)/RX(1)/CCP1/P1A/RC5                                        RC1/AN5/CPS5/C12IN1-/SDA/SDI/P1C(1)/CCP4
                                                                 MDOUT/CK(1)/TX(1)/P1B/SRNQ/C2OUT/RC4                        4                 11  RC2/AN6/CPS6/C12IN2-/P1D(1)/P2B(1)/SDO(1)/MDCIN1

                                        MDMIN/SS1(1)/P1C(1)/CCP2(1)/P2A(1)/C12IN3-/CPS7/AN7/RC3                              5                 10

                                                                                                                             6                 9

                                                                                                                             7                 8

Preliminary                      Note 1: Pin function is selectable via the APFCON0 or APFCON1 register.

DS41440A-page 5                                                                                                                                                                                         PIC16F/LF1825/1829
DS41440A-page 6                  FIGURE 2:     16-PIN DIAGRAM FOR PIC16F/LF1825                                                                                                                                                                                                                                                                                                 PIC16F/LF1825/1829

                                          QFN

                                                                                                                     VDD                                   NC                                                       NC                                                VSS

                                                             CCP2(1)/P2A(1)/T1CKI/T1OSI/OSC1/CLKIN/RA5               16                                    15                                                       14                                                13                                            RA0/AN0/CPS0/C1IN+/VREF-/DACOUT/TX(1)/CK(1)/ICSPDAT/ICDDAT
                                 T1G(1)/P2B(1)/SDO(1)/CLKR/T1OSO/CLKOUT/OSC2/CPS3/AN3/RA4                                                                                                                                                                                                                           RA1/AN1/CPS1/C12IN0-/VREF+/SRI/RX(1)/DT(1)/ICSPCLK/ICDCLK
                                                                                                                  1                                                                                                                                                        12                                       RA2/AN2/CPS2/T0CKI/INT/C1OUT/SRQ/CCP3/FLT0
                                                                                      MCLR/VPP/T1G(1)/SS1(1)/RA3                                                                                                                                                                                                    RC0/AN4/CPS4/C2IN+/SCL/SCK/P1D(1)
                                                                             MDCIN2/DT(1)/RX(1)/CCP1/P1A/RC5      2                                                                                                                                                                                             11

                                                                                                                     PIC16F/LF1825

                                                                                                                  3                                                                                                                                                        10

                                                                                                                  4                                                                                                                                                                                             9

                                                                                                                     5                                     6                                                        7                                                 8

Preliminary                                                                                                          RC4/C2OUT/SRNQ/P1B/TX(1)/CK(1)/MDOUT  RC3/AN7/CPS7/C12IN3-/P2A(1)/CCP2(1)/P1C(1)/SS1(1)/MDMIN  RC2/AN6/CPS6/C12IN2-/P1D(1)/P2B(1)/SDO(1)/MDCIN1  RC1/AN5/CPS5/C12IN1-/SDA/SDI/P1C(1)/CCP4

2010 Microchip Technology Inc.                Note 1: Pin function is selectable via the APFCON0 or APFCON1 register.
                                   PIC16F/LF1825/1829

TABLE 1: 14-PIN AND 16-PIN ALLOCATION TABLE (PIC16F/LF1825)

I/O
         14-Pin PDIP/SOIC/TSSOP

               16-Pin QFN
                        A/D

                                     Reference
                                                   Cap Sense
                                                                 Comparator
                                                                               SR Latch

                                                                                             Timers
                                                                                                           ECCP
                                                                                                                        EUSART
                                                                                                                                       MSSP
                                                                                                                                                     Interrupt
                                                                                                                                                                   Modulator
                                                                                                                                                                               Pull-up
                                                                                                                                                                                            Basic

RA0  13 12  AN0    VREF- CPS0           C1IN+    --    --                  --     TX(1)     --   IOC   --  Y ICSPDAT
RA1  12 11  AN1  DACOUT                C12IN0-  SRI    --                         CK(1)     --
                                                SRQ  T0CKI                 --     RX(1)     --                 ICDDAT
                   VREF+ CPS1                    --  T1G(1)                       DT(1)  SS1(1)
                                                                         CCP3            SDO(1)  IOC   --  Y ICSPCLK
                                                                         FLT0       --
                                                                                                               ICDCLK
                                                                           --       --
RA2 11 10 AN2    --              CPS2 C1OUT                                                      INT/  --  Y   --

                                                                                                 IOC

RA3 4 3 --       --              --    --                                                        IOC   --  Y   MCLR

                                                                                                               VPP

RA4 3 2 AN3      --              CPS3  --       --   T1G(1) P2B(1)                --             IOC   --  Y   OSC2

                                                     T1OSO                                                     CLKOUT

                                                                                                               CLKR

RA5 2 1 --       --              --    --       --   T1CKI CCP2                   --        --   IOC   --  Y   OSC1
RC0 10 9 AN4                                         T1OSI P2A(1)
                                                                                          SCL                  CLKIN
                                                                                          SCK
                 --              CPS4 C2IN+     --   --                  P1D(1)   --      SDA    --    --  Y   --
                                                                                           SDI
RC1 9 8 AN5      --              CPS5 C12IN1- --     --                  CCP4       --   SDO(1)  --    --  Y   --
RC2 8 7 AN6                                                              P1C(1)
RC3 7 6 AN7                                                                         --   SS1(1)
                 --              CPS6 C12IN2- --     --                  P1D(1)                  -- MDCIN1 Y   --
RC4 6 5 --                                                               P2B(1)     --      --

                 --              CPS7 C12IN3- --     --                  CCP2(1)  TX(1)     --   -- MDMIN Y    --
                                                                         P1C(1)   CK(1)
                                                                         P2A(1)   RX(1)     --
                                                                                  DT(1)     --
                 --              -- C2OUT SRNQ --                        P1B                     -- MDOUT Y    --
                                                                                    --
RC5 5 4 --       --              --    --       --   --                  CCP1       --           -- MDCIN2 Y   --
                                                                          P1A
VDD 1 16 --      --              --    --       --   --                                          --    --  --  VDD
                                                                           --
VSS 14 13 --     --              --    --       --   --                                          --    --  --  VSS
                                                                           --

Note 1: Pin function is selectable via the APFCON0 or APFCON1 register.

2010 Microchip Technology Inc.                     Preliminary                                            DS41440A-page 7
DS41440A-page 8                  FIGURE 3:  20-PIN DIAGRAM FOR PIC16F/LF1829                                                                                                            PIC16F/LF1825/1829

                                 PDIP, SOIC, TSSOP

                                                                              VDD              1                                    20  VSS

                                            CCP2(1)/P2A(1)/T1CKI/SD02(1)/T1OSI/OSC1/CLKIN/RA5  2                                    19  RA0/AN0/CPS0/C1IN+/VREF-/DACOUT/ICSPDAT/ICDDAT

                                 T1G(1)/P2B(1)/SS2(1)/CLKR/T1OSO/CLKOUT/OSC2/CPS3/AN3/RA4      3                                    18  RA1/AN1/CPS1/C12IN0-/VREF+/SRI/ICSPCLK/ICDCLK

                                                    MCLR/VPP/T1G(1)/RA3                        4                     PIC16F/LF1829  17  RA2/AN2/CPS2/T0CKI/INT/C1OUT/SRQ/CCP3/FLT0

                                                    MDCIN2/DT(1)/RX(1)/P1A/CCP1/RC5            5                                    16  RC0/AN4/CPS4/C2IN+/P1D(1)/SS2(1)

                                                    MDOUT/CK(1)/TX(1)/P1B/SRNQ/C2OUT/RC4       6                                    15  RC1/AN5/CPS5/C12IN1-/P1C(1)/SDO2(1)

                                            MDMIN/P2A(1)/CCP2(1)/P1C(1)/C12IN3-/CPS7/AN7/RC3   7                                    14  RC2/AN6/CPS6/C12IN2-/P1D(1)/P2B(1)/MDCIN1

                                                    SS1/CCP4/CPS8/AN8/RC6                      8                                    13  RB4/AN10/CPS10/SDA1/SDI1

                                                    SDO/CPS9/AN9/RC7                           9                                    12  RB5/AN11/CPS11/RX(1)/DT(1)/SDA2/SDI2

                                                    SCK2/SCL2/CK(1)/TX(1)/RB7                  10                                   11  RB6/SCL1/SCK1

Preliminary                                 Note 1: Pin function is selectable via the APFCON0 or APFCON1 register.

2010 Microchip Technology Inc.
2010 Microchip Technology Inc.  FIGURE 4:  PIC16F/LF1829 20-PIN QFN

                                            QFN 4x4                                                                      T1G(1)/P2B(1)/SS2(1)/CLKR/T1OSO/CLKOUT/OSC2/CPS3/AN3/RA4

Preliminary                                                                                                                                                                        CCP2(1)/P2A(1)/T1CKI/SDO2(1)/T1OSI/OSC1/CLKIN/RA5  VDD            Vss                                   ICDDAT/ICSPDAT/DACOUT/VREF-/C1IN+/CPS0/AN0/RA0

                                                                                                 MCLR/VPP/T1G(1)/RA3  1  20                                                        19                                                 18             17                                    16                        15                    RA1/AN1/CPS1/C12IN0-/VREF+/SRI/ICSPCLK/ICDCLK  PIC16F/LF1825/1829
                                                                               MDCIN2/DT(1)/RX(1)/P1A/CCP1/RC5
                                                                   MDOUT/CK(1)/TX(1)/P1B/SRNQ/C2OUT/RC4               2                                                                                                                                                                                              14                    RA2/AN2/CPS2/T0CKI/INT/C1OUT/SRQ/CCP3/FLT0
                                                     MDMIN/P2A(1)/CCP2(1)/P1C(1)/C12IN3-/CPS7/AN7/RC3                                                                                                                                                                                                                                      RC0/AN4/CPS4/C2IN+/P1D(1)/SS2(1)
                                                                                                                      3 PIC16F/LF1829 13                                                                                                                                                                                                   RC1/AN5/CPS5/C12IN1-/P1C(1)/SDO2(1)
                                                                                           SS1/CCP4/CPS8/AN8/RC6                                                                                                                                                                                                                           RC2/AN6/CPS6/C12IN2-/P1D(1)/P2B(1)/MDCIN1
                                                                                                                      4                                                                                                                                                                                              12

                                                                                                                      5                                                                                                                                                                    10                        11

                                                                                                                         6                                                         7                                                  8              9

                                                                                                                         RC7/AN9/CPS9/SDO  RB7/TX(1)/CK(1)/SCL2/SCK2                                                                  RB6/SCL1/SCK1  RB5/AN11/CPS11/RX(1)/DT(1)/SDA2/SDI2  RB4/AN10/CPS10/SDA1/SDI1

DS41440A-page 9                  Note 1: Pin function is selectable via the APFCON0 or APFCON1 register.
PIC16F/LF1825/1829

TABLE 2: 20-PIN ALLOCATION TABLE (PIC16F/LF1829)

I/O
          20-Pin PDIP/SOIC/TSSOP

                20-Pin QFN
                         A/D

                                      Reference
                                                    Cap Sense
                                                                  Comparator
                                                                                SR Latch

                                                                                             Timers
                                                                                                              CCP

                                                                                                                              EUSART
                                                                                                                                             SSP

                                                                                                                                                           Interrupt
                                                                                                                                                                       Modulator

                                                                                                                                                                                    Pull-up
                                                                                                                                                                                                   Basic

RA0 19 16 AN0 VREF- CPS0 C1IN+       --    --                            --         --       --   IOC   --  Y     ICSPDAT/
                                                                                                                   ICDDAT
                  DACOUT                                                            --       --                   ICSPCLK/
                                                                                                                   ICDCLK
RA1 18 15 AN1 VREF+ CPS1 C12IN0- SRI       --                            --         --       --   IOC   --  Y
                                                                                                                       --
RA2 17 14 AN2     --      CPS2 C1OUT SRQ T0CKI                           CCP3       --       --   INT/  --  Y
                                                                                                                    MCLR
                                                                         FLT0       --    SS2(1)  IOC                 VPP
                                                                                                                    OSC2
RA3 4 1           --      --     --  --    T1G(1)                        --         --   SDO2(1)  IOC   --  Y(4)
                                                                                                                  CLKOUT
RA4 3 20 AN3      --      CPS3   --  --    T1G(1)                        P2B(1)     --    SDA1    IOC   --  Y       CLKR
                                                                                  RX(1)    SDI1                     OSC1
                                           T1OSO                                  DT(1)   SDA2                      CLKIN
                                                                                           SDI2                        --
RA5 2 19 --       --      --     --  --    T1CKI                         CCP2(1)    --    SCL1    IOC   --  Y
RB4 13 10 AN10                                                           P2A(1)   TX(1)   SCK1                         --
                                           T1OSI                                  CK(1)   SCL2
                                                                                          SCK2                         --
                  -- CPS10 --              --                            --         --    SS2(1)  IOC   --  Y
                                                                                    --   SDO2(1)                       --
RB5 12 9 AN11     --      CPS11  --  --    --                            --         --            IOC   --  Y
                                                                                             --                        --
RB6 11 8 --       --      --     --  --    --                            --         --            IOC   --  Y          --
                                                                                                                       --
RB7 10 7 --       --      --     --  --    --                                --   TX(1)           IOC   --  Y
                                                                                  CK(1)
RC0 16 13 AN4     --      CPS4 C2IN+ --    --                             P1D(1)  RX(1)           --    --  Y
                                                                          P1C(1)  DT(1)
RC1 15 12 AN5     --      CPS5 C12IN1- --  --                             P1D(1)                  --    --  Y
                                                                          P2B(1)    --
RC2 14 11 AN6     --      CPS6 C12IN2- --  --                             P1C(1)    --            -- MDCIN1 Y
                                                                         CCP2(1)    --
RC3 7 4 AN7       --      CPS7 C12IN3- --  --                             P2A(1)    --   --       -- MDMIN Y      --

RC4 6 3 --        --      -- C2OUT SRNQ --                                 P1B           --       -- MDOUT Y      --

RC5 5 2 --        --      --     --  --    --                            CCP1            --       -- MDCIN2 Y     --
                                                                          P1A
RC6 8 5 AN8       --      CPS8   --  --    --                            CCP4            SS1      --    --  Y     --

RC7 9 6 AN9       --      CPS9   --  --    --                              --            SDO      --    --  Y     --
                                                                           --
VDD 1 18 --       --      --     --  --    --                              --            --       --    --  --    VDD

Vss 20 17 --      --      --     --  --    --                                            --       --    --  --    VSS

Note 1: Pin function is selectable via the APFCON0 or APFCON1 register.

DS41440A-page 10                     Preliminary                                              2010 Microchip Technology Inc.
                                   PIC16F/LF1825/1829

Table of Contents

1.0 Device Overview ........................................................................................................................................................................... 13
2.0 .Enhanced Mid-range CPU ........................................................................................................................................................... 21
3.0 Memory Organization.................................................................................................................................................................... 23
4.0 Device Configuration..................................................................................................................................................................... 51
5.0 Oscillator Module (With Fail-Safe Clock Monitor) ......................................................................................................................... 57
6.0 Reference Clock Module............................................................................................................................................................... 75
7.0 Resets ........................................................................................................................................................................................... 79
8.0 Interrupts ....................................................................................................................................................................................... 87
9.0Power-Down Mode (Sleep) .......................................................................................................................................................... 103
10.0Watchdog Timer......................................................................................................................................................................... 105
11.0Data EEPROM and Flash Program Memory Control................................................................................................................. 109
12.0 I/O Ports .................................................................................................................................................................................... 123
13.0 Interrupt-On-Change ................................................................................................................................................................. 143
14.0 Fixed Voltage Reference (FVR) ................................................................................................................................................ 147
15.0 Temperature Indicator Module .................................................................................................................................................. 149
16.0 Analog-to-Digital Converter (ADC) Module ............................................................................................................................... 151
17.0 Digital-to-Analog Converter (DAC) Module ............................................................................................................................... 165
18.0 SR Latch ................................................................................................................................................................................... 171
19.0 Comparator Module .................................................................................................................................................................. 177
20.0 Timer0 Module .......................................................................................................................................................................... 187
21.0 Timer1 Module with Gate Control ............................................................................................................................................. 191
22.0 Timer2/4/6 Modules .................................................................................................................................................................. 203
23.0 Data Signal Modulator .............................................................................................................................................................. 207
24.0 Capture/Compare/PWM Modules ............................................................................................................................................. 217
25.0 Master Synchronous Serial Port (MSSP1 and MSSP2) Module ............................................................................................... 245
26.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ................................................................ 299
27.0 Capacitive Sensing (CPS) Module ............................................................................................................................................ 327
28.0 In-Circuit Serial ProgrammingTM (ICSPTM) ................................................................................................................................ 335
29.0 Instruction Set Summary ........................................................................................................................................................... 339
30.0 Electrical Specifications ............................................................................................................................................................ 353
31.0 DC and AC Characteristics Graphs and Charts ........................................................................................................................ 385
32.0 Development Support ............................................................................................................................................................... 387
33.0 Packaging Information .............................................................................................................................................................. 391
Appendix A: Data Sheet Revision History ......................................................................................................................................... 409
Appendix B: Migrating From Other PIC Devices ............................................................................................................................ 409
The Microchip Web Site .................................................................................................................................................................... 419
Customer Change Notification Service ............................................................................................................................................. 419
Customer Support ............................................................................................................................................................................. 419
Reader Response ............................................................................................................................................................................. 420
Product Identification System ........................................................................................................................................................... 421
Worldwide Sales and Service ........................................................................................................................................................... 422

2010 Microchip Technology Inc.  Preliminary  DS41440A-page 11
PIC16F/LF1825/1829

                                    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@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)
  When contacting a sales office, 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 to receive the most current information on all of our products.

DS41440A-page 12  Preliminary   2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

1.0 DEVICE OVERVIEW

The PIC16F/LF1825/1829 are described within this data
sheet. They are available in 14/20 pin packages.
Figure 1-1 shows a block diagram of the
PIC16F/LF1825/1829 devices. Tables 1-2 and 1-3 show
the pinout descriptions.
Reference Table 1-1 for peripherals available per
device.

TABLE 1-1: DEVICE PERIPHERAL
                     SUMMARY

Peripheral                       PIC16F/LF1825
                                             PIC16F/LF1829

ADC                                   

Capacitive Sensing (CPS) Module      

Data EEPROM                           

Digital-to-Analog Converter (DAC)     

Digital Signal Modulator (DSM)        

EUSART                                

Fixed Voltage Reference (FVR)         

SR Latch                              

Capture/Compare/PWM Modules

             ECCP1                    

             ECCP2                    

             CCP3                     

             CCP4                     

Comparators

                                 C1   

                                 C2   

Master Synchronous Serial Ports

             MSSP1                    

             MSSP2                    

Timers

             Timer0                  

             Timer1                  

             Timer2                  

             Timer4                  

             Timer6                  

2010 Microchip Technology Inc.         Preliminary         DS41440A-page 13
PIC16F/LF1825/1829

FIGURE 1-1:       PIC16F/LF1825/1829 BLOCK DIAGRAM

CLKR                                                 Program                          RAM           EEPROM
                                                  Flash Memory
                Clock                                                                                 PORTA
             Reference                                  CPU                                         PORTB(3)
                                                  (Figure 2-1)
OSC2/CLKOUT Timing                                                                                   PORTC
                        Generation

  OSC1/CLKIN INTRC
                         Oscillator

                  MCLR

                  ADC                Timer0  Timer1 Timer2      Timer4          Timer6 Comparators
                  10-Bit

                   SR                ECCP1 ECCP2  CCP3          CCP4            MSSP  EUSART
                  Latch

Note 1:           See applicable chapters for more information on peripherals.
          2:      See Table 1-1 for peripherals available on specific devices.
          3:      PIC16F/LF1829 only.

DS41440A-page 14                                  Preliminary                               2010 Microchip Technology Inc.
                                                         PIC16F/LF1825/1829

TABLE 1-2: PIC16F/LF1825 PINOUT DESCRIPTION

Name                             Function  Input Output                      Description
                                           Type Type

RA0/AN0/CPS0/C1IN+/VREF-/         RA0      TTL CMOS General purpose I/O.
DACOUT/TX(1)/CK(1)/               AN0
                                 CPS0      AN    -- A/D Channel 0 input.
ICSPDAT/ICDDAT
                                           AN    -- Capacitive sensing input 0.

                                 C1IN+     AN    -- Comparator C1 positive input.

                                 VREF-     AN    -- A/D and DAC Negative Voltage Reference input.

                                 DACOUT --       AN Digital-to-Analog Converter output.

                                 TX        -- CMOS USART asynchronous transmit.

                                 CK        ST CMOS USART synchronous clock.

                                 ICSPDAT ST CMOS ICSPTM Data I/O.

                                 ICDDAT ST CMOS In-Circuit Data I/O.

RA1/AN1/CPS1/C12IN0-/VREF+/       RA1      TTL CMOS General purpose I/O.
SRI/RX(1)/DT(1)/ICSPCLK/          AN1
                                 CPS1      AN    -- A/D Channel 1 input.
ICDCLK
                                           AN    -- Capacitive sensing input 1.

                                 C12IN0- AN      -- Comparator C1 or C2 negative input.

                                 VREF+     AN    -- A/D and DAC Positive Voltage Reference input.

                                 SRI       ST    -- SR Latch input.

                                 RX        ST    -- USART asynchronous input.

                                 DT        ST CMOS USART synchronous data.

                                 ICSPCLK ST      -- Serial Programming Clock.

                                 ICDCLK ST       -- In-Circuit Debug Clock.

RA2/AN2/CPS2/T0CKI/INT/          RA2       ST CMOS General purpose I/O.
C1OUT/SRQ/CCP3/FLT0
                                 AN2       AN    -- A/D Channel 2 input.

                                 CPS2      AN    -- Capacitive sensing input 2.

                                 T0CKI     ST    -- Timer0 clock input.

                                 INT       ST    -- External interrupt.

                                 C1OUT -- CMOS Comparator C1 output.

                                 SRQ       -- CMOS SR Latch non-inverting output.

                                 CCP3      ST CMOS Capture/Compare/PWM 3.

                                 FLT0      ST    -- ECCP Auto-Shutdown Fault input.

RA3/SS1(1)/T1G(1)/VPP/MCLR       RA3       TTL   -- General purpose input.

                                 SS1       ST    -- Slave Select input.

                                 T1G       ST    -- Timer1 Gate input.

                                 VPP       HV    -- Programming voltage.

                                 MCLR      ST    -- Master Clear with internal pull-up.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output   OD = Open Drain

TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

HV = High Voltage                XTAL = Crystal                                          levels

Note 1: Pin functions can be moved using the APFCON0 or APFCON1 register.

2: Default function location.

2010 Microchip Technology Inc.                 Preliminary                                      DS41440A-page 15
PIC16F/LF1825/1829

TABLE 1-2: PIC16F/LF1825 PINOUT DESCRIPTION (CONTINUED)

Name                           Function  Input Output                         Description
                                         Type Type

RA4/AN3/CPS3/OSC2/              RA4      TTL CMOS General purpose I/O.
                                AN3
CLKOUT/T1OSO/CLKR/             CPS3      AN    -- A/D Channel 3 input.
SDO(1)/P2B(1)/T1G(1,2)
                                         AN    -- Capacitive sensing input 3.

                               OSC2      -- CMOS Comparator C2 output.

                               CLKOUT -- CMOS FOSC/4 output.

                               T1OSO XTAL XTAL Timer1 oscillator connection.

                               CLKR      -- CMOS Clock Reference output.

                               SDO       -- CMOS SPI data output.

                               P2B       -- CMOS PWM output.

                               T1G       ST    -- Timer1 Gate input.

RA5/CLKIN/OSC1/T1OSI/          RA5       TTL CMOS General purpose I/O.
T1CKI/P2A(1)/CCP2(1)
                               CLKIN CMOS -- External clock input (EC mode).

                               OSC1 XTAL -- Crystal/Resonator (LP, XT, HS modes).

                               T1OSI XTAL XTAL Timer1 oscillator connection.

                               T1CKI     ST    -- Timer1 clock input.

                               P2A       -- CMOS PWM output.

                               CCP2      ST CMOS Capture/Compare/PWM 2.

RC0/AN4/CPS4/C2IN+/SCL/        RC0       TTL CMOS General purpose I/O.
SCK/P1D(1)                     AN4
                                         AN    -- A/D Channel 4 input.

                               CPS4      AN    -- Capacitive sensing input 4.

                               C2IN+     AN    -- Comparator C2 positive input.

                               SCL       I2C   OD I2CTM clock.

                               SCK       ST CMOS SPI clock.

                               P1D       -- CMOS PWM output.

RC1/AN5/CPS5/C12IN1-/SDA/      RC1       TTL CMOS General purpose I/O.
SDI/P1C(1)/CCP4                AN5
                                         AN    -- A/D Channel 5 input.

                               CPS5      AN    -- Capacitive sensing input 5.

                               C12IN1- AN      -- Comparator C1 or C2 negative input.
                                               OD I2C data input/output.
                               SDA       I2C

                               SDI CMOS -- SPI data input.

                               P1C       -- CMOS PWM output.

                               CCP4      AN    -- Capacitive sensing input 4.

RC2/AN6/CPS6/C12IN2-/          RC2       TTL CMOS General purpose I/O.
P1D(1,2)/P2B(1,2)/SDO(1,2)/     AN6
                               CPS6      AN    -- A/D Channel 6 input.
MDCIN1
                                         AN    -- Capacitive sensing input 6.

                               C12IN2- AN      -- Comparator C1 or C2 negative input.

                               P1D       -- CMOS PWM output.

                               P2B       -- CMOS PWM output.

                               SDO       -- CMOS SPI data output.

                               MDCIN1 ST       -- Modulator Carrier Input 1.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output    OD = Open Drain

TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

HV = High Voltage              XTAL = Crystal                                    levels

Note 1: Pin functions can be moved using the APFCON0 or APFCON1 register.

2: Default function location.

DS41440A-page 16                              Preliminary                         2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

TABLE 1-2: PIC16F/LF1825 PINOUT DESCRIPTION (CONTINUED)

     Name                           Function  Input Output                         Description
                                              Type Type

RC3/AN7/CPS7/C12IN3-/               RC3       TTL CMOS General purpose I/O.
P2A(1,2)/CCP2(1,2)/P1C(1,2)/         AN7
SS1(1,2)/MDMIN                      CPS7      AN    -- A/D Channel 7 input.

                                              AN    -- Capacitive sensing input 7.

                                    C12IN3- AN      -- Comparator C1 or C2 negative input.

                                    P2A       -- CMOS PWM output.

                                    CCP2      AN    -- Capacitive sensing input 2.

                                    P1C       -- CMOS PWM output.

                                    SS1       ST    -- Slave Select input.

                                    MDMIN     ST    -- Modulator source input.
                                      RC4
RC4/C2OUT/SRNQ/P1B/TX(1,2)/                   TTL CMOS General purpose I/O.
CK(1,2)/MDOUT                       C2OUT
                                              -- CMOS Comparator C2 output.

                                    SRNQ      -- CMOS SR Latch inverting output.

                                    P1B       -- CMOS PWM output.

                                    TX        -- CMOS USART asynchronous transmit.

                                    CK        ST CMOS USART synchronous clock.

RC5/P1A/CCP1/DT(1,2)/RX(1,2)/       MDOUT      -- CMOS Modulator output.
MDCIN2                                RC5     TTL CMOS General purpose I/O.
                                      P1A      -- CMOS PWM output.

                                    CCP1      ST CMOS Capture/Compare/PWM 1.

                                    RX        ST    -- USART asynchronous input.

                                    DT        ST CMOS USART synchronous data.

                                    MDCIN2 ST       -- Modulator Carrier Input 2.

VDD                                 VDD Power -- Positive supply.

VSS                                 VSS Power -- Ground reference.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output         OD = Open Drain

     TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

     HV = High Voltage              XTAL = Crystal                                  levels

Note 1: Pin functions can be moved using the APFCON0 or APFCON1 register.

     2: Default function location.

2010 Microchip Technology Inc.                   Preliminary                                   DS41440A-page 17
PIC16F/LF1825/1829

TABLE 1-3: PIC16F/LF1829 PINOUT DESCRIPTION

Name                           Function  Input Output                       Description
                                         Type Type

RA0/AN0/CPS0/C1IN+/VREF-/      RA0       TTL CMOS General purpose I/O.
DACOUT/ICSPDAT/ICDDAT
                               AN0       AN    -- A/D Channel 0 input.

                               CPS0      AN    -- Capacitive sensing input 0.

                               C1IN+     AN    -- Comparator C1 positive input.

                               VREF-     AN    -- A/D and DAC Negative Voltage Reference input.

                               DACOUT --       AN Digital-to-Analog Converter output.

                               ICSPDAT ST CMOS ICSPTM Data I/O.

                               ICDDAT ST CMOS In-Circuit Data I/O.

RA1/AN1/CPS1/C12IN0-/VREF+/ RA1          TTL CMOS General purpose I/O.

SRI/ICSPCLK/ICDCLK             AN1       AN    -- A/D Channel 1 input.

                               CPS1      AN    -- Capacitive sensing input 1.

                               C12IN0- AN      -- Comparator C1 or C2 negative input.

                               VREF+     AN    -- A/D and DAC Positive Voltage Reference input.

                               SRI       ST    -- SR Latch input.

                               ICSPCLK ST      -- Serial Programming Clock.

                               ICDCLK ST       -- In-Circuit Debug Clock.

RA2/AN2/CPS2/T0CKI/INT/        RA2       ST CMOS General purpose I/O.
C1OUT/SRQ/CCP3/FLT0
                               AN2       AN    -- A/D Channel 2 input.

                               CPS2      AN    -- Capacitive sensing input 2.

                               T0CKI     ST    -- Timer0 clock input.

                               INT       ST    -- External interrupt.

                               C1OUT -- CMOS Comparator C1 output.

                               SRQ       -- CMOS SR Latch non-inverting output.

                               CCP3      ST CMOS Capture/Compare/PWM 3.

                               FLT0      ST    -- ECCP Auto-Shutdown Fault input.

RA3/T1G(1)/VPP/MCLR            RA3       TTL   -- General purpose input.

                               T1G       ST    -- Timer1 Gate input.

                               VPP       HV    -- Programming voltage.

                               MCLR      ST    -- Master Clear with internal pull-up.

RA4/AN3/CPS3/OSC2/              RA4      TTL CMOS General purpose I/O.
CLKOUT/T1OSO/CLKR/SS2(1)/       AN3
P2B(1)/T1G(1,2)                CPS3      AN    -- A/D Channel 3 input.

                                         AN    -- Capacitive sensing input 3.

                               OSC2      -- CMOS Comparator C2 output.

                               CLKOUT -- CMOS FOSC/4 output.

                               T1OSO XTAL XTAL Timer1 oscillator connection.

                               CLKR      -- CMOS Clock Reference output.

                               SS2       ST    -- Slave Select input 2.

                               P2B       -- CMOS PWM output.

                               T1G       ST    -- Timer1 Gate input.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output  OD = Open Drain

TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

HV = High Voltage              XTAL = Crystal                                          levels

Note 1: Pin functions can be moved using the APFCON0 or APFCON1 register.

2: Default function location.

DS41440A-page 18                              Preliminary                         2010 Microchip Technology Inc.
                                                         PIC16F/LF1825/1829

TABLE 1-3: PIC16F/LF1829 PINOUT DESCRIPTION (CONTINUED)

Name                             Function  Input Output                       Description
                                           Type Type

RA5/CLKIN/OSC1/T1OSI/             RA5       TTL CMOS General purpose I/O.
SD02(1)/T1CKI/P2A(1)/CCP2(1)     CLKIN     CMOS -- External clock input (EC mode).

                                 OSC1 XTAL -- Crystal/Resonator (LP, XT, HS modes).

                                 T1OSI XTAL XTAL Timer1 oscillator connection.

                                 SD02      -- CMOS SPI data output 2.

                                 T1CKI     ST    -- Timer1 clock input.

                                 P2A       -- CMOS PWM output.

                                 CCP2      ST CMOS Capture/Compare/PWM 2.

RB4/AN10/CPS10/SDA1/SDI1         RB4       TTL CMOS General purpose I/O.

                                 AN10      AN    -- A/D Channel 10 input.

                                 CPS10 AN        -- Capacitive sensing input 10.

                                 SDA1      I2C   OD I2CTM data input/output.

                                 SDI1      CMOS -- SPI data input.
                                 RB5
RB5/AN11/CPS11/RX(1,2)/          AN11      TTL CMOS General purpose I/O.
DT(1,2)/SDA2/SDI2
                                           AN    -- A/D Channel 11 input.

                                 CPS11 AN        -- Capacitive sensing input 11.

                                 RX        ST    -- USART asynchronous input.

                                  DT       ST CMOS USART synchronous data.
                                 SDA2
                                           I2C   OD I2C data input/output 2.

                                 SDI2 CMOS -- SPI data input 2.

RB6/SCL1/SCK1                    RB6       TTL CMOS General purpose I/O.
                                 SCL1
                                           I2C   OD I2CTM clock 1.

RB7/TX(1,2)/CK(1,2)/SCL2/SCK2    SCK1      ST CMOS SPI clock 1.
                                  RB7      TTL CMOS General purpose I/O.

                                 TX        -- CMOS USART asynchronous transmit.

                                  CK       ST CMOS USART synchronous clock.
                                 SCL2
                                           I2C   OD I2CTM clock 2.

                                 SCK2      ST CMOS SPI clock 2.
                                 RC0
RC0/AN4/CPS4/C2IN+/P1D(1)/        AN4      TTL CMOS General purpose I/O.
SS2(1,2)
                                           AN    -- A/D Channel 4 input.

                                 CPS4      AN    -- Capacitive sensing input 4.

                                 C2IN+     AN    -- Comparator C2 positive input.

                                 P1D       -- CMOS PWM output.

                                 SS2       ST    -- Slave Select input 2.
                                 RC1
RC1/AN5/CPS5/C12IN1-/P1C(1)/     AN5       TTL CMOS General purpose I/O.
SD02(1,2)
                                           AN    -- A/D Channel 5 input.

                                 CPS5      AN    -- Capacitive sensing input 5.

                                 C12IN1- AN      -- Comparator C1 or C2 negative input.

                                 P1C       -- CMOS PWM output.

                                 SDO2      -- CMOS SPI data output 2.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output    OD = Open Drain

TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

HV = High Voltage                XTAL = Crystal                                     levels

Note 1: Pin functions can be moved using the APFCON0 or APFCON1 register.

2: Default function location.

2010 Microchip Technology Inc.                 Preliminary                                 DS41440A-page 19
PIC16F/LF1825/1829

TABLE 1-3: PIC16F/LF1829 PINOUT DESCRIPTION (CONTINUED)

     Name                           Function  Input Output                         Description
                                              Type Type

RC2/AN6/CPS6/C12IN2-/               RC2       TTL CMOS General purpose I/O.
P1D(1,2)/P2B(1,2)/MDCIN1            AN6
                                              AN    -- A/D Channel 6 input.

                                    CPS6      AN    -- Capacitive sensing input 6.

                                    C12IN2- AN      -- Comparator C1 or C2 negative input.

                                    P1D       -- CMOS PWM output.

                                    P2B       -- CMOS PWM output.

                                    MDCIN1 ST       -- Modulator Carrier Input 1.

RC3/AN7/CPS7/C12IN3-/               RC3       TTL CMOS General purpose I/O.
P2A(1,2)/CCP2(1,2)/P1C(1,2)/         AN7
                                    CPS7      AN    -- A/D Channel 7 input.
MDMIN
                                              AN    -- Capacitive sensing input 7.

                                    C12IN3- AN      -- Comparator C1 or C2 negative input.

                                    P2A       -- CMOS PWM output.

                                    CCP2      AN    -- Capacitive sensing input 2.

                                    P1C       -- CMOS PWM output.

                                    MDMIN     ST    -- Modulator source input.
                                      RC4
RC4/C2OUT/SRNQ/P1B/TX(1)/                     TTL CMOS General purpose I/O.
CK(1)/MDOUT                         C2OUT
                                              -- CMOS Comparator C2 output.

                                    SRNQ      -- CMOS SR Latch inverting output.

                                    P1B       -- CMOS PWM output.

                                    TX        -- CMOS USART asynchronous transmit.

                                    CK        ST CMOS USART synchronous clock.

RC5/P1A/CCP1/DT(1)/RX(1)/           MDOUT      -- CMOS Modulator output.
MDCIN2                                RC5     TTL CMOS General purpose I/O.
                                      P1A      -- CMOS PWM output.

                                    CCP1      ST CMOS Capture/Compare/PWM 1.

                                    RX        ST    -- USART asynchronous input.

                                    DT        ST CMOS USART synchronous data.

                                    MDCIN2 ST       -- Modulator Carrier Input 2.

RC6/AN8/CPS8/CCP4/SS1               RC6       TTL CMOS General purpose I/O.

                                    AN8       AN    -- A/D Channel 8 input.

                                    CPS8      AN    -- Capacitive sensing input 8.

                                    CCP4      AN    -- Capacitive sensing input 4.

                                    SS1       ST    -- Slave Select input.

RC7/AN9/CPS9/SDO                    RC7       TTL CMOS General purpose I/O.

                                    AN9       AN    -- A/D Channel 9 input.

                                    CPS9      AN    -- Capacitive sensing input 9.

                                    SDO       -- CMOS SPI data output.

VDD                                 VDD Power -- Positive supply.

VSS                                 VSS Power -- Ground reference.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output         OD = Open Drain

     TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

     HV = High Voltage              XTAL = Crystal                                  levels

Note 1: Pin functions can be moved using the APFCON0 or APFCON1 register.

     2: Default function location.

DS41440A-page 20                                  Preliminary                        2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

2.0 ENHANCED MID-RANGE CPU

This family of devices contain an enhanced mid-range
8-bit CPU core. The CPU has 49 instructions. Interrupt
capability includes automatic context saving. The
hardware stack is 16 levels deep and has Overflow and
Underflow Reset capability. Direct, indirect, and relative
addressing modes are available. Two File Select
Registers (FSRs) provide the ability to read program
and data memory.

Automatic Interrupt Context Saving
16-level Stack with Overflow and Underflow
File Select Registers
Instruction Set

2.1 Automatic Interrupt Context
         Saving

During interrupts, certain registers are automatically
saved in shadow registers and restored when returning
from the interrupt. This saves stack space and user
code. See Section 8.5 "Automatic Context Saving",
for more information.

2.2 16-level Stack with Overflow and
         Underflow

These devices have an external stack memory 15 bits
wide and 16 words deep. A Stack Overflow or Under-
flow will set the appropriate bit (STKOVF or STKUNF)
in the PCON register, and if enabled will cause a soft-
ware Reset. See section Section 3.4 "Stack" for more
details.

2.3 File Select Registers

There are two 16-bit File Select Registers (FSR). FSRs
can access all file registers and program memory,
which allows one data pointer for all memory. When an
FSR points to program memory, there is 1 additional
instruction cycle in instructions using INDF to allow the
data to be fetched. General purpose memory can now
also be addressed linearly, providing the ability to
access contiguous data larger than 80 bytes. There are
also new instructions to support the FSRs. See
Section 3.5 "Indirect Addressing" for more details.

2.4 Instruction Set

There are 49 instructions for the enhanced mid-range
CPU to support the features of the CPU. See
Section 29.0 "Instruction Set Summary" for more
details.

2010 Microchip Technology Inc.  Preliminary                DS41440A-page 21
PIC16F/LF1825/1829

FIGURE 2-1:       CORE BLOCK DIAGRAM

15                            Configuration

                                                             15                             Data Bus                  8
                                                                   Program Counter

             MUX                Flash                        186-LLeevveel lSStatacckk
                              Program                            (135-bit)
                              Memory                                                                    RAM

                  Program     14                             Program Memory                          12 RAM Addr
                     Bus                                        Read (PMR)                  Addr MUX

                              IInnssttrruuccttiioonn Rreegg  Direct Addr 7                              Indirect
                                                             8                                           Addr

                                                                                        5               12        12

                  15                                                         BFSSRR Rreegg
                         15
                                                                                                            FSR0reRgeg

                                                                                        FFSSRR1 rReegg

                                                                                                        SSTTAATTUUSSRreegg

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

                                                               Brown-out
                                                                  Reset

                   Internal
                  Oscillator

                    Block

                                                             VDD VSS

DS41440A-page 22                                             Preliminary                                     2010 Microchip Technology Inc.
                                                       PIC16F/LF1825/1829

3.0 MEMORY ORGANIZATION                                The following features are associated with access and
                                                       control of program memory and data memory:
There are three types of memory in
PIC16F/LF1825/1829 devices: Data Memory, Program       PCL and PCLATH
Memory and Data EEPROM Memory(1).                      Stack
                                                       Indirect Addressing
Program Memory
Data Memory                                          3.1 Program Memory Organization

   - Core Registers                                    The enhanced mid-range core has a 15-bit program
   - Special Function Registers                        counter capable of addressing a 32K x 14 program
   - General Purpose RAM                               memory space. Table 3-1 shows the memory sizes
   - Common RAM                                        implemented for the PIC16F/LF1825/1829 family.
   - Device Memory Maps                                Accessing a location above these boundaries will cause
   - Special Function Registers Summary                a wrap-around within the implemented memory space.
Data EEPROM memory(1)                                The Reset vector is at 0000h and the interrupt vector is
                                                       at 0004h.
    Note 1: The Data EEPROM Memory and the
                method to access Flash memory through
                the EECON registers is described in
                Section 11.0 "Data EEPROM and Flash
                Program Memory Control".

TABLE 3-1: DEVICE SIZES AND ADDRESSES

Device                           Program Memory Space (Words)  Last Program Memory Address
                                                                                7FFFh
PIC16F/LF1825/1829               8,192

2010 Microchip Technology Inc.  Preliminary                   DS41440A-page 23
PIC16F/LF1825/1829

FIGURE 3-1:       PROGRAM MEMORY MAP         3.1.1               READING PROGRAM MEMORY AS
                  AND STACK FOR                                  DATA
                  PIC16F/LF1825/1829
                                             There are two methods of accessing constants in pro-
                  PC<14:0>                   gram memory. The first method is to use tables of
                                             RETLW instructions. The second method is to set an
                                             FSR to point to the program memory.

CALL, CALLW                 15

RETURN, RETLW                                3.1.1.1 RETLW Instruction
Interrupt, RETFIE
                                             The RETLW instruction can be used to provide access
                  Stack Level 0              to tables of constants. The recommended way to create
                                             such a table is shown in Example 3-1.
                  Stack Level 1

                  Stack Level 15      0000h  EXAMPLE 3-1:                 RETLW INSTRUCTION
                   Reset Vector
                                              constants                           ;Add Index in W to
                    Interrupt Vector  0004h          BRW                          ;program counter to
                          Page 0      0005h                                       ;select data
                          Page 1                     RETLW DATA0                  ;Index0 data
                          Page 2      07FFh          RETLW DATA1                  ;Index1 data
                          Page 3      0800h          RETLW DATA2
                                                     RETLW DATA3
                  Rollover to Page 0  0FFFh
On-chip                               1000h  my_function
Program
Memory                                17FFh               ;... LOTS OF CODE...
                                      1800h
                                                          MOVLW   DATA_INDEX
                                      1FFFh
                                      2000h               call constants

                                                          ;... THE CONSTANT IS IN W

                                             The BRW instruction makes this type of table very sim-
                                             ple to implement. If your code must remain portable
                                             with previous generations of microcontrollers, then the
                                             BRW instruction is not available so the older table read
                                             method must be used.

                  Rollover to Page 3  7FFFh

DS41440A-page 24                             Preliminary                   2010 Microchip Technology Inc.
3.1.1.2 Indirect Read with FSR                             PIC16F/LF1825/1829

The program memory can be accessed as data by set-         3.2.1 CORE REGISTERS
ting bit 7 of the FSRxH register and reading the match-    The core registers contain the registers that directly
ing INDFx register. The MOVIW instruction will place the   affect the basic operation of the PIC16F/LF1825/1829.
lower 8 bits of the addressed word in the W register.      These registers are listed below:
Writes to the program memory cannot be performed via       INDF0
the INDF registers. Instructions that access the pro-       INDF1
gram memory via the FSR require one extra instruction       PCL
cycle to complete. Example 3-2 demonstrates access-         STATUS
ing the program memory via an FSR.                         FSR0 Low
                                                            FSR0 High
The HIGH directive will set bit<7> if a label points to a   FSR1 Low
location in program memory.                                 FSR1 High
                                                            BSR
EXAMPLE 3-2:  ACCESSING PROGRAM                            WREG
              MEMORY VIA FSR                               PCLATH
                                                            INTCON
constants
                                                              Note: The core registers are the first 12
RETLW DATA0           ;Index0 data                                        addresses of every data memory bank.

RETLW DATA1           ;Index1 data

RETLW DATA2

RETLW DATA3

my_function

;... LOTS OF CODE...

MOVLW LOW constants

MOVWF FSR1L

MOVLW HIGH constants

MOVWF FSR1H

MOVIW 0[FSR1]

;THE PROGRAM MEMORY IS IN W

3.2 Data Memory Organization

The data memory is partitioned in 32 memory banks
with 128 bytes in a bank. Each bank consists of
(Figure 3-2):

12 core registers
20 Special Function Registers (SFR)
Up to 80 bytes of General Purpose RAM (GPR)
16 bytes of common RAM

The active bank is selected by writing the bank number
into the Bank Select Register (BSR). Unimplemented
memory will read as `0'. All data memory can be
accessed either directly (via instructions that use the
file registers) or indirectly via the two File Select
Registers (FSR). See Section 3.5 "Indirect
Addressing" for more information.

2010 Microchip Technology Inc.     Preliminary            DS41440A-page 25
PIC16F/LF1825/1829

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

the arithmetic status of the ALU                           It is recommended, therefore, that only BCF, BSF,
the Reset status                                           SWAPF and MOVWF instructions are used to alter the
                                                             STATUS register, because these instructions do not
The STATUS register can be the destination for any           affect any Status bits. For other instructions not
instruction, like any other register. If the STATUS          affecting any Status bits (Refer to Section 29.0
register is the destination for an instruction that affects  "Instruction Set Summary").
the Z, DC or C bits, then the write to these three bits is
disabled. These bits are set or cleared according to the         Note 1: The C and DC bits operate as Borrow
device logic. Furthermore, the TO and PD bits are not                        and Digit Borrow out bits, respectively, in
writable. Therefore, the result of an instruction with the                   subtraction.
STATUS register as destination may be different than
intended.

REGISTER 3-1: STATUS: STATUS REGISTER

       U-0            U-0  U-0  R-1/q                        R-1/q  R/W-0/u        R/W-0/u  R/W-0/u
        --                                                    PD        Z           DC(1)     C(1)
bit 7                 --   --                    TO
                                                                                                    bit 0

Legend:                    W = Writable bit                  U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown                -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged       `0' = Bit is cleared              q = Value depends on condition
`1' = Bit is set

bit 7-5     Unimplemented: Read as `0'
bit 4
bit 3       TO: Time-out bit
bit 2
bit 1       1 = After power-up, CLRWDT instruction or SLEEP instruction
bit 0       0 = A WDT time-out occurred

            PD: Power-down bit

            1 = After power-up or by the CLRWDT instruction
            0 = By execution of the SLEEP instruction

            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
            DC: Digit Carry/Digit Borrow bit(1)

            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
            C: Carry/Borrow bit(1)

            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.

DS41440A-page 26                                 Preliminary                        2010 Microchip Technology Inc.
                                                         PIC16F/LF1825/1829

3.2.2 SPECIAL FUNCTION REGISTER                          3.2.5 DEVICE MEMORY MAPS

The Special Function Registers are registers used by     The memory maps for the device family are as shown
the application to control the desired operation of      in Table 3-2.
peripheral functions in the device. The registers asso-
ciated with the operation of the peripherals are         TABLE 3-2: MEMORY MAP TABLES
described in the appropriate peripheral chapter of this
data sheet.                                              Device              Banks Table No.

3.2.3 GENERAL PURPOSE RAM                                PIC16F/LF1825/1829   0-7   Table 3-3
                                                                             8-15   Table 3-4
There are up to 80 bytes of GPR in each data memory                          16-23  Table 3-5
bank.                                                                        24-31  Table 3-6
                                                                               31   Table 3-7
3.2.3.1 Linear Access to GPR

The general purpose RAM can be accessed in a
non-banked method via the FSRs. This can simplify
access to large memory structures. See Section 3.5.2
"Linear Data Memory" for more information.

3.2.4 COMMON RAM

There are 16 bytes of common RAM accessible from all
banks.

FIGURE 3-2:        BANKED MEMORY
                   PARTITIONING

7-bit Bank Offset  Memory Region

00h

                Core Registers
                    (12 bytes)

0Bh
0Ch

        Special Function Registers
             (20 bytes maximum)

1Fh

20h

                   General Purpose RAM
                    (80 bytes maximum)

6Fh
70h

                Common RAM
                   (16 bytes)

7Fh

2010 Microchip Technology Inc.         Preliminary                          DS41440A-page 27
DS41440A-page 28                 TABLE 3-3: PIC16F/LF1825/1829 MEMORY MAP, BANKS 0-7                                                                                                                        PIC16F/LF1825/1829

                                             BANK 0          BANK 1           BANK 2                       BANK 3               BANK 4              BANK 5            BANK 6                    BANK 7
                                                                                                                                   INDF0              INDF0                                        INDF0
                                 000h          INDF0   080h   INDF0     100h   INDF0                 180h     INDF0     200h       INDF1     280h     INDF1     300h   INDF0           380h        INDF1
                                 001h          INDF1   081h   INDF1     101h   INDF1                 181h     INDF1     201h        PCL      281h       PCL     301h   INDF1           381h         PCL
                                 002h           PCL    082h     PCL     102h     PCL                 182h      PCL      202h     STATUS      282h    STATUS     302h     PCL           382h      STATUS
                                 003h        STATUS    083h  STATUS     103h  STATUS                 183h   STATUS      203h      FSR0L      283h     FSR0L     303h  STATUS           383h       FSR0L
                                 004h          FSR0L   084h   FSR0L     104h   FSR0L                 184h    FSR0L      204h      FSR0H      284h     FSR0H     304h   FSR0L           384h       FSR0H
                                 005h         FSR0H    085h   FSR0H     105h   FSR0H                 185h    FSR0H      205h      FSR1L      285h     FSR1L     305h  FSR0H            385h       FSR1L
                                 006h          FSR1L   086h   FSR1L     106h   FSR1L                 186h    FSR1L      206h      FSR1H      286h     FSR1H     306h   FSR1L           386h       FSR1H
                                 007h         FSR1H    087h   FSR1H     107h   FSR1H                 187h    FSR1H      207h        BSR      287h       BSR     307h  FSR1H            387h         BSR
                                 008h           BSR    088h    BSR      108h    BSR                  188h      BSR      208h      WREG       288h     WREG      308h    BSR            388h       WREG
                                 009h          WREG    089h   WREG      109h   WREG                  189h    WREG       209h     PCLATH      289h    PCLATH     309h   WREG            389h      PCLATH
                                 00Ah        PCLATH    08Ah  PCLATH     10Ah  PCLATH                 18Ah   PCLATH      20Ah     INTCON      28Ah    INTCON     30Ah  PCLATH           38Ah      INTCON
                                 00Bh        INTCON    08Bh  INTCON     10Bh  INTCON                 18Bh   INTCON      20Bh       WPUA      28Bh        --     30Bh  INTCON           38Bh       INLVLA
                                 00Ch         PORTA    08Ch   TRISA     10Ch    LATA                 18Ch   ANSELA      20Ch     WPUB(1)     28Ch        --     30Ch                   38Ch
                                             PORTB(1)        TRISB(1)         LATB(1)                      ANSELB(1)    20Dh      WPUC       28Dh        --               --                    INLVLB(1)
                                 00Dh         PORTC    08Dh   TRISC     10Dh    LATC                 18Dh   ANSELC      20Eh          --     28Eh        --                                       INLVLC
                                 00Eh                  08Eh             10Eh                         18Eh               20Fh          --     28Fh        --     30Dh       --          38Dh
                                 00Fh             --   08Fh      --     10Fh      --                 18Fh       --      210h                 290h    CCPR1L     30Eh       --          38Eh           --
                                 010h             --   090h      --     110h      --                 190h       --      211h    SSP1BUF      291h               30Fh       --          38Fh           --
                                                                                                                        212h    SSP1ADD      292h    CCPR1H     310h       --          390h       IOCAP
                                 011h        PIR1      091h  PIE1       111h CM1CON0 191h                  EEADRL       213h    SSP1MSK      293h  CCP1CON      311h   CCPR3L          391h       IOCAN
                                                                                                                        214h   SSP1STAT      294h  PWM1CON      312h   CCPR3H          392h       IOCAF
                                 012h        PIR2      092h  PIE2       112h CM1CON1 192h                  EEADRH       215h    SSP1CON      295h    CCP1AS     313h  CCP3CON          393h      IOCBP(1)
                                                                                                                        216h   SSP1CON2      296h  PSTR1CON     314h       --          394h      IOCBN(1)
                                 013h        --        093h  --         113h CM2CON0 193h                  EEDATL       217h   SSP1CON3      297h               315h       --          395h      IOCBF(1)
                                                                                                                        218h                 298h        --     316h       --          396h           --
Preliminary                      014h        --        094h  --         114h CM2CON1 194h                  EEDATH                     --             CCPR2L     317h       --          397h           --
                                                                                                                        219h   SSP2BUF(1)    299h               318h   CCPR4L          398h           --
                                 015h        TMR0      095h  OPTION     115h  CMOUT                  195h  EECON1             SSP2ADD(1)             CCPR2H                                     CLKRCON
                                                                                                                        21Ah  SSP2MSK(1)     29Ah  CCP2CON                                            --
                                 016h        TMR1L     096h  PCON       116h  BORCON                 196h  EECON2             SSP2STAT(1)                                                        MDCON
                                                                                                                        21Bh  SSP2CON(1)     29Bh  PWM2CON                                        MDSRC
                                 017h        TMR1H     097h WDTCON 117h FVRCON 197h                        --                 SSP2CON2(1)            CCP2AS                                      MDCARL
                                                                                                                        21Ch  SSP2CON3(1)    29Ch                                               MDCARH
                                 018h        T1CON     098h OSCTUNE 118h DACCON0 198h                      --                                      PSTR2CON
                                                                                                                        21Dh      General    29Dh  CCPTMRS                                   Unimplemented
                                 019h        T1GCON    099h  OSCCON     119h DACCON1 199h                  RCREG                 Purpose                        319h  CCPR4H           399h    Read as `0'
                                                                                                                        21Eh     Register    29Eh        --
                                 01Ah        TMR2      09Ah OSCSTAT 11Ah SRCON0 19Ah                       TXREG                80 Bytes(2)                     31Ah CCP4CON 39Ah                Accesses
                                                                                                                        21Fh                 29Fh    General                                    70h 7Fh
                                 01Bh          PR2     09Bh  ADRESL     11Bh  SRCON1                 19Bh  SPBRGL       220h                 2A0h    Purpose    31Bh  --               39Bh
                                 01Ch        T2CON     09Ch  ADRESH     11Ch      --                 19Ch  SPBRGH                                    Register
                                                                                                                                                   80 Bytes(2)  31Ch  --               39Ch

                                 01Dh        --        09Dh ADCON0 11Dh APFCON0 19Dh                       RCSTA                                    Accesses    31Dh  --               39Dh
                                                                                                                                                    70h 7Fh
                                 01Eh CPSCON0 09Eh ADCON1 11Eh APFCON1 19Eh                                TXSTA                                                31Eh  --               39Eh

                                 01Fh CPSCON1 09Fh           --         11Fh  --                     19Fh BAUDCON                                               31Fh           --      39Fh
                                                                                                                                                                320h                   3A0h
                                 020h                  0A0h             120h                         1A0h                                                             General Purpose
                                                                                                                                                                32Fh       Register
2010 Microchip Technology Inc.                               General          General                      General
                                                              Purpose          Purpose                      Purpose                                                       16 Bytes(2)
                                                              Register         Register                     Register
                                 06Fh        General   0EFh  80 Bytes   16Fh  80 Bytes               1EFh  80 Bytes(2)  26Fh                 2EFh               330h  Unimplemented    3EFh
                                 070h        Purpose   0F0h             170h                         1F0h               270h                 2F0h                       Read as `0')   3F0h
                                             Register        Accesses         Accesses                     Accesses                                             36Fh
                                 07Fh        96 Bytes  0FFh  70h 7Fh  17Fh  70h 7Fh              1FFh  70h 7Fh    27Fh                 2FFh               370h      Accesses
                                                                                                                                                                         70h 7Fh
                                                                                                                              Accesses
                                                                                                                              70h 7Fh

                                                                                                                                                                37Fh                   3FFh

                                 Legend:         = Unimplemented data memory locations, read as `0'
                                    Note 1:  Available only on PIC16F/LF1829.
2010 Microchip Technology Inc.  TABLE 3-4: PIC16F/LF1825/1829 MEMORY MAP, BANKS 8-15

                                          BANK 8           BANK 9           BANK 10                 BANK 11          BANK 12              BANK 13              BANK 14              BANK 15

Preliminary                      400h      INDF0     480h   INDF0     500h   INDF0            580h   INDF0     600h     INDF0       680h     INDF0       700h     INDF0       780h     INDF0       PIC16F/LF1825/1829
                                 401h
                                 402h      INDF1     481h   INDF1     501h   INDF1            581h   INDF1     601h     INDF1       681h     INDF1       701h     INDF1       781h     INDF1
                                 403h        PCL     482h     PCL     502h     PCL            582h     PCL     602h      PCL        682h      PCL        702h      PCL        782h      PCL
                                 404h     STATUS     483h  STATUS     503h  STATUS            583h  STATUS     603h   STATUS        683h   STATUS        703h   STATUS        783h   STATUS
                                 405h      FSR0L     484h   FSR0L     504h   FSR0L            584h   FSR0L     604h    FSR0L        684h    FSR0L        704h    FSR0L        784h    FSR0L
                                 406h      FSR0H     485h   FSR0H     505h   FSR0H            585h   FSR0H     605h    FSR0H        685h    FSR0H        705h    FSR0H        785h    FSR0H
                                 407h      FSR1L     486h   FSR1L     506h   FSR1L            586h   FSR1L     606h    FSR1L        686h    FSR1L        706h    FSR1L        786h    FSR1L
                                 408h      FSR1H     487h   FSR1H     507h   FSR1H            587h   FSR1H     607h    FSR1H        687h    FSR1H        707h    FSR1H        787h    FSR1H
                                 409h       BSR      488h    BSR      508h    BSR             588h    BSR      608h      BSR        688h      BSR        708h      BSR        788h      BSR
                                 40Ah      WREG      489h   WREG      509h   WREG             589h   WREG      609h    WREG         689h    WREG         709h    WREG         789h    WREG
                                 40Bh     PCLATH     48Ah  PCLATH     50Ah  PCLATH            58Ah  PCLATH     60Ah   PCLATH        68Ah   PCLATH        70Ah   PCLATH        78Ah   PCLATH
                                 40Ch     INTCON     48Bh  INTCON     50Bh  INTCON            58Bh  INTCON     60Bh   INTCON        68Bh   INTCON        70Bh   INTCON        78Bh   INTCON
                                 40Dh         --     48Ch      --     50Ch      --            58Ch      --     60Ch       --        68Ch       --        70Ch       --        78Ch       --
                                 40Eh         --     48Dh      --     50Dh      --            58Dh      --     60Dh       --        68Dh       --        70Dh       --        78Dh       --
                                 40Fh         --     48Eh      --     50Eh      --            58Eh      --     60Eh       --        68Eh       --        70Eh       --        78Eh       --
                                 410h         --     48Fh      --     50Fh      --            58Fh      --     60Fh       --        68Fh       --        70Fh       --        78Fh       --
                                 411h         --     490h      --     510h      --            590h      --     610h       --        690h       --        710h       --        790h       --
                                 412h         --     491h      --     511h      --            591h      --     611h       --        691h       --        711h       --        791h       --
                                 413h         --     492h      --     512h      --            592h      --     612h       --        692h       --        712h       --        792h       --
                                 414h         --     493h      --     513h      --            593h      --     613h       --        693h       --        713h       --        793h       --
                                 415h         --     494h      --     514h      --            594h      --     614h       --        694h       --        714h       --        794h       --
                                 416h      TMR4      495h      --     515h      --            595h      --     615h       --        695h       --        715h       --        795h       --
                                 417h        PR4     496h      --     516h      --            596h      --     616h       --        696h       --        716h       --        796h       --
                                 418h     T4CON      497h      --     517h      --            597h      --     617h       --        697h       --        717h       --        797h       --
                                 419h         --     498h      --     518h      --            598h      --     618h       --        698h       --        718h       --        798h       --
                                 41Ah         --     499h      --     519h      --            599h      --     619h       --        699h       --        719h       --        799h       --
                                 41Bh         --     49Ah      --     51Ah      --            59Ah      --     61Ah       --        69Ah       --        71Ah       --        79Ah       --
                                 41Ch         --     49Bh      --     51Bh      --            59Bh      --     61Bh       --        69Bh       --        71Bh       --        79Bh       --
                                 41Dh      TMR6      49Ch      --     51Ch      --            59Ch      --     61Ch       --        69Ch       --        71Ch       --        79Ch       --
                                 41Eh        PR6     49Dh      --     51Dh      --            59Dh      --     61Dh       --        69Dh       --        71Dh       --        79Dh       --
                                 41Fh     T6CON      49Eh      --     51Eh      --            59Eh      --     61Eh       --        69Eh       --        71Eh       --        79Eh       --
                                 420h         --     49Fh      --     51Fh      --            59Fh      --     61Fh       --        69Fh       --        71Fh       --        79Fh       --
                                                     4A0h             520h                    5A0h             620h                 6A0h                 720h                 7A0h

                                          General          General          General                 General          Unimplemented        Unimplemented        Unimplemented        Unimplemented
                                          Purpose          Purpose          Purpose                 Purpose            Read as `0'          Read as `0'          Read as `0'          Read as `0'
                                          Register         Register         Register                Register
                                          80 Bytes         80 Bytes         80 Bytes                80 Bytes

                                 46Fh                4EFh             56Fh                    5EFh             66Fh                 6EFh                 76Fh                 7EFh
                                 470h                4F0h             570h                    5F0h             670h                 6F0h                 770h                 7F0h

                                          Accesses         Accesses         Accesses                Accesses   67Fh  Accesses       6FFh  Accesses       77Fh  Accesses       7FFh  Accesses
                                          70h 7Fh        70h 7Fh        70h 7Fh               70h 7Fh        70h 7Fh            70h 7Fh            70h 7Fh            70h 7Fh

                                 47Fh                4FFh             57Fh                    5FFh

DS41440A-page 29                 Legend:  = Unimplemented data memory locations, read as `0'
DS41440A-page 30                 TABLE 3-5: PIC16F/LF1825/1829 MEMORY MAP, BANKS 16-23                                                                                                                      PIC16F/LF1825/1829

                                          BANK 16              BANK 17              BANK 18              BANK 19              BANK 20              BANK 21              BANK 22              BANK 23

Preliminary                      800h      INDF0         880h   INDF0         900h   INDF0         980h   INDF0         A00h     INDF0       A80h     INDF0       B00h     INDF0       B80h     INDF0
                                 801h      INDF1         881h   INDF1         901h   INDF1         981h   INDF1         A01h     INDF1       A81h     INDF1       B01h     INDF1       B81h     INDF1
                                 802h        PCL         882h     PCL         902h     PCL         982h     PCL         A02h      PCL        A82h      PCL        B02h      PCL        B82h      PCL
                                 803h     STATUS         883h  STATUS         903h  STATUS         983h  STATUS         A03h   STATUS        A83h   STATUS        B03h   STATUS        B83h   STATUS
                                 804h      FSR0L         884h   FSR0L         904h   FSR0L         984h   FSR0L         A04h    FSR0L        A84h    FSR0L        B04h    FSR0L        B84h    FSR0L
                                 805h      FSR0H         885h   FSR0H         905h   FSR0H         985h   FSR0H         A05h    FSR0H        A85h    FSR0H        B05h    FSR0H        B85h    FSR0H
                                 806h      FSR1L         886h   FSR1L         906h   FSR1L         986h   FSR1L         A06h    FSR1L        A86h    FSR1L        B06h    FSR1L        B86h    FSR1L
                                 807h      FSR1H         887h   FSR1H         907h   FSR1H         987h   FSR1H         A07h    FSR1H        A87h    FSR1H        B07h    FSR1H        B87h    FSR1H
                                 808h       BSR          888h    BSR          908h    BSR          988h    BSR          A08h      BSR        A88h      BSR        B08h      BSR        B88h      BSR
                                 809h      WREG          889h   WREG          909h   WREG          989h   WREG          A09h    WREG         A89h    WREG         B09h    WREG         B89h    WREG
                                 80Ah     PCLATH         88Ah  PCLATH         90Ah  PCLATH         98Ah  PCLATH         A0Ah   PCLATH        A8Ah   PCLATH        B0Ah   PCLATH        B8Ah   PCLATH
                                 80Bh     INTCON         88Bh  INTCON         90Bh  INTCON         98Bh  INTCON         A0Bh   INTCON        A8Bh   INTCON        B0Bh   INTCON        B8Bh   INTCON
                                 80Ch                    88Ch                 90Ch                 98Ch                 A0Ch                 A8Ch                 B0Ch                 B8Ch
                                 80Dh         --         88Dh      --         90Dh      --         98Dh      --         A0Dh       --        A8Dh       --        B0Dh       --        B8Dh       --
                                 80Eh         --         88Eh      --         90Eh      --         98Eh      --         A0Eh       --        A8Eh       --        B0Eh       --        B8Eh       --
                                 80Fh         --         88Fh      --         90Fh      --         98Fh      --         A0Fh       --        A8Fh       --        B0Fh       --        B8Fh       --
                                 810h         --         890h      --         910h      --         990h      --         A10h       --        A90h       --        B10h       --        B90h       --
                                 811h         --         891h      --         911h      --         991h      --         A11h       --        A91h       --        B11h       --        B91h       --
                                 812h         --         892h      --         912h      --         992h      --         A12h       --        A92h       --        B12h       --        B92h       --
                                 813h         --         893h      --         913h      --         993h      --         A13h       --        A93h       --        B13h       --        B93h       --
                                 814h         --         894h      --         914h      --         994h      --         A14h       --        A94h       --        B14h       --        B94h       --
                                 815h         --         895h      --         915h      --         995h      --         A15h       --        A95h       --        B15h       --        B95h       --
                                 816h         --         896h      --         916h      --         996h      --         A16h       --        A96h       --        B16h       --        B96h       --
                                 817h         --         897h      --         917h      --         997h      --         A17h       --        A97h       --        B17h       --        B97h       --
                                 818h         --         898h      --         918h      --         998h      --         A18h       --        A98h       --        B18h       --        B98h       --
                                 819h         --         899h      --         919h      --         999h      --         A19h       --        A99h       --        B19h       --        B99h       --
                                 81Ah         --         89Ah      --         91Ah      --         99Ah      --         A1Ah       --        A9Ah       --        B1Ah       --        B9Ah       --
                                 81Bh         --         89Bh      --         91Bh      --         99Bh      --         A1Bh       --        A9Bh       --        B1Bh       --        B9Bh       --
                                 81Ch         --         89Ch      --         91Ch      --         99Ch      --         A1Ch       --        A9Ch       --        B1Ch       --        B9Ch       --
                                 81Dh         --         89Dh      --         91Dh      --         99Dh      --         A1Dh       --        A9Dh       --        B1Dh       --        B9Dh       --
                                 81Eh         --         89Eh      --         91Eh      --         99Eh      --         A1Eh       --        A9Eh       --        B1Eh       --        B9Eh       --
                                 81Fh         --         89Fh      --         91Fh      --         99Fh      --         A1Fh       --        A9Fh       --        B1Fh       --        B9Fh       --
                                 820h         --         8A0h      --         920h      --         9A0h      --         A20h       --        AA0h       --        B20h       --        BA0h       --

2010 Microchip Technology Inc.           Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented
                                            Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'

                                 86Fh     Accesses       8EFh  Accesses       96Fh  Accesses       9EFh  Accesses       A6Fh  Accesses       AEFh  Accesses       B6Fh  Accesses       BEFh  Accesses
                                 870h     70h 7Fh      8F0h  70h 7Fh      970h  70h 7Fh      9F0h  70h 7Fh      A70h  70h 7Fh      AF0h  70h 7Fh      B70h  70h 7Fh      BF0h  70h 7Fh

                                 87Fh                    8FFh                 97Fh                 9FFh                 A7Fh                 AFFh                 B7Fh                 BFFh

                                 Legend:  = Unimplemented data memory locations, read as `0'.
2010 Microchip Technology Inc.  TABLE 3-6: PIC16F/LF1825/1829 MEMORY MAP, BANKS 24-31

                                          BANK 24              BANK 25              BANK 26              BANK 27              BANK 28              BANK 29              BANK 30              BANK 31

                                 C00h      INDF0         C80h   INDF0         D00h   INDF0         D80h   INDF0         E00h     INDF0       E80h     INDF0       F00h     INDF0       F80h  INDF0
                                 C01h      INDF1         C81h   INDF1         D01h   INDF1         D81h   INDF1         E01h     INDF1       E81h     INDF1       F01h     INDF1
                                 C02h        PCL         C82h     PCL         D02h     PCL         D82h     PCL         E02h      PCL        E82h      PCL        F02h      PCL        F81h  INDF1
                                 C03h     STATUS         C83h  STATUS         D03h  STATUS         D83h  STATUS         E03h   STATUS        E83h   STATUS        F03h   STATUS
                                 C04h      FSR0L         C84h   FSR0L         D04h   FSR0L         D84h   FSR0L         E04h    FSR0L        E84h    FSR0L        F04h    FSR0L        F82h  PCL
                                 C05h      FSR0H         C85h   FSR0H         D05h   FSR0H         D85h   FSR0H         E05h    FSR0H        E85h    FSR0H        F05h    FSR0H
                                 C06h      FSR1L         C86h   FSR1L         D06h   FSR1L         D86h   FSR1L         E06h    FSR1L        E86h    FSR1L        F06h    FSR1L        F83h  STATUS
                                 C07h      FSR1H         C87h   FSR1H         D07h   FSR1H         D87h   FSR1H         E07h    FSR1H        E87h    FSR1H        F07h    FSR1H
                                 C08h       BSR          C88h    BSR          D08h    BSR          D88h    BSR          E08h      BSR        E88h      BSR        F08h      BSR        F84h  FSR0L
                                 C09h      WREG          C89h   WREG          D09h   WREG          D89h   WREG          E09h    WREG         E89h    WREG         F09h    WREG
                                 C0Ah     PCLATH         C8Ah  PCLATH         D0Ah  PCLATH         D8Ah  PCLATH         E0Ah   PCLATH        E8Ah   PCLATH        F0Ah   PCLATH        F85h  FSR0H
                                 C0Bh     INTCON         C8Bh  INTCON         D0Bh  INTCON         D8Bh  INTCON         E0Bh   INTCON        E8Bh   INTCON        F0Bh   INTCON
                                 C0Ch                    C8Ch                 D0Ch                 D8Ch                 E0Ch                 E8Ch                 F0Ch                 F86h  FSR1L
                                 C0Dh         --         C8Dh      --         D0Dh      --         D8Dh      --         E0Dh       --        E8Dh       --        F0Dh       --
                                 C0Eh         --         C8Eh      --         D0Eh      --         D8Eh      --         E0Eh       --        E8Eh       --        F0Eh       --        F87h  FSR1H
                                 C0Fh         --         C8Fh      --         D0Fh      --         D8Fh      --         E0Fh       --        E8Fh       --        F0Fh       --
                                 C10h         --         C90h      --         D10h      --         D90h      --         E10h       --        E90h       --        F10h       --        F88h  BSR
                                 C11h         --         C91h      --         D11h      --         D91h      --         E11h       --        E91h       --        F11h       --
                                 C12h         --         C92h      --         D12h      --         D92h      --         E12h       --        E92h       --        F12h       --        F89h  WREG
                                 C13h         --         C93h      --         D13h      --         D93h      --         E13h       --        E93h       --        F13h       --
                                 C14h         --         C94h      --         D14h      --         D94h      --         E14h       --        E94h       --        F14h       --        F8Ah  PCLATH
                                 C15h         --         C95h      --         D15h      --         D95h      --         E15h       --        E95h       --        F15h       --
                                 C16h         --         C96h      --         D16h      --         D96h      --         E16h       --        E96h       --        F16h       --        F8Bh  INTCON
                                 C17h         --         C97h      --         D17h      --         D97h      --         E17h       --        E97h       --        F17h       --
                                 C18h         --         C98h      --         D18h      --         D98h      --         E18h       --        E98h       --        F18h       --        F8Ch
                                 C19h         --         C99h      --         D19h      --         D99h      --         E19h       --        E99h       --        F19h       --
                                 C1Ah         --         C9Ah      --         D1Ah      --         D9Ah      --         E1Ah       --        E9Ah       --        F1Ah       --        F8Dh
                                 C1Bh         --         C9Bh      --         D1Bh      --         D9Bh      --         E1Bh       --        E9Bh       --        F1Bh       --
                                 C1Ch         --         C9Ch      --         D1Ch      --         D9Ch      --         E1Ch       --        E9Ch       --        F1Ch       --        F8Eh
                                 C1Dh         --         C9Dh      --         D1Dh      --         D9Dh      --         E1Dh       --        E9Dh       --        F1Dh       --
                                 C1Eh         --         C9Eh      --         D1Eh      --         D9Eh      --         E1Eh       --        E9Eh       --        F1Eh       --        F8Fh
                                 C1Fh         --         C9Fh      --         D1Fh      --         D9Fh      --         E1Fh       --        E9Fh       --        F1Fh       --
                                 C20h         --         CA0h      --         D20h      --         DA0h      --         E20h       --        EA0h       --        F20h       --        F90h

                                                                                                                                                                                       F91h

Preliminary                                                                                                                                                                            F92h

                                                                                                                                                                                       F93h

                                                                                                                                                                                       F94h

                                                                                                                                                                                       F95h

                                                                                                                                                                                       F96h

                                                                                                                                                                                       F97h  See Table 3-7 for  PIC16F/LF1825/1829
                                                                                                                                                                                             register mapping
                                                                                                                                                                                       F98h

                                                                                                                                                                                       F99h  details

                                                                                                                                                                                       F9Ah

                                                                                                                                                                                       F9Bh

                                                                                                                                                                                       F9Ch

                                                                                                                                                                                       F9Dh

                                                                                                                                                                                       F9Eh

                                                                                                                                                                                       F9Fh
                                                                                                                                                                                       FA0h

                                          Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented        Unimplemented
                                            Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'          Read as `0'

DS41440A-page 31                  C6Fh    Accesses       CEFh  Accesses       D6Fh  Accesses       DEFh  Accesses       E6Fh  Accesses       EEFh  Accesses       F6Fh  Accesses       FEFh  Accesses
                                  C70h    70h 7Fh      CF0h  70h 7Fh      D70h  70h 7Fh      DF0h  70h 7Fh      E70h  70h 7Fh      EF0h  70h 7Fh      F70h  70h 7Fh      FF0h  70h 7Fh

                                  CFFh                   CFFh                 D7Fh                 DFFh                 E7Fh                 EFFh                 F7Fh                 FFFh
                                 Legend:
                                          = Unimplemented data memory locations, read as `0'.
PIC16F/LF1825/1829

TABLE 3-7:         PIC16F/LF1825/1829 MEMORY                   3.2.6        SPECIAL FUNCTION REGISTERS
                   MAP, BANK 31                                             SUMMARY
             F8Ch
                    Bank 31(1)                                 The Special Function Register summary for the device
                                                               family are as follows:

                   Unimplemented                                              Device  Bank(s)  Page No.
                     Read as `0'                               PIC16F/LF1825/1829
                                                                                          0        33
FE3h               STATUS_SHAD                                                            1        34
FE4h                WREG_SHAD                                                             2        35
FE5h                                                                                      3        36
FE6h                 BSR_SHAD                                                             4        37
FE7h               PCLATH_SHAD                                                            5        38
FE8h                FSR0L_SHAD                                                            6        39
FE9h               FSR0H_SHAD                                                             7        40
FEAh                FSR1L_SHAD                                                            8        41
FEBh               FSR1H_SHAD                                                           9-30       42
FECh                                                                                     31        43
FEDh                        --
FEEh
FEFh                   STKPTR
                          TOSL
                         TOSH

Legend:                = Unimplemented data memory locations,
                   read as `0'.

DS41440A-page 32                                               Preliminary             2010 Microchip Technology Inc.
                                                                            PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY

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

  Bank 0                Addressing this location uses contents of FSR0H/FSR0L to address data memory                       xxxx xxxx xxxx xxxx
000h(1) INDF0           (not a physical register)

001h(1) INDF1           Addressing this location uses contents of FSR1H/FSR1L to address data memory                       xxxx xxxx xxxx xxxx
                        (not a physical register)

002h(1)       PCL       Program Counter (PC) Least Significant Byte                                                        0000 0000 0000 0000
003h(1)       STATUS                                                                                                       ---1 1000 ---q quuu
004h(1)       FSR0L     --                --     --                  TO     PD                      Z        DC       C    0000 0000 uuuu uuuu
005h(1)       FSR0H                                                                                         INTF    IOCIF  0000 0000 0000 0000
006h(1)       FSR1L     Indirect Data Memory Address 0 Low Pointer                                                         0000 0000 uuuu uuuu
007h(1)       FSR1H                                                                                                        0000 0000 0000 0000
008h(1)       BSR       Indirect Data Memory Address 0 High Pointer                                                        ---0 0000 ---0 0000
009h(1)       WREG                                                                                                         0000 0000 uuuu uuuu
00Ah(1)       PCLATH    Indirect Data Memory Address 1 Low Pointer                                                         -000 0000 -000 0000
00Bh(1)       INTCON                                                                                                       0000 000x 0000 000u
                        Indirect Data Memory Address 1 High Pointer

                        --                --     --                                 BSR<4:0>

                        Working Register

                        --       Write Buffer for the upper 7 bits of the Program Counter

                        GIE               PEIE   TMR0IE              INTE   IOCIE          TMR0IF

00Ch          PORTA        --             --     RA5                 RA4    RA3            RA2              RA1     RA0    --xx xxxx --xx xxxx
00Dh          PORTB(2)   RB7            RB6      RB5                 RB4     --             --               --      --    xxxx ---- xxxx ----
00Eh          PORTC     RC7(2)         RC6(2)    RC5                 RC4    RC3            RC2              RC1     RC0    xxxx xxxx xxxx xxxx

00Fh --                 Unimplemented                                                                                      --             --

010h --                 Unimplemented                                                                                      --             --

011h PIR1               TMR1GIF           ADIF   RCIF                TXIF   SSP1IF CCP1IF TMR2IF TMR1IF 0000 0000 0000 0000

012h PIR2               OSFIF             C2IF   C1IF                EEIF   BCL1IF                  --      --      CCP2IF 0000 0--0 0000 0--0

013h          PIR3      --                --     CCP4IF  CCP3IF TMR6IF                              --      TMR4IF  --     --00 0-0- --00 0-0-
014h          PIR4(2)
                        --                --     --                  --     --                      --      BCL2IF SSP2IF ---- --00 ---- --00

015h TMR0               Timer0 Module Register                                                                             xxxx xxxx uuuu uuuu

016h TMR1L              Holding Register for the Least Significant Byte of the 16-bit TMR1 Register                        xxxx xxxx uuuu uuuu

017h TMR1H              Holding Register for the Most Significant Byte of the 16-bit TMR1 Register                         xxxx xxxx uuuu uuuu

018h T1CON              TMR1CS1 TMR1CS0          T1CKPS<1:0>                T1OSCEN T1SYNC                  --      TMR1ON 0000 00-0 uuuu uu-u

019h T1GCON             TMR1GE T1GPOL            T1GTM   T1GSPM             T1GGO/         T1GVAL           T1GSS<1:0>     0000 0x00 uuuu uxuu
                                                                             DONE

01Ah TMR2               Timer2 Module Register                                                                             0000 0000 0000 0000

01Bh PR2                Timer2 Period Register                                                                             1111 1111 1111 1111

01Ch T2CON              --                       T2OUTPS<3:0>                              TMR2ON           T2CKPS<1:0>    -000 0000 -000 0000

01Dh --                 Unimplemented                                                                                      --             --

01Eh CPSCON0            CPSON          CPSRM     --                  --     CPSRNG<1:0>                     CPSOUT T0XCS 00-- 0000 00-- 0000

01Fh CPSCON1            --                --     --                  --                              CPSCH<3:0>            ---- 0000 ---- 0000

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

2010 Microchip Technology Inc.                         Preliminary                                                     DS41440A-page 33
PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 1                Addressing this location uses contents of FSR0H/FSR0L to address data memory                         xxxx xxxx xxxx xxxx
080h(1) INDF0           (not a physical register)

081h(1) INDF1           Addressing this location uses contents of FSR1H/FSR1L to address data memory                         xxxx xxxx xxxx xxxx
                        (not a physical register)

082h(1)       PCL       Program Counter (PC) Least Significant Byte                                                          0000 0000 0000 0000
083h(1)       STATUS                                                                                                         ---1 1000 ---q quuu
084h(1)       FSR0L     --                --      --                 TO     PD               Z               DC        C     0000 0000 uuuu uuuu
085h(1)       FSR0H                                                                                         INTF     IOCIF   0000 0000 0000 0000
086h(1)       FSR1L     Indirect Data Memory Address 0 Low Pointer                                                           0000 0000 uuuu uuuu
087h(1)       FSR1H                                                                                                          0000 0000 0000 0000
088h(1)       BSR       Indirect Data Memory Address 0 High Pointer                                                          ---0 0000 ---0 0000
089h(1)       WREG                                                                                                           0000 0000 uuuu uuuu
08Ah(1)       PCLATH    Indirect Data Memory Address 1 Low Pointer                                                           -000 0000 -000 0000
08Bh(1)       INTCON                                                                                                         0000 000x 0000 000u
                        Indirect Data Memory Address 1 High Pointer

                        --                --      --                                    BSR<4:0>

                        Working Register

                        --         Write Buffer for the upper 7 bits of the Program Counter

                        GIE               PEIE    TMR0IE             INTE   IOCIE            TMR0IF

08Ch          TRISA          --         --        TRISA5     TRISA4         TRISA3           TRISA2         TRISA1   TRISA0  --11 1111 --11 1111
08Dh          TRISB(2)   TRISB7     TRISB6        TRISB5     TRISB4            --               --             --       --   1111 ---- 1111 ----
08Eh          TRISC     TRISC7(2)  TRISC6(2)      TRISC5     TRISC4                                                          1111 1111 1111 1111
                                                                            TRISC3           TRISC2         TRISC1   TRISC0

08Fh --                 Unimplemented                                                                                        --              --

090h --                 Unimplemented                                                                                        --              --

091h PIE1               TMR1GIE           ADIE    RCIE               TXIE   SSP1IE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000

092h PIE2               OSFIE             C2IE    C1IE               EEIE   BCL1IE           --             --       CCP2IE 0000 0--0 0000 0--0

093h          PIE3      --                --      CCP4IE     CCP3IE TMR6IE                   --             TMR4IE    --     --00 0-0- --00 0-0-
094h          PIE4(2)
                        --                --      --                 --     --               --             BCL2IE SSP2IE ---- --00 ---- --00

095h OPTION_REG WPUEN INTEDG TMR0CS TMR0SE                                  PSA                             PS<2:0>          1111 1111 1111 1111

096h PCON               STKOVF STKUNF             --                 --     RMCLR            RI             POR      BOR 00-- 11qq qq-- qquu

097h WDTCON             --                --                                WDTPS<4:0>                               SWDTEN --01 0110 --01 0110

098h OSCTUNE            --                --                                TUN<5:0>                                         --00 0000 --00 0000

099h OSCCON             SPLLEN                    IRCF<3:0>                                  --             SCS<1:0>         0011 1-00 0011 1-00

09Ah OSCSTAT            T1OSCR            PLLR    OSTS       HFIOFR HFIOFL MFIOFR LFIOFR HFIOFS 10q0 0q00 qqqq qq0q

09Bh ADRESL             A/D Result Register Low                                                                              xxxx xxxx uuuu uuuu

09Ch ADRESH             A/D Result Register High                                                                             xxxx xxxx uuuu uuuu

09Dh ADCON0             --                                   CHS<4:0>                                       GO/DONE ADON -000 0000 -000 0000

09Eh ADCON1             ADFM                      ADCS<2:0>                 --               ADNREF         ADPREF<1:0>      0000 -000 0000 -000

09Fh --                 Unimplemented                                                                                        --              --

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

DS41440A-page 34                                         Preliminary                                         2010 Microchip Technology Inc.
                                                                           PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 2               Addressing this location uses contents of FSR0H/FSR0L to address data memory                        xxxx xxxx xxxx xxxx
100h(1) INDF0          (not a physical register)

101h(1) INDF1          Addressing this location uses contents of FSR1H/FSR1L to address data memory                        xxxx xxxx xxxx xxxx
                       (not a physical register)

102h(1)       PCL      Program Counter (PC) Least Significant Byte                                                         0000 0000 0000 0000
103h(1)       STATUS                                                                                                       ---1 1000 ---q quuu
104h(1)       FSR0L    --                --     --                  TO     PD              Z                 DC       C    0000 0000 uuuu uuuu
105h(1)       FSR0H                                                                                         INTF    IOCIF  0000 0000 0000 0000
106h(1)       FSR1L    Indirect Data Memory Address 0 Low Pointer                                                          0000 0000 uuuu uuuu
107h(1)       FSR1H                                                                                                        0000 0000 0000 0000
108h(1)       BSR      Indirect Data Memory Address 0 High Pointer                                                         ---0 0000 ---0 0000
109h(1)       WREG                                                                                                         0000 0000 uuuu uuuu
10Ah(1)       PCLATH   Indirect Data Memory Address 1 Low Pointer                                                          -000 0000 -000 0000
10Bh(1)       INTCON                                                                                                       0000 000x 0000 000u
                       Indirect Data Memory Address 1 High Pointer

                       --                --     --                                 BSR<4:0>

                       Working Register

                       --        Write Buffer for the upper 7 bits of the Program Counter

                       GIE               PEIE   TMR0IE              INTE   IOCIE           TMR0IF

10Ch          LATA         --        --         LATA5               LATA4     --           LATA2            LATA1   LATA0  --xx -xxx --uu -uuu
10Dh          LATB(2)   LATB7     LATB6         LATB5               LATB4     --              --               --      --  xxxx ---- xxxx ----
10Eh          LATC     LATC7(2)  LATC6(2)       LATC5               LATC4  LATC3                                           xxxx xxxx uuuu uuuu
                                                                                           LATC2            LATC1   LATC0

10Fh --                Unimplemented                                                                                       --             --

110h --                Unimplemented                                                                                       --             --

111h CM1CON0           C1ON           C1OUT     C1OE        C1POL          --              C1SP             C1HYS C1SYNC 0000 -100 0000 -100

112h CM1CON1           C1INTP         C1INTN    C1PCH<1:0>                 --              --               C1NCH1 C1NCH0 0000 ---0 0000 ---0

113h CM2CON0           C2ON           C2OUT     C2OE        C2POL          --              C2SP             C2HYS C2SYNC 0000 -100 0000 -100

114h CM2CON1           C2INTP         C2INTN    C2PCH<1:0>                 --              --               C2NCH<1:0>     0000 --00 0000 --00

115h CMOUT             --                --     --                  --     --              --        MC2OUT MC1OUT ---- --00 ---- --00

116h BORCON            SBOREN            --     --                  --     --              --               --      BORRDY 1--- ---q u--- ---u

117h FVRCON            FVREN FVRRDY             TSEN        TSRNG          CDAFVR<1:0>                      ADFVR<1:0>     0q00 0000 0q00 0000

118h DACCON0           DACEN DACLPS DACOE                           --     DACPSS<1:0>                      --      DACNSS 000- 00-0 000- 00-0

119h DACCON1           --                --     --                                 DACR<4:0>                               ---0 0000 ---0 0000

11Ah          SRCON0   SRLEN                     SRCLK<2:0>                SRQEN           SRNQEN SRPS              SRPR 0000 0000 0000 0000
11Bh          SRCON1   SRSPE     SRSCKE SRSC2E(2) SRSC1E                   SRRPE
                                                                                           SRRCKE SRRC2E(2) SRRC1E 0000 0000 0000 0000

11Ch          --       Unimplemented                                                                                       --             --
11Dh          APFCON0   RXDTSEL SDOSEL(3)
11Eh          APFCON1                             SSSEL(3)       --        T1GSEL          TXCKSEL              --  --     000- 0000 000- 0000
                                                SDO2SEL(2)  SS2SEL(2)      P1DSEL           P1CSEL          P2BSEL
                       --                --                                                                         CCP2SEL --00 0000 --00 0000

11Fh --                Unimplemented                                                                                       --             --

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

2010 Microchip Technology Inc.                        Preliminary                                                      DS41440A-page 35
PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 3                 Addressing this location uses contents of FSR0H/FSR0L to address data memory                      xxxx xxxx xxxx xxxx
180h(1) INDF0            (not a physical register)

181h(1) INDF1            Addressing this location uses contents of FSR1H/FSR1L to address data memory                      xxxx xxxx xxxx xxxx
                         (not a physical register)

182h(1)       PCL        Program Counter (PC) Least Significant Byte                                                       0000 0000 0000 0000
183h(1)       STATUS
184h(1)       FSR0L      --                --          --             TO      PD              Z              DC        C   ---1 1000 ---q quuu
185h(1)       FSR0H                                                                                         INTF
186h(1)       FSR1L      Indirect Data Memory Address 0 Low Pointer                                                 IOCIF  0000 0000 uuuu uuuu
187h(1)       FSR1H                                                                                                ANSA0
188h(1)       BSR        Indirect Data Memory Address 0 High Pointer                                                       0000 0000 0000 0000
189h(1)       WREG                                                                                                    --
18Ah(1)       PCLATH     Indirect Data Memory Address 1 Low Pointer                                                ANSC0   0000 0000 uuuu uuuu
18Bh(1)       INTCON
                         Indirect Data Memory Address 1 High Pointer                                                  RD   0000 0000 0000 0000

                         --                --          --                            BSR<4:0>                       RX9D   ---0 0000 ---0 0000
                                                                                                                    TX9D
                         Working Register                                                                          ABDEN   0000 0000 uuuu uuuu

                         --         Write Buffer for the upper 7 bits of the Program Counter                               -000 0000 -000 0000

                         GIE               PEIE     TMR0IE            INTE   IOCIE            TMR0IF                       0000 000x 0000 000u

18Ch          ANSELA            --         --          --        ANSA4          --            ANSA2         ANSA1          ---1 -111 ---1 -111
18Dh          ANSELB(2)     ANSB7      ANSB6        ANSB5        ANSB4          --               --            --
18Eh          ANSELC     ANSC7(2)   ANSC6(2)                                 ANSC3                                         1111 ---- 1111 ----
                                                       --           --                        ANSC2         ANSC1
                                                                                                                           11-- 1111 11-- 1111

18Fh --                  Unimplemented                                                                                     --                --

190h --                  Unimplemented                                                                                     --                --

191h EEADRL              EEPROM / Program Memory Address Register Low Byte                                                 0000 0000 0000 0000

192h EEADRH              --         EEPROM / Program Memory Address Register High Byte                                     -000 0000 -000 0000

193h EEDATL              EEPROM / Program Memory Read Data Register Low Byte                                               xxxx xxxx uuuu uuuu

194h EEDATH              --                --       EEPROM / Program Memory Read Data Register High Byte                   --xx xxxx --uu uuuu

195h EECON1              EEPGD          CFGS           LWLO           FREE   WRERR WREN                     WR             0000 x000 0000 q000

196h EECON2              EEPROM control register 2                                                                         0000 0000 0000 0000

197h --                  Unimplemented                                                                                     --                --

198h --                  Unimplemented                                                                                     --                --

199h RCREG               USART Receive Data Register                                                                       0000 0000 0000 0000

19Ah TXREG               USART Transmit Data Register                                                                      0000 0000 0000 0000

19Bh SPBRGL              Baud Rate Generator Data Register Low                                                             0000 0000 0000 0000

19Ch SPBRGH              Baud Rate Generator Data Register High                                                            0000 0000 0000 0000

19Dh RCSTA               SPEN              RX9        SREN            CREN   ADDEN            FERR          OERR           0000 000x 0000 000x

19Eh TXSTA               CSRC              TX9         TXEN           SYNC   SENDB            BRGH          TRMT           0000 0010 0000 0010

19Fh BAUDCON             ABDOVF         RCIDL          --             SCKP   BRG16            --            WUE            01-0 0-00 01-0 0-00

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

DS41440A-page 36                                              Preliminary                                    2010 Microchip Technology Inc.
                                                                               PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 4                   Addressing this location uses contents of FSR0H/FSR0L to address data memory                    xxxx xxxx xxxx xxxx
200h(1) INDF0              (not a physical register)

201h(1) INDF1              Addressing this location uses contents of FSR1H/FSR1L to address data memory                    xxxx xxxx xxxx xxxx
                           (not a physical register)

202h(1)       PCL          Program Counter (PC) Least Significant Byte                                                     0000 0000 0000 0000
203h(1)       STATUS
204h(1)       FSR0L        --                --     --                  TO         PD          Z             DC    C       ---1 1000 ---q quuu
205h(1)       FSR0H                                                                                         INTF
206h(1)       FSR1L        Indirect Data Memory Address 0 Low Pointer                                                      0000 0000 uuuu uuuu
207h(1)       FSR1H
208h(1)       BSR          Indirect Data Memory Address 0 High Pointer                                                     0000 0000 0000 0000
209h(1)       WREG
20Ah(1)       PCLATH       Indirect Data Memory Address 1 Low Pointer                                                      0000 0000 uuuu uuuu
20Bh(1)       INTCON
                           Indirect Data Memory Address 1 High Pointer                                                     0000 0000 0000 0000

                           --                --     --                                    BSR<4:0>                         ---0 0000 ---0 0000

                           Working Register                                                                                0000 0000 uuuu uuuu

                           --        Write Buffer for the upper 7 bits of the Program Counter                              -000 0000 -000 0000

                           GIE               PEIE   TMR0IE              INTE       IOCIE       TMR0IF               IOCIF  0000 000x 0000 000u
                                                                                                                   WPUA0
20Ch WPUA                  --                --     WPUA5   WPUA4 WPUA3 WPUA2 WPUA1                                        --11 1111 --11 1111
                                                                                                                      --
20Dh          WPUB          WPUB7     WPUB6         WPUB5   WPUB4                  --             --           --  WPUC0   1111 ---- 1111 ----
20Eh          WPUC         WPUC7(2)  WPUC6(2)       WPUC5   WPUC4              WPUC3           WPUC2        WPUC1
                                                                                                                           1111 1111 1111 1111

20Fh --                    Unimplemented                                                                                   --         --

210h --                    Unimplemented                                                                                   --         --

211h SSP1BUF Synchronous Serial Port Receive Buffer/Transmit Register                                                      xxxx xxxx uuuu uuuu

212h SSP1ADD                                                            ADD<7:0>                                           0000 0000 0000 0000

213h SSP1MSK                                                            MSK<7:0>                                              1111 1111 1111 1111
                                                                                                                   BF 0000 0000 0000 0000
214h SSP1STAT              SMP               CKE    D/A                 P          S           R/W          UA

215h SSP1CON1              WCOL           SSPOV     SSPEN               CKP                    SSPM<3:0>                   0000 0000 0000 0000

216h SSP1CON2              GCEN ACKSTAT ACKDT               ACKEN                  RCEN        PEN          RSEN    SEN    0000 0000 0000 0000
                                                                                                                   DHEN
217h SSP1CON3 ACKTIM                         PCIE   SCIE                BOEN       SDAHT SBCDE              AHEN           0000 0000 0000 0000

218h          --           Unimplemented                                                                                   --         --
219h
21Ah          SSP2BUF(2) Synchronous Serial Port Receive Buffer/Transmit Register                                          xxxx xxxx uuuu uuuu
21Bh
21Ch          SSP2ADD(2)                                                ADD<7:0>                                           0000 0000 0000 0000
21Dh
21Eh          SSP2MSK(2)                                                MSK<7:0>                                              1111 1111 1111 1111
21Fh                                                                                                               BF 0000 0000 0000 0000
              SSP2STAT(2)  SMP               CKE    D/A                 P          S           R/W          UA

              SSP2CON1(2) WCOL            SSPOV     SSPEN               CKP                    SSPM<3:0>                   0000 0000 0000 0000
                                                                                                                           0000 0000 0000 0000
              SSP2CON2(2) GCEN       ACKSTAT        ACKDT   ACKEN                  RCEN        PEN          RSEN    SEN    0000 0000 0000 0000
                                                                                                                   DHEN
              SSP2CON3(2) ACKTIM             PCIE   SCIE                BOEN       SDAHT       SBCDE        AHEN

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

2010 Microchip Technology Inc.                            Preliminary                                             DS41440A-page 37
PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 5              Addressing this location uses contents of FSR0H/FSR0L to address data memory                        xxxx xxxx xxxx xxxx
280h(1) INDF0         (not a physical register)

281h(1) INDF1         Addressing this location uses contents of FSR1H/FSR1L to address data memory                        xxxx xxxx xxxx xxxx
                      (not a physical register)

282h(1)       PCL     Program Counter (PC) Least Significant Byte                                                         0000 0000 0000 0000
283h(1)       STATUS                                                                                                      ---1 1000 ---q quuu
284h(1)       FSR0L   --                --     --                  TO     PD             Z                   DC      C    0000 0000 uuuu uuuu
285h(1)       FSR0H                                                                                         INTF   IOCIF  0000 0000 0000 0000
286h(1)       FSR1L   Indirect Data Memory Address 0 Low Pointer                                                          0000 0000 uuuu uuuu
287h(1)       FSR1H                                                                                                       0000 0000 0000 0000
288h(1)       BSR     Indirect Data Memory Address 0 High Pointer                                                         ---0 0000 ---0 0000
289h(1)       WREG                                                                                                        0000 0000 uuuu uuuu
28Ah(1)       PCLATH  Indirect Data Memory Address 1 Low Pointer                                                          -000 0000 -000 0000
28Bh(1)       INTCON                                                                                                      0000 000x 0000 000u
                      Indirect Data Memory Address 1 High Pointer

                      --                --     --                                    BSR<4:0>

                      Working Register

                      --       Write Buffer for the upper 7 bits of the Program Counter

                      GIE               PEIE   TMR0IE              INTE   IOCIE          TMR0IF

28Ch --               Unimplemented                                                                                       --                 --

28Dh --               Unimplemented                                                                                       --                 --

28Eh --               Unimplemented                                                                                       --                 --

28Fh --               Unimplemented                                                                                       --                 --

290h --               Unimplemented                                                                                       --                 --

291h CCPR1L           Capture/Compare/PWM Register 1 (LSB)                                                                xxxx xxxx uuuu uuuu

292h CCPR1H           Capture/Compare/PWM Register 1 (MSB)                                                                xxxx xxxx uuuu uuuu

293h CCP1CON              P1M<1:0>             DC1B<1:0>                                 CCP1M<3:0>                       0000 0000 0000 0000

294h PWM1CON P1RSEN                                                       P1DC<6:0>                                       0000 0000 0000 0000

295h CCP1AS           CCP1ASE                  CCP1AS<2:0>                PSS1AC<1:0>                       PSS1BD<1:0>   0000 0000 0000 0000

296h PSTR1CON         --                --     --           STR1SYNC STR1D               STR1C              STR1B  STR1A ---0 0001 ---0 0001

297h --               Unimplemented                                                                                       --                 --

298h CCPR2L           Capture/Compare/PWM Register 2 (LSB)                                                                xxxx xxxx uuuu uuuu

299h CCPR2H           Capture/Compare/PWM Register 2 (MSB)                                                                xxxx xxxx uuuu uuuu

29Ah CCP2CON          P2M1              P2M0   DC2B1              DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 0000 0000 0000 0000

29Bh PWM2CON          P2RSEN         P2DC6     P2DC5        P2DC4         P2DC3          P2DC2              P2DC1  P2DC0 0000 0000 0000 0000

29Ch CCP2AS           CCP2ASE CCP2AS2 CCP2AS1 CCP2AS0 PSS2AC1 PSS2AC0 PSS2BD1 PSS2BD0 0000 0000 0000 0000

29Dh PSTR2CON         --                --     --           STR2SYNC STR2D               STR2C              STR2B  STR2A ---0 0001 ---0 0001

29Eh CCPTMRS          C4TSEL1 C4TSEL0 C3TSEL1 C3TSEL0 C2TSEL1 C2TSEL0 C1TSEL1 C1TSEL0 0000 0000 0000 0000

29Fh --               Unimplemented                                                                                       --                 --

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

DS41440A-page 38                                      Preliminary                                            2010 Microchip Technology Inc.
                                                                          PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 6              Addressing this location uses contents of FSR0H/FSR0L to address data memory                        xxxx xxxx xxxx xxxx
300h(1) INDF0         (not a physical register)

301h(1) INDF1         Addressing this location uses contents of FSR1H/FSR1L to address data memory                        xxxx xxxx xxxx xxxx
                      (not a physical register)

302h(1)       PCL     Program Counter (PC) Least Significant Byte                                                         0000 0000 0000 0000
303h(1)       STATUS
304h(1)       FSR0L   --                --     --                  TO     PD               Z                 DC    C      ---1 1000 ---q quuu
305h(1)       FSR0H                                                                                         INTF
306h(1)       FSR1L   Indirect Data Memory Address 0 Low Pointer                                                          0000 0000 uuuu uuuu
307h(1)       FSR1H
308h(1)       BSR     Indirect Data Memory Address 0 High Pointer                                                         0000 0000 0000 0000
309h(1)       WREG
30Ah(1)       PCLATH  Indirect Data Memory Address 1 Low Pointer                                                          0000 0000 uuuu uuuu
30Bh(1)       INTCON
                      Indirect Data Memory Address 1 High Pointer                                                         0000 0000 0000 0000

                      --                --     --                                BSR<4:0>                                 ---0 0000 ---0 0000

                      Working Register                                                                                    0000 0000 uuuu uuuu

                      --         Write Buffer for the upper 7 bits of the Program Counter                                 -000 0000 -000 0000

                      GIE               PEIE   TMR0IE              INTE   IOCIE            TMR0IF                  IOCIF  0000 000x 0000 000u

30Ch --               Unimplemented                                                                                       --         --

30Dh --               Unimplemented                                                                                       --         --

30Eh --               Unimplemented                                                                                       --         --

30Fh --               Unimplemented                                                                                       --         --

310h --               Unimplemented                                                                                       --         --

311h CCPR3L           Capture/Compare/PWM Register 3 (LSB)                                                                xxxx xxxx uuuu uuuu

312h CCPR3H           Capture/Compare/PWM Register 3 (MSB)                                                                xxxx xxxx uuuu uuuu

313h CCP3CON          --                --     DC3B1        DC3B0 CCP3M3 CCP3M2 CCP3M1                             CCP3M0 --00 0000 --00 0000

314h --               Unimplemented                                                                                       --         --

315h --               Unimplemented                                                                                       --         --

316h --               Unimplemented                                                                                       --         --

317h --               Unimplemented                                                                                       --         --

318h CCPR4L           Capture/Compare/PWM Register 4 (LSB)                                                                xxxx xxxx uuuu uuuu

319h CCPR4H           Capture/Compare/PWM Register 4 (MSB)                                                                xxxx xxxx uuuu uuuu

31Ah CCP4CON          --                --     DC4B1        DC4B0 CCP4M3 CCP4M2 CCP4M1                             CCP4M0 --00 0000 --00 0000

31Bh --               Unimplemented                                                                                       --         --

31Ch --               Unimplemented                                                                                       --         --

31Dh --               Unimplemented                                                                                       --         --

31Eh --               Unimplemented                                                                                       --         --

31Fh --               Unimplemented                                                                                       --         --

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

2010 Microchip Technology Inc.                       Preliminary                                                  DS41440A-page 39
PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 7                 Addressing this location uses contents of FSR0H/FSR0L to address data memory                          xxxx xxxx xxxx xxxx
380h(1) INDF0            (not a physical register)

381h(1) INDF1            Addressing this location uses contents of FSR1H/FSR1L to address data memory                          xxxx xxxx xxxx xxxx
                         (not a physical register)

382h(1)       PCL        Program Counter (PC) Least Significant Byte                                                           0000 0000 0000 0000
383h(1)       STATUS
384h(1)       FSR0L      --                --     --                  TO     PD                Z             DC         C      ---1 1000 ---q quuu
385h(1)       FSR0H                                                                                         INTF      IOCIF
386h(1)       FSR1L      Indirect Data Memory Address 0 Low Pointer                                                            0000 0000 uuuu uuuu
387h(1)       FSR1H
388h(1)       BSR        Indirect Data Memory Address 0 High Pointer                                                           0000 0000 0000 0000
389h(1)       WREG
38Ah(1)       PCLATH     Indirect Data Memory Address 1 Low Pointer                                                            0000 0000 uuuu uuuu
38Bh(1)       INTCON
                         Indirect Data Memory Address 1 High Pointer                                                           0000 0000 0000 0000

                         --                --     --                                  BSR<4:0>                                 ---0 0000 ---0 0000

                         Working Register                                                                                      0000 0000 uuuu uuuu

                         --          Write Buffer for the upper 7 bits of the Program Counter                                  -000 0000 -000 0000

                         GIE               PEIE   TMR0IE              INTE   IOCIE             TMR0IF                          0000 000x 0000 000u

38Ch          INLVLA           --          --     INLVLA5  INLVLA4           INLVLA3           INLVLA2      INLVLA1   INLVLA0  --00 0100 --00 0100
38Dh          INLVLB(2)   INLVLB7     INLVLB6     INLVLB5  INLVLB4               --                --           --        --
38Eh          INLVLC     INLVLC7(2)  INLVLC6(2)   INLVLC5  INLVLC4                                                             0000 ---- 0000 ----
                                                                             INLVLC3           INLVLC2      INLVLC1   INLVLC0
                                                                                                                               11xx xxxx 11xx xxxx

38Fh --                  Unimplemented                                                                                         --            --

390h --                  Unimplemented                                                                                         --            --

391h IOCAP               --                --     IOCAP5 IOCAP4 IOCAP3 IOCAP2 IOCAP1 IOCAP0                                    --00 0000 --00 0000

392h IOCAN               --                --     IOCAN5 IOCAN4 IOCAN3 IOCAN2 IOCAN1 IOCAN0                                    --00 0000 --00 0000

393h          IOCAF          --             --    IOCAF5   IOCAF4            IOCAF3            IOCAF2       IOCAF1    IOCAF0   --00 0000 --00 0000
394h          IOCBP(2)   IOCBP7         IOCBP6    IOCBP5   IOCBP4                --               --           --        --
395h          IOCBN(2)   IOCBN7         IOCBN6    IOCBN5   IOCBN4                --               --           --        --    0000 ---- 0000 ----
396h          IOCBF(2)   IOCBF7         IOCBF6    IOCBF5   IOCBF4                --               --           --        --
                                                                                                                               0000 ---- 0000 ----

                                                                                                                               0000 ---- 0000 ----

397h --                  Unimplemented                                                                                         --            --

398h --                  Unimplemented                                                                                         --            --

399h --                  Unimplemented                                                                                         --            --

39Ah CLKRCON             CLKREN CLKROE CLKRSLR                        CLKRDC<1:0>                       CLKRDIV<2:0>           0011 0000 0011 0000

39Bh --                  Unimplemented                                                                                         --            --

39Ch MDCON               MDEN           MDOE      MDSLR MDOPOL MDOUT                           --           --        MDBIT    0010 ---0 0010 ---0

39Dh MDSRC               MDMSODIS          --     --                  --                       MDMS<3:0>                       x--- xxxx u--- uuuu

39Eh MDCARL              MDCLODIS MDCLPOL MDCLSYNC                    --                       MDCL<3:0>                       xxx- xxxx uuu- uuuu

39Fh MDCARH              MDCHODIS MDCHPOL MDCHSYNC                    --                       MDCH<3:0>                       xxx- xxxx uuu- uuuu

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

DS41440A-page 40                                         Preliminary                                         2010 Microchip Technology Inc.
                                                                          PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 8              Addressing this location uses contents of FSR0H/FSR0L to address data memory                        xxxx xxxx xxxx xxxx
400h(1) INDF0         (not a physical register)

401h(1) INDF1         Addressing this location uses contents of FSR1H/FSR1L to address data memory                        xxxx xxxx xxxx xxxx
                      (not a physical register)

402h(1)       PCL     Program Counter (PC) Least Significant Byte                                                         0000 0000 0000 0000
403h(1)       STATUS
404h(1)       FSR0L   --                --     --                  TO     PD               Z                DC     C      ---1 1000 ---q quuu
405h(1)       FSR0H
406h(1)       FSR1L   Indirect Data Memory Address 0 Low Pointer                                                          0000 0000 uuuu uuuu
407h(1)       FSR1H
408h(1)       BSR     Indirect Data Memory Address 0 High Pointer                                                         0000 0000 0000 0000
409h(1)       WREG
40Ah(1)       PCLATH  Indirect Data Memory Address 1 Low Pointer                                                          0000 0000 uuuu uuuu
40Bh(1)       INTCON
                      Indirect Data Memory Address 1 High Pointer                                                         0000 0000 0000 0000

                      --                --     --                                BSR<4:0>                                 ---0 0000 ---0 0000

                      Working Register                                                                                    0000 0000 uuuu uuuu

                      --         Write Buffer for the upper 7 bits of the Program Counter                                 -000 0000 -000 0000

                      GIE               PEIE   TMR0IE              INTE   IOCIE            TMR0IF           INTF   IOCIF  0000 000x 0000 000u

40Ch --               Unimplemented                                                                                       --         --

40Dh --               Unimplemented                                                                                       --         --

40Eh --               Unimplemented                                                                                       --         --

40Fh --               Unimplemented                                                                                       --         --

410h --               Unimplemented                                                                                       --         --

411h --               Unimplemented                                                                                       --         --

412h --               Unimplemented                                                                                       --         --

413h --               Unimplemented                                                                                       --         --

414h --               Unimplemented                                                                                       --         --

415h TMR4             Timer4 Module Register                                                                              0000 0000 0000 0000

416h PR4              Timer4 Period Register                                                                              1111 1111 1111 1111

417h T4CON            --                       T4OUTPS<3:0>                                TMR4ON           T4CKPS<1:0>   -000 0000 -000 0000
                                                                                                            T6CKPS<1:0>
418h --               Unimplemented                                                                                       --         --

419h --               Unimplemented                                                                                       --         --

41Ah --               Unimplemented                                                                                       --         --

41Bh --               Unimplemented                                                                                       --         --

41Ch TMR6             Timer6 Module Register                                                                              0000 0000 0000 0000

41Dh PR6              Timer6 Period Register                                                                              1111 1111 1111 1111

41Eh T6CON            --                       T6OUTPS<3:0>                                TMR6ON                         -000 0000 -000 0000

41Fh --               Unimplemented                                                                                       --         --

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

2010 Microchip Technology Inc.                       Preliminary                                                  DS41440A-page 41
PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

Banks 9-30

x00h/ INDF0       Addressing this location uses contents of FSR0H/FSR0L to address data memory                            xxxx xxxx xxxx xxxx
x80h(1)           (not a physical register)

x00h/ INDF1       Addressing this location uses contents of FSR1H/FSR1L to address data memory                            xxxx xxxx xxxx xxxx
x81h(1)           (not a physical register)

x02h/ PCL         Program Counter (PC) Least Significant Byte                                                             0000 0000 0000 0000
x82h(1)

x03h/ STATUS      --                --     --                  TO     PD           Z                         DC    C      ---1 1000 ---q quuu
x83h(1)                                                                                                     INTF

x04h/ FSR0L       Indirect Data Memory Address 0 Low Pointer                                                              0000 0000 uuuu uuuu
x84h(1)

x05h/ FSR0H       Indirect Data Memory Address 0 High Pointer                                                             0000 0000 0000 0000
x85h(1)

x06h/ FSR1L       Indirect Data Memory Address 1 Low Pointer                                                              0000 0000 uuuu uuuu
x86h(1)

x07h/ FSR1H       Indirect Data Memory Address 1 High Pointer                                                             0000 0000 0000 0000
x87h(1)

x08h/ BSR         --                --     --                                BSR<4:0>                                     ---0 0000 ---0 0000
x88h(1)

x09h/ WREG        Working Register                                                                                        0000 0000 uuuu uuuu
x89h(1)

x0Ah/ PCLATH      --     Write Buffer for the upper 7 bits of the Program Counter                                         -000 0000 -000 0000
x8Ah(1)

x0Bh/ INTCON      GIE               PEIE   TMR0IE              INTE   IOCIE        TMR0IF                          IOCIF 0000 000x 0000 000u
x8Bh(1)

x0Ch/ --          Unimplemented                                                                                           --                 --
x8Ch

  --
x1Fh/
x9Fh

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

DS41440A-page 42                                  Preliminary                                                2010 Microchip Technology Inc.
                                                                          PIC16F/LF1825/1829

TABLE 3-8: SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

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

  Bank 31             Addressing this location uses contents of FSR0H/FSR0L to address data memory                        xxxx xxxx xxxx xxxx
F80h(1) INDF0         (not a physical register)

F81h(1) INDF1         Addressing this location uses contents of FSR1H/FSR1L to address data memory                        xxxx xxxx xxxx xxxx
                      (not a physical register)

F82h(1)       PCL     Program Counter (PC) Least Significant Byte                                                         0000 0000 0000 0000
F83h(1)       STATUS
F84h(1)       FSR0L   --                --     --                  TO     PD               Z                 DC      C    ---1 1000 ---q quuu
F85h(1)       FSR0H                                                                                         INTF   IOCIF
F86h(1)       FSR1L   Indirect Data Memory Address 0 Low Pointer                                                          0000 0000 uuuu uuuu
F87h(1)       FSR1H
F88h(1)       BSR     Indirect Data Memory Address 0 High Pointer                                                         0000 0000 0000 0000
F89h(1)       WREG
F8Ah(1)       PCLATH  Indirect Data Memory Address 1 Low Pointer                                                          0000 0000 uuuu uuuu
F8Bh(1)       INTCON
                      Indirect Data Memory Address 1 High Pointer                                                         0000 0000 0000 0000

                      --                --     --                                BSR<4:0>                                 ---0 0000 ---0 0000

                      Working Register                                                                                    0000 0000 uuuu uuuu

                      --         Write Buffer for the upper 7 bits of the Program Counter                                 -000 0000 -000 0000

                      GIE               PEIE   TMR0IE              INTE   IOCIE            TMR0IF                         0000 000x 0000 000u

F8Ch --               Unimplemented                                                                                       --         --
  --

FE3h

FE4h STATUS_          --                --     --                  --        --            Z_SHAD DC_SHAD          C_SHAD ---- -xxx ---- -uuu

              SHAD

FE5h WREG_            Working Register Shadow                                                                             0000 0000 uuuu uuuu

              SHAD

FE6h BSR_             --                --     --        Bank Select Register Shadow                                      ---x xxxx ---u uuuu

              SHAD

FE7h PCLATH_          --         Program Counter Latch High Register Shadow                                               -xxx xxxx uuuu uuuu

              SHAD

FE8h FSR0L_           Indirect Data Memory Address 0 Low Pointer Shadow                                                   xxxx xxxx uuuu uuuu

              SHAD

FE9h FSR0H_           Indirect Data Memory Address 0 High Pointer Shadow                                                  xxxx xxxx uuuu uuuu

              SHAD

FEAh FSR1L_           Indirect Data Memory Address 1 Low Pointer Shadow                                                   xxxx xxxx uuuu uuuu

              SHAD

FEBh FSR1H_           Indirect Data Memory Address 1 High Pointer Shadow                                                  xxxx xxxx uuuu uuuu

              SHAD

FECh --               Unimplemented                                                                                       --         --

FEDh STKPTR           --                --     --        Current Stack pointer                                            ---1 1111 ---1 1111

FEEh TOSL             Top-of-Stack Low byte                                                                               xxxx xxxx uuuu uuuu

FEFh TOSH             --         Top-of-Stack High byte                                                                   -xxx xxxx -uuu uuuu

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
                   Shaded locations are unimplemented, read as `0'.
Note 1:
          2:  These registers can be addressed from any bank.
          3:
              PIC16F/LF1829 only.

              PIC16F/LF1825 only.

2010 Microchip Technology Inc.                          Preliminary                                               DS41440A-page 43
PIC16F/LF1825/1829

3.3 PCL and PCLATH                                                3.3.3 COMPUTED FUNCTION CALLS

The Program Counter (PC) is 15 bits wide. The low byte            A computed function CALL allows programs to maintain
comes from the PCL register, which is a readable and              tables of functions and provide another way to execute
writable register. The high byte (PC<14:8>) is not directly       state machines or look-up tables. When performing a
readable or writable and comes from PCLATH. On any                table read using a computed function CALL, care
Reset, the PC is cleared. Figure 3-3 shows the five               should be exercised if the table location crosses a PCL
situations for the loading of the PC.                             memory boundary (each 256-byte block).

FIGURE 3-3:            LOADING OF PC IN                           If using the CALL instruction, the PCH<2:0> and PCL
                       DIFFERENT SITUATIONS                       registers are loaded with the operand of the CALL
                                                                  instruction. PCH<6:3> is loaded with PCLATH<6:3>.
               14 PCH          PCL    0 Instruction with
           PC                                                     The CALLW instruction enables computed calls by com-
                                                     PCL as       bining PCLATH and W to form the destination address.
                67                                                A computed CALLW is accomplished by loading the W
PCLATH                                          Destination       register with the desired address and executing CALLW.
                                                                  The PCL register is loaded with the value of W and
                       0       8                                  PCH is loaded with PCLATH.

                          ALU Result                              3.3.4 BRANCHING

               14 PCH          PCL    0                           The branching instructions add an offset to the PC.
          PC                                                      This allows relocatable code and code that crosses
                                             GOTO, CALL           page boundaries. There are two forms of branching,
                64                                                BRW and BRA. The PC will have incremented to fetch
PCLATH                 0 11                                       the next instruction in both cases. When using either
                         OPCODE <10:0>                            branching instruction, a PCL memory boundary may be
               14 PCH                                             crossed.
          PC                       PCL 0
                                                                  If using BRW, load the W register with the desired
                67                        CALLW                   unsigned address and execute BRW. The entire PC will
PCLATH                                                            be loaded with the address PC + 1 + W.
                       0       8
                                                                  If using BRA, the entire PC will be loaded with PC + 1 +,
                                  W                               the signed value of the operand of the BRA instruction.

    14 PCH                     PCL 0
PC
                                                             BRW

                        15

                       PC + W

    14 PCH                     PCL 0
PC
                                                             BRA

                          15

             PC + OPCODE <8:0>

3.3.1 MODIFYING PCL

Executing any instruction with the PCL register as the
destination simultaneously causes the Program Coun-
ter PC<14:8> bits (PCH) to be replaced by the contents
of the PCLATH register. This allows the entire contents
of the program counter to be changed by writing the
desired upper 7 bits to the PCLATH register. When the
lower 8 bits are written to the PCL register, all 15 bits of
the program counter will change to the values con-
tained in the PCLATH register and those being written
to the PCL register.

3.3.2 COMPUTED GOTO

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

DS41440A-page 44                                                  Preliminary   2010 Microchip Technology Inc.
                                                                 PIC16F/LF1825/1829

3.4 Stack                                                        3.4.1 ACCESSING THE STACK

All devices have a 16-level x 15-bit wide hardware               The stack is available through the TOSH, TOSL and
stack (refer to Figures 3-4 through 3-7). The stack              STKPTR registers. STKPTR is the current value of the
space is not part of either program or data space. The           Stack Pointer. TOSH:TOSL register pair points to the
PC is PUSHed onto the stack when CALL or CALLW                   TOP of the stack. Both registers are read/writable. TOS
instructions are executed or an interrupt causes a               is split into TOSH and TOSL due to the 15-bit size of the
branch. The stack is POPed in the event of a RETURN,             PC. To access the stack, adjust the value of STKPTR,
RETLW or a RETFIE instruction execution. PCLATH is               which will position TOSH:TOSL, then read/write to
not affected by a PUSH or POP operation.                         TOSH:TOSL. STKPTR is 5 bits to allow detection of
                                                                 overflow and underflow.
The stack operates as a circular buffer if the STVREN
bit is programmed to `0` (Configuration Word 2). This               Note: Care should be taken when modifying the
means that after the stack has been PUSHed sixteen                              STKPTR while interrupts are enabled.
times, the seventeenth PUSH overwrites the value that
was stored from the first PUSH. The eighteenth PUSH              During normal program operation, CALL, CALLW and
overwrites the second PUSH (and so on). The                      Interrupts will increment STKPTR while RETLW,
STKOVF and STKUNF flag bits will be set on an Over-              RETURN, and RETFIE will decrement STKPTR. At any
flow/Underflow, regardless of whether the Reset is               time STKPTR can be inspected to see how much stack
enabled.                                                         is left. The STKPTR always points at the currently used
                                                                 place on the stack. Therefore, a CALL or CALLW will
    Note 1: There are no instructions/mnemonics                  increment the STKPTR and then write the PC, and a
                called PUSH or POP. These are actions            return will unload the PC and then decrement STKPTR.
                that occur from the execution of the
                CALL, CALLW, RETURN, RETLW and                   Reference Figure 3-4 through Figure 3-7 for examples
                RETFIE instructions or the vectoring to          of accessing the stack.
                an interrupt address.

FIGURE 3-4:  ACCESSING THE STACK EXAMPLE 1

TOSH:TOSL                        0x0F                            STKPTR = 0x1F  Stack Reset Disabled
TOSH:TOSL                        0x0E                                           (STVREN = 0)
                                 0x0D
                                 0x0C                            Initial Stack Configuration:
                                 0x0B
                                 0x0A                            After Reset, the stack is empty. The
                                 0x09                            empty stack is initialized so the Stack
                                 0x08                            Pointer is pointing at 0x1F. If the Stack
                                 0x07                            Overflow/Underflow Reset is enabled, the
                                 0x06                            TOSH/TOSL registers will return `0'. If
                                 0x05                            the Stack Overflow/Underflow Reset is
                                 0x04                            disabled, the TOSH/TOSL registers will
                                 0x03                            return the contents of stack address 0x0F.
                                 0x02
                                 0x01                    0x0000  STKPTR = 0x1F  Stack Reset Enabled
                                 0x00                                           (STVREN = 1)
                                 0x1F

2010 Microchip Technology Inc.        Preliminary                              DS41440A-page 45
PIC16F/LF1825/1829

FIGURE 3-5:       ACCESSING THE STACK EXAMPLE 2

TOSH:TOSL         0x0F  Return Address           This figure shows the stack configuration
                  0x0E                           after the first CALL or a single interrupt.
                  0x0D                           If a RETURN instruction is executed, the
                  0x0C                           return address will be placed in the
                  0x0B                           Program Counter and the Stack Pointer
                  0x0A                           decremented to the empty state (0x1F).
                  0x09
                  0x08                           STKPTR = 0x00
                  0x07
                  0x06
                  0x05
                  0x04
                  0x03
                  0x02
                  0x01
                  0x00

FIGURE 3-6:       ACCESSING THE STACK EXAMPLE 3

TOSH:TOSL         0x0F  Return Address           After seven CALLs or six CALLs and an
                  0x0E  Return Address           interrupt, the stack looks like the figure
                  0x0D  Return Address           on the left. A series of RETURN instructions
                  0x0C  Return Address           will repeatedly place the return addresses
                  0x0B  Return Address           into the Program Counter and pop the stack.
                  0x0A  Return Address
                  0x09  Return Address           STKPTR = 0x06
                  0x08
                  0x07
                  0x06
                  0x05
                  0x04
                  0x03
                  0x02
                  0x01
                  0x00

DS41440A-page 46        Preliminary               2010 Microchip Technology Inc.
                                                             PIC16F/LF1825/1829

FIGURE 3-7:  ACCESSING THE STACK EXAMPLE 4

TOSH:TOSL                        0x0F  Return Address        When the stack is full, the next CALL or
                                 0x0E  Return Address        an interrupt will set the Stack Pointer to
                                 0x0D  Return Address        0x10. This is identical to address 0x00
                                 0x0C  Return Address        so the stack will wrap and overwrite the
                                 0x0B  Return Address        return address at 0x00. If the Stack
                                 0x0A  Return Address        Overflow/Underflow Reset is enabled, a
                                 0x09  Return Address        Reset will occur and location 0x00 will
                                 0x08  Return Address        not be overwritten.
                                 0x07  Return Address
                                 0x06  Return Address        STKPTR = 0x10
                                 0x05  Return Address
                                 0x04  Return Address
                                 0x03  Return Address
                                 0x02  Return Address
                                 0x01  Return Address
                                 0x00  Return Address

3.4.2 OVERFLOW/UNDERFLOW RESET

If the STVREN bit in Configuration Word 2 is
programmed to `1', the device will be reset if the stack
is PUSHed beyond the sixteenth level or POPed
beyond the first level, setting the appropriate bits
(STKOVF or STKUNF, respectively) in the PCON
register.

3.5 Indirect Addressing

The INDFn registers are not physical registers. Any
instruction that accesses an INDFn register actually
accesses the register at the address specified by the
File Select Registers (FSR). If the FSRn address
specifies one of the two INDFn registers, the read will
return `0' and the write will not occur (though Status bits
may be affected). The FSRn register value is created
by the pair FSRnH and FSRnL.

The FSR registers form a 16-bit address that allows an
addressing space with 65536 locations. These locations
are divided into three memory regions:

Traditional Data Memory
Linear Data Memory
Program Flash Memory

2010 Microchip Technology Inc.        Preliminary           DS41440A-page 47
PIC16F/LF1825/1829

FIGURE 3-8:       INDIRECT ADDRESSING
                                                        0x0000
                                                                    0x0000

                                                                 Traditional
                                                                Data Memory

                           0x0FFF                                0x0FFF
                           0x1000                               Reserved
                           0x1FFF
                           0x2000

                                                                    Linear
                                                                Data Memory

                    FSR    0x29AF                               Reserved
                  Address  0x29B0                               0x0000
                   Range
                           0x7FFF
                           0x8000

                                                                   Program
                                                                Flash Memory

                           0xFFFF                               0x7FFF

Note: Not all memory regions are completely implemented. Consult device memory tables for memory limits.

DS41440A-page 48           Preliminary                                         2010 Microchip Technology Inc.
                                                               PIC16F/LF1825/1829

3.5.1 TRADITIONAL DATA MEMORY

The traditional data memory is a region from FSR
address 0x000 to FSR address 0xFFF. The addresses
correspond to the absolute addresses of all SFR, GPR
and common registers.

FIGURE 3-9:  TRADITIONAL DATA MEMORY MAP

             Direct Addressing                                        Indirect Addressing

4 BSR 0 6    From Opcode 0                            7        FSRxH         07            FSRxL  0

                                                            0 00 0

Bank Select                       Location Select              Bank Select                 Location Select
                                                                    11111
                                         00000 00001 00010
                                 0x00

                                 0x7F                               Bank 31
                                         Bank 0 Bank 1 Bank 2

2010 Microchip Technology Inc.  Preliminary                                               DS41440A-page 49
PIC16F/LF1825/1829

3.5.2 LINEAR DATA MEMORY                                    3.5.3 PROGRAM FLASH MEMORY

The linear data memory is the region from FSR               To make constant data access easier, the entire
address 0x2000 to FSR address 0x29AF. This region is        program Flash memory is mapped to the upper half of
a virtual region that points back to the 80-byte blocks of  the FSR address space. When the MSB of FSRnH is
GPR memory in all the banks.                                set, the lower 15 bits are the address in program
                                                            memory which will be accessed through INDF. Only the
Unimplemented memory reads as 0x00. Use of the              lower 8 bits of each memory location is accessible via
linear data memory region allows buffers to be larger       INDF. Writing to the program Flash memory cannot be
than 80 bytes because incrementing the FSR beyond           accomplished via the FSR/INDF interface. All
one bank will go directly to the GPR memory of the next     instructions that access program Flash memory via the
bank.                                                       FSR/INDF interface will require one additional
                                                            instruction cycle to complete.
The 16 bytes of common memory are not included in
the linear data memory region.

FIGURE 3-10:      LINEAR DATA MEMORY                        FIGURE 3-11:     PROGRAM FLASH
                  MAP                                                        MEMORY MAP
                                                                7 FSRnH
                                                                1         07  FSRnL  0

7 FSRnH           07  FSRnL   0
0 01

                                                            Location Select   0x8000 0x0000

Location Select       0x2000  0x020

                              Bank 0                                                 Program
                              0x06F                                                  Flash
                              0x0A0                                                  Memory
                              Bank 1                                                 (low 8
                              0x0EF                                                  bits)
                              0x120

                              Bank 2
                              0x16F

                                    0xF20                                     0xFFFF 0x7FFF
                                   Bank 30
                      0x29AF 0xF6F

DS41440A-page 50                      Preliminary                             2010 Microchip Technology Inc.
                                                       PIC16F/LF1825/1829

4.0 DEVICE CONFIGURATION

Device Configuration consists of Configuration Word 1
and Configuration Word 2, Code Protection and Device
ID.

4.1 Configuration Words

There are several Configuration Word bits that allow
different oscillator and memory protection options.
These are implemented as Configuration Word 1 at
8007h and Configuration Word 2 at 8008h.

Note:  The DEBUG bit in Configuration Word 2 is
       managed automatically by device
       development tools including debuggers
       and programmers. For normal device
       operation, this bit should be maintained as
       a `1'.

2010 Microchip Technology Inc.  Preliminary           DS41440A-page 51
PIC16F/LF1825/1829

REGISTER 4-1:         CONFIGURATION WORD 1

       R/P-1/1        R/P-1/1     R/P-1/1             R/P-1/1   R/P-1/1  R/P-1/1                                         R/P-1/1
       FCMEN           IESO    CLKOUTEN              BOREN1    BOREN0     CPD                                               CP
bit 13                                                                                                                             bit 7

      R/P-1/1         R/P-1/1  R/P-1/1               R/P-1/1   R/P-1/1   R/P-1/1                                         R/P-1/1
      MCLRE           PWRTE    WDTE1                 WDTE0     FOSC2     FOSC1                                           FOSC0
bit 6
                                                                                                                                    bit 0

Legend:                        W = Writable bit                U = Unimplemented bit, read as `1'
R = Readable bit               x = Bit is unknown              -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged           `0' = Bit is cleared            P = Programmable bit
`1' = Bit is set

bit 13         FCMEN: Fail-Safe Clock Monitor Enable bit
bit 12         1 = Fail-Safe Clock Monitor is enabled
bit 11         0 = Fail-Safe Clock Monitor is disabled

bit 10-9       IESO: Internal External Switchover bit
bit 8          1 = Internal/External Switchover mode is enabled
bit 7          0 = Internal/External Switchover mode is disabled
bit 6
               CLKOUTEN: Clock Out Enable bit
bit 5          If FOSC configuration bits are set to LP, XT, HS modes:
bit 4-3
                    This bit is ignored, CLKOUT function is disabled. Oscillator function on the CLKOUT pin.
               All other FOSC modes:

                     1 = CLKOUT function is disabled. I/O function on the CLKOUT pin.
                     0 = CLKOUT function is enabled on the CLKOUT pin
               BOREN<1:0>: Brown-out Reset Enable bits(1)
               11 = BOR enabled
               10 = BOR enabled during operation and disabled in Sleep
               01 = BOR controlled by SBOREN bit of the BORCON register
               00 = BOR 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: RA3/MCLR/VPP Pin Function Select bit
               If LVP bit = 1:

                    This bit is ignored.
               If LVP bit = 0:

                    1 = MCLR/VPP pin function is MCLR; Weak pull-up enabled.
                    0 = MCLR/VPP pin function is digital input; MCLR internally disabled; Weak pull-up under control of

                          WPUA register.

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

               WDTE<1:0>: Watchdog Timer Enable bit
               11 = WDT enabled
               10 = WDT enabled while running and disabled in Sleep
               01 = WDT controlled by the SWDTEN bit in the WDTCON register
               00 = WDT disabled

Note 1:      Enabling Brown-out Reset does not automatically enable Power-up Timer.
         2:  The entire data EEPROM will be erased when the code protection is turned off during an erase.
         3:  The entire program memory will be erased when the code protection is turned off.

DS41440A-page 52                           Preliminary                    2010 Microchip Technology Inc.
                                 PIC16F/LF1825/1829

REGISTER 4-1: CONFIGURATION WORD 1 (CONTINUED)

bit 2-0      FOSC<2:0>: Oscillator Selection bits

             111 = ECH: External Clock, High-Power mode (4-32 MHz): device clock supplied to CLKIN pin
             110 = ECM: External Clock, Medium-Power mode (0.5-4 MHz): device clock supplied to CLKIN pin
             101 = ECL: External Clock, Low-Power mode (0-0.5 MHz): device clock supplied to CLKIN pin
             100 = INTOSC oscillator: I/O function on CLKIN pin
             011 = EXTRC oscillator: External RC circuit connected to CLKIN pin
             010 = HS oscillator: High-speed crystal/resonator connected between OSC1 and OSC2 pins
             001 = XT oscillator: Crystal/resonator connected between OSC1 and OSC2 pins
             000 = LP oscillator: Low-power crystal connected between OSC1 and OSC2 pins

Note 1:      Enabling Brown-out Reset does not automatically enable Power-up Timer.
         2:  The entire data EEPROM will be erased when the code protection is turned off during an erase.
         3:  The entire program memory will be erased when the code protection is turned off.

2010 Microchip Technology Inc.  Preliminary                                                                DS41440A-page 53
PIC16F/LF1825/1829

REGISTER 4-2: CONFIGURATION WORD 2

R/P-1/1               R/P-1/1   U-1                   R/P-1/1   R/P-1/1  R/P-1/1                  U-1
                                                      BORV     STVREN    PLLEN                    --
         LVP          DEBUG(2)  --
                                                                                                          bit 7
bit 13

         U-1          U-1       R-1                   U-1      U-1       R/P-1/1                  R/P-1/1
          --
bit 6                 --        Reserved              --       --        WRT1                     WRT0

                                                                                                           bit 0

Legend:                         W = Writable bit               U = Unimplemented bit, read as `1'
R = Readable bit                x = Bit is unknown             -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged            `0' = Bit is cleared           P = Programmable bit
`1' = Bit is set

bit 13        LVP: Low-Voltage Programming Enable bit(1)
              1 = Low-voltage programming enabled
bit 12        0 = High-voltage on MCLR must be used for programming

bit 11        DEBUG: In-Circuit Debugger Mode bit
bit 10        1 = In-Circuit Debugger disabled, ICSPCLK and ICSPDAT are general purpose I/O pins
              0 = In-Circuit Debugger enabled, ICSPCLK and ICSPDAT are dedicated to the debugger
bit 9
              Unimplemented: Read as `1'
bit 8
              BORV: Brown-out Reset Voltage Selection bit
bit 7-5       1 = Brown-out Reset voltage set to 1.9V (typical)
bit 4         0 = Brown-out Reset voltage set to 2.5V (typical)
bit 3-2
bit 1-0       STVREN: Stack Overflow/Underflow Reset Enable bit
              1 = Stack Overflow or Underflow will cause a Reset
              0 = Stack Overflow or Underflow will not cause a Reset

              PLLEN: PLL Enable bit
              1 = 4xPLL enabled
              0 = 4xPLL disabled

              Unimplemented: Read as `1'

              Reserved: This location should be programmed to a `1'.

              Unimplemented: Read as `1'

              WRT<1:0>: Flash Memory Self-Write Protection bits
              11 = Write protection off
              10 = 000h to 1FFh write-protected, 200h to 7FFh may be modified by EECON control
              01 = 000h to 3FFh write-protected, 400h to 7FFh may be modified by EECON control
              00 = 000h to 7FFh write-protected, no addresses may be modified by EECON control

Note 1:       The LVP bit cannot be programmed to `0' when Programming mode is entered via LVP.
         2:   The DEBUG bit in Configuration Word is managed automatically by device development tools including debuggers and
              programmers. For normal device operation, this bit should be maintained as a `1'.

DS41440A-page 54                          Preliminary                     2010 Microchip Technology Inc.
                                                          PIC16F/LF1825/1829

4.2 Code Protection

Code protection allows the device to be protected from
unauthorized access. Program memory protection and
data EEPROM protection are controlled independently.
Internal access to the program memory and data
EEPROM are unaffected by any code protection
setting.

4.2.1 PROGRAM MEMORY PROTECTION

The entire program memory space is protected from
external reads and writes by the CP bit in Configuration
Word 1. When CP = 0, external reads and writes of
program memory are inhibited and a read will return all
`0's. The CPU can continue to read program memory,
regardless of the protection bit settings. Writing the
program memory is dependent upon the write
protection setting. See Section 4.3 "Write
Protection" for more information.

4.2.2 DATA EEPROM PROTECTION

The entire data EEPROM is protected from external
reads and writes by the CPD bit. When CPD = 0,
external reads and writes of data EEPROM are
inhibited. The CPU can continue to read and write data
EEPROM regardless of the protection bit settings.

4.3 Write Protection

Write protection allows the device to be protected from
unintended self-writes. Applications, such as
bootloader software, can be protected while allowing
other regions of the program memory to be modified.

The WRT<1:0> bits in Configuration Word 2 define the
size of the program memory block that is protected.

4.4 User ID

Four memory locations (8000h-8003h) are designated as
ID locations where the user can store checksum or other
code identification numbers. These locations are
readable and writable during normal execution. See
Section 11.5 "User ID, Device ID and Configuration
Word Access" for more information on accessing these
memory locations. For more information on checksum
calculation, see the "PIC16F/LF182X/PIC12F/LF1822
Memory Programming Specification" (DS41390).

2010 Microchip Technology Inc.  Preliminary              DS41440A-page 55
PIC16F/LF1825/1829

4.5 Device ID and Revision ID

The memory location 8006h is where the Device ID and
Revision ID are stored. The upper nine bits hold the
Device ID. The lower five bits hold the Revision ID. See
Section 11.5 "User ID, Device ID and Configuration
Word Access" for more information on accessing
these memory locations.

Development tools, such as device programmers and
debuggers, may be used to read the Device ID and
Revision ID.

REGISTER 4-3:      DEVICEID: DEVICE ID REGISTER(1)

           R         R                      R                       R     R     R                             R
        DEV8       DEV7                   DEV6                    DEV5  DEV4  DEV3                          DEV2
bit 13
                                                                                                                     bit 7
          R          R                      R                       R     R     R
       DEV1        DEV0                   REV4                    REV3  REV2  REV1                            R
bit 6                                                                                                       REV0

                                                                                                                     bit 0

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

bit 13-5           DEV<8:0>: Device ID bits
bit 4-0            100111011 = PIC16F1825
                   100111111 = PIC16F1829
                   101000011 = PIC16LF1825
                   101000111 = PIC16LF1829

                   REV<4:0>: Revision ID bits

                   These bits are used to identify the revision.

Note 1: This location cannot be written.

DS41440A-page 56                                Preliminary                    2010 Microchip Technology Inc.
5.0 OSCILLATOR MODULE (WITH                                PIC16F/LF1825/1829
         FAIL-SAFE CLOCK MONITOR)
                                                           The oscillator module can be configured in one of eight
5.1 Overview                                               clock modes.

The oscillator module has a wide variety of clock          1. ECL External Clock Low Power mode
sources and selection features that allow it to be used          (0 MHz to 0.5 MHz)
in a wide range of applications while maximizing perfor-
mance and minimizing power consumption. Figure 5-1         2. ECM External Clock Medium Power mode
illustrates a block diagram of the oscillator module.            (0.5 MHz to 4 MHz)

Clock sources can be supplied from external oscillators,   3. ECH External Clock High Power mode
quartz crystal resonators, ceramic resonators and                (4 MHz to 32 MHz)
Resistor-Capacitor (RC) circuits. In addition, the system
clock source can be supplied from one of two internal      4. LP 32 kHz Low-Power Crystal mode.
oscillators and PLL circuits, with a choice of speeds      5. XT Medium Gain Crystal or Ceramic Resonator
selectable via software. Additional clock features
include:                                                         Oscillator mode (up to 4 MHz)
                                                           6. HS High Gain Crystal or Ceramic Resonator
Selectable system clock source between external
   or internal sources via software.                             mode (4 MHz to 20 MHz)
                                                           7. RC External Resistor-Capacitor (RC).
Two-Speed Start-up mode, which minimizes                 8. INTOSC Internal oscillator (31 kHz to 32 MHz).
   latency between external oscillator start-up and
   code execution.                                         Clock Source modes are selected by the FOSC<2:0>
                                                           bits in the Configuration Word 1. The FOSC bits
Fail-Safe Clock Monitor (FSCM) designed to               determine the type of oscillator that will be used when
   detect a failure of the external clock source (LP,      the device is first powered.
   XT, HS, EC or RC modes) and switch
   automatically to the internal oscillator.               The EC clock mode relies on an external logic level
                                                           signal as the device clock source. The LP, XT and HS
Oscillator Start-up Timer (OST) ensures stability        clock modes require an external crystal or resonator to
   of crystal oscillator sources                           be connected to the device. Each mode is optimized for
                                                           a different frequency range. The RC clock mode
                                                           requires an external resistor and capacitor to set the
                                                           oscillator frequency.

                                                           The INTOSC internal oscillator block produces low,
                                                           medium, and high frequency clock sources, designated
                                                           LFINTOSC, MFINTOSC, and HFINTOSC. (see
                                                           Internal Oscillator Block, Figure 5-1). A wide selection
                                                           of device clock frequencies may be derived from these
                                                           three clock sources.

2010 Microchip Technology Inc.  Preliminary               DS41440A-page 57
PIC16F/LF1825/1829

FIGURE 5-1:       SIMPLIFIED PIC MCU CLOCK SOURCE BLOCK DIAGRAM

  OSC2       External                                                               LP, XT, HS, RC, EC
  OSC1       Oscillator
T1OSO                                                                      4 x PLL                                                    Sleep
T1OSI                        Sleep              FOSC<2:0> = 100
                                                                                                                               T1OSC         CPU and
             Oscillator Timer1            Postscaler                                                                                         Peripherals
                                                                             MUX
                              T1OSCEN                                                                                       MUXIRCF<3:0>Internal Oscillator
                              Enable
                              Oscillator           16 MHz                                                                                               Clock
                                                     8 MHz                                                                                             Control
                   Internal                          4 MHz                                                                                 FOSC<2:0> SCS<1:0>
                  Oscillator                         2 MHz                                                                                           Clock Source Option
                                                     1 MHz                                                                                           for other modules
                    Block
                                                   500 kHz
                  HFPLL         16 MHz             250 kHz
                              (HFINTOSC)           125 kHz
                  500 kHz                         62.5 kHz
                  Source         500 kHz         31.25 kHz
                              (MFINTOSC)
                  31 kHz                             31 kHz
                  Source

                              31 kHz (LFINTOSC)                                       WDT, PWRT, Fail-Safe Clock Monitor
                                                                                    Two-Speed Start-up and other modules

DS41440A-page 58                                 Preliminary                                                                    2010 Microchip Technology Inc.
                                                           PIC16F/LF1825/1829

5.2 Clock Source Types                                     The Oscillator Start-up Timer (OST) is disabled when
                                                           EC mode is selected. Therefore, there is no delay in
Clock sources can be classified as external or internal.   operation after a Power-on Reset (POR) or wake-up
                                                           from Sleep. Because the PIC MCU design is fully
External clock sources rely on external circuitry for the  static, stopping the external clock input will have the
clock source to function. Examples are: oscillator mod-    effect of halting the device while leaving all data intact.
ules (EC mode), quartz crystal resonators or ceramic       Upon restarting the external clock, the device will
resonators (LP, XT and HS modes) and Resis-                resume operation as if no time had elapsed.
tor-Capacitor (RC) mode circuits.
                                                           FIGURE 5-2:          EXTERNAL CLOCK (EC)
Internal clock sources are contained internally within                          MODE OPERATION
the oscillator module. The internal oscillator block has
two internal oscillators and a dedicated phase-locked      Clock from           OSC1/CLKIN
loop (HFPLL) that are used to generate three internal      Ext. System                   PIC MCU
system clock sources: the 16 MHz High-Frequency
Internal Oscillator (HFINTOSC), 500 kHZ (MFINTOSC)            FOSC/4 or I/O(1)  OSC2/CLKOUT
and the 31 kHz Low-Frequency Internal Oscillator
(LFINTOSC).                                                  Note 1: Output depends upon CLKOUTEN bit of the
                                                                             Configuration Word 1.
The system clock can be selected between external or
internal clock sources via the System Clock Select         5.2.1.2 LP, XT, HS Modes
(SCS) bits in the OSCCON register. See Section 5.3
"Clock Switching" for additional information.              The LP, XT and HS modes support the use of quartz
                                                           crystal resonators or ceramic resonators connected to
5.2.1 EXTERNAL CLOCK SOURCES                               OSC1 and OSC2 (Figure 5-3). The three modes select
                                                           a low, medium or high gain setting of the internal
An external clock source can be used as the device         inverter-amplifier to support various resonator types
system clock by performing one of the following            and speed.
actions:
                                                           LP Oscillator mode selects the lowest gain setting of the
Program the FOSC<2:0> bits in the Configuration          internal inverter-amplifier. LP mode current consumption
   Word 1 to select an external clock source that will     is the least of the three modes. This mode is designed to
   be used as the default system clock upon a              drive only 32.768 kHz tuning-fork type crystals (watch
   device Reset.                                           crystals).

Write the SCS<1:0> bits in the OSCCON register           XT Oscillator mode selects the intermediate gain
   to switch the system clock source to:                   setting of the internal inverter-amplifier. XT mode
   - Timer1 Oscillator during run-time, or                 current consumption is the medium of the three modes.
   - An external clock source determined by the            This mode is best suited to drive resonators with a
      value of the FOSC bits.                              medium drive level specification.

See Section 5.3 "Clock Switching"for more informa-         HS Oscillator mode selects the highest gain setting of the
tion.                                                      internal inverter-amplifier. HS mode current consumption
                                                           is the highest of the three modes. This mode is best
5.2.1.1 EC Mode                                            suited for resonators that require a high drive setting.

The External Clock (EC) mode allows an externally          Figure 5-3 and Figure 5-4 show typical circuits for
generated logic level signal to be the system clock        quartz crystal and ceramic resonators, respectively.
source. When operating in this mode, an external clock
source is connected to the OSC1 input.
OSC2/CLKOUT is available for general purpose I/O or
CLKOUT. Figure 5-2 shows the pin connections for EC
mode.

EC mode has 3 power modes to select from through
Configuration Word 1:

High-power, 4-32 MHz (FOSC = 111)
Medium power, 0.5-4 MHz (FOSC = 110)
Low-power, 0-0.5 MHz (FOSC = 101)

2010 Microchip Technology Inc.  Preliminary                                    DS41440A-page 59
PIC16F/LF1825/1829

FIGURE 5-3:          QUARTZ CRYSTAL                         FIGURE 5-4:         CERAMIC RESONATOR
                     OPERATION (LP, XT OR                                       OPERATION
                     HS MODE)                                                   (XT OR HS MODE)

                     PIC MCU                                                   PIC MCU

                     OSC1/CLKIN                                                 OSC1/CLKIN
                          RF(2)
C1                                To Internal               C1                               To Internal
                                  Logic
            Quartz                                                                           Logic
            Crystal               Sleep
                                                                         RP(3)  RF(2)        Sleep

C2           RS(1)   OSC2/CLKOUT                                                OSC2/CLKOUT

                                                            C2 Ceramic RS(1)
                                                                  Resonator

Note 1: A series resistor (RS) may be required for          Note 1: A series resistor (RS) may be required for
              quartz crystals with low drive level.                       ceramic resonators with low drive level.

        2: The value of RF varies with the Oscillator mode           2: The value of RF varies with the Oscillator mode
              selected (typically between 2 M to 10 M.                    selected (typically between 2 M to 10 M.

Note 1: Quartz crystal characteristics vary                          3: An additional parallel feedback resistor (RP)
            according to type, package and                                may be required for proper ceramic resonator
            manufacturer. The user should consult the                     operation.
            manufacturer data sheets for specifications
            and recommended application.                    5.2.1.3 Oscillator Start-up Timer (OST)

       2: Always verify oscillator performance over         If the oscillator module is configured for LP, XT or HS
            the VDD and temperature range that is           modes, the Oscillator Start-up Timer (OST) counts
            expected for the application.                   1024 oscillations from OSC1. This occurs following a
                                                            Power-on Reset (POR) and when the Power-up Timer
       3: For oscillator design assistance, reference       (PWRT) has expired (if configured), or a wake-up from
            the following Microchip Application Notes:      Sleep. During this time, the program counter does not
                                                            increment and program execution is suspended. The
             AN826, "Crystal Oscillator Basics and         OST ensures that the oscillator circuit, using a quartz
             Crystal Selection for rfPIC and PIC          crystal resonator or ceramic resonator, has started and
             Devices" (DS00826)                             is providing a stable system clock to the oscillator
                                                            module.
             AN849, "Basic PIC Oscillator Design"
             (DS00849)                                      In order to minimize latency between external oscillator
                                                            start-up and code execution, the Two-Speed Clock
             AN943, "Practical PIC Oscillator             Start-up mode can be selected (see Section 5.4
             Analysis and Design" (DS00943)                 "Two-Speed Clock Start-up Mode").

             AN949, "Making Your Oscillator Work"          5.2.1.4 4X PLL
             (DS00949)
                                                            The oscillator module contains a 4X PLL that can be
                                                            used with both external and internal clock sources to
                                                            provide a system clock source. The input frequency for
                                                            the 4X PLL must fall within specifications. See the PLL
                                                            Clock Timing Specifications in Section 30.0
                                                            "Electrical Specifications".

                                                            The 4X PLL may be enabled for use by one of two
                                                            methods:

                                                            1. Program the PLLEN bit in Configuration Word 2
                                                                  to a `1'.

                                                            2. Write the SPLLEN bit in the OSCCON register to
                                                                  a `1'. If the PLLEN bit in Configuration Word 2 is
                                                                  programmed to a `1', then the value of SPLLEN
                                                                  is ignored.

DS41440A-page 60                               Preliminary                       2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

5.2.1.5 TIMER1 Oscillator                                   5.2.1.6 External RC Mode

The Timer1 Oscillator is a separate crystal oscillator      The external Resistor-Capacitor (RC) modes support
that is associated with the Timer1 peripheral. It is opti-  the use of an external RC circuit. This allows the
mized for timekeeping operations with a 32.768 kHz          designer maximum flexibility in frequency choice while
crystal connected between the T1OSO and T1OSI               keeping costs to a minimum when clock accuracy is not
device pins.                                                required.

The Timer1 Oscillator can be used as an alternate sys-      The RC circuit connects to OSC1. OSC2/CLKOUT is
tem clock source and can be selected during run-time        available for general purpose I/O or CLKOUT. The
using clock switching. Refer to Section 5.3 "Clock          function of the OSC2/CLKOUT pin is determined by the
Switching" for more information.                            state of the CLKOUTEN bit in Configuration Word 1.

FIGURE 5-5:  QUARTZ CRYSTAL                                 Figure 5-6 shows the external RC mode connections.
             OPERATION (TIMER1
             OSCILLATOR)                                    FIGURE 5-6:       EXTERNAL RC MODES

                                 PIC MCU                          VDD                    PIC MCU
                                                            REXT              OSC1/CLKIN
                                T1OSI                                                               Internal
                                                             CEXT             OSC2/CLKOUT            Clock
C1                                                            VSS
                                           To Internal      FOSC/4 or I/O(1)
            32.768 kHz                     Logic
            Quartz
            Crystal

C2           T1OSO

Note 1: Quartz crystal characteristics vary                 Recommended values: 10 k  REXT  100 k, <3V
            according to type, package and                                                   3 k  REXT  100 k, 3-5V
            manufacturer. The user should consult the                                        CEXT > 20 pF, 2-5V
            manufacturer data sheets for specifications
            and recommended application.                    Note 1: Output depends upon CLKOUTEN bit of the
                                                                            Configuration Word 1.
       2: Always verify oscillator performance over
            the VDD and temperature range that is           The RC oscillator frequency is a function of the supply
            expected for the application.                   voltage, the resistor (REXT) and capacitor (CEXT) values
                                                            and the operating temperature. Other factors affecting
       3: For oscillator design assistance, reference       the oscillator frequency are:
            the following Microchip Application Notes:
                                                             threshold voltage variation
             AN826, "Crystal Oscillator Basics and          component tolerances
             Crystal Selection for rfPIC and PIC          packaging variations in capacitance
             Devices" (DS00826)
                                                            The user also needs to take into account variation due
             AN849, "Basic PIC Oscillator Design"         to tolerance of external RC components used.
             (DS00849)

             AN943, "Practical PIC Oscillator
             Analysis and Design" (DS00943)

             AN949, "Making Your Oscillator Work"
             (DS00949)

             TB097, "Interfacing a Micro Crystal
             MS1V-T1K 32.768 kHz Tuning Fork
             Crystal to a PIC16F690/SS" (DS91097)

             AN1288, "Design Practices for
             Low-Power External Oscillators"
             (DS01288)

2010 Microchip Technology Inc.                         Preliminary           DS41440A-page 61
PIC16F/LF1825/1829                                        5.2.2.1 HFINTOSC

5.2.2 INTERNAL CLOCK SOURCES                              The High-Frequency Internal Oscillator (HFINTOSC) is
                                                          a factory calibrated 16 MHz internal clock source. The
The device may be configured to use the internal oscil-   frequency of the HFINTOSC can be altered via
lator block as the system clock by performing one of the  software using the OSCTUNE register (Register 5-3).
following actions:
                                                          The output of the HFINTOSC connects to a postscaler
Program the FOSC<2:0> bits in Configuration             and multiplexer (see Figure 5-1). One of nine
   Word 1 to select the INTOSC clock source, which        frequencies derived from the HFINTOSC can be
   will be used as the default system clock upon a        selected via software using the IRCF<3:0> bits of the
   device Reset.                                          OSCCON register. See Section 5.2.2.7 "Internal
                                                          Oscillator Clock Switch Timing" for more information.
Write the SCS<1:0> bits in the OSCCON register
   to switch the system clock source to the internal      The HFINTOSC is enabled by:
   oscillator during run-time. See Section 5.3
   "Clock Switching"for more information.                  Configure the IRCF<3:0> bits of the OSCCON
                                                             register for the desired HF frequency, and
In INTOSC mode, OSC1/CLKIN is available for general
purpose I/O. OSC2/CLKOUT is available for general          FOSC<2:0> = 100, or
purpose I/O or CLKOUT.                                     Set the System Clock Source (SCS) bits of the

The function of the OSC2/CLKOUT pin is determined            OSCCON register to `1x'.
by the state of the CLKOUTEN bit in Configuration
Word 1.                                                   The High Frequency Internal Oscillator Ready bit
                                                          (HFIOFR) of the OSCSTAT register indicates when the
The internal oscillator block has two independent         HFINTOSC is running and can be utilized.
oscillators and a dedicated Phase-Locked Loop,
HFPLL that can produce one of three internal system       The High Frequency Internal Oscillator Status Locked
clock sources.                                            bit (HFIOFL) of the OSCSTAT register indicates when
                                                          the HFINTOSC is running within 2% of its final value.
1. The HFINTOSC (High-Frequency Internal
      Oscillator) is factory calibrated and operates at   The High Frequency Internal Oscillator Status Stable
      16 MHz. The HFINTOSC source is generated            bit (HFIOFS) of the OSCSTAT register indicates when
      from the 500 kHz MFINTOSC source and the            the HFINTOSC is running within 0.5% of its final value.
      dedicated Phase-Locked Loop, HFPLL. The
      frequency of the HFINTOSC can be                    5.2.2.2 MFINTOSC
      user-adjusted via software using the OSCTUNE
      register (Register 5-3).                            The Medium-Frequency Internal Oscillator
                                                          (MFINTOSC) is a factory calibrated 500 kHz internal
2. The MFINTOSC (Medium-Frequency Internal                clock source. The frequency of the MFINTOSC can be
      Oscillator) is factory calibrated and operates at   altered via software using the OSCTUNE register
      500 kHz. The frequency of the MFINTOSC can          (Register 5-3).
      be user-adjusted via software using the
      OSCTUNE register (Register 5-3).                    The output of the MFINTOSC connects to a postscaler
                                                          and multiplexer (see Figure 5-1). One of nine
3. The LFINTOSC (Low-Frequency Internal                   frequencies derived from the MFINTOSC can be
      Oscillator) is uncalibrated and operates at         selected via software using the IRCF<3:0> bits of the
      31 kHz.                                             OSCCON register. See Section 5.2.2.7 "Internal
                                                          Oscillator Clock Switch Timing" for more information.

                                                          The MFINTOSC is enabled by:

                                                          Configure the IRCF<3:0> bits of the OSCCON
                                                             register for the desired HF frequency, and

                                                          FOSC<2:0> = 100, or
                                                          Set the System Clock Source (SCS) bits of the

                                                             OSCCON register to `1x'

                                                          The Medium Frequency Internal Oscillator Ready bit
                                                          (MFIOFR) of the OSCSTAT register indicates when the
                                                          MFINTOSC is running and can be utilized.

DS41440A-page 62  Preliminary                              2010 Microchip Technology Inc.
                                                          PIC16F/LF1825/1829

5.2.2.3  Internal Oscillator Frequency                    5.2.2.5  Internal Oscillator Frequency
         Adjustment                                                Selection

The 500 kHz internal oscillator is factory calibrated.    The system clock speed can be selected via software
This internal oscillator can be adjusted in software by   using the Internal Oscillator Frequency Select bits
writing to the OSCTUNE register (Register 5-3). Since     IRCF<3:0> of the OSCCON register.
the HFINTOSC and MFINTOSC clock sources are
derived from the 500 kHz internal oscillator a change in  The output of the 16 MHz HFINTOSC and 31 kHz
the OSCTUNE register value will apply to both.            LFINTOSC connects to a postscaler and multiplexer
                                                          (see Figure 5-1). The Internal Oscillator Frequency
The default value of the OSCTUNE register is `0'. The     Select bits IRCF<3:0> of the OSCCON register select
value is a 6-bit two's complement number. A value of      the frequency output of the internal oscillators. One of
1Fh will provide an adjustment to the maximum             the following frequencies can be selected via software:
frequency. A value of 20h will provide an adjustment to
the minimum frequency.                                     32 MHz (requires 4X PLL)
                                                          16 MHz
When the OSCTUNE register is modified, the oscillator      8 MHz
frequency will begin shifting to the new frequency. Code   4 MHz
execution continues during this shift. There is no         2 MHz
indication that the shift has occurred.                   1 MHz
                                                          500 kHz (Default after Reset)
OSCTUNE does not affect the LFINTOSC frequency.            250 kHz
Operation of features that depend on the LFINTOSC          125 kHz
clock source frequency, such as the Power-up Timer         62.5 kHz
(PWRT), Watchdog Timer (WDT), Fail-Safe Clock             31.25 kHz
Monitor (FSCM) and peripherals, are not affected by the    31 kHz (LFINTOSC)
change in frequency.

5.2.2.4 LFINTOSC                                          Note:    Following any Reset, the IRCF<3:0> bits
                                                                   of the OSCCON register are set to `0111'
The Low-Frequency Internal Oscillator (LFINTOSC) is                and the frequency selection is set to
an uncalibrated 31 kHz internal clock source.                      500 kHz. The user can modify the IRCF
                                                                   bits to select a different frequency.
The output of the LFINTOSC connects to a postscaler
and multiplexer (see Figure 5-1). Select 31 kHz, via      The IRCF<3:0> bits of the OSCCON register allow
software, using the IRCF<3:0> bits of the OSCCON          duplicate selections for some frequencies. These dupli-
register. See Section 5.2.2.7 "Internal Oscillator        cate choices can offer system design trade-offs. Lower
Clock Switch Timing" for more information. The            power consumption can be obtained when changing
LFINTOSC is also the frequency for the Power-up Timer     oscillator sources for a given frequency. Faster transi-
(PWRT), Watchdog Timer (WDT) and Fail-Safe Clock          tion times can be obtained between frequency changes
Monitor (FSCM).                                           that use the same oscillator source.

The LFINTOSC is enabled by selecting 31 kHz
(IRCF<3:0> bits of the OSCCON register = 000) as the
system clock source (SCS bits of the OSCCON
register = 1x), or when any of the following are
enabled:

Configure the IRCF<3:0> bits of the OSCCON
   register for the desired LF frequency, and

FOSC<2:0> = 100, or
Set the System Clock Source (SCS) bits of the

   OSCCON register to `1x'

Peripherals that use the LFINTOSC are:

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

The Low Frequency Internal Oscillator Ready bit
(LFIOFR) of the OSCSTAT register indicates when the
LFINTOSC is running and can be utilized.

2010 Microchip Technology Inc.         Preliminary                                        DS41440A-page 63
PIC16F/LF1825/1829

5.2.2.6  32 MHz Internal Oscillator                       5.2.2.7  Internal Oscillator Clock Switch
         Frequency Selection                                       Timing

The Internal Oscillator Block can be used with the 4X     When switching between the HFINTOSC, MFINTOSC
PLL associated with the External Oscillator Block to      and the LFINTOSC, the new oscillator may already be
produce a 32 MHz internal system clock source. The        shut down to save power (see Figure 5-7). If this is the
following settings are required to use the 32 MHz inter-  case, there is a delay after the IRCF<3:0> bits of the
nal clock source:                                         OSCCON register are modified before the frequency
                                                          selection takes place. The OSCSTAT register will
The FOSC bits in Configuration Word 1 must be           reflect the current active status of the HFINTOSC,
   set to use the INTOSC source as the device sys-        MFINTOSC and LFINTOSC oscillators. The sequence
   tem clock (FOSC<2:0> = 100).                           of a frequency selection is as follows:

The SCS bits in the OSCCON register must be             1. IRCF<3:0> bits of the OSCCON register are
   cleared to use the clock determined by                       modified.
   FOSC<2:0> in Configuration Word 1
   (SCS<1:0> = 00).                                       2. If the new clock is shut down, a clock start-up
                                                                delay is started.
The IRCF bits in the OSCCON register must be
   set to the 8 MHz HFINTOSC set to use                   3. Clock switch circuitry waits for a falling edge of
   (IRCF<3:0> = 1110).                                          the current clock.

The SPLLEN bit in the OSCCON register must be           4. The current clock is held low and the clock
   set to enable the 4xPLL, or the PLLEN bit of the             switch circuitry waits for a rising edge in the new
   Configuration Word 2 must be programmed to a                 clock.
   `1'.
                                                          5. The new clock is now active.
Note:    When using the PLLEN bit of the
         Configuration Word 2, the 4xPLL cannot           6. The OSCSTAT register is updated as required.
         be disabled by software and the 8 MHz
         HFINTOSC option will no longer be                7. Clock switch is complete.
         available.
                                                          See Figure 5-7 for more details.

The 4xPLL is not available for use with the internal      If the internal oscillator speed is switched between two
oscillator when the SCS bits of the OSCCON register       clocks of the same source, there is no start-up delay
are set to `1x'. The SCS bits must be set to `00' to use  before the new frequency is selected. Clock switching
the 4xPLL with the internal oscillator.                   time delays are shown in Table 5-1.

                                                          Start-up delay specifications are located in the
                                                          oscillator tables of Section 30.0 "Electrical
                                                          Specifications"

DS41440A-page 64                     Preliminary                    2010 Microchip Technology Inc.
                                                                PIC16F/LF1825/1829

FIGURE 5-7:   INTERNAL OSCILLATOR SWITCH TIMING

HFINTOSC/ LFINTOSC (FSCM and WDT disabled)
MFINTOSC

HFINTOSC/                        Start-up Time     2-cycle Sync            Running
MFINTOSC

LFINTOSC

IRCF <3:0>    0                                 0

System Clock

HFINTOSC/ LFINTOSC (Either FSCM or WDT enabled)
MFINTOSC

HFINTOSC/                                                    2-cycle Sync  Running
MFINTOSC

LFINTOSC

IRCF <3:0>                       0                           0

System Clock

LFINTOSC HFINTOSC/MFINTOSC

LFINTOSC                        Start-up Time 2-cycle Sync     LFINTOSC turns off unless WDT or FSCM is enabled
                                                                                                Running
HFINTOSC/
MFINTOSC      =0                                0
IRCF <3:0>

System Clock

2010 Microchip Technology Inc.     Preliminary                                     DS41440A-page 65
PIC16F/LF1825/1829

5.3 Clock Switching                                         5.3.3 TIMER1 OSCILLATOR

The system clock source can be switched between             The Timer1 Oscillator is a separate crystal oscillator
external and internal clock sources via software using      associated with the Timer1 peripheral. It is optimized
the System Clock Select (SCS) bits of the OSCCON            for timekeeping operations with a 32.768 kHz crystal
register. The following clock sources can be selected       connected between the T1OSO and T1OSI device
using the SCS bits:                                         pins.

Default system oscillator determined by FOSC              The Timer1 oscillator is enabled using the T1OSCEN
   bits in Configuration Word 1                             control bit in the T1CON register. See Section 21.0
                                                            "Timer1 Module with Gate Control" for more
Timer1 32 kHz crystal oscillator                          information about the Timer1 peripheral.
Internal Oscillator Block (INTOSC)

5.3.1  SYSTEM CLOCK SELECT (SCS)                            5.3.4  TIMER1 OSCILLATOR READY
       BITS                                                        (T1OSCR) BIT

The System Clock Select (SCS) bits of the OSCCON            The user must ensure that the Timer1 Oscillator is
register selects the system clock source that is used for   ready to be used before it is selected as a system clock
the CPU and peripherals.                                    source. The Timer1 Oscillator Ready (T1OSCR) bit of
                                                            the OSCSTAT register indicates whether the Timer1
When the SCS bits of the OSCCON register = 00,            oscillator is ready to be used. After the T1OSCR bit is
   the system clock source is determined by value of        set, the SCS bits can be configured to select the Timer1
   the FOSC<2:0> bits in the Configuration Word 1.          oscillator.

When the SCS bits of the OSCCON register = 01,
   the system clock source is the Timer1 oscillator.

When the SCS bits of the OSCCON register = 1x,
   the system clock source is chosen by the internal
   oscillator frequency selected by the IRCF<3:0>
   bits of the OSCCON register. After a Reset, the
   SCS bits of the OSCCON register are 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 bits of the OSCCON register. The
       user can monitor the OSTS bit of the
       OSCSTAT register to determine the current
       system clock source.

When switching between clock sources, a delay is
required to allow the new clock to stabilize. These oscil-
lator delays are shown in Table 5-1.

5.3.2  OSCILLATOR START-UP TIME-OUT
       STATUS (OSTS) BIT

The Oscillator Start-up Time-out Status (OSTS) bit of
the OSCSTAT register indicates whether the system
clock is running from the external clock source, as
defined by the FOSC<2:0> bits in the Configuration
Word 1, or from the internal clock source. In particular,
OSTS indicates that the Oscillator Start-up Timer
(OST) has timed out for LP, XT or HS modes. The OST
does not reflect the status of the Timer1 Oscillator.

DS41440A-page 66                  Preliminary                       2010 Microchip Technology Inc.
                                                          PIC16F/LF1825/1829

5.4 Two-Speed Clock Start-up Mode                         5.4.1  TWO-SPEED START-UP MODE
                                                                 CONFIGURATION
Two-Speed Start-up mode provides additional power
savings by minimizing the latency between external        Two-Speed Start-up mode is configured by the
oscillator start-up and code execution. In applications   following settings:
that make heavy use of the Sleep mode, Two-Speed
Start-up will remove the external oscillator start-up      IESO (of the Configuration Word 1) = 1; Inter-
time from the time spent awake and can reduce the            nal/External Switchover bit (Two-Speed Start-up
overall power consumption of the device. This mode           mode enabled).
allows the application to wake-up from Sleep, perform
a few instructions using the INTOSC internal oscillator    SCS (of the OSCCON register) = 00.
block as the clock source and go back to Sleep without    FOSC<2:0> bits in the Configuration Word 1
waiting for the external oscillator to become stable.
                                                             configured for LP, XT or HS mode.
Two-Speed Start-up provides benefits when the oscil-
lator module is configured for LP, XT or HS modes.        Two-Speed Start-up mode is entered after:
The Oscillator Start-up Timer (OST) is enabled for
these modes and must count 1024 oscillations before       Power-on Reset (POR) and, if enabled, after
the oscillator can be used as the system clock source.       Power-up Timer (PWRT) has expired, or

If the oscillator module is configured for any mode       Wake-up from Sleep.
other than LP, XT or HS mode, then Two-Speed
Start-up is disabled. This is because the external clock
oscillator does not require any stabilization time after
POR or an exit from Sleep.

If the OST count reaches 1024 before the device
enters Sleep mode, the OSTS bit of the OSCSTAT reg-
ister is set and program execution switches to the
external oscillator. However, the system may never
operate from the external oscillator if the time spent
awake is very short.

Note:  Executing a SLEEP instruction will abort
       the oscillator start-up time and will cause
       the OSTS bit of the OSCSTAT register to
       remain clear.

TABLE 5-1: OSCILLATOR SWITCHING DELAYS

Switch From            Switch To          Frequency              Oscillator Delay

Sleep/POR              LFINTOSC(1)        31 kHz                 Oscillator Warm-up Delay (TWARM)
                       MFINTOSC(1)        31.25 kHz-500 kHz
Sleep/POR              HFINTOSC(1)        31.25 kHz-16 MHz       2 cycles
LFINTOSC               EC, RC(1)          DC 32 MHz            1 cycle of each
Sleep/POR              EC, RC(1)          DC 32 MHz            1024 Clock Cycles (OST)

Any clock source       Timer1 Oscillator  32 kHz-20 MHz          2 s (approx.)
Any clock source       LP, XT, HS(1)                             1 cycle of each
Any clock source       MFINTOSC(1)        31.25 kHz-500 kHz      1024 Clock Cycles (OST)
PLL inactive           HFINTOSC(1)        31.25 kHz-16 MHz       2 ms (approx.)
Note 1: PLL inactive.  LFINTOSC(1)        31 kHz
                                          32 kHz
                       Timer1 Oscillator  16-32 MHz

                       PLL active

2010 Microchip Technology Inc.           Preliminary            DS41440A-page 67
PIC16F/LF1825/1829

5.4.2  TWO-SPEED START-UP                               5.4.3  CHECKING TWO-SPEED CLOCK
       SEQUENCE                                                STATUS

1. Wake-up from Power-on Reset or Sleep.                Checking the state of the OSTS bit of the OSCSTAT
                                                        register will confirm if the microcontroller is running
2. Instructions begin execution by the internal         from the external clock source, as defined by the
      oscillator at the frequency set in the IRCF<3:0>  FOSC<2:0> bits in the Configuration Word 1, or the
      bits of the OSCCON register.                      internal oscillator.

3. OST enabled to count 1024 clock cycles.

4. OST timed out, wait for falling edge of the
      internal oscillator.

5. OSTS is set.
6. System clock held low until the next falling edge

      of new clock (LP, XT or HS mode).
7. System clock is switched to external clock

      source.

FIGURE 5-8:       TWO-SPEED START-UP

       INTOSC

                        TOST

       OSC1 0 1 1022 1023

       OSC2

Program Counter PC - N        PC                               PC + 1

System Clock

DS41440A-page 68                  Preliminary                           2010 Microchip Technology Inc.
                                                               PIC16F/LF1825/1829

5.5 Fail-Safe Clock Monitor                                    5.5.3 FAIL-SAFE CONDITION CLEARING

The Fail-Safe Clock Monitor (FSCM) allows the device           The Fail-Safe condition is cleared after a Reset,
to continue operating should the external oscillator fail.     executing a SLEEP instruction or changing the SCS bits
The FSCM can detect oscillator failure any time after          of the OSCCON register. When the SCS bits are
the Oscillator Start-up Timer (OST) has expired. The           changed, the OST is restarted. While the OST is
FSCM is enabled by setting the FCMEN bit in the                running, the device continues to operate from the
Configuration Word 1. The FSCM is applicable to all            INTOSC selected in OSCCON. When the OST times
external Oscillator modes (LP, XT, HS, EC, Timer1              out, the Fail-Safe condition is cleared and the device
Oscillator and RC).                                            will be operating from the external clock source. The
                                                               Fail-Safe condition must be cleared before the OSFIF
FIGURE 5-9:      FSCM BLOCK DIAGRAM                            flag can be cleared.

       External             Clock Monitor                      5.5.4 RESET OR WAKE-UP FROM SLEEP
         Clock                    Latch
                                SQ                             The FSCM is designed to detect an oscillator failure
                                                               after the Oscillator Start-up Timer (OST) has expired.
LFINTOSC          64            RQ                            The OST is used after waking up from Sleep and after
Oscillator                                                    any type of Reset. The OST is not used with the EC or
                                                       Clock   RC Clock modes so that the FSCM will be active as
31 kHz           488 Hz                               Failure  soon as the Reset or wake-up has completed. When
(~32 s)          (~2 ms)                           Detected    the FSCM is enabled, the Two-Speed Start-up is also
                                                               enabled. Therefore, the device will always be executing
                                                               code while the OST is operating.

Sample Clock                                                   Note:  Due to the wide range of oscillator start-up
                                                                      times, the Fail-Safe circuit is not active
5.5.1 FAIL-SAFE DETECTION                                             during oscillator start-up (i.e., after exiting
                                                                      Reset or Sleep). After an appropriate
The FSCM module detects a failed oscillator by                        amount of time, the user should check the
comparing the external oscillator to the FSCM sample                  Status bits in the OSCSTAT register to
clock. The sample clock is generated by dividing the                  verify the oscillator start-up and that the
LFINTOSC by 64. See Figure 5-9. Inside the fail                       system clock switchover has successfully
detector block is a latch. The external clock sets the                completed.
latch on each falling edge of the external clock. The
sample clock clears the latch on each rising edge of the
sample clock. A failure is detected when an entire
half-cycle of the sample clock elapses before the
external clock goes low.

5.5.2 FAIL-SAFE OPERATION

When the external clock fails, the FSCM switches the
device clock to an internal clock source and sets the bit
flag OSFIF of the PIR2 register. Setting this flag will
generate an interrupt if the OSFIE bit of the PIE2
register is also set. The device firmware can then take
steps to mitigate the problems that may arise from a
failed clock. The system clock will continue to be
sourced from the internal clock source until the device
firmware successfully restarts the external oscillator
and switches back to external operation.

The internal clock source chosen by the FSCM is
determined by the IRCF<3:0> bits of the OSCCON
register. This allows the internal oscillator to be
configured before a failure occurs.

2010 Microchip Technology Inc.  Preliminary                          DS41440A-page 69
PIC16F/LF1825/1829

FIGURE 5-10:                 FSCM TIMING DIAGRAM

         Sample Clock                             Oscillator
                                                  Failure
                  System
                     Clock                                                       Failure
                                                                              Detected
                   Output

Clock Monitor Output
                        (Q)

OSCFIF

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

DS41440A-page 70                   Preliminary           2010 Microchip Technology Inc.
                                                       PIC16F/LF1825/1829

5.6 Oscillator Control Registers

REGISTER 5-1: OSCCON: OSCILLATOR CONTROL REGISTER

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

SPLLEN                           IRCF<3:0>                          --   SCS<1:0>

bit 7                                                                                          bit 0

Legend:                          W = Writable bit      U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown    -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

bit 7    SPLLEN: Software PLL Enable bit
bit 6-3
         If PLLEN in Configuration Word 1 = 1:
bit 2    SPLLEN bit is ignored. 4x PLL is always enabled (subject to oscillator requirements)
bit 1-0
         If PLLEN in Configuration Word 1 = 0:
         1 = 4x PLL Is enabled
         0 = 4x PLL is disabled

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

         000x = 31 kHz LF
         0010 = 31.25 kHz MF
         0011 = 31.25 kHz HF(1)
         0100 = 62.5 kHz MF
         0101 = 125 kHz MF
         0110 = 250 kHz MF
         0111 = 500 kHz MF (default upon Reset)
         1000 = 125 kHz HF(1)
         1001 = 250 kHz HF(1)
         1010 = 500 kHz HF(1)
         1011 = 1 MHz HF
         1100 = 2 MHz HF
         1101 = 4 MHz HF
         1110 = 8 MHz or 32 MHz HF(see Section 5.2.2.1 "HFINTOSC")
         1111 = 16 MHz HF

         Unimplemented: Read as `0'

         SCS<1:0>: System Clock Select bits

         1x = Internal oscillator block
         01 = Timer1 oscillator
         00 = Clock determined by FOSC<2:0> in Configuration Word 1.

Note 1: Duplicate frequency derived from HFINTOSC.

2010 Microchip Technology Inc.                        Preliminary                DS41440A-page 71
PIC16F/LF1825/1829

REGISTER 5-2: OSCSTAT: OSCILLATOR STATUS REGISTER

     R-1/q        R-0/q  R-q/q          R-0/q               R-0/q     R-q/q   R-0/0                R-0/q
   T1OSCR         PLLR   OSTS          HFIOFR              HFIOFL   MFIOFR   LFIOFR               HFIOFS
bit 7
                                                                                                          bit 0

Legend:                  W = Writable bit            U = Unimplemented bit, read as `0'
R = Readable bit         x = Bit is unknown          -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged     `0' = Bit is cleared        q = Conditional
`1' = Bit is set

bit 7       T1OSCR: Timer1 Oscillator Ready bit

            If T1OSCEN = 1:
            1 = Timer1 oscillator is ready
            0 = Timer1 oscillator is not ready

            If T1OSCEN = 0:
            1 = Timer1 clock source is always ready

bit 6       PLLR 4x PLL Ready bit

            1 = 4x PLL is ready

            0 = 4x PLL is not ready

bit 5       OSTS: Oscillator Start-up Time-out Status bit

            1 = Running from the clock defined by the FOSC<2:0> bits of the Configuration Word 1
            0 = Running from an internal oscillator (FOSC<2:0> = 100)

bit 4       HFIOFR: High Frequency Internal Oscillator Ready bit

            1 = HFINTOSC is ready
            0 = HFINTOSC is not ready

bit 3       HFIOFL: High Frequency Internal Oscillator Locked bit

            1 = HFINTOSC is at least 2% accurate
            0 = HFINTOSC is not 2% accurate

bit 2       MFIOFR: Medium Frequency Internal Oscillator Ready bit

            1 = MFINTOSC is ready
            0 = MFINTOSC is not ready

bit 1       LFIOFR: Low Frequency Internal Oscillator Ready bit

            1 = LFINTOSC is ready
            0 = LFINTOSC is not ready

bit 0       HFIOFS: High Frequency Internal Oscillator Stable bit

            1 = HFINTOSC is at least 0.5% accurate
            0 = HFINTOSC is not 0.5% accurate

DS41440A-page 72                               Preliminary                    2010 Microchip Technology Inc.
                                                                 PIC16F/LF1825/1829

REGISTER 5-3: OSCTUNE: OSCILLATOR TUNING REGISTER

      U-0            U-0           R/W-0/0       R/W-0/0         R/W-0/0   R/W-0/0                       R/W-0/0       R/W-0/0
       --                                                                                                                      bit 0
bit 7                   --                                               TUN<5:0>

Legend:                          W = Writable bit                U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown              -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

bit 7-6          Unimplemented: Read as `0'
bit 5-0
                 TUN<5:0>: Frequency Tuning bits

                 011111 = Maximum frequency
                 011110 =
                 
                 
                 
                 000001 =
                 000000 = Oscillator module is running at the factory-calibrated frequency.
                 111111 =
                 
                 
                 
                 100000 = Minimum frequency

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

Name             Bit 7      Bit 6         Bit 5        Bit 4     Bit 3    Bit 2                   Bit 1      Bit 0     Register
                                                                                                                       on Page
OSCCON     SPLLEN                           IRCF<3:0>                      --                         SCS<1:0>
                                                                                                                           71
OSCSTAT    T1OSCR PLLR                    OSTS HFIOFR HFIOFL MFIOFR LFIOFR HFIOFS                                          72
                                                                                                                           73
OSCTUNE          --         --                                   TUN<5:0>                                                  95
                                                                                                                           99
PIE2            OSFIE       C2IE          C1IE         EEIE      BCL1IE    --                     --         CCP2IE       199

PIR2            OSFIF       C2IF          C1IF         EEIF      BCL1IF    --                     --         CCP2IF

T1CON            TMR1CS<1:0>              T1CKPS<1:0>            T1OSCEN T1SYNC                   --         TMR1ON

Legend: -- = unimplemented location, read as `0'. Shaded cells are not used by clock sources.

TABLE 5-3: SUMMARY OF CONFIGURATION WORD WITH CLOCK SOURCES

Name Bits Bit -/7                Bit -/6  Bit 13/5     Bit 12/4  Bit 11/3 Bit 10/2                Bit 9/1    Bit 8/0   Register
                                                                                                                       on Page
CONFIG1    13:8         --       --       FCMEN        IESO CLKOUTEN               BOREN<1:0>                     CPD
                                                                                                                           52
Legend:    7:0        CP    MCLRE PWRTE                       WDTE<1:0>                           FOSC<2:0>
Note 1:
           -- = unimplemented location, read as `0'. Shaded cells are not used by clock sources.
           PIC16F1825/1829 only.

2010 Microchip Technology Inc.                        Preliminary                                                DS41440A-page 73
PIC16F/LF1825/1829

NOTES:

DS41440A-page 74  Preliminary   2010 Microchip Technology Inc.
6.0 REFERENCE CLOCK MODULE                                     PIC16F/LF1825/1829

The reference clock module provides the ability to send        6.3 Conflicts with the CLKR Pin
a divided clock to the clock output pin of the device
(CLKR) and provide a secondary internal clock source           There are two cases when the reference clock output
to the modulator module. This module is available in all       signal cannot be output to the CLKR pin, if:
oscillator configurations and allows the user to select a       LP, XT or HS Oscillator mode is selected.
greater range of clock submultiples to drive external          CLKOUT function is enabled.
devices in the application. The reference clock module         Even if either of these cases are true, the module can
includes the following features:                               still be enabled and the reference clock signal may be
                                                               used in conjunction with the modulator module.
System clock is the source
Available in all oscillator configurations                   6.3.1 OSCILLATOR MODES
Programmable clock divider                                   If LP, XT or HS oscillator modes are selected, the
Output enable to a port pin                                  OSC2/CLKR pin must be used as an oscillator input pin
Selectable duty cycle                                        and the CLKR output cannot be enabled. See
Slew rate control                                            Section 5.2 "Clock Source Types" for more informa-
                                                               tion on different oscillator modes.
The reference clock module is controlled by the
CLKRCON register (Register 6-1) and is enabled when            6.3.2 CLKOUT FUNCTION
setting the CLKREN bit. To output the divided clock            The CLKOUT function has a higher priority than the ref-
signal to the CLKR port pin, the CLKROE bit must be            erence clock module. Therefore, if the CLKOUT func-
set. The CLKRDIV<2:0> bits enable the selection of 8           tion is enabled by the CLKOUTEN bit in Configuration
different clock divider options. The CLKRDC<1:0> bits          Word 1, FOSC/4 will always be output on the port pin.
can be used to modify the duty cycle of the output             Reference Section 4.0 "Device Configuration" for
clock(1). The CLKRSLR bit controls slew rate limiting.         more information.

    Note 1: If the base clock rate is selected without         6.4 Operation During Sleep
                a divider, the output clock will always
                have a duty cycle equal to that of the         As the reference clock module relies on the system
                source clock, unless a 0% duty cycle is        clock as its source, and the system clock is disabled in
                selected. If the clock divider is set to base  Sleep, the module does not function in Sleep, even if
                clock/2, then 25% and 75% duty cycle           an external clock source or the Timer1 clock source is
                accuracy will be dependent upon the            configured as the system clock. The module outputs
                source clock.                                  will remain in their current state until the device exits
                                                               Sleep.
For information on using the reference clock output
with the modulator module, see Section 23.0 "Data
Signal Modulator".

6.1 Slew Rate

The slew rate limitation on the output port pin can be
disabled. The slew rate limitation can be removed by
clearing the CLKRSLR bit in the CLKRCON register.

6.2 Effects of a Reset

Upon any device Reset, the reference clock module is
disabled. The user's firmware is responsible for
initializing the module before enabling the output. The
registers are reset to their default values.

2010 Microchip Technology Inc.  Preliminary                   DS41440A-page 75
PIC16F/LF1825/1829

REGISTER 6-1: CLKRCON: REFERENCE CLOCK CONTROL REGISTER

   R/W-0/0        R/W-0/0   R/W-1/1   R/W-1/1     R/W-0/0      R/W-0/0       R/W-0/0   R/W-0/0
   CLKREN         CLKROE   CLKRSLR   CLKRDC1     CLKRDC0      CLKRDIV2      CLKRDIV1  CLKRDIV0
bit 7
                                                                                                bit 0

Legend:                    W = Writable bit      U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown    -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged       `0' = Bit is cleared
`1' = Bit is set

bit 7       CLKREN: Reference Clock Module Enable bit
bit 6
bit 5       1 = Reference Clock module is enabled
bit 4-3     0 = Reference Clock module is disabled
            CLKROE: Reference Clock Output Enable bit(3)
bit 2-0
            1 = Reference Clock output is enabled on CLKR pin
            0 = Reference Clock output disabled on CLKR pin

            CLKRSLR: Reference Clock Slew Rate Control Limiting Enable bit

            1 = Slew Rate limiting is enabled
            0 = Slew Rate limiting is disabled

            CLKRDC<1:0>: Reference Clock Duty Cycle bits

            11 = Clock outputs duty cycle of 75%
            10 = Clock outputs duty cycle of 50%
            01 = Clock outputs duty cycle of 25%
            00 = Clock outputs duty cycle of 0%

            CLKRDIV<2:0> Reference Clock Divider bits

            111 = Base clock value divided by 128
            110 = Base clock value divided by 64
            101 = Base clock value divided by 32
            100 = Base clock value divided by 16
            011 = Base clock value divided by 8
            010 = Base clock value divided by 4
            001 = Base clock value divided by 2(1)
            000 = Base clock value(2)

Note 1: In this mode, the 25% and 75% duty cycle accuracy will be dependent on the source clock duty cycle.

       2: In this mode, the duty cycle will always be equal to the source clock duty cycle, unless a duty cycle of 0%
            is selected.

       3: To route CLKR to pin, CLKOUTEN of Configuration Word 1 = 1 is required. CLKOUTEN of Configuration
            Word 1 = 0 will result in FOSC/4. See Section 6.3 "Conflicts with the CLKR Pin" for details.

DS41440A-page 76                                 Preliminary                 2010 Microchip Technology Inc.
                                                              PIC16F/LF1825/1829

TABLE 6-1: SUMMARY OF REGISTERS ASSOCIATED WITH REFERENCE CLOCK SOURCES

Name           Bit 7      Bit 6           Bit 5     Bit 4     Bit 3  Bit 2       Bit 1                   Bit 0    Register
                                                                                                                  on Page

CLKRCON CLKREN CLKROE CLKRSLR CLKRDC1 CLKRDC0 CLKRDIV2 CLKRDIV1 CLKRDIV0                                          76

Legend: -- = unimplemented locations read as `0'. Shaded cells are not used by reference clock sources.

TABLE 6-2: SUMMARY OF CONFIGURATION WORD WITH REFERENCE CLOCK SOURCES

Name Bits Bit -/7                Bit -/6  Bit 13/5  Bit 12/4  Bit 11/3 Bit 10/2  Bit 9/1                 Bit 8/0  Register
                                                                                                                  on Page

CONFIG1  13:8         --         --       FCMEN     IESO CLKOUTEN BOREN1 BOREN0                          CPD      52

         7:0   CP         MCLRE PWRTE               WDTE1     WDTE0  FOSC2       FOSC1                   FOSC0

Legend: -- = unimplemented locations read as `0'. Shaded cells are not used by reference clock sources.

2010 Microchip Technology Inc.                     Preliminary                                          DS41440A-page 77
PIC16F/LF1825/1829

NOTES:

DS41440A-page 78  Preliminary   2010 Microchip Technology Inc.
                                                             PIC16F/LF1825/1829

7.0 RESETS

There are multiple ways to reset this device:

Power-on Reset (POR)
Brown-out Reset (BOR)
MCLR Reset
WDT Reset
RESET instruction
Stack Overflow
Stack Underflow
Programming mode exit

To allow VDD to stabilize, an optional power-up timer
can be enabled to extend the Reset time after a BOR
or POR event.

A simplified block diagram of the On-Chip Reset Circuit
is shown in Figure 7-1.

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

Programming Mode Exit
  RESET Instruction

       Stack Stack Overflow/Underflow Reset
      Pointer

MCLR                   External Reset
                          MCLRE

              Sleep
               WDT
             Time-out

                  Power-on                                           Device
                     Reset                                           Reset

VDD
                  Brown-out
                     Reset
                                      BOR
                                     Enable

                                                       Zero   PWRT
                                             LFINTOSC         64 ms

                                                             PWRTEN

2010 Microchip Technology Inc.              Preliminary             DS41440A-page 79
PIC16F/LF1825/1829

7.1 Power-on Reset (POR)                                 7.2 Brown-Out Reset (BOR)

The POR circuit holds the device in Reset until VDD has  The BOR circuit holds the device in Reset when VDD
reached an acceptable level for minimum operation.       reaches a selectable minimum level. Between the
Slow rising VDD, fast operating speeds or analog         POR and BOR, complete voltage range coverage for
performance may require greater than minimum VDD.        execution protection can be implemented.
The PWRT, BOR or MCLR features can be used to
extend the start-up period until all device operation    The Brown-out Reset module has four operating
conditions have been met.                                modes controlled by the BOREN<1:0> bits in Configu-
                                                         ration Word 1. The four operating modes are:
7.1.1 POWER-UP TIMER (PWRT)
                                                          BOR is always on
The Power-up Timer provides a nominal 64 ms time-         BOR is off when in Sleep
out on POR or Brown-out Reset.                            BOR is controlled by software
                                                          BOR is always off
The device is held in Reset as long as PWRT is active.
The PWRT delay allows additional time for the VDD to     Refer to Table 7-3 for more information.
rise to an acceptable level. The Power-up Timer is
enabled by clearing the PWRTE bit in Configuration       The Brown-out Reset voltage level is selectable by
Word 1.                                                  configuring the BORV bit in Configuration Word 2.

The Power-up Timer starts after the release of the POR   A VDD noise rejection filter prevents the BOR from trig-
and BOR.                                                 gering on small events. If VDD falls below VBOR for a
                                                         duration greater than parameter TBORDC, the device
For additional information, refer to Application Note    will reset. See Figure 7-3 for more information.
AN607, "Power-up Trouble Shooting" (DS00607).

TABLE 7-1: BOR OPERATING MODES

  BOREN           SBOREN  Device Mode                    BOR Mode        Device          Device
Config bits                                                        Operation upon  Operation upon
                                                                   release of POR   wake- up from

                                                                                          Sleep

BOR_ON (11)       X             X                        Active    Waits for BOR ready(1)

BOR_NSLEEP (10)   X             Awake                    Active    Waits for BOR ready
BOR_NSLEEP (10)
                  X             Sleep                    Disabled

BOR_SBOREN (01)   1             X                        Active    Begins immediately

BOR_SBOREN (01)   0             X                        Disabled  Begins immediately

BOR_OFF (00)      X             X                        Disabled  Begins immediately

Note 1: Even though this case specifically waits for the BOR, the BOR is already operating, so there is no delay in
            start-up.

7.2.1 BOR IS ALWAYS ON                                   7.2.3 BOR CONTROLLED BY SOFTWARE

When the BOREN bits of Configuration Word 1 are set      When the BOREN bits of Configuration Word 1 are set
to `11', the BOR is always on. The device start-up will  to `01', the BOR is controlled by the SBOREN bit of the
be delayed until the BOR is ready and VDD is higher      BORCON register. The device start-up is not delayed
than the BOR threshold.                                  by the BOR ready condition or the VDD level.

BOR protection is active during Sleep. The BOR does      BOR protection begins as soon as the BOR circuit is
not delay wake-up from Sleep.                            ready. The status of the BOR circuit is reflected in the
                                                         BORRDY bit of the BORCON register.
7.2.2 BOR IS OFF IN SLEEP
                                                         BOR protection is unchanged by Sleep.
When the BOREN bits of Configuration Word 1 are set
to `10', the BOR is on, except in Sleep. The device
start-up will be delayed until the BOR is ready and VDD
is higher than the BOR threshold.

BOR protection is not active during Sleep. The device
wake-up will be delayed until the BOR is ready.

DS41440A-page 80                Preliminary                         2010 Microchip Technology Inc.
                                                                      PIC16F/LF1825/1829

FIGURE 7-2:            BROWN-OUT READY

         SBOREN

         BORRDY                                        TBORRDY             BOR Protection Active

FIGURE 7-3:            BROWN-OUT SITUATIONS

             VDD                                                                                  VBOR
                                                                                                  VBOR
             Internal                                           TPWRT(1)                          VBOR
               Reset

                 VDD

             Internal                                       < TPWRT TPWRT(1)
               Reset

                 VDD

             Internal                                                 TPWRT(1)
               Reset

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

REGISTER 7-1: BORCON: BROWN-OUT RESET CONTROL REGISTER

R/W-1/u               U-0        U-0                   U-0            U-0       U-0               U-0     R-q/u
                                                                                                        BORRDY
SBOREN                 --        --                    --             --        --                --
                                                                                                                 bit 0
bit 7

Legend:                          W = Writable bit               U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown             -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared           q = Value depends on condition
`1' = Bit is set

bit 7        SBOREN: Software Brown-out Reset Enable bit
             If BOREN <1:0> in Configuration Word 1  01:
bit 6-1      SBOREN is read/write, but has no effect on the BOR.
bit 0        If BOREN <1:0> in Configuration Word 1 = 01:
             1 = BOR Enabled
             0 = BOR Disabled

             Unimplemented: Read as `0'

             BORRDY: Brown-out Reset Circuit Ready Status bit
             1 = The Brown-out Reset circuit is active
             0 = The Brown-out Reset circuit is inactive

2010 Microchip Technology Inc.                        Preliminary                                      DS41440A-page 81
PIC16F/LF1825/1829

7.3 MCLR                                                    7.7 Programming Mode Exit

The MCLR is an optional external input that can reset       Upon exit of Programming mode, the device will
the device. The MCLR function is controlled by the          behave as if a POR had just occurred.
MCLRE bit of Configuration Word 1 and the LVP bit of
Configuration Word 2 (Table 7-2).                           7.8 Power-Up Timer

TABLE 7-2:        MCLR CONFIGURATION                        The Power-up Timer optionally delays device execution
      MCLRE                                                 after a BOR or POR event. This timer is typically used to
                  LVP  MCLR                                 allow VDD to stabilize before allowing the device to start
           0                                                running.
           1      0    Disabled
           x                                                The Power-up Timer is controlled by the PWRTE bit of
                  0    Enabled                              Configuration Word 1.

                  1    Enabled                              7.9 Start-up Sequence

7.3.1 MCLR ENABLED                                          Upon the release of a POR or BOR, the following must
                                                            occur before the device will begin executing:
When MCLR is enabled and the pin is held low, the
device is held in Reset. The MCLR pin is connected to       1. Power-up Timer runs to completion (if enabled).
VDD through an internal weak pull-up.                       2. Oscillator start-up timer runs to completion (if

The device has a noise filter in the MCLR Reset path.             required for oscillator source).
The filter will detect and ignore small pulses.             3. MCLR must be released (if enabled).

   Note: A Reset does not drive the MCLR pin low.           The total time-out will vary based on oscillator configu-
                                                            ration and Power-up Timer configuration. See
7.3.2 MCLR DISABLED                                         Section 5.0 "Oscillator Module (With Fail-Safe
                                                            Clock Monitor)" for more information.
When MCLR is disabled, the pin functions as a general
purpose input and the internal weak pull-up is under        The Power-up Timer and oscillator start-up timer run
software control. See Section 12.2 "PORTA Regis-            independently of MCLR Reset. If MCLR is kept low long
ters" for more information.                                 enough, the Power-up Timer and oscillator start-up
                                                            timer will expire. Upon bringing MCLR high, the device
7.4 Watchdog Timer (WDT) Reset                              will begin execution immediately (see Figure 7-4). This
                                                            is useful for testing purposes or to synchronize more
The Watchdog Timer generates a Reset if the firmware        than one device operating in parallel.
does not issue a CLRWDT instruction within the time-out
period. The TO and PD bits in the STATUS register are
changed to indicate the WDT Reset. See Section 10.0
"Watchdog Timer" for more information.

7.5 RESET Instruction

A RESET instruction will cause a device Reset. The RI
bit in the PCON register will be set to `0'. See Table 7-4
for default conditions after a RESET instruction has
occurred.

7.6 Stack Overflow/Underflow Reset

The device can reset when the Stack Overflows or
Underflows. The STKOVF or STKUNF bits of the PCON
register indicate the Reset condition. These Resets are
enabled by setting the STVREN bit in Configuration Word
2. See Section 3.4.2 "Overflow/Underflow Reset" for
more information.

DS41440A-page 82                      Preliminary            2010 Microchip Technology Inc.
                                                   PIC16F/LF1825/1829

FIGURE 7-4:  RESET START-UP SEQUENCE

                          VDD               TPWRT
              Internal POR
         Power-Up Timer                            TMCLR
                                                                 TOST
                      MCLR
          Internal RESET

                          Oscillator Modes

         External Crystal
Oscillator Start-Up Timer

                   Oscillator
                         FOSC

     Internal Oscillator
                  Oscillator
                        FOSC

   External Clock (EC)
                      CLKIN

                        FOSC

2010 Microchip Technology Inc.             Preliminary                DS41440A-page 83
PIC16F/LF1825/1829

7.10 Determining the Cause of a Reset

Upon any Reset, multiple bits in the STATUS and
PCON register are updated to indicate the cause of the
Reset. Table 7-3 and Table 7-4 show the Reset condi-
tions of these registers.

TABLE 7-3: RESET STATUS BITS AND THEIR SIGNIFICANCE

STKOVF STKUNF RMCLR RI POR BOR TO PD                                         Condition

0           0     1           1     0  x                1 1 Power-on Reset

0           0     1           1     0  x                0 x Illegal, TO is set on POR

0           0     1           1     0  x                x 0 Illegal, PD is set on POR

0           0     1           1     u  0                1 1 Brown-out Reset

u           u     u           u     u  u                0 u WDT Reset

u           u     u           u     u  u                0 0 WDT Wake-up from Sleep

u           u     u           u     u  u                1 0 Interrupt Wake-up from Sleep

u           u     0           u     u  u                u u MCLR Reset during normal operation

u           u     0           u     u  u                1 0 MCLR Reset during Sleep

u           u     u           0     u  u                u u RESET Instruction Executed

1           u     u           u     u  u                u u Stack Overflow Reset (STVREN = 1)

u           1     u           u     u  u                u u Stack Underflow Reset (STVREN = 1)

TABLE 7-4:        RESET CONDITION FOR SPECIAL REGISTERS(2)

                  Condition                             Program    STATUS                PCON
                                                        Counter    Register             Register

Power-on Reset                                          0000h      ---1 1000           00-- 110x

MCLR Reset during normal operation                      0000h      ---u uuuu           uu-- 0uuu

MCLR Reset during Sleep                                 0000h      ---1 0uuu           uu-- 0uuu

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

WDT Wake-up from Sleep                                  PC + 1     ---0 0uuu           uu-- uuuu

Brown-out Reset                                          0000h     ---1 1uuu           00-- 11u0
Interrupt Wake-up from Sleep                            PC + 1(1)  ---1 0uuu           uu-- uuuu

RESET Instruction Executed                              0000h      ---u uuuu           uu-- u0uu

Stack Overflow Reset (STVREN = 1)                       0000h      ---u uuuu           1u-- uuuu

Stack Underflow Reset (STVREN = 1)                      0000h      ---u uuuu           u1-- uuuu

Legend: u = unchanged, x = unknown, - = unimplemented bit, reads as `0'.
Note 1: When the wake-up is due to an interrupt and Global Enable bit (GIE) is set, the return address is pushed on

            the stack and PC is loaded with the interrupt vector (0004h) after execution of PC + 1.
       2: If a Status bit is not implemented, that bit will be read as `0'.

DS41440A-page 84                       Preliminary                      2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

7.11 Power Control (PCON) Register

The Power Control (PCON) register contains flag bits
to differentiate between a:

Power-on Reset (POR)
Brown-out Reset (BOR)
Reset Instruction Reset (RI)
Stack Overflow Reset (STKOVF)
Stack Underflow Reset (STKUNF)
MCLR Reset (RMCLR)

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

REGISTER 7-2: PCON: POWER CONTROL REGISTER

R/W/HS-0/q R/W/HS-0/q            U-0                   U-0  R/W/HC-1/q R/W/HC-1/q R/W/HC-q/u R/W/HC-q/u

STKOVF            STKUNF         --                    --   RMCLR   RI  POR  BOR

bit 7                                                                        bit 0

Legend:

HC = Bit is cleared by hardware                             HS = Bit is set by hardware
                                                            U = Unimplemented bit, read as `0'
R = Readable bit                 W = Writable bit           -m/n = Value at POR and BOR/Value at all other Resets
                                                            q = Value depends on condition
u = Bit is unchanged             x = Bit is unknown

`1' = Bit is set                 `0' = Bit is cleared

bit 7             STKOVF: Stack Overflow Flag bit
bit 6
bit 5-4           1 = A Stack Overflow occurred
bit 3             0 = A Stack Overflow has not occurred or set to `0' by firmware
bit 2
bit 1             STKUNF: Stack Underflow Flag bit
bit 0
                  1 = A Stack Underflow occurred
                  0 = A Stack Underflow has not occurred or set to `0' by firmware

                  Unimplemented: Read as `0'

                  RMCLR: MCLR Reset Flag bit

                  1 = A MCLR Reset has not occurred or set to `1' by firmware
                  0 = A MCLR Reset has occurred (set to `0' in hardware when a MCLR Reset occurs)

                  RI: RESET Instruction Flag bit
                  1 = A RESET instruction has not been executed or set to `1' by firmware
                  0 = A RESET instruction has been executed (set to `0' in hardware upon executing a RESET instruction)

                  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)

                  BOR: Brown-out Reset Status bit

                  1 = No Brown-out Reset occurred
                  0 = A Brown-out Reset occurred (must be set in software after a Power-on Reset or Brown-out Reset

                        occurs)

2010 Microchip Technology Inc.                        Preliminary           DS41440A-page 85
PIC16F/LF1825/1829

TABLE 7-5: SUMMARY OF REGISTERS ASSOCIATED WITH RESETS

Name    Bit 7     Bit 6  Bit 5  Bit 4  Bit 3  Bit 2     Bit 1  Bit 0  Register
                                                                      on Page

BORCON SBOREN     --     --     --     --     --        -- BORRDY 81

PCON    STKOVF STKUNF    --     --     RMCLR  RI        POR    BOR    85

STATUS  --        --     --     TO     PD     Z         DC     C      26

WDTCON --         --     WDTPS4 WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN 107

Legend: -- = unimplemented bit, reads as `0'. Shaded cells are not used by Resets.
Note 1: Other (non Power-up) Resets include MCLR Reset and Watchdog Timer Reset during normal operation.

DS41440A-page 86                Preliminary              2010 Microchip Technology Inc.
8.0 INTERRUPTS                                          PIC16F/LF1825/1829

The interrupt feature allows certain events to preempt         Wake-up (If in Sleep mode)
normal program flow. Firmware is used to determine                                                    Interrupt to CPU
the source of the interrupt and act accordingly. Some
interrupts can be configured to wake the MCU from
Sleep mode.

This chapter contains the following information for
Interrupts:

Operation
Interrupt Latency
Interrupts During Sleep
INT Pin
Automatic Context Saving

Many peripherals produce Interrupts. Refer to the
corresponding chapters for details.

A block diagram of the interrupt logic is shown in
Figure 8-1 and Figure 8-2.

FIGURE 8-1:  INTERRUPT LOGIC

                                 TMR0IF
                                 TMR0IE

                                     INTF
                                     INTE

From Peripheral Interrupt        IOCIF
    Logic (Figure 8-2)           IOCIE

                                  PEIE

                                 GIE

2010 Microchip Technology Inc.            Preliminary  DS41440A-page 87
PIC16F/LF1825/1829

FIGURE 8-2:       PERIPHERAL INTERRUPT LOGIC

TMR1GIF                                       To Interrupt Logic
TMR1GIE                                          (Figure 8-1)

   ADIF
   ADIE
   RCIF
   RCIE
   TXIF
   TXIE
  SSPIF
  SSPIE

CCP1IF
CCP1IE

CCP5IF
CCP5IE
TMR1IF
TMR1IE

TMR6IF
TMR6IE

   EEIF
   EEIE

      OSFIF
      OSFIE
       C1IF
       C1IE
       C2IF
       C2IE
     BCL1IF
     BCL1IE
    BCL2IF(1)
    BCL2IE(1)

Note 1: PIC16F/LF1829 only.

DS41440A-page 88             Preliminary       2010 Microchip Technology Inc.
8.1 Operation                                                 PIC16F/LF1825/1829

Interrupts are disabled upon any device Reset. They           8.2 Interrupt Latency
are enabled by setting the following bits:
                                                              Interrupt latency is defined as the time from when the
GIE bit of the INTCON register                              interrupt event occurs to the time code execution at the
Interrupt Enable bit(s) for the specific interrupt          interrupt vector begins. The latency for synchronous
                                                              interrupts is 3 or 4 instruction cycles. For asynchronous
   event(s)                                                   interrupts, the latency is 3 to 5 instruction cycles,
PEIE bit of the INTCON register (if the Interrupt           depending on when the interrupt occurs. See Figure 8-3
                                                              and Figure 8.3 for more details.
   Enable bit of the interrupt event is contained in the
   PIEx register)

The INTCON, PIR1, PIR2, PIR3 and PIR4 registers
record individual interrupts via interrupt flag bits.
Interrupt flag bits will be set, regardless of the status of
the GIE, PEIE and individual interrupt enable bits.

The following events happen when an interrupt event
occurs while the GIE bit is set:

Current prefetched instruction is flushed
GIE bit is cleared
Current Program Counter (PC) is pushed onto the

   stack
Critical registers are automatically saved to the

   shadow registers (See Section 8.5 "Automatic
   Context Saving")
PC is loaded with the interrupt vector 0004h

The firmware within the Interrupt Service Routine (ISR)
should determine the source of the interrupt by polling
the interrupt flag bits. The interrupt flag bits must be
cleared before exiting the ISR to avoid repeated
interrupts. Because the GIE bit is cleared, any interrupt
that occurs while executing the ISR will be recorded
through its interrupt flag, but will not cause the
processor to redirect to the interrupt vector.

The RETFIE instruction exits the ISR by popping the
previous address from the stack, restoring the saved
context from the shadow registers and setting the GIE
bit.

For additional information on a specific interrupt's
operation, refer to its peripheral chapter.

    Note 1: Individual interrupt flag bits are set,
                regardless of the state of any other
                enable bits.

           2: All interrupts will be ignored while the GIE
                bit is cleared. Any interrupt occurring
                while the GIE bit is clear will be serviced
                when the GIE bit is set again.

2010 Microchip Technology Inc.  Preliminary                  DS41440A-page 89
PIC16F/LF1825/1829

FIGURE 8-3:        INTERRUPT LATENCY

      OSC1

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

CLKOUT                             Interrupt Sampled
                                   during Q1
Interrupt
       GIE

PC           PC-1  PC                        PC+1           0004h     0005h
                                                            NOP    Inst(0004h)
Execute 1 Cycle Instruction at PC  Inst(PC)        NOP

Interrupt
      GIE

PC           PC-1  PC              PC+1/FSR        New PC/  0004h     0005h
                                      ADDR           PC+1    NOP   Inst(0004h)
Execute 2 Cycle Instruction at PC
                                   Inst(PC)          NOP

Interrupt
      GIE

PC           PC-1  PC              FSR ADDR        PC+1     PC+2         0004h  0005h
                                                   NOP      NOP
Execute 3 Cycle Instruction at PC INST(PC)                               NOP    Inst(0004h) Inst(0005h)

Interrupt
      GIE

PC           PC-1  PC              FSR ADDR        PC+1            PC+2         0004h  0005h

Execute 3 Cycle Instruction at PC  INST(PC)        NOP      NOP          NOP    NOP    Inst(0004h)

DS41440A-page 90                             Preliminary                         2010 Microchip Technology Inc.
                                                               PIC16F/LF1825/1829

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

GIE

INSTRUCTION FLOW

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

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

Note 1: INTF flag is sampled here (every Q1).
        2: Asynchronous interrupt latency = 3-5 TCY. Synchronous latency = 3-4 TCY, where TCY = instruction cycle time.
              Latency is the same whether Inst (PC) is a single cycle or a 2-cycle instruction.
        3: CLKOUT not available in all oscillator modes.
        4: For minimum width of INT pulse, refer to AC specifications in Section 30.0 "Electrical Specifications".
        5: INTF is enabled to be set any time during the Q4-Q1 cycles.

2010 Microchip Technology Inc.                            Preliminary                              DS41440A-page 91
PIC16F/LF1825/1829

8.3 Interrupts During Sleep

Some interrupts can be used to wake from Sleep. To
wake from Sleep, the peripheral must be able to
operate without the system clock. The interrupt source
must have the appropriate Interrupt Enable bit(s) set
prior to entering Sleep.

On waking from Sleep, if the GIE bit is also set, the
processor will branch to the interrupt vector. Otherwise,
the processor will continue executing instructions after
the SLEEP instruction. The instruction directly after the
SLEEP instruction will always be executed before
branching to the ISR. Refer to the Section 9.0 "Power-
Down Mode (Sleep)" for more details.

8.4 INT Pin

The INT pin can be used to generate an asynchronous
edge-triggered interrupt. This interrupt is enabled by
setting the INTE bit of the INTCON register. The
INTEDG bit of the OPTION register determines on which
edge the interrupt will occur. When the INTEDG bit is
set, the rising edge will cause the interrupt. When the
INTEDG bit is clear, the falling edge will cause the
interrupt. The INTF bit of the INTCON register will be set
when a valid edge appears on the INT pin. If the GIE and
INTE bits are also set, the processor will redirect
program execution to the interrupt vector.

8.5 Automatic Context Saving

Upon entering an interrupt, the return PC address is
saved on the stack. Additionally, the following registers
are automatically saved in the Shadow registers:

W register
STATUS register (except for TO and PD)
BSR register
FSR registers
PCLATH register

Upon exiting the Interrupt Service Routine, these regis-
ters are automatically restored. Any modifications to
these registers during the ISR will be lost. If modifica-
tions to any of these registers are desired, the corre-
sponding Shadow register should be modified and the
value will be restored when exiting the ISR. The
Shadow registers are available in Bank 31 and are
readable and writable. Depending on the user's appli-
cation, other registers may also need to be saved.

DS41440A-page 92  Preliminary                                2010 Microchip Technology Inc.
                                                               PIC16F/LF1825/1829

8.5.1 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, of the INTCON register.
for TMR0 register overflow, interrupt-on-change and                   User software should ensure the appropri-
external INT pin interrupts.                                          ate interrupt flag bits are clear prior to
                                                                      enabling an interrupt.

REGISTER 8-1: INTCON: INTERRUPT CONTROL REGISTER

    R/W-0/0  R/W-0/0             R/W-0/0  R/W-0/0          R/W-0/0    R/W-0/0     R/W-0/0   R-0/0
      GIE      PEIE              TMR0IE     INTE            IOCIE     TMR0IF        INTF   IOCIF(1)

bit 7                                                                                              bit 0

Legend:                          W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown        -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

bit 7        GIE: Global Interrupt Enable bit

             1 = Enables all active interrupts
             0 = Disables all interrupts

bit 6        PEIE: Peripheral Interrupt Enable bit

             1 = Enables all active peripheral interrupts

             0 = Disables all peripheral interrupts

bit 5        TMR0IE: Timer0 Overflow Interrupt Enable bit

             1 = Enables the Timer0 interrupt

             0 = Disables the Timer0 interrupt

bit 4        INTE: INT External Interrupt Enable bit

             1 = Enables the INT external interrupt

             0 = Disables the INT external interrupt

bit 3        IOCIE: Interrupt-on-Change Enable bit

             1 = Enables the interrupt-on-change

             0 = Disables the interrupt-on-change

bit 2        TMR0IF: Timer0 Overflow Interrupt Flag bit

             1 = TMR0 register has overflowed

             0 = TMR0 register did not overflow

bit 1        INTF: INT External Interrupt Flag bit

             1 = The INT external interrupt occurred

             0 = The INT external interrupt did not occur

bit 0        IOCIF: Interrupt-on-Change Interrupt Flag bit(1)

             1 = When at least one of the interrupt-on-change pins changed state

             0 = None of the interrupt-on-change pins have changed state

Note 1: The IOCIF Flag bit is read-only and cleared when all the Interrupt-on-Change flags in the IOCxF register
              have been cleared by software.

2010 Microchip Technology Inc.                        Preliminary                DS41440A-page 93
PIC16F/LF1825/1829

8.5.2 PIE1 REGISTER                                          Note: Bit PEIE of the INTCON register must be
                                                                         set to enable any peripheral interrupt.
The PIE1 register contains the interrupt enable bits, as
shown in Register 8-2.

REGISTER 8-2: PIE1: PERIPHERAL INTERRUPT ENABLE REGISTER 1

    R/W-0/0       R/W-0/0  R/W-0/0           R/W-0/0      R/W-0/0  R/W-0/0  R/W-0/0  R/W-0/0
  TMR1GIE           ADIE    RCIE               TXIE       SSP1IE   CCP1IE   TMR2IE   TMR1IE
bit 7
                                                                                             bit 0

Legend:                    W = Writable bit               U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown             -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged       `0' = Bit is cleared
`1' = Bit is set

bit 7        TMR1GIE: Timer1 Gate Interrupt Enable bit

             1 = Enables the Timer1 Gate Acquisition interrupt
             0 = Disables the Timer1 Gate Acquisition interrupt

bit 6        ADIE: A/D Converter (ADC) Interrupt Enable bit

             1 = Enables the ADC interrupt
             0 = Disables the ADC interrupt

bit 5        RCIE: USART Receive Interrupt Enable bit

             1 = Enables the USART receive interrupt
             0 = Disables the USART receive interrupt

bit 4        TXIE: USART Transmit Interrupt Enable bit

             1 = Enables the USART transmit interrupt
             0 = Disables the USART transmit interrupt

bit 3        SSP1IE: Synchronous Serial Port (MSSP) Interrupt Enable bit

             1 = Enables the MSSP interrupt
             0 = Disables the MSSP interrupt

bit 2        CCP1IE: CCP1 Interrupt Enable bit

             1 = Enables the CCP1 interrupt
             0 = Disables the CCP1 interrupt

bit 1        TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

             1 = Enables the Timer2 to PR2 match interrupt
             0 = Disables the Timer2 to PR2 match interrupt

bit 0        TMR1IE: Timer1 Overflow Interrupt Enable bit

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

DS41440A-page 94                                 Preliminary                 2010 Microchip Technology Inc.
                                                          PIC16F/LF1825/1829

8.5.3 PIE2 REGISTER                                       Note: Bit PEIE of the INTCON register must be
                                                                      set to enable any peripheral interrupt.
The PIE2 register contains the interrupt enable bits, as
shown in Register 8-3.

REGISTER 8-3: PIE2: PERIPHERAL INTERRUPT ENABLE REGISTER 2

R/W-0/0  R/W-0/0                 R/W-0/0  R/W-0/0 R/W-0/0           U-0  U-0  R/W-0/0
                                                                              CCP2IE
OSFIE    C2IE(1)                 C1IE     EEIE            BCL1IE    --   --
                                                                                      bit 0
bit 7

Legend:                          W = Writable bit         U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown       -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

bit 7    OSFIE: Oscillator Fail Interrupt Enable bit
bit 6
bit 5    1 = Enables the Oscillator Fail interrupt
bit 4    0 = Disables the Oscillator Fail interrupt
bit 3    C2IE: Comparator C2 Interrupt Enable bit(1)
bit 2-1
bit 0    1 = Enables the Comparator C2 interrupt
         0 = Disables the Comparator C2 interrupt

         C1IE: Comparator C1 Interrupt Enable bit

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

         EEIE: EEPROM Write Completion Interrupt Enable bit

         1 = Enables the EEPROM Write Completion interrupt
         0 = Disables the EEPROM Write Completion interrupt

         BCL1IE: MSSP Bus Collision Interrupt Enable bit

         1 = Enables the MSSP Bus Collision Interrupt
         0 = Disables the MSSP Bus Collision Interrupt

         Unimplemented: Read as `0'

         CCP2IE: CCP2 Interrupt Enable bit

         1 = Enables the CCP2 Interrupt
         0 = Disables the CCP2 Interrupt

Note 1: PIC16F/LF1829 only.

2010 Microchip Technology Inc.                        Preliminary            DS41440A-page 95
PIC16F/LF1825/1829

8.5.4 PIE3 REGISTER                                         Note 1: Bit PEIE of the INTCON register must be
                                                                        set to enable any peripheral interrupt.
The PIE3 register contains the interrupt enable bits, as
shown in Register 8-4.

REGISTER 8-4: PIE3: PERIPHERAL INTERRUPT ENABLE REGISTER 3

       U-0            U-0  R/W-0/0  R/W-0/0               R/W-0/0  U-0  R/W-0/0  U-0
        --                                                              TMR4IE   --
bit 7                 --   CCP4IE   CCP3IE                TMR6IE   --
                                                                                      bit 0

Legend:                    W = Writable bit               U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown             -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged       `0' = Bit is cleared
`1' = Bit is set

bit 7-6     Unimplemented: Read as `0'
bit 5
            CCP4IE: CCP4 Interrupt Enable bit
bit 4       1 = Enables the CCP4 interrupt
            0 = Disables the CCP4 interrupt
bit 3       CCP3IE: CCP3 Interrupt Enable bit
            1 = Enables the CCP3 interrupt
bit 2       0 = Disables the CCP3 interrupt
bit 1
            TMR6IE: TMR6 to PR6 Match Interrupt Enable bit
bit 0       1 = Enables the TMR6 to PR6 Match interrupt
            0 = Disables the TMR6 to PR6 Match interrupt

            Unimplemented: Read as `0'
            TMR4IE: TMR4 to PR4 Match Interrupt Enable bit
            1 = Enables the TMR4 to PR4 Match interrupt
            0 = Disables the TMR4 to PR4 Match interrupt

            Unimplemented: Read as `0'

DS41440A-page 96                                 Preliminary             2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

8.5.5       PIE4 REGISTER(1)

The PIE4 register contains the interrupt enable bits, as    Note 1: The PIE4 register is available only on the
shown in Register 8-5.                                                  PIC16F/LF1829 device.

                                                                   2: Bit PEIE of the INTCON register must be
                                                                        set to enable any peripheral interrupt.

REGISTER 8-5: PIE4: PERIPHERAL INTERRUPT ENABLE REGISTER 4(1)

       U-0            U-0        U-0                   U-0  U-0     U-0            R/W-0/0  R/W-0/0
        --                                                                                  SSP2IE
bit 7                 --         --                    --   --      --             BCL2IE
                                                                                                    bit 0

Legend:                          W = Writable bit           U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown         -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

bit 7-2     Unimplemented: Read as `0'
bit 1
            BCL2IE: MSSP2 Bus Collision Interrupt Enable bit
bit 0
            1 = Enables the MSSP2 Bus Collision Interrupt
            0 = Disables the MSSP2 Bus Collision Interrupt

            SSP2IE: Master Synchronous Serial Port 2 (MSSP2) Interrupt Enable bit
            1 = Enables the MSSP2 interrupt
            0 = Disables the MSSP2 interrupt

Note 1: This register is only available on PIC16F/LF1829.

2010 Microchip Technology Inc.                        Preliminary                         DS41440A-page 97
PIC16F/LF1825/1829

8.5.6 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 8-6.                                            Enable bit, GIE, of the INTCON register.
                                                                  User software should ensure the
                                                                  appropriate interrupt flag bits are clear prior
                                                                  to enabling an interrupt.

REGISTER 8-6: PIR1: PERIPHERAL INTERRUPT REQUEST REGISTER 1

    R/W-0/0       R/W-0/0  R-0/0              R-0/0      R/W-0/0        R/W-0/0  R/W-0/0  R/W-0/0
  TMR1GIF           ADIF   RCIF               TXIF       SSP1IF         CCP1IF   TMR2IF   TMR1IF
bit 7
                                                                                                  bit 0

Legend:                    W = Writable bit              U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown            -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged       `0' = Bit is cleared
`1' = Bit is set

bit 7        TMR1GIF: Timer1 Gate Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 6        ADIF: A/D Converter Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 5        RCIF: USART Receive Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 4        TXIF: USART Transmit Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 3        SSP1IF: Synchronous Serial Port (MSSP) Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 2        CCP1IF: CCP1 Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 1        TMR2IF: Timer2 to PR2 Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 0        TMR1IF: Timer1 Overflow Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

DS41440A-page 98                                 Preliminary                      2010 Microchip Technology Inc.
                                                             PIC16F/LF1825/1829

8.5.7 PIR2 REGISTER                                          Note:   Interrupt flag bits are set when an interrupt
                                                                     condition occurs, regardless of the state of
The PIR2 register contains the interrupt flag bits, as               its corresponding enable bit or the Global
shown in Register 8-7.                                               Enable bit, GIE, of the INTCON register.
                                                                     User software should ensure the
                                                                     appropriate interrupt flag bits are clear prior
                                                                     to enabling an interrupt.

REGISTER 8-7: PIR2: PERIPHERAL INTERRUPT REQUEST REGISTER 2

R/W-0/0  R/W-0/0                 R/W-0/0  R/W-0/0 R/W-0/0            U-0  U-0    U-0
                                                                               CCP2IF
OSFIF    C2IF(1)                 C1IF                  EEIF  BCL1IF  --   --
                                                                                       bit 0
bit 7

Legend:                          W = Writable bit            U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown          -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

bit 7    OSFIF: Oscillator Fail Interrupt Flag bit
bit 6
bit 5    1 = Interrupt is pending
bit 4    0 = Interrupt is not pending
bit 3    C2IF: Comparator C2 Interrupt Flag bit(1)
bit 2-1
bit 0    1 = Interrupt is pending
         0 = Interrupt is not pending

         C1IF: Comparator C1 Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

         EEIF: EEPROM Write Completion Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

         BCL1IF: MSSP Bus Collision Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

         CCP2IF: CCP2 Interrupt Flag bit
         1 = Interrupt is pending
         0 = Interrupt is not pending

         Unimplemented: Read as `0'

Note 1: PIC16F/LF1829 only.

2010 Microchip Technology Inc.                        Preliminary             DS41440A-page 99
PIC16F/LF1825/1829

8.5.8 PIR3 REGISTER                                       Note 1: Interrupt flag bits are set when an inter-
                                                                      rupt condition occurs, regardless of the
The PIR3 register contains the interrupt flag bits, as                state of its corresponding enable bit or
shown in Register 8-8.                                                the Global Enable bit, GIE, of the
                                                                      INTCON register. User software should
                                                                      ensure the appropriate interrupt flag bits
                                                                      are clear prior to enabling an interrupt.

REGISTER 8-8: PIR3: PERIPHERAL INTERRUPT REQUEST REGISTER 3

       U-0            U-0  R/W-0/0  R/W-0/0             R/W-0/0  U-0  R/W-0/0  U-0
        --                                                                     --
bit 7                 --   CCP4IF   CCP3IF TMR6IF                --   TMR4IF
                                                                                    bit 0

Legend:                    W = Writable bit             U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown           -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged       `0' = Bit is cleared
`1' = Bit is set

bit 7-6     Unimplemented: Read as `0'
bit 5       CCP4IF: CCP4 Interrupt Flag bit
            1 = Interrupt is pending
bit 4       0 = Interrupt is not pending

bit 3       CCP3IF: CCP3 Interrupt Flag bit
            1 = Interrupt is pending
bit 2       0 = Interrupt is not pending
bit 1
            TMR6IF: TMR6 to PR6 Match Interrupt Flag bit
bit 0       1 = Interrupt is pending
            0 = Interrupt is not pending
            Unimplemented: Read as `0'

            TMR4IF: TMR4 to PR4 Match Interrupt Flag bit
            1 = Interrupt is pending
            0 = Interrupt is not pending

            Unimplemented: Read as `0'

DS41440A-page 100                                Preliminary           2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

8.5.9       PIR4 REGISTER(1)

The PIR4 register contains the interrupt flag bits, as      Note 1: The PIR4 register is available only on the
shown in Register 8-9.                                                  PIC16F/LF1829 device.

                                                                   2: Interrupt flag bits are set when an inter-
                                                                        rupt condition occurs, regardless of the
                                                                        state of its corresponding enable bit or
                                                                        the Global Enable bit, GIE, of the
                                                                        INTCON register. User software should
                                                                        ensure the appropriate interrupt flag bits
                                                                        are clear prior to enabling an interrupt.

REGISTER 8-9: PIR4: PERIPHERAL INTERRUPT REQUEST REGISTER 4(1)

       U-0            U-0        U-0                   U-0  U-0     U-0  R/W/HS-0/0 R/W/HS-0/0
        --
bit 7                 --         --                    --   --      --   BCL2IF                     SSP2IF

                                                                                                    bit 0

Legend:                          W = Writable bit           U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown         -n/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared       HS = Bit is set by hardware
`1' = Bit is set

bit 7-6     Unimplemented: Read as `0'
bit 1
            BCL2IF: MSSP2 Bus Collision Interrupt Flag bit
bit 0       1 = A Bus Collision was detected (must be cleared in software)
            0 = No Bus collision was detected

            SSP2IF: Master Synchronous Serial Port 2 (MSSP2) Interrupt Flag bit
            1 = The Transmission/Reception/Bus Condition is complete (must be cleared in software)
            0 = Waiting to Transmit/Receive/Bus Condition in progress

Note 1: This register is only available on PIC16F/LF1829.

2010 Microchip Technology Inc.                        Preliminary       DS41440A-page 101
PIC16F/LF1825/1829

TABLE 8-1: SUMMARY OF REGISTERS ASSOCIATED WITH INTERRUPTS

      Name         Bit 7  Bit 6  Bit 5   Bit 4  Bit 3   Bit 2                               Bit 1     Bit 0  Register
                                                                                                             on Page
INTCON             GIE    PEIE   TMR0IE  INTE   IOCIE TMR0IF                                INTF     IOCIF
                                                                                                      PS0        93
OPTION_REG WPUEN INTEDG TMR0CS TMR0SE PSA               PS2                                 PS1     TMR1IE      189
                                                                                                    CCP2IE       94
PIE1        TMR1GIE ADIE         RCIE    TXIE   SSP1IE CCP1IE TMR2IE                                    --       95
                                                                                                    SSP2IE       96
PIE2        OSFIE         C2IE   C1IE    EEIE   BCL1IE  --                                  --      TMR1IF       97
                                                                                                    CCP2IF       98
PIE3               --     --     CCP4IE CCP3IE TMR6IE   --                                  TMR4IE      --       99
PIE4(1)                                                                                             SSP2IF      100
                   --     --     --      --     --      --                                  BCL2IE              101

PIR1        TMR1GIF ADIF         RCIF    TXIF   SSP1IF CCP1IF TMR2IF

PIR2        OSFIF         C2IF   C1IF    EEIF   BCL1IF  --                                  --

PIR3               --     --     CCP4IF CCP3IF TMR6IF   --                                  TMR4IF
PIR4(1)
                   --     --     --      --     --      --                                  BCL2IF

Legend: -- = unimplemented locations read as `0'. Shaded cells are not used by Interrupts.
Note 1: PIC16F/LF1829 only.

DS41440A-page 102                        Preliminary                                         2010 Microchip Technology Inc.
9.0 POWER-DOWN MODE (SLEEP)                                PIC16F/LF1825/1829

The Power-Down mode is entered by executing a              9.1 Wake-up from Sleep
SLEEP instruction.
                                                           The device can wake-up from Sleep through one of the
Upon entering Sleep mode, the following conditions exist:  following events:
                                                           1. External Reset input on MCLR pin, if enabled
1. WDT will be cleared but keeps running, if               2. BOR Reset, if enabled
      enabled for operation during Sleep.                  3. POR Reset
                                                           4. Watchdog Timer, if enabled
2. PD bit of the STATUS register is cleared.               5. Any external interrupt
3. TO bit of the STATUS register is set.                   6. Interrupts by peripherals capable of running dur-
4. CPU clock is disabled.
5. 31 kHz LFINTOSC is unaffected and peripherals                 ing Sleep (see individual peripheral for more
                                                                 information)
      that operate from it may continue operation in
      Sleep.                                               The first three events will cause a device Reset. The
6. Timer1 oscillator is unaffected and peripherals         last three events are considered a continuation of pro-
      that operate from it may continue operation in       gram execution. To determine whether a device Reset
      Sleep.                                               or wake-up event occurred, refer to Section 7.10
7. ADC is unaffected, if the dedicated FRC clock is        "Determining the Cause of a Reset".
      selected.
8. Capacitive Sensing oscillator is unaffected.            When the SLEEP instruction is being executed, the next
9. I/O ports maintain the status they had before           instruction (PC + 1) is prefetched. For the device to
      SLEEP was executed (driving high, low or high-       wake-up through an interrupt event, the corresponding
      impedance).                                          interrupt enable bit must be enabled. Wake-up will
10. Resets other than WDT are not affected by              occur regardless of the state of the GIE bit. If the GIE
      Sleep mode.                                          bit is disabled, the device continues execution at the
                                                           instruction after the SLEEP instruction. If the GIE bit is
Refer to individual chapters for more details on           enabled, the device executes the instruction after the
peripheral operation during Sleep.                         SLEEP instruction, the device will call the Interrupt Ser-
                                                           vice Routine. In cases where the execution of the
To minimize current consumption, the following             instruction following SLEEP is not desirable, the user
conditions should be considered:                           should have a NOP after the SLEEP instruction.

I/O pins should not be floating                          The WDT is cleared when the device wakes up from
External circuitry sinking current from I/O pins         Sleep, regardless of the source of wake-up.
Internal circuitry sourcing current from I/O pins
Current draw from pins with internal weak pull-ups       9.1.1 WAKE-UP USING INTERRUPTS
Modules using 31 kHz LFINTOSC
Modules using Timer1 oscillator                          When global interrupts are disabled (GIE cleared) and
                                                           any interrupt source has both its interrupt enable bit
I/O pins that are high-impedance inputs should be          and interrupt flag bit set, one of the following will occur:
pulled to VDD or VSS externally to avoid switching
currents caused by floating inputs.                         If the interrupt occurs before the execution of a
                                                              SLEEP instruction
Examples of internal circuitry that might be sourcing         - SLEEP instruction will execute as a NOP.
current include modules such as the DAC and FVR               - WDT and WDT prescaler will not be cleared
modules. See Section 17.0 "Digital-to-Analog                  - TO bit of the STATUS register will not be set
Converter (DAC) Module" and Section 14.0 "Fixed               - PD bit of the STATUS register will not be
Voltage Reference (FVR)" for more information on                 cleared.
these modules.
                                                            If the interrupt occurs during or after the execu-
                                                              tion of a SLEEP instruction
                                                              - SLEEP instruction will be completely exe-
                                                                 cuted
                                                              - Device will immediately wake-up from Sleep
                                                              - WDT and WDT prescaler will be cleared
                                                              - TO bit of the STATUS register will be set
                                                              - PD bit of the STATUS register will be cleared.

2010 Microchip Technology Inc.  Preliminary               DS41440A-page 103
PIC16F/LF1825/1829

Even if the flag bits were checked before executing a

SLEEP instruction, it may be possible for flag bits to
become set before the SLEEP instruction completes. To
determine whether a SLEEP instruction executed, test
the PD bit. If the PD bit is set, the SLEEP instruction
was executed as a NOP.

FIGURE 9-1:                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(1)                                                          TOST(3)
CLKOUT(2)

Interrupt flag                                                      Interrupt Latency(4)

GIE bit                                               Processor in
(INTCON reg.)                                             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      Sleep                       Inst(PC + 1)                     Dummy Cycle   Inst(0004h)
Fetched

Instruction       Inst(PC - 1)
Executed

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

TABLE 9-1: SUMMARY OF REGISTERS ASSOCIATED WITH POWER-DOWN MODE

Name              Bit 7         Bit 6   Bit 5         Bit 4         Bit 3         Bit 2       Bit 1    Bit 0       Register on
                                                                                                                       Page
INTCON              GIE           PEIE  TMR0IE          INTE         IOCIE  TMR0IF              INTF     IOCIF
IOCAF                --            --   IOCAF5        IOCAF4        IOCAF3  IOCAF2            IOCAF1    IOCAF0           93
                     --            --   IOCAN5        IOCAN4        IOCAN3  IOCAN2            IOCAN1   IOCAN0           144
IOCAN                --            --   IOCAP5        IOCAP4        IOCAP3  IOCAP2            IOCAP1    IOCAP0          144
                  IOCBF7                IOCBF5        IOCBF4                                                            144
IOCAP                           IOCBF6                                  --      --                --        --          146
IOCBF(1)                                                                                          --        --          145
IOCBN(1)          IOCBN7        IOCBN6  IOCBN5        IOCBN4        --            --              --        --          145
IOCBP(1)                                                                                      TMR2IE    TMR1IE           94
                  IOCBP7        IOCBP6  IOCBP5        IOCBP4        --            --              --    CCP2IE           95
PIE1                                                                                           BCL2IE   SSP2IE           97
PIE2              TMR1GIE       ADIE    RCIE          TXIE          SSP1IE        CCP1IE      TMR2IF    TMR1IF           98
PIE4(1)             OSFIE       C2IE    C1IE          EEIE          BCL1IE           --           --    CCP2IF           99
PIR1                                                                                           BCL2IF   SSP2IF          101
PIR2                   --        --      --            --              --            --           DC        C            26
PIR4(1)           TMR1GIF       ADIF    RCIF          TXIF          SSP1IF        CCP1IF      WDTPS0   SWDTEN           107
STATUS
WDTCON            OSFIF         C2IF    C1IF          EEIF          BCL1IF        --
Legend:
Note 1:           --                --  --            --            --            --

                  --                --  --            TO            PD            Z

                  --                --  WDTPS4 WDTPS3 WDTPS2 WDTPS1

              -- = unimplemented, read as `0'. Shaded cells are not used in Power-down mode.
              PIC16F/LF1829 only.

DS41440A-page 104                                     Preliminary                               2010 Microchip Technology Inc.
                                                      PIC16F/LF1825/1829

10.0 WATCHDOG TIMER

The Watchdog Timer is a system timer that generates
a Reset if the firmware does not issue a CLRWDT
instruction within the time-out period. The Watchdog
Timer is typically used to recover the system from
unexpected events.

The WDT has the following features:

Independent clock source
Multiple operating modes

   - WDT is always on
   - WDT is off when in Sleep
   - WDT is controlled by software
   - WDT is always off
Configurable time-out period is from 1 ms to 256
   seconds (typical)
Multiple Reset conditions
Operation during Sleep

FIGURE 10-1:           WATCHDOG TIMER BLOCK DIAGRAM

WDTE<1:0> = 01                                        LFINTOSC  23-bit Programmable  WDT Time-out
          SWDTEN                                                   Prescaler WDT

WDTE<1:0> = 11                                                     WDTPS<4:0>

WDTE<1:0> = 10
                Sleep

2010 Microchip Technology Inc.  Preliminary                                         DS41440A-page 105
PIC16F/LF1825/1829

10.1 Independent Clock Source                          10.3 Time-Out Period

The WDT derives its time base from the 31 kHz          The WDTPS bits of the WDTCON register set the
LFINTOSC internal oscillator.                          time-out period from 1 ms to 256 seconds. After a
                                                       Reset, the default time-out period is 2 seconds.
10.2 WDT Operating Modes
                                                       10.4 Clearing the WDT
The Watchdog Timer module has four operating modes
controlled by the WDTE<1:0> bits in Configuration      The WDT is cleared when any of the following condi-
Word 1. See Table 10-1.                                tions occur:

10.2.1 WDT IS ALWAYS ON                                 Any Reset
When the WDTE bits of Configuration Word 1 are set to   CLRWDT instruction is executed
`11', the WDT is always on.                            Device enters Sleep
WDT protection is active during Sleep.                  Device wakes up from Sleep
                                                       Oscillator fail event
10.2.2 WDT IS OFF IN SLEEP                              WDT is disabled
When the WDTE bits of Configuration Word 1 are set to   Oscillator Start-up TImer (OST) is running
`10', the WDT is on, except in Sleep.
WDT protection is not active during Sleep.             See Table 10-2 for more information.

10.2.3 WDT CONTROLLED BY SOFTWARE                      10.5 Operation During Sleep
When the WDTE bits of Configuration Word 1 are set to
`01', the WDT is controlled by the SWDTEN bit of the   When the device enters Sleep, the WDT is cleared. If
WDTCON register.                                       the WDT is enabled during Sleep, the WDT resumes
WDT protection is unchanged by Sleep. See              counting.
Table 10-1 for more details.
                                                       When the device exits Sleep, the WDT is cleared
TABLE 10-1: WDT OPERATING MODES                        again. The WDT remains clear until the OST, if
                                                       enabled, completes. See Section 5.0 "Oscillator
   WDTE            SWDTEN  Device  WDT                 Module (With Fail-Safe Clock Monitor)" for more
Config bits                Mode    Mode                information on the OST.

WDT_ON (11)        X       X       Active              When a WDT time-out occurs while the device is in
                                                       Sleep, no Reset is generated. Instead, the device
WDT_NSLEEP (10)    X       Awake Active                wakes up and resumes operation. The TO and PD bits
                                                       in the STATUS register are changed to indicate the
                                                       event. See Section 3.0 "Memory Organization" for
                                                       more information.

WDT_NSLEEP (10)    X       Sleep Disabled

WDT_SWDTEN (01)    1       X       Active

WDT_SWDTEN (01)    0       X Disabled

WDT_OFF (00)       X       X Disabled

TABLE 10-2: WDT CLEARING CONDITIONS                                       WDT

                                              Conditions                Cleared

WDTE<1:0> = 00                                            Cleared until the end of OST
WDTE<1:0> = 01 and SWDTEN = 0                                        Unaffected
WDTE<1:0> = 10 and enter Sleep
CLRWDT Command                                               2010 Microchip Technology Inc.
Oscillator Fail Detected
Exit Sleep + System Clock = T1OSC, EXTRC, INTOSC, EXTCLK
Exit Sleep + System Clock = XT, HS, LP
Change INTOSC divider (IRCF bits)

DS41440A-page 106                  Preliminary
                                                       PIC16F/LF1825/1829

REGISTER 10-1: WDTCON: WATCHDOG TIMER CONTROL REGISTER

       U-0            U-0        R/W-0/0  R/W-1/1      R/W-0/0      R/W-1/1  R/W-1/1   R/W-0/0
        --                                                                            SWDTEN
bit 7                 --                               WDTPS<4:0>
                                                                                               bit 0

Legend:                          W = Writable bit      U = Unimplemented bit, read as `0'
R = Readable bit                 x = Bit is unknown    -m/n = Value at POR and BOR/Value at all other Resets
u = Bit is unchanged             `0' = Bit is cleared
`1' = Bit is set

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

            00000 = 1:32 (Interval 1 ms typ)
            00001 = 1:64 (Interval 2 ms typ)
            00010 = 1:128 (Interval 4 ms typ)
            00011 = 1:256 (Interval 8 ms typ)
            00100 = 1:512 (Interval 16 ms typ)
            00101 = 1:1024 (Interval 32 ms typ)
            00110 = 1:2048 (Interval 64 ms typ)
            00111 = 1:4096 (Interval 128 ms typ)
            01000 = 1:8192 (Interval 256 ms typ)
            01001 = 1:16384 (Interval 512 ms typ)
            01010 = 1:32768 (Interval 1s typ)
            01011 = 1:65536 (Interval 2s typ) (Reset value)
            01100 = 1:131072 (217) (Interval 4s typ)
            01101 = 1:262144 (218) (Interval 8s typ)
            01110 = 1:524288 (219) (Interval 16s typ)
            01111 = 1:1048576 (220) (Interval 32s typ)
            10000 = 1:2097152 (221) (Interval 64s typ)
            10001 = 1:4194304 (222) (Interval 128s typ)
            10010 = 1:8388608 (223) (Interval 256s typ)

            10011 = Reserved. Results in minimum interval (1:32)
                  
                  
                  

            11111 = Reserved. Results in minimum interval (1:32)

            SWDTEN: Software Enable/Disable for Watchdog Timer bit

            If WDTE<1:0> = 00:
            This bit is ignored.
            If WDTE<1:0> = 01:
            1 = WDT is turned on
            0 = WDT is turned off
            If WDTE<1:0> = 1x:
            This bit is ignored.

2010 Microchip Technology Inc.                        Preliminary           DS41440A-page 107
PIC16F/LF1825/1829

NOTES:

DS41440A-page 108  Preliminary   2010 Microchip Technology Inc.
11.0 DATA EEPROM AND FLASH                               PIC16F/LF1825/1829
         PROGRAM MEMORY
         CONTROL                                         11.1 EEADRL and EEADRH Registers

The data EEPROM and Flash program memory are             The EEADRH:EEADRL register pair can address up to
readable and writable during normal operation (full VDD  a maximum of 256 bytes of data EEPROM or up to a
range). These memories are not directly mapped in the    maximum of 32K words of program memory.
register file space. Instead, they are indirectly
addressed through the Special Function Registers         When selecting a program address value, the MSB of
(SFRs). There are six SFRs used to access these          the address is written to the EEADRH register and the
memories:                                                LSB is written to the EEADRL register. When selecting
                                                         a EEPROM address value, only the LSB of the address
EECON1                                                 is written to the EEADRL register.

EECON2                                                 11.1.1 EECON1 AND EECON2 REGISTERS

EEDATL                                                 EECON1 is the control register for EE memory
                                                         accesses.
EEDATH
                                                         Control bit EEPGD determines if the access will be a
EEADRL                                                 program or data memory access. When clear, any
                                                         subsequent operations will operate on the EEPROM
EEADRH                                                 memory. When set, any subsequent operations will
                                                         operate on the program memory. On Reset, EEPROM is
When interfacing the data memory block, EEDATL           selected by default.
holds the 8-bit data for read/write, and EEADRL holds
the address of the EEDATL location being accessed.       Control bits RD and WR initiate read and write,
These devices have 256 bytes of data EEPROM with         respectively. These bits cannot be cleared, only set, in
an address range from 0h to 0FFh.                        software. They are cleared in hardware at completion
                                                         of the read or write operation. The inability to clear the
When accessing the program memory block, the EED-        WR bit in software prevents the accidental, premature
ATH:EEDATL register pair forms a 2-byte word that        termination of a write operation.
holds the 14-bit data for read/write, and the EEADRL
and EEADRH registers form a 2-byte word that holds       The WREN bit, when set, will allow a write operation to
the 15-bit address of the program memory location        occur. On power-up, the WREN bit is clear. The
being read.                                              WRERR bit is set when a write operation is interrupted
                                                         by a Reset during normal operation. In these situations,
The EEPROM data memory allows byte read and write.       following Reset, the user can check the WRERR bit
An EEPROM byte write automatically erases the loca-      and execute the appropriate error handling routine.
tion and writes the new data (erase before write).
                                                         Interrupt flag bit EEIF of the PIR2 register is set when
The write time is controlled by an on-chip timer. The    write is complete. It must be cleared in the software.
write/erase voltages are generated by an on-chip
charge pump rated to operate over the voltage range of   Reading EECON2 will read all `0's. The EECON2 reg-
the device for byte or word operations.                  ister is used exclusively in the data EEPROM write
                                                         sequence. To enable writes, a specific pattern must be
Depending on the setting of the Flash Program            written to EECON2.
Memory Self Write Enable bits WRT<1:0> of the
Configuration Word 2, the device may or may not be
able to write certain blocks of the program memory.
However, reads from the program memory are always
allowed.

When the device is code-protected, the device
programmer can no longer access data or program
memory. When code-protected, the CPU may continue
to read and write the data EEPROM memory and Flash
program memory.

2010 Microchip Technology Inc.  Preliminary             DS41440A-page 109
PIC16F/LF1825/1829

11.2 Using the Data EEPROM                                  11.2.2  WRITING TO THE DATA EEPROM
                                                                    MEMORY
The data EEPROM is a high-endurance, byte address-
able array that has been optimized for the storage of       To write an EEPROM data location, the user must first
frequently changing information (e.g., program vari-        write the address to the EEADRL register and the data
ables or other data that are updated often). When vari-     to the EEDATL register. Then the user must follow a
ables in one section change frequently, while variables     specific sequence to initiate the write for each byte.
in another section do not change, it is possible to
exceed the total number of write cycles to the              The write will not initiate if the above sequence is not
EEPROM without exceeding the total number of write          followed exactly (write 55h to EECON2, write AAh to
cycles to a single byte. Refer to Section 30.0 "Electri-    EECON2, then set the WR bit) for each byte. Interrupts
cal Specifications". If this is the case, then a refresh    should be disabled during this code segment.
of the array must be performed. For this reason, vari-
ables that change infrequently (such as constants, IDs,     Additionally, the WREN bit in EECON1 must be set to
calibration, etc.) should be stored in Flash program        enable write. This mechanism prevents accidental
memory.                                                     writes to data EEPROM due to errant (unexpected)
                                                            code execution (i.e., lost programs). The user should
11.2.1 READING THE DATA EEPROM                              keep the WREN bit clear at all times, except when
              MEMORY                                        updating EEPROM. The WREN bit is not cleared
                                                            by hardware.
To read a data memory location, the user must write the
address to the EEADRL register, clear the EEPGD and         After a write sequence has been initiated, clearing the
CFGS control bits of the EECON1 register, and then          WREN bit will not affect this write cycle. The WR bit will
set control bit RD. The data is available at the very next  be inhibited from being set unless the WREN bit is set.
cycle, in the EEDATL register; therefore, it can be read
in the next instruction. EEDATL will hold this value until  At the completion of the write cycle, the WR bit is
another read or until it is written to by the user (during  cleared in hardware and the EE Write Complete
a write operation).                                         Interrupt Flag bit (EEIF) is set. The user can either
                                                            enable this interrupt or poll this bit. EEIF must be
                                                            cleared by software.

EXAMPLE 11-1: DATA EEPROM READ                              11.2.3  PROTECTION AGAINST SPURIOUS
                                                                    WRITE

BANKSEL EEADRL     ;                                        There are conditions when the user may not want to
                                                            write to the data EEPROM memory. To protect against
MOVLW DATA_EE_ADDR ;                                        spurious EEPROM writes, various mechanisms have
                                                            been built-in. On power-up, WREN is cleared. Also, the
MOVWF EEADRL       ;Data Memory                             Power-up Timer (64 ms duration) prevents EEPROM
                                                            write.
                   ;Address to read

BCF  EECON1, CFGS ;Deselect Config space

BCF  EECON1, EEPGD;Point to DATA memory

BSF  EECON1, RD ;EE Read

MOVF EEDATL, W ;W = EEDATL

                                                            The write initiate sequence and the WREN bit together
                                                            help prevent an accidental write during:

Note: Data EEPROM can be read regardless of                  Brown-out
            the setting of the CPD bit.                      Power Glitch
                                                             Software Malfunction

                                                            11.2.4  DATA EEPROM OPERATION
                                                                    DURING CODE-PROTECT

                                                            Data memory can be code-protected by programming
                                                            the CPD bit in the Configuration Word 1 (Register 5-1)
                                                            to `0'.

                                                            When the data memory is code-protected, only the
                                                            CPU is able to read and write data to the data
                                                            EEPROM. It is recommended to code-protect the pro-
                                                            gram memory when code-protecting data memory.
                                                            This prevents anyone from replacing your program with
                                                            a program that will access the contents of the data
                                                            EEPROM.

DS41440A-page 110                    Preliminary                                     2010 Microchip Technology Inc.
                                                                      PIC16F/LF1825/1829

EXAMPLE 11-2: DATA EEPROM WRITE

             BANKSEL   EEADRL         ;
             MOVLW     DATA_EE_ADDR   ;
             MOVWF     EEADRL         ;Data Memory Address to write
             MOVLW     DATA_EE_DATA   ;
             MOVWF     EEDATL         ;Data Memory Value to write
             BCF       EECON1, CFGS   ;Deselect Configuration space
             BCF       EECON1, EEPGD  ;Point to DATA memory
             BSF       EECON1, WREN   ;Enable writes

Required     BCF       INTCON, GIE    ;Disable INTs.
   Sequence  MOVLW     55h            ;
             MOVWF     EECON2         ;Write 55h
             MOVLW     0AAh           ;
             MOVWF     EECON2         ;Write AAh
             BSF       EECON1, WR     ;Set WR bit to begin write
             BSF       INTCON, GIE    ;Enable Interrupts
             BCF       EECON1, WREN   ;Disable writes
             BTFSC     EECON1, WR     ;Wait for write to complete
             GOTO      $-2            ;Done

FIGURE 11-1:           FLASH PROGRAM MEMORY READ CYCLE EXECUTION

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

Flash ADDR             PC             PC + 1           EEADRH,EEADRL  PPCC++33       PC + 4         PC + 5
  Flash Data
                           INSTR (PC)         INSTR (PC + 1) EEDATH,EEDATL INSTR (PC + 3) INSTR (PC + 4)

                       INSTR(PC - 1)  BSF EECON1,RD    INSTR(PC + 1)   Forced NOP    INSTR(PC + 3)  INSTR(PC + 4)
                       executed here    executed here  executed here  executed here  executed here  executed here

             RD bit

             EEDATH
             EEDATL
             Register

             EERHLT

2010 Microchip Technology Inc.                        Preliminary                                  DS41440A-page 111
PIC16F/LF1825/1829

11.3 Flash Program Memory Overview                            11.3.1  READING THE FLASH PROGRAM
                                                                      MEMORY
It is important to understand the Flash program mem-
ory structure for erase and programming operations.           To read a program memory location, the user must:
Flash program memory is arranged in rows. A row con-
sists of a fixed number of 14-bit program memory              1. Write the Least and Most Significant address
words. A row is the minimum block size that can be                  bits to the EEADRH:EEADRL register pair.
erased by user software.
                                                              2. Clear the CFGS bit of the EECON1 register.
Flash program memory may only be written or erased
if the destination address is in a segment of memory          3. Set the EEPGD control bit of the EECON1
that is not write-protected, as defined in bits WRT<1:0>            register.
of Configuration Word 2.
                                                              4. Then, set control bit RD of the EECON1 register.
After a row has been erased, the user can reprogram
all or a portion of this row. Data to be written into the     Once the read control bit is set, the program memory
program memory row is written to 14-bit wide data write       Flash controller will use the second instruction cycle to
latches. These write latches are not directly accessible      read the data. This causes the second instruction
to the user, but may be loaded via sequential writes to       immediately following the "BSF EECON1,RD" instruction
the EEDATH:EEDATL register pair.                              to be ignored. The data is available in the very next cycle,
                                                              in the EEDATH:EEDATL register pair; therefore, it can
Note:  If the user wants to modify only a portion             be read as two bytes in the following instructions.
       of a previously programmed row, then the
       contents of the entire row must be read                EEDATH:EEDATL register pair will hold this value until
       and saved in RAM prior to the erase.                   another read or until it is written to by the user.

The number of data write latches is not equivalent to         Note 1: The two instructions following a program
the number of row locations. During programming, user                     memory read are required to be NOPs.
software will need to fill the set of write latches and ini-              This prevents the user from executing a
tiate a programming operation multiple times in order to                  two-cycle instruction on the next
fully reprogram an erased row. For example, a device                      instruction after the RD bit is set.
with a row size of 32 words and eight write latches will
need to load the write latches with data and initiate a              2: Flash program memory can be read
programming operation four times.                                         regardless of the setting of the CP bit.

The size of a program memory row and the number of
program memory write latches may vary by device.
See Table 11-1 for details.

TABLE 11-1: FLASH MEMORY
                     ORGANIZATION BY DEVICE

Device             Erase Block    Number of
                   (Row) Size/  Write Latches/
                    Boundary
                                   Boundary

PIC16F/LF1825/ 32 words,           32 words,
                                EEADRL<4:0>
1829               EEADRL<4:0>
                                   = 00000
                   = 00000

DS41440A-page 112               Preliminary                            2010 Microchip Technology Inc.
                                                       PIC16F/LF1825/1829

EXAMPLE 11-3: FLASH PROGRAM MEMORY READ

* This code block will read 1 word of program
* memory at the memory address:

        PROG_ADDR_HI : PROG_ADDR_LO
* data will be returned in the variables;
* PROG_DATA_HI, PROG_DATA_LO

BANKSEL  EEADRL                  ; Select Bank for EEPROM registers
MOVLW    PROG_ADDR_LO            ;
MOVWF    EEADRL                  ; Store LSB of address
MOVLW    PROG_ADDR_HI            ;
MOVWL    EEADRH                  ; Store MSB of address

BCF      EECON1,CFGS             ; Do not select Configuration Space

BSF      EECON1,EEPGD            ; Select Program Memory

BCF      INTCON,GIE              ; Disable interrupts

BSF      EECON1,RD               ; Initiate read

NOP                              ; Executed (Figure 11-1)

NOP                              ; Ignored (Figure 11-1)

BSF      INTCON,GIE              ; Restore interrupts

MOVF     EEDATL,W                ; Get LSB of word
MOVWF    PROG_DATA_LO            ; Store in user location
MOVF     EEDATH,W                ; Get MSB of word
MOVWF    PROG_DATA_HI            ; Store in user location

2010 Microchip Technology Inc.  Preliminary                          DS41440A-page 113
PIC16F/LF1825/1829                                         The following steps should be completed to load the
                                                           write latches and program a block of program memory.
11.3.2 ERASING FLASH PROGRAM                               These steps are divided into two parts. First, all write
              MEMORY                                       latches are loaded with data except for the last program
                                                           memory location. Then, the last write latch is loaded
While executing code, program memory can only be           and the programming sequence is initiated. A special
erased by rows. To erase a row:                            unlock sequence is required to load a write latch with
                                                           data or initiate a Flash programming operation. This
1. Load the EEADRH:EEADRL register pair with               unlock sequence should not be interrupted.
      the address of new row to be erased.
                                                           1. Set the EEPGD and WREN bits of the EECON1
2. Clear the CFGS bit of the EECON1 register.                    register.
3. Set the EEPGD, FREE, and WREN bits of the
                                                           2. Clear the CFGS bit of the EECON1 register.
      EECON1 register.
4. Write 55h, then AAh, to EECON2 (Flash                   3. Set the LWLO bit of the EECON1 register. When
                                                                 the LWLO bit of the EECON1 register is `1', the
      programming unlock sequence).                              write sequence will only load the write latches
5. Set control bit WR of the EECON1 register to                  and will not initiate the write to Flash program
                                                                 memory.
      begin the erase operation.
6. Poll the FREE bit in the EECON1 register to             4. Load the EEADRH:EEADRL register pair with
                                                                 the address of the location to be written.
      determine when the row erase has completed.
                                                           5. Load the EEDATH:EEDATL register pair with
See Example 11-4.                                                the program memory data to be written.

After the "BSF EECON1,WR" instruction, the processor       6. Write 55h, then AAh, to EECON2, then set the
requires two cycles to set up the erase operation. The           WR bit of the EECON1 register (Flash
user must place two NOP instructions after the WR bit is         programming unlock sequence). The write latch
set. The processor will halt internal operations for the         is now loaded.
typical 2 ms erase time. This is not Sleep mode as the
clocks and peripherals will continue to run. After the     7. Increment the EEADRH:EEADRL register pair
erase cycle, the processor will resume operation with            to point to the next location.
the third instruction after the EECON1 write instruction.
                                                           8. Repeat steps 5 through 7 until all but the last
11.3.3 WRITING TO FLASH PROGRAM                                  write latch has been loaded.
              MEMORY
                                                           9. Clear the LWLO bit of the EECON1 register.
Program memory is programmed using the following                 When the LWLO bit of the EECON1 register is
steps:                                                           `0', the write sequence will initiate the write to
                                                                 Flash program memory.
1. Load the starting address of the word(s) to be
      programmed.                                          10. Load the EEDATH:EEDATL register pair with
                                                                 the program memory data to be written.
2. Load the write latches with data.
3. Initiate a programming operation.                       11. Write 55h, then AAh, to EECON2, then set the
4. Repeat steps 1 through 3 until all data is written.           WR bit of the EECON1 register (Flash
                                                                 programming unlock sequence). The entire
Before writing to program memory, the word(s) to be              latch block is now written to Flash program
written must be erased or previously unwritten. Pro-             memory.
gram memory can only be erased one row at a time. No
automatic erase occurs upon the initiation of the write.   It is not necessary to load the entire write latch block
                                                           with user program data. However, the entire write latch
Program memory can be written one or more words at         block will be written to program memory.
a time. The maximum number of words written at one
time is equal to the number of write latches. See          An example of the complete write sequence for eight
Figure 11-2 for more details. The write latches are        words is shown in Example 11-5. The initial address is
aligned to the address boundary defined by EEADRL          loaded into the EEADRH:EEADRL register pair; the
as shown in Table 11-1. Write operations do not cross      eight words of data are loaded using indirect addressing.
these boundaries. At the completion of a program
memory write operation, the write latches are reset to
contain 0x3FFF.

DS41440A-page 114  Preliminary                              2010 Microchip Technology Inc.
                                                            PIC16F/LF1825/1829

After the "BSF EECON1,WR" instruction, the processor        continue to run. The processor does not stall when
requires two cycles to set up the write operation. The      LWLO = 1, loading the write latches. After the write
user must place two NOP instructions after the WR bit is    cycle, the processor will resume operation with the third
set. The processor will halt internal operations for the    instruction after the EECON1 write instruction.
typical 2 ms, only during the cycle in which the write
takes place (i.e., the last word of the block write). This
is not Sleep mode as the clocks and peripherals will

FIGURE 11-2:  BLOCK WRITES TO FLASH PROGRAM MEMORY WITH 32 WRITE LATCHES

                                 75                         07                   0

                                         EEDATH                 EEDATA

                                         6                              8

First word of block                                                                 Last word of block
to be written                                                                               to be written

              14                         14                             14                       14

EEADRL<4:0> = 00000 EEADRL<4:0> = 00001      EEADRL<4:0> = 00010            EEADRL<4:0> = 11111

Buffer Register                  Buffer Register                Buffer Register     Buffer Register

                                            Program Memory

2010 Microchip Technology Inc.          Preliminary                                DS41440A-page 115
PIC16F/LF1825/1829

EXAMPLE 11-4: ERASING ONE ROW OF PROGRAM MEMORY

; This row erase routine assumes the following:
; 1. A valid address within the erase block is loaded in ADDRH:ADDRL
; 2. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F

             BCF      INTCON,GIE    ; Disable ints so required sequences will execute properly
             BANKSEL  EEADRL
             MOVF     ADDRL,W       ; Load lower 8 bits of erase address boundary
             MOVWF    EEADRL
             MOVF     ADDRH,W       ; Load upper 6 bits of erase address boundary
             MOVWF    EEADRH
             BSF      EECON1,EEPGD  ; Point to program memory
             BCF      EECON1,CFGS   ; Not configuration space
             BSF      EECON1,FREE   ; Specify an erase operation
             BSF      EECON1,WREN   ; Enable writes

Required     MOVLW    55h           ; Start of required sequence to initiate erase
   Sequence  MOVWF    EECON2        ; Write 55h
             MOVLW    0AAh          ;
             MOVWF    EECON2        ; Write AAh
             BSF      EECON1,WR     ; Set WR bit to begin erase
             NOP                    ; Any instructions here are ignored as processor
                                    ; halts to begin erase sequence
             NOP                    ; Processor will stop here and wait for erase complete.

             BCF                    ; after erase processor continues with 3rd instruction
             BSF
                      EECON1,WREN   ; Disable writes
                      INTCON,GIE    ; Enable interrupts

DS41440A-page 116                   Preliminary                        2010 Microchip Technology Inc.
                                                     PIC16F/LF1825/1829

EXAMPLE 11-5: WRITING TO FLASH PROGRAM MEMORY

; This write routine assumes the following:

; 1. The 16 bytes of data are loaded, starting at the address in DATA_ADDR

; 2. Each word of data to be written is made up of two adjacent bytes in DATA_ADDR,

; stored in little endian format

; 3. A valid starting address (the least significant bits = 000) is loaded in ADDRH:ADDRL

; 4. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F

;

                BCF    INTCON,GIE   ; Disable ints so required sequences will execute properly

                BANKSEL EEADRH      ; Bank 3

                MOVF   ADDRH,W      ; Load initial address

                MOVWF  EEADRH       ;

                MOVF   ADDRL,W      ;

                MOVWF  EEADRL       ;

                MOVLW  LOW DATA_ADDR ; Load initial data address

                MOVWF  FSR0L        ;

                MOVLW  HIGH DATA_ADDR ; Load initial data address

                MOVWF  FSR0H        ;

                BSF    EECON1,EEPGD ; Point to program memory

                BCF    EECON1,CFGS ; Not configuration space

                BSF    EECON1,WREN ; Enable writes

                BSF    EECON1,LWLO ; Only Load Write Latches

LOOP

                MOVIW  FSR0++       ; Load first data byte into lower

                MOVWF  EEDATL       ;

                MOVIW  FSR0++       ; Load second data byte into upper

                MOVWF  EEDATH       ;

                MOVF   EEADRL,W     ; Check if lower bits of address are '000'
                XORLW  0x07         ; Check if we're on the last of 8 addresses
                ANDLW  0x07         ;
                BTFSC  STATUS,Z     ; Exit if last of eight words,
                GOTO   START_WRITE  ;

   Required     MOVLW  55h          ; Start of required write sequence:
      Sequence  MOVWF  EECON2       ; Write 55h
                MOVLW  0AAh         ;
                MOVWF  EECON2       ; Write AAh
                BSF    EECON1,WR    ; Set WR bit to begin write
                NOP                 ; Any instructions here are ignored as processor
                                    ; halts to begin write sequence
                NOP                 ; Processor will stop here and wait for write to complete.

                                    ; After write processor continues with 3rd instruction.

                INCF   EEADRL,F     ; Still loading latches Increment address
                GOTO   LOOP         ; Write next latches

START_WRITE            EECON1,LWLO  ; No more loading latches - Actually start Flash program
             BCF                    ; memory write

   Required     MOVLW  55h          ; Start of required write sequence:
      Sequence  MOVWF  EECON2       ; Write 55h
                MOVLW  0AAh         ;
                MOVWF  EECON2       ; Write AAh
                BSF    EECON1,WR    ; Set WR bit to begin write
                NOP                 ; Any instructions here are ignored as processor
                                    ; halts to begin write sequence
                NOP                 ; Processor will stop here and wait for write complete.

                                    ; after write processor continues with 3rd instruction

                BCF    EECON1,WREN ; Disable writes

                BSF    INTCON,GIE   ; Enable interrupts

2010 Microchip Technology Inc.        Preliminary                               DS41440A-page 117
PIC16F/LF1825/1829

11.4 Modifying Flash Program Memory                       11.5 User ID, Device ID and
                                                                   Configuration Word Access
When modifying existing data in a program memory
row, and data within that row must be preserved, it must  Instead of accessing program memory or EEPROM
first be read and saved in a RAM image. Program           data memory, the User ID's, Device ID/Revision ID and
memory is modified using the following steps:             Configuration Words can be accessed when CFGS = 1
                                                          in the EECON1 register. This is the region that would
1. Load the starting address of the row to be             be pointed to by PC<15> = 1, but not all addresses are
      modified.                                           accessible. Different access may exist for reads and
                                                          writes. Refer to Table 11-2.
2. Read the existing data from the row into a RAM
      image.                                              When read access is initiated on an address outside the
                                                          parameters listed in Table 11-2, the EEDATH:EEDATL
3. Modify the RAM image to contain the new data           register pair is cleared.
      to be written into program memory.

4. Load the starting address of the row to be
      rewritten.

5. Erase the program memory row.
6. Load the write latches with data from the RAM

      image.
7. Initiate a programming operation.
8. Repeat steps 6 and 7 as many times as required

      to reprogram the erased row.

TABLE 11-2: USER ID, DEVICE ID AND CONFIGURATION WORD ACCESS (CFGS = 1)

       Address         Function                           Read Access        Write Access

     8000h-8003h       User IDs                           Yes                Yes

       8006h           Device ID/Revision ID              Yes                No

     8007h-8008h       Configuration Words 1 and 2        Yes                No

EXAMPLE 11-3: CONFIGURATION WORD AND DEVICE ID ACCESS

* This code block will read 1 word of program memory at the memory address:
* PROG_ADDR_LO (must be 00h-08h) data will be returned in the variables;
* PROG_DATA_HI, PROG_DATA_LO

BANKSEL  EEADRL        ; Select correct Bank
MOVLW    PROG_ADDR_LO  ;
MOVWF    EEADRL        ; Store LSB of address
CLRF     EEADRH        ; Clear MSB of address

BSF      EECON1,CFGS   ; Select Configuration Space

BCF      INTCON,GIE    ; Disable interrupts

BSF      EECON1,RD     ; Initiate read

NOP