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

产品描述

搜索
 

PIC16F1824T-I/ML

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

器件描述

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

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

参数
参数名称属性值
端子数量16
最大工作温度125 Cel
最小工作温度-40 Cel
最大供电/工作电压5.5 V
最小供电/工作电压2.5 V
额定供电电压3 V
外部数据总线宽度0.0
输入输出总线数量12
线速度32 MHz
加工封装描述4 X 4 MM, 0.90 MM HEIGHT, PLASTIC, QFN-16
无铅Yes
欧盟RoHS规范Yes
中国RoHS规范Yes
状态ACTIVE
包装形状SQUARE
包装尺寸CHIP CARRIER, HEAT SINK/SLUG, VERY THIN PROFILE
表面贴装Yes
端子形式NO LEAD
端子间距0.6500 mm
端子涂层MATTE TIN
端子位置QUAD
包装材料PLASTIC/EPOXY
温度等级AUTOMOTIVE
ADC通道Yes
地址总线宽度0.0
位数8
最大FCLK时钟频率32 MHz
DAC通道Yes
微处理器类型RISC MICROCONTROLLER
PWM通道Yes
ROM编程FLASH

PIC16F1824T-I/ML器件文档内容

                                     PIC16F/LF1824/1828
                                                   Data Sheet

                                 14/20-Pin Flash Microcontrollers
                                  with nanoWatt XLP Technology

2010 Microchip Technology Inc.  Preliminary  DS41419A
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-287-8

                                                                   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.

DS41419A-page ii  Preliminary                                       2010 Microchip Technology Inc.
                                                    PIC16F/LF1824/1828

14/20-Pin Flash Microcontrollers with nanoWatt Technology

High-Performance RISC CPU:                          Extreme Low-Power Management
                                                    PIC16LF1824/1828 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 4 Kbytes Linear Program Memory               Analog-to-Digital Converter (ADC) module:
   addressing                                          - 10-bit resolution, up to 12 channels
                                                       - Auto acquisition capability
Up to 256 bytes Linear Data Memory Addressing        - Conversion available during Sleep
Interrupt Capability with Automatic Context
                                                    Analog Comparator module:
   Saving                                              - Two rail-to-rail analog comparators
16-Level Deep Hardware Stack with Optional           - Power mode control
                                                       - Software controllable hysteresis
   Overflow/Underflow Reset
Direct, Indirect and Relative Addressing modes:    Voltage Reference module:
                                                       - Fixed Voltage Reference (FVR) with 1.024V,
   - Two full 16-bit File Select Registers (FSRs)         2.048V and 4.096V output levels
   - FSRs can read program and data memory             - 5-bit rail-to-rail resistive DAC with positive
                                                          and negative reference selection
Flexible Oscillator Structure:
                                                    Peripheral Highlights:
Precision 32 MHz Internal Oscillator Block:
   - Factory calibrated to 1%, typical             Up to 17 I/O Pins and 1 Input Only Pin:
   - Software selectable frequencies range of          - High current sink/source 25 mA/25 mA
      31 kHz to 32 MHz                                 - Programmable weak pull-ups
                                                       - Programmable interrupt-on-change pins
31 kHz Low-Power Internal Oscillator
Four Crystal modes up to 32 MHz                   Timer0: 8-Bit Timer/Counter with 8-Bit Prescaler
Three External Clock modes up to 32 MHz            Enhanced Timer1:
4X Phase Lock Loop (PLL)
Fail-Safe Clock Monitor:                             - 16-bit timer/counter with prescaler
                                                       - External Gate Input mode
   - Allows for safe shutdown if peripheral clock      - Dedicated, low-power 32 kHz oscillator driver
      stops                                          Three Timer2-types: 8-Bit Timer/Counter with 8-Bit
                                                       Period Register, Prescaler and Postscaler
Two-Speed Oscillator Start-up                      Two Capture, Compare, PWM (CCP) modules
Reference Clock module:                            Two Enhanced CCP (ECCP) modules:
                                                       - Software selectable time bases
   - Programmable clock output frequency and           - Auto-shutdown and auto-restart
      duty-cycle                                       - PWM steering
                                                    Master Synchronous Serial Port (MSSP) with SPI
Special Microcontroller Features:                      and I2CTM with:
                                                       - 7-bit address masking
1.8V-5.5V operation PIC16F1824/1828                - SMBus/PMBusTM compatibility
1.8V-3.6V operation PIC16LF1824/1828             Enhanced Universal Synchronous Asynchronous
Self-Programmable under Software Control             Receiver Transmitter (EUSART) module
Power-on Reset (POR), Power-up Timer (PWRT)       mTouchTM Sensing Oscillator module:
                                                       - Up to 12 input channels
   and Oscillator Start-up Timer (OST)               Data Signal Modulator module:
Programmable Brown-out Reset (BOR)                   - Selectable modulator and carrier sources
Extended Watchdog Timer (WDT)
In-Circuit Serial ProgrammingTM (ICSPTM) via

   two pins
In-Circuit Debug (ICD) via Two Pins
Enhanced Low-Voltage Programming (LVP)
Operating Voltage Range:

   - 1.8V-5.5V (PIC16F1824/1828)
   - 1.8V-3.6V (PIC16LF1824/1828)
Programmable Code Protection
Power-Saving Sleep Mode

2010 Microchip Technology Inc.  Preliminary        DS41419A-page 3
PIC16F/LF1824/1828

Peripheral Features (Continued):

SR Latch:
   - Multiple Set/Reset input options
   - Emulates 555 Timer applications

PIC16F/LF1824/1828 Family Types

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

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

                                                                              Comparators
                                                                                       Timers (8/16-bit)

                                                                                                EUSART
                                                                                                         MSSP

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

                                                                                                                                   CCP
                                                                                                                                            SR Latch
                 Memory Memory

PIC16LF1824      4K       256 256 12 8 8 2 4/1 1 1 1 1 2 Yes

PIC16F1824       4K       256 256 12 8 8 2 4/1 1 1 1 1 2 Yes

PIC16LF1828      4K       256 256 18 12 12 2 4/1 1 1 1 1 2 Yes

PIC16F1828       4K       256 256 18 12 12 2 4/1 1 1 1 1 2 Yes

Note 1: One pin is input only.

DS41419A-page 4                       Preliminary   2010 Microchip Technology Inc.
DS41419A-page 5                  FIGURE 1:  14-PIN DIAGRAM FOR PIC16F/LF1824                                                                                                                           PIC16F/LF1824/1828

                                 PDIP, SOIC, TSSOP

                                                                                                                        VDD  1                 14  VSS
                                                             CCP2(1)/P2A(1)/T1CKI/T1OSI/OSC1/CLKIN/RA5                                             RA0/AN0/CPS0/C1IN+/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)/SS(1)/RA3             3  PIC16F/LF1824  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/SS(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 registers.

2010 Microchip Technology Inc.
DS41419A-page 6                  FIGURE 2:     16-PIN DIAGRAM FOR PIC16F/LF1824                                                                                                                                                                                                                                                                                                  PIC16F/LF1824/1828

                                          QFN

                                                                                                                      VDD                                   NC                                                      NC                                                  VSS

                                                                                                                      16                                    15                                                      14                                                  13

                                                             CCP2(1)/P2A(1)/T1CKI/T1OSI/OSC1/CLKIN/RA5             1                                                                                                                                                         12                                      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
                                                                                                                   2                                                                                                                                                         11                                      RA2/AN2/CPS2/T0CKI/INT/C1OUT/SRQ/CCP3//FLT0
                                                                                        MCLR/VPP/T1G(1)/SS(1)/RA3                                                                                                                                                                                                    RC0/AN4/CPS4/C2IN+/SCL/SCK/P1D(1)
                                                                             MDCIN2/DT(1)/RX(1)/CCP1/P1A/RC5          PIC16F/LF1824

                                                                                                                   3                                                                                                                                                         10

                                                                                                                   4                                                                                                                                                                                              9

                                                                                                                      5                                     6                                                       7 RC2/AN6/CPS6/C12IN2-/P1D(1)/P2B(1)/SDO(1)/MDCIN1  8

Preliminary                                                                                                           RC4/C2OUT/SRNQ/P1B/TX(1)/CK(1)/MDOUT  RC3/AN7/CPS7/C12IN3-/P2A(1)/CCP2(1)/P1C(1)/MDMIN/SS(1)                                                      RC1/AN5/CPS5/C12IN1-/SDA/SDI/P1C(1)/CCP4

2010 Microchip Technology Inc.                Note 1: Pin function is selectable via the APFCON0 or APFCON1 registers.
                                   PIC16F/LF1824/1828

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

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
                                                                                   CK(1)     --
               DACOUT                                                       --     RX(1)     --                 ICDDAT
                                                                                   DT(1)
RA1 12 11 AN1 VREF+ CPS1 C12IN0- SRI               --                     CCP3             SS(1)  IOC   --  Y ICSPCLK
                                                                          FLT0       --   SDO(1)
                                                                                                                ICDCLK
                                                                            --       --      --
RA2 11 10 AN2  --                CPS2 C1OUT SRQ T0CKI                                      SCL    INT/  --  Y   --
                                                                                           SCK
                                                                                           SDA    IOC
                                                                                            SDI
RA3 4 3 --     --                --    --    --    T1G(1)                                 SDO(1)  IOC   --  Y   MCLR
                                                                                           SS(1)
                                                                                                                VPP
                                                                                             --
RA4 3 2 AN3    --                CPS3  --    --    T1G(1) P2B(1)                   --        --   IOC   --  Y   OSC2
                                                                                             --
                                                   T1OSO                                     --                 CLKOUT

                                                                                                                CLKR

RA5 2 1 --     --                --    --    -- T1CKI CCP2                         --             IOC   --  Y   OSC1
                                                   T1OSI P2A(1)
                                                                                                                CLKIN

RC0 10 9 AN4   --                CPS4 C2IN+  --    --                     P1D(1)   --             --    --  Y   --

RC1 9 8 AN5    --                CPS5 C12IN1- --   --                     CCP4       --           --    --  Y   --
                                                                          P1C(1)
                                                                                     --
RC2 8 7 AN6    --                CPS6 C12IN2- --   --                     P1D(1)                  -- MDCIN1 Y   --
                                                                          P2B(1)     --

RC3 7 6 AN7    --                CPS7 C12IN3- --   --                     CCP2(1)  TX(1)          -- MDMIN Y    --
                                                                          P1C(1)   CK(1)
                                                                          P2A(1)   RX(1)
                                                                                   DT(1)
RC4 6 5 --     --                --    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 registers.

2010 Microchip Technology Inc.              Preliminary                                                    DS41419A-page 7
DS41419A-page 8                  FIGURE 3:  20-PIN DIAGRAM FOR PIC16F/LF1828                                                                                              PIC16F/LF1824/1828

                                 PDIP, SOIC, TSSOP

                                                                              VDD              1                      20  VSS

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

                                            T1G(1)/P2B(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/LF1828      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)

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

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

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

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

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

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

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

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

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

                                                                                        MCLR/VPP/T1G(1)/RA3  1  20                                                 19                                         18                                           16                           15                 RA1/AN1/CPS1/C12IN0-/VREF+/SRI/ICSPCLK/ICDCLK  PIC16F/LF1824/1828
                                                                      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)
                                                                                                             3 PIC16F/LF182813                                                                                                                                                                             RC1/AN5/CPS5/C12IN1-/P1C(1)
                                                                                    SS/CCP4/CPS8/AN8/RC6                                                                                                                                                                                                   RC2/AN6/CPS6/C12IN2-/P1D(1)/P2B(1)/MDCIN1
                                                                                                             4                                                                                                                                                                          12

                                                                                                             5                                                                                                                                             10 RB4/AN10/CPS10/SDA1/SDI1  11

                                                                                                                6 RC7/AN9/CPS9/SDO                                 7                                          8 RB6/SCL1/SCK1  9

                                                                                                                                    RB7/TX(1)/CK(1)                                                                            RB5/AN11/CPS11/RX(1)/DT(1)

DS41419A-page 9                  Note 1: Pin function is selectable via the APFCON0 or APFCON1 registers.
PIC16F/LF1824/1828

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

I/O
          20-Pin DIP/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                                                             --     --

RA1 18 15 AN1 VREF+ CPS1 C12IN0- SRI       --                             --         --     --  IOC   --  Y ICSPCLK/
                                                                                                                    ICDCLK
                                                                                     --     --
RA2 17 14 AN2     --      CPS2 C1OUT SRQ T0CKI                            CCP3                  INT/  --  Y     --
                                                                                     --     --
                                                                          FLT0                  IOC
                                                                                     --     --
RA3 4 1           --      --     --  --    T1G(1)                         --                    IOC   --  Y(4)  MCLR
                                                                                     --   SDA1
                                                                                   RX(1)  SDI1                  VPP
                                                                                   DT(1)
RA4 3 20 AN3      --      CPS3   --  --    T1G(1)                         P2B(1)            --  IOC   --  Y     OSC2
                                                                                     --
                                           T1OSO                                   TX(1)  SCL1                  CLKOUT
                                                                                   CK(1)  SCK1
                                                                                                                CLKR
                                                                                     --     --
RA5 2 19 --       --      --     --  --    T1CKI                          CCP2(1)    --         IOC   --  Y     OSC1
RB4 13 10 AN10                                                            P2A(1)     --     --
                                           T1OSI                                            --                  CLKIN
                                                                                     --     --
                  -- CPS10 --              --                             --                    IOC   --  Y     --
                                                                                   TX(1)    --
RB5 12 9 AN11     --      CPS11  --  --    --                             --       CK(1)        IOC   --  Y     --
                                                                                   RX(1)
RB6 11 8 --       --      --     --  --    --                             --       DT(1)        IOC   --  Y     --

RB7 10 7 --       --      --     --  --    --                                 --     --         IOC   --  Y     --
                                                                                     --
RC0 16 13 AN4     --      CPS4 C2IN+ --    --                              P1D(1)    --         --    --  Y     --
                                                                           P1C(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   --  --    --                                             SS    --    --  Y     --
                                                                          CCP4

RC7 9 6 AN9       --      CPS9   --  --    --                             --              SDO   --    --  Y     --

VDD 1 18 --       --      --     --  --    --                             --              --    --    --  --    VDD

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

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

DS41419A-page 10                     Preliminary                                               2010 Microchip Technology Inc.
                                   PIC16F/LF1824/1828

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.0 Power-Down Mode (Sleep) ...................................................................................................................................................... 101
10.0 Watchdog Timer (WDT) ........................................................................................................................................................... 103
11.0 Data EEPROM and Flash Program Memory Control ............................................................................................................... 107
12.0 I/O Ports ................................................................................................................................................................................... 121
13.0 Interrupt-on-Change ................................................................................................................................................................. 141
14.0 Fixed Voltage Reference (FVR) ............................................................................................................................................... 145
15.0 Analog-to-Digital Converter (ADC) Module .............................................................................................................................. 147
16.0 Digital-to-Analog Converter (DAC) Module .............................................................................................................................. 161
17.0 SR Latch................................................................................................................................................................................... 167
18.0 Comparator Module.................................................................................................................................................................. 173
19.0 Timer0 Module ......................................................................................................................................................................... 183
20.0 Timer1 Module ......................................................................................................................................................................... 187
21.0 Timer2/4/6 Modules.................................................................................................................................................................. 199
22.0 Data Signal Modulator (DSM) .................................................................................................................................................. 203
23.0 Capture/Compare/PWM Module .............................................................................................................................................. 213
24.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 241
25.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ............................................................... 295
26.0 Capacitive Sensing Module...................................................................................................................................................... 323
27.0 In-Circuit Serial ProgrammingTM (ICSPTM) ................................................................................................................................ 333
28.0 Instruction Set Summary .......................................................................................................................................................... 337
29.0 Electrical Specifications............................................................................................................................................................ 351
30.0 DC and AC Characteristics Graphs and Tables....................................................................................................................... 383
31.0 Development Support............................................................................................................................................................... 385
32.0 Packaging Information.............................................................................................................................................................. 389
Appendix A: Revision History............................................................................................................................................................. 407
Appendix B: Device Differences ........................................................................................................................................................ 407
Index .................................................................................................................................................................................................. 409
The Microchip Web Site ..................................................................................................................................................................... 417
Customer Change Notification Service .............................................................................................................................................. 417
Customer Support .............................................................................................................................................................................. 417
Reader Response .............................................................................................................................................................................. 418
Product Identification System ............................................................................................................................................................ 419

2010 Microchip Technology Inc.  Preliminary  DS41419A-page 11
PIC16F/LF1824/1828

                                    TO OUR VALUED CUSTOMERS

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

Most Current Data Sheet

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

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

Errata

  An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current
  devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision
  of silicon and revision of document to which it applies.
  To determine if an errata sheet exists for a particular device, please check with one of the following:

   Microchip's Worldwide Web site; http://www.microchip.com
   Your local Microchip sales office (see last page)
   The Microchip Corporate Literature Center; U.S. FAX: (480) 792-7277

  When contacting a sales office or the literature center, please specify which device, revision of silicon and data sheet (include
  literature number) you are using.

Customer Notification System

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

DS41419A-page 12  Preliminary   2010 Microchip Technology Inc.
                                                            PIC16F/LF1824/1828

1.0 DEVICE OVERVIEW

The PIC16F/LF1824/1828 are described within this data
sheet. They are available in 14/20 pin packages.
Figure 1-1 shows a block diagram of the
PIC16F/LF1824/1828 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/LF1824
                                             PIC16F/LF1828

ADC                                   

Capacitive Sensing Module (CSM)      

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

             MSSP                     

Timers

             Timer0                  

             Timer1                  

             Timer2                  

             Timer4                  

             Timer6                  

2010 Microchip Technology Inc.         Preliminary         DS41419A-page 13
PIC16F/LF1824/1828

FIGURE 1-1:       PIC16F/LF1824/1828 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/LF1828 only.

DS41419A-page 14                                  Preliminary                               2010 Microchip Technology Inc.
                                                         PIC16F/LF1824/1828

TABLE 1-2: PIC16F/LF1824 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       TTL 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/SS(1)/T1G(1)/VPP/MCLR        RA3       TTL   -- General purpose input.

                                 SS        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 APFCONO and APFCON1 registers (Register 12-1 and Register 12-2).

2: Default function location.

2010 Microchip Technology Inc.                 Preliminary                                      DS41419A-page 15
PIC16F/LF1824/1828

TABLE 1-2: PIC16F/LF1824 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 APFCONO and APFCON1 registers (Register 12-1 and Register 12-2).

2: Default function location.

DS41419A-page 16                              Preliminary                         2010 Microchip Technology Inc.
                                                            PIC16F/LF1824/1828

TABLE 1-2: PIC16F/LF1824 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
SS(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.

                                    SS        ST    -- Slave Select input.

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

                                    SRNQ      -- CMOS SR latch inverting output.

                                    P1B       -- CMOS PWM output.

                                    TX        -- CMOS USART asynchronous transmit.

                                    CK        ST CMOS USART synchronous clock.

RC5/P1A/CCP1/RX(1,2)/DT(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 APFCONO and APFCON1 registers (Register 12-1 and Register 12-2).

     2: Default function location.

2010 Microchip Technology Inc.                   Preliminary                                   DS41419A-page 17
PIC16F/LF1824/1828

TABLE 1-3: PIC16F/LF1828 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       TTL 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/P2B(1)/       AN3
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.

                               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 APFCONO and APFCON1 registers (Register 12-1 and Register 12-2).

2: Default function location.

DS41419A-page 18                              Preliminary                         2010 Microchip Technology Inc.
                                                         PIC16F/LF1824/1828

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

Name                             Function  Input Output                         Description
                                           Type Type

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.

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 I2C data input/output.

RB5/AN11/CPS11/RX(1,2)/DT(1,2)   SDI1      CMOS -- SPI data input.
                                 RB5        TTL CMOS General purpose I/O.

                                 AN11      AN    -- A/D Channel 11 input.

                                 CPS11 AN        -- Capacitive sensing input 11.

                                 RX        ST    -- USART asynchronous input.

                                 DT        ST CMOS USART synchronous data.

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

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

                                 TX        -- CMOS USART asynchronous transmit.

RC0/AN4/CPS4/C2IN+/P1D(1)        CK        ST CMOS USART synchronous clock.
                                 RC0       TTL CMOS General purpose I/O.

                                 AN4       AN    -- A/D Channel 4 input.

                                 CPS4      AN    -- Capacitive sensing input 4.

                                 C2IN+     AN    -- Comparator C2 positive input.

RC1/AN5/CPS5/C12IN1-/P1C(1)      P1D        -- CMOS PWM output.
                                 RC1       TTL CMOS General purpose I/O.

                                 AN5       AN    -- A/D Channel 5 input.

                                 CPS5      AN    -- Capacitive sensing input 5.

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

                                 P1C       -- CMOS PWM output.

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.

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 APFCONO and APFCON1 registers (Register 12-1 and Register 12-2).

2: Default function location.

2010 Microchip Technology Inc.                 Preliminary                                  DS41419A-page 19
PIC16F/LF1824/1828

TABLE 1-3: PIC16F/LF1828 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
                                    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.

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

                                    SRNQ      -- CMOS SR latch inverting output.

                                    P1B       -- CMOS PWM output.

                                    TX        -- CMOS USART asynchronous transmit.

                                    CK        ST CMOS USART synchronous clock.

RC5/P1A/CCP1/RX(1)/DT(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/SS                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.

                                    SS        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 APFCONO and APFCON1 registers (Register 12-1 and Register 12-2).

     2: Default function location.

DS41419A-page 20                                  Preliminary                        2010 Microchip Technology Inc.
                                                           PIC16F/LF1824/1828

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 28.0 "Instruction Set Summary" for more
details.

2010 Microchip Technology Inc.  Preliminary               DS41419A-page 21
PIC16F/LF1824/1828

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

DS41419A-page 22                                             Preliminary                                     2010 Microchip Technology Inc.
3.0 MEMORY ORGANIZATION                                PIC16F/LF1824/1828

There are three types of memory in                     The following features are associated with access and
PIC16F/LF1824/1828 devices: Data Memory, Program       control of program memory and data memory:
Memory and Data EEPROM Memory(1).                      PCL and PCLATH
                                                       Stack
Program Memory                                        Indirect Addressing
Data Memory
                                                       3.1 Program Memory Organization
   - Core Registers
   - Special Function Registers                        The enhanced mid-range core has a 15-bit program
   - General Purpose RAM                               counter capable of addressing a 32K x 14 program
   - Common RAM                                        memory space. Table 3-1 shows the memory sizes
   - Device Memory Maps                                implemented for the PIC16F/LF1824/1828 family.
   - Special Function Registers Summary                Accessing a location above these boundaries will cause
Data EEPROM memory(1)                                a wrap-around within the implemented memory space.
                                                       The Reset vector is at 0000h and the interrupt vector is
    Note 1: The data EEPROM memory and the             at 0004h (see Figures 3-1).
                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
                                                                                0FFFh
PIC16F/LF1824/1828               4,096

2010 Microchip Technology Inc.  Preliminary                   DS41419A-page 23
PIC16F/LF1824/1828

FIGURE 3-1:       PROGRAM MEMORY MAP         3.1.1               READING PROGRAM MEMORY AS
                  AND STACK FOR                                  DATA
                  PIC16F/LF1824/1828
                                             There are two methods of accessing constants in pro-
                  PC                   gram memory. The first method is to use tables of
                                             RETLW instructions. The second method is to set an
CALL, CALLW                 15               FSR to point to the program memory.

RETURN, RETLW                                3.1.1.1 RETLW Instruction

Interrupt, RETFIE                            The RETLW instruction can be used to provide access
                                             to tables of constants. The recommended way to create
                  Stack Level 0              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
                                                     RETLW DATA0                  ;Index0 data
                       Page 1         07FFh          RETLW DATA1                  ;Index1 data
             Rollover to Page 0       0800h          RETLW DATA2
On-chip                                              RETLW DATA3
Program         Wraps to Page 0       0FFFh
Memory                                1000h

                                             my_function

                                                          ;... LOTS OF CODE...

                                                          MOVLW   DATA_INDEX

                                                          call constants

                                                          ;... THE CONSTANT IS IN W

                  Wraps to Page 0            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 1  7FFFh

DS41419A-page 24                             Preliminary                   2010 Microchip Technology Inc.
3.1.1.2 Indirect Read with FSR                             PIC16F/LF1824/1828

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/LF1824/1828.
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 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            DS41419A-page 25
PIC16F/LF1824/1828

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 28.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 and
device logic. Furthermore, the TO and PD bits are not                        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.

DS41419A-page 26                                 Preliminary                        2010 Microchip Technology Inc.
                                                         PIC16F/LF1824/1828

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/LF1824/1828   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                          DS41419A-page 27
DS41419A-page 28                 TABLE 3-3: PIC16F1824/PIC16F1828 MEMORY MAP, BANKS 0-7                                                                                                                   PIC16F/LF1824/1828

                                             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
                                                                                                                         201h       PCL     281h       PCL                                        PCL
                                 001h        INDF1     081h  INDF1      101h  INDF1                   181h  INDF1        202h    STATUS     282h    STATUS     301h  INDF1           381h      STATUS
                                 002h         PCL      082h   PCL       102h   PCL                    182h   PCL         203h     FSR0L     283h     FSR0L     302h   PCL            382h       FSR0L
                                                                                                                         204h     FSR0H     284h     FSR0H                                      FSR0H
                                 003h        STATUS    083h  STATUS     103h  STATUS                  183h  STATUS       205h     FSR1L     285h     FSR1L     303h  STATUS          383h       FSR1L
                                 004h         FSR0L    084h   FSR0L     104h   FSR0L                  184h   FSR0L       206h     FSR1H     286h     FSR1H     304h   FSR0L          384h       FSR1H
                                                                                                                         207h      BSR      287h       BSR                                        BSR
                                 005h        FSR0H     085h  FSR0H      105h  FSR0H                   185h  FSR0H        208h     WREG      288h     WREG      305h  FSR0H           385h       WREG
                                 006h        FSR1L     086h  FSR1L      106h  FSR1L                   186h  FSR1L        209h    PCLATH     289h    PCLATH     306h  FSR1L           386h      PCLATH
                                                                                                                         20Ah    INTCON     28Ah    INTCON                                     INTCON
                                 007h        FSR1H     087h  FSR1H      107h  FSR1H                   187h  FSR1H        20Bh     WPUA      28Bh        --     307h  FSR1H           387h       INLVLA
                                 008h         BSR      088h   BSR       108h   BSR                    188h   BSR         20Ch    WPUB(1)    28Ch        --     308h   BSR            388h
                                                                                                                         20Dh     WPUC      28Dh        --                                    INLVLB(1)
                                 009h        WREG      089h  WREG       109h  WREG                    189h  WREG         20Eh        --     28Eh        --     309h  WREG            389h       INLVLC
                                                                                                                         20Fh        --     28Fh        --
                                 00Ah        PCLATH    08Ah  PCLATH     10Ah  PCLATH                  18Ah  PCLATH       210h               290h    CCPR1L     30Ah  PCLATH          38Ah           --
                                 00Bh        INTCON    08Bh  INTCON     10Bh  INTCON                  18Bh  INTCON       211h   SSP1BUF     291h               30Bh  INTCON          38Bh           --
                                                                                                                         212h  SSP1ADD      292h    CCPR1H                                      IOCAP
                                 00Ch         PORTA    08Ch   TRISA     10Ch   LATA                   18Ch   ANSELA      213h  SSP1MSK      293h  CCP1CON      30Ch  --              38Ch       IOCAN
                                             PORTB(1)        TRISB(1)         LATB(1)                       ANSELB(1)    214h  SSP1STAT     294h  PWM1CON                                       IOCAF
                                 00Dh         PORTC    08Dh   TRISC     10Dh   LATC                   18Dh   ANSELC      215h  SSP1CON      295h    CCP1AS     30Dh  --              38Dh      IOCBP(1)
                                 00Eh                  08Eh             10Eh                          18Eh               216h  SSP1CON2     296h  PSTR1CON                                     IOCBN(1)
                                                                                                                         217h  SSP1CON3     297h               30Eh  --              38Eh      IOCBF(1)
                                                                                                                         218h               298h        --                                          --
                                 00Fh        --        08Fh  --         10Fh  --                      18Fh  --           219h        --     299h    CCPR2L     30Fh  --              38Fh           --
                                                                                                                         21Ah        --     29Ah    CCPR2H                                          --
                                 010h        --        090h  --         110h  --                      190h  --           21Bh        --     29Bh  CCP2CON      310h  --              390h     CLKRCON
                                                                                                                         21Ch        --     29Ch  PWM2CON                                           --
                                 011h        PIR1      091h  PIE1       111h CM1CON0 191h                   EEADRL       21Dh        --     29Dh    CCP2AS     311h  CCPR3L          391h      MDCON
                                                                                                                         21Eh        --     29Eh  PSTR2CON                                      MDSRC
                                 012h        PIR2      092h  PIE2       112h CM1CON1 192h                   EEADRH       21Fh        --     29Fh  CCPTMRS0     312h  CCPR3H          392h      MDCARL
                                                                                                                         220h        --     2A0h  CCPTMRS1                                    MDCARH
                                 013h        PIR3      093h  PIE3       113h CM2CON0 193h                   EEDATL                                             313h CCP3CON 393h
                                                                                                                         26Fh    General    2EFh    General                                Unimplemented
Preliminary                      014h        --        094h  --         114h CM2CON1 194h                   EEDATH       270h    Purpose    2F0h    Purpose    314h  --              394h    Read as `0'
                                                                                                                                 Register           Register
                                 015h        TMR0      095h  OPTION     115h  CMOUT                   195h  EECON1       27Fh  80 Bytes(2)  2FFh  80 Bytes(2)  315h  --              395h      Accesses
                                                                                                                                                                                              70h 7Fh
                                 016h        TMR1L     096h  PCON       116h  BORCON                  196h  EECON2              Accesses           Accesses    316h  --              396h
                                                                                                                                70h 7Fh          70h 7Fh
                                 017h        TMR1H     097h WDTCON 117h FVRCON 197h                         --                                                 317h  --              397h

                                 018h        T1CON     098h OSCTUNE 118h DACCON0 198h                       --                                                 318h  CCPR4L          398h

                                 019h        T1GCON    099h  OSCCON     119h DACCON1 199h                   RCREG                                              319h  CCPR4H          399h

                                 01Ah        TMR2      09Ah OSCSTAT 11Ah SRCON0 19Ah                        TXREG                                              31Ah CCP4CON 39Ah

                                 01Bh        PR2       09Bh  ADRESL     11Bh  SRCON1                  19Bh  SPBRGL                                             31Bh  --              39Bh

                                 01Ch        T2CON     09Ch ADRESH 11Ch       --                      19Ch SPBRGH                                              31Ch  --              39Ch

                                 01Dh        --        09Dh ADCON0 11Dh APFCON0 19Dh                        RCSTA                                              31Dh  --              39Dh

                                 01Eh CPSCON0 09Eh ADCON1 11Eh APFCON1 19Eh                                 TXSTA                                              31Eh  --              39Eh

                                 01Fh CPSCON1 09Fh           --         11Fh  --                      19Fh BAUDCON                                             31Fh  --              39Fh

                                 020h                  0A0h             120h                          1A0h                                                     320h General Purpose 3A0h

                                                              General          General                       General                                           32Fh   Register
                                                              Purpose          Purpose                       Purpose                                                 16 Bytes(2)
                                                              Register         Register                      Register
2010 Microchip Technology Inc.              General         80 Bytes         80 Bytes                      80 Bytes(2)                                        330h  Unimplemented   3EFh
                                             Purpose                                                                                                                   Read as `0')  3F0h
                                             Register        Accesses         Accesses                      Accesses                                           36Fh
                                 06Fh        96 Bytes  0EFh  70h 7Fh  16Fh  70h 7Fh               1EFh  70h 7Fh                                          370h
                                 070h                  0F0h             170h                          1F0h
                                                                                                                                                                     Accesses
                                 07Fh                  0FFh             17Fh                          1FFh                                                           70h 7Fh

                                                                                                                                                               37Fh                  3FFh

                                 Legend:         = Unimplemented data memory locations, read as `0'.
                                    Note 1:  Available only on PIC16F/LF1828.
2010 Microchip Technology Inc.  TABLE 3-4: PIC16F1824/PIC16F1828 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/LF1824/1828
                                 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

                                       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'

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

                                 47Fh                 4FFh                 57Fh                 5FFh                 67Fh                 6FFh                 77Fh                 7FFh

DS41419A-page 29                 Legend:  = Unimplemented data memory locations, read as `0'.
DS41419A-page 30                 TABLE 3-5: PIC16F/LF1824/1828 MEMORY MAP, BANKS 16-23                                                                                                                      PIC16F/LF1824/1828

                                          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/LF1824/1828 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/LF1824/1828
                                                                                                                                                                                             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'

DS41419A-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/LF1824/1828

TABLE 3-7: PIC16F/LF1824/1828 MEMORY                         3.2.6        SPECIAL FUNCTION REGISTERS
                     MAP, BANK 31                                         SUMMARY

                  Bank 31                                    The Special Function Register Summary for the device
                                                             family are as follows:
FA0h

                  Unimplemented                                             Device  Bank(s)  Page No.
                    Read as `0'                              PIC16F/LF1824/1828
                                                                                        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
Legend:                      TOSH

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

DS41419A-page 32                                             Preliminary             2010 Microchip Technology Inc.
                                                                            PIC16F/LF1824/1828

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

                        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 --                 Unimplemented                                                                                      --              --

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                T1OSCEN T1SYNC                  --      TMR1ON 0000 00-0 uuuu uu-u

019h T1GCON             TMR1GE T1GPOL            T1GTM   T1GSPM             T1GGO/         T1GVAL           T1GSS     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                              TMR2ON           T2CKPS    -000 0000 -000 0000

01Dh --                 Unimplemented                                                                                      --              --

01Eh CPSCON0            CPSON          CPSRM     --                  --     CPSRNG                     CPSOUT T0XCS 00-- 0000 00-- 0000

01Fh CPSCON1            --                --     --                  --     CPSCH                      CPSCH     ---- 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/LF1828 only.

              PIC16F/LF1824 only.

2010 Microchip Technology Inc.                         Preliminary                                                      DS41419A-page 33
PIC16F/LF1824/1828

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

                        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 --                 Unimplemented                                                                                        --              --

095h OPTION_REG WPUEN INTEDG TMR0CS TMR0SE                                  PSA                             PS          1111 1111 1111 1111

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

097h WDTCON             --                --                                WDTPS                               SWDTEN --01 0110 --01 0110

098h OSCTUNE            --                --                                TUN                                         --00 0000 --00 0000

099h OSCCON             SPLLEN                    IRCF                                  --             SCS         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                                       GO/DONE ADON -000 0000 -000 0000

09Eh ADCON1             ADFM                      ADCS                 --               ADNREF         ADPREF      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/LF1828 only.

              PIC16F/LF1824 only.

DS41419A-page 34                                         Preliminary                                         2010 Microchip Technology Inc.
                                                                           PIC16F/LF1824/1828

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

                       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                 --              --               C1NCH1 C1NCH0 0000 ---0 0000 ---0

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

114h CM2CON1           C2INTP         C2INTN    C2PCH                 --              --               C2NCH    0000 --00 0000 --00

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

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

117h FVRCON            FVREN FVRRDY Reserved Reserved                      CDAFVR                      ADFVR    0q00 0000 0q00 0000

118h DACCON0           DACEN DACLPS DACOE                           --     DACPSS                      --     DACNSS 000- 00-0 000- 00-0

119h DACCON1           --                --     --                                DACR                               ---0 0000 ---0 0000

11Ah SRCON0            SRLEN                    SRCLK                 SRQEN SRNQEN SRPS                       SRPR 0000 0000 0000 0000

11Bh SRCON1            SRSPE SRSCKE SRSC2E SRSC1E SRRPE SRRCKE SRRC2E SRRC1E 0000 0000 0000 0000

11Ch --                Unimplemented                                                                                      --              --

11Dh APFCON0           RXDTSEL SDOSEL(3) SSSEL(3)                   --     T1GSEL TXCKSEL                   --     --     000- 0000 000- 0000

11Eh APFCON1           --                --     --                  --     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/LF1828 only.

              PIC16F/LF1824 only.

2010 Microchip Technology Inc.                        Preliminary                                                      DS41419A-page 35
PIC16F/LF1824/1828

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                       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/LF1828 only.

              PIC16F/LF1824 only.

DS41419A-page 36                                              Preliminary                                    2010 Microchip Technology Inc.
                                                                           PIC16F/LF1824/1828

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                              ---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(2)   WPUB7     WPUB6         WPUB5   WPUB4                  --             --               --     --
20Eh          WPUC     WPUC7(2)  WPUC6(2)       WPUC5   WPUC4                                                      WPUC0   1111 ---- 1111 ----
                                                                           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                                               0000 0000 0000 0000

213h SSP1MSK                                                        MSK                                                  1111 1111 1111 1111
                                                                                                                   BF 0000 0000 0000 0000
214h SSP1STAT          SMP               CKE    D/A                 P         S            R/W              UA

215h SSP1CON1          WCOL      SSP1OV         SSPEN               CKP                    SSPM                       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 --                Unimplemented                                                                                       --           --

21Ah --                Unimplemented                                                                                       --           --

21Bh --                Unimplemented                                                                                       --           --

21Ch --                Unimplemented                                                                                       --           --

21Dh --                Unimplemented                                                                                       --           --

21Eh --                Unimplemented                                                                                       --           --

21Fh --                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/LF1828 only.

              PIC16F/LF1824 only.

2010 Microchip Technology Inc.                        Preliminary                                                    DS41419A-page 37
PIC16F/LF1824/1828

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

                      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             DC1B                                 CCP1M                       0000 0000 0000 0000

294h PWM1CON P1RSEN                                                       P1DC                                       0000 0000 0000 0000

295h CCP1AS           CCP1ASE                  CCP1AS                PSS1AC                       PSS1BD   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/LF1828 only.

              PIC16F/LF1824 only.

DS41419A-page 38                                      Preliminary                                            2010 Microchip Technology Inc.
                                                                          PIC16F/LF1824/1828

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                                 ---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/LF1828 only.

              PIC16F/LF1824 only.

2010 Microchip Technology Inc.                       Preliminary                                                     DS41419A-page 39
PIC16F/LF1824/1828

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                                                                                                           ---1 1000 ---q quuu
384h(1)       FSR0L      --                --     --                  TO     PD                Z             DC         C      0000 0000 uuuu uuuu
385h(1)       FSR0H                                                                                         INTF      IOCIF    0000 0000 0000 0000
386h(1)       FSR1L      Indirect Data Memory Address 0 Low Pointer                                                            0000 0000 uuuu uuuu
387h(1)       FSR1H                                                                                                            0000 0000 0000 0000
388h(1)       BSR        Indirect Data Memory Address 0 High Pointer                                                           ---0 0000 ---0 0000
389h(1)       WREG                                                                                                             0000 0000 uuuu uuuu
38Ah(1)       PCLATH     Indirect Data Memory Address 1 Low Pointer                                                            -000 0000 -000 0000
38Bh(1)       INTCON                                                                                                           0000 000x 0000 000u
                         Indirect Data Memory Address 1 High Pointer

                         --                --     --                                  BSR

                         Working Register

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

                         GIE               PEIE   TMR0IE              INTE   IOCIE             TMR0IF

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

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                --               --           --        --    0000 ---- 0000 ----
395h          IOCBN(2)   IOCBN7         IOCBN6    IOCBN5   IOCBN4                --               --           --        --    0000 ---- 0000 ----
396h          IOCBF(2)   IOCBF7         IOCBF6    IOCBF5   IOCBF4                --               --           --        --    0000 ---- 0000 ----

397h --                  Unimplemented                                                                                         --            --

398h --                  Unimplemented                                                                                         --            --

399h --                  Unimplemented                                                                                         --            --

39Ah CLKRCON             CLKREN CLKROE CLKRSLR                        CLKRDC                       CLKRDIV           0011 0000 0011 0000

39Bh --                  Unimplemented                                                                                         --            --

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

39Dh MDSRC               MDMSODIS          --     --                  --                       MDMS                       x--- xxxx u--- uuuu

39Eh MDCARL              MDCLODIS MDCLPOL MDCLSYNC                    --                       MDCL                       xxx- xxxx uuu- uuuu

39Fh MDCARH              MDCHODIS MDCHPOL MDCHSYNC                    --                       MDCH                       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/LF1828 only.

              PIC16F/LF1824 only.

DS41419A-page 40                                         Preliminary                                         2010 Microchip Technology Inc.
                                                                          PIC16F/LF1824/1828

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                                                                                         INTF   IOCIF
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                                 ---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

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                                TMR4ON           T4CKPS   -000 0000 -000 0000

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                                TMR6ON           T6CKPS   -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/LF1828 only.

              PIC16F/LF1824 only.

2010 Microchip Technology Inc.                       Preliminary                                                        DS41419A-page 41
PIC16F/LF1824/1828

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)

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                                     ---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                   INTF   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/LF1828 only.

              PIC16F/LF1824 only.

DS41419A-page 42                                  Preliminary                                                2010 Microchip Technology Inc.
                                                                          PIC16F/LF1824/1828

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                                 ---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                DC     C      ---- -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/LF1828 only.

              PIC16F/LF1824 only.

2010 Microchip Technology Inc.                          Preliminary                                                  DS41419A-page 43
PIC16F/LF1824/1828

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) 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 and PCL
                       DIFFERENT SITUATIONS                       registers are loaded with the operand of the CALL
                                                                  instruction. PCH is loaded with PCLATH.
               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                             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

3.3.1 MODIFYING PCL

Executing any instruction with the PCL register as the
destination simultaneously causes the Program Coun-
ter PC 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).

DS41419A-page 44                                                  Preliminary   2010 Microchip Technology Inc.
                                                                 PIC16F/LF1824/1828

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 and 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 = 0 (Configuration Word 2). This means that after               Note: Care should be taken when modifying the
the stack has been PUSHed sixteen times, the seven-                             STKPTR while interrupts are enabled.
teenth PUSH overwrites the value that was stored from
the first PUSH. The eighteenth PUSH overwrites the               During normal program operation, CALL, CALLW and
second PUSH (and so on). The STKOVF and STKUNF                   Interrupts will increment STKPTR while RETLW,
flag bits will be set on an Overflow/Underflow, regard-          RETURN, and RETFIE will decrement STKPTR. At any
less of whether the Reset is enabled.                            time STKPTR can be inspected to see how much stack
                                                                 is left. The STKPTR always points at the currently used
    Note 1: There are no instructions/mnemonics                  place on the stack. Therefore, a CALL or CALLW will
                called PUSH or POP. These are actions            increment the STKPTR and then write the PC, and a
                that occur from the execution of the             return will unload the PC and then decrement STKPTR.
                CALL, CALLW, RETURN, RETLW and
                RETFIE instructions or the vectoring to          Reference Figure 3-4 through Figure 3-7 for examples
                an interrupt address.                            of accessing the stack.

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                              DS41419A-page 45
PIC16F/LF1824/1828

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

DS41419A-page 46        Preliminary               2010 Microchip Technology Inc.
                                                             PIC16F/LF1824/1828

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 set 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           DS41419A-page 47
PIC16F/LF1824/1828

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.

DS41419A-page 48           Preliminary                                         2010 Microchip Technology Inc.
                                                               PIC16F/LF1824/1828

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 000

Bank Select                       Location Select              Bank Select                 Location Select
                                                                      1111
                                           0000 0001 0010
                                 0x00

                                 0x7F                             Bank 31
                                         Bank 0 Bank 1 Bank 2

2010 Microchip Technology Inc.  Preliminary                                               DS41419A-page 49
PIC16F/LF1824/1828

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

DS41419A-page 50                      Preliminary                             2010 Microchip Technology Inc.
                                                       PIC16F/LF1824/1828

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 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           DS41419A-page 51
PIC16F/LF1824/1828

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

DS41419A-page 52                           Preliminary                    2010 Microchip Technology Inc.
                                 PIC16F/LF1824/1828

REGISTER 4-1: CONFIGURATION WORD 1 (CONTINUED)

bit 2-0      FOSC: 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                                                                DS41419A-page 53
PIC16F/LF1824/1828

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(1)                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
              DEBUG: In-Circuit Debugger Mode bit(2)
bit 11        1 = In-Circuit Debugger disabled, ICSPCLK and ICSPDAT are general purpose I/O pins
bit 10        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
              1 = Brown-out Reset voltage set to 1.9V (typical)
bit 7-5       0 = Brown-out Reset voltage set to 2.5V (typical)
bit 4
bit 3-2       STVREN: Stack Overflow/Underflow Reset Enable bit
bit 1-0       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: 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'.

DS41419A-page 54                          Preliminary                     2010 Microchip Technology Inc.
                                                          PIC16F/LF1824/1828

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 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              DS41419A-page 55
PIC16F/LF1824/1828

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: Device ID bits
bit 4-0            100111010 = PIC16F1824
                   100111110 = PIC16F1828
                   101000010 = PIC16LF1824
                   101000110 = PIC16LF1828

                   REV: Revision ID bits

                   These bits are used to identify the revision.

Note 1: This location cannot be written.

DS41419A-page 56                                Preliminary                    2010 Microchip Technology Inc.
5.0 OSCILLATOR MODULE (WITH                                PIC16F/LF1824/1828
         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
                                                           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               DS41419A-page 57
PIC16F/LF1824/1828

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 = 100
                                                                                                                               T1OSC         CPU and
             Oscillator Timer1            Postscaler                                                                                         Peripherals
                                                                             MUX
                              T1OSCEN                                                                                       MUXIRCFInternal Oscillator
                              Enable
                              Oscillator           16 MHz                                                                                               Clock
                                                     8 MHz                                                                                             Control
                   Internal                          4 MHz                                                                                 FOSC SCS
                  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

DS41419A-page 58                                 Preliminary                                                                    2010 Microchip Technology Inc.
                                                           PIC16F/LF1824/1828

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
Program the FOSC bits in the Configuration          the internal inverter-amplifier. LP mode current
   Word 1 to select an external clock source that will     consumption is the least of the three modes. This mode
   be used as the default system clock upon a              is designed to drive only 32.768 kHz tuning-fork type
   device Reset.                                           crystals (watch crystals).

Write the SCS 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
tion.                                                      the internal inverter-amplifier. HS mode current
                                                           consumption is the highest of the three modes. This
5.2.1.1 EC Mode                                            mode is best suited for resonators that require a high
                                                           drive setting.
The External Clock (EC) mode allows an externally
generated logic level signal to be the system clock        Figure 5-3 and Figure 5-4 show typical circuits for
source. When operating in this mode, an external clock     quartz crystal and ceramic resonators, respectively.
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                                    DS41419A-page 59
PIC16F/LF1824/1828

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 according                3: An additional parallel feedback resistor (RP)
            to type, package and manufacturer. The                        may be required for proper ceramic resonator
            user should consult the manufacturer data                     operation.
            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 Applications 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 29.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.

DS41419A-page 60                               Preliminary                       2010 Microchip Technology Inc.
                                                            PIC16F/LF1824/1828

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 according       Recommended values: 10 k  REXT  100 k,  20 pF, 2-5V
            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 Applications 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           DS41419A-page 61
PIC16F/LF1824/1828                                        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 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 bits of the
   device Reset.                                          OSCCON register. See Section 5.2.2.7 "Internal
                                                          Oscillator Clock Switch Timing" for more information.
Write the SCS 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 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 = 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 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 bits of the OSCCON
                                                             register for the desired HF frequency, and

                                                          FOSC = 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.

DS41419A-page 62  Preliminary                              2010 Microchip Technology Inc.
                                                          PIC16F/LF1824/1828

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 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 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 bits of
                                                                   the OSCCON register are set to `0111' and
The Low-Frequency Internal Oscillator (LFINTOSC) is                the frequency selection is set to 500 kHz.
an uncalibrated 31 kHz internal clock source.                      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 bits of the OSCCON register allow
software, using the IRCF 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 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 bits of the OSCCON
   register for the desired LF frequency, and

FOSC = 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                                        DS41419A-page 63
PIC16F/LF1824/1828

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 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 = 100).                           of a frequency selection is as follows:

The SCS bits in the OSCCON register must be             1. IRCF bits of the OSCCON register are
   cleared to use the clock determined by                       modified.
   FOSC in Configuration Word 1
   (SCS = 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 = 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 29.0 "Electrical
                                                          Specifications".

DS41419A-page 64                     Preliminary                    2010 Microchip Technology Inc.
                                                                PIC16F/LF1824/1828

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     0                                 0

System Clock

HFINTOSC/ LFINTOSC (Either FSCM or WDT enabled)
MFINTOSC

HFINTOSC/                                                    2-cycle Sync  Running
MFINTOSC

LFINTOSC

IRCF                        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

System Clock

2010 Microchip Technology Inc.     Preliminary                                     DS41419A-page 65
PIC16F/LF1824/1828

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

DS41419A-page 66                  Preliminary                       2010 Microchip Technology Inc.
                                                          PIC16F/LF1824/1828

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 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            DS41419A-page 67
PIC16F/LF1824/1828

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  FOSC 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

DS41419A-page 68                  Preliminary                           2010 Microchip Technology Inc.
                                                               PIC16F/LF1824/1828

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 bits of the OSCCON
register. This allows the internal oscillator to be
configured before a failure occurs.

2010 Microchip Technology Inc.  Preliminary                          DS41419A-page 69
PIC16F/LF1824/1828

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.

DS41419A-page 70                   Preliminary           2010 Microchip Technology Inc.
                                                       PIC16F/LF1824/1828

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                          --   SCS

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: 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: System Clock Select bits

         1x = Internal oscillator block
         01 = Timer1 oscillator
         00 = Clock determined by FOSC in Configuration Word 1.

Note 1: Duplicate frequency derived from HFINTOSC.

2010 Microchip Technology Inc.                        Preliminary                DS41419A-page 71
PIC16F/LF1824/1828

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 bits of the Configuration Word 1
            0 = Running from an internal oscillator (FOSC = 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

DS41419A-page 72                               Preliminary                    2010 Microchip Technology Inc.
                                                                 PIC16F/LF1824/1828

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

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: 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                      --                         SCS
                                                                                                                           71
OSCSTAT    T1OSCR PLLR                    OSTS HFIOFR HFIOFL MFIOFR LFIOFR HFIOFS                                          72
                                                                                                                           73
OSCTUNE          --         --                                   TUN                                                  95
                                                                                                                           98
PIE2            OSFIE       C2IE          C1IE         EEIE      BCL1IE    --                     --         CCP2IE       195

PIR2            OSFIF       C2IF          C1IF         EEIF      BCL1IF    --                     --         CCP2IF

T1CON            TMR1CS              T1CKPS            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                     CPD
Legend:                                                                                                                    52
           7:0        CP    MCLRE PWRTE                       WDTE                           FOSC

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

2010 Microchip Technology Inc.                        Preliminary                                                DS41419A-page 73
PIC16F/LF1824/1828

NOTES:

DS41419A-page 74  Preliminary   2010 Microchip Technology Inc.
6.0 REFERENCE CLOCK MODULE                                    PIC16F/LF1824/1828

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 CLKR-
CON register (Register 6-1) and is enabled when set-          6.3.2 CLKOUT FUNCTION
ting the CLKREN bit. To output the divided clock signal       The CLKOUT function has a higher priority than the ref-
to the CLKR port pin, the CLKROE bit must be set. The         erence clock module. Therefore, if the CLKOUT func-
CLKRDIV bits enable the selection of 8 different         tion is enabled by the CLKOUTEN bit in Configuration
clock divider options. The CLKRDC bits can be            Word 1, FOSC/4 will always be output on the port pin.
used to modify the duty cycle of the output clock(1). The     Reference Section 4.0 "Device Configuration" for
CLKRSLR bit controls slew rate limiting.                      more information.

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

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                                          CLKRDIV          bit 0
bit 7                                            CLKRDC

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

DS41419A-page 76                                 Preliminary                 2010 Microchip Technology Inc.
                                                              PIC16F/LF1824/1828

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                                          DS41419A-page 77
PIC16F/LF1824/1828

NOTES:

DS41419A-page 78  Preliminary   2010 Microchip Technology Inc.
                                                             PIC16F/LF1824/1828

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             DS41419A-page 79
PIC16F/LF1824/1828

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

DS41419A-page 80                Preliminary                         2010 Microchip Technology Inc.
                                                                      PIC16F/LF1824/1828

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  in Configuration Word 1  01:
bit 6-1      SBOREN is read/write, but has no effect on the BOR.
bit 0        If BOREN  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                                      DS41419A-page 81
PIC16F/LF1824/1828

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 Registers"        independently of MCLR Reset. If MCLR is kept low long
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.

DS41419A-page 82                      Preliminary            2010 Microchip Technology Inc.
                                                   PIC16F/LF1824/1828

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                DS41419A-page 83
PIC16F/LF1824/1828

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 Interrupt 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'.

DS41419A-page 84                       Preliminary                      2010 Microchip Technology Inc.
                                                            PIC16F/LF1824/1828

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           DS41419A-page 85
PIC16F/LF1824/1828

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 105

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.

DS41419A-page 86                Preliminary              2010 Microchip Technology Inc.
8.0 INTERRUPTS                                          PIC16F/LF1824/1828

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  DS41419A-page 87
PIC16F/LF1824/1828

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

Note 1: PIC16F/LF1828 only.

DS41419A-page 88             Preliminary         2010 Microchip Technology Inc.
8.1 Operation                                                  PIC16F/LF1824/1828

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.4 for more details.
   Enable bit of the interrupt event is contained in the
   PIEx register)

The INTCON, PIR1, PIR2 and PIR3 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                   DS41419A-page 89
PIC16F/LF1824/1828

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)

DS41419A-page 90                             Preliminary                         2010 Microchip Technology Inc.
                                                               PIC16F/LF1824/1828

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 29.0 "Electrical Specifications".
        5: INTF is enabled to be set any time during the Q4-Q1 cycles.

2010 Microchip Technology Inc.                            Preliminary                              DS41419A-page 91
PIC16F/LF1824/1828

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.

DS41419A-page 92  Preliminary                                2010 Microchip Technology Inc.
                                                               PIC16F/LF1824/1828

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             Interrupt Enable bit, GIE, of the INTCON
for TMR0 register overflow, interrupt-on-change and                   register. User software should ensure the
external INT pin interrupts.                                          appropriate 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                DS41419A-page 93
PIC16F/LF1824/1828

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

DS41419A-page 94                                 Preliminary                 2010 Microchip Technology Inc.
                                                          PIC16F/LF1824/1828

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/LF1828 only.

2010 Microchip Technology Inc.                        Preliminary            DS41419A-page 95
PIC16F/LF1824/1828

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'

DS41419A-page 96                                 Preliminary             2010 Microchip Technology Inc.
                                                         PIC16F/LF1824/1828

8.5.5 PIR1 REGISTER                                      Note:      Interrupt flag bits are set when an interrupt
                                                                    condition occurs, regardless of the state of
The PIR1 register contains the interrupt flag bits, as              its corresponding enable bit or the Global
shown in Register 8-5.                                              Interrupt 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-5: 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

2010 Microchip Technology Inc.                        Preliminary               DS41419A-page 97
PIC16F/LF1824/1828

8.5.6 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-6.                                          Interrupt 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: 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

         Unimplemented: Read as `0'

         CCP2IF: CCP2 Interrupt Flag bit
         1 = Interrupt is pending
         0 = Interrupt is not pending

Note 1: PIC16F/LF1828 only.

DS41419A-page 98                                 Preliminary          2010 Microchip Technology Inc.
                                                          PIC16F/LF1824/1828

8.5.7 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 the
shown in Register 8-7.                                                Global Interrupt 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: 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'

2010 Microchip Technology Inc.                        Preliminary       DS41419A-page 99
PIC16F/LF1824/1828

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      185
                                                                                                    CCP2IE       94
PIE1        TMR1GIE ADIE         RCIE    TXIE   SSP1IE CCP1IE TMR2IE                                    --       95
                                                                                                    TMR1IF       96
PIE2        OSFIE         C2IE   C1IE    EEIE   BCL1IE  --                                  --      CCP2IF       97
                                                                                                        --       98
PIE3               --     --     CCP4IE CCP3IE TMR6IE   --                                  TMR4IE               99

PIR1        TMR1GIF ADIF         RCIF    TXIF   SSP1IF CCP1IF TMR2IF

PIR2        OSFIF         C2IF   C1IF    EEIF   BCL1IF  --                                  --

PIR3               --     --     CCP4IF CCP3IF TMR6IF   --                                  TMR4IF

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

DS41419A-page 100                        Preliminary                                         2010 Microchip Technology Inc.
9.0 POWER-DOWN MODE (SLEEP)                            PIC16F/LF1824/1828

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     following events:
exist:
                                                       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 condi-  instruction following SLEEP is not desirable, the user
tions 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 16.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
                                                          execution of a SLEEP instruction
                                                          - SLEEP instruction will be completely executed
                                                          - 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           DS41419A-page 101
PIC16F/LF1824/1828

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         93

IOCAF             --                --  IOCAF5 IOCAF4 IOCAF3 IOCAF2 IOCAF1 IOCAF0                              142

IOCAN             --                --  IOCAN5 IOCAN4 IOCAN3 IOCAN2 IOCAN1 IOCAN0                              142

IOCAP             --                --  IOCAP5 IOCAP4 IOCAP3 IOCAP2 IOCAP1 IOCAP0                              142

IOCBF(1)          IOCBF7 IOCBF6 IOCBF5 IOCBF4                       --            --      --     --            144

IOCBN(1)          IOCBN7 IOCBN6 IOCBN5 IOCBN4                       --            --      --     --            143

IOCBP(1)          IOCBP7 IOCBP6 IOCBP5 IOCBP4                       --            --      --     --            143

PIE1          TMR1GIE ADIE              RCIE          TXIE          SSP1IE CCP1IE TMR2IE TMR1IE                94

PIE2              OSFIE         C2IE    C1IE          EEIE          BCL1IE        --      --     CCP2IE        95

PIR1              TMR1GIF ADIF          RCIF          TXIF          SSP1IF CCP1IF TMR2IF TMR1IF                97

PIR2              OSFIF         C2IF    C1IF          EEIF          BCL1IF        --      --     CCP2IF        98

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

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

Legend: -- = unimplemented, read as `0'. Shaded cells are not used in Power-down mode.
Note 1: PIC16F/LF1828 only.

DS41419A-page 102                                     Preliminary                               2010 Microchip Technology Inc.
                                                      PIC16F/LF1824/1828

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 1ms to 256
   seconds (typical)
Multiple Reset conditions
Operation during Sleep

FIGURE 10-1:           WATCHDOG TIMER BLOCK DIAGRAM

WDTE = 01                                        LFINTOSC  23-bit Programmable  WDT Time-out
          SWDTEN                                                   Prescaler WDT

WDTE = 11                                                     WDTPS

WDTE = 10
                Sleep

2010 Microchip Technology Inc.  Preliminary                                         DS41419A-page 103
PIC16F/LF1824/1828

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 1ms 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 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   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
WDT_NSLEEP (10)    X       Sleep Disabled              event. See Section 3.0 "Memory Organization" and
                                                       The STATUS register (Register 3-1) for more
                                                       information.

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 = 00                                            Cleared until the end of OST
WDTE = 01 and SWDTEN = 0                                        Unaffected
WDTE = 10 and enter Sleep
CLRWDT Command
Oscillator Fail Detected
Exit Sleep + System Clock = T1OSC, EXTRC, INTOSC, EXTCLK
Exit Sleep + System Clock = XT, HS, LP
Change INTOSC divider (IRCF bits)

DS41419A-page 104                  Preliminary              2010 Microchip Technology Inc.
                                                       PIC16F/LF1824/1828

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
        --                                                                   WDTPS0   SWDTEN
bit 7                 --         WDTPS4 WDTPS3 WDTPS2 WDTPS1
                                                                                               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: 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 = 00:
            This bit is ignored.
            If WDTE = 01:
            1 = WDT is turned on
            0 = WDT is turned off
            If WDTE = 1x:
            This bit is ignored.

2010 Microchip Technology Inc.                        Preliminary           DS41419A-page 105
PIC16F/LF1824/1828

NOTES:

DS41419A-page 106  Preliminary   2010 Microchip Technology Inc.
11.0 DATA EEPROM AND FLASH                               PIC16F/LF1824/1828
         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    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 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             DS41419A-page 107
PIC16F/LF1824/1828

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 29.0 "Electri-    EECON2, then set 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.

DS41419A-page 108                    Preliminary                                     2010 Microchip Technology Inc.
                                                                      PIC16F/LF1824/1828

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                                  DS41419A-page 109
PIC16F/LF1824/1828

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            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/LF1824/ 32 words,           32 words,
                                EEADRL
1828               EEADRL
                                   = 00000
                   = 00000

DS41419A-page 110               Preliminary                            2010 Microchip Technology Inc.
                                                       PIC16F/LF1824/1828

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                          DS41419A-page 111
PIC16F/LF1824/1828                                         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 the 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 2ms 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 (block writes to program memory with 32        words is shown in Example 11-5. The initial address is
write latches) for more details. The write latches are     loaded into the EEADRH:EEADRL register pair; the
aligned to the address boundary defined by EEADRL          eight words of data are loaded using indirect addressing.
as shown in Table 11-1. Write operations do not cross
these boundaries. At the completion of a program           Note:  If the number of write latches is smaller
memory write operation, the write latches are reset to            than the erase block size, the code
contain 0x3FFF.                                                   sequence provided in Example 11-5 may
                                                                  be repeated multiple times to fully program
                                                                  an erased program memory row.

DS41419A-page 112  Preliminary                                     2010 Microchip Technology Inc.
                                                            PIC16F/LF1824/1828

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 2ms, 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 = 00000 EEADRL = 00001      EEADRL = 00010            EEADRL = 11111

Buffer Register                  Buffer Register                Buffer Register     Buffer Register

                                            Program Memory

2010 Microchip Technology Inc.          Preliminary                                DS41419A-page 113
PIC16F/LF1824/1828

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

DS41419A-page 114                   Preliminary                        2010 Microchip Technology Inc.
                                                     PIC16F/LF1824/1828

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                               DS41419A-page 115
PIC16F/LF1824/1828

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 mod-        be pointed to by PC = 1, but not all addresses are
      ified.                                              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 rewrit-
      ten.

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                    ; Executed (See Figure 11-1)

NOP                    ; Ignored (See 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

DS41419A-page 116      Preliminary                                      2010 Microchip Technology Inc.
                                                         PIC16F/LF1824/1828

11.6 Write Verify

Depending on the application, good programming
practice may dictate that the value written to the data
EEPROM or program memory should be verified (see
Example 11-6) to the desired value to be written.
Example 11-6 shows how to verify a write to EEPROM.

EXAMPLE 11-6: EEPROM WRITE VERIFY

BANKSEL EEDATL  ;

MOVF EEDATL, W ;EEDATL not changed

                ;from previous write

BSF  EECON1, RD ;YES, Read the

                ;value written

XORWF EEDATL, W ;

BTFSS STATUS, Z ;Is data the same

GOTO WRITE_ERR ;No, handle error

:               ;Yes, continue

2010 Microchip Technology Inc.       Preliminary        DS41419A-page 117
PIC16F/LF1824/1828

REGISTER 11-1: EEDATL: EEPROM DATA REGISTER

     R/W-x/u          R/W-x/u  R/W-x/u               R/W-x/u  R/W-x/u      R/W-x/u       R/W-x/u             R/W-x/u
bit 7                                                                                                                 bit 0
                                                     EEDAT

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-0       EEDAT: Read/write value for EEPROM data byte or Least Significant bits of program memory

REGISTER 11-2: EEDATH: EEPROM DATA HIGH BYTE REGISTER

        U-0           U-0      R/W-x/u               R/W-x/u  R/W-x/u      R/W-x/u       R/W-x/u             R/W-x/u
         --                                                                                                           bit 0
bit 7                 --                                          EEDAT

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       EEDAT: Read/write value for Most Significant bits of program memory

REGISTER 11-3: EEADRL: EEPROM ADDRESS 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/W-0/0
bit 7                                                                                                                 bit 0
                                                     EEADR

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-0       EEADR: Specifies the Least Significant bits for program memory address or EEPROM address

REGISTER 11-4: EEADRH: EEPROM ADDRESS HIGH BYTE REGISTER

        U-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
         --                                                   EEADR                                             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         Unimplemented: Read as `0'
bit 6-0       EEADR: Specifies the Most Significant bits for program memory address or EEPROM address

DS41419A-page 118                                    Preliminary                          2010 Microchip Technology Inc.
                                                       PIC16F/LF1824/1828

REGISTER 11-5: EECON1: EEPROM CONTROL 1 REGISTER

    R/W-0/0  R/W-0/0             R/W-0/0 R/W/HC-0/0 R/W-x/q         R/W-0/0     R/S/HC-0/0      R/S/HC-0/0
    EEPGD     CFGS                                                  WREN             WR              RD
bit 7                            LWLO  FREE            WRERR                                              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
S = Bit can only be set          `0' = Bit is cleared  HC = Bit is cleared by hardware
`1' = Bit is set

bit 7        EEPGD: Flash Program/Data EEPROM Memory Select bit

             1 = Accesses program space Flash memory
             0 = Accesses data EEPROM memory

bit 6        CFGS: Flash Program/Data EEPROM or Configuration Select bit

             1 = Accesses Configuration, User ID and Device ID Registers
             0 = Accesses Flash Program or data EEPROM Memory

bit 5        LWLO: Load Write Latches Only bit

             If CFGS = 1 (Configuration space) OR CFGS = 0 and EEPGD = 1 (program Flash):

             1 = The next WR command does not initiate a write; only the program memory latches are
                   updated.

             0 = The next WR command writes a value from EEDATH:EEDATL into program memory latches
                   and initiates a write of all the data stored in the program memory latches.

             If CFGS = 0 and EEPGD = 0: (Accessing data EEPROM)
             LWLO is ignored. The next WR command initiates a write to the data EEPROM.

bit 4        FREE: Program Flash Erase Enable bit

             If CFGS = 1 (Configuration space) OR CFGS = 0 and EEPGD = 1 (program Flash):

                   1 = Performs an erase operation on the next WR command (cleared by hardware after comple-
                         tion of erase).

                   0 = Performs a write operation on the next WR command.

             If EEPGD = 0 and CFGS = 0: (Accessing data EEPROM)
             FREE is ignored. The next WR command will initiate both a erase cycle and a write cycle.

bit 3        WRERR: EEPROM Error Flag bit

             1 = Condition indicates an improper program or erase sequence attempt or termination (bit is set
                   automatically on any set attempt (write `1') of the WR bit).

             0 = The program or erase operation completed normally

bit 2        WREN: Program/Erase Enable bit

             1 = Allows program/erase cycles
             0 = Inhibits programming/erasing of program Flash and data EEPROM

bit 1        WR: Write Control bit

             1 = Initiates a program Flash or data EEPROM program/erase operation.
                   The operation is self-timed and the bit is cleared by hardware once operation is complete.

             The WR bit can only be set (not cleared) in software.

             0 = Program/erase operation to the Flash or data EEPROM is complete and inactive.

bit 0        RD: Read Control bit

             1 = Initiates an program Flash or data EEPROM read. Read takes one cycle. RD is cleared in
                   hardware. The RD bit can only be set (not cleared) in software.

             0 = Does not initiate a program Flash or data EEPROM data read

2010 Microchip Technology Inc.                        Preliminary                       DS41419A-page 119
PIC16F/LF1824/1828

REGISTER 11-6: EECON2: EEPROM CONTROL 2 REGISTER

     W-0/0         W-0/0        W-0/0  W-0/0                 W-0/0           W-0/0          W-0/0   W-0/0
bit 7                                                                                                     bit 0
                                       EEPROM Control Register 2

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
S = Bit can only be set         `0' = Bit is cleared
`1' = Bit is set

bit 7-0     Data EEPROM Unlock Pattern bits

            To unlock writes, a 55h must be written first, followed by an AAh, before setting the WR bit of the
            EECON1 register. The value written to this register is used to unlock the writes. There are specific
            timing requirements on these writes. Refer to Section 11.2.2 "Writing to the Data EEPROM
            Memory" for more information.

TABLE 11-3: SUMMARY OF REGISTERS ASSOCIATED WITH DATA EEPROM

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

EECON1 EEPGD CFGS LWLO FREE WRERR WREN                                               WR     RD      119

EECON2                          EEPROM Control Register 2 (not a physical register)                 120*

EEADRL                                                EEADRL                                   118

EEADRH      --                                               EEADRH VIH
            0 = Port pin is < VIL

            Unimplemented: Read as `0'

REGISTER 12-10: TRISB: PORTB TRI-STATE REGISTER

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

TRISB7             TRISB6   TRISB5   TRISB4              --    --   --   --

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-4     TRISB: PORTB Tri-State Control bits
bit 3-0     1 = PORTB pin configured as an input (tri-stated)
            0 = PORTB pin configured as an output

            Unimplemented: Read as `0'

REGISTER 12-11: LATB: PORTB DATA LATCH REGISTER

R/W-x/u            R/W-x/u  R/W-x/u  R/W-x/u             U-0   U-0  U-0  U-0

LATB7              LATB6    LATB5    LATB4               --    --   --   --

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-4     LATB: PORTB Output Latch Value bits(1)
bit 3-0     Unimplemented: Read as `0'

Note 1: Writes to PORTB are actually written to corresponding LATB register. Reads from PORTB register is
              return of actual I/O pin values.

DS41419A-page 132                                 Preliminary        2010 Microchip Technology Inc.
                                                                PIC16F/LF1824/1828

REGISTER 12-12: ANSELB: PORTB ANALOG SELECT REGISTER

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

ANSB7                 ANSB6      ANSB5                 ANSB4    --   --   --                                           --

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-4  ANSB: Analog Select between Analog or Digital Function on pins RB, respectively
bit 3-0  0 = Digital I/O. Pin is assigned to port or digital special function.
         1 = Analog input. Pin is assigned as analog input(1). Digital input buffer disabled.

         Unimplemented: Read as `0'

Note 1: When setting a pin to an analog input, the corresponding TRIS bit must be set to Input mode in order to allow external
                control of the voltage on the pin.

REGISTER 12-13: WPUB: WEAK PULL-UP PORTB REGISTER

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

WPUB7                 WPUB6      WPUB5                 WPUB4    --   --   --                                           --

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-4  WPUB: Weak Pull-up Register bits
bit 3-0  1 = Pull-up enabled
         0 = Pull-up disabled

         Unimplemented: Read as `0'

Note 1: Global WPUEN bit of the OPTION register must be cleared for individual pull-ups to be enabled.
         2: The weak pull-up device is automatically disabled if the pin is in configured as an output.

REGISTER 12-14: INLVLB: PORTB INPUT LEVEL CONTROL REGISTER

R/W-0/0               R/W