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

产品描述

搜索
 

PIC16LF1454T-IPQTP

器件型号:PIC16LF1454T-IPQTP
厂商名称:Microchip
厂商官网:https://www.microchip.com
下载文档

器件描述

14/20-Pin Flash, 8-Bit USB Microcontrollers with XLP Technology

PIC16LF1454T-IPQTP器件文档内容

                  PIC16(L)F1454/5/9
                             Data Sheet

14/20-Pin Flash, 8-Bit USB Microcontrollers
                           with XLP Technology

2012 Microchip Technology Inc.  Preliminary  DS41639A
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, chipKIT,
hold harmless Microchip from any and all damages, claims,          chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net,
suits, or expenses resulting from such use. No licenses are        dsPICworks, dsSPEAK, ECAN, ECONOMONITOR,
conveyed, implicitly or otherwise, under any Microchip             FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP,
intellectual property rights.                                      Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB,
                                                                   MPLINK, mTouch, 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.

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

                                                                        Printed on recycled paper.

QUALITY MANAGEMENT SYSTEM                                          ISBN: 9781620763476
          CERTIFIED BY DNV
                                                                   Microchip received ISO/TS-16949:2009 certification for its worldwide
    == ISO/TS 16949 ==                                             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.

DS41639A-page 2  Preliminary                                        2012 Microchip Technology Inc.
                                                       PIC16(L)F1454/5/9

14/20-Pin, 8-Bit Flash USB Microcontroller with
                    XLP Technology

High-Performance RISC CPU:                             Extreme Low-Power Management
                                                       PIC16LF145X with XLP:
C Compiler Optimized Architecture
Only 49 Instructions                                  Sleep mode: 25 nA @ 1.8V, typical
14 Kbytes Linear Program Memory Addressing            Watchdog Timer Current: 290 nA @ 1.8V, typical
1024 Bytes Linear Data Memory Addressing             Timer1 Oscillator: 600 nA @ 32 kHz, typical
Operating Speed:                                     Operating Current: 25 A/MHz @ 1.8V, typical

   - DC 48 MHz clock input                           Flexible Oscillator Structure:
   - DC 83 ns instruction cycle
   - Selectable 3x or 4x PLL for specific frequencies   16 MHz Internal Oscillator Block:
Interrupt Capability with Automatic Context             - Factory calibrated to 0.25%, typical
   Saving                                                 - Software selectable frequency range from
16-Level Deep Hardware Stack with Optional                 16 MHz to 31 kHz
   Overflow/Underflow Reset                               - Tunable to 0.25% across temperature range
Direct, Indirect and Relative Addressing modes:         - 48 MHz with 3x PLL
   - Two full 16-bit File Select Registers (FSRs)
                                                       31 kHz Low-Power Internal Oscillator
      capable of accessing both data or program         Clock Switching with run from:
      memory
   - FSRs can read program and data memory                - Primary Oscillator
                                                          - Secondary Oscillator (SOSC)
Special Microcontroller Features:                         - Internal Oscillator
                                                       Clock Reference Output:
Operating Voltage Range:                                - Clock Prescaler
   - 1.8V to 3.6V (PIC16LF145X)                           - CLKOUT
   - 2.3V to 5.5V (PIC16F145X)
                                                       Analog Features(1):
Self-Programmable under Software Control
Power-on Reset (POR)                                  Analog-to-Digital Converter (ADC):
Power-up Timer (PWRT)                                   - 10-bit resolution
Programmable Brown-Out Reset (BOR)                      - Up to nine external channels
Low-Power BOR (LPBOR)                                   - Two internal channels:
Extended Watchdog Timer (WDT):                             - Fixed Voltage Reference channel
                                                             - DAC output channel
   - Programmable period from 1 ms to 256s                - Auto acquisition capability
Programmable Code Protection                            - Conversion available during Sleep
In-Circuit Serial ProgrammingTM (ICSPTM) via Two
                                                       Two Comparators:
   Pins                                                   - Rail-to-rail inputs
Enhanced Low-Voltage Programming (LVP)                  - Power mode control
Power-Saving Sleep mode:                                - Software controllable hysteresis

Universal Serial Bus (USB) Features:                   Voltage Reference module:
                                                          - Fixed Voltage Reference (FVR) with 1.024V,
Self-Tuning from USB Host                                  2.048V and 4.096V output levels
   (eliminates need for external crystal)
                                                       Up to One Rail-to-Rail Resistive 5-Bit DAC with
USB V2.0 Compliant SIE                                  Positive Reference Selection
Low Speed (1.5 Mb/s) and Full Speed (12 Mb/s)
Supports Control, Interrupt, Isochronous and Bulk     Note 1: Analog features are not available on
                                                                      PIC16(L)F1454 devices.
   Transfers
Supports up to Eight Bidirectional Endpoints
512-Byte Dual Access RAM for USB
Interrupt-on-Change (IOC) on D+/D- for USB Host

   Detection
Configurable Internal Pull-up Resistors for use

   with USB

2012 Microchip Technology Inc.  Preliminary           DS41639A-page 3
PIC16(L)F145X

Peripheral Features:

Up to 14 I/O Pins and Three Input-only Pins:
   - High current sink/source 25 mA/25 mA
   - Individually programmable weak pull-ups
   - Individually programmable
      Interrupt-On-Change (IOC) pins

Timer0: 8-Bit Timer/Counter with 8-Bit
   Programmable Prescaler

Enhanced Timer1:
   - 16-bit timer/counter with prescaler
   - External Gate Input mode

Timer2: 8-Bit Timer/Counter with 8-Bit Period
   Register, Prescaler and Postscaler

Two 10-bit PWM modules
Complementary Waveform Generator (CWG)(1):

   - Up to four selectable signal sources
   - Selectable falling and rising edge dead-band

      control
   - Polarity control
   - Up to four auto-shutdown sources
   - Multiple input sources: PWM, Comparators
Master Synchronous Serial Port (MSSP) with SPI
   and I2CTM with:
   - 7-bit address masking
   - SMBus/PMBusTM compatibility
Enhanced Universal Synchronous
   Asynchronous Receiver Transmitter (EUSART):
   - RS-232, RS-485 and LIN compatible
   - Auto-baud detect
   - Auto-wake-up on Start

Note 1: Not available on PIC16(L)F1454 devices.

PIC16(L)F145X Family Types

Device           Data Sheet Index
                       Program Memory

                           Flash (words)
                                 Data SRAM
                                     (bytes)
                                          I/Os(2)

                                                 10-bit ADC (ch)
                                                       Comparators
                                                               DAC
                                                                      Timers
                                                                          (8/16-bit)
                                                                                   PWM
                                                                                             EUSART

                                                                                                      MSSP (I2CTM/SPI)
                                                                                                                CWG
                                                                                                                         USB

                                                                                                                                  Clock Reference
                                                                                                                                        Debug(1)
                                                                                                                                                XLP

PIC16(L)F1454 (1) 8192 1024 11 -- -- -- 2/1 2      1  1 -- 1 1 I/H Y

PIC16(L)F1455 (1) 8192 1024 11 5 2 1 2/1 2         1  11                                 1 1 I/H Y

PIC16(L)F1459 (1) 8192 1024 17 9 2 1 2/1 2         1  11                                 1 1 I/H Y

Note 1: I - Debugging, Integrated on Chip; H - Debugging, Available using Debug Header;
              E - Emulation, Available using Emulation Header.

2: Three pins are input-only.

Data Sheet Index:

1: DS41639 PIC16(L)F1454/1455/1459 Data Sheet, 14/20-Pin Flash, 8-Bit USB Microcontrollers.

Note: For other small form-factor package availability and marking information, please visit
            www.microchip.com/packaging or contact your local sales office.

DS41639A-page 4                Preliminary             2012 Microchip Technology Inc.
                                                                             PIC16(L)F145X

FIGURE 1:  14-PIN PDIP, SOIC, TSSOP DIAGRAM FOR PIC16(L)F1454/1455

PDIP, SOIC, TSSOP

                                                VDD 1  PIC16(L)F1454     14 VSS
                                                RA5 2     PIC16(L)F1455  13 RA0/D+/ICSPDAT(1)
                                                RA4 3                    12 RA1/D-/ICSPCLK(1)
                                 MCLR/VPP/RA3 4                          11 VUSB3V3
                                                RC5 5                    10 RC0/ICSPDAT
                                                RC4 6
                                                                          9 RC1/ICSPCLK
                                                RC3 7                     8 RC2

Note 1: LVP support for PIC18(L)F1XK50 legacy designs.
       2: See Table 1 and Table 2 for location of all peripheral functions.

FIGURE 2:  16-PIN QFN DIAGRAM FOR PIC16(L)F1454/1455

QFN (4x4)

                                 VDD  NC               NC   Vss

                          RA5 1  16 15 14 13                             12 RA0/D+/ICSPDAT(1)
                          RA4 2                                          11 RA1/D-/ICSPCLK(1)
           MCLR/VPP/RA3 3        PIC16(L)F1454                           10 VUSB3V3
                          RC5 4  PIC16(L)F1455                            9 RC0/ICSPDAT

                                 5678

                                 RC4  RC3              RC2  ICSPCLK/RC1

           Note 1: LVP support for PIC18(L)F1XK50 legacy designs.
                  2: See Table 1 and Table 2 for location of all peripheral functions.

2012 Microchip Technology Inc.       Preliminary                                              DS41639A-page 5
PIC16(L)F145X

FIGURE 3:        20-PIN PDIP, SOIC, SSOP DIAGRAM FOR PIC16(L)F1459

PDIP, SOIC, SSOP

                                 VDD 1   PIC16(L)F1459  20 VSS
                                 RA5 2                  19 RA0/D+/ICSPDAT(1)
                                 RA4 3                  18 RA1/D-/ICSPCLK(1)
                  MCLR/VPP/RA3 4                        17 VUSB3V3
                                 RC5 5                  16 RC0/ICSPDAT
                                 RC4 6                  15 RC1/ICSPCLK
                                 RC3 7                  14 RC2
                                 RC6 8
                                 RC7 9                  13 RB4
                                 RB7 10                 12 RB5
                                                        11 RB6

Note 1: LVP support for PIC18(L)F1XK50 legacy designs.
       2: See Table 3 for location of all peripheral functions.

FIGURE 4:        20-PIN QFN DIAGRAM FOR PIC16(L)F1459

QFN (4x4)

                                        RA4
                                           RA5
                                               VDD
                                                   Vss
                                                      RA0/D+/ICSPDAT(1)

                  MCLR/VPP/RA3 1        20 19 18 17 16
                                 RC5 2
                                 RC4 3                           15 RA1/D-/ICSPCLK(1)
                                 RC3 4                           14 VUSB3V3
                                 RC6 5  PIC16(L)F1459 13 RC0/ICSPDAT
                                                                 12 RC1/ICSPCLK
                                                                 11 RC2

                                         6 7 8 9 10

                                        RC7
                                           RB7
                                               RB6
                                                   RB5
                                                       RB4

           Note 1: LVP support for PIC18(L)F1XK50 legacy designs.
                  2: See Table 3 for location of all peripheral functions.

DS41639A-page 6                         Preliminary                                     2012 Microchip Technology Inc.
                                                             PIC16(L)F145X

TABLE 1: 14-PIN ALLOCATION TABLE (PIC16(L)F1454)

I/O
           14-Pin PDIP/SOIC/TSSOP

                   16-Pin QFN
                            ADC

                                            Reference
                                                               Comparator

                                                                                Timer
                                                                                                CWG
                                                                                                                 USB
                                                                                                                              EUSART
                                                                                                                                            PWM
                                                                                                                                                            MSSP
                                                                                                                                                                        Interrupt
                                                                                                                                                                                         Basic

RA0 13 12 --           --        --  --      --   D+  --     --   --                                                       IOC  ICSPDAT(3)
                                                                                                                                ICSPCLK(3)
RA1 12 11 --           --        --  --      --   D-  --     --   --                                                       IOC
                                                                                                                                      --
RA2 -- -- --           --        --  --      --   --  --     --   --                                                       --      MCLR

RA3 4 3 --             --        --  T1G(2)  --   --  --     --   SS(2) IOC                                                          VPP
                                                                                                                                 CLKOUT
RA4 3 2 --             --        --  SOSCO   --   --  --     --   SDO(2) IOC
                                     T1G(1)                                                                                        OSC2
                                                                                                                                  CLKR(1)
RA5 2 1 --             --        --  SOSCI   --   --  -- PWM2(2)  --                                                       IOC     CLKIN
                                                                                                                                   OSC1
                                     T1CKI                                                                                       ICSPDAT

RC0 10 9 --            --        --  --      --   --  --     --   SCL --                                                         ICSPCLK

                                                                  SCK                                                                 --
                                                                                                                                  CLKR(2)
RC1 9 8 --             --        --  --      --   --  --     --   SDA INT
                                                                                                                                      --
                                                                  SDI
                                                                                                                                      --
RC2 8 7 --             --        --  --      --   --  --     --   SDO(1) --
                                                                                                                                     VDD
RC3 7 6 --             --        --  --      --   --  -- PWM2(1) SS(1)                                                     --        VSS
                                                                                                                                      --
RC4 6 5 --             --        --  --      --   --  TK     --   --                                                       --

                                                      CK

RC5 5 4 --             --        --  T0CKI   --   --  RX PWM1     --                                                       --

                                                      DT

VDD           1 16 --  --        --  --      --   --  --     --   --                                                       --

VSS 14 13 --           --        --  --      --   --  --     --   --                                                       --

VUSB3V3 11 10 --       --        --  --      --  VUSB3V3 --  --   --                                                       --

Note 1:       Default location for peripheral pin function. Alternate location can be selected using the APFCON register.
          2:  Alternate location for peripheral pin function selected by the APFCON register.
          3:  LVP support for PIC18(L)F1XK50 legacy designs.

2012 Microchip Technology Inc.      Preliminary                                                                           DS41639A-page 7
PIC16(L)F145X

TABLE 2: 14-PIN ALLOCATION TABLE (PIC16(L)F1455)

I/O
           14-Pin PDIP/SOIC/TSSOP

                   16-Pin QFN
                            ADC

                                            Reference
                                                               Comparator

                                                                                Timer
                                                                                                CWG
                                                                                                                 USB
                                                                                                                              EUSART
                                                                                                                                            PWM
                                                                                                                                                            MSSP
                                                                                                                                                                        Interrupt
                                                                                                                                                                                         Basic

RA0 13 12 --           --      --      --      --      D+  --      --  --                                                  IOC  ICSPDAT(3)
                                                                                                                                ICSPCLK(3)
RA1 12 11 --           --      --      --      --      D-  --      --  --                                                  IOC
                                                                                                                                      --
RA2 -- -- --           --      --      --      --      --  --      --  --                                                  --      MCLR

RA3 4 3 --             --      --      T1G(2)  --      --  --      --  SS(2) IOC                                                     VPP
                                                                                                                                 CLKOUT
RA4 3 2 AN3            --      --      SOSCO   --      --  --      --  SDO(2) IOC
                                       T1G(1)                                                                                      OSC2
                                                                                                                                  CLKR(1)
RA5 2 1 --             --      --      SOSCI   --      --  -- PWM2(2)  --                                                  IOC     CLKIN
                                                                                                                                   OSC1
                                       T1CKI                                                                                     ICSPDAT

RC0 10 9 AN4           VREF+   C1IN+   --      --      --  --      --  SCL                                                 --    ICSPCLK

                               C2IN+                                   SCK                                                            --

RC1           9 8 AN5  --      C1IN1-  --      CWGFLT  --  --      --  SDA INT                                                    CLKR(2)
RC2                            C2IN1-
RC3                                                                    SDI                                                            --
                               C1IN2-
              8 7 AN6 DACOUT1  C2IN2-  --      --      --  --      --  SDO(1) --                                                      --

              7 6 AN7 DACOUT2  C1IN3-  --      --      --  -- PWM2(1) SS(1)                                                --        VDD
                               C2IN3-                                                                                                VSS
                                                                                                                                      --
RC4 6 5 --             --      C1OUT   --      CWG1B   --  TK      --  --                                                  --

                               C2OUT                       CK

RC5 5 4 --             --      --      T0CKI CWG1A     --  RX PWM1     --                                                  --

                                                           DT

VDD           1 16 --  --      --      --      --      --  --      --  --                                                  --

VSS 14 13 --           --      --      --      --      --  --      --  --                                                  --

VUSB3V3 11 10 --       --      --      --      --      VUSB3V3 --  --  --                                                  --

Note 1:       Default location for peripheral pin function. Alternate location can be selected using the APFCON register.
          2:  Alternate location for peripheral pin function selected by the APFCON register.
          3:  LVP support for PIC18(L)F1XK50 legacy designs.

DS41639A-page 8                        Preliminary                      2012 Microchip Technology Inc.
                                                                     PIC16(L)F145X

TABLE 3: 20-PIN ALLOCATION TABLE (PIC16(L)F1459)

I/O
          20-Pin PDIP/SOIC/SSOP

                   20-Pin QFN
                            ADC

                                             Reference
                                                                Comparator

                                                                                 Timer
                                                                                                  CWG
                                                                                                                  USB
                                                                                                                               EUSART
                                                                                                                                            PWM
                                                                                                                                                           MSSP
                                                                                                                                                                        Interrupt
                                                                                                                                                                                         Basic

RA0 19 16 --      --             --      --      --      D+  --      --    --                                              IOC ICSPDAT(3)

RA1 18 15 --      --             --      --      --      D-  --      --    --                                              IOC ICSPCLK(3)

RA2 -- -- --      --             --      --      --      --  --      --    --                                              --     --

RA3 4 1 --        --             --      T1G(2)  --      --  --      --    SS(2)                                           IOC  MCLR
                                                                                                                                 VPP

RA4 3 20 AN3      --             --      SOSCO   --      --  --      --    --                                              IOC  OSC2
                                         T1G(1)
                                                                                                                                CLKOUT
                                                                                                                                CLKR(1)

RA5 2 19 --       --             --      SOSCI   --      --  --      --    --                                              IOC  OSC1
                                                                                                                                CLKIN
                                         T1CKI

RB4 13 10 AN10    --             --      --      --      --  --      --    SDA IOC                                              --

                                                                           SDI

RB5 12 9 AN11     --             --      --      --      --  RX      --    --                                              IOC  --

                                                             DX

RB6 11 8 --       --             --      --      --      --  --      --    SCL IOC                                              --

                                                                           SCK

RB7 10 7 --       --             --      --      --      --  TX      --    --                                              IOC  --

                                                             CK

RC0 16 13 AN4     VREF+          C1IN+   --      --      --  --      --    --                                              --   ICSPDAT

                                 C2IN+

RC1 15 12 AN5     --             C1IN1-  --      CWGFLT  --  --      --    --                                              INT  ICSPCLK

                                 C2IN1-

RC2 14 11 AN6 DACOUT1 C1IN2-             --      --      --  --      --    --                                              --   --

                                 C2IN2-

RC3 7 4 AN7 DACOUT2 C1IN3-               --      --      --  --      --    --                                              --   CLKR(2)

                                 C2IN3-

RC4 6 3 --        --             C1OUT   --      CWG1B   --  --      --    --                                              --   --

                                 C2OUT

RC5 5 2 --        --             --      T0CKI CWG1A     --  -- PWM1       --                                              --   --

RC6 8 5 AN8       --             --      --      --      --  --      PWM2  SS(1)                                           --   --

RC7 9 6 AN9       --             --      --      --      --  --      --    SDO                                             --   --

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

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

VUSB3V3 17 14 --  --             --      --      --      VUSB3V3 --  --    --                                              --   --

Note 1:       Default location for peripheral pin function. Alternate location can be selected using the APFCON register.
          2:  Alternate location for peripheral pin function selected by the APFCON register.
          3:  LVP support for PIC18(L)F1XK50 legacy designs.

2012 Microchip Technology Inc.          Preliminary                                                                       DS41639A-page 9
PIC16(L)F145X

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 Resets ........................................................................................................................................................................................ 79
7.0 Reference Clock Module ............................................................................................................................................................ 87
8.0 Interrupts .................................................................................................................................................................................... 91
9.0 Power-Down Mode (Sleep) ...................................................................................................................................................... 103
10.0 Watchdog Timer (WDT) ........................................................................................................................................................... 107
11.0 Flash Program Memory Control ............................................................................................................................................... 112
12.0 I/O Ports ................................................................................................................................................................................... 129
13.0 Interrupt-On-Change ................................................................................................................................................................ 143
14.0 Fixed Voltage Reference (FVR) (PIC16(L)F1455/9 only)......................................................................................................... 149
15.0 Temperature Indicator Module (PIC16(L)F1455/9 only)........................................................................................................... 151
16.0 Analog-to-Digital Converter (ADC) Module

      (PIC16(L)F1455/9 only) ............................................................................................................................................................. 153
17.0 Digital-to-Analog Converter (DAC) Module

      (PIC16(L)F1455/9 only) ............................................................................................................................................................. 169
18.0 Comparator Module

      (PIC16(L)F1455/9 only) ............................................................................................................................................................. 173
19.0 Timer0 Module ......................................................................................................................................................................... 183
20.0 Timer1 Module with Gate Control............................................................................................................................................. 187
21.0 Timer2 Module ......................................................................................................................................................................... 199
22.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 203
23.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ............................................................... 257
24.0 Pulse Width Modulation (PWM) Module................................................................................................................................... 287
25.0 Complementary Waveform Generator (CWG) Module

      (PIC16(L)F1455/9 only)293
26.0 Universal Serial Bus (USB) ...................................................................................................................................................... 309
27.0 In-Circuit Serial ProgrammingTM (ICSPTM) ............................................................................................................................... 337
28.0 Instruction Set Summary .......................................................................................................................................................... 339
29.0 Electrical Specifications............................................................................................................................................................ 353
30.0 DC and AC Characteristics Graphs and Charts ....................................................................................................................... 383
31.0 Development Support............................................................................................................................................................... 385
32.0 Packaging Information.............................................................................................................................................................. 389
Appendix A: Data Sheet Revision History.......................................................................................................................................... 407
Index .................................................................................................................................................................................................. 409
The Microchip Web Site ..................................................................................................................................................................... 415
Customer Change Notification Service .............................................................................................................................................. 415
Customer Support .............................................................................................................................................................................. 415
Reader Response .............................................................................................................................................................................. 416
Product Identification System............................................................................................................................................................. 417

DS41639A-page 10  Preliminary   2012 Microchip Technology Inc.
                                          PIC16(L)F145X

                                   TO OUR VALUED CUSTOMERS

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

Most Current Data Sheet

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

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

Errata

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

Customer Notification System

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

2012 Microchip Technology Inc.  Preliminary  DS41639A-page 11
PIC16(L)F145X

NOTES:

DS41639A-page 12  Preliminary   2012 Microchip Technology Inc.
                                                      PIC16(L)F1454/5/9

1.0 DEVICE OVERVIEW

The PIC16(L)F1454/5/9 are described within this data
sheet. They are available in 14/20-pin packages.
Figure 1-1 shows a block diagram of the
PIC16(L)F1454/5/9 devices. Tables 1-2, 1-3 and 1-4
show the pinout descriptions.
Reference Table 1-1 for peripherals available per
device.

TABLE 1-1: DEVICE PERIPHERAL SUMMARY

Peripheral                                                            PIC16F1454
                                                                         PIC16LF1454
                                                                                        PIC16F1455
                                                                                            PIC16LF1455
                                                                                                           PIC16F1459
                                                                                                               PIC16LF1459

Analog-to-Digital Converter (ADC)                                         

Clock Reference                                                           

Complementary Wave Generator (CWG)                                       

Digital-to-Analog Converter (DAC)                                         

Enhanced Universal Synchronous/Asynchronous Receiver/Transmitter         

(EUSART)

Fixed Voltage Reference (FVR)                                             

Temperature Indicator                                                     

Universal Serial Bus (USB)                                                

Comparators

                                                                  C1      

                                                                  C2      

Master Synchronous Serial Ports

                                                      MSSP1               

PWM Modules

                                                      PWM1               

                                                      PWM2               

Timers

                                                      Timer0              

                                                      Timer1              

                                                      Timer2              

2012 Microchip Technology Inc.     Preliminary                           DS41639A-page 13
PIC16(L)F1454/5/9

FIGURE 1-1:       PIC16(L)F1454/5/9 BLOCK DIAGRAM

                                                              Program
                                                           Flash Memory

                                                                                 RAM

OSC2/CLKOUT Timing                                               CPU                                 PORTA
                        Generation                         (Figure 2-1)                             PORTB(2)
                                                                                                     PORTC
   OSC1/CLKIN INTRC
                         Oscillator

                             MCLR

                  USB     CLKR          C1(1)       C2(1)  Timer0        Timer1  Timer2 CWG1(1)

                  EUSART     Temp.        ADC              FVR(1)        PWM1    PWM2 MSSP1 DAC(1)
                          Indicator(1)  10-Bit(1)

                  Note 1: PIC16(L)F1455/9 only.
                            2: PIC16(L)F1459 only.

DS41639A-page 14                                    Preliminary                   2012 Microchip Technology Inc.
                                                               PIC16(L)F1454/5/9

TABLE 1-2: PIC16(L)F1454 PINOUT DESCRIPTION

            Name                 Function  Input Output                             Description
                                           Type Type

RA0/D+/ICSPDAT(3)                RA0       TTL CMOS General purpose I/O.

                                 D+        XTAL XTAL USB differential plus line.

RA1/D-/ICSPCLK(3)                ICSPDAT   ST CMOS ICSPTM Data I/O.
                                    RA1    TTL CMOS General purpose I/O.

                                 D-        XTAL XTAL USB differential minus line.

                                 ICSPCLK ST      -- ICSP Programming Clock.
                                                 -- General purpose input with IOC and WPU.
RA3/VPP/T1G(2)/SS(2)/MCLR        RA3       TTL

                                 VPP       HV    -- Programming voltage.

                                 T1G       ST    -- Timer1 Gate input.

                                 SS        ST    -- Slave Select input.

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

RA4/SOSCO/CLKOUT/                  RA4     TTL CMOS General purpose I/O.
T1G(1)/SDO(2)/CLKR(1)/OSC2       SOSCO     XTAL XTAL Secondary Oscillator Connection.

                                 CLKOUT    -- CMOS FOSC/4 output.

                                 T1G       ST    -- Timer1 Gate input.

                                 SDO       -- CMOS SPI data output.

                                 CLKR      -- CMOS Clock reference output.

                                 OSC2      XTAL XTAL Primary Oscillator connection.

RA5/CLKIN/SOSCI/T1CKI/            RA5       TTL CMOS General purpose I/O.
PWM2(2)/OSC1                     CLKIN     CMOS -- External clock input (EC mode).

                                 SOSCI XTAL XTAL Secondary Oscillator Connection.

                                 T1CKI     ST    -- Timer1 clock input.

                                 PWM2      -- CMOS PWM output.

                                 OSC1      XTAL XTAL Primary Oscillator Connection.

RC0/SCL/SCK/ICSPDAT              RC0       TTL CMOS General purpose I/O.
                                 SCL
                                           I2C   OD I2CTM clock.

                                 SCK       ST CMOS SPI clock.

                                 ICSPDAT ST CMOS ICSPTM Data I/O.

RC1/SDA/SDI/INT/ICSPCLK          RC1       TTL CMOS General purpose I/O.
                                 SDA
                                           I2C   OD I2C data input/output.

                                 SDI       CMOS -- SPI data input.

                                 INT       ST    -- External input.

                                 ICSPCLK   ST    -- ICSP Programming Clock.
                                    RC2
RC2/SDO(1)                                 TTL CMOS General purpose I/O.

RC3/PWM2(1)/SS(1)/CLKR(2)        SDO        -- CMOS SPI data output.
                                 RC3       TTL CMOS General purpose I/O.

                                 PWM2      -- CMOS PWM output.

                                 SS        ST    -- Slave Select input.

                                 CLKR      -- CMOS Clock reference output.

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: Default location for peripheral pin function. Alternate location can be selected using the APFCON register.

2: Alternate location for peripheral pin function selected by the APFCON register.

3: LVP support for PIC18(L)F1XK50 legacy designs.

2012 Microchip Technology Inc.                 Preliminary                                      DS41639A-page 15
PIC16(L)F1454/5/9

TABLE 1-2: PIC16(L)F1454 PINOUT DESCRIPTION (CONTINUED)

           Name             Function  Input Output                                       Description
                                      Type Type

RC4/TX/CK                   RC4       TTL CMOS General purpose I/O.

                            TX        -- CMOS USART asynchronous transmit.

                            CK        ST CMOS USART synchronous clock.

RC5/T0CKI/RX/DT/PWM1        RC5       TTL CMOS General purpose I/O.

                            T0CKI     ST    -- Timer0 clock input.

                            RX        ST    -- USART asynchronous input.

                            DT        ST CMOS USART synchronous data.

                            PWM1      -- CMOS PWM output.

VDD                         VDD       Power -- Positive supply.

VSS                         VSS       Power -- Ground reference.

VUSB3V3                     VUSB3V3 Power -- Positive supply for USB transceiver.

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: Default location for peripheral pin function. Alternate location can be selected using the APFCON register.

     2: Alternate location for peripheral pin function selected by the APFCON register.

     3: LVP support for PIC18(L)F1XK50 legacy designs.

DS41639A-page 16                          Preliminary                                     2012 Microchip Technology Inc.
                                                               PIC16(L)F1454/5/9

TABLE 1-3: PIC16(L)F1455 PINOUT DESCRIPTION

Name                             Function  Input Output                             Description
                                           Type Type

RA0/D+/ICSPDAT(3)                RA0       TTL CMOS General purpose I/O.

                                 D+        XTAL XTAL USB differential plus line.

RA1/D-/ICSPCLK(3)                ICSPDAT   ST CMOS ICSPTM Data I/O.
                                    RA1    TTL CMOS General purpose I/O.

                                 D-        XTAL XTAL USB differential minus line.

                                 ICSPCLK ST      -- ICSP Programming Clock.
                                                 -- General purpose input with IOC and WPU.
RA3/VPP/T1G(2)/SS(2)/MCLR        RA3       TTL

                                 VPP       HV    -- Programming voltage.

                                 T1G       ST    -- Timer1 Gate input.

                                 SS        ST    -- Slave Select input.

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

RA4/AN3/SOSCO/CLKOUT/            RA4       TTL CMOS General purpose I/O.
T1G(1)/SDO(2)/CLKR(1)/OSC2
                                 AN3       AN    -- A/D Channel input.

                                 SOSCO XTAL XTAL Secondary Oscillator Connection.

                                 CLKOUT    -- CMOS FOSC/4 output.

                                 T1G       ST    -- Timer1 Gate input.

                                 SDO       -- CMOS SPI data output.

                                 CLKR      -- CMOS Clock reference output.

                                 OSC2      XTAL XTAL Primary Oscillator connection.

RA5/CLKIN/SOSCI/T1CKI/            RA5       TTL CMOS General purpose I/O.
PWM2(2)/OSC1                     CLKIN     CMOS -- External clock input (EC mode).

                                 SOSCI XTAL XTAL Secondary Oscillator Connection.

                                 T1CKI     ST    -- Timer1 clock input.

                                 PWM2      -- CMOS PWM output.

                                 OSC1      XTAL XTAL Primary Oscillator Connection.

RC0/AN4/VREF+/C1IN+/C2IN+/       RC0       TTL CMOS General purpose I/O.
SCL/SCK/ICSPDAT                  AN4
                                           AN    -- A/D Channel input.

                                 VREF+     AN    -- Positive Voltage Reference input.

                                 C1IN+     AN    -- Comparator positive input.

                                 C2IN+     AN    -- Comparator positive input.
                                  SCL
                                           I2C   OD I2CTM clock.

                                 SCK       ST CMOS SPI clock.

                                 ICSPDAT ST CMOS ICSPTM Data I/O.

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: Default location for peripheral pin function. Alternate location can be selected using the APFCON register.

2: Alternate location for peripheral pin function selected by the APFCON register.

3: LVP support for PIC18(L)F1XK50 legacy designs.

2012 Microchip Technology Inc.                 Preliminary                                      DS41639A-page 17
PIC16(L)F1454/5/9

TABLE 1-3: PIC16(L)F1455 PINOUT DESCRIPTION (CONTINUED)

         Name               Function  Input Output                                       Description
                                      Type Type

RC1/AN5/C1IN1-/              RC1      TTL CMOS General purpose I/O.
C2IN1-/CWGFLT/SDA/           AN5
SDI/INT/ICSPCLK             C1IN1-    AN    -- A/D Channel input.

                                      AN    -- Comparator negative input.

                            C2IN1-    AN    -- Comparator negative input.

                            CWGFLT ST       -- Complementary Waveform Generator Fault input.
                                            OD I2CTM data input/output.
                            SDA       I2C

                            SDI       CMOS -- SPI data input.

                            INT       ST    -- External input.

                            ICSPCLK ST      -- ICSPTM Programming Clock.

RC2/AN6/DACOUT1/            RC2       TTL CMOS General purpose I/O.
C1IN2-/C2IN2-/SDO(1)        AN6
                                      AN    -- A/D Channel input.

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

                            C1IN2-    AN    -- Comparator negative input.

                            C2IN2-    AN    -- Comparator negative input.

                            SDO       -- CMOS SPI data output.

RC3/AN7/DACOUT2/                RC3   TTL CMOS General purpose I/O.
C1IN3-/C2IN3-/PWM2(1)/          AN7
SS(1)/CLKR(2)               DACOUT2   AN    -- A/D Channel input.

                                      --    AN Digital-to-Analog Converter output.

                            C1IN3-    AN    -- Comparator negative input.

                            C2IN3-    AN    -- Comparator negative input.

                            PWM2      -- CMOS PWM output.

                            CLC2IN0 ST      -- Configurable Logic Cell source input.

                            CLKR      -- CMOS Clock reference output.

RC4/C1OUT/C2OUT/              RC4     TTL CMOS General purpose I/O.
CWG1B/TX/CK                 C1OUT      -- CMOS Comparator output.

                            C2OUT     -- CMOS Comparator output.

                            CWG1B     -- CMOS CWG complementary output.

                            TX        -- CMOS USART asynchronous transmit.

                            CK        ST CMOS USART synchronous clock.

RC5/T0CKI/CWG1A/RX/DT/       RC5      TTL CMOS General purpose I/O.
PWM1                        T0CKI
                                      ST    -- Timer0 clock input.

                            CWG1A     -- CMOS CWG complementary output.

                            RX        ST    -- USART asynchronous input.

                            DT        ST CMOS USART synchronous data.

                            PWM1      -- CMOS PWM output.

VDD                         VDD       Power -- Positive supply.

VSS                         VSS       Power -- Ground reference.

VUSB3V3                     VUSB3V3 Power -- Positive supply for USB transceiver.

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: Default location for peripheral pin function. Alternate location can be selected using the APFCON register.

     2: Alternate location for peripheral pin function selected by the APFCON register.

     3: LVP support for PIC18(L)F1XK50 legacy designs.

DS41639A-page 18                           Preliminary                                    2012 Microchip Technology Inc.
                                                               PIC16(L)F1454/5/9

TABLE 1-4: PIC16(L)F1459 PINOUT DESCRIPTION

           Name                  Function  Input Output                             Description
                                           Type Type

RA0/D+/ICSPDAT(3)                RA0       TTL CMOS General purpose I/O.

                                 D+        XTAL XTAL USB differential plus line.

RA1/D-/ICSPCLK(3)                ICSPDAT   ST CMOS ICSPTM Data I/O.
                                    RA1    TTL CMOS General purpose I/O.

                                 D-        XTAL XTAL USB differential minus line.

                                 ICSPCLK ST      -- ICSP Programming Clock.
                                                 -- General purpose input with IOC and WPU.
RA3/VPP/T1G(2)/SS(2)/MCLR        RA3       TTL

                                 VPP       HV    -- Programming voltage.

                                 T1G       ST    -- Timer1 Gate input.

                                 SS        ST    -- Slave Select input.

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

RA4/AN3/SOSCO/CLKOUT/            RA4       TTL CMOS General purpose I/O.
T1G(1)/CLKR(1)/OSC2
                                 AN3       AN    -- A/D Channel input.

                                 SOSCO XTAL XTAL Secondary Oscillator Connection.

                                 CLKOUT    -- CMOS FOSC/4 output.

                                 T1G       ST    -- Timer1 Gate input.

                                 CLKR      -- CMOS Clock reference output.

                                 OSC2      XTAL XTAL Primary Oscillator connection.

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

                                 SOSCI XTAL XTAL Secondary Oscillator Connection.

                                 T1CKI     ST    -- Timer1 clock input.

                                 OSC1      XTAL XTAL Primary Oscillator Connection.

RB4/AN10/SDA/SDI                 RB4       TTL CMOS General purpose I/O.

                                 AN10      AN    -- A/D Channel input.
                                 SDA
                                           I2C   OD I2C data input/output.

                                 SDI       CMOS -- SPI data input.

RB5/AN11/RX/DT                   RB5       TTL CMOS General purpose I/O.

                                 AN11      AN    -- A/D Channel input.

                                 RX        ST    -- USART asynchronous input.

                                 DT        ST CMOS USART synchronous data.

RB6/SCL/SCK                      RB6       TTL CMOS General purpose I/O.

                                 SCL       I2C   OD I2CTM clock.

                                 SCK       ST CMOS SPI clock.

RB7/TX/CK                        RB7       TTL CMOS General purpose I/O.

                                 TX        -- CMOS USART asynchronous transmit.

                                 CK        ST CMOS USART synchronous clock.

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: Default location for peripheral pin function. Alternate location can be selected using the APFCON register.

2: Alternate location for peripheral pin function selected by the APFCON register.

3: LVP support for PIC18(L)F1XK50 legacy designs.

2012 Microchip Technology Inc.                 Preliminary                                      DS41639A-page 19
PIC16(L)F1454/5/9

TABLE 1-4: PIC16(L)F1459 PINOUT DESCRIPTION (CONTINUED)

         Name               Function  Input Output                                       Description
                                      Type Type

RC0/AN4/VREF+/C1IN+/C2IN+/  RC0       TTL CMOS General purpose I/O.
ICSPDAT                     AN4
                                      AN    -- A/D Channel input.

                            VREF+     AN    -- Positive Voltage Reference input.

                            C1IN+     AN    -- Comparator positive input.

                            C2IN+     AN    -- Comparator positive input.

                            ICSPDAT ST CMOS ICSPTM Data I/O.

RC1/AN5/C1IN1-/C2IN1-/      RC1       TTL CMOS General purpose I/O.
CWGFLT/INT/ICSPCLK          AN5
                                      AN    -- A/D Channel input.

                            C1IN1-    AN    -- Comparator negative input.

                            C2IN1-    AN    -- Comparator negative input.

                            CWGFLT ST       -- Complementary Waveform Generator Fault input.

                            INT       ST    -- External input.

                            ICSPCLK ST      -- ICSP Programming Clock.

RC2/AN6/DACOUT1/            RC2       TTL CMOS General purpose I/O.
C1IN2-/C2IN2-               AN6
                                      AN    -- A/D Channel input.

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

                            C1IN2-    AN    -- Comparator negative input.

                            C2IN2-    AN    -- Comparator negative input.

RC3/AN7/DACOUT2/            RC3       TTL CMOS General purpose I/O.
C1IN3-/C2IN3-/CLKR(2)       AN7
                                      AN    -- A/D Channel input.

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

                            C1IN3-    AN    -- Comparator negative input.

                            C2IN3-    AN    -- Comparator negative input.

                            CLKR      -- CMOS Clock reference output.

RC4/C1OUT/C2OUT/              RC4     TTL CMOS General purpose I/O.
CWG1B                       C1OUT      -- CMOS Comparator output.

                            C2OUT     -- CMOS Comparator output.

                            CWG1B     -- CMOS CWG complementary output.

RC5/T0CKI/CWG1A/PWM1        RC5       TTL CMOS General purpose I/O.

                            T0CKI     ST    -- Timer0 clock input.

                            CWG1A     -- CMOS CWG complementary output.

RC6/AN8/SS(1)/PWM2          PWM1       -- CMOS PWM output.
                             RC6      TTL CMOS General purpose I/O.

                            AN8       AN    -- A/D Channel input.

                            SS        ST    -- Slave Select input.

                            PWM2      -- CMOS PWM output.

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

                            AN9       AN    -- A/D Channel input.

                            SDO       -- CMOS SPI data output.

VDD                         VDD       Power -- Positive supply.

VSS                         VSS       Power -- Ground reference.

VUSB3V3                     VUSB3V3 Power -- Positive supply for USB transceiver.

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: Default location for peripheral pin function. Alternate location can be selected using the APFCON register.

     2: Alternate location for peripheral pin function selected by the APFCON register.

     3: LVP support for PIC18(L)F1XK50 legacy designs.

DS41639A-page 20                          Preliminary                                     2012 Microchip Technology Inc.
2.0 ENHANCED MID-RANGE CPU                                                    PIC16(L)F1454/5/9

This family of devices contain an enhanced mid-range                       Relative Addressing modes are available. Two File
8-bit CPU core. The CPU has 49 instructions. Interrupt                     Select Registers (FSRs) provide the ability to read
capability includes automatic context saving. The                          program and data memory.
hardware stack is 16 levels deep and has Overflow and                      Automatic Interrupt Context Saving
Underflow Reset capability. Direct, Indirect, and                           16-level Stack with Overflow and Underflow
                                                                            File Select Registers
                                                                            Instruction Set

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

                                                                                           3                    MUX

OSC1/CLKIN                   Instruction                       Power-up                            ALU
OSC2/CLKOUT                  DDeeccooddeea&nd                      Timer                   8

                                Control                         Power-on                           W Reg
                                                                  Reset
                                Timing
                             Generation                         Watchdog
                                                                   Timer

                                                                Brown-out
                                                                  Reset

                                  Internal                      VDD VSS
                                 Oscillator

                                   Block

2012 Microchip Technology Inc.                             Preliminary                                                        DS41639A-page 21
PIC16(L)F1454/5/9

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.5 "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 one 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.6 "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.

DS41639A-page 22  Preliminary                               2012 Microchip Technology Inc.
3.0 MEMORY ORGANIZATION                                  PIC16(L)F1454/5/9

These devices contain the following types of memory:  The following features are associated with access and
                                                      control of program memory and data memory:
Program Memory                                       PCL and PCLATH
   - Configuration Words                               Stack
   - Device ID                                        Indirect Addressing
   - User ID
   - Flash Program Memory                             3.1 Program Memory Organization

Data Memory                                         The enhanced mid-range core has a 15-bit program
   - Core Registers                                   counter capable of addressing a 32K x 14 program
   - Special Function Registers                       memory space. Table 3-1 shows the memory sizes
   - Dual-Port General Purpose RAM                    implemented. Accessing a location above these
   - General Purpose RAM                              boundaries will cause a wrap-around within the
   - Common RAM                                       implemented memory space. The Reset vector is at
                                                      0000h and the interrupt vector is at 0004h (See
                                                      Figure 3-1).

TABLE 3-1: DEVICE SIZES AND ADDRESSES

Device                           Program Memory       Last Program Memory          High-Endurance Flash
                                  Space (Words)                Address          Memory Address Range (1)

PIC16F1454                       8,192                1FFFh                              1F80h-1FFFh
PIC16LF1454
                                                                                         1F80h-1FFFh
PIC16F1455                       8,192                1FFFh
PIC16LF1455                                                                              1F80h-1FFFh

PIC16F1459                       8,192                1FFFh
PIC16LF1459

Note 1: High-endurance Flash applies to low byte of each address in the range.

2012 Microchip Technology Inc.         Preliminary                             DS41639A-page 23
PIC16(L)F1454/5/9

FIGURE 3-1:       PROGRAM MEMORY MAP         3.1.1               READING PROGRAM MEMORY AS
                  AND STACK FOR                                  DATA
                  PIC16(L)F1454/5/9
                                             There are two methods of accessing constants in pro-
                  PC<14:0>                   gram memory. The first method is to use tables of
                                             RETLW instructions. The second method is to set an
   CALL, CALLW                               FSR to point to the program memory.
RETURN, RETLW
                            15               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
                          Page 1                     RETLW DATA0                  ;Index0 data
                          Page 2      07FFh          RETLW DATA1                  ;Index1 data
                          Page 3      0800h          RETLW DATA2
                                                     RETLW DATA3
                  Rollover to Page 0  0FFFh
On-chip                               1000h  my_function
Program
Memory                                17FFh               ;... LOTS OF CODE...
                                      1800h
                                                          MOVLW   DATA_INDEX
                                      1FFFh
                                      2000h               call constants

                                                          ;... THE CONSTANT IS IN W

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

                  Rollover to Page 3  7FFFh

DS41639A-page 24                             Preliminary                   2012 Microchip Technology Inc.
                                                           PIC16(L)F1454/5/9

3.1.1.2 Indirect Read with FSR

The program memory can be accessed as data by set-
ting bit 7 of the FSRxH register and reading the match-
ing INDFx register. The MOVIW instruction will place the
lower eight bits of the addressed word in the W register.
Writes to the program memory cannot be performed via
the INDF registers. Instructions that access the pro-
gram memory via the FSR require one extra instruction
cycle to complete. Example 3-2 demonstrates access-
ing the program memory via an FSR.

The High directive will set bit<7> if a label points to a
location in program memory.

EXAMPLE 3-2:  ACCESSING PROGRAM
              MEMORY VIA FSR

constants

RETLW DATA0           ;Index0 data

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

2012 Microchip Technology Inc.     Preliminary            DS41639A-page 25
PIC16(L)F1454/5/9                                        3.2.1 CORE REGISTERS

3.2 Data Memory Organization                             The core registers contain the registers that directly
                                                         affect the basic operation. The core registers occupy
The data memory is partitioned in 32 memory banks        the first 12 addresses of every data memory bank
with 128 bytes in a bank. Each bank consists of          (addresses x00h/x08h through x0Bh/x8Bh). These
(Figure 3-2):                                            registers are listed below in Table 3-2. For detailed
                                                         information, see Table 3-11.
12 core registers
20 Special Function Registers (SFR)                    TABLE 3-2: CORE REGISTERS
Up to 80 bytes of General Purpose RAM (GPR)
Up to 80 bytes of Dual-Port General Purpose             Addresses    BANKx

   RAM (DPR)                                             x00h or x80h   INDF0
16 bytes of common RAM                                 x01h or x81h   INDF1
                                                         x02h or x82h     PCL
The active bank is selected by writing the bank number   x03h or x83h  STATUS
into the Bank Select Register (BSR). Unimplemented       x04h or x84h   FSR0L
memory will read as `0'. All data memory can be          x05h or x85h   FSR0H
accessed either directly (via instructions that use the  x06h or x86h   FSR1L
file registers) or indirectly via the two File Select    x07h or x87h   FSR1H
Registers (FSR). See Section 3.6 "Indirect               x08h or x88h    BSR
Addressing" for more information.                        x09h or x89h   WREG
                                                         x0Ah or x8Ah  PCLATH
Data memory uses a 12-bit address. The upper 7-bits      x0Bh or x8Bh  INTCON
of the address define the Bank address and the lower
5-bits select the registers/RAM in that bank.

DS41639A-page 26  Preliminary                             2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

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
device logic. Furthermore, the TO and PD bits are not                        and Digit Borrow out bits, respectively, in
writable. Therefore, the result of an instruction with the                   subtraction.
STATUS register as destination may be different than
intended.

3.3 Register Definitions: Status

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 (ADDWF, ADDLW, SUBLW, SUBWF instructions)(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) (ADDWF, ADDLW, SUBLW, SUBWF instructions)(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. For rotate (RRF, RLF) instructions, this bit is loaded with either the high-order or low-order
              bit of the source register.

2012 Microchip Technology Inc.                        Preliminary                         DS41639A-page 27
PIC16(L)F1454/5/9

3.3.1 SPECIAL FUNCTION REGISTER                            3.3.3 DUAL-PORT RAM

The Special Function Registers are registers used by       Part of the data memory is mapped to a special dual
the application to control the desired operation of        access RAM. When the USB module is disabled, the
peripheral functions in the device. The Special Function   GPRs in these banks are used like any other GPR in
Registers occupy the 20 bytes after the core registers of  the data memory space.
every data memory bank (addresses x0Ch/x8Ch
through x1Fh/x9Fh). The registers associated with the      When the USB module is enabled, the memory in these
operation of the peripherals are described in the appro-   banks is allocated as buffer RAM for USB operation.
priate peripheral chapter of this data sheet.              This area is shared between the microcontroller core
                                                           and the USB Serial Interface Engine (SIE) and is used
3.3.2 GENERAL PURPOSE RAM                                  to transfer data directly between the two.

There are up to 80 bytes of GPR in each data memory        It is theoretically possible to use the areas of USB RAM
bank. The Special Function Registers occupy the 20         that are not allocated as USB buffers for normal
bytes after the core registers of every data memory        scratchpad memory or other variable storage. In practice,
bank (addresses x0Ch/x8Ch through x1Fh/x9Fh).              the dynamic nature of buffer allocation makes this risky at
                                                           best. Additional information on USB RAM and buffer
3.3.2.1 Linear Access to GPR                               operation is provided in Section 26.0 "Universal Serial
                                                           Bus (USB)".
The general purpose RAM can be accessed in a
non-banked method via the FSRs. This can simplify          3.3.4 COMMON RAM
access to large memory structures. See Section 3.6.2
"Linear Data Memory" for more information.                 There are 16 bytes of common RAM accessible from all
                                                           banks.
Refer to Table 3-3 for Dual Port and USB addressing
information.

TABLE 3-3: DUAL PORT RAM ADDRESSING

                  Port 0                                   Port 1

CPU Banked Address        CPU Linear Address               USB Banked Address  USB Linear Address

020 - 06F                 2000 - 204F                               020 - 06F        2000 - 204F
                                                                   0A0 - 0EF         2050 - 209F
0A0 - 0EF                 2050 - 209F                               120 - 16F        20A0 - 20EF
                                                                   1A0 - 1EF         20F0 - 213F
120 - 16F                 20A0 - 20EF                               220 - 26F        2140 - 218F
                                                                   2A0 - 2EF         2190 - 21DF
1A0 - 1EF                 20F0 - 213F                               320 - 32F        21E0 - 21EF
                                                                    370 - 37F
220 - 26F                 2140 - 218F                                                      (1)

2A0 - 2EF                 2190 - 21DF

320 - 32F                 21E0 - 21EF

370 - 37F                 (1)

Note 1: Accessible from banked memory only.

DS41639A-page 28                             Preliminary                        2012 Microchip Technology Inc.
FIGURE 3-2:        BANKED MEMORY                  PIC16(L)F1454/5/9
                   PARTITIONING
                                               3.3.5 DEVICE MEMORY MAPS
                                               The memory maps for PIC16(L)F1454/5/9 are as
                                               shown in Table 3-8 and Table 3-9.

7-bit Bank Offset  Memory Region

         00h

                         Core Registers

                             (12 bytes)
         0Bh

         0Ch

                   Special Function Registers
                       (20 bytes maximum)

         1Fh

         20h                             (1)

                         Dual Port RAM
                      (80 bytes maximum)

                                 OR

                    General Purpose RAM
                      (80 bytes maximum)

         6Fh
         70h

                         Common RAM
                            (16 bytes)

         7Fh

Note 1:  If the USB module is disabled, data
         memory is GPR. If enabled, data
         memory can be DPR. Refer to Mem-
         ory Map for RAM type details.

2012 Microchip Technology Inc.                Preliminary  DS41639A-page 29
DS41639A-page 30                 TABLE 3-4: PIC16(L)F1454 MEMORY MAP, BANK 0-7                                                                                                                                      PIC16(L)F1454/5/9

                                          BANK 0                BANK 1                BANK 2                BANK 3                   BANK 4                BANK 5                BANK 6                BANK 7

                                 000h                     080h                  100h                  180h                  200h  Core Registers  280h  Core Registers  300h  Core Registers  380h  Core Registers
                                                                                                                                    (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                          Core Registers        Core Registers        Core Registers        Core Registers  20Bh                  28Bh                  30Bh                  38Bh
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)   20Ch       WPUA       28Ch          --      30Ch          --      38Ch          --
                                                                                                                            20Dh          --      28Dh          --      30Dh          --      38Dh          --
Preliminary                      00Bh      PORTA          08Bh       TRISA      10Bh    LATA          18Bh        --        20Eh          --      28Eh          --      30Eh          --      38Eh          --
                                 00Ch         --          08Ch          --      10Ch       --         18Ch        --        20Fh          --      28Fh          --      30Fh          --      38Fh          --
                                 00Dh                     08Dh                  10Dh                  18Dh        --        210h          --      290h          --      310h          --      390h          --
                                 00Eh     PORTC           08Eh       TRISC      10Eh    LATC          18Eh        --        211h                  291h          --      311h          --      391h       IOCAP
                                 00Fh         --          08Fh          --      10Fh       --         18Fh        --        212h     SSP1BUF      292h          --      312h          --      392h       IOCAN
                                 010h         --          090h          --      110h       --         190h   PMADRL         213h     SSP1ADD      293h          --      313h          --      393h       IOCAF
                                 011h                     091h                  111h       --         191h   PMADRH         214h    SSP1MSK       294h          --      314h          --      394h          --
                                 012h       PIR1          092h        PIE1      112h       --         192h   PMDATL         215h    SSP1STAT      295h          --      315h          --      395h          --
                                 013h       PIR2          093h        PIE2      113h       --         193h   PMDATH         216h    SSP1CON1      296h          --      316h          --      396h          --
                                 014h                     094h                  114h       --         194h   PMCON1         217h    SSP1CON2      297h          --      317h          --      397h          --
                                 015h         --          095h          --      115h       --         195h   PMCON2         218h    SSP1CON3      298h          --      318h          --      398h          --
                                 016h         --          096h          --      116h                  196h  VREGCON         219h                  299h          --      319h          --      399h          --
                                 017h       TMR0          097h  OPTION_REG      117h  BORCON          197h        --        21Ah          --      29Ah          --      31Ah          --      39Ah    CLKRCON
                                 018h      TMR1L          098h       PCON       118h       --         198h    RCREG         21Bh          --      29Bh          --      31Bh          --      39Bh      CRCON
                                 019h      TMR1H          099h     WDTCON       119h       --         199h    TXREG         21Ch          --      29Ch          --      31Ch          --      39Ch          --
                                 01Ah      T1CON          09Ah    OSCTUNE       11Ah       --         19Ah    SPBRG         21Dh          --      29Dh          --      31Dh          --      39Dh          --
                                 01Bh     T1GCON          09Bh     OSCCON       11Bh       --         19Bh   SPBRGH         21Eh          --      29Eh          --      31Eh          --      39Eh          --
                                 01Ch       TMR2          09Ch    OSCSTAT       11Ch       --         19Ch    RCSTA         21Fh          --      29Fh          --      31Fh          --      39Fh          --
                                 01Dh        PR2                        --                 --                 TXSTA         220h          --      2A0h                  320h     Dual-Port    3A0h
                                 01Eh      T2CON          09Dh          --      11Dh                  19Dh  BAUDCON                       --               Dual-Port              General               General
                                 01Fh                     09Eh          --      11Eh  APFCON          19Eh                  26Fh                  2EFh      General     32Fh      Purpose     3EFh      Purpose
                                 020h         --          09Fh          --      11Fh       --         19Fh                  270h     Dual-Port    2F0h      Purpose     330h      Register    3F0h      Register
                                              --          0A0h          --      120h                  1A0h                            General               Register              16Bytes               80 Bytes
                                              --                                           --                               27Fh      Purpose     2FFh      80 Bytes    36Fh      General     3FFh
                                                                                                                                      Register                          370h      Purpose           Common RAM
                                          Dual-Port             Dual-Port             Dual-Port             Dual-Port                 80 Bytes          Common RAM                Register             (Accesses
                                           General               General               General               General                                       (Accesses    37Fh      64 Bytes            70h 7Fh)
                                          Purpose               Purpose               Purpose               Purpose               Common RAM              70h 7Fh)
                                          Register              Register              Register              Register                 (Accesses                                Common RAM
                                          80 Bytes              80 Bytes              80 Bytes              80 Bytes                70h 7Fh)                                   (Accesses
                                                                                                                                                                                70h 7Fh)
2012 Microchip Technology Inc.  06Fh        Dual-Port    0EFh  Common RAM      16Fh  Common RAM      1EFh  Common RAM
                                 070h     Common RAM      0F0h    (Accesses     170h    (Accesses     1F0h    (Accesses
                                                                  70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 07Fh                     0FFh                  17Fh                  1FFh

                                 Legend:  = Unimplemented data memory locations, read as `0'.
2012 Microchip Technology Inc.  TABLE 3-5: PIC16(L)F1455 MEMORY MAP, BANK 0-7

                                          BANK 0                BANK 1                BANK 2                BANK 3                   BANK 4                BANK 5                BANK 6                BANK 7

                                 000h                     080h                  100h                  180h                  200h  Core Registers  280h  Core Registers  300h  Core Registers  380h  Core Registers
                                                                                                                                    (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                          Core Registers        Core Registers        Core Registers        Core Registers  20Bh                  28Bh                  30Bh                  38Bh
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)   20Ch       WPUA       28Ch          --      30Ch          --      38Ch          --
                                                                                                                            20Dh          --      28Dh          --      30Dh          --      38Dh          --
Preliminary                      00Bh      PORTA          08Bh       TRISA      10Bh     LATA         18Bh   ANSELA         20Eh          --      28Eh          --      30Eh          --      38Eh          --
                                 00Ch         --          08Ch          --      10Ch       --         18Ch        --        20Fh          --      28Fh          --      30Fh          --      38Fh          --
                                 00Dh                     08Dh                  10Dh                  18Dh                  210h          --      290h          --      310h          --      390h          --
                                 00Eh     PORTC           08Eh       TRISC      10Eh     LATC         18Eh   ANSELC         211h                  291h          --      311h          --      391h       IOCAP
                                 00Fh         --          08Fh          --      10Fh       --         18Fh        --        212h     SSP1BUF      292h          --      312h          --      392h       IOCAN
                                 010h         --          090h          --      110h       --         190h        --        213h     SSP1ADD      293h          --      313h          --      393h       IOCAF
                                 011h                     091h                  111h                  191h                  214h    SSP1MSK       294h          --      314h          --      394h          --
                                 012h       PIR1          092h        PIE1      112h  CM1CON0         192h   PMADRL         215h    SSP1STAT      295h          --      315h          --      395h          --
                                 013h       PIR2          093h        PIE2      113h  CM1CON1         193h   PMADRH         216h    SSP1CON1      296h          --      316h          --      396h          --
                                 014h                     094h                  114h  CM2CON0         194h   PMDATL         217h    SSP1CON2      297h          --      317h          --      397h          --
                                 015h         --          095h          --      115h  CM2CON1         195h   PMDATH         218h    SSP1CON3      298h          --      318h          --      398h          --
                                 016h         --          096h          --      116h                  196h   PMCON1         219h                  299h          --      319h          --      399h          --
                                 017h       TMR0          097h  OPTION_REG      117h   CMOUT          197h   PMCON2         21Ah          --      29Ah          --      31Ah          --      39Ah    CLKRCON
                                 018h      TMR1L          098h       PCON       118h  BORCON          198h  VREGCON         21Bh          --      29Bh          --      31Bh          --      39Bh      CRCON
                                 019h      TMR1H          099h     WDTCON       119h  FVRCON          199h                  21Ch          --      29Ch          --      31Ch          --      39Ch          --
                                 01Ah      T1CON          09Ah    OSCTUNE       11Ah                  19Ah        --        21Dh          --      29Dh          --      31Dh          --      39Dh          --
                                 01Bh     T1GCON          09Bh     OSCCON       11Bh  DACCON0         19Bh    RCREG         21Eh          --      29Eh          --      31Eh          --      39Eh          --
                                 01Ch       TMR2          09Ch    OSCSTAT       11Ch  DACCON1         19Ch    TXREG         21Fh          --      29Fh          --      31Fh          --      39Fh          --
                                 01Dh        PR2                   ADRESL                                     SPBRG         220h          --      2A0h                  320h     Dual-Port    3A0h
                                 01Eh      T2CON          09Dh     ADRESH       11Dh       --         19Dh   SPBRGH                       --               Dual-Port              General               General
                                 01Fh                     09Eh                  11Eh       --         19Eh    RCSTA         26Fh                  2EFh      General     32Fh      Purpose     3EFh      Purpose
                                 020h         --          09Fh     ADCON0       11Fh       --         19Fh    TXSTA         270h     Dual-Port    2F0h      Purpose     330h      Register    3F0h      Register
                                              --          0A0h     ADCON1       120h                  1A0h  BAUDCON                   General               Register              16Bytes               80 Bytes
                                              --                   ADCON2              APFCON                               27Fh      Purpose     2FFh      80 Bytes    36Fh      General     3FFh
                                                                                           --                                         Register                          370h      Purpose           Common RAM
                                                                                                                                      80 Bytes          Common RAM                Register             (Accesses
                                                                                           --                                                              (Accesses    37Fh      64 Bytes            70h 7Fh)
                                                                                                                                  Common RAM              70h 7Fh)
                                          Dual-Port             Dual-Port             Dual-Port             Dual-Port                (Accesses                                Common RAM                            PIC16(L)F1454/5/9
                                           General               General               General               General                70h 7Fh)                                   (Accesses
                                          Purpose               Purpose               Purpose               Purpose                                                             70h 7Fh)
                                          Register              Register              Register              Register
                                          80 Bytes              80 Bytes              80 Bytes              80 Bytes

                                 06Fh        Dual-Port    0EFh  Common RAM      16Fh  Common RAM      1EFh  Common RAM
                                 070h     Common RAM      0F0h    (Accesses     170h    (Accesses     1F0h    (Accesses
                                                                  70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 07Fh                     0FFh                  17Fh                  1FFh

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

DS41639A-page 31
DS41639A-page 32                 TABLE 3-6: PIC16(L)F1459 MEMORY MAP, BANK 0-7                                                                                                                                      PIC16(L)F1454/5/9

                                          BANK 0                BANK 1                BANK 2                BANK 3                   BANK 4                BANK 5                BANK 6                BANK 7

                                 000h                     080h                  100h                  180h                  200h  Core Registers  280h  Core Registers  300h  Core Registers  380h  Core Registers
                                                                                                                                    (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                          Core Registers        Core Registers        Core Registers        Core Registers  20Bh                  28Bh                  30Bh                  38Bh
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)   20Ch       WPUA       28Ch          --      30Ch          --      38Ch          --
                                                                                                                            20Dh       WPUB       28Dh          --      30Dh          --      38Dh          --
Preliminary                      00Bh      PORTA          08Bh       TRISA      10Bh     LATA         18Bh   ANSELA         20Eh                  28Eh          --      30Eh          --      38Eh          --
                                 00Ch      PORTB          08Ch       TRISB      10Ch     LATB         18Ch   ANSELB         20Fh          --      28Fh          --      30Fh          --      38Fh          --
                                 00Dh     PORTC           08Dh       TRISC      10Dh     LATC         18Dh   ANSELC         210h          --      290h          --      310h          --      390h          --
                                 00Eh                     08Eh                  10Eh                  18Eh                  211h          --      291h          --      311h          --      391h       IOCAP
                                 00Fh         --          08Fh          --      10Fh       --         18Fh        --        212h     SSP1BUF      292h          --      312h          --      392h       IOCAN
                                 010h         --          090h          --      110h       --         190h        --        213h     SSP1ADD      293h          --      313h          --      393h       IOCAF
                                 011h       PIR1          091h        PIE1      111h  CM1CON0         191h   PMADRL         214h    SSP1MSK       294h          --      314h          --      394h       IOCBP
                                 012h       PIR2          092h        PIE2      112h  CM1CON1         192h   PMADRH         215h    SSP1STAT      295h          --      315h          --      395h       IOCBN
                                 013h         --          093h          --      113h  CM2CON0         193h   PMDATL         216h    SSP1CON1      296h          --      316h          --      396h       IOCBF
                                 014h         --          094h          --      114h  CM2CON1         194h   PMDATH         217h    SSP1CON2      297h          --      317h          --      397h          --
                                 015h       TMR0          095h  OPTION_REG      115h   CMOUT          195h   PMCON1         218h    SSP1CON3      298h          --      318h          --      398h          --
                                 016h      TMR1L          096h       PCON       116h  BORCON          196h   PMCON2         219h          --      299h          --      319h          --      399h          --
                                 017h      TMR1H          097h     WDTCON       117h  FVRCON          197h  VREGCON         21Ah          --      29Ah          --      31Ah          --      39Ah    CLKRCON
                                 018h      T1CON          098h    OSCTUNE       118h                  198h        --        21Bh          --      29Bh          --      31Bh          --      39Bh      CRCON
                                 019h     T1GCON          099h     OSCCON       119h  DACCON0         199h    RCREG         21Ch          --      29Ch          --      31Ch          --      39Ch          --
                                 01Ah       TMR2          09Ah    OSCSTAT       11Ah  DACCON1         19Ah    TXREG         21Dh          --      29Dh          --      31Dh          --      39Dh          --
                                 01Bh        PR2          09Bh     ADRESL       11Bh                  19Bh    SPBRG         21Eh          --      29Eh          --      31Eh          --      39Eh          --
                                 01Ch      T2CON          09Ch     ADRESH       11Ch       --         19Ch   SPBRGH         21Fh          --      29Fh          --      31Fh          --      39Fh          --
                                 01Dh                                                      --                 RCSTA         220h          --      2A0h                  320h     Dual-Port    3A0h
                                 01Eh         --          09Dh     ADCON0       11Dh       --         19Dh    TXSTA                                        Dual-Port              General               General
                                 01Fh         --          09Eh     ADCON1       11Eh                  19Eh  BAUDCON         26Fh     Dual-Port    2EFh      General     32Fh      Purpose     3EFh      Purpose
                                 020h         --          09Fh     ADCON2       11Fh   APFCON         19Fh                  270h      General     2F0h      Purpose     330h      Register    3F0h      Register
                                                          0A0h                  120h       --         1A0h                            Purpose               Register              16Bytes               80 Bytes
                                                                                                                            27Fh      Register    2FFh      80 Bytes    36Fh      General     3FFh
                                                                                           --                                         80 Bytes                          370h      Purpose           Common RAM
                                                                                                                                                        Common RAM                Register             (Accesses
                                          Dual-Port             Dual-Port             Dual-Port             Dual-Port             Common RAM               (Accesses    37Fh      64 Bytes            70h 7Fh)
                                           General               General               General               General                 (Accesses            70h 7Fh)
                                          Purpose               Purpose               Purpose               Purpose                 70h 7Fh)                                Common RAM
                                          Register              Register              Register              Register                                                             (Accesses
                                          80 Bytes              80 Bytes              80 Bytes              80 Bytes                                                            70h 7Fh)

2012 Microchip Technology Inc.  06Fh        Dual-Port    0EFh  Common RAM      16Fh  Common RAM      1EFh  Common RAM
                                 070h     Common RAM      0F0h    (Accesses     170h    (Accesses     1F0h    (Accesses
                                                                  70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 07Fh                     0FFh                  17Fh                  1FFh

                                 Legend:  = Unimplemented data memory locations, read as `0'.
2012 Microchip Technology Inc.  TABLE 3-7: PIC16(L)F1454 MEMORY MAP, BANK 8-23

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

Preliminary                      400h     Core Registers  480h  Core Registers  500h  Core Registers  580h  Core Registers  600h  Core Registers  680h  Core Registers  700h  Core Registers  780h  Core Registers
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                 40Bh                     48Bh                  50Bh                  58Bh                  60Bh                  68Bh                  70Bh                  78Bh
                                 40Ch             --      48Ch          --      50Ch          --      58Ch          --      60Ch           --     68Ch           --     70Ch           --     78Ch           --
                                 40Dh             --      48Dh          --      50Dh          --      58Dh          --      60Dh           --     68Dh           --     70Dh           --     78Dh           --
                                 40Eh             --      48Eh          --      50Eh          --      58Eh          --      60Eh           --     68Eh           --     70Eh           --     78Eh           --
                                 40Fh             --      48Fh          --      50Fh          --      58Fh          --      60Fh           --     68Fh           --     70Fh           --     78Fh           --
                                 410h             --      490h          --      510h          --      590h          --      610h           --     690h           --     710h           --     790h           --
                                 411h             --      491h          --      511h          --      591h          --      611h     PWM1DCL      691h           --     711h           --     791h           --
                                 412h             --      492h          --      512h          --      592h          --      612h    PWM1DCH       692h           --     712h           --     792h           --
                                 413h             --      493h          --      513h          --      593h          --      613h    PWM1CON       693h           --     713h           --     793h           --
                                 414h             --      494h          --      514h          --      594h          --      614h     PWM2DCL      694h           --     714h           --     794h           --
                                 415h             --      495h          --      515h          --      595h          --      615h    PWM2DCH       695h           --     715h           --     795h           --
                                 416h             --      496h          --      516h          --      596h          --      616h    PWM2CON       696h           --     716h           --     796h           --
                                 417h             --      497h          --      517h          --      597h          --      617h           --     697h           --     717h           --     797h           --
                                 418h             --      498h          --      518h          --      598h          --      618h           --     698h           --     718h           --     798h           --
                                 419h             --      499h          --      519h          --      599h          --      619h           --     699h           --     719h           --     799h           --
                                 41Ah             --      49Ah          --      51Ah          --      59Ah          --      61Ah           --     69Ah           --     71Ah           --     79Ah           --
                                 41Bh             --      49Bh          --      51Bh          --      59Bh          --      61Bh           --     69Bh           --     71Bh           --     79Bh           --
                                 41Ch             --      49Ch          --      51Ch          --      59Ch          --      61Ch           --     69Ch           --     71Ch           --     79Ch           --
                                 41Dh             --      49Dh          --      51Dh          --      59Dh          --      61Dh           --     69Dh           --     71Dh           --     79Dh           --
                                 41Eh             --      49Eh          --      51Eh          --      59Eh          --      61Eh           --     69Eh           --     71Eh           --     79Eh           --
                                 41Fh             --      49Fh          --      51Fh          --      59Fh          --      61Fh           --     69Fh           --     71Fh           --     79Fh           --
                                 420h                     4A0h                  520h                  5A0h                  620h       General    6A0h                  720h                  7A0h
                                                                                                                                       Purpose          Unimplemented         Unimplemented         Unimplemented
                                          General               General               General               General         64Fh       Register   6EFh    Read as `0'   76Fh    Read as `0'   7EFh    Read as `0'
                                          Purpose               Purpose               Purpose               Purpose         650h      48 Bytes    6F0h                  770h                  7F0h
                                          Register              Register              Register              Register                                    Common RAM            Common RAM            Common RAM
                                          80 Bytes              80 Bytes              80 Bytes              80 Bytes        66Fh  Unimplemented   6FFh     (Accesses    77Fh     (Accesses    7FFh     (Accesses
                                                                                                                            670h    Read as `0'            70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 46Fh     Common RAM      4EFh  Common RAM      56Fh  Common RAM      5EFh  Common RAM                                                                                              PIC16(L)F1454/5/9
                                 470h       (Accesses     4F0h    (Accesses     570h    (Accesses     5F0h    (Accesses     67Fh  Common RAM
                                            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)             (Accesses
                                 47Fh                     4FFh                  57Fh                  5FFh                           70h 7Fh)

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

                                 800h                     880h                  900h                  980h                  A00h                  A80h                  B00h                  B80h

                                          Core Registers        Core Registers        Core Registers        Core Registers        Core Registers        Core Registers        Core Registers        Core Registers

                                          (Table 3-2 )          (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)

DS41639A-page 33                 80Bh  Unimplemented      88Bh  Unimplemented   90Bh  Unimplemented   98Bh  Unimplemented   A0Bh  Unimplemented   A8Bh  Unimplemented   B0Bh  Unimplemented   B8Bh  Unimplemented
                                 80Ch    Read as `0'      88Ch    Read as `0'   90Ch    Read as `0'   98Ch    Read as `0'   A0Ch    Read as `0'   A8Ch    Read as `0'   B0Ch    Read as `0'   B8Ch    Read as `0'

                                 86Fh  Common RAM         8EFh  Common RAM      96Fh  Common RAM      9EFh  Common RAM      A6Fh  Common RAM      AEFh  Common RAM      B6Fh  Common RAM      BEFh  Common RAM
                                 870h     (Accesses       8F0h     (Accesses    970h     (Accesses    9F0h     (Accesses    A70h     (Accesses    AF0h     (Accesses    B70h     (Accesses    BF0h     (Accesses
                                          70h 7Fh)               70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 87Fh                     8FFh                  97Fh                  9FFh                  A7Fh                  AFFh                  B7Fh                  BFFh

                                 Legend:  = Unimplemented data memory locations, read as `0'.
DS41639A-page 34                 TABLE 3-8: PIC16(L)F1455/9 MEMORY MAP, BANK 8-23                                                                                                                                   PIC16(L)F1454/5/9

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

Preliminary                      400h     Core Registers  480h  Core Registers  500h  Core Registers  580h  Core Registers  600h  Core Registers  680h  Core Registers  700h  Core Registers  780h  Core Registers
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                 40Bh                     48Bh                  50Bh                  58Bh                  60Bh                  68Bh                  70Bh                  78Bh
                                 40Ch             --      48Ch          --      50Ch          --      58Ch          --      60Ch           --     68Ch           --     70Ch           --     78Ch           --
                                 40Dh             --      48Dh          --      50Dh          --      58Dh          --      60Dh           --     68Dh           --     70Dh           --     78Dh           --
                                 40Eh             --      48Eh          --      50Eh          --      58Eh          --      60Eh           --     68Eh           --     70Eh           --     78Eh           --
                                 40Fh             --      48Fh          --      50Fh          --      58Fh          --      60Fh           --     68Fh           --     70Fh           --     78Fh           --
                                 410h             --      490h          --      510h          --      590h          --      610h           --     690h           --     710h           --     790h           --
                                 411h             --      491h          --      511h          --      591h          --      611h     PWM1DCL      691h    CWG1DBR       711h           --     791h           --
                                 412h             --      492h          --      512h          --      592h          --      612h    PWM1DCH       692h     CWG1DBF      712h           --     792h           --
                                 413h             --      493h          --      513h          --      593h          --      613h    PWM1CON       693h   CWG1CON0       713h           --     793h           --
                                 414h             --      494h          --      514h          --      594h          --      614h     PWM2DCL      694h   CWG1CON1       714h           --     794h           --
                                 415h             --      495h          --      515h          --      595h          --      615h    PWM2DCH       695h   CWG1CON2       715h           --     795h           --
                                 416h             --      496h          --      516h          --      596h          --      616h    PWM2CON       696h           --     716h           --     796h           --
                                 417h             --      497h          --      517h          --      597h          --      617h           --     697h           --     717h           --     797h           --
                                 418h             --      498h          --      518h          --      598h          --      618h           --     698h           --     718h           --     798h           --
                                 419h             --      499h          --      519h          --      599h          --      619h           --     699h           --     719h           --     799h           --
                                 41Ah             --      49Ah          --      51Ah          --      59Ah          --      61Ah           --     69Ah           --     71Ah           --     79Ah           --
                                 41Bh             --      49Bh          --      51Bh          --      59Bh          --      61Bh           --     69Bh           --     71Bh           --     79Bh           --
                                 41Ch             --      49Ch          --      51Ch          --      59Ch          --      61Ch           --     69Ch           --     71Ch           --     79Ch           --
                                 41Dh             --      49Dh          --      51Dh          --      59Dh          --      61Dh           --     69Dh           --     71Dh           --     79Dh           --
                                 41Eh             --      49Eh          --      51Eh          --      59Eh          --      61Eh           --     69Eh           --     71Eh           --     79Eh           --
                                 41Fh             --      49Fh          --      51Fh          --      59Fh          --      61Fh           --     69Fh           --     71Fh           --     79Fh           --
                                 420h                     4A0h                  520h                  5A0h                  620h       General    6A0h                  720h                  7A0h
                                                                                                                                       Purpose          Unimplemented         Unimplemented         Unimplemented
                                          General               General               General               General         64Fh       Register   6EFh    Read as `0'   76Fh    Read as `0'   7EFh    Read as `0'
                                          Purpose               Purpose               Purpose               Purpose         650h      48 Bytes    6F0h                  770h                  7F0h
                                          Register              Register              Register              Register                                    Common RAM            Common RAM            Common RAM
                                          80 Bytes              80 Bytes              80 Bytes              80 Bytes        66Fh  Unimplemented   6FFh     (Accesses    77Fh     (Accesses    7FFh     (Accesses
                                                                                                                            670h    Read as `0'            70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 46Fh     Common RAM      4EFh  Common RAM      56Fh  Common RAM      5EFh  Common RAM
                                 470h       (Accesses     4F0h    (Accesses     570h    (Accesses     5F0h    (Accesses     67Fh  Common RAM
                                            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)             (Accesses
                                 47Fh                     4FFh                  57Fh                  5FFh                           70h 7Fh)

2012 Microchip Technology Inc.           BANK 16               BANK 17               BANK 18               BANK 19               BANK 20               BANK 21               BANK 22               BANK 23

                                 800h  Core Registers     880h  Core Registers  900h  Core Registers  980h  Core Registers  A00h  Core Registers  A80h  Core Registers  B00h  Core Registers  B80h  Core Registers
                                         (Table 3-2 )              (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                 80Bh                     88Bh                  90Bh                  98Bh                  A0Bh                  A8Bh                  B0Bh                  B8Bh
                                 80Ch  Unimplemented      88Ch  Unimplemented   90Ch  Unimplemented   98Ch  Unimplemented   A0Ch  Unimplemented   A8Ch  Unimplemented   B0Ch  Unimplemented   B8Ch  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                     8EFh                  96Fh                  9EFh                  A6Fh                  AEFh                  B6Fh                  BEFh
                                 870h  Common RAM         8F0h  Common RAM      970h  Common RAM      9F0h  Common RAM      A70h  Common RAM      AF0h  Common RAM      B70h  Common RAM      BF0h  Common RAM
                                          (Accesses                (Accesses             (Accesses             (Accesses             (Accesses             (Accesses             (Accesses             (Accesses
                                 87Fh     70h 7Fh)      8FFh     70h 7Fh)   97Fh     70h 7Fh)   9FFh     70h 7Fh)   A7Fh     70h 7Fh)   AFFh     70h 7Fh)   B7Fh     70h 7Fh)   BFFh     70h 7Fh)

                                 Legend:  = Unimplemented data memory locations, read as `0'.
2012 Microchip Technology Inc.  TABLE 3-9: PIC16(L)F1454/5/9 MEMORY MAP, BANK 24-31

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

                                 C00h     Core Registers  C80h  Core Registers  D00h  Core Registers  D80h  Core Registers  E00h  Core Registers  E80h  Core Registers  F00h  Core Registers  F80h  Core Registers
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)            (Table 3-2)
                                 C0Bh                     C8Bh                  D0Bh                  D8Bh                  E0Bh                  E8Bh                  F0Bh                  F8Bh
                                 C0Ch             --      C8Ch          --      D0Ch          --      D8Ch          --      E0Ch          --      E8Ch          --      F0Ch          --      F8Ch  See Table 3-10
                                 C0Dh             --      C8Dh          --      D0Dh          --      D8Dh          --      E0Dh          --      E8Dh          --      F0Dh          --      F8Dh  for register map-
                                 C0Eh             --      C8Eh          --      D0Eh          --      D8Eh          --      E0Eh          --      E8Eh       UCON       F0Eh          --      F8Eh
                                 C0Fh             --      C8Fh          --      D0Fh          --      D8Fh          --      E0Fh          --      E8Fh       USTAT      F0Fh          --      F8Fh     ping details
                                 C10h             --      C90h          --      D10h          --      D90h          --      E10h          --      E90h         UIR      F10h          --      F90h
Preliminary                      C11h             --      C91h          --      D11h          --      D91h          --      E11h          --      E91h       UCFG       F11h          --      F91h
                                 C12h             --      C92h          --      D12h          --      D92h          --      E12h          --      E92h         UIE      F12h          --      F92h
                                 C13h             --      C93h          --      D13h          --      D93h          --      E13h          --      E93h        UEIR      F13h          --      F93h
                                 C14h             --      C94h          --      D14h          --      D94h          --      E14h          --      E94h      UFRMH       F14h          --      F94h
                                 C15h             --      C95h          --      D15h          --      D95h          --      E15h          --      E95h      UFRML       F15h          --      F95h
                                 C16h             --      C96h          --      D16h          --      D96h          --      E16h          --      E96h      UADDR       F16h          --      F96h
                                 C17h             --      C97h          --      D17h          --      D97h          --      E17h          --      E97h        UEIE      F17h          --      F97h
                                 C18h             --      C98h          --      D18h          --      D98h          --      E18h          --      E98h        UEP0      F18h          --      F98h
                                 C19h             --      C99h          --      D19h          --      D99h          --      E19h          --      E99h        UEP1      F19h          --      F99h
                                 C1Ah             --      C9Ah          --      D1Ah          --      D9Ah          --      E1Ah          --      E9Ah        UEP2      F1Ah          --      F9Ah
                                 C1Bh             --      C9Bh          --      D1Bh          --      D9Bh          --      E1Bh          --      E9Bh        UEP3      F1Bh          --      F9Bh
                                 C1Ch             --      C9Ch          --      D1Ch          --      D9Ch          --      E1Ch          --      E9Ch        UEP4      F1Ch          --      F9Ch
                                 C1Dh             --      C9Dh          --      D1Dh          --      D9Dh          --      E1Dh          --      E9Dh        UEP5      F1Dh          --      F9Dh
                                 C1Eh             --      C9Eh          --      D1Eh          --      D9Eh          --      E1Eh          --      E9Eh        UEP6      F1Eh          --      F9Eh
                                 C1Fh             --      C9Fh          --      D1Fh          --      D9Fh          --      E1Fh          --      E9Fh        UEP7      F1Fh          --      F9Fh
                                 C20h                     CA0h                  D20h                  DA0h                  E20h                  EA0h                  F20h                  FA0h

                                          Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented                            PIC16(L)F1454/5/9
                                            Read as `0'           Read as `0'           Read as `0'           Read as `0'           Read as `0'           Read as `0'           Read as `0'

                                 C6Fh     Common RAM      CEFh  Common RAM      D6Fh  Common RAM      DEFh  Common RAM      E6Fh  Common RAM      EEFh  Common RAM      F6Fh  Common RAM      FEFh  Common RAM
                                 C70h       (Accesses     CF0h    (Accesses     D70h    (Accesses     DF0h    (Accesses     E70h    (Accesses     EF0h    (Accesses     F70h    (Accesses     FF0h    (Accesses
                                            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)
                                 CFFh                     CFFh                  D7Fh                  DFFh                  E7Fh                  EFFh                  F7Fh                  FFFh

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

DS41639A-page 35
PIC16(L)F1454/5/9

TABLE 3-10: PIC16(L)F1454/5/9 MEMORY
                     MAP, BANK 30-31

         F8Ch        Bank 31

         FE3h     Unimplemented
         FE4h        Read as `0'
         FE5h
         FE6h     STATUS_SHAD
         FE7h      WREG_SHAD
         FE8h
         FE9h       BSR_SHAD
         FEAh     PCLATH_SHAD
         FEBh      FSR0L_SHAD
         FECh     FSR0H_SHAD
         FEDh      FSR1L_SHAD
         FEEh     FSR1H_SHAD
         FEFh
                           --
                      STKPTR

                         TOSL
                        TOSH

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

DS41639A-page 36                  Preliminary         2012 Microchip Technology Inc.
                                                                     PIC16(L)F1454/5/9

3.3.6         CORE FUNCTION REGISTERS
              SUMMARY

The Core Function registers listed in Table 3-11 can be
addressed from any Bank.

TABLE 3-11: CORE FUNCTION REGISTERS SUMMARY

Addr     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-31

x00h or  INDF0   Addressing this location uses contents of FSR0H/FSR0L to address data memory         xxxx xxxx          uuuu uuuu
x80h             (not a physical register)                                                                               uuuu uuuu
                                                                                                                         0000 0000
x01h or  INDF1   Addressing this location uses contents of FSR1H/FSR1L to address data memory         xxxx xxxx          ---q quuu
x81h             (not a physical register)                                                                               uuuu uuuu
                                                                                                                         0000 0000
x02h or  PCL     Program Counter (PC) Least Significant Byte                                          0000 0000          uuuu uuuu
x82h                                                                                                                     0000 0000
                                                                                                                         ---0 0000
x03h or  STATUS  --              --  --     TO                PD     Z         DC              C      ---1 1000          uuuu uuuu
x83h                                                                                                                     -000 0000
                                                                                                                         0000 0000
x04h or  FSR0L   Indirect Data Memory Address 0 Low Pointer                                           0000 0000
x84h

x05h or  FSR0H   Indirect Data Memory Address 0 High Pointer                                          0000 0000
x85h

x06h or  FSR1L   Indirect Data Memory Address 1 Low Pointer                                           0000 0000
x86h

x07h or  FSR1H   Indirect Data Memory Address 1 High Pointer                                          0000 0000
x87h

x08h or  BSR     --              --  --                              BSR<4:0>                         ---0 0000
x88h

x09h or  WREG    Working Register                                                                     0000 0000
x89h

x0Ah or  PCLATH  -- Write Buffer for the upper 7 bits of the Program Counter                          -000 0000
x8Ah

x0Bh or  INTCON  GIE    PEIE TMR0IE         INTE              IOCIE TMR0IF INTF                IOCIF 0000 0000
x8Bh

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

2012 Microchip Technology Inc.             Preliminary                                                                  DS41639A-page 37
PIC16(L)F1454/5/9

TABLE 3-12: SPECIAL FUNCTION REGISTER SUMMARY

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

Bank 0

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

00Fh --             Unimplemented                                                                                  --              --

010h --             Unimplemented                                                                                  --              --

011h PIR1           TMR1GIF ADIF            RCIF          TXIF       SSP1IF        --         TMR2IF   TMR1IF 0000 0-00 0000 0-00

012h PIR2           OSFIF          C2IF     C1IF                 --  BCL1IF USBIF             ACTIF            --  000- 000- 000- 000-

013h --             Unimplemented                                                                                  --              --

014h --             Unimplemented                                                                                  --              --

015h TMR0           Holding Register for the 8-bit Timer0 Count                                                    xxxx xxxx uuuu uuuu

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

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

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

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

01Ah TMR2           Timer2 Module Register                                                                         0000 0000 0000 0000

01Bh PR2            Timer2 Period Register                                                                         1111 1111 1111 1111

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

01Dh --             Unimplemented                                                                                  --              --

01Eh --             Unimplemented                                                                                  --              --

01Fh --             Unimplemented                                                                                  --              --

Bank 1

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

08Fh --             Unimplemented                                                                                  --              --

090h --             Unimplemented                                                                                  --              --

091h PIE1           TMR1GIE ADIE            RCIE          TXIE       SSP1IE        --         TMR2IE   TMR1IE 0000 0-00 0000 0-00

092h PIE2           OSFIE          C2IE     C1IE                 --  BCL1IE USBIE             ACTIE            --  000- 000- 000- 000-

093h --             Unimplemented                                                                                  --              --

094h --             Unimplemented                                                                                  --              --

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

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

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

098h OSCTUNE        --                                               TUN<6:0>                                      -000 0000 -uuu uuuu

099h OSCCON         SPLLEN SPLLMULT                              IRCF<3:0>                           SCS<1:0>      0011 1100 0011 1100

09Ah OSCSTAT        SOSCR PLLRDY OSTS HFIOFR                         --            --         LFIOFR   HFIOFS 00q0 --00 qqqq --qq

09Bh ADRESL(2) A/D Result Register Low                                                                             xxxx xxxx uuuu uuuu

09Ch ADRESH(2) A/D Result Register High                                                                            xxxx xxxx uuuu uuuu

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

09Eh ADCON1(2)      ADFM                    ADCS<2:0>                --            --             ADPREF<1:0>      0000 --00 0000 --00

09Fh ADCON2(2)      --                      TRIGSEL<2:0>             --            --         --               --  -000 ---- -000 ----

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved. Shaded locations are unimplemented, read as `0'.
Note 1:         PIC16(L)F1459 only.
                PIC16(L)F1455/9 only.
          2:    Unimplemented, read as `1'.
          3:

DS41639A-page 38                                       Preliminary                                 2012 Microchip Technology Inc.
                                                                             PIC16(L)F1454/5/9

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

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

Bank 2

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

10Fh --             Unimplemented                                                                             --                --

110h --             Unimplemented                                                                             --                --

111h CM1CON0(2)     C1ON         C1OUT     C1OE    C1POL              --       C1SP       C1HYS      C1SYNC   0000 -100 0000 -100
                                                                               C2SP
112h CM1CON1(2) C1INTP C1INTN                    C1PCH<1:0>           --              C1NCH<2:0>              0000 -000 0000 -000
                                                                                 --
113h CM2CON0(2)     C2ON         C2OUT     C2OE    C2POL              --                  C2HYS      C2SYNC   0000 -100 0000 -100

114h CM2CON1(2) C2INTP C2INTN                    C2PCH<1:0>           --              C2NCH<2:0>              0000 -000 0000 -000

115h CMOUT(2)       --             --      --                --       --              MC2OUT         MC1OUT   ---- --00 ---- --00

116h    BORCON      SBOREN        BORFS        --      --             --       --             --     BORRDY   10-- ---q uu-- ---u
117h    FVRCON(2)    FVREN       FVRRDY      TSEN  TSRNG                                                      0q00 0000 0q00 0000
118h    DACCON0(2)   DACEN                 DACOE1  DACOE2             CDAFVR<1:0>                 ADFVR<1:0>  0-00 00-- 0-00 00--
119h    DACCON1(2)                   --                                                                       ---0 0000 ---0 0000
                        --           --        --                     DACPSS<1:0>             --     --

                                                                               DACR<4:0>

11Ah                Unimplemented                                                                             --                --
  to --

11Ch

11Dh APFCON         CLKRSEL SDOSEL(1) SSSEL                  --    T1GSEL P2SEL(1)            --     --       000- --00 000- --00

11Eh --             Unimplemented                                                                             --                --

11Fh --             Unimplemented                                                                             --                --

  Bank 3                 --           --      --   ANSA4              --          --         --         --    ---1 ---- ---1 ----
18Ch ANSELA(2)           --           --   ANSB5   ANSB4              --          --         --         --    --11 ---- --11 ----
18Dh ANSELB(1)      ANSC7(1)     ANSC6(1)                          ANSC3       ANSC2      ANSC1      ANSC0    11-- 1111 11-- 1111
18Eh ANSELC(2)                                --      --

18Fh --             Unimplemented                                                                             --                --

190h --             Unimplemented                                                                             --                --

191h    PMADRL      Flash Program Memory Address Register Low Byte                                            0000 0000 0000 0000
192h    PMADRH          --(2) Flash Program Memory Address Register High Byte                                 1000 0000 1000 0000

193h PMDATL         Flash Program Memory Read Data Register Low Byte                                          xxxx xxxx uuuu uuuu

194h    PMDATH       --            --      Flash Program Memory Read Data Register High Byte                  --xx xxxx --uu uuuu
195h    PMCON1      --(2)        CFGS
                                           LWLO            FREE WRERR WREN                    WR     RD       1000 x000 1000 q000

196h PMCON2         Flash Program Memory Control Register 2                                                   0000 0000 0000 0000

197h VREGCON(1)     --             --      --                --       --       --         VREGPM Reserved ---- --01 ---- --01

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       RX9D 0000 000x 0000 000x

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

19Fh BAUDCON        ABDOVF RCIDL           --              SCKP    BRG16       --             WUE    ABDEN 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:         PIC16(L)F1459 only.
                PIC16(L)F1455/9 only.
          2:    Unimplemented, read as `1'.
          3:

2012 Microchip Technology Inc.                    Preliminary                                                DS41639A-page 39
PIC16(L)F1454/5/9

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

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

Bank 4

20Ch WPUA           --             --     WPUA5 WPUA4 WPUA3                   --     --            --      --11 1--- --11 1---

20Dh WPUB(1)        WPUB7 WPUB6 WPUB5 WPUB4             --                    --     --            --      1111 ---- 1111 ----

20Eh                Unimplemented                                                                          --                  --
  to --

210h

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

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

213h SSP1MSK                                            MSK<7:0>                                           1111 1111 1111 1111

214h SSP1STAT       SMP            CKE    D/A    P      S                     R/W    UA            BF      0000 0000 0000 0000

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

216h SSP1CON2       GCEN ACKSTAT ACKDT ACKEN RCEN                             PEN    RSEN          SEN     0000 0000 0000 0000

217h SSP1CON3       ACKTIM         PCIE   SCIE   BOEN SDAHT SBCDE                    AHEN          DHEN 0000 0000 0000 0000

218h                Unimplemented                                                                          --                  --
  to --

21Fh

Bank 5

28Ch                Unimplemented                                                                          --                  --
  to --

29Fh

Bank 6

30Ch                Unimplemented                                                                          --                  --
  to --

31Fh

Bank 7

38Ch                Unimplemented                                                                          --                  --
  to --

390h

391h IOCAP          --             --     IOCAP5 IOCAP4 IOCAP3                --     IOCAP1        IOCAP0 --00 0-00 --00 0-00

392h IOCAN          --             --     IOCAN5 IOCAN4 IOCAN3                --     IOCAN1        IOCAN0 --00 0-00 --00 0-00

393h    IOCAF       --             --     IOCAF5 IOCAF4 IOCAF3                --     IOCAF1        IOCAF0  --00 0-00 --00 0-00
394h    IOCBP(1)                                                                        --            --   0000 ---- 0000 ----
395h    IOCBN(1)    IOCBP7 IOCBP6 IOCBP5 IOCBP4         --                    --        --            --   0000 ---- 0000 ----
396h    IOCBF(1)                                                                        --            --   0000 ---- 0000 ----
                    IOCBN7 IOCBN6 IOCBN5 IOCBN4         --                    --

                    IOCBF7 IOCBF6 IOCBF5 IOCBF4         --                    --

397h                Unimplemented                                                                          --                  --
  to --

399h

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

39Bh ACTCON         ACTEN ACTUD           --     ACTSRC ACTLOCK               --     ACTORS        --      00-0 0-0- 00-0 0-0-

39Ch                Unimplemented                                                                          --                  --
  to --

39Fh

Bank 8

40Ch                Unimplemented                                                                          --                  --
  to --

41Fh

Bank 9

48Ch                Unimplemented                                                                          --                  --
  to --

49Fh

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved. Shaded locations are unimplemented, read as `0'.
Note 1:         PIC16(L)F1459 only.
                PIC16(L)F1455/9 only.
          2:    Unimplemented, read as `1'.
          3:

DS41639A-page 40                                 Preliminary                                   2012 Microchip Technology Inc.
                                                                 PIC16(L)F1454/5/9

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

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

Bank 10

50Ch                 Unimplemented                                                            --                --
  to --

51Fh

Bank 11

58Ch                 Unimplemented                                                            --                --
  to --

59Fh

Bank 12

60Ch                 Unimplemented                                                            --                --
  to --

610h

611h PWM1DCL         PWM1DCL<7:6>          --     --     --      --     --                --  00-- ---- 00-- ----

612h PWM1DCH                                      PWM1DCH<7:0>                                xxxx xxxx uuuu uuuu

613h PWM1CON0 PWM1EN PWM1OE PWM1OUT PWM1POL              --      --     --                --  0000 ---- 0000 ----

614h PWM2DCL         PWM2DCL<7:6>          --     --     --      --     --                --  00-- ---- 00-- ----

615h PWM2DCH                                      PWM2DCH<7:0>                                xxxx xxxx uuuu uuuu

616h PWM2CON0 PWM2EN PWM2OE PWM2OUT PWM2POL              --      --     --                --  0000 ---- 0000 ----

617h                 Unimplemented                                                            --                --
  to --

61Fh

Bank 13

  68Ch  --           Unimplemented                                                            --                --
    to
        CWG1DBR(2)   --             --                   CWG1DBR<5:0>                         --00 0000 --00 0000
  690h  CWG1DBF(2)                                                                            --xx xxxx --xx xxxx
        CWG1CON0(2)  --             --                   CWG1DBF<5:0>                         0000 0--0 0000 0--0
691h    CWG1CON1(2)                                                                           0000 --00 0000 --00
        CWG1CON2(2)  G1EN        G1OEB     G1OEA G1POLB  G1POLA  --     --          G1CS0     00-- 0001 00-- 000-
692h
                     G1ASDLB<1:0>          G1ASDLA<1:0>  --      --            G1IS<1:0>
693h
                     G1ASE G1ARSEN         --     --     G1ASDC2 G1ASDC1 G1ASDSFLT        --
694h

695h

696h                 Unimplemented                                                            --                --
  to --

69Fh

Banks 14-28

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:         PIC16(L)F1459 only.
                PIC16(L)F1455/9 only.
          2:    Unimplemented, read as `1'.
          3:

2012 Microchip Technology Inc.                   Preliminary                                 DS41639A-page 41
PIC16(L)F1454/5/9

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

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

Bank 29

E8Ch --             Unimplemented                                                          --          --

E8Dh --             Unimplemented                                                          --          --

E8Eh UCON           --     PPBRST         SE0    PKTDIS USBEN RESUME SUSPND            --  -0x0 000- -0u0 000-

E8Fh USTAT          --                    ENDP<3:0>            DIR    PPBI             --  -xxx xxx- -uuu uuu-

E90h UIR            --     SOFIF STALLIF IDLEIF         TRNIF ACTVIF UERRIF      URSTIF -000 0000 -000 0000

E91h UCFG           UTEYE Reserved        --     UPUEN Reserved FSEN         PPB<1:0>      00-0 -000 00-0 -000

E92h UIE            --     SOFIE STALLIE IDLEIE         TRNIE ACTVIE UERRIE      URSTIE -000 0000 -000 0000

E93h UEIR           BTSEF          --     --     BTOEF DFN8EF CRC16EF CRC5EF     PIDEF 0--0 -000 0--0 -000

E94h UFRMH          --             --     --     --     --     FRM10  FRM9       FRM8 ---- -xxx ---- -uuu

E95h UFRML          FRM7   FRM6           FRM5   FRM4   FRM3   FRM2   FRM1       FRM0 xxxx xxxx uuuu uuuu

E96h UADDR          --     ADDR6 ADDR5 ADDR4 ADDR3 ADDR2 ADDR1                   ADDR0 -000 0000 -000 0000

E97h UEIE           BTSEE          --     --     BTOEE DFN8EE CRC16EE CRC5EE     PIDEE 0--0 0000 0--0 0000

E98h UEP7                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E99h UEP6                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E9Ah UEP5                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E9Bh UEP4                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E9Ch UEP3                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E9Dh UEP2                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E9Eh UEP1                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

E9Fh UEP0                                     EPHSHK EPCONDIS EPOUTEN EPINEN  EPSTALL ---0 0000 ---0 0000

Bank 30

F0Ch --             Unimplemented                                                          --          --
  --

F1Fh

Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved. Shaded locations are unimplemented, read as `0'.
Note 1:         PIC16(L)F1459 only.
                PIC16(L)F1455/9 only.
          2:    Unimplemented, read as `1'.
          3:

DS41639A-page 42                                 Preliminary           2012 Microchip Technology Inc.
                                                                                PIC16(L)F1454/5/9

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

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

Bank 31

F8Ch --             Unimplemented                                                                    --                --
  --

FE3h

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

FE5h    WREG_       Working Register Shadow                                                          xxxx xxxx 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:         PIC16(L)F1459 only.
                PIC16(L)F1455/9 only.
          2:    Unimplemented, read as `1'.
          3:

2012 Microchip Technology Inc.                          Preliminary                                 DS41639A-page 43
PIC16(L)F1454/5/9

3.4 PCL and PCLATH                                                  3.4.2 COMPUTED GOTO

The Program Counter (PC) is 15 bits wide. The low byte              A computed GOTO is accomplished by adding an offset to
comes from the PCL register, which is a readable and                the program counter (ADDWF PCL). When performing a
writable register. The high byte (PC<14:8>) is not directly         table read using a computed GOTO method, care should
readable or writable and comes from PCLATH. On any                  be exercised if the table location crosses a PCL memory
Reset, the PC is cleared. Figure 3-3 shows the five                 boundary (each 256-byte block). Refer to Application
situations for the loading of the PC.                               Note AN556, "Implementing a Table Read" (DS00556).

FIGURE 3-3:                 LOADING OF PC IN                        3.4.3 COMPUTED FUNCTION CALLS
                            DIFFERENT SITUATIONS
                                                                    A computed function CALL allows programs to maintain
      14               PCH          PCL        0  Instruction with  tables of functions and provide another way to execute
PC                                                    PCL as        state machines or look-up tables. When performing a
                                                                    table read using a computed function CALL, care
                                                  Destination       should be exercised if the table location crosses a PCL
                                                                    memory boundary (each 256-byte block).
        6              7    0       8
                                                                    If using the CALL instruction, the PCH<2:0> and PCL
PCLATH                         ALU Result                           registers are loaded with the operand of the CALL
                                                                    instruction. PCH<6:3> is loaded with PCLATH<6:3>.
      14               PCH          PCL        0
PC                                                                  The CALLW instruction enables computed calls by com-
                                                  GOTO, CALL        bining PCLATH and W to form the destination address.
                                                                    A computed CALLW is accomplished by loading the W
                   64       0 11                                    register with the desired address and executing CALLW.
PCLATH                          OPCODE <10:0>                       The PCL register is loaded with the value of W and
                                                                    PCH is loaded with PCLATH.
      14               PCH          PCL        0
PC                                                                  3.4.4 BRANCHING
                                                  CALLW
                                                                    The branching instructions add an offset to the PC.
        6              7    0       8                               This allows relocatable code and code that crosses
                                     W                              page boundaries. There are two forms of branching,
PCLATH                                                              BRW and BRA. The PC will have incremented to fetch
                                                                    the next instruction in both cases. When using either
      14               PCH          PCL        0                    branching instruction, a PCL memory boundary may be
PC                                                                  crossed.
                                                  BRW
                                                                    If using BRW, load the W register with the desired
                             15                                     unsigned address and execute BRW. The entire PC will
                            PC + W                                  be loaded with the address PC + 1 + W.

      14               PCH          PCL        0                    If using BRA, the entire PC will be loaded with PC + 1 +,
PC                                                                  the signed value of the operand of the BRA instruction.
                                                  BRA

                                     15
                          PC + OPCODE <8:0>

3.4.1 MODIFYING PCL

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

DS41639A-page 44                                               Preliminary   2012 Microchip Technology Inc.
                                                                 PIC16(L)F1454/5/9

3.5 Stack                                                        3.5.1 ACCESSING THE STACK

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

2012 Microchip Technology Inc.        Preliminary                              DS41639A-page 45
PIC16(L)F1454/5/9

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

DS41639A-page 46        Preliminary               2012 Microchip Technology Inc.
                                                             PIC16(L)F1454/5/9

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.5.2 OVERFLOW/UNDERFLOW RESET

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

3.6 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

2012 Microchip Technology Inc.        Preliminary           DS41639A-page 47
PIC16(L)F1454/5/9

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.

DS41639A-page 48           Preliminary                                         2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

3.6.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,
DPR and common registers.

FIGURE 3-9:  TRADITIONAL DATA MEMORY MAP

             Direct Addressing                                        Indirect Addressing

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

                                                            0 00 0

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

                                 0x7F                               Bank 31
                                         Bank 0 Bank 1 Bank 2

2012 Microchip Technology Inc.  Preliminary                                               DS41639A-page 49
PIC16(L)F1454/5/9

3.6.2 LINEAR DATA MEMORY                                    3.6.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
DPR or 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 eight bits of each memory location is accessible
linear data memory region allows buffers to be larger       via INDF. Writing to the program Flash memory cannot
than 80 bytes because incrementing the FSR beyond           be accomplished via the FSR/INDF interface. All
one bank will go directly to the DPR or GPR memory of       instructions that access program Flash memory via the
the next 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

DS41639A-page 50                      Preliminary                             2012 Microchip Technology Inc.
                                                       PIC16(L)F1454/5/9

4.0 DEVICE CONFIGURATION

Device configuration consists of Configuration Words,
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 Words is
       managed automatically by device
       development tools including debuggers
       and programmers. For normal device
       operation, this bit should be maintained as
       a '1'.

2012 Microchip Technology Inc.  Preliminary           DS41639A-page 51
PIC16(L)F1454/5/9

4.2 Register Definitions: Configuration Words

REGISTER 4-1:         CONFIG1: CONFIGURATION WORD 1

                              R/P-1  R/P-1          R/P-1  R/P-1  R/P-1                    U-1
                             FCMEN   IESO       CLKOUTEN                                   --
                          bit 13                           BOREN<1:0>
                                                                                                bit 8

    R/P-1          R/P-1   R/P-1     R/P-1      R/P-1      R/P-1      R/P-1                R/P-1
      CP          MCLRE   PWRTE                                   FOSC<2:0>                      bit 0
                                                WDTE<1:0>
bit 7

Legend:                   P = Programmable bit  U = Unimplemented bit, read as `1'
R = Readable bit          `1' = Bit is set      -n = Value when blank or after Bulk Erase
`0' = Bit is cleared

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

           Unimplemented: Read as `1'
           CP: Code Protection bit(2)
           1 = Program memory code protection is disabled
           0 = Program memory code protection is enabled

           MCLRE: 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 = PWRT disabled
           0 = PWRT enabled

           WDTE<1:0>: Watchdog Timer Enable bits
           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

DS41639A-page 52                     Preliminary                   2012 Microchip Technology Inc.
                                              PIC16(L)F1454/5/9

REGISTER 4-1: CONFIG1: CONFIGURATION WORD 1 (CONTINUED)

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

         111 = ECH: External clock, High-Power mode: on CLKIN pin
         110 = ECM: External clock, Medium-Power mode: on CLKIN pin
         101 = ECL: External clock, Low-Power mode: on CLKIN pin
         100 = INTOSC oscillator: I/O function on OSC1 pin
         011 = EXTRC oscillator: RC function connected to CLKIN pin
         010 = HS oscillator: High-speed crystal/resonator on OSC1 and OSC2 pins
         001 = XT oscillator: Crystal/resonator on OSC1 and OSC2 pins
         000 = LP oscillator: Low-power crystal on OSC1 and OSC2 pins

Note 1: Enabling Brown-out Reset does not automatically enable Power-up Timer.
        2: Once enabled (CP = 0), code-protect can only be disabled by bulk erasing the device.

2012 Microchip Technology Inc.  Preliminary                                                     DS41639A-page 53
PIC16(L)F1454/5/9

REGISTER 4-2:         CONFIG2: CONFIGURATION WORD 2

                                  R/P-1     R/P-1   R/P-1  R/P-1    R/P-1                        R/P-1
                                   LVP   DEBUG(3)  LPBOR   BORV   STVREN                         PLLEN
                             bit 13
                                                                                                         bit 8

R/P-1                 R/P-1  R/P-1       R/P-1     U-1     U-1    R/P-1                          R/P-1

PLLMULT USBLSCLK             CPUDIV<1:0>           --      --     WRT<1:0>

bit 7                                                                                                             bit 0

Legend:                      P = Programmable bit  U = Unimplemented bit, read as `1'
R = Readable bit             `1' = Bit is set      -n = Value when blank or after Bulk Erase
`0' = Bit is cleared

bit 13       LVP: Low-Voltage Programming Enable bit(1)
bit 12       1 = Low-voltage programming enabled
bit 11       0 = High-voltage on MCLR must be used for programming
bit 10       DEBUG: In-Circuit Debugger Mode bit(3)
bit 9        1 = In-Circuit Debugger disabled, ICSPCLK and ICSPDAT are general purpose I/O pins
bit 8        0 = In-Circuit Debugger enabled, ICSPCLK and ICSPDAT are dedicated to the debugger
bit 7
bit 6        LPBOR: Low-Power BOR Enable bit
bit 5-4      1 = Low-Power Brown-out Reset is disabled
             0 = Low-Power Brown-out Reset is enabled
bit 3-2      BORV: Brown-out Reset Voltage Selection bit(2)
bit 1-0      1 = Brown-out Reset voltage (Vbor), low trip point selected
             0 = Brown-out Reset voltage (Vbor, high trip point selected

             STVREN: Stack Overflow/Underflow Reset Enable bit
             1 = Stack Overflow or Underflow will cause a Reset
             0 = Stack Overflow or Underflow will not cause a Reset

             PLLEN: PLL Enable bit
             1 = PLL is enabled
             0 = PLL is disabled

             PLLMULT: PLL Multiplier Selection bit
             1 = 3x PLL Output Frequency is selected
             0 = 4x PLL Output Frequency is selected

             USBLSCLK: USB Low-Speed Clock Selection bit
             1 = USB Clock divide-by 8 (48 MHz system input clock expected)
             0 = USB Clock divide-by 4 (24 MHz system input clock expected)

             CPUDIV<1:0>: CPU System Clock Selection bits
             11 = CPU system clock divided by 6
             10 = CPU system clock divided by 3
             01 = CPU system clock divided by 2
             00 = No CPU system clock divide

             Unimplemented: Read as `1'

             WRT<1:0>: Flash Memory Self-Write Protection bits
             8 kW Flash memory:

                   11 = Write protection off
                   10 = 000h to 01FFh write-protected, 0200h to 1FFFh may be modified
                   01 = 000h to 0FFFh write-protected, 1000h to 1FFFh may be modified
                   00 = 000h to 1FFFh write-protected, no addresses may be modified

Note 1:      The LVP bit cannot be programmed to `0' when Programming mode is entered via LVP.
         2:  See Vbor parameter for specific trip point voltages.
         3:
             The DEBUG bit in Configuration Words is managed automatically by device development tools including
             debuggers and programmers. For normal device operation, this bit should be maintained as a '1'.

DS41639A-page 54                         Preliminary               2012 Microchip Technology Inc.
                                                          PIC16(L)F1454/5/9

4.3 Code Protection

Code protection allows the device to be protected from
unauthorized access. Internal access to the program
memory is unaffected by any code protection setting.

4.3.1 PROGRAM MEMORY PROTECTION

The entire program memory space is protected from
external reads and writes by the CP bit in Configuration
Words. 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.4 "Write
Protection" for more information.

4.4 Write Protection

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

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

4.5 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.4 "User ID, Device ID and Configuration
Word Access" for more information on accessing these
memory locations. For more information on checksum
calculation, see the "PIC16(L)F1454/5/9 Memory
Programming Specification" (DS41620).

2012 Microchip Technology Inc.  Preliminary              DS41639A-page 55
PIC16(L)F1454/5/9

4.6 Device ID and Revision ID

The memory location 8005h and 8006h are where the
Device ID and Revision ID are stored. See
Section 11.4 "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.

4.7 Register Definitions: Revision and Device

REGISTER 4-3: DEVID: DEVICE ID REGISTER

                                         R             R            R             R  R  R

                                                                       DEV<13:8>

                                 bit 13                                                    bit 8

       R          R                      R             R            R             R  R  R

                                                          DEV<7:0>

bit 7                                                                                      bit 0

Legend:                          `0' = Bit is cleared
R = Readable bit
`1' = Bit is set

bit 13-0  DEV<13:0>: Device ID bits

                         Device                  DEVICEID<13:0> Values

                  PIC16F1454                11 0000 0010 0000 (3020h)
                  PIC16LF1454               11 0000 0010 0100 (3024h)
                  PIC16F1455                11 0000 0010 0001 (3021h)
                  PIC16LF1455               11 0000 0010 0101 (3025h)
                  PIC16F1459                11 0000 0010 0011 (3023h)
                  PIC16LF1459               11 0000 0010 0111 (3027h)

REGISTER 4-4: REVID: REVISION ID REGISTER

                                         R             R            R             R  R  R

                                                                       REV<13:8>

                                 bit 13                                                    bit 8

       R          R                      R             R            R             R  R  R

                                                          REV<7:0>

bit 7                                                                                      bit 0

Legend:                          `0' = Bit is cleared
R = Readable bit
`1' = Bit is set

bit 13-0  REV<13:0>: Revision ID bits

DS41639A-page 56                                       Preliminary                    2012 Microchip Technology Inc.
5.0 OSCILLATOR MODULE (WITH                                   PIC16(L)F1454/5/9
         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 20 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, with a choice of speeds selectable via        5. XT Medium Gain Crystal or Ceramic Resonator
software. Additional clock features include:
                                                                 Oscillator mode (up to 4 MHz)
Selectable system clock source between external          6. HS High Gain Crystal or Ceramic Resonator
   or internal sources via software.
                                                                 mode (4 MHz to 20 MHz)
Two-Speed Start-up mode, which minimizes                 7. RC External Resistor-Capacitor (RC).
   latency between external oscillator start-up and        8. INTOSC Internal oscillator (31 kHz to 16 MHz).
   code execution.
                                                           Clock Source modes are selected by the FOSC<2:0>
Fail-Safe Clock Monitor (FSCM) designed to               bits in the Configuration Words. The FOSC bits
   detect a failure of the external clock source (LP,      determine the type of oscillator that will be used when
   XT, HS, EC or RC modes) and switch                      the device is first powered.
   automatically to the internal oscillator.
                                                           The EC clock mode relies on an external logic level
Oscillator Start-up Timer (OST) ensures stability        signal as the device clock source. The LP, XT, and HS
   of crystal oscillator sources                           clock modes require an external crystal or resonator to
                                                           be connected to the device. Each mode is optimized for
Fast start-up oscillator allows internal circuits to     a different frequency range. The RC clock mode
   power up and stabilize before switching to the 16       requires an external resistor and capacitor to set the
   MHz HFINTOSC                                            oscillator frequency.

3x/4x selectable Phase Lock Frequency Multiplier         The INTOSC internal oscillator block produces a low
   allows operation at 24, 32 or 48 MHz.                   and high-frequency clock source, designated
                                                           LFINTOSC and HFINTOSC. (see Internal Oscillator
USB with configurable Full/Low speed operation.          Block, Figure 5-1). A wide selection of device clock
                                                           frequencies may be derived from these two clock
                                                           sources.

2012 Microchip Technology Inc.  Preliminary               DS41639A-page 57
PIC16(L)F1454/5/9

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

                            FOSC<2:0>          SPLLMULT                    SPLLEN
                                                 PLLMULT                   PLLEN

                                             3

CLKIN/ OSC1/                  INTOSC                     3x/4x PLL                    CPUDIV<1:0>
SOSCI/ T1CKI                                               Primary Clock
                              (16 or 8 MHz)
CLKOUT / OSC2
  SOSCO/ T1G       Primary                                                              CPU         1     FOSC
                  Oscillator                                                           Divider
    Active Clock                                                                                          to
        Tuning      (OSC)                                                                   FSEN

   16 MHz                                                                                           0 CPU and
Internal OSC
                              SOSC_clk                                                                 Peripherals
   Start-Up                        IRCF<3:0>
     OSC          Secondary                          Secondary Clock                            48 MHz 1     USB
                  Oscillator                                                                     6 MHz 0    Clock
   Start-up        (SOSC)                                       INTOSC                                    Source
Control Logic                                 4
                                                                                        USB
                                                                                       Divider

                                               16 MHz                                  USBLSCLK
                                                8 MHz
                  HFINTOSC    Postscaler        4 MHz                       Clock      Sleep
                                                2 MHz                      Control
                                                1 MHz                                  SCS<1:0>
                                                                                    2  FOSC<2:0>
                                              500 kHz                         3
                                              250 kHz
                                              125 kHz
                                              62.5 kHz
                                             31.25 kHz

                                                 31 kHz

31 kHz            LFINTOSC                                LFINTOSC           to WDT, PWRT
Source                                                                     and other Modules

DS41639A-page 58                             Preliminary                                2012 Microchip Technology Inc.
                                                            PIC16(L)F1454/5/9

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 within the oscillator                       MODE OPERATION
module. The internal oscillator block has two internal
oscillators that are used to generate the internal system   Clock from           OSC1/CLKIN
clock sources: the 16 MHz High-Frequency Internal           Ext. System                   PIC MCU
Oscillator and the 31 kHz Low-Frequency Internal
Oscillator (LFINTOSC).                                         FOSC/4 or I/O(1)  OSC2/CLKOUT

The system clock can be selected between external or          Note 1: Output depends upon CLKOUTEN bit of the
internal clock sources via the System Clock Select                            Configuration Words.
(SCS) bits in the OSCCON register. See Section 5.3
"CPU Clock Divider" for additional information.             5.2.1.2 LP, XT, HS Modes

5.2.1 EXTERNAL CLOCK SOURCES                                The LP, XT and HS modes support the use of quartz
                                                            crystal resonators or ceramic resonators connected to
An external clock source can be used as the device          OSC1 and OSC2 (Figure 5-3). The three modes select
system clock by performing one of the following             a low, medium or high gain setting of the internal
actions:                                                    inverter-amplifier to support various resonator types
                                                            and speed.
Program the FOSC<2:0> bits in the Configuration
   Words to select an external clock source that will       LP Oscillator mode selects the lowest gain setting of the
   be used as the default system clock upon a               internal inverter-amplifier. LP mode current consumption
   device Reset.                                            is the least of the three modes. This mode is designed to
                                                            drive only 32.768 kHz tuning-fork type crystals (watch
Write the SCS<1:0> bits in the OSCCON register            crystals).
   to switch the system clock source to:
   - Secondary oscillator during run-time, or               XT Oscillator mode selects the intermediate gain
   - An external clock source determined by the             setting of the internal inverter-amplifier. XT mode
      value of the FOSC bits.                               current consumption is the medium of the three modes.
                                                            This mode is best suited to drive resonators with a
See Section 5.3 "CPU Clock Divider"for more infor-          medium drive level specification.
mation.
                                                            HS Oscillator mode selects the highest gain setting of the
5.2.1.1 EC Mode                                             internal inverter-amplifier. HS mode current consumption
                                                            is the highest of the three modes. This mode is best
The External Clock (EC) mode allows an externally           suited for resonators that require a high drive setting.
generated logic level signal to be the system clock
source. When operating in this mode, an external clock      Figure 5-3 and Figure 5-4 show typical circuits for
source is connected to the OSC1 input.                      quartz crystal and ceramic resonators, respectively.
OSC2/CLKOUT is available for general purpose I/O or
CLKOUT. Figure 5-2 shows the pin connections for EC
mode.

EC mode has three power modes to select from through
Configuration Words:

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

2012 Microchip Technology Inc.  Preliminary                                     DS41639A-page 59
PIC16(L)F1454/5/9

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

                     PIC MCU                                                   PIC MCU

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

C2           RS(1)   OSC2/CLKOUT                                                OSC2/CLKOUT

                                                            C2 Ceramic RS(1)
                                                                  Resonator

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

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

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

       2: Always verify oscillator performance over         If the oscillator module is configured for LP, XT or HS
            the VDD and temperature range that is           modes, the Oscillator Start-up Timer (OST) counts 1024
            expected for the application.                   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 unless
             AN826, "Crystal Oscillator Basics and         either FSCM or Two-Speed Start-Up are enabled. In this
             Crystal Selection for rfPIC and PIC          case, code will continue to execute at the selected
             Devices" (DS00826)                             INTOSC frequency while the OST is counting . The OST
                                                            ensures that the oscillator circuit, using a quartz crystal
             AN849, "Basic PIC Oscillator Design"         resonator or ceramic resonator, has started and is
             (DS00849)                                      providing a stable system clock to the oscillator module.

             AN943, "Practical PIC Oscillator             In order to minimize latency between external oscillator
             Analysis and Design" (DS00943)                 start-up and code execution, the Two-Speed Clock
                                                            Start-up mode can be selected (see Section 5.6
             AN949, "Making Your Oscillator Work"          "Two-Speed Clock Start-up Mode").
             (DS00949)

DS41639A-page 60                               Preliminary                       2012 Microchip Technology Inc.
5.2.1.4 3x PLL or 4x PLL                                      PIC16(L)F1454/5/9

The oscillator module contains a PLL that can be used       Note 1: Quartz crystal characteristics vary
with both external and internal clock sources to provide a              according to type, package and
system clock source. By setting the SPLLMULT bit of the                 manufacturer. The user should consult the
OSCCON register, 3x PLL is selected. By clearing the                    manufacturer data sheets for specifications
SPLLMULT bit of the OSCCON register, 4x PLL is                          and recommended application.
selected. The input frequency for the PLL must fall within
specifications. See the PLL Clock Timing Specifications in         2: Always verify oscillator performance over
Section 29.0 "Electrical Specifications".                               the VDD and temperature range that is
                                                                        expected for the application.
The PLL may be enabled for use by one of two methods:
                                                                   3: For oscillator design assistance, reference
1. Program the PLLEN bit in Configuration Words                         the following Microchip Applications Notes:
      to a `1'.
                                                                         AN826, "Crystal Oscillator Basics and
2. Write the SPLLEN bit in the OSCCON register to                        Crystal Selection for rfPIC and PIC
      a `1'. If the PLLEN bit in Configuration Words is                  Devices" (DS00826)
      programmed to a `1', then the value of SPLLEN
      is ignored.                                                       AN849, "Basic PIC Oscillator Design"
                                                                         (DS00849)
PLL      HFINTOSC  ECH/HS                      System
            (MHz)   (MHz)                   Clock (MHz)                  AN943, "Practical PIC Oscillator
                                                                         Analysis and Design" (DS00943)
4x           8      8 - 12                     32 - 48
                    8 - 16                     24 - 48                   AN949, "Making Your Oscillator Work"
3x       16, 8                                                           (DS00949)

5.2.1.5 Secondary Oscillator                                             TB097, "Interfacing a Micro Crystal
                                                                         MS1V-T1K 32.768 kHz Tuning Fork
The secondary oscillator is a separate crystal oscillator                Crystal to a PIC16F690/SS" (DS91097)
that is associated with the Timer1 peripheral. It is opti-
mized for timekeeping operations with a 32.768 kHz                      AN1288, "Design Practices for
crystal connected between the SOSCO and SOSCI                            Low-Power External Oscillators"
device pins.                                                             (DS01288)

The secondary oscillator can be used as an alternate
system clock source and can be selected during
run-time using clock switching. Refer to Section 5.3
"CPU Clock Divider" for more information.

FIGURE 5-5:     QUARTZ CRYSTAL
                OPERATION
                (SECONDARY
                OSCILLATOR)

                                 PIC MCU

                                     SOSCI  To Internal
                                            Logic
     C1

                 32.768 kHz
                 Quartz
                 Crystal

     C2            SOSCO

2012 Microchip Technology Inc.                          Preliminary  DS41639A-page 61
PIC16(L)F1454/5/9

5.2.1.6 External RC Mode                                  5.2.2 INTERNAL CLOCK SOURCES

The external Resistor-Capacitor (RC) modes support        The device may be configured to use the internal oscil-
the use of an external RC circuit. This allows the        lator block as the system clock by performing one of the
designer maximum flexibility in frequency choice while    following actions:
keeping costs to a minimum when clock accuracy is not
required.                                                 Program the FOSC<2:0> bits in Configuration
                                                             Words to select the INTOSC clock source, which
The RC circuit connects to OSC1. OSC2/CLKOUT is              will be used as the default system clock upon a
available for general purpose I/O or CLKOUT. The             device Reset.
function of the OSC2/CLKOUT pin is determined by the
CLKOUTEN bit in Configuration Words.                      Write the SCS<1:0> bits in the OSCCON register
                                                             to switch the system clock source to the internal
Figure 5-6 shows the external RC mode connections.           oscillator during run-time. See Section 5.3 "CPU
                                                             Clock Divider"for more information.
FIGURE 5-6:       EXTERNAL RC MODES
                                                          In INTOSC mode, OSC1/CLKIN is available for general
       VDD                    PIC MCU  Internal          purpose I/O. OSC2/CLKOUT is available for general
REXT              OSC1/CLKIN             Clock            purpose I/O or CLKOUT.

CEXT             OSC2/CLKOUT                             The function of the OSC2/CLKOUT pin is determined
  VSS                                                     by the CLKOUTEN bit in Configuration Words.
FOSC/4 or I/O(1)
                                                          The internal oscillator block has two independent
Recommended values: 10 k  REXT  100 k, <3V                oscillators that provides the internal system clock
                                3 k  REXT  100 k, 3-5V    source.
                                CEXT > 20 pF, 2-5V
                                                          1. The HFINTOSC (High-Frequency Internal
Note 1: Output depends upon CLKOUTEN bit of the                 Oscillator) is factory calibrated and operates at
                Configuration Words.                            16 MHz. The frequency of the HFINTOSC can be
                                                                user-adjusted via software using the OSCTUNE
The RC oscillator frequency is a function of the supply         register (Register 5-3).
voltage, the resistor (REXT) and capacitor (CEXT) values
and the operating temperature. Other factors affecting    2. The LFINTOSC (Low-Frequency Internal
the oscillator frequency are:                                   Oscillator) is uncalibrated and operates at
                                                                31 kHz.
threshold voltage variation
component tolerances                                    5.2.2.1 HFINTOSC
packaging variations in capacitance
                                                          The High-Frequency Internal Oscillator (HFINTOSC) is
The user also needs to take into account variation due    a factory calibrated 16 MHz internal clock source. The
to tolerance of the external RC components used.          frequency of the HFINTOSC can be altered via
                                                          software using the OSCTUNE register (Register 5-3).

                                                          The output of the HFINTOSC connects to a postscaler
                                                          and multiplexer (see Figure 5-1). The frequency derived
                                                          from the HFINTOSC can be selected via software using
                                                          the IRCF<3:0> bits of the OSCCON register. See
                                                          Section 5.2.2.4 "Internal Oscillator Frequency
                                                          Selection" for more information.

                                                          The HFINTOSC is enabled by:

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

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

                                                             OSCCON register to `1x'.

                                                          A fast start-up oscillator allows internal circuits to
                                                          power-up and stabilize before switching to HFINTOSC.

                                                          The High-Frequency Internal Oscillator Ready bit
                                                          (HFIOFR) of the OSCSTAT register indicates when the
                                                          HFINTOSC is running.

                                                          The High-Frequency Internal Oscillator Stable bit
                                                          (HFIOFS) of the OSCSTAT register indicates when the
                                                          HFINTOSC is running within 0.5% of its final value.

DS41639A-page 62                        Preliminary        2012 Microchip Technology Inc.
                                                          PIC16(L)F1454/5/9

5.2.2.2  Internal Oscillator Frequency                    5.2.2.4  Internal Oscillator Frequency
         Adjustment                                                Selection

The 16 MHz internal oscillator is factory calibrated.     The system clock speed can be selected via software
This internal oscillator can be adjusted in software by   using the Internal Oscillator Frequency Select bits
writing to the OSCTUNE register (Register 5-3). Since     IRCF<3:0> of the OSCCON register.
all HFINTOSC clock sources are derived from the
16 MHz internal oscillator a change in the OSCTUNE        The output of the 16 MHz HFINTOSC and 31 kHz
register value will apply to all HFINTOSC frequencies.    LFINTOSC connects to a postscaler and multiplexer
                                                          (see Figure 5-1). The Internal Oscillator Frequency
The default value of the OSCTUNE register is `0'. The     Select bits IRCF<3:0> of the OSCCON register select
value is a 7-bit two's complement number. A value of      the frequency output of the internal oscillators. One of
3Fh will provide an adjustment to the maximum             the following frequencies can be selected via software:
frequency. A value of 40h will provide an adjustment to
the minimum frequency.                                     HFINTOSC
                                                             - 48 MHz (requires 3x PLL)
When the OSCTUNE register is modified, the oscillator        - 32 MHz (requires 4x PLL)
frequency will begin shifting to the new frequency. Code     - 24 MHz (requires 3x PLL)
execution continues during this shift. There is no           - 16 MHz
indication that the shift has occurred.                      - 8 MHz
                                                             - 4 MHz
OSCTUNE does not affect the LFINTOSC frequency.              - 2 MHz
Operation of features that depend on the LFINTOSC            - 1 MHz
clock source frequency, such as the Power-up Timer           - 500 kHz (Default after Reset)
(PWRT), Watchdog Timer (WDT), Fail-Safe Clock                - 250 kHz
Monitor (FSCM) and peripherals, are not affected by the      - 125 kHz
change in frequency.                                         - 62.5 kHz
                                                             - 31.25 kHz
5.2.2.3 LFINTOSC
                                                          LFINTOSC
The Low-Frequency Internal Oscillator (LFINTOSC) is          - 31 kHz
an uncalibrated 31 kHz internal clock source.
                                                          Note:    Following any Reset, the IRCF<3:0> bits
The output of the LFINTOSC connects to a postscaler                of the OSCCON register are set to `0111'
and multiplexer (see Figure 5-1). Select 31 kHz, via               and the frequency selection is set to
software, using the IRCF<3:0> bits of the OSCCON                   500 kHz. The user can modify the IRCF
register. See Section 5.2.2.4 "Internal Oscillator                 bits to select a different frequency.
Frequency Selection" for more information. The
LFINTOSC is also the frequency for the Power-up Timer     The IRCF<3:0> bits of the OSCCON register allow
(PWRT), Watchdog Timer (WDT) and Fail-Safe Clock          duplicate selections for some frequencies. These dupli-
Monitor (FSCM).                                           cate choices can offer system design trade-offs. Lower
                                                          power consumption can be obtained when changing
The LFINTOSC is enabled by selecting 31 kHz               oscillator sources for a given frequency. Faster transi-
(IRCF<3:0> bits of the OSCCON register = 000) as the      tion times can be obtained between frequency changes
system clock source (SCS bits of the OSCCON               that use the same oscillator source.
register = 1x), or when any of the following are
enabled:

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

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

   OSCCON register to `1x'

Peripherals that use the LFINTOSC are:

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

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

2012 Microchip Technology Inc.         Preliminary                                           DS41639A-page 63
PIC16(L)F1454/5/9

5.2.2.5  Internal Oscillator Frequency                     5.2.2.6  Internal Oscillator Clock Switch
         Selection Using the PLL                                    Timing

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

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

For 48 MHz, the IRCF bits of the OSCCON regis-           4. The current clock is held low and the clock
   ter must be set to the 16 MHz HFINTOSC set to                 switch circuitry waits for a rising edge in the new
   use (IRCF<3:0> = 1111).                                       clock.

For 24 MHz or 48 MHz, the 3x PLL is required.            5. The new clock is now active.
   The SPLLMULT of the OSCCON register must be
   set to use (SPLLMULT = 1).                              6. The OSCSTAT register is updated as required.

For 32 MHz, the 4x PLL is required. The                  7. Clock switch is complete.
   SPLLMULT of the OSCCON register must be
   clear to use (SPLLMULT = 0).                            See Figure 5-7 for more details.

The SPLLEN bit of the OSCCON register must be            If the internal oscillator speed is switched between two
   set to enable the PLL, or the PLLEN bit of the          clocks of the same source, there is no start-up delay
   Configuration Words must be programmed to a             before the new frequency is selected. Clock switching
   '1'.                                                    time delays are shown in Table 5-3.

Note:    When using the PLLEN bit of the                   Start-up delay specifications are located in the
         Configuration Words, the PLL cannot be            oscillator tables of Section 29.0 "Electrical
         disabled by software. The 8 MHz and 16            Specifications".
         MHz HFINTOSC options will no longer be
         available.

The PLL is not available for use with the internal oscil-
lator when the SCS bits of the OSCCON register are
set to '1x'. The SCS bits must be set to '00' to use the
PLL with the internal oscillator.

DS41639A-page 64                        Preliminary                  2012 Microchip Technology Inc.
                                                                           PIC16(L)F1454/5/9

FIGURE 5-7:   INTERNAL OSCILLATOR SWITCH TIMING

HFINTOSC LFINTOSC (FSCM and WDT disabled)

HFINTOSC                         Start-up Time     2-cycle Sync            Running
LFINTOSC

IRCF <3:0>    0                                 0

System Clock

HFINTOSC LFINTOSC (Either FSCM or WDT enabled)

   HFINTOSC                                                  2-cycle Sync  Running

   LFINTOSC                      0                           0
  IRCF <3:0>
System Clock

LFINTOSC HFINTOSC

LFINTOSC                         Start-up Time 2-cycle Sync     LFINTOSC turns off unless WDT or FSCM is enabled

HFINTOSC                                                                                        Running
IRCF <3:0>
              =0                                0

System Clock

2012 Microchip Technology Inc.     Preliminary                                     DS41639A-page 65
PIC16(L)F1454/5/9

5.3 CPU Clock Divider                                       5.4.1 LOW-SPEED OPERATION

The CPU Clock divider allows the system clock to run        For low-speed USB Operation, a 24 MHz clock is
at a slower speed than the Low/Full-Speed USB               required for the USB module. To generate the 24 MHz
module clock, while sharing the same clock source.          clock, the following Oscillator modes are allowed:
Only the oscillator defined by the settings of the FOSC
bits of the Configuration Words may be used with the         HFINTOSC with PLL
CPU clock divider. the CPU clock divider is controlled       ECH mode
by the CPUDIV<1:0> bits of the Configuration Words.          HS mode

Setting the CPUDIV bits will set the system clock to:       Table 5-1 shows the recommended Clock mode for
                                                            low-speed operation.
Equal the clock speed of the USB module
Half the clock speed of the USB module                    5.4.2 HIGH-SPEED OPERATION
One third the clock speed of the USB Module
One sixth clock speed of the USB module                   For full-speed USB operation, a 48 MHz clock is
                                                            required for the USB module. To generate the 48 MHz
For more information on the CPU Clock Divider, see          clock, the following oscillator modes are allowed:
Figure 5-1 and Configuration Words.
                                                             HFINTOSC with PLL
5.4 USB Operation                                           ECH mode
                                                             HS mode
The USB module is designed to operate in two different
modes:                                                      Table 5-1 shows the recommended Clock mode for
                                                            full-speed operation.
Low Speed
Full Speed

To achieve the timing requirements imposed by the
USB specifications, the internal oscillator or the primary
external oscillator are required for the USB module.
The FOSC bits of the Configuration Words must be set
to INTOSC, ECH or HS mode with a clock frequency of
6, 12, or 16 MHz.

TABLE 5-1: LOW-SPEED USB CLOCK SETTINGS

Clock Mode           Clock   PLL Value                      USBLSCLK  CPUDIV<1:0>  System Clock
                  Frequency                                                          Frequency
                                                                             11         (MHz)
                  16 MHz     3x                             1                10
                                                                             01             8
HFINTOSC                                                                     00            16
                                                                                           24
                  8 MHz      3x                             0                11            48
                                                                             10
                  16 MHz     3x                             1                01             4
                                                                             00             8
ECH or HS mode    12 MHz     4x                             1                              12
                                                                             11            24
                  8 MHz      3x                             0                10
                                                                             01             8
                                                                             00            16
                                                                                           24
                                                                             11            48
                                                                             10
                                                                             01             8
                                                                             00            16
                                                                                           24
                                                                             11            48
                                                                             10
                                                                             01             4
                                                                             00             8
                                                                                           12
                                                                                           24

DS41639A-page 66                 Preliminary                           2012 Microchip Technology Inc.
                                                  PIC16(L)F1454/5/9

TABLE 5-2: HIGH-SPEED USB CLOCK SETTINGS

Clock Mode         Clock         PLL Value  USBLSCLK  CPUDIV<1:0>  System Clock
                Frequency                                            Frequency
                                                             11         (MHz)
HFINTOSC        16 MHz           3x         0                10
                                                             01             8
                16 MHz           3x         0                00            16
                                                             11            24
ECH or HS mode                                               10            48
                                                             01
                12 MHz           4x         0                00             8
                                                             11            16
                                                             10            24
                                                             01            48
                                                             00
                                                                            8
                                                                           16
                                                                           24
                                                                           48

2012 Microchip Technology Inc.      Preliminary                   DS41639A-page 67
PIC16(L)F1454/5/9

5.5 Clock Switching                                         5.5.3 SECONDARY OSCILLATOR

The system clock source can be switched between             The secondary 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 SOSCO and SOSCI device
using the SCS bits:                                         pins.

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

5.5.1  SYSTEM CLOCK SELECT (SCS)                            5.5.4  SECONDARY OSCILLATOR READY
       BITS                                                        (SOSCR) BIT

The System Clock Select (SCS) bits of the OSCCON            The user must ensure that the secondary 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 Secondary Oscillator Ready (SOSCR) bit
                                                            of the OSCSTAT register indicates whether the
When the SCS bits of the OSCCON register = 00,            secondary oscillator is ready to be used. After the
   the system clock source is determined by value of        SOSCR bit is set, the SCS bits can be configured to
   the FOSC<2:0> bits in the Configuration Words.           select the secondary oscillator.

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

When the SCS bits of the OSCCON register = 1x,
   the system clock source is chosen by the internal
   oscillator frequency selected by the IRCF<3:0>
   bits of the OSCCON register. After a Reset, the
   SCS bits of the OSCCON register are always
   cleared.

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

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

5.5.2  OSCILLATOR START-UP TIMER
       STATUS (OSTS) BIT

The Oscillator Start-up Timer Status (OSTS) bit of the
OSCSTAT register indicates whether the system clock
is running from the external clock source, as defined by
the FOSC<2:0> bits in the Configuration Words, 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 secondary oscillator.

DS41639A-page 68                  Preliminary                       2012 Microchip Technology Inc.
                                                                 PIC16(L)F1454/5/9

5.6 Two-Speed Clock Start-up Mode                         5.6.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 Words) = 1; Inter-
time from the time spent awake and can reduce the            nal/External Switchover bit (Two-Speed Start-up
overall power consumption of the device. This mode           mode enabled).
allows the application to wake-up from Sleep, perform
a few instructions using the INTOSC internal oscillator    SCS (of the OSCCON register) = 00.
block as the clock source and go back to Sleep without    FOSC<2:0> bits in the Configuration Words
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   Note: When FSCM is enabled, Two-Speed
oscillator does not require any stabilization time after               Start-Up will automatically be enabled.
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-3: OSCILLATOR SWITCHING DELAYS

Switch From            Switch To              Frequency          Oscillator Delay

Sleep/POR              LFINTOSC(1)            31 kHz             Oscillator Warm-up Delay (TWARM)
                       HFINTOSC               31.25 kHz-16 MHz
Sleep/POR                                                        2 cycles
LFINTOSC               EC, RC                 DC 20 MHz        1 cycle of each

Sleep/POR              EC, RC                 DC 20 MHz        1024 Clock Cycles (OST)

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

                       Secondary Oscillator 32 kHz

                       PLL Active             24-48 MHz

2012 Microchip Technology Inc.               Preliminary        DS41639A-page 69
PIC16(L)F1454/5/9

5.6.2  TWO-SPEED START-UP                               5.6.3  CHECKING TWO-SPEED CLOCK
       SEQUENCE                                                STATUS

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

DS41639A-page 70                  Preliminary                           2012 Microchip Technology Inc.
                                                               PIC16(L)F1454/5/9

5.7 Fail-Safe Clock Monitor                                    5.7.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 Words. The FSCM is applicable to all             INTOSC selected in OSCCON. When the OST times
external Oscillator modes (LP, XT, HS, EC, RC and              out, the Fail-Safe condition is cleared after successfully
secondary oscillator).                                         switching to the external clock source. The OSFIF bit
                                                               should be cleared prior to switching to the external
FIGURE 5-9:      FSCM BLOCK DIAGRAM                            clock source. If the Fail-Safe condition still exists, the
                                                               OSFIF flag will again become set by hardware.
       External             Clock Monitor
         Clock                    Latch                        5.7.4 RESET OR WAKE-UP FROM SLEEP
                                SQ
                                                               The FSCM is designed to detect an oscillator failure
LFINTOSC            64          RQ                            after the Oscillator Start-up Timer (OST) has expired.
Oscillator                                                    The OST is used after waking up from Sleep and after
                 488 Hz                                Clock   any type of Reset. The OST is not used with the EC or
  31 kHz         (~2 ms)                              Failure  RC Clock modes so that the FSCM will be active as
(~32 s)                                           Detected    soon as the Reset or wake-up has completed. When
                                                               the FSCM is enabled, the Two-Speed Start-up is also
Sample Clock                                                   enabled. Therefore, the device will always be executing
                                                               code while the OST is operating.

                                                               Note:  Due to the wide range of oscillator start-up
                                                                      times, the Fail-Safe circuit is not active
5.7.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.7.2 FAIL-SAFE OPERATION

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

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

2012 Microchip Technology Inc.  Preliminary                          DS41639A-page 71
PIC16(L)F1454/5/9

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.

DS41639A-page 72                   Preliminary           2012 Microchip Technology Inc.
                                                                   PIC16(L)F1454/5/9

5.8 Active Clock Tuning (ACT)                            5.8.2     ACTIVE CLOCK TUNING SOURCE
                                                                   SELECTION
The Active Clock Tuning (ACT) continuously adjusts
the 16 MHz Internal Oscillator, using an available       The ACT reference clock is selected with the ACTSRC
external reference, to achieve 0.20% accuracy. This    bit of the ACTCON register. The reference clock
eliminates the need for a high-speed, high-accuracy      sources are provided by the:
external crystal when the system has an available         USB module in full-speed operation (ACT_clk)
lower speed, lower power, high-accuracy clock source      Secondary clock at 32.768 kHz (SOSC_clk)
available.
                                                         5.8.3 ACT LOCK STATUS
Systems implementing a Real-Time Clock Calendar
(RTCC) or a full-speed USB application can take full     The ACTLOCK bit will be set to '1', when the 16 MHz
advantage of the ACT.                                    Internal Oscillator is successfully tuned.
                                                         The bit will be cleared by the following conditions:
5.8.1  ACTIVE CLOCK TUNING                               Out of Lock condition
       OPERATION                                          Device Reset
                                                          ACT is disabled
The ACT defaults to the disabled state after any Reset.
When the ACT is disabled, the user can write to the      5.8.4 ACT OUT-OF-RANGE STATUS
TUN<6:0> bits in the OSCTUNE register to manually
adjust the 16 MHz Internal Oscillator.                   If the ACT requires an OSCTUNE value outside the
                                                         range to achieve 0.20% accuracy, then
The ACT is enabled by setting the ACTEN bit of the       the ACT Out-of-Range (ACTOR) Status bit will be set
ACTCON register. When enabled, the ACT takes             to '1'.
control of the OSCTUNE register. The ACT uses the
selected ACT reference clock to tune the 16 MHz          An out-of-range status can occur:
Internal Oscillator to an accuracy of 16MHz 0.2%.
The tuning automatically adjusts the OSCTUNE             When the 16 MHz internal oscillator is tuned to its
register every reference clock cycle.                       lowest frequency and the next ACT_clk event
                                                            requests a lower frequency.
Note 1: When the ACT is enabled, the
            OSCTUNE register is only updated by          When the 16 MHz internal oscillator is tuned to its
            the ACT. Writes to the OSCTUNE regis-           highest frequency and the next ACT_clk event
            ter by the user are inhibited, but reading      requests a higher frequency.
            the register is permitted.
                                                         When the ACT out-of-range event occurs, the 16 MHz
       2: After disabling the ACT, the user should       internal oscillator will continue to use the last written
            wait three instructions before writing to    OSCTUNE value. When the OSCTUNE value moves
            the OSCTUNE register.                        back within the tunable range and ACTLOCK is
                                                         established, the ACTOR bit is cleared to '0'.

FIGURE 5-11:  ACTIVE CLOCK TUNING BLOCK DIAGRAM

              ACTSRC             ACTEN

       FSUSB_clk      1 ACT_clk          Enable                       16 MHz
        SOSC_clk      0                                            Internal OSC
                                        Active
                                        Clock            ACT data                sfr data
                                        Tuning
                                                             7                        7

                  ACTUD                                  OSCTUNE<6:0>                         Write
                  ACTEN                                                                    OSCTUNE
                                                                                           ACTEN

2012 Microchip Technology Inc.         Preliminary                                        DS41639A-page 73
PIC16(L)F1454/5/9

5.8.5  ACTIVE CLOCK TUNING UPDATE
       DISABLE

When the ACT is enabled, the OSCTUNE register is
continuously updated every ACT_clk period. Setting
the ACT Update Disable bit can be used to suspend
updates to the OSCTUNE register, without disabling
the ACT. If the 16 MHz internal oscillator drifts out of the
accuracy range, the ACT Status bits will change and an
interrupt can be generated to notify the application.

Clearing the ACTUD bit will engage the ACT updates
to OSCTUNE and an interrupt can be generated to
notify the application.

5.8.6 INTERRUPTS

The ACT will set the ACT Interrupt Flag, (ACTIF) when
either of the ACT Status bits (ACTLOCK or ACTORS)
change state, regardless if the interrupt is enabled,
(ACTIE = 1). The ACTIF and ACTIE bits are in the PIRx
and PIEx registers, respectively. When ACTIE = 1, an
interrupt will be generated whenever the ACT Status
bits change.

The ACTIF bit must be cleared in software, regardless
of the interrupt enable setting.

5.8.7 OPERATION DURING SLEEP

This ACT does not run during Sleep and will not gener-
ate interrupts during Sleep.

DS41639A-page 74   Preliminary                                 2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

5.9 Register Definitions: Oscillator Control

REGISTER 5-1: OSCCON: OSCILLATOR CONTROL REGISTER

   R/W-0/0    R/W-0/0            R/W-0/0  R/W-1/1      R/W-1/1      R/W-1/1  R/W-0/0  R/W-0/0
   SPLLEN   SPLLMULT
bit 7                                                  IRCF<3:0>             SCS<1:0>

                                                                                       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
bit 5-2     If PLLEN in Configuration Words = 1:
            SPLLEN bit is ignored. PLL is always enabled (subject to oscillator requirements)
bit 1-0     If PLLEN in Configuration Words = 0:
            1 = PLL is enabled
            0 = PLL is disabled

            SPLLMULT: Software PLL Multiplier Select bit

            1 = 3x PLL is enabled
            0 = 4x PLL is enabled

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

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

            SCS<1:0>: System Clock Select bits

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

Note 1: Duplicate frequency derived from HFINTOSC.

2012 Microchip Technology Inc.                        Preliminary                    DS41639A-page 75
PIC16(L)F1454/5/9

REGISTER 5-2: OSCSTAT: OSCILLATOR STATUS REGISTER

R-1/q             R-0/q   R-q/q                 R-0/q  U-0   U-0   R-0/q                       R-0/q
                                                                  LFIOFR                      HFIOFS
SOSCR             PLLRDY  OSTS   HFIOFR                --    --
                                                                                                      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 = Conditional
`1' = Bit is set

bit 7    SOSCR: Secondary Oscillator Ready bit

bit 6    If T1OSCEN = 1:
bit 5    1 = Secondary oscillator is ready
bit 4    0 = Secondary oscillator is not ready
bit 3-2  If T1OSCEN = 0:
bit 1    1 = Timer1 clock source is always ready
bit 0
         PLLRDY: PLL Ready bit

         1 = PLL is ready
         0 = PLL is not ready

         OSTS: Oscillator Start-up Timer Status bit

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

         HFIOFR: High-Frequency Internal Oscillator Ready bit

         1 = HFINTOSC is ready
         0 = HFINTOSC is not ready

         Unimplemented: Read as `0'

         LFIOFR: Low-Frequency Internal Oscillator Ready bit

         1 = LFINTOSC is ready
         0 = LFINTOSC is not ready

         HFIOFS: High-Frequency Internal Oscillator Stable bit

         1 = HFINTOSC 16 MHz Oscillator is stable and is driving the INTOSC
         0 = HFINTOSC 16 MHz is not stable, the Start-up Oscillator is driving INTOSC

DS41639A-page 76                                Preliminary        2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

REGISTER 5-3: OSCTUNE: OSCILLATOR TUNING REGISTER(1,2)

      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  R/W-0/0
       --                                              TUN<6:0>                                          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
           TUN<6:0>: Frequency Tuning bits

           1000000 = Minimum frequency
           
           
           
           1111111 =
           0000000 = Oscillator module is running at the factory-calibrated frequency.
           0000001 =
           
           
           
           0111110 =
           0111111 = Maximum frequency

Note 1: When active clock tuning is enabled (ACTSEL = 1) the oscillator is tuned automatically, the user cannot
              write to OSCTUNE.

        2: Oscillator is tuned monotonically.

2012 Microchip Technology Inc.                        Preliminary                               DS41639A-page 77
PIC16(L)F1454/5/9

REGISTER 5-4: ACTCON: ACTIVE CLOCK TUNING (ACT) CONTROL REGISTER

   R/W-0/0        R/W-0/0           U-0          R/W-0/0      R-0/0            U-0                   R-0/0         U-0
    ACTEN         ACTUD                                                                            ACTORS          --
bit 7                                 --         ACTSRC(1) ACTLOCK             --
                                                                                                                        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             ACTEN: Active Clock Tuning Selection bit

                  1 = ACT is enabled, updates to OSCTUNE are exclusive to the ACT
                  0 = ACT is disabled

bit 6             ACTUD: Active Clock Tuning Update Disable bit

                  1 = Updates to the OSCTUNE register from ACT are disabled
                  0 = Updates to the OSCTUNE register from ACT are enabled

bit 5             Unimplemented: Read as `0'

bit 4             ACTSRC: Active Clock Tuning Source Selection bit

                  1 = The HFINTOSC oscillator is tuned using Fll-speed USB events
                  0 = The HFINTOSC oscillator is tuned using the 32.768 kHz oscillator (SOSC) clock source

bit 3             ACTLOCK: Active Clock Tuning Lock Status bit

                  1 = Locked; 16 MHz internal oscillator is within 0.20%.Locked
                  0 = Not locked; 16 MHz internal oscillator tuning has not stabilized within 0.20%

bit 2             Unimplemented: Read as `0'

bit 1             ACTORS: Active Clock Tuning Out-of-Range Status bit

                  1 = Out-of-range; oscillator frequency is outside of the OSCTUNE range
                  0 = In-range; oscillator frequency is within the OSCTUNE range

bit 0             Unimplemented: Read as `0'

Note 1: The ACTSRC bit should only be changed when ACTEN = 0.

TABLE 5-4: 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
ACTCON      ACTEN ACTUD                   --        ACTSRC ACTLOCK         --                  ACTORS        --
                                                                                                                       75
OSCCON      SPLLEN SPLLMULT                             IRCF<3:0>                                  SCS<1:0>            75
                                                                                                                       76
OSCSTAT     SOSCR PLLRDY                  OSTS HFIOFR            --        --                  LFIOFR HFIOFS           77
                                                                                                                       98
OSCTUNE           --                                          TUNE<6:0>                                               100
                                                                                                                      195
PIR2             OSFIF       C2IF         C1IF      --        BCL1IF       USBIF               ACTIF         --

PIE2        OSFIE            C2IE         C1IE      --        BCL1IE       USBIE               ACTIE         --

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

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

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

Name Bits Bit -/7            Bit -/6      Bit 13/5  Bit 12/4     Bit 11/3  Bit 10/2            Bit 9/1    Bit 8/0  Register
                                                                                                                   on Page
CONFIG1     13:8         --     --        FCMEN     IESO CLKOUTEN              BOREN<1:0>                    --
                             MCLRE        PWRTE         WDTE<1:0>                                                      52
            7:0          CP                                                                    FOSC<2:0>

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

DS41639A-page 78                                    Preliminary                                 2012 Microchip Technology Inc.
                                                         PIC16(L)F1454/5/9

6.0 RESETS

There are multiple ways to reset this device:

Power-on Reset (POR)
Brown-out Reset (BOR)
Low-Power Brown-out Reset (LPBOR)
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 6-1.

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

      ICSPTM Programming Mode Exit
          RESET Instruction

               Stack
               Pointer

MCLR                          MCLRE                                                Device
VDD                Sleep                                                            Reset

               WDT
             Time-out

             Power-on
               Reset

             Brown-out                                   R PWRT
               Reset                                                         Done

             LPBOR                                              PWRTE
              Reset

                                            LFINTOSC

                                   BOR
                                 Active(1)

Note 1: See Table 6-1 for BOR active conditions.

2012 Microchip Technology Inc.             Preliminary                            DS41639A-page 79
PIC16(L)F1454/5/9

6.1 Power-On Reset (POR)                                 6.2 Brown-Out Reset (BOR)

The POR circuit holds the device in Reset until VDD has  The BOR circuit holds the device in Reset when VDD
reached an acceptable level for minimum operation.       reaches a selectable minimum level. Between the
Slow rising VDD, fast operating speeds or analog         POR and BOR, complete voltage range coverage for
performance may require greater than minimum VDD.        execution protection can be implemented.
The PWRT, BOR or MCLR features can be used to
extend the start-up period until all device operation    The Brown-out Reset module has four operating
conditions have been met.                                modes controlled by the BOREN<1:0> bits in Configu-
                                                         ration Words. The four operating modes are:
6.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 6-1 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
Words.                                                   configuring the BORV bit in Configuration Words.

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 6-2 for more information.
AN607, "Power-up Trouble Shooting" (DS00607).

TABLE 6-1: BOR OPERATING MODES

BOREN<1:0>        SBOREN    Device Mode                  BOR Mode         Instruction Execution upon:
                                                                   Release of POR or Wake-up from Sleep

11                X         X                            Active    Waits for BOR ready(1)
                                                                        (BORRDY = 1)

                            Awake                        Active    Waits for BOR ready
                                                                      (BORRDY = 1)
10                X         Sleep                        Disabled

                         1  X                            Active    Waits for BOR ready(1)
01                                                                      (BORRDY = 1)
                            X                            Disabled
                         0                                           Begins immediately
                                                                        (BORRDY = x)
00                X         X                            Disabled

Note 1: In these specific cases, "release of POR" and "wake-up from Sleep," there is no delay in start-up. The BOR
            ready flag, (BORRDY = 1), will be set before the CPU is ready to execute instructions because the BOR
            circuit is forced on by the BOREN<1:0> bits.

6.2.1 BOR IS ALWAYS ON                                   BOR protection is not active during Sleep. The device
                                                         wake-up will be delayed until the BOR is ready.
When the BOREN bits of Configuration Words are pro-
grammed to `11', the BOR is always on. The device        6.2.3 BOR CONTROLLED BY SOFTWARE
start-up will be delayed until the BOR is ready and VDD
is higher than the BOR threshold.                        When the BOREN bits of Configuration Words are
                                                         programmed to `01', the BOR is controlled by the
BOR protection is active during Sleep. The BOR does      SBOREN bit of the BORCON register. The device
not delay wake-up from Sleep.                            start-up is not delayed by the BOR ready condition or
                                                         the VDD level.
6.2.2 BOR IS OFF IN SLEEP
                                                         BOR protection begins as soon as the BOR circuit is
When the BOREN bits of Configuration Words are pro-      ready. The status of the BOR circuit is reflected in the
grammed to `10', the BOR is on, except in Sleep. The     BORRDY bit of the BORCON register.
device start-up will be delayed until the BOR is ready
and VDD is higher than the BOR threshold.                BOR protection is unchanged by Sleep.

DS41639A-page 80                   Preliminary                      2012 Microchip Technology Inc.
                                                                           PIC16(L)F1454/5/9

FIGURE 6-2:            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'.

6.3 Register Definitions: BOR Control

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

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

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

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

             If BOREN <1:0> = 10 (Disabled in Sleep) or BOREN<1:0> = 01 (Under software control):
             1 = Band gap is forced on always (covers sleep/wake-up/operating cases)
             0 = Band gap operates normally, and may turn off
             If BOREN<1:0> = 11 (Always on) or BOREN<1:0> = 00 (Always off)
             BORFS is Read/Write, but has no effect.

             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

Note 1: BOREN<1:0> bits are located in Configuration Words.

2012 Microchip Technology Inc.                        Preliminary                         DS41639A-page 81
PIC16(L)F1454/5/9

6.4 Low-Power Brown-out Reset                             6.6 Watchdog Timer (WDT) Reset
         (LPBOR)
                                                          The Watchdog Timer generates a Reset if the firmware
The Low-Power Brown-Out Reset (LPBOR) is an               does not issue a CLRWDT instruction within the time-out
essential part of the Reset subsystem. Refer to           period. The TO and PD bits in the STATUS register are
Figure 6-1 to see how the BOR interacts with other        changed to indicate the WDT Reset. See Section 10.0
modules.                                                  "Watchdog Timer (WDT)" for more information.

The LPBOR is used to monitor the external VDD pin.        6.7 RESET Instruction
When too low of a voltage is detected, the device is
held in Reset. When this occurs, a register bit (BOR) is  A RESET instruction will cause a device Reset. The RI
changed to indicate that a BOR Reset has occurred.        bit in the PCON register will be set to `0'. See Table 6-4
The same bit is set for both the BOR and the LPBOR.       for default conditions after a RESET instruction has
Refer to Register 6-2.                                    occurred.

6.4.1 ENABLING LPBOR                                      6.8 Stack Overflow/Underflow Reset

The LPBOR is controlled by the LPBOR bit of               The device can reset when the Stack Overflows or
Configuration Words. When the device is erased, the       Underflows. The STKOVF or STKUNF bits of the PCON
LPBOR module defaults to disabled.                        register indicate the Reset condition. These Resets are
                                                          enabled by setting the STVREN bit in Configuration
6.4.1.1 LPBOR Module Output                               Words. See Section 3.5.2 "Overflow/Underflow
                                                          Reset" for more information.
The output of the LPBOR module is a signal indicating
whether or not a Reset is to be asserted. This signal is  6.9 Programming Mode Exit
OR'd together with the Reset signal of the BOR mod-
ule to provide the generic BOR signal which goes to       Upon exit of Programming mode, the device will
the PCON register and to the power control block.         behave as if a POR had just occurred.

6.5 MCLR                                                  6.10 Power-Up Timer

The MCLR is an optional external input that can reset     The Power-up Timer optionally delays device execution
the device. The MCLR function is controlled by the        after a BOR or POR event. This timer is typically used to
MCLRE bit of Configuration Words and the LVP bit of       allow VDD to stabilize before allowing the device to start
Configuration Words (Table 6-2).                          running.

TABLE 6-2:        MCLR CONFIGURATION                      The Power-up Timer is controlled by the PWRTE bit of
      MCLRE                                               Configuration Words.
           0      LVP  MCLR
           1                                              6.11 Start-up Sequence
           x      0    Disabled
                                                          Upon the release of a POR or BOR, the following must
                  0    Enabled                            occur before the device will begin executing:

                  1    Enabled                            1. Power-up Timer runs to completion (if enabled).
                                                          2. MCLR must be released (if enabled).
6.5.1 MCLR ENABLED
                                                          The total time-out will vary based on oscillator configu-
When MCLR is enabled and the pin is held low, the         ration and Power-up Timer configuration. See
device is held in Reset. The MCLR pin is connected to     Section 6.0 "Active Clock Tuning (ACT) Module" for
VDD through an internal weak pull-up.                     more information.

The device has a noise filter in the MCLR Reset path.     The Power-up Timer runs independently of MCLR
The filter will detect and ignore small pulses.           Reset. If MCLR is kept low long enough, the Power-up
                                                          Timer will expire. Upon bringing MCLR high, the device
   Note: A Reset does not drive the MCLR pin low.         will begin execution immediately (see Figure 6-3). This
                                                          is useful for testing purposes or to synchronize more
6.5.2 MCLR DISABLED                                       than one device operating in parallel.

When MCLR is disabled, the pin functions as a general
purpose input and the internal weak pull-up is under
software control. See Section 12.3 "PORTA Regis-
ters" for more information.

DS41639A-page 82                      Preliminary          2012 Microchip Technology Inc.
                                                           PIC16(L)F1454/5/9

FIGURE 6-3:                RESET START-UP SEQUENCE

                VDD              TPWRT
    Internal POR
Power-Up Timer                                      TMCLR

             MCLR
Internal RESET

  Internal Oscillator
               Oscillator
                     FOSC

External Clock (EC)
                   CLKIN

                     FOSC

2012 Microchip Technology Inc.  Preliminary               DS41639A-page 83
PIC16(L)F1454/5/9

6.12 Determining the Cause of a Reset

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

TABLE 6-3: RESET STATUS BITS AND THEIR SIGNIFICANCE

STKOVF STKUNF RWDT RMCLR RI POR BOR TO PD                                     Condition

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

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

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

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

u           u     0           u     u  u             u  0 u WDT Reset

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

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

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

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

u           u     u           u     0  u             u  u u RESET Instruction Executed

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

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

TABLE 6-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'.

DS41639A-page 84                       Preliminary                  2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

6.13 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)
MCLR Reset (RMCLR)
Watchdog Timer Reset (RWDT)
Stack Underflow Reset (STKUNF)
Stack Overflow Reset (STKOVF)
The PCON register bits are shown in Register 6-2.

6.14 Register Definitions: Power Control

REGISTER 6-2: PCON: POWER CONTROL REGISTER

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

STKOVF            STKUNF         --                RWDT  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        -n/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

                  1 = A Stack Overflow occurred
                  0 = A Stack Overflow has not occurred or cleared by firmware

bit 6             STKUNF: Stack Underflow Flag bit

                  1 = A Stack Underflow occurred
                  0 = A Stack Underflow has not occurred or cleared by firmware

bit 5             Unimplemented: Read as `0'

bit 4             RWDT: Watchdog Timer Reset Flag bit

                  1 = A Watchdog Timer Reset has not occurred or set by firmware
                  0 = A Watchdog Timer Reset has occurred (cleared by hardware)

bit 3             RMCLR: MCLR Reset Flag bit

                  1 = A MCLR Reset has not occurred or set by firmware
                  0 = A MCLR Reset has occurred (cleared by hardware)

bit 2             RI: RESET Instruction Flag bit

                  1 = A RESET instruction has not been executed or set by firmware
                  0 = A RESET instruction has been executed (cleared by hardware)

bit 1             POR: Power-on Reset Status bit

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

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

2012 Microchip Technology Inc.                        Preliminary                       DS41639A-page 85
PIC16(L)F1454/5/9

TABLE 6-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 BORFS               --     --     --          --                          -- BORRDY 81

PCON     STKOVF STKUNF            --     RWDT RMCLR         RI                          POR        BOR    85

STATUS   --               --      --     TO     PD          Z                           DC         C      27

WDTCON --                 --                    WDTPS<4:0>                                     SWDTEN 110

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.

TABLE 6-6: SUMMARY OF CONFIGURATION WORD WITH RESETS

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
                 13:8 --     --   FCMEN  IESO   CLKOUTEN           BOREN<1:0>                      --
CONFIG1                   MCLRE   PWRTE                                                                       52
                                                WDTE<1:0>                               FOSC<2:0>
                  7:0 CP                                                                                      54

CONFIG2  13:8 --              --  LVP DEBUG     LPBOR       BORV                        STVREN PLLEN
                                   CPUDIV<1:0>     --         --                               WRT<1:0>
         7:0 PLLMULT USBLSCLK

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

DS41639A-page 86                         Preliminary                                     2012 Microchip Technology Inc.
7.0 REFERENCE CLOCK MODULE                                        PIC16(L)F1454/5/9

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

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

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

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

2012 Microchip Technology Inc.  Preliminary                   DS41639A-page 87
PIC16(L)F1454/5/9

7.5 Register Definition: Reference Clock Control

REGISTER 7-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<2:0>          bit 0
bit 7                                            CLKRDC<1:0>

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

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

            CLKRSLR: Reference Clock Slew Rate Control limiting enable bit

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

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

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

            CLKRDIV<2:0> Reference Clock Divider bits

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

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

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

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

DS41639A-page 88                                 Preliminary                 2012 Microchip Technology Inc.
                                                                      PIC16(L)F1454/5/9

TABLE 7-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                       CLKRDC<1:0>              CLKRDIV<2:0>                         88

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

TABLE 7-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     BOREN<1:0>                         CPD      52

         7:0   CP         MCLRE PWRTE                      WDTE<1:0>             FOSC<2:0>

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

2012 Microchip Technology Inc.                     Preliminary                                          DS41639A-page 89
PIC16(L)F1454/5/9

NOTES:

DS41639A-page 90   Preliminary   2012 Microchip Technology Inc.
                                                        PIC16(L)F1454/5/9

8.0 INTERRUPTS

The interrupt feature allows certain events to preempt
normal program flow. Firmware is used to determine
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.

FIGURE 8-1:  INTERRUPT LOGIC

          Peripheral Interrupts  TMR0IF                 Wake-up
                                 TMR0IE                 (If in Sleep mode)
(TMR1IF) PIR1<0>
(TMR1IF) PIR1<0>                     INTF                              Interrupt
                                     INTE                              to CPU
              PIRn<7>
              PIEn<7>               IOCIF
                                   IOCIE

                                     PEIE

                                      GIE

2012 Microchip Technology Inc.  Preliminary            DS41639A-page 91
PIC16(L)F1454/5/9                                                 8.2 Interrupt Latency

8.1 Operation                                                     Interrupt latency is defined as the time from when the
                                                                  interrupt event occurs to the time code execution at the
Interrupts are disabled upon any device Reset. They               interrupt vector begins. The latency for synchronous
are enabled by setting the following bits:                        interrupts is three or four instruction cycles. For asyn-
                                                                  chronous interrupts, the latency is three to five instruc-
GIE bit of the INTCON register                                  tion cycles, depending on when the interrupt occurs.
Interrupt Enable bit(s) for the specific interrupt              See Figure 8-2 and Figure 8.3 for more details.

   event(s)
PEIE bit of the INTCON register (if the Interrupt

   Enable bit of the interrupt event is contained in the
   PIE1 and PIE2 registers)

The INTCON, PIR1 and PIR2 registers record individ-
ual 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.

DS41639A-page 92  Preliminary                                      2012 Microchip Technology Inc.
                                                            PIC16(L)F1454/5/9

FIGURE 8-2:        INTERRUPT LATENCY

Fosc
         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

   CLKR                            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          NOP   Inst(0004h) Inst(0005h)
Execute 3 Cycle Instruction at PC  INST(PC)

Interrupt
      GIE

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

2012 Microchip Technology Inc.               Preliminary                              DS41639A-page 93
PIC16(L)F1454/5/9

FIGURE 8-3:       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)      Forced NOP             Forced NOP    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.

DS41639A-page 94                                           Preliminary                 2012 Microchip Technology Inc.
                                                            PIC16(L)F1454/5/9

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

2012 Microchip Technology Inc.  Preliminary                DS41639A-page 95
PIC16(L)F1454/5/9

8.6 Register Definitions: Interrupt Control

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 IOCBF register
              have been cleared by software.

Note:  Interrupt flag bits are set when an interrupt
       condition occurs, regardless of the state of
       its corresponding enable bit or the 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.

DS41639A-page 96                                 Preliminary                       2012 Microchip Technology Inc.
                                                                     PIC16(L)F1454/5/9

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             U-0  R/W-0/0  R/W-0/0
                                                                           TMR2IE   TMR1IE
TMR1GIE  ADIE(1)                 RCIE                  TXIE  SSP1IE   --
                                                                                            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    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    Unimplemented: Read as `0'

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

Note 1: PIC16(L)F1455/9 only.

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

2012 Microchip Technology Inc.                        Preliminary         DS41639A-page 97
PIC16(L)F1454/5/9

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

R/W-0/0           R/W-0/0  R/W-0/0               U-0  R/W-0/0  R/W-0/0  R/W-0/0  U-0
                                                                         ACTIE   --
OSFIE             C2IE     C1IE                  --   BCL1IE   USBIE
                                                                                      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

         1 = Enables the Oscillator Fail interrupt
         0 = Disables the Oscillator Fail interrupt

bit 6    C2IE: Comparator C2 Interrupt Enable bit

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

bit 5    C1IE: Comparator C1 Interrupt Enable bit

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

bit 4    Unimplemented: Read as `0'

bit 3    BCL1IE: MSSP Bus Collision Interrupt Enable bit

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

bit 2    USBIE: USB Interrupt Enable bit

         1 = Enables the USB interrupt
         0 = Disables the USB interrupt

bit 1    ACTIE: Active Clock Tuning Interrupt Enable bit

         1 = Enables the Active Clock Tuning interrupt
         0 = Disables the Active Clock Tuning interrupt

bit 0    Unimplemented: Read as `0'

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

DS41639A-page 98                                 Preliminary             2012 Microchip Technology Inc.
                                                                     PIC16(L)F1454/5/9

REGISTER 8-4: PIR1: PERIPHERAL INTERRUPT REQUEST REGISTER 1

R/W-0/0  R/W-0/0                 R/W-0/0  R/W-0/0 R/W-0/0            U-0  R/W-0/0  R/W-0/0
                                                                                   TMR1IF
TMR1GIF  ADIF(1)                 RCIF                  TXIF  SSP1IF  --   TMR2IF
                                                                                           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    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    Unimplemented: Read as `0'

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

Note 1: PIC16(L)F1455/9 only.

Note:  Interrupt flag bits are set when an interrupt
       condition occurs, regardless of the state of
       its corresponding enable bit or the 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.

2012 Microchip Technology Inc.                        Preliminary        DS41639A-page 99
PIC16(L)F1454/5/9

REGISTER 8-5: PIR2: PERIPHERAL INTERRUPT REQUEST REGISTER 2

R/W-0/0            R/W-0/0  R/W-0/0               U-0   R/W-0/0  R/W-0/0  R/W-0/0  U-0
                                                                                   --
OSFIF              C2IF     C1IF                  --    BCL1IF   USBIF    ACTIF
                                                                                        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

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 6    C2IF: Numerically Controlled Oscillator Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 5    C1IF: Numerically Controlled Oscillator Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 4    Unimplemented: Read as `0'

bit 3    BCL1IF: MSSP Bus Collision Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 2    USBIF: USB Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 1    ACTIF: Active Clock Tuning Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 0    Unimplemented: Read as `0'

Note:  Interrupt flag bits are set when an interrupt
       condition occurs, regardless of the state of
       its corresponding enable bit or the 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.

DS41639A-page 100                                 Preliminary              2012 Microchip Technology Inc.
                                                             PIC16(L)F1454/5/9

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                          96

OPTION_REG WPUEN INTEDG TMR0CS TMR0SE PSA                           PS<2:0>                        185

PIE1    TMR1GIE ADIE(1) RCIE                   TXIE SSP1IE   --     TMR2IE TMR1IE                  97

PIE2    OSFIE C2IE                      C1IE   --     BCL1IE USBIE ACTIE                    --     98
PIR1
        TMR1GIF ADIF(1) RCIF                   TXIF SSP1IF   --     TMR2IF TMR1IF                  99

PIR2    OSFIF C2IF                      C1IF   --     BCL1IF USBIF ACTIF                    --     100

Legend: -- = unimplemented location, read as `0'. Shaded cells are not used by interrupts.
Note 1: PIC16(L)F1455/9 only.

2012 Microchip Technology Inc.                Preliminary                                  DS41639A-page 101
PIC16(L)F1454/5/9

NOTES:

DS41639A-page 102  Preliminary   2012 Microchip Technology Inc.
9.0 POWER-DOWN MODE (SLEEP)                                   PIC16(L)F1454/5/9

The Power-Down mode is entered by executing a              9.1 Wake-up from Sleep
SLEEP instruction.
                                                           The device can wake-up from Sleep through one of the
Upon entering Sleep mode, the following conditions exist:  following events:
                                                           1. External Reset input on MCLR pin, if enabled
1. WDT will be cleared but keeps running, if               2. BOR Reset, if enabled
      enabled for operation during Sleep.                  3. POR Reset
                                                           4. Watchdog Timer, if enabled
2. PD bit of the STATUS register is cleared.               5. Any external interrupt
3. TO bit of the STATUS register is set.                   6. Interrupts by peripherals capable of running dur-
4. CPU clock is disabled.
5. 31 kHz LFINTOSC is unaffected and peripherals                 ing Sleep (see individual peripheral for more
                                                                 information)
      that operate from it may continue operation in
      Sleep.                                               The first three events will cause a device Reset. The
6. ADC is unaffected, if the dedicated FRC clock is        last three events are considered a continuation of pro-
      selected.                                            gram execution. To determine whether a device Reset
7. I/O ports maintain the status they had before           or wake-up event occurred, refer to Section 6.12
      SLEEP was executed (driving high, low or high-       "Determining the Cause of a Reset".
      impedance).
8. Resets other than WDT are not affected by               When the SLEEP instruction is being executed, the next
      Sleep mode.                                          instruction (PC + 1) is prefetched. For the device to
                                                           wake-up through an interrupt event, the corresponding
Refer to individual chapters for more details on           interrupt enable bit must be enabled. Wake-up will
peripheral operation during Sleep.                         occur regardless of the state of the GIE bit. If the GIE
                                                           bit is disabled, the device continues execution at the
To minimize current consumption, the following             instruction after the SLEEP instruction. If the GIE bit is
conditions should be considered:                           enabled, the device executes the instruction after the
                                                           SLEEP instruction, the device will then call the Interrupt
I/O pins should not be floating                          Service Routine. In cases where the execution of the
External circuitry sinking current from I/O pins         instruction following SLEEP is not desirable, the user
Internal circuitry sourcing current from I/O pins        should have a NOP after the SLEEP instruction.
Current draw from pins with internal weak pull-ups
Modules using 31 kHz LFINTOSC                            The WDT is cleared when the device wakes up from
CWG module using HFINTOSC                                Sleep, regardless of the source of wake-up.

I/O pins that are high-impedance inputs should be
pulled to VDD or VSS externally to avoid switching
currents caused by floating inputs.

Examples of internal circuitry that might be sourcing
current include the FVR module. See Section 14.0
"Fixed Voltage Reference (FVR) (PIC16(L)F1455/9
only)" for more information on this module.

2012 Microchip Technology Inc.  Preliminary               DS41639A-page 103
PIC16(L)F1454/5/9

9.1.1 WAKE-UP USING INTERRUPTS                                  Even if the flag bits were checked before executing a

When global interrupts are disabled (GIE cleared) and           SLEEP instruction, it may be possible for flag bits to
any interrupt source has both its interrupt enable bit          become set before the SLEEP instruction completes. To
and interrupt flag bit set, one of the following will occur:    determine whether a SLEEP instruction executed, test
                                                                the PD bit. If the PD bit is set, the SLEEP instruction
If the interrupt occurs before the execution of a             was executed as a NOP.
   SLEEP instruction
   - SLEEP instruction will execute as a NOP.
   - WDT and WDT prescaler will not be cleared
   - TO bit of the STATUS register will not be set
   - PD bit of the STATUS register will not be
      cleared.

If the interrupt occurs during or after the execu-
   tion of a SLEEP instruction
   - SLEEP instruction will be completely exe-
      cuted
   - Device will immediately wake-up from Sleep
   - WDT and WDT prescaler will be cleared
   - TO bit of the STATUS register will be set
   - PD bit of the STATUS register will be cleared

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
   CLKIN(1)                                                     T1OSC(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)  Forced NOP    Inst(0004h)  Inst(0005h)
Instruction       Inst(PC) = Sleep  Sleep                       Inst(PC + 1)               Forced NOP    Inst(0004h)
Fetched

Instruction       Inst(PC - 1)
Executed

Note 1:         External clock. High, Medium, Low mode assumed.
          2:    CLKOUT is shown here for timing reference.
          3:    T1OSC; See Section 29.0 "Electrical Specifications".
          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.

DS41639A-page 104                                 Preliminary                               2012 Microchip Technology Inc.
                                                             PIC16(L)F1454/5/9

9.2 Low-Power Sleep Mode                                     9.2.2 PERIPHERAL USAGE IN SLEEP

The PIC16F1454/5/9 device contains an internal Low           Some peripherals that can operate in Sleep mode will
Dropout (LDO) voltage regulator, which allows the            not operate properly with the Low-Power Sleep mode
device I/O pins to operate at voltages up to 5.5V while      selected. The LDO will remain in the Normal-Power
the internal device logic operates at a lower voltage.       mode when those peripherals are enabled. The Low-
The LDO and its associated reference circuitry must          Power Sleep mode is intended for use with these
remain active when the device is in Sleep mode. The          peripherals:
PIC16F1454/5/9 allows the user to optimize the
operating current in Sleep, depending on the                  Brown-Out Reset (BOR)
application requirements.                                     Watchdog Timer (WDT)
                                                             External interrupt pin/Interrupt-on-change pins
A Low-Power Sleep mode can be selected by setting
the VREGPM bit of the VREGCON register. With this             Timer1 (with external clock source)
bit set, the LDO and reference circuitry are placed in a
low-power state when the device is in Sleep.                 The Complementary Waveform Generator (CWG)
                                                             module can utilize the HFINTOSC oscillator as either
9.2.1  SLEEP CURRENT VS. WAKE-UP                             a clock source or as an input source. Under certain
       TIME                                                  conditions, when the HFINTOSC is selected for use
                                                             with the CWG module, the HFINTOSC will remain
In the default operating mode, the LDO and reference         active during Sleep. This will have a direct effect on
circuitry remain in the normal configuration while in        the Sleep mode current.
Sleep. The device is able to exit Sleep mode quickly
since all circuits remain active. In Low-Power Sleep         Please refer to section 25.10 "Operation During
mode, when waking up from Sleep, an extra delay time         Sleep" for more information.
is required for these circuits to return to the normal con-
figuration and stabilize.                                    Note:  The PIC16LF1454/5/9 does not have a
                                                                    configurable Low-Power Sleep mode.
The Low-Power Sleep mode is beneficial for applica-                 PIC16LF1454/5/9 is an unregulated
tions that stay in Sleep mode for long periods of time.             device and is always in the lowest power
The Normal mode is beneficial for applications that                 state when in Sleep, with no wake-up time
need to wake from Sleep quickly and frequently.                     penalty. This device has a lower maximum
                                                                    VDD and I/O voltage than the
                                                                    PIC16LF1454/5/9. See Section 29.0
                                                                    "Electrical Specifications" for more
                                                                    information.

2012 Microchip Technology Inc.   Preliminary                       DS41639A-page 105
PIC16(L)F1454/5/9

9.3 Register Definitions: Voltage Regulator Control

REGISTER 9-1: VREGCON: VOLTAGE REGULATOR CONTROL REGISTER(1)

       U-0            U-0         U-0                U-0  U-0                U-0         R/W-0/0  R/W-1/1
        --                                                                                        Reserved
bit 7                 --          --                 --       --             --          VREGPM
                                                                                                           bit 0

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

bit 7-2     Unimplemented: Read as `0'
bit 1
            VREGPM: Voltage Regulator Power Mode Selection bit
bit 0       1 = Low-Power Sleep mode enabled in Sleep(2)

                  Draws lowest current in Sleep, slower wake-up
            0 = Normal-Power mode enabled in Sleep(2)

                  Draws higher current in Sleep, faster wake-up

            Reserved: Read as `1'. Maintain this bit set.

Note 1: PIC16LF1454/5/9 only.
        2: See Section 29.0 "Electrical Specifications".

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                               96

IOCAF       --             --     IOCAF5 IOCAF4 IOCAF3                --     IOCAF1 IOCAF0        146

IOCAN       --             --     IOCAN5 IOCAN4 IOCAN3                --     IOCAN1 IOCAN0        145

IOCAP       --             --     IOCAP5 IOCAP4 IOCAP3                --     IOCAP1 IOCAP0        145

IOCBF(2) IOCBF7 IOCBF6 IOCBF5 IOCBF4                      --          --          --     --       147

IOCBN(2) IOCBN7 IOCBN6 IOCBN5 IOCBN4                      --          --          --     --       147

IOCBP(2) IOCBP7 IOCBP6 IOCBP5 IOCBP4                      --          --          --     --       146

PIE1        TMR1GIE ADIE(1) RCIE          TXIE SSP1IE                 --     TMR2IE TMR1IE        97

PIE2        OSFIE C2IE            C1IE               --   BCL1IE USBIE ACTIE             --       98

PIR1        TMR1GIF ADIF(1) RCIF          TXIF SSP1IF                 --     TMR2IF TMR1IF        99

PIR2        OSFIF C2IF            C1IF               --   BCL1IF USBIF ACTIF             --       100

STATUS      --             --         --             TO   PD          Z           DC     C        27

WDTCON --                  --                             WDTPS<4:0>                     SWDTEN   110

Legend: -- = unimplemented, read as `0'. Shaded cells are not used in Power-Down mode.
Note 1: PIC16(L)F1455/9 only.

        2: PIC16(L)F1459 only.

DS41639A-page 106                                    Preliminary                       2012 Microchip Technology Inc.
                                                                PIC16(L)F1454/5/9

10.0 WATCHDOG TIMER (WDT)

The Watchdog Timer is a system timer that generates
a Reset if the firmware does not issue a CLRWDT
instruction within the time-out period. The Watchdog
Timer is typically used to recover the system from
unexpected events.

The WDT has the following features:

Independent clock source
Multiple operating modes

   - WDT is always on
   - WDT is off when in Sleep
   - WDT is controlled by software
   - WDT is always off
Configurable time-out period is from 1 ms to 256
   seconds (nominal)
Multiple Reset conditions
Operation during Sleep

FIGURE 10-1:           WATCHDOG TIMER BLOCK DIAGRAM

WDTE<1:0> = 01                                        LFINTOSC  23-bit Programmable  WDT Time-out
          SWDTEN                                                   Prescaler WDT

WDTE<1:0> = 11                                                     WDTPS<4:0>

WDTE<1:0> = 10
                Sleep

2012 Microchip Technology Inc.  Preliminary                                         DS41639A-page 107
PIC16(L)F1454/5/9

10.1 Independent Clock Source                         10.4 Clearing the WDT

The WDT derives its time base from the 31 kHz         The WDT is cleared when any of the following condi-
LFINTOSC internal oscillator. Time intervals in this  tions occur:
chapter are based on a nominal interval of 1 ms. See
Section 29.0 "Electrical Specifications" for the       Any Reset
LFINTOSC tolerances.                                  CLRWDT instruction is executed
                                                       Device enters Sleep
10.2 WDT Operating Modes                               Device wakes up from Sleep
                                                       Oscillator fail
The Watchdog Timer module has four operating modes    WDT is disabled
controlled by the WDTE<1:0> bits in Configuration      Oscillator Start-up Timer (OST) is running
Words. See Table 10-1.
                                                      See Table 10-2 for more information.
10.2.1 WDT IS ALWAYS ON
When the WDTE bits of Configuration Words are set to  10.5 Operation During Sleep
`11', the WDT is always on.
WDT protection is active during Sleep.                When the device enters Sleep, the WDT is cleared. If
                                                      the WDT is enabled during Sleep, the WDT resumes
10.2.2 WDT IS OFF IN SLEEP                            counting.
When the WDTE bits of Configuration Words are set to
`10', the WDT is on, except in Sleep.                 When the device exits Sleep, the WDT is cleared
WDT protection is not active during Sleep.            again. The WDT remains clear until the OST, if
                                                      enabled, completes. See Section 5.0 "Oscillator
10.2.3 WDT CONTROLLED BY SOFTWARE                     Module (With Fail-Safe Clock Monitor)" for more
When the WDTE bits of Configuration Words are set to  information on the OST.
`01', the WDT is controlled by the SWDTEN bit of the
WDTCON register.                                      The WDT remains clear until the OST, if enabled, com-
WDT protection is unchanged by Sleep. See             pletes. See Section 5.0 "Oscillator Module (With
Table 10-1 for more details.                          Fail-Safe Clock Monitor)" for more information on the
                                                      OST. (add with start-up timer oscillators)
TABLE 10-1: WDT OPERATING MODES
                                                      When a WDT time-out occurs while the device is in
WDTE<1:0>          SWDTEN  Device  WDT                Sleep, no Reset is generated. Instead, the device
                           Mode    Mode               wakes up and resumes operation. The TO and PD bits
                                                      in the STATUS register are changed to indicate the
                                                      event. The RWDT bit in the PCON register can also be
                                                      used. See Section 3.0 "Memory Organization" for
                                                      more information.

11                 X       X       Active

                           Awake Active

10                 X       Sleep Disabled

                   1       X       Active

01                                 Disabled

                   0

00                 X       X Disabled

10.3 Time-Out Period

The WDTPS bits of the WDTCON register set the
time-out period from 1 ms to 256 seconds (nominal).
After a Reset, the default time-out period is two
seconds.

DS41639A-page 108                  Preliminary         2012 Microchip Technology Inc.
TABLE 10-2: WDT CLEARING CONDITIONS                       PIC16(L)F1454/5/9

                                              Conditions                                     WDT
                                                                                           Cleared
WDTE<1:0> = 00                                                              Cleared until the end of OST
WDTE<1:0> = 01 and SWDTEN = 0                                                           Unaffected
WDTE<1:0> = 10 and enter Sleep
CLRWDT Command
Oscillator Fail Detected
Exit Sleep + System Clock = EXTRC, INTOSC, EXTCLK
Exit Sleep + System Clock = XT, HS, LP
Change INTOSC divider (IRCF bits)

2012 Microchip Technology Inc.  Preliminary              DS41639A-page 109
PIC16(L)F1454/5/9

10.6 Register Definitions: Watchdog Control

REGISTER 10-1: WDTCON: WATCHDOG TIMER CONTROL REGISTER

       U-0            U-0  R/W-0/0  R/W-1/1      R/W-0/0            R/W-1/1  R/W-1/1   R/W-0/0
        --                                                                            SWDTEN
bit 7                 --                         WDTPS<4:0>
                                                                                               bit 0

Legend:                    W = Writable bit      U = Unimplemented bit, read as `0'
R = Readable bit           x = Bit is unknown    -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-1     WDTPS<4:0>: Watchdog Timer Period Select bits(1)

            Bit Value = Prescale Rate

            00000 = 1:32 (Interval 1 ms nominal)
            00001 = 1:64 (Interval 2 ms nominal)
            00010 = 1:128 (Interval 4 ms nominal)
            00011 = 1:256 (Interval 8 ms nominal)
            00100 = 1:512 (Interval 16 ms nominal)
            00101 = 1:1024 (Interval 32 ms nominal)
            00110 = 1:2048 (Interval 64 ms nominal)
            00111 = 1:4096 (Interval 128 ms nominal)
            01000 = 1:8192 (Interval 256 ms nominal)
            01001 = 1:16384 (Interval 512 ms nominal)
            01010 = 1:32768 (Interval 1s nominal)
            01011 = 1:65536 (Interval 2s nominal) (Reset value)
            01100 = 1:131072 (217) (Interval 4s nominal)
            01101 = 1:262144 (218) (Interval 8s nominal)
            01110 = 1:524288 (219) (Interval 16s nominal)
            01111 = 1:1048576 (220) (Interval 32s nominal)
            10000 = 1:2097152 (221) (Interval 64s nominal)
            10001 = 1:4194304 (222) (Interval 128s nominal)
            10010 = 1:8388608 (223) (Interval 256s nominal)

            10011 = Reserved. Results in minimum interval (1:32)
                  
                  
                  

            11111 = Reserved. Results in minimum interval (1:32)

bit 0       SWDTEN: Software Enable/Disable for Watchdog Timer bit

            If WDTE<1:0> = 00:
            This bit is ignored.
            If WDTE<1:0> = 01:
            1 = WDT is turned on
            0 = WDT is turned off
            If WDTE<1:0> = 1x:
            This bit is ignored.

Note 1: Times are approximate. WDT time is based on 31 kHz LFINTOSC.

DS41639A-page 110                                Preliminary                  2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

TABLE 10-3:            SUMMARY OF REGISTERS ASSOCIATED WITH WATCHDOG TIMER

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

OSCCON        SPLLEN SPLLMULT                    IRCF<3:0>                                      SCS<1:0>      75

PCON          STKOVF STKUNF               --     RWDT RMCLR              RI     POR             BOR           85

STATUS         --                --       --     TO          PD          Z      DC                        C   27

WDTCON         --                --                          WDTPS<4:0>                         SWDTEN        110

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

TABLE 10-4: SUMMARY OF CONFIGURATION WORD WITH WATCHDOG TIMER

Name Bits Bit -/7                Bit -/6  Bit 13/5 Bit 12/4  Bit 11/3    Bit 10/2 Bit 9/1 Bit 8/0             Register
                                                                                                              on Page
CONFIG1  13:8      --     --              FCMEN  IESO CLKOUTEN               BOREN<1:0>                   --
                       MCLRE              PWRTE       WDTE<1:0>                                                   52
         7:0       CP                                                           FOSC<2:0>

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

2012 Microchip Technology Inc.                  Preliminary                                    DS41639A-page 111
PIC16(L)F1454/5/9                                             11.1.1  PMCON1 AND PMCON2
                                                                      REGISTERS
11.0 FLASH PROGRAM MEMORY
         CONTROL                                              PMCON1 is the control register for Flash program
                                                              memory accesses.
The Flash program memory is readable and writable
during normal operation over the full VDD range.              Control bits RD and WR initiate read and write,
Program memory is indirectly addressed using Special          respectively. These bits cannot be cleared, only set, in
Function Registers (SFRs). The SFRs used to access            software. They are cleared by hardware at completion
program memory are:                                           of the read or write operation. The inability to clear the
                                                              WR bit in software prevents the accidental, premature
PMCON1                                                      termination of a write operation.
PMCON2
PMDATL                                                      The WREN bit, when set, will allow a write operation to
PMDATH                                                      occur. On power-up, the WREN bit is clear. The
PMADRL                                                      WRERR bit is set when a write operation is interrupted
PMADRH                                                      by a Reset during normal operation. In these situations,
                                                              following Reset, the user can check the WRERR bit
When accessing the program memory, the                        and execute the appropriate error handling routine.
PMDATH:PMDATL register pair forms a 2-byte word
that holds the 14-bit data for read/write, and the            The PMCON2 register is a write-only register. Attempting
PMADRH:PMADRL register pair forms a 2-byte word               to read the PMCON2 register will return all `0's.
that holds the 15-bit address of the program memory
location being read.                                          To enable writes to the program memory, a specific
                                                              pattern (the unlock sequence), must be written to the
The write time is controlled by an on-chip timer. The write/  PMCON2 register. The required unlock sequence
erase voltages are generated by an on-chip charge pump        prevents inadvertent writes to the program memory
rated to operate over the operating voltage range of the      write latches and Flash program memory.
device.
                                                              11.2 Flash Program Memory Overview
The Flash program memory can be protected in two
ways; by code protection (CP bit in Configuration Words)      It is important to understand the Flash program memory
and write protection (WRT<1:0> bits in Configuration          structure for erase and programming operations. Flash
Words).                                                       program memory is arranged in rows. A row consists of
Code protection (CP = 0)(1), disables access, reading         a fixed number of 14-bit program memory words. A row
and writing, to the Flash program memory via external         is the minimum size that can be erased by user software.
device programmers. Code protection does not affect
the self-write and erase functionality. Code protection       After a row has been erased, the user can reprogram
can only be reset by a device programmer performing           all or a portion of this row. Data to be written into the
a Bulk Erase to the device, clearing all Flash program        program memory row is written to 14-bit wide data write
memory, Configuration bits and User IDs.                      latches. These write latches are not directly accessible
                                                              to the user, but may be loaded via sequential writes to
Write protection prohibits self-write and erase to a          the PMDATH:PMDATL register pair.
portion or all of the Flash program memory as defined
by the bits WRT<1:0>. Write protection does not affect        Note:   If the user wants to modify only a portion
a device programmers ability to read, write or erase the              of a previously programmed row, then the
device.                                                               contents of the entire row must be read
                                                                      and saved in RAM prior to the erase.
    Note 1: Code protection of the entire Flash                       Then, new data and retained data can be
                program memory array is enabled by                    written into the write latches to reprogram
                clearing the CP bit of Configuration Words.           the row of Flash program memory. How-
                                                                      ever, any unprogrammed locations can be
11.1 PMADRL and PMADRH Registers                                      written without first erasing the row. In this
                                                                      case, it is not necessary to save and
The PMADRH:PMADRL register pair can address up                        rewrite the other previously programmed
to a maximum of 32K words of program memory. When                     locations.
selecting a program address value, the MSB of the
address is written to the PMADRH register and the LSB         See Table 11-1 for Erase Row size and the number of
is written to the PMADRL register.                            write latches for Flash program memory.

DS41639A-page 112  Preliminary                                         2012 Microchip Technology Inc.
                                                              PIC16(L)F1454/5/9

TABLE 11-1: FLASH MEMORY                                      FIGURE 11-1:  FLASH PROGRAM
                     ORGANIZATION BY DEVICE                                 MEMORY READ
                                                                            FLOWCHART

        Device     Row Erase      Write
                     (words)     Latches
                                 (words)                                         Start
                                                                          Read Operation
PIC16(L)F1454/5/9  32            32
                                                                                Select
11.2.1  READING THE FLASH PROGRAM                             Program or Configuration Memory
        MEMORY
                                                                               (CFGS)
To read a program memory location, the user must:
                                                                                Select
1. Write the desired address to the                                        Word Address
      PMADRH:PMADRL register pair.                                    (PMADRH:PMADRL)

2. Clear the CFGS bit of the PMCON1 register.                        Initiate Read operation
3. Then, set control bit RD of the PMCON1 register.                            (RD = 1)

Once the read control bit is set, the program memory              Instruction Fetched ignored
Flash controller will use the second instruction cycle to             NOP execution forced
read the data. This causes the second instruction
immediately following the "BSF PMCON1,RD" instruction             Instruction Fetched ignored
to be ignored. The data is available in the very next cycle,          NOP execution forced
in the PMDATH:PMDATL register pair; therefore, it can
be read as two bytes in the following instructions.                      Data read now in
                                                                       PMDATH:PMDATL
PMDATH:PMDATL register pair will hold this value until
another read or until it is written to by the user.                               End
                                                                          Read Operation
Note:   The two instructions following a program
        memory read are required to be NOPs.
        This prevents the user from executing a
        two-cycle instruction on the next
        instruction after the RD bit is set.

2012 Microchip Technology Inc.      Preliminary                            DS41639A-page 113
PIC16(L)F1454/5/9

FIGURE 11-2:       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           PMADRH,PMADRL        PPCC++33             PC + 4         PC + 5

Flash Data               INSTR (PC)  INSTR (PC + 1) PMDATH,PMDATL INSTR (PC + 3) INSTR (PC + 4)

              INSTR(PC - 1)  BSF PMCON1,RD    INSTR(PC + 1)        INSTR(PC + 2)        INSTR(PC + 3)  INSTR(PC + 4)
              executed here    executed here  instruction ignored  instruction ignored  executed here  executed here
                                              Forced NOP           Forced NOP
                                              executed here        executed here

RD bit

PMDATH
PMDATL
Register

EXAMPLE 11-1: 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       PMADRL         ; Select Bank for PMCON registers
MOVLW         PROG_ADDR_LO   ;
MOVWF         PMADRL         ; Store LSB of address
MOVLW         PROG_ADDR_HI   ;
MOVWF         PMADRH         ; Store MSB of address

BCF           PMCON1,CFGS    ; Do not select Configuration Space

BSF           PMCON1,RD      ; Initiate read

NOP                          ; Ignored (Figure 11-2)

NOP                          ; Ignored (Figure 11-2)

MOVF          PMDATL,W       ; Get LSB of word
MOVWF         PROG_DATA_LO   ; Store in user location
MOVF          PMDATH,W       ; Get MSB of word
MOVWF         PROG_DATA_HI   ; Store in user location

DS41639A-page 114                             Preliminary                                2012 Microchip Technology Inc.
                                                              PIC16(L)F1454/5/9

11.2.2  FLASH MEMORY UNLOCK                                 FIGURE 11-3:  FLASH PROGRAM
        SEQUENCE                                                          MEMORY UNLOCK
                                                                          SEQUENCE FLOWCHART
The unlock sequence is a mechanism that protects the
Flash program memory from unintended self-write pro-                              Start
gramming or erasing. The sequence must be executed                        Unlock Sequence
and completed without interruption to successfully
complete any of the following operations:

Row Erase                                                               Write 055h to
Load program memory write latches                                         PMCON2

Write of program memory write latches to pro-                        Write 0AAh to
   gram memory                                                           PMCON2

Write of program memory write latches to User                            Initiate
   IDs                                                         Write or Erase operation

The unlock sequence consists of the following steps:                      (WR = 1)

1. Write 55h to PMCON2                                        Instruction Fetched ignored
                                                                 NOP execution forced
2. Write AAh to PMCON2

3. Set the WR bit in PMCON1

4. NOP instruction

5. NOP instruction

Once the WR bit is set, the processor will always force       Instruction Fetched ignored
two NOP instructions. When an Erase Row or Program                NOP execution forced
Row operation is being performed, the processor will stall
internal operations (typical 2 ms), until the operation is                        End
complete and then resume with the next instruction.                       Unlock Sequence
When the operation is loading the program memory write
latches, the processor will always force the two NOP
instructions and continue uninterrupted with the next
instruction.

Since the unlock sequence must not be interrupted,
global interrupts should be disabled prior to the unlock
sequence and re-enabled after the unlock sequence is
completed.

2012 Microchip Technology Inc.                  Preliminary                               DS41639A-page 115
PIC16(L)F1454/5/9

11.2.3  ERASING FLASH PROGRAM                               FIGURE 11-4:  FLASH PROGRAM
        MEMORY                                                            MEMORY ERASE
                                                                          FLOWCHART
While executing code, program memory can only be
erased by rows. To erase a row:

1. Load the PMADRH:PMADRL register pair with                                     Start
      any address within the row to be erased.                            Erase Operation

2. Clear the CFGS bit of the PMCON1 register.                          Disable Interrupts
                                                                            (GIE = 0)
3. Set the FREE and WREN bits of the PMCON1
      register.                                                               Select
                                                            Program or Configuration Memory
4. Write 55h, then AAh, to PMCON2 (Flash
      programming unlock sequence).                                          (CFGS)

5. Set control bit WR of the PMCON1 register to                      Select Row Address
      begin the erase operation.                                    (PMADRH:PMADRL)

See Example 11-2.

After the "BSF PMCON1,WR" instruction, the processor                      Select Erase Operation
requires two cycles to set up the erase operation. The                           (FREE = 1)
user must place two NOP instructions immediately fol-
lowing the WR bit set instruction. The processor will
halt internal operations for the typical 2 ms erase time.
This is not Sleep mode as the clocks and peripherals
will continue to run. After the erase cycle, the processor
will resume operation with the third instruction after the
PMCON1 write instruction.

                                                            Enable Write/Erase Operation
                                                                       (WREN = 1)

                                                                          Unlock Sequence
                                                                            (FFIGigUurReE11x-3x)

                                                                   CPU stalls while
                                                            Erase operation completes

                                                                     (2ms typical)

                                                            Disable Write/Erase Operation
                                                                        (WREN = 0)

                                                                  Re-enable Interrupts
                                                                          (GIE = 1)

                                                                             End
                                                                     Erase Operation

DS41639A-page 116              Preliminary                                 2012 Microchip Technology Inc.
                                                PIC16(L)F1454/5/9

EXAMPLE 11-2: ERASING ONE ROW OF PROGRAM MEMORY

   ; This row erase routine assumes the following:
   ; 1. A valid address within the erase row is loaded in ADDRH:ADDRL
   ; 2. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM)

Required     BCF      INTCON,GIE   ; Disable ints so required sequences will execute properly
   Sequence  BANKSEL  PMADRL
             MOVF     ADDRL,W      ; Load lower 8 bits of erase address boundary
             MOVWF    PMADRL
             MOVF     ADDRH,W      ; Load upper 6 bits of erase address boundary
             MOVWF    PMADRH
             BCF      PMCON1,CFGS  ; Not configuration space
             BSF      PMCON1,FREE  ; Specify an erase operation
             BSF      PMCON1,WREN  ; Enable writes

             MOVLW    55h          ; Start of required sequence to initiate erase
             MOVWF    PMCON2       ; Write 55h
             MOVLW    0AAh         ;
             MOVWF    PMCON2       ; Write AAh
             BSF      PMCON1,WR    ; Set WR bit to begin erase
             NOP                   ; NOP instructions are forced as processor starts
             NOP      PMCON1,WREN  ; row erase of program memory.
                      INTCON,GIE   ;
             BCF                   ; The processor stalls until the erase process is complete
             BSF                   ; after erase processor continues with 3rd instruction

                                   ; Disable writes
                                   ; Enable interrupts

2012 Microchip Technology Inc.    Preliminary                                      DS41639A-page 117
PIC16(L)F1454/5/9

11.2.4  WRITING TO FLASH PROGRAM                          The following steps should be completed to load the
        MEMORY                                            write latches and program a row of program memory.
                                                          These steps are divided into two parts. First, each write
Program memory is programmed using the following          latch is loaded with data from the PMDATH:PMDATL
steps:                                                    using the unlock sequence with LWLO = 1. When the
                                                          last word to be loaded into the write latch is ready, the
1. Load the address in PMADRH:PMADRL of the               LWLO bit is cleared and the unlock sequence
      row to be programmed.                               executed. This initiates the programming operation,
                                                          writing all the latches into Flash program memory.
2. Load each write latch with data.
3. Initiate a programming operation.                      Note:  The special unlock sequence is required
4. Repeat steps 1 through 3 until all data is written.           to load a write latch with data or initiate a
                                                                 Flash programming operation. If the
Before writing to program memory, the word(s) to be              unlock sequence is interrupted, writing to
written must be erased or previously unwritten. Pro-             the latches or program memory will not be
gram memory can only be erased one row at a time. No             initiated.
automatic erase occurs upon the initiation of the write.

Program memory can be written one or more words at        1. Set the WREN bit of the PMCON1 register.
a time. The maximum number of words written at one
time is equal to the number of write latches. See         2. Clear the CFGS bit of the PMCON1 register.
Figure 11-5 (row writes to program memory with 32
write latches) for more details.                          3. Set the LWLO bit of the PMCON1 register.
                                                                When the LWLO bit of the PMCON1 register is
The write latches are aligned to the Flash row address          `1', the write sequence will only load the write
boundary defined by the upper 10-bits of                        latches and will not initiate the write to Flash
PMADRH:PMADRL, (PMADRH<6:0>:PMADRL<7:5>)                        program memory.
with the lower 5-bits of PMADRL, (PMADRL<4:0>)
determining the write latch being loaded. Write opera-    4. Load the PMADRH:PMADRL register pair with
tions do not cross these boundaries. At the completion          the address of the location to be written.
of a program memory write operation, the data in the
write latches is reset to contain 0x3FFF.                 5. Load the PMDATH:PMDATL register pair with
                                                                the program memory data to be written.

                                                          6. Execute the unlock sequence (Section 11.2.2
                                                                "Flash Memory Unlock Sequence"). The write
                                                                latch is now loaded.

                                                          7. Increment the PMADRH:PMADRL register pair
                                                                to point to the next location.

                                                          8. Repeat steps 5 through 7 until all but the last
                                                                write latch has been loaded.

                                                          9. Clear the LWLO bit of the PMCON1 register.
                                                                When the LWLO bit of the PMCON1 register is
                                                                `0', the write sequence will initiate the write to
                                                                Flash program memory.

                                                          10. Load the PMDATH:PMDATL register pair with
                                                                the program memory data to be written.

                                                          11. Execute the unlock sequence (Section 11.2.2
                                                                "Flash Memory Unlock Sequence"). The
                                                                entire program memory latch content is now
                                                                written to Flash program memory.

                                                          Note:  The program memory write latches are
                                                                 reset to the blank state (0x3FFF) at the
                                                                 completion of every write or erase
                                                                 operation. As a result, it is not necessary
                                                                 to load all the program memory write
                                                                 latches. Unloaded latches will remain in
                                                                 the blank state.

                                                          An example of the complete write sequence is shown in
                                                          Example 11-3. The initial address is loaded into the
                                                          PMADRH:PMADRL register pair; the data is loaded
                                                          using indirect addressing.

DS41639A-page 118                 Preliminary                     2012 Microchip Technology Inc.
DS41639A-page 119                FIGURE 11-5:  BLOCK WRITES TO FLASH PROGRAM MEMORY WITH 32 WRITE LATCHES                                                                                                PIC16(L)F1454/5/9

                                 76            0 7 54                    0                      7   5                         07                                                      0

                                     PMADRH                  PMADRL                             --     PMDATH                            PMDATL

                                 - r10 r9 r8 r7 r6 r5 r4 r3 r2 r1 r0 c3 c2 c1 c0                              6                                          8

                                                                                                                                     14

                                               10                     5                  Program Memory Write Latches

                                                                                         14            14                                                   14                                       14

                                                                                         Write Latch #0 Write Latch #1                   Write Latch #30 Write Latch #31

                                                                      PMADRL<4:0>        00h           01h                                                  1Eh                          1Fh

Preliminary                                                                              14            14                                                   14                           14

                                                                                   Row    Addr          Addr                                                 Addr                         Addr
                                                                                   000h  0000h         0001h                                                001Eh                        001Fh
                                                                                   001h  0010h         0011h                                                003Eh                        003Fh
                                                                                   002h  0020h         0021h                                                005Eh                        005Fh

                                                                      CFGS = 0

                                               PMADRH<6:0>     Row                 7FEh  7FE0h         7FE1h                                                                   7FDEh     7FDFh
                                               :PMADRL<7:4>  Address               7FFh  7FF0h         7FF1h                                                                   7FFEh     7FFFh
                                                             Decode
2012 Microchip Technology Inc.                                                                                               Flash Program Memory

                                                                                   800h 8000h - 8003h 8004h 8005h             8006h      8007h 8008h                                8009h - 801Fh
                                                                                                USER ID 0 - 3 reserved REVID  DEVID                                                       reserved
                                                                                                                                          Configuration
                                                                      CFGS = 1                                                                Words

                                                                                                                              Configuration Memory
PIC16(L)F1454/5/9

FIGURE 11-6:       FLASH PROGRAM MEMORY WRITE FLOWCHART

       Start
Write Operation

Determine number of words        Enable Write/Erase
to be written into Program or  Operation (WREN = 1)

   Configuration Memory.       Load the value to write
The number of words cannot      (PMDATH:PMDATL)
exceed the number of words

             per row.
            (word_cnt)

      Disable Interrupts       Update the word counter        Write Latches to Flash
            (GIE = 0)                   (word_cnt--)                 (LWLO = 0)

              Select                    Last word to Yes         Unlock Sequence
Program or Config. Memory                  write ?                  F(Figiguurere11x-x3)
                                                  No
             (CFGS)                                           CPU stalls while Write
                                    Unlock Sequence            operation completes
     Select Row Address                 F(Figiguurere11x-x3)
    (PMADRH:PMADRL)                                                 (2ms typical)
                               No delay when writing to
   Select Write Operation      Program Memory Latches                   Disable
           (FREE = 0)                                         Write/Erase Operation
                                   Increment Address
  Load Write Latches Only       (PMADRH:PMADRL++)                   (WREN = 0)
          (LWLO = 1)
                                                               Re-enable Interrupts
                                                                      (GIE = 1)

                                                                          End
                                                                  Write Operation

DS41639A-page 120              Preliminary                     2012 Microchip Technology Inc.
                                                            PIC16(L)F1454/5/9

EXAMPLE 11-3: WRITING TO FLASH PROGRAM MEMORY

; This write routine assumes the following:

; 1. 64 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 = 00000) is loaded in ADDRH:ADDRL

; 4. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM)

;

                BCF    INTCON,GIE   ; Disable ints so required sequences will execute properly

                BANKSEL PMADRH      ; Bank 3

                MOVF   ADDRH,W      ; Load initial address

                MOVWF  PMADRH       ;

                MOVF   ADDRL,W      ;

                MOVWF  PMADRL       ;

                MOVLW  LOW DATA_ADDR ; Load initial data address

                MOVWF  FSR0L        ;

                MOVLW  HIGH DATA_ADDR ; Load initial data address

                MOVWF  FSR0H        ;

                BCF    PMCON1,CFGS ; Not configuration space

                BSF    PMCON1,WREN ; Enable writes

                BSF    PMCON1,LWLO ; Only Load Write Latches

LOOP

                MOVIW  FSR0++       ; Load first data byte into lower

                MOVWF  PMDATL       ;

                MOVIW  FSR0++       ; Load second data byte into upper

                MOVWF  PMDATH       ;

                MOVF   PMADRL,W     ; Check if lower bits of address are '00000'
                XORLW  0x1F         ; Check if we're on the last of 32 addresses
                ANDLW  0x1F         ;
                BTFSC  STATUS,Z     ; Exit if last of 32 words,
                GOTO   START_WRITE  ;

   Required     MOVLW  55h          ; Start of required write sequence:
      Sequence  MOVWF  PMCON2       ; Write 55h
                MOVLW  0AAh         ;
                MOVWF  PMCON2       ; Write AAh
                BSF    PMCON1,WR    ; Set WR bit to begin write
                NOP                 ; NOP instructions are forced as processor
                                    ; loads program memory write latches
                NOP                 ;

                INCF   PMADRL,F     ; Still loading latches Increment address
                GOTO   LOOP         ; Write next latches

START_WRITE            PMCON1,LWLO  ; No more loading latches - Actually start Flash program
             BCF                    ; memory write

   Required     MOVLW  55h          ; Start of required write sequence:
      Sequence  MOVWF  PMCON2       ; Write 55h
                MOVLW  0AAh         ;
                MOVWF  PMCON2       ; Write AAh
                BSF    PMCON1,WR    ; Set WR bit to begin write
                NOP                 ; NOP instructions are forced as processor writes
                       PMCON1,WREN  ; all the program memory write latches simultaneously
                NOP    INTCON,GIE   ; to program memory.
                                    ; After NOPs, the processor
                BCF                 ; stalls until the self-write process in complete
                BSF                 ; after write processor continues with 3rd instruction
                                    ; Disable writes
                                    ; Enable interrupts

2012 Microchip Technology Inc.        Preliminary                                DS41639A-page 121
PIC16(L)F1454/5/9                                         FIGURE 11-7:  FLASH PROGRAM
                                                                        MEMORY MODIFY
11.3 Modifying Flash Program Memory                                     FLOWCHART

When modifying existing data in a program memory                                Start
row, and data within that row must be preserved, it must                Modify Operation
first be read and saved in a RAM image. Program
memory is modified using the following steps:                       Read Operation
                                                                      F(Figiguurere11x-.x2)
1. Load the starting address of the row to be
      modified.                                           An image of the entire row read
                                                               must be stored in RAM
2. Read the existing data from the row into a RAM
      image.                                                        Modify Image
                                                          The words to be modified are
3. Modify the RAM image to contain the new data            changed in the RAM image
      to be written into program memory.
                                                                  Erase Operation
4. Load the starting address of the row to be                        F(Figiguurere11x-.x4)
      rewritten.
                                                                 WRITE Operation
5. Erase the program memory row.                                  use RAM image
6. Load the write latches with data from the RAM
                                                                     F(Figiugruere11x-.x5)
      image.
7. Initiate a programming operation.                                      End
                                                                  Modify Operation

DS41639A-page 122  Preliminary                                           2012 Microchip Technology Inc.
                                                              PIC16(L)F1454/5/9

11.4 User ID, Device ID and
         Configuration Word Access

Instead of accessing program memory, the User ID's,
Device ID/Revision ID and Configuration Words can be
accessed when CFGS = 1 in the PMCON1 register.
This is the region that would be pointed to by
PC<15> = 1, but not all addresses are accessible.
Different access may exist for reads and writes. Refer
to Table 11-2.

When read access is initiated on an address outside
the parameters listed in Table 11-2, the
PMDATH:PMDATL register pair is cleared, reading
back `0's.

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

     8005h-8006h                 Revision ID-Device ID         Yes           No

     8007h-8008h                 Configuration Words 1 and 2   Yes           No

EXAMPLE 11-4: 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  PMADRL                  ; Select correct Bank
MOVLW    PROG_ADDR_LO            ;
MOVWF    PMADRL                  ; Store LSB of address
CLRF     PMADRH                  ; Clear MSB of address

BSF      PMCON1,CFGS             ; Select Configuration Space

BCF      INTCON,GIE              ; Disable interrupts

BSF      PMCON1,RD               ; Initiate read

NOP                              ; Executed (See Figure 11-2)

NOP                              ; Ignored (See Figure 11-2)

BSF      INTCON,GIE              ; Restore interrupts

MOVF     PMDATL,W                ; Get LSB of word
MOVWF    PROG_DATA_LO            ; Store in user location
MOVF     PMDATH,W                ; Get MSB of word
MOVWF    PROG_DATA_HI            ; Store in user location

2012 Microchip Technology Inc.  Preliminary                                 DS41639A-page 123
PIC16(L)F1454/5/9

11.5 Write Verify

It is considered good programming practice to verify that
program memory writes agree with the intended value.
Since program memory is stored as a full page then the
stored program memory contents are compared with the
intended data stored in RAM after the last write is
complete.

FIGURE 11-8:       FLASH PROGRAM
                   MEMORY VERIFY
                   FLOWCHART

                     Start
              Verify Operation

This routine assumes that the last row
   of data written was from an image

saved in RAM. This image will be used
  to verify the data currently stored in
         Flash Program Memory.

              Read Operation
              Fig(Fuirgeur1e1x-2.x)

                   PMDAT =           No

                   RAM image

                        ?

                   Yes               Fail

                                     Verify Operation

No                 Last

                   Word ?

                 Yes

                     End
              Verify Operation

DS41639A-page 124                                      Preliminary   2012 Microchip Technology Inc.
                                                                    PIC16(L)F1454/5/9

11.6 Register Definitions: Flash Program Memory Control

REGISTER 11-1: PMDATL: PROGRAM MEMORY DATA LOW BYTE 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                                          PMDAT<7:0>                                       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-0      PMDAT<7:0>: Read/write value for Least Significant bits of program memory

REGISTER 11-2: PMDATH: PROGRAM MEMORY 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                 --                               PMDAT<13:8>

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

2012 Microchip Technology Inc.                        Preliminary                      DS41639A-page 125
PIC16(L)F1454/5/9

REGISTER 11-3: PMADRL: PROGRAM MEMORY ADDRESS LOW BYTE 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                                     PMADR<7:0>                                                    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-0      PMADR<7:0>: Specifies the Least Significant bits for program memory address

REGISTER 11-4: PMADRH: PROGRAM MEMORY ADDRESS HIGH BYTE REGISTER

     U-1(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
        --                                                                                              bit 0
                                                  PMADR<14:8>
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 `1'
bit 6-0            PMADR<14:8>: Specifies the Most Significant bits for program memory address
Note 1:      Unimplemented bit, read as `1'.

DS41639A-page 126                                 Preliminary            2012 Microchip Technology Inc.
                                                            PIC16(L)F1454/5/9

REGISTER 11-5: PMCON1: PROGRAM MEMORY CONTROL 1 REGISTER

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

bit 7             Unimplemented: Read as `1'
bit 6
bit 5             CFGS: Configuration Select bit
                  1 = Access Configuration, User ID and Device ID Registers
bit 4             0 = Access Flash program memory
bit 3             LWLO: Load Write Latches Only bit(3)
                  1 = Only the addressed program memory write latch is loaded/updated on the next WR command
bit 2             0 = The addressed program memory write latch is loaded/updated and a write of all program memory
bit 1
                        write latches will be initiated on the next WR command
bit 0
                  FREE: Program Flash Erase Enable bit
Note 1:           1 = Performs an erase operation on the next WR command (hardware cleared upon completion)
        2:        0 = Performs a write operation on the next WR command
        3:
                  WRERR: Program/Erase 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.

                  WREN: Program/Erase Enable bit
                  1 = Allows program/erase cycles
                  0 = Inhibits programming/erasing of program Flash

                  WR: Write Control bit
                  1 = Initiates a program Flash 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 is complete and inactive.

                  RD: Read Control bit
                  1 = Initiates a program Flash 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 read.

             Unimplemented bit, read as `1'.
             The WRERR bit is automatically set by hardware when a program memory write or erase operation is
             started (WR = 1).
             The LWLO bit is ignored during a program memory erase operation (FREE = 1).

2012 Microchip Technology Inc.                Preliminary                   DS41639A-page 127
PIC16(L)F1454/5/9

REGISTER 11-6: PMCON2: PROGRAM MEMORY 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
                                            Program Memory 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           Flash Memory Unlock Pattern bits

                  To unlock writes, a 55h must be written first, followed by an AAh, before setting the WR bit of the
                  PMCON1 register. The value written to this register is used to unlock the writes. There are specific
                  timing requirements on these writes.

TABLE 11-3: SUMMARY OF REGISTERS ASSOCIATED WITH FLASH PROGRAM MEMORY

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
PMCON1      --(1)        CFGS                                                               WR             RD               96
PMCON2                                      LWLO        FREE       WRERR WREN                                              127
                                                                                                                           128
                                              Program Memory Control Register 2                                            126
                                                                                                                           126
PMADRL      --(1)                                        PMADRL<7:0>                                                       125
PMADRH                                                           PMADRH<6:0>                                               125
PMDATL
                                                         PMDATL<7:0>

PMDATH           --         --                                     PMDATH<5:0>

Legend:     -- = unimplemented location, read as `0'. Shaded cells are not used by Flash program memory.
Note 1:     Unimplemented, read as `1'.

TABLE 11-4: SUMMARY OF CONFIGURATION WORD WITH FLASH PROGRAM MEMORY

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

            13:8     --            --         FCMEN             IESO CLKOUTEN         BOREN<1:0>                --

CONFIG1     7:0      CP         MCLRE PWRTE                      WDTE<1:0>                  FOSC<2:0>                 52

CONFIG2     13:8     --            --              LVP   DEBUG     LPBOR         BORV STVREN PLLEN                    54

            7:0 PLLMULT USBLSCLK                    CPUDIV<1:0>           --         --               WRT<1:0>

Legend: -- = unimplemented location, read as `0'. Shaded cells are not used by Flash program memory.

DS41639A-page 128                                        Preliminary                         2012 Microchip Technology Inc.
                                                                 PIC16(L)F1454/5/9

12.0 I/O PORTS                                             FIGURE 12-1:       GENERIC I/O PORT
                                                                              OPERATION
Each port has three standard registers for its operation.
These registers are:                                                          Read LATx TRISx

TRISx registers (data direction)                                         D  Q
PORTx registers (reads the levels on the pins of
                                                           Write LATx         CK                        VDD
   the device)                                             Write PORTx     Data Register                       I/O pin
LATx registers (output latch)
                                                           Data Bus                                     VSS
Some ports may have one or more of the following
additional registers. These registers are:                     Read PORTx
                                                           To peripherals
ANSELx (analog select)
WPUx (weak pull-up)

In general, when a peripheral is enabled on a port pin,
that pin cannot be used as a general purpose output.
However, the pin can still be read.

TABLE 12-1: PORT AVAILABILITY PER                                             ANSELx
                     DEVICE

Device                           PORTA                     EXAMPLE 12-1: INITIALIZING PORTA
                                          PORTB
                                                    PORTC   ; This code example illustrates
                                                            ; initializing the PORTA register. The
PIC16(L)F1454/5                                             ; other ports are initialized in the same
PIC16(L)F1459                                               ; manner.

                                    

The Data Latch (LATx registers) is useful for              BANKSEL PORTA                  ;
read-modify-write operations on the value that the I/O
pins are driving.                                          CLRF      PORTA                ;Init PORTA

                                                           BANKSEL LATA                   ;Data Latch

                                                           CLRF      LATA                 ;

A write operation to the LATx register has the same        BANKSEL ANSELA                 ;
effect as a write to the corresponding PORTx register.
A read of the LATx register reads of the values held in    CLRF      ANSELA               ;digital I/O
the I/O PORT latches, while a read of the PORTx
register reads the actual I/O pin value.                   BANKSEL TRISA                  ;

                                                           MOVLW B'00111000' ;Set RA<5:3> as inputs

                                                           MOVWF TRISA                    ;and set RA<2:0> as

                                                                                          ;outputs

Ports that support analog inputs have an associated
ANSELx register. When an ANSEL bit is set, the digital
input buffer associated with that bit is disabled.
Disabling the input buffer prevents analog signal levels
on the pin between a logic high and low from causing
excessive current in the logic input circuitry. A
simplified model of a generic I/O port, without the
interfaces to other peripherals, is shown in Figure 12-1.

2012 Microchip Technology Inc.      Preliminary                                             DS41639A-page 129
PIC16(L)F1454/5/9

12.1 Alternate Pin Function

The Alternate Pin Function Control register is used to
steer specific peripheral input and output functions
between different pins. The APFCON register is shown
in Register 12-1. For this device family, the following
functions can be moved between different pins.

CLKR
SDO
SS
T1G
P2

These bits have no effect on the values of any TRIS
register. PORT and TRIS overrides will be routed to the
correct pin. The unselected pin will be unaffected.

12.2 Register Definitions: Alternate Pin Function Control

REGISTER 12-1: APFCON: ALTERNATE PIN FUNCTION CONTROL REGISTER

R/W-0/0  R/W-0/0      R/W-0/0               U-0  R/W-0/0  R/W-0/0   U-0  U-0
                                                                         --
CLKRSEL SDOSEL(1) SSSEL                     --   T1GSEL   P2SEL(1)  --
                                                                              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    CLKRSEL: Pin Selection bit
bit 6    1 = CLKR function is on RC3
bit 5    0 = CLKR function is on RA4
         SDOSEL: Pin Selection bit(1)
bit 4    1 = SDO function is on RA4
bit 3    0 = SDO function is on RC2
bit 2
bit 1-0  SSSEL: Pin Selection bit

         For 14-Pin Devices (PIC16(L)F1454/5):

         1 = SS function is on RA3
         0 = SS function is on RC3

         For 20-Pin Devices (PIC16(L)F1455/9):

         1 = SS function is on RA3
         0 = SS function is on RC6

         Unimplemented: Read as `0'

         T1GSEL: Pin Selection bit
         1 = T1G function is on RA3
         0 = T1G function is on RA4
         P2SEL: Pin Selection bit(1)
         1 = T1G function is on RA5
         0 = T1G function is on RC3

         Unimplemented: Read as `0'

Note 1: PIC16(L)F1454/5 only.

DS41639A-page 130                           Preliminary              2012 Microchip Technology Inc.
                                                             PIC16(L)F1454/5/9

12.3 PORTA Registers                                         EXAMPLE 12-2: INITIALIZING PORTA

12.3.1 DATA REGISTER                                         BANKSEL     PORTA   ;
                                                             CLRF
PORTA is a 5-bit wide, bidirectional port. The               BANKSEL     PORTA   ;Init PORTA
corresponding data direction register is TRISA               CLRF
(Register 12-3). Setting a TRISA bit (= 1) will make the     BANKSEL     LATA    ;Data Latch
corresponding PORTA pin an input (i.e., disable the          CLRF
output driver). Clearing a TRISA bit (= 0) will make the     BANKSEL     LATA    ;
corresponding PORTA pin an output (i.e., enables             MOVLW
output driver and puts the contents of the output latch      MOVWF       ANSELA  ;
on the selected pin). The exception is RA0, RA1 and
RA3, which are input only and its TRIS bit will always                   ANSELA  ;digital I/O
read as `1'. Example 12-2 shows how to initialize an I/O
port.                                                                    TRISA   ;

Reading the PORTA register (Register 12-2) reads the                     B'00111000' ;Set RA<5:3> as inputs
status of the pins, whereas writing to it will write to the
PORT latch. All write operations are read-modify-write                   TRISA   ;and set RA<2:0> as
operations. Therefore, a write to a port implies that the
port pins are read, this value is modified and then                              ;outputs
written to the PORT data latch (LATA).
                                                             12.3.4 PORTA FUNCTIONS AND OUTPUT
12.3.2 DIRECTION CONTROL                                                   PRIORITIES

The TRISA register (Register 12-3) controls the              Each PORTA pin is multiplexed with other functions. The
PORTA pin output drivers, even when they are being           pins, their combined functions and their output priorities
used as analog inputs. The user should ensure the bits       are shown in Table 12-2.
in the TRISA register are maintained set when using
them as analog inputs. I/O pins configured as analog         When multiple outputs are enabled, the actual pin
input always read `0'.                                       control goes to the peripheral with the highest priority.

                                                             Analog input functions, such as ADC and comparator
                                                             inputs, are not shown in the priority lists. These inputs
                                                             are active when the I/O pin is set for Analog mode using
                                                             the ANSELx registers. Digital output functions may
                                                             control the pin when it is in Analog mode with the