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

型号

产品描述

搜索
 

PIC16F1782

器件型号:PIC16F1782
文件大小:3736.79KB,共0页
厂商名称:MICROCHIP [Microchip Technology]
厂商官网:http://www.microchip.com/
下载文档

器件描述

文档预览

PIC16F1782器件文档内容

                                        PIC16(L)F1782/3
                                                 Data Sheet

                                 28-Pin 8-Bit Advanced Analog
                                           Flash Microcontrollers

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

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

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

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

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

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

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

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

                                                                        Printed on recycled paper.

                                                                   ISBN: 978-1-61341-125-4

                                                                   Microchip received ISO/TS-16949:2002 certification for its worldwide
                                                                   headquarters, design and wafer fabrication facilities in Chandler and
                                                                   Tempe, Arizona; Gresham, Oregon and design centers in California
                                                                   and India. The Company's quality system processes and procedures
                                                                   are for its PIC MCUs and dsPIC DSCs, KEELOQ code hopping
                                                                   devices, Serial EEPROMs, microperipherals, nonvolatile memory and
                                                                   analog products. In addition, Microchip's quality system for the design
                                                                   and manufacture of development systems is ISO 9001:2000 certified.

DS41579A-page 2  Preliminary                                        2011 Microchip Technology Inc.
           PIC16(L)F1782/3

28-Pin 8-Bit Advanced Analog Flash Microcontroller

High-Performance RISC CPU:                         Analog Peripheral Features:

Only 49 Instructions                              Analog-to-Digital Converter (ADC):
Operating Speed:                                    - Fully differential 12-bit converter
                                                      - 100 ksps conversion rate
   - DC 32 MHz clock input                          - 11 single-ended channels
   - DC 125 ns instruction cycle                    - 5 differential channels
Interrupt Capability with Automatic Context         - Positive and negative reference selection
   Saving
16-Level Deep Hardware Stack with optional       8-bit Digital-to-Analog Converter (DAC):
   Overflow/Underflow Reset                           - Output available externally
Direct, Indirect and Relative Addressing modes:     - Positive and negative reference selection
   - Two full 16-bit File Select Registers (FSRs)     - Internal connections to comparators, op
   - FSRs can read program and data memory               amps, Fixed Voltage Reference (FVR) and
                                                         ADC
Extreme Low-Power (XLP) Management:
                                                    Three High-Speed Comparators:
Standby Current (PIC16LF1782/3):                    - 30 ns response time
   - 50 nA @ 1.8V, typical                            - Rail-to-rail inputs
                                                      - Software selectable hysteresis
Watchdog Timer Current (PIC16LF1782/3):             - Internal connection to op amps, FVR and
   - 500 nA @ 1.8V, typical                              DAC

Timer1 (32.768 kHz Real-Time Clock) Oscillator    Two Operational Amplifiers:
   Current (PIC16LF1782/3):                           - Rail-to-rail inputs/outputs
   - 500 nA @ 1.8V, typical                           - High/Low selectable Gain Bandwidth Product
                                                      - Internal connection to DAC and FVR
Operating Current (PIC16LF1782/3):
   - 4 A @ 32 kHz, 1.8V, typical                   Fixed Voltage Reference (FVR):
                                                      - 1.024V, 2.048V and 4.096V output levels
Operating Current (PIC16LF1782/3):                  - Internal connection to ADC, comparators and
   - 150 A @ 1 MHz, 1.8V, typical                        DAC

Memory Features:                                   Digital Peripheral Features:

Up to 4 KW Flash Program Memory:                  Timer0: 8-Bit Timer/Counter with 8-Bit
   - Self-programmable under software control         Programmable Prescaler
   - Programmable code protection
   - Programmable write protection                  Enhanced Timer1:
                                                      - 16-bit timer/counter with prescaler
256 Bytes of Data EEPROM                            - External Gate Input mode
Up to 512 Bytes of RAM                              - Dedicated low-power 32 kHz oscillator driver

High Performance PWM Controller:                   Timer2: 8-Bit Timer/Counter with 8-Bit Period
                                                      Register, Prescaler and Postscaler
Two Programmable Switch Mode Controller
   (PSMC) modules:                                  Two Capture/Compare/PWM modules (CCP):
   - Digital and/or analog feedback control of        - 16-bit capture, maximum resolution 12.5 ns
      PWM frequency and pulse begin/end times         - 16-bit compare, max resolution 31.25 ns
   - 16-bit Period, Duty Cycle and Phase              - 10-bit PWM, max frequency 32 kHz
   - 16 ns clock resolution
   - Supports Single PWM, Complementary, Push-      Master Synchronous Serial Port (SSP) with SPI
      Pull and 3-phase modes of operation             and I2CTM with:
   - Dead-band control with 8-bit counter             - 7-bit address masking
   - Auto-shutdown and restart                        - SMBus/PMBusTM compatibility
   - Leading and falling edge blanking
   - Burst mode                                     Enhanced Universal Synchronous Asynchronous
                                                      Receiver Transmitter (EUSART):
                                                      - RS-232, RS-485 and LIN compatible
                                                      - Auto-baud detect
                                                      - Auto-wake-up on start

2011 Microchip Technology Inc.  Preliminary       DS41579A-page 3
PIC16(L)F1782/3                                   I/O Features:

Oscillator Features:                               Up to 24 I/O Pins and 1 Input-only Pin:
                                                     - High current sink/source for LED drivers
Operate up to 32 MHz from Precision Internal       - Individually programmable interrupt-on-
   Oscillator:                                          change pins
   - Factory calibrated to 1%, typical              - Individually programmable weak pull-ups
   - Software selectable frequency range from        - Individual input level selection
      32 MHz to 31 kHz                               - Individually programmable slew rate control
                                                     - Individually programmable open drain
31 kHz Low-Power Internal Oscillator                  outputs
32.768 kHz Timer1 Oscillator:
                                                  General Microcontroller Features:
   - Available as system clock
   - Low-power RTC                                 Power-Saving Sleep mode
External Oscillator Block with:                  Power-on Reset (POR)
   - 4 crystal/resonator modes up to 32 MHz       Power-up Timer (PWRT)
                                                   Oscillator Start-up Timer (OST)
      using 4x PLL                                 Brown-out Reset (BOR) with Selectable Trip Point
   - 3 external clock modes up to 32 MHz          Extended Watchdog Timer (WDT)
4x Phase-Locked Loop (PLL)                      In-Circuit Serial ProgrammingTM (ICSPTM)
Fail-Safe Clock Monitor:                         In-Circuit Debug (ICD)
   - Detect and recover from external oscillator   Enhanced Low-Voltage Programming (LVP)
                                                   Operating Voltage Range:
      failure
Two-Speed Start-up:                                - 1.8V to 3.6V (PIC16LF1782/3)
                                                     - 2.3V to 5.5V (PIC16F1782/3)
   - Minimize latency between code execution
      and external oscillator start-up

TABLE 1: PIC16(L)F1782/3 FAMILY TYPES

Device           Program Memory
                    Flash

                        (words)
                              Data EEPROM

                                  (bytes)
                                           SRAM
                                               (bytes)
                                                         I/Os
                                                                   12-bit A/D (ch)
                                                                             Comparators
                                                                                    Operational
                                                                                        Amplifiers
                                                                                               8-bit DAC
                                                                                                       Timers
                                                                                                           8/16-bit
                                                                                                                   Programmable
                                                                                                                      Switch Mode
                                                                                                                          Controllers (PSMC)
                                                                                                                              2 ch/6 ch outputs
                                                                                                                                     CCP
                                                                                                                                             EUSART
                                                                                                                                                   MSSP
                                                                                                                                                      (I2CTM/SPI)

PIC16F1782 2048 256   256  25 11 3 2 1 2/1        1/1  211

PIC16LF1782 2048 256  256  25 11 3 2 1 2/1        1/1  211

PIC16F1783 4096 256   512  25 11 3 2 1 2/1        1/1  211

PIC16LF1783 4096 256  512  25 11 3 2 1 2/1        1/1  211

DS41579A-page 4            Preliminary             2011 Microchip Technology Inc.
                                                                 PIC16(L)F1782/3

FIGURE 1:  28-PIN DIAGRAM FOR PIC16(L)F1782/3

SPDIP, SOIC, SSOP

                   VPP/MCLR/RE3       1                    28    RB7

                                 RA0  2                    27    RB6

                                 RA1  3                    26    RB5

                                 RA2  4                    25    RB4

                                 RA3  5   PIC16(L)F1782/3  24    RB3

                                 RA4  6                    23    RB2

                                 RA5  7                    22    RB1

                                 VSS  8                    21    RB0

                                 RA7  9                    20    VDD

                                 RA6  10                   19    VSS

                                 RC0  11                   18    RC7

                                 RC1  12                   17    RC6

                                 RC2  13                   16    RC5

                                 RC3  14                   15    RC4

Note: See Table 2 for the location of all peripheral functions.

2011 Microchip Technology Inc.       Preliminary                     DS41579A-page 5
PIC16(L)F1782/3

FIGURE 2:        28-PIN DIAGRAM FOR PIC16(L)F1782/3

UQFN

                         RA1  RA0  RE3/MCLR/VPP  RB7  RB6  RB5  RB4

                         28   27   26            25   24   23   22

                 RA2  1                                              21  RB3

                 RA3  2                                              20  RB2

                 RA4  3                                              19  RB1

                 RA5  4 PIC16(L)F1782/3 18                               RB0

                 VSS  5                                              17  VDD

                 RA7  6                                              16  VSS

                 RA6  7            10   11       12   13        14   15  RC7

                         8    9

                         RC0  RC1  RC2  RC3      RC4  RC5  RC6

Note: See Table 2 for the location of all peripheral functions.

DS41579A-page 6          Preliminary                                      2011 Microchip Technology Inc.
                                         PIC16(L)F1782/3

TABLE 2: 28-PIN ALLOCATION TABLE (PIC16(L)F1782/3)

I/O
       28-Pin SPDIP, SOIC, SSOP

             28-Pin QFN
                      ADC

                                    ADC Reference
                                                    Comparator

                                                                    Operation Amplifiers
                                                                                       8-bit DAC
                                                                                                       Timers
                                                                                                                       PSMC
                                                                                                                                       CCP
                                                                                                                                                    EUSART
                                                                                                                                                                MSSP
                                                                                                                                                                            Interrupt
                                                                                                                                                                                    Pull-up
                                                                                                                                                                                                Basic

RA0 2 27 AN0    --      C1IN0-       --       --                          --     --        --  --      -- IOC Y       --

                        C2IN0-

                        C3IN0-

RA1 3 28 AN1    --      C1IN1- OPA1OUT        --                          --     --        --  --      -- IOC Y       --

                        C2IN1-

                        C3IN1-

RA2 4 1 AN2 VREF- C1IN0+             --       DAC1OUT1 --                        --        --  --      -- IOC Y       --

                        C2IN0+                DAC1VREF-

                        C3IN0+

RA3 5 2 AN3 VREF1+ C1IN1+            --       DAC1VREF+ --                       --        --  --      -- IOC Y       --

RA4 6 3 --      --      C1OUT OPA1IN+         --                          T0CKI  --        --  --      -- IOC Y       --

RA5 7 4 AN4     --      C2OUT(1) OPA1IN-      --                          --     --        --  --      SS IOC Y       --

RA6 10 7 --     --      C2OUT(2)     --       --                          --     --        --  --      -- IOC Y OSC2/

                                                                                                                      CLKOUT

RA7 9 6  --     VREF2+           --  --       --                          -- PSMC1CLK --       --      -- IOC Y OSC1/

                                                                                 PSMC2CLK                             CLKIN

RB0 21 18 AN12  --      C2IN1+       --       --                          --     PSMC1IN CCP1(2) --    -- INT/ Y      --

                                                                                 PSMC2IN                       IOC

RB1 22 19 AN10  --      C1IN3- OPA2OUT        --                          --     --        --  --      -- IOC Y       --

                        C2IN3-

                        C3IN3-

RB2 23 20 AN8   --               --  OPA2IN-  --                          --     --        --  --      -- IOC Y CLKR

RB3 24 21 AN9   --      C1IN2- OPA2IN+        --                          --     --        CCP2(2) --  -- IOC Y       --

                        C2IN2-

                        C3IN2-

RB4 25 22 AN11  --      C3IN1+       --       --                          --     --        --  --      -- IOC Y       --

RB5 26 23 AN13  --      C3OUT        --       --                          T1G    --        --  -- SDO(2) IOC Y        --

RB6 27 24 --    --               --  --       --                          --     --        --  TX(2) SDI(2) IOC Y ICSPCLK
                                                                                               CK(2) SDA(2)

RB7 28 25 --    --               --  --       DAC1OUT2 --                        --        --  RX(2) SCK(2) IOC Y ICSPDAT
                                                                                               DT(2) SCL(2)

RC0 11 8 --     --               --  --       --                          T1OSO PSMC1A     --  --      -- IOC Y       --

                                                                          T1CKI

RC1 12 9 --     --               --  --       --                          T1OSI PSMC1B CCP2(1) --      -- IOC Y       --

RC2 13 10 --    --               --  --       --                          --     PSMC1C CCP1(1) --     -- IOC Y       --

RC3 14 11 --    --               --  --       --                          --     PSMC1D    --  -- SCK(1) IOC Y        --
                                                                                                       SCL(1)

RC4 15 12 --    --               --  --       --                          --     PSMC1E    --  --      SDI(1) IOC Y   --
                                                                                                       SDA(1)

RC5 16 13 --    --               --  --       --                          --     PSMC1F    --  -- SDO(1) IOC Y        --

RC6 17 14 --    --               --  --       --                          --     PSMC2A    --  TX(1)   --      IOC Y  --
                                                                                               CK(1)

RC7 18 15 --    --               --  --       --                          --     PSMC2B    --  RX(1)   --      IOC Y  --
                                                                                               DT(1)

RE3 1 26 --     --               --  --       --                          --     --        --  --      -- IOC Y MCLR/

                                                                                                                      VPP

VDD 20 17 --    --               --  --       --                          --     --        --  --      --      ----   VDD

VSS 8, 5, --    --               --  --       --                          --     --        --  --      --      ----   VSS

19 16

Note 1: Default pin assignment.
          2: Alternate pin assignment that can be selected via software.

2011 Microchip Technology Inc.               Preliminary                                                      DS41579A-page 7
PIC16(L)F1782/3

Table of Contents

1.0 Device Overview ........................................................................................................................................................................ 11
2.0 Enhanced Mid-Range CPU ........................................................................................................................................................ 17
3.0 Memory Organization ................................................................................................................................................................. 19
4.0 Device Configuration .................................................................................................................................................................. 43
5.0 Resets ........................................................................................................................................................................................ 49
6.0 Oscillator Module........................................................................................................................................................................ 57
7.0 Reference Clock Module ............................................................................................................................................................ 75
8.0 Interrupts .................................................................................................................................................................................... 79
9.0 Power-Down Mode (Sleep) ........................................................................................................................................................ 93
10.0 Low Dropout (LDO) Voltage Regulator ...................................................................................................................................... 95
11.0 Watchdog Timer (WDT) ........................................................................................................................................................... 971
12.0 Date EEPROM and Flash Program Memory Control ............................................................................................................... 101
13.0 I/O Ports ................................................................................................................................................................................... 115
14.0 Interrupt-on-Change ................................................................................................................................................................. 137
15.0 Fixed Voltage Reference (FVR) ............................................................................................................................................... 141
16.0 Temperature Indicator .............................................................................................................................................................. 145
17.0 Analog-to-Digital Converter (ADC) Module .............................................................................................................................. 147
18.0 Operational Amplifier (OPA) Module ........................................................................................................................................ 161
19.0 Digital-to-Analog Converter (DAC) Module .............................................................................................................................. 165
20.0 Comparator Module.................................................................................................................................................................. 169
21.0 Timer0 Module ......................................................................................................................................................................... 177
22.0 Timer1 Module ......................................................................................................................................................................... 181
23.0 Timer2 Module ......................................................................................................................................................................... 193
24.0 Programmable Switch Mode Control (PSMC) Module ............................................................................................................. 197
25.0 Capture/Compare/PWM Module .............................................................................................................................................. 251
26.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 261
27.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ............................................................... 313
28.0 In-Circuit Serial ProgrammingTM (ICSPTM) ................................................................................................................................ 343
29.0 Instruction Set Summary .......................................................................................................................................................... 347
30.0 Electrical Specifications............................................................................................................................................................ 361
31.0 DC and AC Characteristics Graphs and Tables ....................................................................................................................... 393
32.0 Development Support............................................................................................................................................................... 395
33.0 Packaging Information.............................................................................................................................................................. 399
Appendix A: Revision History............................................................................................................................................................. 409
Index .................................................................................................................................................................................................. 411
The Microchip Web Site ..................................................................................................................................................................... 417
Customer Change Notification Service .............................................................................................................................................. 417
Customer Support .............................................................................................................................................................................. 417
Reader Response .............................................................................................................................................................................. 418
Product Identification System............................................................................................................................................................. 419

DS41579A-page 8  Preliminary   2011 Microchip Technology Inc.
                                        PIC16(L)F1782/3

                                   TO OUR VALUED CUSTOMERS

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

Most Current Data Sheet

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

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

Errata

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

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

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

Customer Notification System

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

2011 Microchip Technology Inc.  Preliminary  DS41579A-page 9
PIC16(L)F1782/3

NOTES:

DS41579A-page 10  Preliminary   2011 Microchip Technology Inc.
                                                             PIC16(L)F1782/3

1.0 DEVICE OVERVIEW                                  TABLE 1-1: DEVICE PERIPHERAL
                                                                          SUMMARY
The PIC16(L)F1782/3 are described within this data
sheet. They are available in 28-pin packages.        Peripheral                         PIC16F1782
Figure 1-1 shows a block diagram of the                                                           PIC16F1783
PIC16(L)F1782/3 devices. Table 1-2 shows the pinout
descriptions.

Reference Table 1-1 for peripherals available per
device.

                                                     Analog-to-Digital Converter (ADC)            

                                                     Digital-to-Analog Converter (DAC)            

                                                     Fixed Voltage Reference (FVR)               

                                                     Reference Clock Module                       

                                                     Temperature Indicator                        

                                                     Capture/Compare/PWM (CCP/ECCP) Modules

                                                                             CCP1                 

                                                                             CCP2                 

                                                     Comparators

                                                                                      C1         

                                                                                      C2         

                                                                                      C3         

                                                     Enhanced Universal Synchronous/Asynchronous
                                                     Receiver/Transmitter (EUSART)

                                                                             EUSART               

                                                     Master Synchronous Serial Ports

                                                                             MSSP                 

                                                     Op Amp

                                                                             Op Amp 1            

                                                                             Op Amp 2            

                                                     Programmable Switch Mode Controller (PSMC)

                                                                             PSMC1               

                                                                             PSMC2               

                                                     Timers

                                                                             Timer0               

                                                                             Timer1               

                                                                             Timer2               

2011 Microchip Technology Inc.  Preliminary                                            DS41579A-page 11
PIC16(L)F1782/3

FIGURE 1-1:             PIC16(L)F1782/3 BLOCK DIAGRAM

                                                       Program
                                                    Flash Memory

                                                                                      RAM  PORTA
                                                                                           PORTB
CLKOUT          Timing                                 CPU                                 PORTC
CLKIN       Generation                             Figure 2-1                             PORTE

             HFINTOSC/
             LFINTOSC
              Oscillator

                  MCLR

Op Amps                 PSMCs          Timer0  Timer1           Timer2  MSSP  Comparators

              Temp.            ADC             FVR     DAC              CCPs  EUSART
             Indicator         12-Bit

Note 1: See applicable chapters for more information on peripherals.

DS41579A-page 12                                    Preliminary                             2011 Microchip Technology Inc.
                                                                   PIC16(L)F1782/3

TABLE 1-2: PIC16(L)F1782/3 PINOUT DESCRIPTION

Name                             Function  Input Output                       Description
                                           Type Type

RA0/AN0/C1IN0-/C2IN0-/C3IN0-     RA0       TTL/ST CMOS General purpose I/O.

                                 AN0       AN        -- A/D Channel 0 input.

                                 C1IN0-    AN        -- Comparator C1 negative input.

                                 C2IN0-    AN        -- Comparator C2 negative input.

                                 C3IN0-    AN        -- Comparator C3 negative input.

RA1/AN1/C1IN1-/C2IN1-/           RA1       TTL/ST CMOS General purpose I/O.
C3IN1-/OPA1OUT
                                 AN1       AN        -- A/D Channel 1 input.

                                 C1IN1-    AN        -- Comparator C1 negative input.

                                 C2IN1-    AN        -- Comparator C2 negative input.

                                 C3IN1-    AN        -- Comparator C3 negative input.

                                 OPA1OUT --          AN Operational Amplifier 1 output.

RA2/AN2/C1IN0+/C2IN0+/             RA2     TTL/ST CMOS General purpose I/O.
C3IN0+/DAC1OUT1/VREF-/             AN2
DAC1VREF-                        C1IN0+    AN        -- A/D Channel 2 input.

                                           AN        -- Comparator C1 positive input.

                                 C2IN0+    AN        -- Comparator C2 positive input.

                                 C3IN0+    AN        -- Comparator C3 positive input.

                                 DAC1OUT --          AN Digital-to-Analog Converter 1 output.

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

                                 DAC1VREF- AN        -- Digital-to-Analog Converter 1 negative reference.

RA3/AN3/VREF+(1)/C1IN1+/         RA3       TTL/ST CMOS General purpose I/O.
DAC1VREF+
                                 AN3       AN        -- A/D Channel 3 input.

                                 VREF+     AN        -- A/D Voltage Reference input.

                                 C1IN1+    AN        -- Comparator C1 positive input.

                                 DAC1VREF+ AN        -- Digital-to-Analog Converter 1 positive reference.

RA4/C1OUT/OPA1IN+/T0CKI          RA4       TTL/ST CMOS General purpose I/O.

                                 C1OUT     -- CMOS Comparator C1 output.

                                 OPA1IN+ AN          -- Operational Amplifier 1 non-inverting input.

                                 T0CKI     ST        -- Timer0 clock input.

RA5/AN4/C2OUT(1)/OP1INA-/        RA5       TTL/ST CMOS General purpose I/O.
SS
                                 AN4       AN        -- A/D Channel 4 input.

                                 C2OUT     -- CMOS Comparator C2 output.

                                 OPA1IN-   AN        -- Operational Amplifier 1 inverting input.

                                 SS        ST        -- Slave Select input.

RA6/C2OUT/OSC2/CLKOUT            RA6       TTL/ST CMOS General purpose I/O.

                                 C2OUT     -- CMOS Comparator C2 output.

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

                                 CLKOUT    -- CMOS FOSC/4 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: Pin functions can be assigned to one of two locations via software. See Register 13-1.

2: All pins have Interrupt-on-change functionality.

2011 Microchip Technology Inc.                Preliminary                                              DS41579A-page 13
PIC16(L)F1782/3

TABLE 1-2: PIC16(L)F1782/3 PINOUT DESCRIPTION (CONTINUED)

Name                            Function  Input Output                            Description
                                          Type Type

RA7/VREF+(1)/PSMC1CLK/           RA7      TTL/ST CMOS General purpose I/O.
PSMC2CLK/OSC1/CLKIN             VREF+
                                          AN         -- A/D Voltage Reference input.

                                PSMC1CLK ST          -- PSMC1 clock input.

                                PSMC2CLK ST          -- PSMC2 clock input.

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

                                CLKIN     st         -- External clock input (EC mode).

RB0/AN12/C2IN1+/PSMC1IN/        RB0       TTL/ST CMOS General purpose I/O.
PSMC2IN/CCP1(1)/INT             AN12
                                          AN         -- A/D Channel 12 input.

                                C2IN1+    AN         -- Comparator C2 positive input.

                                PSMC1IN ST           -- PSMC1 Event Trigger input.

                                PSMC2IN ST           -- PSMC2 Event Trigger input.

                                CCP1      ST CMOS Capture/Compare/PWM1.

                                INT       ST         -- External interrupt.

RB1/AN10/C1IN3-/C2IN3-/         RB1       TTL/ST CMOS General purpose I/O.
C3IN3-/OPA2OUT                  AN10
                                          AN         -- A/D Channel 10 input.

                                C1IN3-    AN         -- Comparator C1 negative input.

                                C2IN3-    AN         -- Comparator C2 negative input.

                                C3IN3-    AN         -- Comparator C3 negative input.

                                OPA2OUT --           AN Operational Amplifier 2 output.

RB2/AN8/OPA2IN-                 RB2       TTL/ST CMOS General purpose I/O.

                                AN8       AN         -- A/D Channel 8 input.

                                OPA2IN-   AN         -- Operational Amplifier 2 inverting input.

RB3/AN9/C1IN2-/C2IN2-/          RB3       TTL/ST CMOS General purpose I/O.
C3IN2-/OPA2IN+/CCP2(1)          AN9
                                          AN         -- A/D Channel 9 input.

                                C1IN2-    AN         -- Comparator C1 negative input.

                                C2IN2-    AN         -- Comparator C2 negative input.

                                C3IN2-    AN         -- Comparator C3 negative input.

                                OPA2IN+ AN           -- Operational Amplifier 2 non-inverting input.

                                CCP2      ST CMOS Capture/Compare/PWM2.

RB4/AN11/C3IN1+                 RB4       TTL/ST CMOS General purpose I/O.

                                AN11      AN         -- A/D Channel 11 input.

                                C3IN1+    AN         -- Comparator C3 positive input.
                                  RB5
RB5/AN13/C3OUT/T1G/SDO(1)                 TTL/ST CMOS General purpose I/O.

                                AN13      AN         -- A/D Channel 13 input.

                                C3OUT     -- CMOS Comparator C3 output.

                                T1G       ST         -- Timer1 gate input.

RB6/TX(1)/CK(1)/SDI(1)/SDA(1)/  SDO          -- CMOS SPI data output.
ICSPCLK                         RB6       TTL/ST CMOS General purpose I/O.
                                 TX
                                             -- CMOS USART asynchronous transmit.

                                CK        ST CMOS USART synchronous clock.

                                SDI       ST         -- SPI data input.
                                SDA
                                          I2C        OD I2CTM data input/output.

                                ICSPCLK ST           -- Serial Programming 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: Pin functions can be assigned to one of two locations via software. See Register 13-1.

2: All pins have Interrupt-on-change functionality.

DS41579A-page 14                               Preliminary                              2011 Microchip Technology Inc.
                                                                           PIC16(L)F1782/3

TABLE 1-2: PIC16(L)F1782/3 PINOUT DESCRIPTION (CONTINUED)

     Name                        Function  Input Output                                    Description
                                           Type Type

RB7/DAC1OUT2/RX(1)/DT(1)/        RB7       TTL/ST CMOS General purpose I/O.
SCK(1)/SCL(1)/ICSPDAT
                                 DAC1OUT2 --              AN Voltage Reference output.

                                 RX        ST             -- USART asynchronous input.

                                 DT        ST CMOS USART synchronous data.

                                 SCK       ST CMOS SPI clock.
                                 SCL
                                           I2C            OD I2CTM clock.

                                 ICSPDAT ST CMOS ICSPTM Data I/O.

RC0/T1OSO/T1CKI/PSMC1A           RC0       TTL/ST CMOS General purpose I/O.

                                 T1OSO XTAL XTAL Timer1 oscillator connection.

                                 T1CKI     ST             -- Timer1 clock input.

                                 PSMC1A    -- CMOS PSMC1 output A.

RC1/T1OSI/PSMC1B/CCP2(1)         RC1       TTL/ST CMOS General purpose I/O.

                                 T1OSI     XTAL XTAL Timer1 oscillator connection.

                                 PSMC1B    -- CMOS PSMC1 output B.

RC2/PSMC1C/CCP1(1)               CCP2        ST CMOS Capture/Compare/PWM2.
                                  RC2      TTL/ST CMOS General purpose I/O.

                                 PSMC1C    -- CMOS PSMC1 output C.

RC3/PSMC1D/SCK(1)/SCL(1)         CCP1        ST CMOS Capture/Compare/PWM1.
                                  RC3      TTL/ST CMOS General purpose I/O.

                                 PSMC1D    -- CMOS PSMC1 output D.

RC4/PSMC1E/SDI(1)/SDA(1)         SCK         ST           CMOS   SPI clock.
                                 SCL         I2C            OD   I2CTM clock.
                                 RC4
                                           TTL/ST         CMOS   General purpose I/O.

                                 PSMC1E    -- CMOS PSMC1 output E.

RC5/PSMC1F/SDO(1)                SDI          ST             --  SPI data input.
                                 SDA         I2C            OD   I2CTM data input/output.
                                 RC5                      CMOS
                                           TTL/ST                General purpose I/O.

                                 PSMC1F    -- CMOS PSMC1 output F.

RC6/PSMC2A/TX(1)/CK(1)           SDO          -- CMOS SPI data output.
                                 RC6       TTL/ST CMOS General purpose I/O.

                                 PSMC2A    -- CMOS PSMC2 output A.

                                 TX        -- CMOS USART asynchronous transmit.

RC7/PSMC2B/RX(1)/DT(1)           CK          ST CMOS USART synchronous clock.
                                 RC7       TTL/ST CMOS General purpose I/O.

                                 PSMC2B    -- CMOS PSMC2 output B.

                                 RX        ST             -- USART asynchronous input.

                                 DT        ST CMOS USART synchronous data.

RE3/MCLR/VPP                     RE3       TTL/ST CMOS General purpose I/O.

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

                                 VPP       HV             -- Programming voltage.

VDD                              VDD       Power -- Positive supply.

VSS                              VSS       Power -- Ground reference.

Legend: AN = Analog input or output CMOS = CMOS compatible input or output                 OD = Open Drain
     TTL = TTL compatible input ST = Schmitt Trigger input with CMOS levels I2CTM = Schmitt Trigger input with I2C

     HV = High Voltage           XTAL = Crystal                                                 levels

Note 1: Pin functions can be assigned to one of two locations via software. See Register 13-1.

     2: All pins have Interrupt-on-change functionality.

2011 Microchip Technology Inc.                 Preliminary                                             DS41579A-page 15
PIC16(L)F1782/3

NOTES:

DS41579A-page 16  Preliminary   2011 Microchip Technology Inc.
                                                           PIC16(L)F1782/3

2.0 ENHANCED MID-RANGE CPU

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

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

2.1 Automatic Interrupt Context
         Saving

During interrupts, certain registers are automatically
saved in shadow registers and restored when returning
from the interrupt. This saves stack space and user
code. See 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 3.4 "Stack" for more details.

2.3 File Select Registers

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

2.4 Instruction Set

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

2011 Microchip Technology Inc.  Preliminary               DS41579A-page 17
PIC16(L)F1782/3

FIGURE 2-1:       CORE BLOCK DIAGRAM

15                            Configuration

                                                             15                             Data Bus                  8
                                                                   Program Counter

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

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

                              IInnssttrruuccttiioonn Rreegg  Direct Addr 7                              Indirect
                                                             8                                           Addr

                                                                                        5               12        12

                  15                                                         BFSSRR Rreegg
                         15
                                                                                                            FSR0reRgeg

                                                                                        FFSSRR1 rReegg

                                                                                                        SSTTAATTUUSSRreegg

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

                                                               Watchdog
                                                                  Timer

                                                               Brown-out
                                                                  Reset

                   Internal
                  Oscillator

                    Block

                                                             VDD VSS

DS41579A-page 18                                             Preliminary                                     2011 Microchip Technology Inc.
                                                               PIC16(L)F1782/3

3.0 MEMORY ORGANIZATION                                3.1 Program Memory Organization

These devices contain the following types of memory:   The enhanced mid-range core has a 15-bit program
                                                       counter capable of addressing 32K x 14 program
Program Memory                                       memory space. Table 3-1 shows the memory sizes
   - Configuration Words                               implemented for the PIC16(L)F1782/3 family. Accessing
   - Device ID                                         a location above these boundaries will cause a
   - User ID                                           wrap-around within the implemented memory space.
   - Flash Program Memory                              The Reset vector is at 0000h and the interrupt vector is
                                                       at 0004h (see Figures 3-1, and 3-2).
Data Memory
   - Core Registers
   - Special Function Registers
   - General Purpose RAM
   - Common RAM

The following features are associated with access and
control of program memory and data memory:

PCL and PCLATH
Stack
Indirect Addressing

TABLE 3-1: DEVICE SIZES AND ADDRESSES

Device                           Program Memory Space (Words)  Last Program Memory Address
                                                                                 07FFh
PIC16(L)F1782                    2,048                                          0FFFh
PIC16(L)F1783                    4,096

2011 Microchip Technology Inc.  Preliminary                   DS41579A-page 19
PIC16(L)F1782/3

FIGURE 3-1:       PROGRAM MEMORY MAP                  FIGURE 3-2:  PROGRAM MEMORY MAP
                  AND STACK FOR                                    AND STACK FOR
                  PIC16F1782                                       PIC16F1783

                  PC<14:0>                                                         PC<14:0>

   CALL, CALLW              15                                        CALL, CALLW            15
RETURN, RETLW                                                      RETURN, RETLW

Interrupt, RETFIE                                                  Interrupt, RETFIE

                  Stack Level 0                                    Stack Level 0
                  Stack Level 1                                    Stack Level 1

                  Stack Level 15               0000h               Stack Level 15                0000h
                   Reset Vector                                     Reset Vector

On-chip             Interrupt Vector           0004h  On-chip        Interrupt Vector            0004h
Program                   Page 0               0005h  Program              Page 0                0005h
Memory                                                Memory
                  RWolrloavpesrtotoPPaaggee00  07FFh                       Page 1                07FFh
                                               0800h               Rollover to Page 0            0800h

                                                                                                 0FFFh
                                                                                                 1000h

                  Wraps to Page 0

                  Wraps to Page 0

                  Rollover to Page 0           7FFFh               Rollover to Page 1            7FFFh

DS41579A-page 20                                      Preliminary                   2011 Microchip Technology Inc.
                                                                      PIC16(L)F1782/3

3.1.1  READING PROGRAM MEMORY AS                           EXAMPLE 3-2:    ACCESSING PROGRAM
       DATA                                                                MEMORY VIA FSR

There are two methods of accessing constants in pro-       constants
gram memory. The first method is to use tables of
RETLW instructions. The second method is to set an         retlw DATA0           ;Index0 data
FSR to point to the program memory.
                                                           retlw DATA1           ;Index1 data

                                                           retlw DATA2

                                                           retlw DATA3

3.1.1.1 RETLW Instruction                                  my_function

The RETLW instruction can be used to provide access        ;... LOTS OF CODE...
to tables of constants. The recommended way to create
such a table is shown in Example 3-1.                      movlw LOW constants

                                                           movwf FSR1L

                                                           movlw HIGH constants

                                                           movwf FSR1H

EXAMPLE 3-1:         RETLW INSTRUCTION                     moviw 0[INDF1]

constants                   ;Add Index in W to            ;THE PROGRAM MEMORY IS IN W
        BRW                  ;program counter to
                             ;select data
        RETLW DATA0          ;Index0 data
        RETLW DATA1          ;Index1 data
        RETLW DATA2
        RETLW DATA3

my_function

;... LOTS OF CODE...

MOVLW                DATA_INDEX

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.

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

2011 Microchip Technology Inc.  Preliminary                                            DS41579A-page 21
PIC16(L)F1782/3                                          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-3):                                            registers are listed below in Table 3-2. For for detailed
                                                         information, see Table 3-6.
12 core registers
20 Special Function Registers (SFR)                    TABLE 3-2: CORE REGISTERS
Up to 80 bytes of General Purpose RAM (GPR)
16 bytes of common RAM                                  Addresses    BANKx

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

DS41579A-page 22  Preliminary                             2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

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

REGISTER 3-1: STATUS: STATUS REGISTER

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

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

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

2011 Microchip Technology Inc.                        Preliminary                         DS41579A-page 23
PIC16(L)F1782/3                                            FIGURE 3-3:        BANKED MEMORY
                                                                              PARTITIONING
3.2.2 SPECIAL FUNCTION REGISTER
                                                           7-bit Bank Offset  Memory Region
The Special Function Registers are registers used by
the application to control the desired operation of        00h
peripheral functions in the device. The Special Function                   Core Registers
Registers occupy the 20 bytes after the core registers of                      (12 bytes)
every data memory bank (addresses x0Ch/x8Ch
through x1Fh/x9Fh). The registers associated with the      0Bh
operation of the peripherals are described in the          0Ch
appropriate peripheral chapter of this data sheet.
                                                                   Special Function Registers
3.2.3 GENERAL PURPOSE RAM                                               (20 bytes maximum)

There are up to 80 bytes of GPR in each data memory        1Fh
bank. The Special Function Registers occupy the 20
bytes after the core registers of every data memory        20h
bank (addresses x0Ch/x8Ch through x1Fh/x9Fh).
                                                                              General Purpose RAM
3.2.3.1 Linear Access to GPR                                                   (80 bytes maximum)

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

3.2.4 COMMON RAM

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

                                                           6Fh

                                                           70h

                                                                           Common RAM
                                                                              (16 bytes)

                                                           7Fh

                                                           3.2.5 DEVICE MEMORY MAPS

                                                           The memory maps for PIC16(L)F1782/3 are as shown
                                                           in Table 3-3.

DS41579A-page 24  Preliminary                                                  2011 Microchip Technology Inc.
2011 Microchip Technology Inc.  TABLE 3-3: PIC16(L)F1782/3 MEMORY MAP (BANKS 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                  380h  Core Registers
                                                                                                                                    (Table 3-2)           (Table 3-2)                                  (Table 3-2)
                                          Core Registers        Core Registers        Core Registers        Core Registers  20Bh                  28Bh                        Core Registers
                                            (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)   20Ch       WPUA       28Ch     ODCONA               (Table 3-2)              INLVLA
                                                                                                                            20Dh       WPUB       28Dh     ODCONB                                        INLVLB
                                 00Bh      PORTA          08Bh       TRISA      10Bh     LATA         18Bh   ANSELA         20Eh       WPUC       28Eh     ODCONC       30Bh  SLRCONA         38Bh       INLVLC
                                 00Ch      PORTB          08Ch       TRISB      10Ch     LATB         18Ch   ANSELB         20Fh                  28Fh                  30Ch  SLRCONB         38Ch
                                 00Dh     PORTC           08Dh       TRISC      10Dh     LATC         18Dh                  210h          --      290h          --      30Dh  SLRCONC         38Dh           --
                                 00Eh                     08Eh                  10Eh                  18Eh        --        211h       WPUE       291h          --      30Eh                  38Eh       INLVLE
                                 00Fh         --          08Fh          --      10Fh       --         18Fh        --        212h      SSPBUF      292h      CCPR1L      30Fh       --         38Fh       IOCAP
                                                                                                                            213h     SSPADD       293h     CCPR1H                                        IOCAN
                                 010h      PORTE          090h      TRISE(1)    110h       --         190h        --        214h     SSPMSK       294h   CCPR1CON       310h  --              390h       IOCAF
                                 011h       PIR1          091h        PIE1      111h  CM1CON0         191h   EEADRL         215h     SSPSTAT      295h          --                                       IOCBP
                                 012h       PIR2          092h        PIE2      112h  CM1CON1         192h   EEADRH         216h     SSPCON       296h          --      311h  --              391h       IOCBN
                                 013h         --          093h          --      113h  CM2CON0         193h   EEDATL         217h    SSPCON2       297h          --                                       IOCBF
                                 014h       PIR4          094h        PIE4      114h  CM2CON1         194h   EEDATH         218h    SSPCON3       298h          --      312h  --              392h       IOCCP
                                 015h       TMR0          095h                  115h                  195h   EECON1         219h                  299h      CCPR2L                                       IOCCN
                                 016h                     096h  OPTION_REG      116h   CMOUT          196h   EECON2         21Ah          --      29Ah     CCPR2H       313h  --              393h       IOCCF
                                 017h      TMR1L          097h       PCON       117h  BORCON          197h  VREGCON         21Bh          --      29Bh   CCPR2CON
                                 018h      TMR1H          098h                  118h  FVRCON          198h                  21Ch          --      29Ch          --      314h  --              394h           --
                                 019h      T1CON          099h     WDTCON       119h  DACCON0         199h        --        21Dh          --      29Dh          --                                           --
                                 01Ah     T1GCON          09Ah    OSCTUNE       11Ah  DACCON1         19Ah    RCREG         21Eh          --      29Eh          --      315h  --              395h           --
                                 01Bh       TMR2          09Bh     OSCCON       11Bh                  19Bh    TXREG         21Fh          --      29Fh          --                                       IOCEP
                                 01Ch                     09Ch    OSCSTAT       11Ch       --         19Ch    SPBRG         220h          --      2A0h          --      316h  --              396h       IOCEN
                                 01Dh        PR2          09Dh     ADRESL       11Dh       --         19Dh   SPBRGH                       --                                                             IOCEF
                                 01Eh      T2CON          09Eh     ADRESH       11Eh       --         19Eh    RCSTA         26Fh                  2EFh      General     317h  --              397h
                                                                   ADCON0              APFCON                 TXSTA         270h      General     2F0h      Purpose                                 Unimplemented
                                 01Fh         --          09Fh     ADCON1       11Fh  CM3CON0         19Fh                            Purpose               Register    318h  --              398h    Read as `0'
                                 020h         --          0A0h                  120h                  1A0h  BAUDCON         27Fh      Register    2FFh    80 Bytes(1)
                                                                   ADCON2             CM3CON1                                       80 Bytes(1)                         319h  --              399h      Accesses
                                              --                                                                                                           Accesses                                    70h 7Fh
Preliminary                                                                                                                          Accesses              70h 7Fh    31Ah  --              39Ah
                                                                                                                                     70h 7Fh
                                                                                                                                                                        31Bh  --              39Bh

                                                                                                                                                                        31Ch  --              39Ch

                                                                                                                                                                        31Dh  --              39Dh

                                                                                                                                                                        31Eh  --              39Eh

                                                                                                                                                                        31Fh  --              39Fh

                                                                                                                                                                        320h General Purpose 3A0h

                                                                 General               General               General                                                          Register
                                                                 Purpose               Purpose               Purpose                                                          32 Bytes(1)
                                                                 Register       13Fh   Register              Register                                                   33Fh
                                                                80 Bytes        140h  80 Bytes              80 Bytes(1)
                                 06Fh     General         0EFh                                        1EFh                                                              340h  Unimplemented   3EFh                  PIC16(L)F1782/3
                                 070h     Purpose         0F0h  Accesses        16Fh  Accesses        1F0h  Accesses                                                    36Fh    Read as `0'
                                          Register              70h 7Fh       170h  70h 7Fh             70h 7Fh
                                 07Fh     96 Bytes        0FFh                                        1FFh                                                              370h                  3F0h
                                                                                17Fh
                                                                                                                                                                              Accesses
                                                                                                                                                                              70h 7Fh

                                                                                                                                                                        37Fh                  3FFh

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

                                 Note 1: PIC16(L)F1783 only. PIC16(L)F1782 unimplemented, read as `0'.

DS41579A-page 25
DS41579A-page 26                 TABLE 3-3: PIC16(L)F1782/3 MEMORY MAP (CONTINUED)                                                                                                                                  PIC16(L)F1782/3

                                 400h        BANK 8       480h     BANK 9       500h    BANK 10       580h    BANK 11       600h    BANK 12       680h    BANK 13       700h    BANK 14       780h    BANK 15
                                 40Bh     Core Registers  48Bh  Core Registers                        58Bh  Core Registers  60Bh  Core Registers  68Bh  Core Registers  70Bh  Core Registers  78Bh  Core Registers
                                 40Ch                     48Ch                  50Bh  Core Registers  58Ch                  60Ch                  68Ch                  70Ch                  78Ch
                                             (Table 3-2)           (Table 3-2)  50Ch     (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)
                                 46Fh                     4EFh                                        5EFh                  66Fh                  6EFh                  76Fh                  7EFh
                                 470h     Unimplemented   4F0h  Unimplemented   510h  Unimplemented   5F0h  Unimplemented   670h  Unimplemented   6F0h  Unimplemented   770h  Unimplemented   7F0h  Unimplemented
                                 47Fh       Read as `0'   4FFh    Read as `0'   511h     Read as `0'  5FFh    Read as `0'   67Fh    Read as `0'   6FFh    Read as `0'   77Fh    Read as `0'   7FFh    Read as `0'
                                                                                512h
                                          Common RAM            Common RAM      513h     OPA1CON            Common RAM            Common RAM            Common RAM            Common RAM            Common RAM
                                             (Accesses             (Accesses    514h           --              (Accesses             (Accesses             (Accesses             (Accesses             (Accesses
                                             70h 7Fh)            70h 7Fh)                                  70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)
                                                                                519h     OPA2CON
                                                                                51Ah  Unimplemented
                                                                                51Bh
                                                                                        Read as `0'
                                                                                56Fh
                                                                                570h     CLKRCON
                                                                                      Unimplemented
                                                                                57Fh
                                                                                         Read as `0'

                                                                                      Common RAM
                                                                                         (Accesses
                                                                                         70h 7Fh)

Preliminary                                 BANK 16               BANK 17               BANK 18               BANK 19               BANK 20             BANK 21               BANK 22               BANK 23
                                          Core Registers
                                 800h                     880h  Core Registers  900h  Core Registers  980h  Core Registers  A00h  Core Registers  A80h  Core Registers  B00h  Core Registers  B80h  Core Registers
                                 80Bh       (Table 3-2)   88Bh     (Table 3-2)  90Bh     (Table 3-2)  98Bh     (Table 3-2)  A0Bh     (Table 3-2)  A8Bh     (Table 3-2)  B0Bh     (Table 3-2)  B8Bh     (Table 3-2)
                                 80Ch                     88Ch                  90Ch                  98Ch                  A0Ch                  A8Ch                  B0Ch                  B8Ch
                                          See Table 3-4         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented
                                 86Fh                     8EFh    Read as `0'   96Fh    Read as `0'   9EFh    Read as `0'   A6Fh    Read as `0'   AEFh    Read as `0'   B6Fh    Read as `0'   BEFh    Read as `0'
                                 870h     Common RAM      8F0h                  970h                  9F0h                  A70h                  AF0h                  B70h                  BF0h
                                             (Accesses          Common RAM            Common RAM            Common RAM            Common RAM            Common RAM            Common RAM            Common RAM
                                 87Fh       70h 7Fh)    8FFh     (Accesses    97Fh     (Accesses    9FFh     (Accesses    A7Fh     (Accesses    AFFh     (Accesses    B7Fh     (Accesses    BFFh     (Accesses
                                                                   70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)

2011 Microchip Technology Inc.  C00h       BANK 24       C80h    BANK 25       D00h    BANK 26       D80h    BANK 27       E00h    BANK 28       E80h    BANK 29       F00h    BANK 30       F80h    BANK 31
                                 C0Bh                     C8Bh                  D0Bh                  D8Bh                  E0Bh                  E8Bh                  F0Bh                  F8Bh  Core Registers
                                 C0Ch     Core Registers  C8Ch  Core Registers  D0Ch  Core Registers  D8Ch  Core Registers  E0Ch  Core Registers  E8Ch  Core Registers  F0Ch  Core Registers  F8Ch
                                             (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)           (Table 3-2)          (Table 3-2)
                                 C6Fh                     CEFh                  D6Fh                  DEFh                  E6Fh                  EEFh                  F6Fh                  FEFh
                                 C70h     Unimplemented   CF0h  Unimplemented   D70h  Unimplemented   DF0h  Unimplemented   E70h  Unimplemented   EF0h  Unimplemented   F70h  Unimplemented   FF0h  See Table 3-5
                                            Read as `0'           Read as `0'           Read as `0'           Read as `0'           Read as `0'           Read as `0'           Read as `0'
                                 C7Fh                     CFFh                  D7Fh                  DFFh                  E7Fh                  EFFh                  F7Fh                  FFFh  Common RAM
                                          Common RAM            Common RAM            Common RAM            Common RAM            Common RAM            Common RAM            Common RAM               (Accesses
                                             (Accesses             (Accesses             (Accesses             (Accesses             (Accesses             (Accesses             (Accesses            70h 7Fh)
                                             70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)            70h 7Fh)

                                 Legend:  = Unimplemented data memory locations, read as `0'
                                                                       PIC16(L)F1782/3

TABLE 3-4: PIC16(L)F1782/3 MEMORY                             TABLE 3-5: PIC16(L)F1782/3 MEMORY
                     MAP (BANK 16 CONTINUED)                                       MAP (BANK 31 CONTINUED)

811h      BANK 16    831h          BANK 16                    F8Ch        BANK 31
812h                 832h
813h     PSMC1CON    833h          PSMC2CON                   FE3h     Unimplemented
814h      PSMC1MDL   834h          PSMC2MDL                   FE4h        Read as `0'
815h     PSMC1SYNC   835h         PSMC2SYNC                   FE5h
816h      PSMC1CLK   836h          PSMC2CLK                   FE6h     STATUS_SHAD
817h      PSMC1OEN   837h          PSMC2OEN                   FE7h      WREG_SHAD
818h      PSMC1POL   838h          PSMC2POL                   FE8h
819h     PSMC1BLNK   839h         PSMC2BLNK                   FE9h       BSR_SHAD
81Ah     PSMC1REBS   83Ah         PSMC2REBS                   FEAh     PCLATH_SHAD
81Bh     PSMC1FEBS   83Bh         PSMC2FEBS                   FEBh      FSR0L_SHAD
81Ch      PSMC1PHS   83Ch          PSMC2PHS                   FECh     FSR0H_SHAD
81Dh      PSMC1DCS   83Dh          PSMC2DCS                   FEDh      FSR1L_SHAD
81Eh      PSMC1PRS   83Eh          PSMC2PRS                   FEEh     FSR1H_SHAD
81Fh     PSMC1ASDC   83Fh         PSMC2ASDC                   FEFh
820h     PSMC1ASDD   840h         PSMC2ASDD                                     --
821h     PSMC1ASDS   841h         PSMC2ASDS
822h      PSMC1INT   842h          PSMC2INT                                STKPTR
823h      PSMC1PHL   843h          PSMC2PHL                                   TOSL
824h      PSMC1PHH   844h          PSMC2PHH                                  TOSH
825h      PSMC1DCL   845h          PSMC2DCL
826h      PSMC1DCH   846h          PSMC2DCH
827h      PSMC1PRL   847h          PSMC2PRL
828h      PSMC1PRH   848h          PSMC2PRH
829h     PSMC1TMRL   849h         PSMC2TMRL
82Ah     PSMC1TMRH   84Ah        PSMC2TMRH
82Bh      PSMC1DBR   84Bh          PSMC2DBR
82Ch      PSMC1DBF   84Ch          PSMC2DBF
82Dh     PSMC1BLKR   84Dh         PSMC2BLKR
82Eh     PSMC1BLKF   84Eh         PSMC2BLKF
82Fh      PSMC1FFA   84Fh          PSMC1FFA
830h     PSMC1STR0   840h         PSMC2STR0
         PSMC1STR1                PSMC2STR1
                     86Fh
                 --              Unimplemented

                                   Read as `0'

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

2011 Microchip Technology Inc.                 Preliminary                            DS41579A-page 27
PIC16(L)F1782/3

3.2.6         CORE FUNCTION REGISTERS
              SUMMARY

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

TABLE 3-6: 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      --     --         --     BSR4                BSR3   BSR2         BSR1         BSR0 ---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'.

DS41579A-page 28                           Preliminary                                           2011 Microchip Technology Inc.
                                                                            PIC16(L)F1782/3

TABLE 3-7: SPECIAL FUNCTION REGISTER SUMMARY

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

  Bank 0      PORTA Data Latch when written: PORTA pins when read                                                                 xxxx xxxx uuuu uuuu
00Ch PORTA    PORTB Data Latch when written: PORTB pins when read
00Dh PORTB    PORTC Data Latch when written: PORTC pins when read                                                                 xxxx xxxx uuuu uuuu
00Eh PORTC    Unimplemented
00Fh --                                                                                                                           xxxx xxxx uuuu uuuu

                                                                                                                                  --         --

010h PORTE           --           --           --    --              RE3                      --      --                    --    ---- x--- ---- u---
011h PIR1       TMR1GIF          ADIF        RCIF   TXIF           SSP1IF                  CCP1IF  TMR2IF                TMR1IF
012h PIR2                        C2IF        C1IF   EEIF           BCL1IF                                                CCP2IF   0000 0000 0000 0000
013h --            OSFIF                                                                      --     C3IF
              Unimplemented                                                                                                       0000 0-00 0000 0-00

                                                                                                                                  --         --

014h PIR4     --                 --     PSMC2TIF PSMC1TIF          --                      --      PSMC2SIF              PSMC1SIF --00 --00 --00 --00
015h TMR0
016h TMR1L    Timer0 Module Register                                                                    --                        xxxx xxxx uuuu uuuu
017h TMR1H                                                                                          T1GSS1
018h T1CON    Holding Register for the Least Significant Byte of the 16-bit TMR1 Register                                         xxxx xxxx uuuu uuuu
019h T1GCON
              Holding Register for the Most Significant Byte of the 16-bit TMR1 Register                                          xxxx xxxx uuuu uuuu
                                                                                                                                  0000 00-0 uuuu uu-u
              TMR1CS1 TMR1CS0 T1CKPS1 T1CKPS0 T1OSCEN T1SYNC                                                             TMR1ON   0000 0x00 uuuu uxuu
                                                                                                                         T1GSS0
              TMR1GE T1GPOL                  T1GTM  T1GSPM         T1GGO/                  T1GVAL
                                                                    DONE

016h TMR2     Holding Register for the Least Significant Byte of the 16-bit TMR2 Register                                         xxxx xxxx uuuu uuuu
                                                                                                                                  xxxx xxxx uuuu uuuu
017h PR2      Holding Register for the Most Significant Byte of the 16-bit TMR2 Register                                          -000 0000 -000 0000

018h T2CON    --                             T2OUTPS<3:0>                                  TMR2ON  T2CKPS<1:0>

01Dh          Unimplemented                                                                                                       --         --
  to --

01Fh

  Bank 1      PORTA Data Direction Register                                                                                       1111 1111 1111 1111
08Ch TRISA
08Dh TRISB    PORTB Data Direction Register                                                                                       1111 1111 1111 1111
08Eh TRISC
08Fh --       PORTC Data Direction Register                                                                                       1111 1111 1111 1111
090h TRISE
091h PIE1     Unimplemented                                                                                                       --         --
092h PIE2
093h --       --                 --          --      --              --(2)                     --      --                    --   ---- 1--- ---- 1---
                                                    TXIE           SSP1IE                  CCP1IE  TMR2IE                TMR1IE
              TMR1GIE            ADIE        RCIE   EEIE           BCL1IE                                                CCP2IE   0000 0000 0000 0000
                                                                                               --    C3IE
              OSFIE              C2IE        C1IE                                                                                 0000 0-00 0000 0-00

              Unimplemented                                                                                                       --         --

094h PIE4     --                 --     PSMC2TIE PSMC1TIE          --                      --      PSMC2SIE              PSMC2SIE --00 --00 --00 --00

095h OPTION_REG WPUEN            INTEDG TMR0CS      TMR0SE         PSA                     PS2     PS1                   PS0      1111 1111 1111 1111

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

097h WDTCON   --                 --     WDTPS4      WDTPS3         WDTPS2 WDTPS1 WDTPS0                                  SWDTEN --01 0110 --01 0110

098h OSCTUNE  --                 --          TUN5   TUN4           TUN3                    TUN2    TUN1                  TUN0 --00 0000 --00 0000

099h OSCCON   SPLLEN             IRCF3       IRCF2  IRCF1          IRCF0                   --      SCS1                  SCS0 0011 1-00 0011 1-00

09Ah OSCSTAT  T1OSCR             PLLR        OSTS   HFIOFR         HFIOFL                  MFIOFR  LFIOFR                HFIOFS 00q0 --00 qqqq --0q

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

09Ch ADRESH   A/D Result Register High                                                                                            xxxx xxxx uuuu uuuu
                                                                                                                                  -000 0000 -000 0000
09Dh ADCON0   --                 CHS4        CHS3   CHS2           CHS1                    CHS0    GO/DONE                 ADON   0000 -000 0000 -000
                                                                                                                         ADPREF0  000- -000 000- -000
09Eh ADCON1   ADFM               ADCS2       ADCS1  ADCS0          --                      ADNREF ADPREF1
                                                                                                                          CHSN0
09Fh ADCON2   TRIGSEL3 TRIGSEL2 TRIGSEL1 TRIGSEL0                  CHSN3                   CHSN2   CHSN1

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

2011 Microchip Technology Inc.                     Preliminary                                                          DS41579A-page 29
PIC16(L)F1782/3

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

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

Bank 2

10Ch LATA           PORTA Data Latch                                                                                            xxxx xxxx uuuu uuuu
10Dh LATB           PORTB Data Latch                                                                                            xxxx xxxx uuuu uuuu

10Eh LATC           PORTC Data Latch                                                                                            xxxx xxxx uuuu uuuu
10Fh --             Unimplemented
                                                                                                                                --         --

110h --             Unimplemented                                                                                               --         --

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

112h CM1CON1        C1INTP         C1INTN                C1PCH<2:0>                         C1NCH<2:0>                          0000 0000 0000 0000

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

114h CM2CON1        C2INTP         C2INTN                C2PCH<2:0>                         C2NCH<2:0>                          0000 0000 0000 0000

115h CMOUT          --                --          --            --            --     MC3OUT MC2OUT MC1OUT ---- -000 ---- -000

116h BORCON         SBOREN         BORFS          --            --            --     --          --                      BORRDY 1x-- ---q uu-- ---u

117h FVRCON         FVREN          FVRRDY         TSEN   TSRNG           CDAFVR1 CDAFVR0 ADFVR1 ADFVR0 0q00 0000 0q00 0000

118h DACCON0        DACEN             ---        DACOE1  DACOE2               DACPSS<1:0>        ---                     DACNSS 0-00 00-0 0-00 00-0

119h DACCON1                                                    DACR<7:0>                                                       0000 0000 0000 0000

11Ah                Unimplemented                                                                                               --         --
  to --

11Ch

11Dh APFCON         C2OUTSEL CC1PSEL SDOSEL              SCKSEL          SDISEL      TXSEL       RXSEL CCP2SEL 0000 0000 0000 0000

11Eh CM3CON0        C3ON           C3OUT          C3OE   C3POL                --     C3SP        C3HYS                   C3SYNC 0000 -100 0000 -100

11Fh CM3CON1        C3INTP         C3INTN                C3PCH<2:0>                         C3NCH<2:0>                          0000 0000 0000 0000

  Bank 3            ANSA7             --          ANSA5  ANSA4           ANSA3       ANSA2       ANSA1                   ANSA0 1-11 1111 1-11 1111
18Ch ANSELA

18Dh ANSELB         --                --          ANSB5  ANSB4           ANSB3       ANSB2       ANSB1                   ANSB0 --11 1111 --11 1111
18Eh
                    Unimplemented                                                                                               --         --
  to --
190h

191h EEADRL         EEPROM / Program Memory Address Register Low Byte                                                           0000 0000 0000 0000
192h EEADRH                                                                                                                     1000 0000 1000 0000
                    --(2)   EEPROM / Program Memory Address Register High Byte

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

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

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

196h EECON2         EEPROM / Program Memory Control Register 2                                                                  0000 0000 0000 0000

197h VREGCON        --                --          --            --            --     --          VREGPM<1:0>                    ---- --00 ---- --00

198h --             Unimplemented                                                                                               --         --

199h RCREG          USART Receive Data Register                                                                                 0000 0000 0000 0000

19Ah TXREG          USART Transmit Data Register                                                                                0000 0000 0000 0000
19Bh SPBRG                                                                                                                      0000 0000 0000 0000
                                                                    BRG<7:0>

19Ch SPBRGH                                                     BRG<15:8>                                                       0000 0000 0000 0000
19Dh RCSTA                                                                                                                      0000 0000 0000 0000
                    SPEN           RX9            SREN   CREN            ADDEN       FERR        OERR                    RX9D

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, read as `0', r = reserved.
              Shaded locations are unimplemented, read as `0'.
Note 1:       These registers can be addressed from any bank.
          2:  Unimplemented, read as `1'.

DS41579A-page 30                                         Preliminary                         2011 Microchip Technology Inc.
                                                                                PIC16(L)F1782/3

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

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

  Bank 4      WPUA7              WPUA6      WPUA5   WPUA4               WPUA3   WPUA2  WPUA1                             WPUA0   1111 1111 1111 1111
20Ch WPUA                                                                                                                WPUB0
                                                                                                                         WPUC0
20Dh WPUB     WPUB7              WPUB6      WPUB5   WPUB4               WPUB3   WPUB2  WPUB1                                     1111 1111 1111 1111
                                                                                                                             --
20Eh WPUC     WPUC7              WPUC6      WPUC5   WPUC4               WPUC3   WPUC2  WPUC1                                     1111 1111 1111 1111
                                                                                                                            BF
20Fh --       Unimplemented                                                                                                SEN   --         --
                                                                                                                          DHEN
210h WPUE     --                 --         --             --           WPUE3   --         --                                    ---- 1--- ---- 1---

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

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

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

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

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

216h SSPCON2  GCEN               ACKSTAT ACKDT      ACKEN               RCEN    PEN    RSEN                                      0000 0000 0000 0000

217h SSPCON3  ACKTIM             PCIE       SCIE    BOEN                SDAHT   SBCDE  AHEN                                      0000 0000 0000 0000
218h
              Unimplemented                                                                                                      --         --
  ----
21Fh

  Bank 5      Open Drain Control for PORTA                                                                                       0000 0000 0000 0000
28Ch ODCONA

28Dh ODCONB   Open Drain Control for PORTB                                                                                       0000 0000 0000 0000

28Eh ODCONC   Open Drain Control for PORTC                                                                                       0000 0000 0000 0000
28Fh --       Unimplemented
                                                                                                                                 --         --

290h --       Unimplemented                                                                                                      --         --

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

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

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

294h          Unimplemented                                                                                                      --         --
----

297h

298h CCPR2L   Capture/Compare/PWM Register 2 (LSB)                                                                               xxxx xxxx uuuu uuuu
                                                                                                                                 xxxx xxxx uuuu uuuu
299h CCPR2H   Capture/Compare/PWM Register 2 (MSB)                                                                               0000 0000 0000 0000

29Ah CCP2CON      P2M<1:0>                      DC2B<1:0>                       CCP2M<3:0>

29Bh          Unimplemented                                                                                                      --         --
  ----

29Fh

  Bank 6      Slew Rate Control for PORTA                                                                                        0000 0000 0000 0000
30Ch SLRCONA                                                                                                                     0000 0000 0000 0000
                                                                                                                                 0000 0000 0000 0000
30Dh SLRCONB Slew Rate Control for PORTB

30Eh SLRCONC Slew Rate Control for PORTC

30Fh          Unimplemented                                                                                                      --         --
  ----

31Fh

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

2011 Microchip Technology Inc.                     Preliminary                                                          DS41579A-page 31
PIC16(L)F1782/3

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

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

  Bank 7            Input Type Control for PORTA                                                                                0000 0000 0000 0000
38Ch INLVLA

38Dh INLVLB         Input Type Control for PORTB                                                                                0000 0000 0000 0000

38Eh INLVLC         Input Type Control for PORTC                                                                                1111 1111 1111 1111

38Fh --             Unimplemented                                                                                               --         --

390h INLVLE         --             --             --     --     INLVLE3      --     --                                   --     ---- 1--- ---- 1---

391h IOCAP                                               IOCAP<7:0>                                                             0000 0000 0000 0000

392h IOCAN                                               IOCAN<7:0>                                                             0000 0000 0000 0000

393h IOCAF                                               IOCAF<7:0>                                                             0000 0000 0000 0000

394h IOCBP                                               IOCBP<7:0>                                                             0000 0000 0000 0000

395h IOCBN                                               IOCBN<7:0>                                                             0000 0000 0000 0000

396h IOCBF                                               IOCBF<7:0>                                                             0000 0000 0000 0000

397h IOCCP                                               IOCCP<7:0>                                                             0000 0000 0000 0000

398h IOCCN                                               IOCCN<7:0>                                                             0000 0000 0000 0000

399h IOCCF                                               IOCCF<7:0>                                                             0000 0000 0000 0000

39Ah                Unimplemented                                                                                               --         --
  ----

39Ch

39Dh IOCEP          --             --             --     --     IOCEP3       --     --                                   --     ---- 0--- ---- 0---
                                                                                                                                ---- 0--- ---- 0---
39Eh IOCEN          --             --             --     --     IOCEN3       --     --                                   --     ---- 0--- ---- 0---

39Fh IOCEF          --             --             --     --     IOCEF3       --     --                                   --

  Bank 8-9          Unimplemented                                                                                               --         --

40Ch
  or

41Fh
and --
48Ch
  or
49Fh

  Bank 10           Unimplemented                                                                                               --         --
50Ch

  ----
510h

511h OPA1CON        OPA1EN OPA1SP                 --     --           --     --     OPA1PCH<1:0>                                00-- --00 00-- --00

512h --             Unimplemented                                                                                               --         --

513h OPA2CON        OPA2EN OPA2SP                 --     --           --     --     OPA2PCH<1:0>                                00-- --00 00-- --00

514h --             Unimplemented                                                                                               --         --
  --

519h

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

51Bh                Unimplemented                                                                                               --         --
  ----

51Fh

  Bank 11-15        Unimplemented                                                                                               --         --

x0Ch
  or

x8Ch
  to --

x6Fh
  or

xEFh

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

DS41579A-page 32                                         Preliminary                 2011 Microchip Technology Inc.
                                                                          PIC16(L)F1782/3

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

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

Bank 16

80Ch            Unimplemented                                                                                                     --         --

  ----
810h

811h PSMC1CON PSMC1EN PSMC1LD PSMC1DBFE PSMC1DBRE                         P1MODE<3:0>                                             0000 0000 0000 0000

812h PSMC1MDL P1MDLEN P1MDLPOL P1MDLBIT               --                  P1MSRC<3:0>                                             000- 0000 000- 0000

813h PSMC1SYNC  --               --           --      --           --     --      P1SYNC<1:0>                                     ---- --00 ---- --00

814h PSMC1CLK   --               --           P1CPRE<1:0>          --     --      P1CSRC<1:0>                                     --00 --00 --00 --00

815h PSMC1OEN   --               --           P1OEF   P1OEE    P1OED      P1OEC   P1OEB                                  P1OEA    --00 0000 --00 0000

816h PSMC1POL   --               P1INPOL P1POLF       P1POLE   P1POLD     P1POLC  P1POLB                                 P1POLA   -000 0000 -000 0000

817h PSMC1BLNK  --               --           P1FEBM<1:0>          --     --      P1REBM<1:0>                                     --00 --00 --00 --00

818h PSMCIREBS P1REBIN           --           --      --       P1REBSC3 P1REBSC2 P1REBSC1                                --       0--- 000- 0000 000-

819h PSMCIFEBS P1FEBIN           --           --      --       P1FEBSC3 P1FEBSC2 P1FEBSC1                                --       0--- 000- 0000 000-

81Ah PSMC1PHS   P1PHSIN          --           --      --       P1PHSC3 P1PHSC2 P1PHSC1 P1PHST                                     0--- 0000 0--- 0000

81Bh PSMC1DCS   P1DCSIN          --           --      --       P1DCSC3 P1DCSC2 P1DCSC1 P1DCST                                     0--- 0000 0--- 0000

81Ch PSMC1PRS   P1PRSIN          --           --      --       P1PRSC3 P1PRSC2 P1PRSC1 P1PRST                                     0--- 0000 0--- 0000

81Dh PSMC1ASDC P1ASE P1ASDEN P1ARSEN                  --           --     --      --                                     P1ASDOV  000- ---0 000- ---0

81Eh PSMC1ASDL  --               --           P1ASDLF P1ASDLE P1ASDLD P1ASDLC P1ASDLB P1ASDLA                                     --00 0000 --00 0000

81Fh PSMC1ASDS P1ASDSIN          --           --      --       P1ASDSC3 P1ASDSC2 P1ASDSC1                                --       0--- 000- 0--- 000-

820h PSMC1INT   P1TOVIE P1TPHIE P1TDCIE               P1TPRIE  P1TOVIF P1TPHIF P1TDCIF P1TPRIF                                    0000 0000 0000 0000

821h PSMC1PHL Phase Low Count                                                                                                     0000 0000 0000 0000

822h PSMC1PHH Phase High Count                                                                                                    0000 0000 0000 0000

823h PSMC1DCL Duty Cycle Low Count                                                                                                0000 0000 0000 0000

824h PSMC1DCH Duty Cycle High Count                                                                                               0000 0000 0000 0000

825h PSMC1PRL Period Low Count                                                                                                    0000 0000 0000 0000

826h PSMC1PRH Period High Count                                                                                                   0000 0000 0000 0000

827h PSMC1TMRL Time base Low Counter                                                                                              0000 0001 0000 0001

828h PSMC1TMRH Time base High Counter                                                                                             0000 0000 0000 0000

829h PSMC1DBR rising Edge Dead-band Counter                                                                                       0000 0000 0000 0000

82Ah PSMC1DBF Falling Edge Dead-band Counter                                                                                      0000 0000 0000 0000

82Bh PSMC1BLKR rising Edge Blanking Counter                                                                                       0000 0000 0000 0000

82Ch PSMC1BLKF Falling Edge Blanking Counter                                                                                      0000 0000 0000 0000

82Dh PSMC1FFA   --               --           --      --                  Fractional Frequency Adjust Register                    ---- 0000 ---- 0000

82Eh PSMC1STR0  --               --           P1STRF  P1STRE   P1STRD P1STRC P1STRB P1STRA                                        --00 0001 --00 0001

82Fh PSMC1STR1 P1SYNC            --           --      --           --     --      P1LSMEN P1HSMEN                                 0--- --00 0--- --00

830h --         Unimplemented                                                                                                     --         --

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

2011 Microchip Technology Inc.                       Preliminary                                                        DS41579A-page 33
PIC16(L)F1782/3

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

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

Bank 16 (Continued)

831h PSMC2CON PSMC2EN PSMC2LD PSMC2DBFE PSMC2DBRE                        P2MODE<3:0>                                              0000 0000 0000 0000
                                                                                                                                  000- 0000 000- 0000
832h PSMC2MDL P2MDLEN P2MDLPOL P2MDLBIT              --                  P2MSRC<3:0>                                              ---- --00 ---- --00
                                                                                                                                  --00 --00 --00 --00
833h PSMC2SYNC       --             --        --     --              --  --     P2SYNC<1:0>                                       ---- --00 ---- --00
                                                                     --                                                           -0-- --00 -0-- --00
834h PSMC2CLK        --             --        P2CPRE<1:0>            --  --     P2CSRC<1:0>                                       --00 --00 --00 --00
                                                                     --                                                           0--- 000- 0000 000-
835h PSMC2OEN        --             --        --     --              --  --     P2OEB                                    P2OEA    0--- 000- 0000 000-
                                                               P2REBSC3                                                           0--- 0000 0--- 0000
836h PSMC2POL        --             P2INPOL   --     --        P2FEBSC3  --     P2POLB                                   P2POLA   0--- 0000 0--- 0000
                                                               P2PHSC3                                                            0--- 0000 0--- 0000
837h PSMC2BLNK       --             --        P2FEBM<1:0>      P2DCSC3   --     P2REBM<1:0>                                       000- ---0 000- ---0
                                                               P2PRSC3                                                            --00 0000 --00 0000
838h PSMC2REBS P2REBIN              --        --     --              --  P2REBSC2 P2REBSC1                               --       0--- 000- 0--- 000-
                                                                P2ASDLD                                                           0000 0000 0000 0000
839h PSMC2FEBS P2FEBIN              --        --     --        P2ASDSC3  P2FEBSC2 P2FEBSC1                               --       0000 0000 0000 0000
                                                                P2TOVIF                                                           0000 0000 0000 0000
83Ah PSMC2PHS        P2PHSIN        --        --     --                  P2PHSC2 P2PHSC1 P2PHST                                   0000 0000 0000 0000
                                                                                                                                  0000 0000 0000 0000
83Bh PSMC2DCS P2DCSIN               --        --     --                  P2DCSC2 P2DCSC1 P2DCST                                   0000 0000 0000 0000
                                                                                                                                  0000 0000 0000 0000
83Ch PSMC2PRS        P2PRSIN        --        --     --                  P2PRSC2 P2PRSC1 P2PRST                                   0000 0001 0000 0001
                                                                                                                                  0000 0000 0000 0000
83Dh PSMC2ASDC P2ASE P2ASDEN P2ARSEN                 --                  --     --                                       P2ASDOV  0000 0000 0000 0000
                                                                                                                                  0000 0000 0000 0000
83Eh PSMC2ASDL       --             --        P2ASDLF P2ASDLE            P2ASDLC P2ASDLB P2ASDLA                                  0000 0000 0000 0000
                                                                                                                                  0000 0000 0000 0000
83Fh PSMC2ASDS P2ASDSIN             --        --     --                  P2ASDSC2 P2ASDSC1                               --       ---- 0000 ---- 0000
                                                                                                                                  ---- --01 ---- --01
840h PSMC2INT        P2TOVIE P2TPHIE P2TDCIE         P2TPRIE             P2TPHIF P2TDCIF P2TPRIF                                  0--- --00 0--- --00

841h PSMC2PHL Phase Low Count

842h PSMC2PHH Phase High Count

843h PSMC2DCL Duty Cycle Low Count

844h PSMC2DCH Duty Cycle High Count

845h PSMC2PRL Period Low Count

846h PSMC2PRH Period High Count

847h PSMC2TMRL Time base Low Counter

848h PSMC2TMRH Time base High Counter

849h PSMC2DBR rising Edge Dead-band Counter

84Ah PSMC2DBF Falling Edge Dead-band Counter

84Bh PSMC2BLKR rising Edge Blanking Counter

84Ch PSMC2BLKF Falling Edge Blanking Counter

84Dh PSMC2FFA        --             --        --     --                  Fractional Frequency Adjust Register

84Eh PSMC2STR0       --             --        --     --           --     --     P2STRB P2STRA

84Fh PSMC2STR1 P2SYNC               --        --     --           --     --     P2LSMEN P2HSMEN

850h                 Unimplemented                                                                                                --         --
  ----

86Fh

  Bank 17-30         Unimplemented                                                                                                --         --

x0Ch
  or

x8Ch
  to --

x1Fh
  or

x9Fh

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

DS41579A-page 34                                     Preliminary                 2011 Microchip Technology Inc.
                                                                          PIC16(L)F1782/3

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

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

Bank 31

F8Ch           Unimplemented                                                                                                    --         --

  to --
FE3h

FE4h STATUS_   --                --     --     --                  --       Z      DC                                    C      ---- -xxx ---- -uuu

SHAD

FE5h WREG_SHAD Working Register Shadow                                                                                          xxxx xxxx uuuu uuuu
                                                                                                                                ---x xxxx ---u uuuu
FE6h BSR_SHAD  --                --     --     Bank Select Register Shadow                                                      -xxx xxxx uuuu uuuu

FE7h PCLATH_   --     Program Counter Latch High Register Shadow
         SHAD

FE8h FSR0L_SHAD Indirect Data Memory Address 0 Low Pointer Shadow                                                               xxxx xxxx uuuu uuuu
                                                                                                                                xxxx xxxx uuuu uuuu
FE9h FSR0H_    Indirect Data Memory Address 0 High Pointer Shadow
         SHAD

FEAh FSR1L_SHAD Indirect Data Memory Address 1 Low Pointer Shadow                                                               xxxx xxxx uuuu uuuu
                                                                                                                                xxxx xxxx uuuu uuuu
FEBh FSR1H_    Indirect Data Memory Address 1 High Pointer Shadow
         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, read as `0', r = reserved.
              Shaded locations are unimplemented, read as `0'.
Note 1:       These registers can be addressed from any bank.
          2:  Unimplemented, read as `1'.

2011 Microchip Technology Inc.                Preliminary                                                               DS41579A-page 35
PIC16(L)F1782/3

3.3 PCL and PCLATH                                                   be exercised if the table location crosses a PCL memory
                                                                     boundary (each 256-byte block). Refer to Application
The Program Counter (PC) is 15 bits wide. The low byte               Note AN556, "Implementing a Table Read" (DS00556).
comes from the PCL register, which is a readable and
writable register. The high byte (PC<14:8>) is not directly          3.3.3 COMPUTED FUNCTION CALLS
readable or writable and comes from PCLATH. On any
Reset, the PC is cleared. Figure 3-4 shows the five                  A computed function CALL allows programs to maintain
situations for the loading of the PC.                                tables of functions and provide another way to execute
                                                                     state machines or look-up tables. When performing a
FIGURE 3-4:                  LOADING OF PC IN                        table read using a computed function CALL, care
                             DIFFERENT SITUATIONS                    should be exercised if the table location crosses a PCL
                                                                     memory boundary (each 256-byte block).
      14                PCH                PCL  0  Instruction with
PC                                                      PCL as       If using the CALL instruction, the PCH<2:0> and PCL
                                                                     registers are loaded with the operand of the CALL
                                                   Destination       instruction. PCH<6:3> is loaded with PCLATH<6:3>.

        6               7    0             8                         The CALLW instruction enables computed calls by com-
                                                                     bining PCLATH and W to form the destination address.
PCLATH                          ALU Result                           A computed CALLW is accomplished by loading the W
                                                                     register with the desired address and executing CALLW.
      14                PCH                PCL  0                    The PCL register is loaded with the value of W and
PC                                                                   PCH is loaded with PCLATH.
                                                   GOTO, CALL
                                                                     3.3.4 BRANCHING
                    64       0 11
PCLATH                           OPCODE <10:0>                       The branching instructions add an offset to the PC.
                                                                     This allows relocatable code and code that crosses
      14                PCH     PCL             0  CALLW             page boundaries. There are two forms of branching,
PC                                                                   BRW and BRA. The PC will have incremented to fetch
                                                                     the next instruction in both cases. When using either
        6               7    0             8                         branching instruction, a PCL memory boundary may be
                                            W                        crossed.
PCLATH
                                                                     If using BRW, load the W register with the desired
      14                PCH     PCL             0                    unsigned address and execute BRW. The entire PC will
PC                                                                   be loaded with the address PC + 1 + W.
                                                   BRW
                                                                     If using BRA, the entire PC will be loaded with PC + 1 +,
                                   15                                the signed value of the operand of the BRA instruction.
                             PC + W <8:0>

      14                PCH                PCL  0
PC
                                                   BRA

                                       15
                           PC + OPCODE <8:0>

3.3.1 MODIFYING PCL

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

3.3.2 COMPUTED GOTO

A computed GOTO is accomplished by adding an offset to
the program counter (ADDWF PCL). When performing a
table read using a computed GOTO method, care should

DS41579A-page 36                                          Preliminary   2011 Microchip Technology Inc.
                                                                  PIC16(L)F1782/3

3.4 Stack                                                         3.4.1 ACCESSING THE STACK

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

FIGURE 3-5:  ACCESSING THE STACK EXAMPLE 1

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

2011 Microchip Technology Inc.        Preliminary                               DS41579A-page 37
PIC16(L)F1782/3

FIGURE 3-6:       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                           STKPTR = 0x00
                  0x08
                  0x07
                  0x06
                  0x05
                  0x04
                  0x03
                  0x02
                  0x01
                  0x00

FIGURE 3-7:       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           STKPTR = 0x06
                  0x09  Return Address
                  0x08
                  0x07
                  0x06
                  0x05
                  0x04
                  0x03
                  0x02
                  0x01
                  0x00

DS41579A-page 38        Preliminary               2011 Microchip Technology Inc.
                                                             PIC16(L)F1782/3

FIGURE 3-8:  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        STKPTR = 0x10
                                 0x06  Return Address
                                 0x05  Return Address
                                 0x04  Return Address
                                 0x03  Return Address
                                 0x02  Return Address
                                 0x01  Return Address
                                 0x00  Return Address

3.4.2 OVERFLOW/UNDERFLOW RESET

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

3.5 Indirect Addressing

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

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

Traditional Data Memory
Linear Data Memory
Program Flash Memory

2011 Microchip Technology Inc.        Preliminary           DS41579A-page 39
PIC16(L)F1782/3

FIGURE 3-9:       INDIRECT ADDRESSING
                                                        0x0000
                                                                    0x0000

                                                                 Traditional
                                                                Data Memory

                           0x0FFF                                0x0FFF
                                                                Reserved
                           0x1000
                           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.

DS41579A-page 40           Preliminary                                         2011 Microchip Technology Inc.
                                                                      PIC16(L)F1782/3

3.5.1 TRADITIONAL DATA MEMORY

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

FIGURE 3-10:  TRADITIONAL DATA MEMORY MAP

Direct Addressing                                                     Indirect Addressing

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

                                                            0 000

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

                                 0x7F                              Bank 31
                                         Bank 0 Bank 1 Bank 2

2011 Microchip Technology Inc.  Preliminary                                               DS41579A-page 41
PIC16(L)F1782/3

3.5.2 LINEAR DATA MEMORY                                    3.5.3 PROGRAM FLASH MEMORY

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

FIGURE 3-11:      LINEAR DATA MEMORY                        FIGURE 3-12:     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
                              0x0A0                                                  Flash
                              Bank 1                                                 Memory
                              0x0EF
                              0x120                                                  (low 8
                                                                                     bits)
                              Bank 2
                              0x16F

                                    0xF20                                     0xFFFF 0x7FFF
                                   Bank 30

                      0x29AF 0xF6F

DS41579A-page 42                      Preliminary                             2011 Microchip Technology Inc.
                                                       PIC16(L)F1782/3

4.0 DEVICE CONFIGURATION

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

4.1 Configuration Words

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

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

2011 Microchip Technology Inc.  Preliminary           DS41579A-page 43
PIC16(L)F1782/3

REGISTER 4-1:         CONFIGURATION WORD 1

                              R/P-1  R/P-1          R/P-1  R/P-1  R/P-1                    R/P-1
                             FCMEN   IESO       CLKOUTEN                                   CPD
                          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 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
           11 = BOR enabled
           10 = BOR enabled during operation and disabled in Sleep
           01 = BOR controlled by SBOREN bit of the BORCON register
           00 = BOR disabled

           CPD: Data Code Protection bit(1)
           1 = Data memory code protection is disabled
           0 = Data memory code protection is enabled

           CP: Code Protection bit
           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

                     WPUE3 bit.

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

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

DS41579A-page 44                     Preliminary                   2011 Microchip Technology Inc.
                                                PIC16(L)F1782/3

REGISTER 4-1: CONFIGURATION WORD 1 (CONTINUED)

bit 2-0  FOSC<2:0>: Oscillator Selection bits
         000 = LP oscillator: Low-power crystal on RA6/OSC2/CLKO pin and RA7/OSC1/CLKI
         001 = XT oscillator: Crystal/resonator on RA6/OSC2/CLKO pin and RA7/OSC1/CLKI
         010 = HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKO pin and RA7/OSC1/CLKI
         011 = EXTRC oscillator: RC on RA7/OSC1/CLKIN
         100 = INTOSC oscillator: I/O function on RA7/OSC1/CLKI
         101 = ECL: External Clock, Low-Power mode: CLKI on RA7/OSC1/CLKI
         110 = ECM: External Clock, Medium-Power mode: CLKI on RA7/OSC1/CLKI
         111 = ECH: External Clock, High-Power mode: CLKI on RA7/OSC1/CLKI

Note 1: The entire data EEPROM will be erased when the code protection is turned off during an erase.

2011 Microchip Technology Inc.  Preliminary    DS41579A-page 45
PIC16(L)F1782/3

REGISTER 4-2:         CONFIGURATION WORD 2

                                 R/P-1   R/P-1           R/P-1  R/P-1                        R/P-1  R/P-1
                                  LVP   DEBUG         LPBOREN   BORV                       STVREN   PLLEN
                           bit 13
                                                          U-1    U-1                                         bit 8
                                                           --     --
       U-1            U-1  U-1                   U-1                                       R/P-1    R/P-1
        --
bit 7                 --   VCAPEN       Reserved                                                    WRT<1:0>

                                                                                                              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)
            1 = Low-voltage programming enabled
bit 12      0 = High-voltage on MCLR must be used for programming

bit 11      DEBUG: In-Circuit Debugger Mode bit
            1 = In-Circuit Debugger disabled, ICSPCLK and ICSPDAT are general purpose I/O pins
bit 10      0 = In-Circuit Debugger enabled, ICSPCLK and ICSPDAT are dedicated to the debugger

bit 9       LPBOREN: Low-Power BOR Enable bit
            1 = Low-Power Brown-out Reset is disabled
bit 8       0 = Low-Power Brown-out Reset is enabled

bit 7-6     BORV: Brown-out Reset Voltage Selection bit
bit 5       1 = Brown-out Reset voltage set to 1.9V (LF device typical) or 2.3V (F device typical)
            0 = Brown-out Reset voltage set to 2.7V (typical)
bit 4
bit 3-2     STVREN: Stack Overflow/Underflow Reset Enable bit
bit 1-0     1 = Stack Overflow or Underflow will cause a Reset
            0 = Stack Overflow or Underflow will not cause a Reset

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

            Unimplemented: Read as `1'

            VCAPEN: Voltage Regulator Capacitor Enable bit(2)
            1 = VCAP functionality is disabled on RA6
            0 = VCAP functionality is enabled on RA6 (VDDCORE is connected to the pad)

            Reserved: Read as `1'(2)

            Unimplemented: Read as `1'

            WRT<1:0>: Flash Memory Self-Write Protection bits
            4 kW Flash memory (PIC16(L)F1782 only):

                  11 = Write protection off
                  10 = 000h to 1FFh write-protected, 200h to 7FFh may be modified by EECON control
                  01 = 000h to 3FFh write-protected, 400h to 7FFh may be modified by EECON control
                  00 = 000h to 7FFh write-protected, no addresses may be modified by EECON control
            8 kW Flash memory (PIC16(L)F1783 only):
                  11 = Write protection off
                  10 = 000h to 1FFh write-protected, 200h to FFFh may be modified by EECON control
                  01 = 000h to 7FFh write-protected, 800h to FFFh may be modified by EECON control
                  00 = 000h to FFFh write-protected, no addresses may be modified by EECON control

Note 1: The LVP bit cannot be programmed to `0' when Programming mode is entered via LVP.
         2: Not implemented on PIC16LF1782/3.

DS41579A-page 46                                 Preliminary            2011 Microchip Technology Inc.
                                                          PIC16(L)F1782/3

4.2 Code Protection

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

4.2.1 PROGRAM MEMORY PROTECTION

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

4.3 Write Protection

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

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

4.4 User ID

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

2011 Microchip Technology Inc.  Preliminary              DS41579A-page 47
PIC16(L)F1782/3

4.5 Device ID and Revision ID

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

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

REGISTER 4-3: DEVICEID: DEVICE ID REGISTER

                                   R             R           R                R             R                    R

                                                                    DEV<8:3>

                           bit 13                                                                                   bit 8

         R            R            R             R           R                R             R                    R

            DEV<2:0>                                                REV<4:0>

bit 7                                                                                                               bit 0

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

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

                                      DEVICEID<13:0> Values

                   Device             DEV<8:0>            REV<4:0>

            PIC16F1782             10 1010 000            x xxxx
            PIC16LF1782            10 1010 101            x xxxx
            PIC16F1783             10 1010 001            x xxxx
            PIC16LF1783            10 1010 110            x xxxx

bit 4-0     REV<4:0>: Revision ID bits
            These bits are used to identify the revision (see Table under DEV<8:0> above).

DS41579A-page 48                                 Preliminary                                 2011 Microchip Technology Inc.
5.0 RESETS                                                         PIC16(L)F1782/3

There are multiple ways to reset this device:                A simplified block diagram of the On-Chip Reset Circuit
                                                             is shown in Figure 5-1.
Power-on Reset (POR)
Brown-out Reset (BOR)
Ultra Low-Power Brown-out Reset (ULPBOR)
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.

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

Programming Mode Exit
  RESET Instruction

       Stack Stack Overflow/Underflow Reset
      Pointer

MCLR                       External Reset
                             MCLRE

                  Sleep
               WDT
             Time-out

              Power-on                                                  Device
                 Reset                                                  Reset

VDD
              Brown-out
                 Reset

             LPBOR
              Reset

                                  BOR                         PWRT
                                 Enable                       64 ms

                                                       Zero  PWRTEN

                                             LFINTOSC

2011 Microchip Technology Inc.              Preliminary                DS41579A-page 49
PIC16(L)F1782/3

5.1 Power-on Reset (POR)                                 5.2 Brown-Out Reset (BOR)

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

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

TABLE 5-1: BOR OPERATING MODES

BOREN<1:0>        SBOREN    Device Mode                  BOR Mode    Device Operation    Device Operation
                                                                   upon release of POR  upon wake- up from

                                                                                                  Sleep

11                X         X                            Active    Waits for BOR ready(1)

                            Awake                        Active    Waits for BOR ready

10                X         Sleep                        Disabled

                         1                       Active            Begins immediately
01                          X                                      Begins immediately

                         0                     Disabled

00                X         X                            Disabled  Begins immediately

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

5.2.1 BOR IS ALWAYS ON                                   5.2.3 BOR CONTROLLED BY SOFTWARE

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

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

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

DS41579A-page 50                   Preliminary                      2011 Microchip Technology Inc.
                                                                                PIC16(L)F1782/3

FIGURE 5-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'.

REGISTER 5-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 Word 1  01:
bit 6        SBOREN is read/write, but has no effect on the BOR.
             If BOREN <1:0> in Configuration Word 1 = 01:
bit 5-1      1 = BOR Enabled
bit 0        0 = BOR Disabled

             BORFS: Brown-out Reset Fast Start bit(1)
             If BOREN<1:0> = 11 (Always on) or BOREN<1:0> = 00 (Always off)
             BORFS is Read/Write, but has no effect.

             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

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

2011 Microchip Technology Inc.                        Preliminary                         DS41579A-page 51
PIC16(L)F1782/3

5.3 Low-Power Brown-Out Reset                             5.5 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 5-1 to see how the BOR interacts with other        changed to indicate the WDT Reset. See Section 11.0
modules.                                                  "Watchdog Timer" for more information.

The LPBOR is used to monitor the external VDD pin.        5.6 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 5-4
The same bit is set for both the BOR and the LPBOR.       for default conditions after a RESET instruction has
Refer to Register 5-2.                                    occurred.

5.3.1 ENABLING LPBOR                                      5.7 Stack Overflow/Underflow Reset

The LPBOR is controlled by the LPBOREN bit of             The device can reset when the Stack Overflows or
Configuration Word 2. 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 Word
5.3.1.1 LPBOR Module Output                               2. See Section 5.7 "Stack 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  5.8 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.

5.4 MCLR                                                  5.9 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 Word 1 and the LVP bit of      allow VDD to stabilize before allowing the device to start
Configuration Word 2 (Table 5-2).                         running.

TABLE 5-2:        MCLR CONFIGURATION                      The Power-up Timer is controlled by the PWRTE bit of
      MCLRE                                               Configuration Word 1.
           0      LVP  MCLR
           1                                              5.10 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. Oscillator start-up timer runs to completion (if
5.4.1 MCLR ENABLED
                                                                required for oscillator source).
When MCLR is enabled and the pin is held low, the         3. MCLR must be released (if enabled).
device is held in Reset. The MCLR pin is connected to
VDD through an internal weak pull-up.                     The total time-out will vary based on oscillator configu-
                                                          ration and Power-up Timer configuration. See
The device has a noise filter in the MCLR Reset path.     Section 6.0 "Oscillator Module (With Fail-Safe
The filter will detect and ignore small pulses.           Clock Monitor)" for more information.

   Note: A Reset does not drive the MCLR pin low.         The Power-up Timer and oscillator start-up timer run
                                                          independently of MCLR Reset. If MCLR is kept low
5.4.2 MCLR DISABLED                                       long enough, the Power-up Timer and oscillator
                                                          start-up timer will expire. Upon bringing MCLR high, the
When MCLR is disabled, the pin functions as a general     device will begin execution immediately (see
purpose input and the internal weak pull-up is under      Figure 5-3). This is useful for testing purposes or to
software control. See Section 13.5 "PORTE Regis-          synchronize more than one device operating in parallel.
ters" for more information.

DS41579A-page 52                      Preliminary          2011 Microchip Technology Inc.
                                                         PIC16(L)F1782/3

FIGURE 5-3:  RESET START-UP SEQUENCE

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

                          Oscillator Modes

         External Crystal
Oscillator Start-Up Timer

                   Oscillator
                         FOSC

     Internal Oscillator
                  Oscillator
                        FOSC

   External Clock (EC)
                      CLKIN

                        FOSC

2011 Microchip Technology Inc.             Preliminary                DS41579A-page 53
PIC16(L)F1782/3

5.11 Determining the Cause of a Reset

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

TABLE 5-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 5-4: RESET CONDITION FOR SPECIAL REGISTERS(2)

                  Condition                                Program    STATUS      PCON
                                                           Counter    Register   Register

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

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

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

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

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

Brown-out Reset                                            0000h      ---1 1uuu  00-1 11u0

Interrupt Wake-up from Sleep                               PC + 1(1)  ---1 0uuu  uu-u uuuu

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

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

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

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

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

DS41579A-page 54                       Preliminary                     2011 Microchip Technology Inc.
5.12 Power Control (PCON) Register                             PIC16(L)F1782/3

The Power Control (PCON) register contains flag bits     The PCON register bits are shown in Register 5-2.
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)

REGISTER 5-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        -m/n = Value at POR and BOR/Value at all other Resets
                                                         q = Value depends on condition
u = Bit is unchanged             x = Bit is unknown

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

bit 7             STKOVF: Stack Overflow Flag bit

                  1 = A Stack Overflow occurred
                  0 = A Stack Overflow has not occurred or set to `0' by firmware

bit 6             STKUNF: Stack Underflow Flag bit

                  1 = A Stack Underflow occurred
                  0 = A Stack Underflow has not occurred or set to `0' 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 to `1' by firmware
                  0 = A Watchdog Timer Reset has occurred (set to `0' in hardware when a Watchdog Timer Reset)

bit 3             RMCLR: MCLR Reset Flag bit

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

bit 2             RI: RESET Instruction Flag bit

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

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)

2011 Microchip Technology Inc.                        Preliminary                       DS41579A-page 55
PIC16(L)F1782/3

TABLE 5-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  51

PCON    STKOVF STKUNF    --     RWDT RMCLR         RI     POR                           BOR     55

STATUS  --        --     --     TO     PD          Z      DC                            C       23

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

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

DS41579A-page 56                Preliminary                2011 Microchip Technology Inc.
6.0 OSCILLATOR MODULE (WITH                                      PIC16(L)F1782/3
         FAIL-SAFE CLOCK MONITOR)
                                                           The oscillator module can be configured in one of eight
6.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 6-1         2. ECM External Clock Medium-Power mode
illustrates a block diagram of the oscillator module.            (0.5 MHz to 4 MHz)

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

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

2011 Microchip Technology Inc.  Preliminary               DS41579A-page 57
PIC16(L)F1782/3

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

             Oscillator Timer1                                                                         Timer1 Clock Source Option
                                                                                                       for other modules
T1OSO               T1OSCEN
T1OSI              Enable                                                                      T1OSC
                    Oscillator                                                                                 01
OSC2
OSC1        External                                                                                                       Sleep
             Oscillator LP, XT, HS, RC, EC

                                                       0

                                                                                            10

                    Sleep                 1                                                                                        CPU and
                                     PRIMUX PSMCMUX
                                                                                        2  01  00                                 Peripherals

                                                             0             4 x PLL

                                                                                            00

                                                             1

                                                                         IRCF<3:0>          PLLMUX
                                                                                            Internal Oscillator
                                                               16 MHz
                                                                 8 MHz                                                  1X
                                                                 4 MHz
         Internal                                                2 MHz     1111                 SCS<1:0>
        Oscillator                                               1 MHz     0000                              PSMC 64 MHz

          Block                                                500 kHz
                                                               250 kHz
        HFPLL         16 MHz         Postscaler                125 kHz
                    (HFINTOSC)                                          MUX62.5 kHz
        500 kHz                                              31.25 kHz
        Source         500 kHz
        31 kHz      (MFINTOSC)                                   31 kHz
        Source

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

SCS FOSC<2:0>       PLLEN or         PRIMUX PSMCMUX PLLMUX
                    SPLLEN

                                  0                       1     1                   10
             =100

=00                 1                                     1     1                   01

             100    0                                     0     1                   10

                    1(1)                                  0     0                   00

00           XXX    X                                     X     1                   XX

Note 1: This selection should not be made when the PSMC is using the 64 MHz clock option.

DS41579A-page 58                                                Preliminary                      2011 Microchip Technology Inc.
                                                           PIC16(L)F1782/3

6.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 6-2:          EXTERNAL CLOCK (EC)
Internal clock sources are contained internally within                          MODE OPERATION
the oscillator module. The internal oscillator block has
two internal oscillators and a dedicated Phase-Lock        Clock from           OSC1/CLKIN
Loop (HFPLL) that are used to generate three internal      Ext. System                   PIC MCU
system clock sources: the 16 MHz High-Frequency
Internal Oscillator (HFINTOSC), 500 kHz (MFINTOSC)            FOSC/4 or I/O(1)  OSC2/CLKOUT
and the 31 kHz Low-Frequency Internal Oscillator
(LFINTOSC).                                                  Note 1: Output depends upon CLKOUTEN bit of the
                                                                             Configuration Word 1.
The system clock can be selected between external or
internal clock sources via the System Clock Select         6.2.1.2 LP, XT, HS Modes
(SCS) bits in the OSCCON register. See Section 6.3
"Clock Switching" for additional information.              The LP, XT and HS modes support the use of quartz
                                                           crystal resonators or ceramic resonators connected to
6.2.1 EXTERNAL CLOCK SOURCES                               OSC1 and OSC2 (Figure 6-3). The three modes select
                                                           a low, medium or high gain setting of the internal
An external clock source can be used as the device         inverter-amplifier to support various resonator types
system clock by performing one of the following            and speed.
actions:
                                                           LP Oscillator mode selects the lowest gain setting of the
Program the FOSC<2:0> bits in the Configuration          internal inverter-amplifier. LP mode current consumption
   Word 1 to select an external clock source that will     is the least of the three modes. This mode is designed to
   be used as the default system clock upon a              drive only 32.768 kHz tuning-fork type crystals (watch
   device Reset.                                           crystals).

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

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

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

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

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

2011 Microchip Technology Inc.  Preliminary                                    DS41579A-page 59
PIC16(L)F1782/3

FIGURE 6-3:          QUARTZ CRYSTAL                          FIGURE 6-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                             C2 Ceramic RS(1)    OSC2/CLKOUT
                                                                   Resonator

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

            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.                     6.2.1.3 Oscillator Start-up Timer (OST)

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

             AN949, "Making Your Oscillator Work"
             (DS00949)

DS41579A-page 60                               Preliminary                        2011 Microchip Technology Inc.
6.2.1.4 4X PLL                                                  PIC16(L)F1782/3

The oscillator module contains a 4X PLL that can be         Note 1: Quartz crystal characteristics vary
used with both external and internal clock sources to                   according to type, package and
provide a system clock source. The input frequency for                  manufacturer. The user should consult the
the 4X PLL must fall within specifications. See the PLL                 manufacturer data sheets for specifications
Clock Timing Specifications in Section 30.0                             and recommended application.
"Electrical Specifications".
                                                                   2: Always verify oscillator performance over
The 4X PLL may be enabled for use by one of two                         the VDD and temperature range that is
methods:                                                                expected for the application.

1. Program the PLLEN bit in Configuration Word 2                   3: For oscillator design assistance, reference
      to a `1'.                                                         the following Microchip Applications Notes:

2. Write the SPLLEN bit in the OSCCON register to                        AN826, "Crystal Oscillator Basics and
      a `1'. If the PLLEN bit in Configuration Word 2 is                 Crystal Selection for rfPIC and PIC
      programmed to a `1', then the value of SPLLEN                      Devices" (DS00826)
      is ignored.
                                                                         AN849, "Basic PIC Oscillator Design"
6.2.1.5 TIMER1 Oscillator                                                (DS00849)

The Timer1 Oscillator is a separate crystal oscillator                   AN943, "Practical PIC Oscillator
that is associated with the Timer1 peripheral. It is opti-               Analysis and Design" (DS00943)
mized for timekeeping operations with a 32.768 kHz
crystal connected between the T1OSO and T1OSI                            AN949, "Making Your Oscillator Work"
device pins.                                                             (DS00949)

The Timer1 Oscillator can be used as an alternate sys-                   TB097, "Interfacing a Micro Crystal
tem clock source and can be selected during run-time                     MS1V-T1K 32.768 kHz Tuning Fork
using clock switching. Refer to Section 6.3 "Clock                       Crystal to a PIC16F690/SS" (DS91097)
Switching" for more information.
                                                                         AN1288, "Design Practices for
                                                                         Low-Power External Oscillators"
                                                                         (DS01288)

FIGURE 6-5:  QUARTZ CRYSTAL
             OPERATION (TIMER1
             OSCILLATOR)

                                 PIC MCU

                                T1OSI      To Internal
                                           Logic
C1

            32.768 kHz
            Quartz
            Crystal

C2           T1OSO

2011 Microchip Technology Inc.                         Preliminary  DS41579A-page 61
PIC16(L)F1782/3

6.2.1.6 External RC Mode                                    6.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
                                                               Word 1 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
state of the CLKOUTEN bit in Configuration Word 1.          Write the SCS<1:0> bits in the OSCCON register
                                                               to switch the system clock source to the internal
Figure 6-6 shows the external RC mode connections.             oscillator during run-time. See Section 6.3
                                                               "Clock Switching"for more information.
FIGURE 6-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 state of the CLKOUTEN bit in Configuration
FOSC/4 or I/O(1)                                            Word 1.

   Recommended values: 10 k  REXT  100 k, <3V               The internal oscillator block has two independent
                                    3 k  REXT  100 k, 3-5V  oscillators and a dedicated Phase-Lock Loop, HFPLL
                                    CEXT > 20 pF, 2-5V      that can produce one of three internal system clock
                                                            sources.
   Note 1: Output depends upon CLKOUTEN bit of the
                   Configuration Word 1.                    1. The HFINTOSC (High-Frequency Internal
                                                                  Oscillator) is factory calibrated and operates at
The RC oscillator frequency is a function of the supply           16 MHz. The HFINTOSC source is generated
voltage, the resistor (REXT) and capacitor (CEXT) values          from the 500 kHz MFINTOSC source and the
and the operating temperature. Other factors affecting            dedicated Phase-Lock Loop, HFPLL. The
the oscillator frequency are:                                     frequency of the HFINTOSC can be
threshold voltage variation                                     user-adjusted via software using the OSCTUNE
component tolerances                                            register (Register 6-3).
packaging variations in capacitance
                                                            2. The MFINTOSC (Medium-Frequency Internal
The user also needs to take into account variation due            Oscillator) is factory calibrated and operates at
to tolerance of external RC components used.                      500 kHz. The frequency of the MFINTOSC can
                                                                  be user-adjusted via software using the
                                                                  OSCTUNE register (Register 6-3).

                                                            3. The LFINTOSC (Low-Frequency Internal
                                                                  Oscillator) is uncalibrated and operates at
                                                                  31 kHz.

DS41579A-page 62                        Preliminary          2011 Microchip Technology Inc.
                                                                  PIC16(L)F1782/3

6.2.2.1 HFINTOSC                                         6.2.2.3  Internal Oscillator Frequency
                                                                  Adjustment
The High-Frequency Internal Oscillator (HFINTOSC) is
a factory calibrated 16 MHz internal clock source. The   The 500 kHz internal oscillator is factory calibrated.
frequency of the HFINTOSC can be altered via             This internal oscillator can be adjusted in software by
software using the OSCTUNE register (Register 6-3).      writing to the OSCTUNE register (Register 6-3). Since
                                                         the HFINTOSC and MFINTOSC clock sources are
The output of the HFINTOSC connects to a postscaler      derived from the 500 kHz internal oscillator a change in
and multiplexer (see Figure 6-1). One of nine            the OSCTUNE register value will apply to both.
frequencies derived from the HFINTOSC can be
selected via software using the IRCF<3:0> bits of the    The default value of the OSCTUNE register is `0'. The
OSCCON register. See Section 6.2.2.7 "Internal           value is a 6-bit two's complement number. A value of
Oscillator Clock Switch Timing" for more information.    1Fh will provide an adjustment to the maximum
                                                         frequency. A value of 20h will provide an adjustment to
The HFINTOSC is enabled by:                              the minimum frequency.

Configure the IRCF<3:0> bits of the OSCCON             When the OSCTUNE register is modified, the oscillator
   register for the desired HF frequency, and            frequency will begin shifting to the new frequency. Code
                                                         execution continues during this shift. There is no
FOSC<2:0> = 100, or                                    indication that the shift has occurred.
Set the System Clock Source (SCS) bits of the
                                                         OSCTUNE does not affect the LFINTOSC frequency.
   OSCCON register to `1x'.                              Operation of features that depend on the LFINTOSC
                                                         clock source frequency, such as the Power-up Timer
The High-Frequency Internal Oscillator Ready bit         (PWRT), Watchdog Timer (WDT), Fail-Safe Clock
(HFIOFR) of the OSCSTAT register indicates when the      Monitor (FSCM) and peripherals, are not affected by the
HFINTOSC is running and can be utilized.                 change in frequency.

The High-Frequency Internal Oscillator Status Locked     6.2.2.4 LFINTOSC
bit (HFIOFL) of the OSCSTAT register indicates when
the HFINTOSC is running within 2% of its final value.    The Low-Frequency Internal Oscillator (LFINTOSC) is
                                                         an uncalibrated 31 kHz internal clock source.
The High-Frequency Internal Oscillator Status Stable
bit (HFIOFS) of the OSCSTAT register indicates when      The output of the LFINTOSC connects to a postscaler
the HFINTOSC is running within 0.5% of its final value.  and multiplexer (see Figure 6-1). Select 31 kHz, via
                                                         software, using the IRCF<3:0> bits of the OSCCON
6.2.2.2 MFINTOSC                                         register. See Section 6.2.2.7 "Internal Oscillator
                                                         Clock Switch Timing" for more information. The
The Medium-Frequency Internal Oscillator                 LFINTOSC is also the frequency for the Power-up Timer
(MFINTOSC) is a factory calibrated 500 kHz internal      (PWRT), Watchdog Timer (WDT) and Fail-Safe Clock
clock source. The frequency of the MFINTOSC can be       Monitor (FSCM).
altered via software using the OSCTUNE register
(Register 6-3).                                          The LFINTOSC is enabled by selecting 31 kHz
                                                         (IRCF<3:0> bits of the OSCCON register = 000) as the
The output of the MFINTOSC connects to a postscaler      system clock source (SCS bits of the OSCCON
and multiplexer (see Figure 6-1). One of nine            register = 1x), or when any of the following are
frequencies derived from the MFINTOSC can be             enabled:
selected via software using the IRCF<3:0> bits of the
OSCCON register. See Section 6.2.2.7 "Internal            Configure the IRCF<3:0> bits of the OSCCON
Oscillator Clock Switch Timing" for more information.       register for the desired LF frequency, and

The MFINTOSC is enabled by:                               FOSC<2:0> = 100, or

Configure the IRCF<3:0> bits of the OSCCON             Set the System Clock Source (SCS) bits of the
   register for the desired HF frequency, and               OSCCON register to `1x'

FOSC<2:0> = 100, or                                    Peripherals that use the LFINTOSC are:
Set the System Clock Source (SCS) bits of the
                                                          Power-up Timer (PWRT)
   OSCCON register to `1x'
                                                          Watchdog Timer (WDT)
The Medium Frequency Internal Oscillator Ready bit
(MFIOFR) of the OSCSTAT register indicates when the       Fail-Safe Clock Monitor (FSCM)
MFINTOSC is running and can be utilized.
                                                         The Low-Frequency Internal Oscillator Ready bit
                                                         (LFIOFR) of the OSCSTAT register indicates when the
                                                         LFINTOSC is running and can be utilized.

2011 Microchip Technology Inc.  Preliminary                      DS41579A-page 63
PIC16(L)F1782/3

6.2.2.5  Internal Oscillator Frequency                    6.2.2.6  32 MHz Internal Oscillator
         Selection                                                 Frequency Selection

The system clock speed can be selected via software       The Internal Oscillator Block can be used with the 4X
using the Internal Oscillator Frequency Select bits       PLL associated with the External Oscillator Block to
IRCF<3:0> of the OSCCON register.                         produce a 32 MHz internal system clock source. The
                                                          following settings are required to use the 32 MHz inter-
The output of the 16 MHz HFINTOSC and 31 kHz              nal clock source:
LFINTOSC connects to a postscaler and multiplexer
(see Figure 6-1). The Internal Oscillator Frequency       The FOSC bits in Configuration Word 1 must be
Select bits IRCF<3:0> of the OSCCON register select          set to use the INTOSC source as the device sys-
the frequency output of the internal oscillators. One of     tem clock (FOSC<2:0> = 100).
the following frequencies can be selected via software:
                                                          The SCS bits in the OSCCON register must be
32 MHz (requires 4X PLL)                                   cleared to use the clock determined by
16 MHz                                                     FOSC<2:0> in Configuration Word 1
8 MHz                                                      (SCS<1:0> = 00).
4 MHz
2 MHz                                                    The IRCF bits in the OSCCON register must be
1 MHz                                                      set to the 8 MHz or 16 MHz HFINTOSC set to use
500 kHz (default after Reset)                              (IRCF<3:0> = 111x).
250 kHz
125 kHz                                                 The SPLLEN bit in the OSCCON register must be
62.5 kHz                                                   set to enable the 4xPLL, or the PLLEN bit of the
31.25 kHz                                                  Configuration Word 2 must be programmed to a
31 kHz (LFINTOSC)                                          `1'.

                                                          Note:    When using the PLLEN bit of the
                                                                   Configuration Word 2, the 4xPLL cannot
         Following any Reset, the IRCF<3:0> bits                   be disabled by software and the SPLLEN
         of the OSCCON register are set to `0111'                  option will not be available.
         and the frequency selection is set to
Note:    500 kHz. The user can modify the IRCF            The 4xPLL is not available for use with the internal
         bits to select a different frequency.            oscillator when the SCS bits of the OSCCON register
                                                          are set to `1x'. The SCS bits must be set to `00' to use
                                                          the 4xPLL with the internal oscillator.

The IRCF<3:0> bits of the OSCCON register allow
duplicate selections for some frequencies. These dupli-
cate choices can offer system design trade-offs. Lower
power consumption can be obtained when changing
oscillator sources for a given frequency. Faster transi-
tion times can be obtained between frequency changes
that use the same oscillator source.

DS41579A-page 64                        Preliminary                 2011 Microchip Technology Inc.
                                                           PIC16(L)F1782/3

6.2.2.7  Internal Oscillator Clock Switch
         Timing

When switching between the HFINTOSC, MFINTOSC
and the LFINTOSC, the new oscillator may already be
shut down to save power (see Figure 6-7). If this is the
case, there is a delay after the IRCF<3:0> bits of the
OSCCON register are modified before the frequency
selection takes place. The OSCSTAT register will
reflect the current active status of the HFINTOSC,
MFINTOSC and LFINTOSC oscillators. The sequence
of a frequency selection is as follows:

1. IRCF<3:0> bits of the OSCCON register are
      modified.

2. If the new clock is shut down, a clock start-up
      delay is started.

3. Clock switch circuitry waits for a falling edge of
      the current clock.

4. The current clock is held low and the clock
      switch circuitry waits for a rising edge in the new
      clock.

5. The new clock is now active.

6. The OSCSTAT register is updated as required.

7. Clock switch is complete.

See Figure 6-7 for more details.

If the internal oscillator speed is switched between two
clocks of the same source, there is no start-up delay
before the new frequency is selected. Clock switching
time delays are shown in Table 6-1.

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

2011 Microchip Technology Inc.            Preliminary     DS41579A-page 65
PIC16(L)F1782/3

FIGURE 6-7:       INTERNAL OSCILLATOR SWITCH TIMING

HFINTOSC/ LFINTOSC (FSCM and WDT disabled)
MFINTOSC

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

LFINTOSC

IRCF <3:0>        0                  0

System Clock

HFINTOSC/ LFINTOSC (Either FSCM or WDT enabled)
MFINTOSC

HFINTOSC/                                         2-cycle Sync
MFINTOSC

LFINTOSC

IRCF <3:0>            0                           0

System Clock

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

HFINTOSC/         =0                 0
MFINTOSC
IRCF <3:0>

System Clock

DS41579A-page 66            Preliminary                          2011 Microchip Technology Inc.
                                                                   PIC16(L)F1782/3

6.3 Clock Switching                                         6.3.3 TIMER1 OSCILLATOR

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

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

6.3.1  SYSTEM CLOCK SELECT (SCS)                            6.3.4  TIMER1 OSCILLATOR READY
       BITS                                                        (T1OSCR) BIT

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

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

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

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

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

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

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

2011 Microchip Technology Inc.   Preliminary                      DS41579A-page 67
PIC16(L)F1782/3

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

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

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

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

TABLE 6-1: OSCILLATOR SWITCHING DELAYS

Switch From            Switch To          Frequency              Oscillator Delay

Sleep/POR              LFINTOSC(1)        31 kHz                 Oscillator Warm-up Delay (TWARM)
                       MFINTOSC(1)        31.25 kHz-500 kHz
Sleep/POR              HFINTOSC(1)        31.25 kHz-16 MHz       2 cycles
LFINTOSC               EC, RC(1)          DC 32 MHz            1 cycle of each
Sleep/POR                                 DC 32 MHz            1024 Clock Cycles (OST)
                       EC, RC(1)
Any clock source                          32 kHz-20 MHz          2 s (approx.)
Any clock source       Timer1 Oscillator                         1 cycle of each
Any clock source       LP, XT, HS(1)      31.25 kHz-500 kHz      1024 Clock Cycles (OST)
PLL inactive                              31.25 kHz-16 MHz       2 ms (approx.)
Note 1: PLL inactive.  MFINTOSC(1)        31 kHz
                       HFINTOSC(1)        32 kHz
                       LFINTOSC(1)        16-32 MHz

                       Timer1 Oscillator

                       PLL active

DS41579A-page 68                          Preliminary             2011 Microchip Technology Inc.
                                                               PIC16(L)F1782/3

6.4.2  TWO-SPEED START-UP                               6.4.3  CHECKING TWO-SPEED CLOCK
       SEQUENCE                                                STATUS

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

3. OST enabled to count 1024 clock cycles.

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

5. OSTS is set.

6. System clock held low until the next falling edge
      of new clock (LP, XT or HS mode).

7. System clock is switched to external clock
      source.

FIGURE 6-8:      TWO-SPEED START-UP

       INTOSC

                                 TOST

       OSC1 0 1 1022 1023

       OSC2

Program Counter  PC - N                PC                      PC + 1

System Clock

2011 Microchip Technology Inc.            Preliminary                 DS41579A-page 69
PIC16(L)F1782/3

6.5 Fail-Safe Clock Monitor                                 6.5.3 FAIL-SAFE CONDITION CLEARING

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

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

Sample Clock                         Clock                  Note:  Due to the wide range of oscillator start-up
                                   Failure                         times, the Fail-Safe circuit is not active
                                 Detected                          during oscillator start-up (i.e., after exiting
                                                                   Reset or Sleep). After an appropriate
6.5.1 FAIL-SAFE DETECTION                                          amount of time, the user should check the
                                                                   Status bits in the OSCSTAT register to
The FSCM module detects a failed oscillator by                     verify the oscillator start-up and that the
comparing the external oscillator to the FSCM sample               system clock switchover has successfully
clock. The sample clock is generated by dividing the               completed.
LFINTOSC by 64. See Figure 6-9. Inside the fail
detector block is a latch. The external clock sets the
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.

6.5.2 FAIL-SAFE OPERATION

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

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

DS41579A-page 70                 Preliminary                        2011 Microchip Technology Inc.
                                                          PIC16(L)F1782/3

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

2011 Microchip Technology Inc.        Preliminary                                          DS41579A-page 71
PIC16(L)F1782/3

6.6 Oscillator Control Registers

REGISTER 6-1: OSCCON: OSCILLATOR CONTROL REGISTER

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

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

bit 7                                                                                          bit 0

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

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

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

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

         Unimplemented: Read as `0'

         SCS<1:0>: System Clock Select bits

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

Note 1: Duplicate frequency derived from HFINTOSC.

DS41579A-page 72                                 Preliminary        2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

REGISTER 6-2: OSCSTAT: OSCILLATOR STATUS REGISTER

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

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

bit 7       T1OSCR: Timer1 Oscillator Ready bit

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

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

bit 6       PLLR 4x PLL Ready bit

            1 = 4x PLL is ready

            0 = 4x PLL is not ready

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

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

bit 4       HFIOFR: High-Frequency Internal Oscillator Ready bit

            1 = HFINTOSC is ready
            0 = HFINTOSC is not ready

bit 3       HFIOFL: High-Frequency Internal Oscillator Locked bit

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

bit 2       MFIOFR: Medium-Frequency Internal Oscillator Ready bit

            1 = MFINTOSC is ready
            0 = MFINTOSC is not ready

bit 1       LFIOFR: Low-Frequency Internal Oscillator Ready bit

            1 = LFINTOSC is ready
            0 = LFINTOSC is not ready

bit 0       HFIOFS: High-Frequency Internal Oscillator Stable bit

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

2011 Microchip Technology Inc.                        Preliminary                   DS41579A-page 73
PIC16(L)F1782/3

REGISTER 6-3: OSCTUNE: OSCILLATOR TUNING REGISTER

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

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

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

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

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

Name             Bit 7      Bit 6    Bit 5        Bit 4          Bit 3     Bit 2                  Bit 1      Bit 0     Register
                                                                                                                       on Page
OSCCON     SPLLEN                           IRCF<3:0>                      --                         SCS<1:0>
                                                                                                                           72
OSCSTAT    T1OSCR PLLR               OSTS         HFIOFR         HFIOFL    MFIOFR LFIOFR HFIOFS                            73
                                                                                                                           74
OSCTUNE           --        --                                   TUN<5:0>                                                  89
                                                                                                                           86
PIR2            OSFIF       C2IF     C1IF         EEIF           BCL1IF    --                     C3IF       CCP2IF       189

PIE2            OSFIE       C2IE     C1IE         EEIE           BCL1IE    --                     C3IE       CCP2IE

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 6-3: SUMMARY OF CONFIGURATION WORD WITH CLOCK SOURCES

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

DS41579A-page 74                                  Preliminary                                      2011 Microchip Technology Inc.
7.0 REFERENCE CLOCK MODULE                                           PIC16(L)F1782/3

The reference clock module provides the ability to send        7.1 Effects of a Reset
a divided clock to the clock output pin of the device
(CLKR). This module is available in all oscillator config-     Upon any device Reset, the reference clock module is
urations and allows the user to select a greater range         disabled. The user's firmware is responsible for
of clock submultiples to drive external devices in the         initializing the module before enabling the output. The
application. The reference clock module includes the           registers are reset to their default values.
following features:
                                                               7.2 Operation During Sleep
System clock is the source
                                                               As the reference clock module relies on the system
Available in all oscillator configurations                   clock as its source, and the system clock is disabled in
                                                               Sleep, the module does not function in Sleep, even if
Programmable clock divider                                   an external clock source or the Timer1 clock source is
                                                               configured as the system clock. The module outputs
Output enable to a port pin                                  will remain in their current state until the device exits
                                                               Sleep.
Selectable duty cycle

Slew rate control

The reference clock module is controlled by the CLKR-
CON register (Register 7-1) and is enabled when set-
ting the CLKREN bit. To output the divided clock signal
to the CLKR port pin, the CLKROE bit must be set. The
CLKRDIV<2:0> bits enable the selection of 8 different
clock divider options. The CLKRDC<1:0> bits can be
used to modify the duty cycle of the output clock(1). The
CLKRSLR bit controls slew rate limiting.

    Note 1: If the base clock rate is selected without
                a divider, the output clock will always
                have a duty cycle equal to that of the
                source clock, unless a 0% duty cycle is
                selected. If the clock divider is set to base
                clock/2, then 25% and 75% duty cycle
                accuracy will be dependent upon the
                source clock.

2011 Microchip Technology Inc.  Preliminary                   DS41579A-page 75
PIC16(L)F1782/3

7.3 Reference Clock Control Register

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

bit 2-0     CLKROE: Reference Clock Output Enable bit

            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.

DS41579A-page 76                                 Preliminary                 2011 Microchip Technology Inc.
                                                                     PIC16(L)F1782/3

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 CLKRDC1 CLKRDC0 CLKRDIV2 CLKRDIV1 CLKRDIV0
Legend: -- = unimplemented locations read as `0'. Shaded cells are not used by reference clock sources.               76

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 BOREN1 BOREN0                          CPD      44

         7:0   CP         MCLRE           PWRTE     WDTE1     WDTE0  FOSC2       FOSC1                   FOSC0

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

2011 Microchip Technology Inc.                     Preliminary                                          DS41579A-page 77
PIC16(L)F1782/3

NOTES:

DS41579A-page 78  Preliminary   2011 Microchip Technology Inc.
8.0 INTERRUPTS                                          PIC16(L)F1782/3

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

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
                                 TMR0IE
(TMR1IF) PIR1<0>
(TMR1IF) PIR1<0>                     INTF
                                     INTE
              PIRn<7>               IOCIF
              PIEn<7>              IOCIE

                                     PEIE
                                      GIE

2011 Microchip Technology Inc.  Preliminary            DS41579A-page 79
PIC16(L)F1782/3                                                   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 3 or 4 instruction cycles. For asynchronous
                                                                  interrupts, the latency is 3 to 5 instruction cycles,
GIE bit of the INTCON register                                  depending on when the interrupt occurs. See Figure 8-2
Interrupt Enable bit(s) for the specific interrupt              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 or 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.

DS41579A-page 80  Preliminary                                      2011 Microchip Technology Inc.
                                                                   PIC16(L)F1782/3

FIGURE 8-2:        INTERRUPT LATENCY

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

CLKOUT                             Interrupt Sampled
                                   during Q1
Interrupt
       GIE

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

Interrupt
      GIE

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

Interrupt
      GIE

PC           PC-1  PC              FSR ADDR        PC+1     PC+2         0004h     0005h
                                                    NOP      NOP          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

2011 Microchip Technology Inc.               Preliminary                              DS41579A-page 81
PIC16(L)F1782/3

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)      Dummy Cycle            Dummy Cycle   Inst (0004h)
Executed

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

DS41579A-page 82                                           Preliminary                 2011 Microchip Technology Inc.
                                                            PIC16(L)F1782/3

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.

2011 Microchip Technology Inc.  Preliminary                DS41579A-page 83
PIC16(L)F1782/3

8.6 Interrupt Control Registers                                Note:  Interrupt flag bits are set when an interrupt
                                                                      condition occurs, regardless of the state of
8.6.1 INTCON REGISTER                                                 its corresponding enable bit or the Global
                                                                      Enable bit, GIE, of the INTCON register.
The INTCON register is a readable and writable                        User software should ensure the
register, that contains the various enable and flag bits              appropriate interrupt flag bits are clear
for TMR0 register overflow, interrupt-on-change and                   prior to enabling an interrupt.
external INT pin interrupts.

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 Interrupt Enable bit

             1 = Enables the interrupt-on-change interrupt

             0 = Disables the interrupt-on-change interrupt

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.

DS41579A-page 84                                 Preliminary                       2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

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

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

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

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

bit 7        TMR1GIE: Timer1 Gate Interrupt Enable bit

             1 = Enables the Timer1 gate acquisition interrupt
             0 = Disables the Timer1 gate acquisition interrupt

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

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

bit 5        RCIE: USART Receive Interrupt Enable bit

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

bit 4        TXIE: USART Transmit Interrupt Enable bit

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

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

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

bit 2        CCP1IE: CCP1 Interrupt Enable bit

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

bit 1        TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

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

bit 0        TMR1IE: Timer1 Overflow Interrupt Enable bit

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

2011 Microchip Technology Inc.                        Preliminary           DS41579A-page 85
PIC16(L)F1782/3

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

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

R/W-0/0           R/W-0/0  R/W-0/0   R/W-0/0              R/W-0/0  U-0  R/W-0/0  R/W-0/0
                                                                          C3IE   CCP2IE
OSFIE             C2IE     C1IE           EEIE            BCLIE    --
                                                                                         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    EEIE: EEPROM Write Completion Interrupt Enable bit

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

bit 3    BCLIE: MSSP Bus Collision Interrupt Enable bit

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

bit 2    Unimplemented: Read as `0'

bit 1    C3IE: Comparator C3 Interrupt Enable bit

         1 = Enables the Comparator C3 Interrupt
         0 = Disables the Comparator C3 Interrupt

bit 0    CCP2IE: CCP2 Interrupt Enable bit

         1 = Enables the CCP2 interrupt
         0 = Disables the CCP2 interrupt

DS41579A-page 86                                 Preliminary             2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

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

REGISTER 8-4:         PIE4: PERIPHERAL INTERRUPT ENABLE REGISTER 4

        U-0           U-0        R/W-0/0  R/W-0/0         U-0       U-0  R/W-0/0     R/W-0/0
         --                                                                        PSMC1SIE
bit 7                --         PSMC2TIE PSMC1TIE        --        --   PSMC2SIE
                                                                                             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
         PSMC2TIE: PSMC2 Time Base Interrupt Enable bit
bit 4    1 = Enables PSMC2 time base generated interrupts
         0 = Disables PSMC2 time base generated interrupts
bit 3-2
bit 1    PSMC1TIE: PSMC1 Time Base Interrupt Enable bit
         1 = Enables PSMC1 time base generated interrupts
bit 0    0 = Disables PSMC1 time base generated interrupts

         Unimplemented: Read as `0'

         PSMC2SIE: PSMC2 Auto-Shutdown Interrupt Enable bit
         1 = Enables PSMC2 auto-shutdown interrupts
         0 = Disables PSMC2 auto-shutdown interrupts

         PSMC1SIE: PSMC1 Auto-Shutdown Interrupt Enable bit
         1 = Enables PSMC1 auto-shutdown interrupts
         0 = Disables PSMC1 auto-shutdown interrupts

2011 Microchip Technology Inc.                        Preliminary       DS41579A-page 87
PIC16(L)F1782/3

8.6.5 PIR1 REGISTER                                      Note:         Interrupt flag bits are set when an interrupt
                                                                       condition occurs, regardless of the state of
The PIR1 register contains the interrupt flag bits, as                 its corresponding enable bit or the Global
shown in Register 8-5.                                                 Enable bit, GIE, of the INTCON register.
                                                                       User software should ensure the
                                                                       appropriate interrupt flag bits are clear
                                                                       prior to enabling an interrupt.

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

    R/W-0/0       R/W-0/0  R-0/0              R-0/0      R/W-0/0       R/W-0/0  R/W-0/0  R/W-0/0
  TMR1GIF           ADIF   RCIF               TXIF        SSPIF        CCP1IF   TMR2IF   TMR1IF
bit 7
                                                                                                 bit 0

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

bit 7        TMR1GIF: Timer1 Gate Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 6        ADIF: A/D Converter Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 5        RCIF: USART Receive Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 4        TXIF: USART Transmit Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 3        SSPIF: Synchronous Serial Port (MSSP) Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 2        CCP1IF: CCP1 Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 1        TMR2IF: Timer2 to PR2 Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

bit 0        TMR1IF: Timer1 Overflow Interrupt Flag bit

             1 = Interrupt is pending
             0 = Interrupt is not pending

DS41579A-page 88                                 Preliminary                     2011 Microchip Technology Inc.
                                                                      PIC16(L)F1782/3

8.6.6 PIR2 REGISTER                                          Note:    Interrupt flag bits are set when an interrupt
                                                                      condition occurs, regardless of the state of
The PIR2 register contains the interrupt flag bits, as                its corresponding enable bit or the Global
shown in Register 8-6.                                                Enable bit, GIE, of the INTCON register.
                                                                      User software should ensure the
                                                                      appropriate interrupt flag bits are clear
                                                                      prior to enabling an interrupt.

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

R/W-0/0  R/W-0/0                 R/W-0/0  R/W-0/0            R/W-0/0  U-0  R/W-0/0  R/W-0/0
                                                                                    CCP2IF
OSFIF    C2IF                    C1IF                  EEIF  BCLIF    --   C3IF
                                                                                            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: Comparator C2 Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 5    C1IF: Comparator C1 Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 4    EEIF: EEPROM Write Completion Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 3    BCLIF: MSSP Bus Collision Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 2    Unimplemented: Read as `0'

bit 1    C3IF: Comparator C3 Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

bit 0    CCP2IF: CCP2 Interrupt Flag bit

         1 = Interrupt is pending
         0 = Interrupt is not pending

2011 Microchip Technology Inc.                        Preliminary               DS41579A-page 89
PIC16(L)F1782/3

8.6.7 PIR4 REGISTER                                     Note:  Interrupt flag bits are set when an interrupt
                                                               condition occurs, regardless of the state of
The PIR4 register contains the interrupt flag bits, as         its corresponding enable bit or the Global
shown in Register 8-6.                                         Enable bit, GIE, of the INTCON register.
                                                               User software should ensure the
                                                               appropriate interrupt flag bits are clear
                                                               prior to enabling an interrupt.

REGISTER 8-7:         PIR4: PERIPHERAL INTERRUPT REQUEST REGISTER42

        U-0           U-0  R/W-0/0  R/W-0/0             U-0    U-0   R/W-0/0     R/W-0/0
         --                                                                    PSMC1SIF
bit 7                --   PSMC2TIF PSMC1TIF            --     --    PSMC2SIF
                                                                                         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
         PSMC2TIF: PSMC2 Time Base Interrupt Flag bit
bit 4    1 = Interrupt is pending
         0 = Interrupt is not pending
bit 3-2
bit 1    PSMC1TIF: PSMC1 Time Base Interrupt Flag bit
         1 = Interrupt is pending
bit 0    0 = Interrupt is not pending

         Unimplemented: Read as `0'

         PSMC2SIF: PSMC2 Auto-shutdown Flag bit
         1 = Interrupt is pending
         0 = Interrupt is not pending

         PSMC1SIF: PSMC1 Auto-shutdown Flag bit
         1 = Interrupt is pending
         0 = Interrupt is not pending

DS41579A-page 90                                 Preliminary         2011 Microchip Technology Inc.
                                                                   PIC16(L)F1782/3

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     84

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

PIE1        TMR1GIE ADIE                RCIE    TXIE       SSP1IE CCP1IE TMR2IFE TMR1IE                        85

PIE2        OSFIE                C2IE   C1IE    EEIE       BCL1IE  --                       C3IE     CCP2IE    86

PIE4        --                   --     PSMC2TIE PSMC1TIE  --      --                       PSMC2SIE PSMC2SIE  87

PIR1        TMR1GIF ADIF                RCIF    TXIF       SSP1IF CCP1IF TMR2IF TMR1IF                         88

PIR2        OSFIF                C2IF   C1IF    EEIF       BCL1IF  --                       C3IF     CCP2IF    89

PIR4        --                   --     PSMC2TIF PSMC1TIF  --      --                       PSMC2SIF PSMC1SIF  90

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

2011 Microchip Technology Inc.                 Preliminary                                          DS41579A-page 91
PIC16(L)F1782/3

NOTES:

DS41579A-page 92  Preliminary   2011 Microchip Technology Inc.
9.0 POWER-DOWN MODE (SLEEP)                                    PIC16(L)F1782/3

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

I/O pins should not be floating                        The WDT is cleared when the device wakes up from
External circuitry sinking current from I/O pins       Sleep, regardless of the source of wake-up.
Internal circuitry sourcing current from I/O pins
Current draw from pins with internal weak pull-ups
Modules using 31 kHz LFINTOSC
Modules using Timer1 oscillator

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

Examples of internal circuitry that might be sourcing
current include modules such as the DAC and FVR
modules. See Section 19.0 "Digital-to-Analog Con-
verter (DAC) Module" and Section 15.0 "Fixed Volt-
age Reference (FVR)" for more information on these
modules.

2011 Microchip Technology Inc.  Preliminary             DS41579A-page 93
PIC16(L)F1782/3

9.1.1 WAKE-UP USING INTERRUPTS                                       If the interrupt occurs during or after the execu-
                                                                       tion of a SLEEP instruction
When global interrupts are disabled (GIE cleared) and
any interrupt source has both its interrupt enable bit                 - SLEEP instruction will be completely exe-
and interrupt flag bit set, one of the following will occur:              cuted

If the interrupt occurs before the execution of a                    - Device will immediately wake-up from Sleep
   SLEEP instruction
   - SLEEP instruction will execute as a NOP.                          - WDT and WDT prescaler will be cleared
   - WDT and WDT prescaler will not be cleared
   - TO bit of the STATUS register will not be set                     - TO bit of the STATUS register will be set
   - PD bit of the STATUS register will not be
      cleared.                                                         - PD bit of the STATUS register will be cleared.

                                                                    Even if the flag bits were checked before executing a
                                                                    SLEEP instruction, it may be possible for flag bits to
                                                                    become set before the SLEEP instruction completes. To
                                                                    determine whether a SLEEP instruction executed, test
                                                                    the PD bit. If the PD bit is set, the SLEEP instruction
                                                                    was executed as a NOP.

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

                 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1                                    Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
   OSC1(1)                                                          TOST(3)
CLKOUT(2)

Interrupt flag                                                      Interrupt Latency(4)
GIE bit
(INTCON reg.)                                         Processor in
                                                         Sleep

Instruction Flow

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

Instruction       Inst(PC - 1)
Executed

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

TABLE 9-1: SUMMARY OF REGISTERS ASSOCIATED WITH POWER-DOWN MODE

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

INTCON            GIE           PEIE    TMR0IE        INTE          IOCIE         TMR0IF  INTF   RAIF                                          84

IOCBF             IOCBF7 IOCBF6 IOCBF5 IOCBF4 IOCBF3 IOCBF2 IOCBF1 IOCBF0                                      140

IOCBN             IOCBN7 IOCBN6 IOCBN5 IOCBN4 IOCBN3 IOCBN2 IOCBN1 IOCBN0                                      139

IOCBP             IOCBP7 IOCBP6 IOCBP5 IOCBP4 IOCBP3 IOCBP2 IOCBP1 IOCBP0                                      139

PIE1              TMR1GIE ADIE          RCIE          TXIE          SSP1IE CCP1IE TMR2IFE TMR1IE                                               85

PIE2              OSFIE         C2IE    C1IE          EEIE          BCL1IE        --      C3IE   CCP2IE                                        86

PIE4              --                --  PSMC2TIE PSMC1TIE           --            --      PSMC2SIE PSMC2SIE                                    87

PIR1              TMR1GIF       ADIF    RCIF          TXIF          SSP1IF CCP1IF TMR2IF TMR1IF                                                88

PIR2              OSFIF         C2IF    C1IF          EEIF          BCL1IF        --      C3IF   CCP2IF                                        89

PIR4              --                --  PSMC2TIF PSMC1TIF           --            --      PSMC2SIF PSMC1SIF                                    90

STATUS            --                --  --            TO            PD            Z       DC     C                                             23

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

Legend: -- = unimplemented location, read as `0'. Shaded cells are not used in Power-Down mode.

DS41579A-page 94                                      Preliminary                               2011 Microchip Technology Inc.
                                                                PIC16(L)F1782/3

10.0 LOW DROPOUT (LDO)                                      charges the external capacitor. After the cap is fully
                                                            charged, the device is released from Reset. For more
         VOLTAGE REGULATOR                                  information on recommended capacitor values and the
                                                            constant current rate, refer to the LDO Regulator
The PIC16F1782/3 has an internal Low Dropout                Characteristics Table in Section 30.0 "Electrical
Regulator (LDO) which provides operation above 3.6V.        Specifications".
The LDO regulates a voltage for the internal device
logic while permitting the VDD and I/O pins to operate
at a higher voltage. There is no user enable/disable
control available for the LDO, it is always active. The
PIC16LF1782/3 operates at a maximum VDD of 3.6V
and does not incorporate an LDO.

A device I/O pin may be configured as the LDO voltage
output, identified as the VCAP pin. Although not
required, an external low-ESR capacitor may be con-
nected to the VCAP pin for additional regulator stability.

The VCAPEN bit of Configuration Word 2 determines if
which pin is assigned as the VCAP pin. Refer to
Table 10-1.

TABLE 10-1: VCAPEN SELECT BITS

VCAPEN                               Pin

         0                           RA6

         1                           No VCAP

On power-up, the external capacitor will load the LDO
voltage regulator. To prevent erroneous operation, the
device is held in Reset while a constant current source

TABLE 10-2: SUMMARY OF CONFIGURATION WORD WITH LDO

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
CONFIG2  13:8  --                --       LVP  DEBUG        --  BORV                  STVREN  PLLEN
                                                                                       WRT1   WRT0         46
Legend:  7:0   --                --  VCAPEN(1) Reserved     --  --
Note 1:
         -- = unimplemented locations read as `0'. Shaded cells are not used by LDO.
         Not implemented on PIC16LF1782/3.

2011 Microchip Technology Inc.                Preliminary                                    DS41579A-page 95
PIC16(L)F1782/3

NOTES:

DS41579A-page 96  Preliminary   2011 Microchip Technology Inc.
                                                                PIC16(L)F1782/3

11.0 WATCHDOG TIMER

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

The WDT has the following features:

Independent clock source
Multiple operating modes

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

FIGURE 11-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

2011 Microchip Technology Inc.  Preliminary                                         DS41579A-page 97
PIC16(L)F1782/3

11.1 Independent Clock Source                          11.3 Time-Out Period

The WDT derives its time base from the 31 kHz          The WDTPS bits of the WDTCON register set the
LFINTOSC internal oscillator. Time intervals in this   time-out period from 1 ms to 256 seconds (nominal).
chapter are based on a nominal interval of 1ms. See    After a Reset, the default time-out period is 2 seconds.
Section 30.0 "Electrical Specifications" for the
LFINTOSC tolerances.                                   11.4 Clearing the WDT

11.2 WDT Operating Modes                               The WDT is cleared when any of the following condi-
                                                       tions occur:
The Watchdog Timer module has four operating modes
controlled by the WDTE<1:0> bits in Configuration       Any Reset
Word 1. See Table 11-1.                                 CLRWDT instruction is executed
                                                       Device enters Sleep
11.2.1 WDT IS ALWAYS ON                                 Device wakes up from Sleep
When the WDTE bits of Configuration Word 1 are set to   Oscillator fail event
`11', the WDT is always on.                            WDT is disabled
WDT protection is active during Sleep.                  Oscillator Start-up TImer (OST) is running

11.2.2 WDT IS OFF IN SLEEP                             See Table 11-2 for more information.
When the WDTE bits of Configuration Word 1 are set to
`10', the WDT is on, except in Sleep.                  11.5 Operation During Sleep
WDT protection is not active during Sleep.
                                                       When the device enters Sleep, the WDT is cleared. If
11.2.3 WDT CONTROLLED BY SOFTWARE                      the WDT is enabled during Sleep, the WDT resumes
When the WDTE bits of Configuration Word 1 are set to  counting.
`01', the WDT is controlled by the SWDTEN bit of the
WDTCON register.                                       When the device exits Sleep, the WDT is cleared
WDT protection is unchanged by Sleep. See              again. The WDT remains clear until the OST, if
Table 11-1 for more details.                           enabled, completes. See Section 6.0 "Oscillator
                                                       Module (With Fail-Safe Clock Monitor)" for more
TABLE 11-1: WDT OPERATING MODES                        information on the OST.

WDTE<1:0>         SWDTEN  Device  WDT                  When a WDT time-out occurs while the device is in
                          Mode    Mode                 Sleep, no Reset is generated. Instead, the device
                                                       wakes up and resumes operation. The TO and PD bits
                                                       in the STATUS register are changed to indicate the
                                                       event. See Section 3.0 "Memory Organization" and
                                                       Status Register (Register 3-1) for more information.

11                X       X       Active

                          Awake Active

10                X       Sleep Disabled

                  1       X       Active

01                                Disabled

                  0

00                X       X Disabled

TABLE 11-2: WDT CLEARING CONDITIONS                                       WDT

                                              Conditions                Cleared

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

DS41579A-page 98                  Preliminary               2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

11.6 Watchdog Control Register

REGISTER 11-1: WDTCON: WATCHDOG TIMER CONTROL REGISTER

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

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

bit 7-6     Unimplemented: Read as `0'
bit 5-1
            WDTPS<4:0>: Watchdog Timer Period Select bits(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.

2011 Microchip Technology Inc.                        Preliminary           DS41579A-page 99
PIC16(L)F1782/3

TABLE 11-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               IRCF<3:0>                 --     SCS<1:0>                             72

STATUS             --  --     --     TO     PD          Z      DC                                C  23

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

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

TABLE 11-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
CONFIG   13:8 --       --     --     --     --          BOREN<1:0>        CPD
Legend:                                                                                                 44
         7:0 CP MCLRE PWRTE              WDTE<1:0>             FOSC<2:0>

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

DS41579A-page 100                    Preliminary                2011 Microchip Technology Inc.
12.0 DATA EEPROM AND FLASH                                     PIC16(L)F1782/3

         PROGRAM MEMORY                                  12.1 EEADRL and EEADRH Registers

         CONTROL                                         The EEADRH:EEADRL register pair can address up to
                                                         a maximum of 256 bytes of data EEPROM or up to a
The data EEPROM and Flash program memory are             maximum of 32K words of program memory.
readable and writable during normal operation (full VDD
range). These memories are not directly mapped in the    When selecting a program address value, the MSB of
register file space. Instead, they are indirectly        the address is written to the EEADRH register and the
addressed through the Special Function Registers         LSB is written to the EEADRL register. When selecting
(SFRs). There are six SFRs used to access these          a EEPROM address value, only the LSB of the address
memories:                                                is written to the EEADRL register.

EECON1                                                 12.1.1 EECON1 AND EECON2 REGISTERS

EECON2                                                 EECON1 is the control register for EE memory
                                                         accesses.
EEDATL
                                                         Control bit EEPGD determines if the access will be a
EEDATH                                                 program or data memory access. When clear, any
                                                         subsequent operations will operate on the EEPROM
EEADRL                                                 memory. When set, any subsequent operations will
                                                         operate on the program memory. On Reset, EEPROM is
EEADRH                                                 selected by default.

When interfacing the data memory block, EEDATL           Control bits RD and WR initiate read and write,
holds the 8-bit data for read/write, and EEADRL holds    respectively. These bits cannot be cleared, only set, in
the address of the EEDATL location being accessed.       software. They are cleared in hardware at completion
These devices have 256 bytes of data EEPROM with         of the read or write operation. The inability to clear the
an address range from 0h to 0FFh.                        WR bit in software prevents the accidental, premature
                                                         termination of a write operation.
When accessing the program memory block, the
EEDATH:EEDATL register pair forms a 2-byte word          The WREN bit, when set, will allow a write operation to
that holds the 14-bit data for read/write, and the       occur. On power-up, the WREN bit is clear. The
EEADRL and EEADRH registers form a 2-byte word           WRERR bit is set when a write operation is interrupted
that holds the 15-bit address of the program memory      by a Reset during normal operation. In these situations,
location being read.                                     following Reset, the user can check the WRERR bit
                                                         and execute the appropriate error handling routine.
The EEPROM data memory allows byte read and write.
An EEPROM byte write automatically erases the loca-      Interrupt flag bit EEIF of the PIR2 register is set when
tion and writes the new data (erase before write).       write is complete. It must be cleared in the software.

The write time is controlled by an on-chip timer. The    Reading EECON2 will read all `0's. The EECON2 reg-
write/erase voltages are generated by an on-chip         ister is used exclusively in the data EEPROM write
charge pump rated to operate over the voltage range of   sequence. To enable writes, a specific pattern must be
the device for byte or word operations.                  written to EECON2.

Depending on the setting of the Flash Program
Memory Self Write Enable bits WRT<1:0> of the
Configuration Word 2, the device may or may not be
able to write certain blocks of the program memory.
However, reads from the program memory are always
allowed.

When the device is code-protected, the device
programmer can no longer access data or program
memory. When code-protected, the CPU may continue
to read and write the data EEPROM memory and Flash
program memory.

2011 Microchip Technology Inc.  Preliminary             DS41579A-page 101
PIC16(L)F1782/3

12.2 Using the Data EEPROM                                  12.2.2  WRITING TO THE DATA EEPROM
                                                                    MEMORY
The data EEPROM is a high-endurance, byte address-
able array that has been optimized for the storage of       To write an EEPROM data location, the user must first
frequently changing information (e.g., program vari-        write the address to the EEADRL register and the data
ables or other data that are updated often). When vari-     to the EEDATL register. Then the user must follow a
ables in one section change frequently, while variables     specific sequence to initiate the write for each byte.
in another section do not change, it is possible to
exceed the total number of write cycles to the              The write will not initiate if the above sequence is not
EEPROM without exceeding the total number of write          followed exactly (write 55h to EECON2, write AAh to
cycles to a single byte. Refer to Section 30.0 "Electri-    EECON2, then set the WR bit) for each byte. Interrupts
cal Specifications". If this is the case, then a refresh    should be disabled during this code segment.
of the array must be performed. For this reason, vari-
ables that change infrequently (such as constants, IDs,     Additionally, the WREN bit in EECON1 must be set to
calibration, etc.) should be stored in Flash program        enable write. This mechanism prevents accidental
memory.                                                     writes to data EEPROM due to errant (unexpected)
                                                            code execution (i.e., lost programs). The user should
12.2.1  READING THE DATA EEPROM                             keep the WREN bit clear at all times, except when
        MEMORY                                              updating EEPROM. The WREN bit is not cleared
                                                            by hardware.

To read a data memory location, the user must write the     After a write sequence has been initiated, clearing the
address to the EEADRL register, clear the EEPGD and         WREN bit will not affect this write cycle. The WR bit will
CFGS control bits of the EECON1 register, and then          be inhibited from being set unless the WREN bit is set.
set control bit RD. The data is available at the very next
cycle, in the EEDATL register; therefore, it can be read    At the completion of the write cycle, the WR bit is
in the next instruction. EEDATL will hold this value until  cleared in hardware and the EE Write Complete
another read or until it is written to by the user (during  Interrupt Flag bit (EEIF) is set. The user can either
a write operation).                                         enable this interrupt or poll this bit. EEIF must be
                                                            cleared by software.

EXAMPLE 12-1: DATA EEPROM READ                              12.2.3  PROTECTION AGAINST SPURIOUS
                                                                    WRITE
BANKSEL EEADRL     ;
                                                            There are conditions when the user may not want to
MOVLW DATA_EE_ADDR ;                                        write to the data EEPROM memory. To protect against
                                                            spurious EEPROM writes, various mechanisms have
MOVWF EEADRL       ;Data Memory                             been built-in. On power-up, WREN is cleared. Also, the
                                                            Power-up Timer (64 ms duration) prevents EEPROM
                   ;Address to read                         write.

BCF     EECON1, CFGS ;Deselect Config space

BCF     EECON1, EEPGD;Point to DATA memory

BSF     EECON1, RD ;EE Read

MOVF EEDATL, W ;W = EEDATL                                  The write initiate sequence and the WREN bit together
                                                            help prevent an accidental write during:

Note: Data EEPROM can be read regardless of                  Brown-out
            the setting of the CPD bit.                      Power Glitch
                                                             Software Malfunction

                                                            12.2.4  DATA EEPROM OPERATION
                                                                    DURING CODE-PROTECT

                                                            Data memory can be code-protected by programming
                                                            the CPD bit in the Configuration Word 1 (Register 4-1)
                                                            to `0'.

                                                            When the data memory is code-protected, only the
                                                            CPU is able to read and write data to the data
                                                            EEPROM. It is recommended to code-protect the pro-
                                                            gram memory when code-protecting data memory.
                                                            This prevents anyone from replacing your program with
                                                            a program that will access the contents of the data
                                                            EEPROM.

DS41579A-page 102                    Preliminary                                     2011 Microchip Technology Inc.
                                                                              PIC16(L)F1782/3

EXAMPLE 12-2: DATA EEPROM WRITE

             BANKSEL  EEADRL         ;
             MOVLW    DATA_EE_ADDR   ;
             MOVWF    EEADRL         ;Data Memory Address to write
             MOVLW    DATA_EE_DATA   ;
             MOVWF    EEDATL         ;Data Memory Value to write
             BCF      EECON1, CFGS   ;Deselect Configuration space
             BCF      EECON1, EEPGD  ;Point to DATA memory
             BSF      EECON1, WREN   ;Enable writes

Required     BCF      INTCON, GIE    ;Disable INTs.
   Sequence  MOVLW    55h            ;
             MOVWF    EECON2         ;Write 55h
             MOVLW    0AAh           ;
             MOVWF    EECON2         ;Write AAh
             BSF      EECON1, WR     ;Set WR bit to begin write
             BSF      INTCON, GIE    ;Enable Interrupts
             BCF      EECON1, WREN   ;Disable writes
             BTFSC    EECON1, WR     ;Wait for write to complete
             GOTO     $-2            ;Done

FIGURE 12-1:          FLASH PROGRAM MEMORY READ CYCLE EXECUTION

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

Flash ADDR            PC             PC + 1          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)   Forced NOP    INSTR(PC + 3)  INSTR(PC + 4)
                     executed here    executed here  executed here  executed here  executed here  executed here

             RD bit

PMDATH
PMDATL
Register

2011 Microchip Technology Inc.                      Preliminary                                  DS41579A-page 103
PIC16(L)F1782/3

12.3 Flash Program Memory Overview                         12.3.1  READING THE FLASH PROGRAM
                                                                   MEMORY
It is important to understand the Flash program mem-
ory structure for erase and programming operations.        To read a program memory location, the user must:
Flash Program memory is arranged in rows. A row con-
sists of a fixed number of 14-bit program memory           1. Write the Least and Most Significant address
words. A row is the minimum block size that can be               bits to the EEADRH:EEADRL register pair.
erased by user software.
                                                           2. Clear the CFGS bit of the EECON1 register.
Flash program memory may only be written or erased
if the destination address is in a segment of memory       3. Set the EEPGD control bit of the EECON1
that is not write-protected, as defined in bits WRT<1:0>         register.
of Configuration Word 2.
                                                           4. Then, set control bit RD of the EECON1 register.
After a row has been erased, the user can reprogram
all or a portion of this row. Data to be written into the  Once the read control bit is set, the program memory
program memory row is written to 14-bit wide data write    Flash controller will use the second instruction cycle to
latches. These write latches are not directly accessible   read the data. This causes the second instruction
to the user, but may be loaded via sequential writes to    immediately following the "BSF EECON1,RD" instruction
the EEDATH:EEDATL register pair.                           to be ignored. The data is available in the very next cycle,
                                                           in the EEDATH:EEDATL register pair; therefore, it can
Note:   If the user wants to modify only a portion         be read as two bytes in the following instructions.
        of a previously programmed row, then the
        contents of the entire row must be read            EEDATH:EEDATL register pair will hold this value until
        and saved in RAM prior to the erase.               another read or until it is written to by the user.

The number of data write latches may not be equivalent     Note 1: The two instructions following a program
to the number of row locations. During programming,                    memory read are required to be NOPs.
user software may need to fill the set of write latches                This prevents the user from executing a
and initiate a programming operation multiple times in                 two-cycle instruction on the next
order to fully reprogram an erased row. For example, a                 instruction after the RD bit is set.
device with a row size of 32 words and eight write
latches will need to load the write latches with data and         2: Flash program memory can be read
initiate a programming operation four times.                           regardless of the setting of the CP bit.

The size of a program memory row and the number of
program memory write latches may vary by device.
See Table 12-1 for details.

TABLE 12-1: FLASH MEMORY
                     ORGANIZATION BY DEVICE

Device        Erase Block    Number of Write
                   (Row)    Latches/Boundary

             Size/Boundary

PIC16F1782      32 words,      32 words,
PIC16LF1782  EEADRL<4:0>    EEADRL<4:0>
PIC16F1783
PIC16LF1783      = 00000        = 00000

DS41579A-page 104           Preliminary                             2011 Microchip Technology Inc.
                                                           PIC16(L)F1782/3

EXAMPLE 12-3: FLASH PROGRAM MEMORY READ

* This code block will read 1 word of program
* memory at the memory address:

        PROG_ADDR_HI : PROG_ADDR_LO
* data will be returned in the variables;
* PROG_DATA_HI, PROG_DATA_LO

BANKSEL  EEADRL                  ; Select Bank for EEPROM registers
MOVLW    PROG_ADDR_LO            ;
MOVWF    EEADRL                  ; Store LSB of address
MOVLW    PROG_ADDR_HI            ;
MOVWL    EEADRH                  ; Store MSB of address

BCF      EECON1,CFGS             ; Do not select Configuration Space

BSF      EECON1,EEPGD            ; Select Program Memory

BCF      INTCON,GIE              ; Disable interrupts

BSF      EECON1,RD               ; Initiate read

NOP                              ; Executed (Figure 12-1)

NOP                              ; Ignored (Figure 12-1)

BSF      INTCON,GIE              ; Restore interrupts

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

2011 Microchip Technology Inc.  Preliminary                          DS41579A-page 105
PIC16(L)F1782/3

12.3.2  ERASING FLASH PROGRAM                              unlock sequence is required to load a write latch with
        MEMORY                                             data or initiate a Flash programming operation. This
                                                           unlock sequence should not be interrupted.
While executing code, program memory can only be
erased by rows. To erase a row:                            1. Set the EEPGD and WREN bits of the EECON1
                                                                 register.
1. Load the EEADRH:EEADRL register pair with
      the address of new row to be erased.                 2. Clear the CFGS bit of the EECON1 register.

2. Clear the CFGS bit of the EECON1 register.              3. Set the LWLO bit of the EECON1 register. When
                                                                 the LWLO bit of the EECON1 register is `1', the
3. Set the EEPGD, FREE, and WREN bits of the                     write sequence will only load the write latches
      EECON1 register.                                           and will not initiate the write to Flash program
                                                                 memory.
4. Write 55h, then AAh, to EECON2 (Flash
      programming unlock sequence).                        4. Load the EEADRH:EEADRL register pair with
                                                                 the address of the location to be written.
5. Set control bit WR of the EECON1 register to
      begin the erase operation.                           5. Load the EEDATH:EEDATL register pair with
                                                                 the program memory data to be written.
6. Poll the FREE bit in the EECON1 register to
      determine when the row erase has completed.          6. Write 55h, then AAh, to EECON2, then set the
                                                                 WR bit of the EECON1 register (Flash
See Example 12-4.                                                programming unlock sequence). The write latch
                                                                 is now loaded.
After the "BSF EECON1,WR" instruction, the processor
requires two cycles to set up the erase operation. The     7. Increment the EEADRH:EEADRL register pair
user must place two NOP instructions after the WR bit is         to point to the next location.
set. The processor will halt internal operations for the
typical 2 ms erase time. This is not Sleep mode as the     8. Repeat steps 5 through 7 until all but the last
clocks and peripherals will continue to run. After the           write latch has been loaded.
erase cycle, the processor will resume operation with
the third instruction after the EECON1 write instruction.  9. Clear the LWLO bit of the EECON1 register.
                                                                 When the LWLO bit of the EECON1 register is
12.3.3  WRITING TO FLASH PROGRAM                                 `0', the write sequence will initiate the write to
        MEMORY                                                   Flash program memory.

Program memory is programmed using the following           10. Load the EEDATH:EEDATL register pair with
steps:                                                           the program memory data to be written.

1. Load the starting address of the word(s) to be          11. Write 55h, then AAh, to EECON2, then set the
      programmed.                                                WR bit of the EECON1 register (Flash
                                                                 programming unlock sequence). The entire
2. Load the write latches with data.                             latch block is now written to Flash program
3. Initiate a programming operation.                             memory.
4. Repeat steps 1 through 3 until all data is written.
                                                           It is not necessary to load the entire write latch block
Before writing to program memory, the word(s) to be        with user program data. However, the entire write latch
written must be erased or previously unwritten. Pro-       block will be written to program memory.
gram memory can only be erased one row at a time. No
automatic erase occurs upon the initiation of the write.   An example of the complete write sequence for eight
                                                           words is shown in Example 12-5. The initial address is
Program memory can be written one or more words at         loaded into the EEADRH:EEADRL register pair; the
a time. The maximum number of words written at one         eight words of data are loaded using indirect addressing.
time is equal to the number of write latches. See
Figure 12-2 (block writes to program memory with 32        After the "BSF EECON1,WR" instruction, the processor
write latches) for more details. The write latches are     requires two cycles to set up the write operation. The
aligned to the address boundary defined by EEADRL          user must place two NOP instructions after the WR bit is
as shown in Table 12-1. Write operations do not cross      set. The processor will halt internal operations for the
these boundaries. At the completion of a program           typical 2 ms, only during the cycle in which the write
memory write operation, the write latches are reset to     takes place (i.e., the last word of the block write). This
contain 0x3FFF.                                            is not Sleep mode as the clocks and peripherals will
                                                           continue to run. The processor does not stall when
The following steps should be completed to load the        LWLO = 1, loading the write latches. After the write
write latches and program a block of program memory.       cycle, the processor will resume operation with the third
These steps are divided into two parts. First, all write   instruction after the EECON1 WRITE instruction.
latches are loaded with data except for the last program
memory location. Then, the last write latch is loaded
and the programming sequence is initiated. A special

DS41579A-page 106                 Preliminary               2011 Microchip Technology Inc.
                                                                  PIC16(L)F1782/3

FIGURE 12-2:          BLOCK WRITES TO FLASH PROGRAM MEMORY WITH 32 WRITE LATCHES

                                    75               07                   0

                                         EEDATH          EEDATA

                                         6                        8

             First word of block                                                 Last word of block
             to be written                                                               to be written

                      14                 14                       14                       14

EEADRL<4:0> = 00000 EEADRL<4:0> = 00001      EEADRL<4:0> = 00010      EEADRL<4:0> = 11111

             Buffer Register        Buffer Register      Buffer Register         Buffer Register

                                            Program Memory

EXAMPLE 12-4: ERASING ONE ROW OF PROGRAM MEMORY

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

             BCF      INTCON,GIE    ; Disable ints so required sequences will execute properly
             BANKSEL  EEADRL
             MOVF     ADDRL,W       ; Load lower 8 bits of erase address boundary
             MOVWF    EEADRL
             MOVF     ADDRH,W       ; Load upper 6 bits of erase address boundary
             MOVWF    EEADRH
             BSF      EECON1,EEPGD  ; Point to program memory
             BCF      EECON1,CFGS   ; Not configuration space
             BSF      EECON1,FREE   ; Specify an erase operation
             BSF      EECON1,WREN   ; Enable writes

Required     MOVLW    55h           ; Start of required sequence to initiate erase
   Sequence  MOVWF    EECON2        ; Write 55h
             MOVLW    0AAh          ;
             MOVWF    EECON2        ; Write AAh
             BSF      EECON1,WR     ; Set WR bit to begin erase
             NOP                    ; Any instructions here are ignored as processor
                                    ; halts to begin erase sequence
             NOP                    ; Processor will stop here and wait for erase complete.

             BCF                    ; after erase processor continues with 3rd instruction
             BSF
                      EECON1,WREN   ; Disable writes
                      INTCON,GIE    ; Enable interrupts

2011 Microchip Technology Inc.          Preliminary                             DS41579A-page 107
PIC16(L)F1782/3

EXAMPLE 12-5: WRITING TO FLASH PROGRAM MEMORY

; This write routine assumes the following:

; 1. The 16 bytes of data are loaded, starting at the address in DATA_ADDR

; 2. Each word of data to be written is made up of two adjacent bytes in DATA_ADDR,

; stored in little endian format

; 3. A valid starting address (the least significant bits = 000) is loaded in ADDRH:ADDRL

; 4. ADDRH and ADDRL are located in shared data memory 0x70 - 0x7F (common RAM)

;

                BCF    INTCON,GIE   ; Disable ints so required sequences will execute properly

                BANKSEL EEADRH      ; Bank 3

                MOVF   ADDRH,W      ; Load initial address

                MOVWF  EEADRH       ;

                MOVF   ADDRL,W      ;

                MOVWF  EEADRL       ;

                MOVLW  LOW DATA_ADDR ; Load initial data address

                MOVWF  FSR0L        ;

                MOVLW  HIGH DATA_ADDR ; Load initial data address

                MOVWF  FSR0H        ;

                BSF    EECON1,EEPGD ; Point to program memory

                BCF    EECON1,CFGS ; Not configuration space

                BSF    EECON1,WREN ; Enable writes

                BSF    EECON1,LWLO ; Only Load Write Latches

LOOP

                MOVIW  FSR0++       ; Load first data byte into lower

                MOVWF  EEDATL       ;

                MOVIW  FSR0++       ; Load second data byte into upper

                MOVWF  EEDATH       ;

                MOVF   EEADRL,W     ; Check if lower bits of address are '000'
                XORLW  0x07         ; Check if we're on the last of 8 addresses
                ANDLW  0x07         ;
                BTFSC  STATUS,Z     ; Exit if last of eight words,
                GOTO   START_WRITE  ;

   Required     MOVLW  55h          ; Start of required write sequence:
      Sequence  MOVWF  EECON2       ; Write 55h
                MOVLW  0AAh         ;
                MOVWF  EECON2       ; Write AAh
                BSF    EECON1,WR    ; Set WR bit to begin write
                NOP                 ; Any instructions here are ignored as processor
                                    ; halts to begin write sequence
                NOP                 ; Processor will stop here and wait for write to complete.

                                    ; After write processor continues with 3rd instruction.

                INCF   EEADRL,F     ; Still loading latches Increment address
                GOTO   LOOP         ; Write next latches

START_WRITE            EECON1,LWLO  ; No more loading latches - Actually start Flash program
             BCF                    ; memory write

   Required     MOVLW  55h          ; Start of required write sequence:
      Sequence  MOVWF  EECON2       ; Write 55h
                MOVLW  0AAh         ;
                MOVWF  EECON2       ; Write AAh
                BSF    EECON1,WR    ; Set WR bit to begin write
                NOP                 ; Any instructions here are ignored as processor
                                    ; halts to begin write sequence
                NOP                 ; Processor will stop here and wait for write complete.

                                    ; after write processor continues with 3rd instruction

                BCF    EECON1,WREN ; Disable writes

                BSF    INTCON,GIE   ; Enable interrupts

DS41579A-page 108                      Preliminary                       2011 Microchip Technology Inc.
                                                               PIC16(L)F1782/3

12.4 Modifying Flash Program Memory                           12.5 User ID, Device ID and

When modifying existing data in a program memory                       Configuration Word Access
row, and data within that row must be preserved, it must
first be read and saved in a RAM image. Program               Instead of accessing program memory or EEPROM
memory is modified using the following steps:                 data memory, the User ID's, Device ID/Revision ID and
                                                              Configuration Words can be accessed when CFGS = 1
1. Load the starting address of the row to be mod-            in the EECON1 register. This is the region that would
      ified.                                                  be pointed to by PC<15> = 1, but not all addresses are
                                                              accessible. Different access may exist for reads and
2. Read the existing data from the row into a RAM             writes. Refer to Table 12-2.
      image.
                                                              When read access is initiated on an address outside
3. Modify the RAM image to contain the new data               the parameters listed in Table 12-2, the EEDATH:EED-
      to be written into program memory.                      ATL register pair is cleared.

4. Load the starting address of the row to be rewrit-
      ten.

5. Erase the program memory row.

6. Load the write latches with data from the RAM
      image.

7. Initiate a programming operation.

8. Repeat steps 6 and 7 as many times as required
      to reprogram the erased row.

TABLE 12-2: USER ID, DEVICE ID AND CONFIGURATION WORD ACCESS (CFGS = 1)

       Address                   Function                     Read Access    Write Access

     8000h-8003h                 User IDs                      Yes           Yes

       8006h                     Device ID/Revision ID         Yes           No

     8007h-8008h                 Configuration Words 1 and 2   Yes           No

EXAMPLE 12-3: CONFIGURATION WORD AND DEVICE ID ACCESS

* This code block will read 1 word of program memory at the memory address:
* PROG_ADDR_LO (must be 00h-08h) data will be returned in the variables;
* PROG_DATA_HI, PROG_DATA_LO

BANKSEL  EEADRL                  ; Select correct Bank
MOVLW    PROG_ADDR_LO            ;
MOVWF    EEADRL                  ; Store LSB of address
CLRF     EEADRH                  ; Clear MSB of address

BSF      EECON1,CFGS             ; Select Configuration Space

BCF      INTCON,GIE              ; Disable interrupts

BSF      EECON1,RD               ; Initiate read

NOP                              ; Executed (See Figure 12-1)

NOP                              ; Ignored (See Figure 12-1)

BSF      INTCON,GIE              ; Restore interrupts

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

2011 Microchip Technology Inc.  Preliminary                                 DS41579A-page 109
PIC16(L)F1782/3

12.6 Write Verify

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

EXAMPLE 12-6: EEPROM WRITE VERIFY

BANKSEL EEDATL     ;

MOVF EEDATL, W ;EEDATL not changed

                   ;from previous write

BSF  EECON1, RD ;YES, Read the

                   ;value written

XORWF EEDATL, W ;

BTFSS STATUS, Z ;Is data the same

GOTO WRITE_ERR ;No, handle error

:                  ;Yes, continue

DS41579A-page 110                        Preliminary      2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

12.7 EEPROM and Flash Control Registers

REGISTER 12-1: EEDATL: EEPROM 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                                                                                            bit 0
                                                       EEDAT<7: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      EEDAT<7:0>: Read/Write Value for EEPROM Data Byte or Least Significant bits of Program Memory

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

       U-0            U-0        R/W-x/u  R/W-x/u      R/W-x/u      R/W-x/u     R/W-x/u  R/W-x/u
        --                                                                                       bit 0
bit 7                 --                                           EEDAT<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      EEDAT<13:8>: Read/Write Value for Most Significant bits of Program Memory

REGISTER 12-3: EEADRL: EEPROM ADDRESS REGISTER

    R/W-0/0  R/W-0/0             R/W-0/0  R/W-0/0      R/W-0/0      R/W-0/0     R/W-0/0  R/W-0/0
bit 7                                                                                            bit 0
                                                       EEADR<7: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      EEADR<7:0>: Specifies the Least Significant bits for Program Memory Address or EEPROM Address

2011 Microchip Technology Inc.                        Preliminary                      DS41579A-page 111
PIC16(L)F1782/3

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

       U-1         R/W-0/0  R/W-0/0  R/W-0/0      R/W-0/0      R/W-0/0  R/W-0/0  R/W-0/0
        --                                                                               bit 0
bit 7                                             EEADR<14: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       Unimplemented: Read as `1'
bit 6-0     EEADR<14:8>: Specifies the Most Significant bits for Program Memory Address or EEPROM Address

DS41579A-page 112                                 Preliminary            2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

REGISTER 12-5: EECON1: EEPROM CONTROL 1 REGISTER

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

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

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

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

             1 = Accesses Configuration, User ID and Device ID registers
             0 = Accesses Flash Program or data EEPROM memory

bit 5        LWLO: Load Write Latches Only bit

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

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

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

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

bit 4        FREE: Program Flash Erase Enable bit

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

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

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

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

bit 3        WRERR: EEPROM Error Flag bit

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

             0 = The program or erase operation completed normally.

bit 2        WREN: Program/Erase Enable bit

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

bit 1        WR: Write Control bit

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

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

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

bit 0        RD: Read Control bit

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

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

2011 Microchip Technology Inc.                        Preliminary                       DS41579A-page 113
PIC16(L)F1782/3

REGISTER 12-6: EECON2: EEPROM CONTROL 2 REGISTER

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

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

bit 7-0       Data EEPROM Unlock Pattern bits

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

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

Name          Bit 7         Bit 6  Bit 5                 Bit 4  Bit 3        Bit 2         Bit 1          Bit 0  Register on
                                                                                                                     Page
EECON1        EEPGD      CFGS      LWLO    FREE                 WRERR WREN                 WR             RD
EECON2                                                                                                                113
EEADRL                             EEPROM Control Register 2 (not a physical register)                                114*
EEADRH                                                                                                                 111
EEDATL                                                   EEADRL<7:0>                                                  112
EEDATH                                                                                                                 111
INTCON        --                                                EEADRH<6:0>                                            111
PIE2                                                                                                                   84
PIR2                                                     EEDATL<7:0>                                                   86
                                                                                                                       89
Legend:       --            --                                  EEDATH<5:0>
           *
              GIE           PEIE   TMR0IE                INTE   IOCIE        TMR0IF        INTF           IOCIF

              OSFIE         C2IE   C1IE                  EEIE   BCLIE        --            C3IE   CCP2IE

              OSFIF         C2IF   C1IF                  EEIF   BCLIF        --            C3IF   CCP2IF

              -- = unimplemented location, read as `0'. Shaded cells are not used by data EEPROM module.
              Page provides register information.

DS41579A-page 114                                        Preliminary                        2011 Microchip Technology Inc.
                                                           PIC16(L)F1782/3

13.0 I/O PORTS                                             FIGURE 13-1:       GENERIC I/O PORT
                                                                              OPERATION
In general, when a peripheral is enabled on a port pin,
that pin cannot be used as a general purpose output.                          Read LATx      TRISx
However, the pin can still be read.
                                                                           D  Q
Each port has three standard registers for its operation.
These registers are:                                       Write LATx         CK                        VDD
                                                           Write PORTx     Data Register
TRISx registers (data direction)                         Data Bus                                            I/O pin
PORTx registers (reads the levels on the pins of                                                      VSS
                                                               Read PORTx
   the device)                                             To peripherals
LATx registers (output latch)

Some ports may have one or more of the following
additional registers. These registers are:

ANSELx (analog select)
WPUx (weak pull-up)


                                                                              ANSELx

TABLE 13-1: PORT AVAILABILITY PER                          EXAMPLE 13-1: INITIALIZING PORTA
                     DEVICE
                                                            ; This code example illustrates
Device         PORTA                                        ; initializing the PORTA register. The
                         PORTB                              ; other ports are initialized in the same
                                   PORTC                    ; manner.
                                             PORTE

PIC16(L)F1782                        
PIC16(L)F1783
                                                           BANKSEL PORTA                  ;

                                                           CLRF PORTA                     ;Init PORTA

The Data Latch (LATx register) is useful for               BANKSEL LATA                   ;Data Latch
read-modify-write operations on the value that the I/O
pins are driving.                                          CLRF LATA                      ;

                                                           BANKSEL ANSELA                 ;

A write operation to the LATx register has the same        CLRF ANSELA                    ;digital I/O
effect as a write to the corresponding PORTx register.
A read of the LATx register reads of the values held in    BANKSEL TRISA                  ;
the I/O PORT latches, while a read of the PORTx
register reads the actual I/O pin value.                   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 13-1.

2011 Microchip Technology Inc.      Preliminary                                             DS41579A-page 115
PIC16(L)F1782/3

13.1 Alternate Pin Function                             These bits have no effect on the values of any TRIS
                                                        register. PORT and TRIS overrides will be routed to the
The Alternate Pin Function Control (APFCON) register    correct pin. The unselected pin will be unaffected.
is used to steer specific peripheral input and output
functions between different pins. The APFCON register
is shown in Register 13-1. For this device family, the
following functions can be moved between different
pins.

C2OUT output
CCP1 output
SDO output
SCL/SCK output
SDA/SDI output
TX/RX output
CCP2 output

REGISTER 13-1: APFCON: ALTERNATE PIN FUNCTION 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/W-0/0
C2OUTSEL    CCP1SEL   SDOSEL             SCKSEL        SDISEL       TXSEL   RXSEL    CCP2SEL
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        C2OUTSEL: C2OUT pin selection bit

             1 = C2OUT is on pin RA6
             0 = C2OUT is on pin RA5

bit 6        CCP1SEL: CCP1 Input/Output Pin Selection bit

             1 = CCP1 is on pin RB0
             0 = CCP1 is on pin RC2

bit 5        SDOSEL: MSSP SDO Pin Selection bit

             1 = SDO is on pin RB5
             0 = SDO is on pin RC5

bit 4        SCKSEL: MSSP Serial Clock (SCL/SCK) Pin Selection bit

             1 = SCL/SCK is on pin RB7
             0 = SCL/SCK is on pin RC3

bit 3        SDISEL: MSSP Serial Data (SDA/SDI) Output Pin Selection bit

             1 = SDA/SDI is on pin RB6
             0 = SDA/SDI is on pin RC4

bit 2        TXSEL: TX Pin Selection bit

             1 = TX is on pin RB6
             0 = TX is on pin RC6

bit 1        RXSEL: RX Pin Selection bit

             1 = RX is on pin RB7
             0 = RX is on pin RC7

bit 0        CCP2SEL: CCP2 Input/Output Pin Selection bit

             1 = CCP2 is on pin RB3
             0 = CCP2 is on pin RC1

DS41579A-page 116                            Preliminary                      2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

13.2 PORTA Registers                                         13.2.5 INPUT THRESHOLD CONTROL

13.2.1 DATA REGISTER                                         The INLVLA register (Register 13-9) controls the input
                                                             voltage threshold for each of the available PORTA input
PORTA is an 8-bit wide, bidirectional port. The              pins. A selection between the Schmitt Trigger CMOS or
corresponding data direction register is TRISA               the TTL Compatible thresholds is available. The input
(Register 13-3). Setting a TRISA bit (= 1) will make the     threshold is important in determining the value of a
corresponding PORTA pin an input (i.e., disable the          read of the PORTA register and also the level at which
output driver). Clearing a TRISA bit (= 0) will make the     an interrupt-on-change occurs, if that feature is
corresponding PORTA pin an output (i.e., enables             enabled. See Section 30.1 "DC Characteristics:
output driver and puts the contents of the output latch      PIC16(L)F1782/3-I/E (Industrial, Extended)" for more
on the selected pin). The exception is RA3, which is         information on threshold levels.
input only and its TRIS bit will always read as `1'.
Example 13-1 shows how to initialize PORTA.                  Note:  Changing the input threshold selection
                                                                    should be performed while all peripheral
Reading the PORTA register (Register 13-2) reads the                modules are disabled. Changing the
status of the pins, whereas writing to it will write to the         threshold level during the time a module is
PORT latch. All write operations are read-modify-write              active may inadvertently generate a tran-
operations. Therefore, a write to a port implies that the           sition associated with an input pin, regard-
port pins are read, this value is modified and then                 less of the actual voltage level on that pin.
written to the PORT data latch (LATA).
                                                             13.2.6 ANALOG CONTROL
13.2.2 DIRECTION CONTROL
                                                             The ANSELA register (Register 13-5) is used to
The TRISA register (Register 13-3) controls the              configure the Input mode of an I/O pin to analog.
PORTA pin output drivers, even when they are being           Setting the appropriate ANSELA bit high will cause all
used as analog inputs. The user should ensure the bits       digital reads on the pin to be read as `0' and allow
in the TRISA register are maintained set when using          analog functions on the pin to operate correctly.
them as analog inputs. I/O pins configured as analog
inputs always read `0'.                                      The state of the ANSELA bits has no effect on digital
                                                             output functions. A pin with TRIS clear and ANSEL set
13.2.3 OPEN DRAIN CONTROL                                    will still operate as a digital output, but the Input mode
                                                             will be analog. This can cause unexpected behavior
The ODCONA register (Register 13-7) controls the             when executing read-modify-write instructions on the
open-drain feature of the port. Open drain operation is      affected port.
independently selected for each pin. When an
ODCONA bit is set, the corresponding port output             Note:  The ANSELA bits default to the Analog
becomes an open drain driver capable of sinking                     mode after Reset. To use any pins as
current only. When an ODCONA bit is cleared, the                    digital general purpose or peripheral
corresponding port output pin is the standard push-pull             inputs, the corresponding ANSEL bits
drive capable of sourcing and sinking current.                      must be initialized to `0' by user software.

13.2.4 SLEW RATE CONTROL

The SLRCONA register (Register 13-8) controls the
slew rate option for each port pin. Slew rate control is
independently selectable for each port pin. When an
SLRCONA bit is set, the corresponding port pin drive is
slew rate limited. When an SLRCONA bit is cleared,
The corresponding port pin drive slews at the maximum
rate possible.

2011 Microchip Technology Inc.  Preliminary                                        DS41579A-page 117
PIC16(L)F1782/3

13.2.7  PORTA FUNCTIONS AND OUTPUT
        PRIORITIES

Each PORTA pin is multiplexed with other functions. The
pins, their combined functions and their output priorities
are shown in Table 13-2.

When multiple outputs are enabled, the actual pin
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
priority shown in Table 13-2.

TABLE 13-2: PORTA OUTPUT PRIORITY

Pin Name           Function Priority(1)

        RA0        RA0

        RA1        OPA1OUT

                   RA1

        RA2        DACOUT1

                   RA2

        RA3        RA3

        RA4        C1OUT

                   RA4

        RA5        C2OUT

                   RA5

        RA6        C2OUT

                   RA6

        RA7        PSMC1A

                   RA7

Note 1: Priority listed from highest to lowest.

DS41579A-page 118                                Preliminary   2011 Microchip Technology Inc.
                                                                       PIC16(L)F1782/3

REGISTER 13-2: PORTA: PORTA REGISTER

    R/W-x/x  R/W-x/x             R/W-x/x  R/W-x/x               R-x/x  R/W-x/x  R/W-x/x  R/W-x/x
       RA7     RA6                 RA5      RA4                 RA3      RA2      RA1      RA0
                                                                                                 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-0      RA<7:0>: PORTA I/O Value bits(1)
             1 = Port pin is > VIH
             0 = Port pin is < VIL

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

REGISTER 13-3: TRISA: PORTA TRI-STATE REGISTER

    R/W-1/1  R/W-1/1             R/W-1/1  R/W-1/1            R-1/1     R/W-1/1  R/W-1/1  R/W-1/1
    TRISA7   TRISA6              TRISA5   TRISA4            TRISA3     TRISA2   TRISA1   TRISA0
bit 7
                                                                                                  bit 0

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

bit 7-4      TRISA<7:4>: PORTA Tri-State Control bits
             1 = PORTA pin configured as an input (tri-stated)
bit 3        0 = PORTA pin configured as an output
bit 2-0
             TRISA3: RA3 Port Tri-State Control bit
             This bit is always `1' as RA3 is an input only

             TRISA<2:0>: PORTA Tri-State Control bits
             1 = PORTA pin configured as an input (tri-stated)
             0 = PORTA pin configured as an output

REGISTER 13-4: LATA: PORTA DATA LATCH 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
     LATA7    LATA6               LATA5    LATA4             LATA3      LATA2    LATA1    LATA0
bit 7
                                                                                                 bit 0

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

bit 7-4      LATA<7:0>: RA<7:4> Output Latch Value bits(1)

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

2011 Microchip Technology Inc.                        Preliminary              DS41579A-page 119
PIC16(L)F1782/3

REGISTER 13-5: ANSELA: PORTA ANALOG SELECT REGISTER

   R/W-1/1         U-0      R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1  R/W-1/1  R/W-1/1
    ANSA7                                                               ANSA1    ANSA0
bit 7                 --    ANSA5    ANSA4        ANSA3        ANSA2
                                                                                         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 5        ANSA7: Analog Select between Analog or Digital Function on pins RA7, respectively
             0 = Digital I/O. Pin is assigned to port or digital special function.
bit 6        1 = Analog input. Pin is assigned as analog input(1). Digital input buffer disabled.
bit 5-0
             Unimplemented: Read as `0'

             ANSA<5:0>: Analog Select between Analog or Digital Function on pins RA<5:0>, respectively
             0 = Digital I/O. Pin is assigned to port or digital special function.
             1 = Analog input. Pin is assigned as analog input(1). Digital input buffer disabled.

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

REGISTER 13-6: WPUA: WEAK PULL-UP PORTA REGISTER

    R/W-1/1        R/W-1/1  R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1  R/W-1/1  R/W-1/1
    WPUA7          WPUA6    WPUA5    WPUA4        WPUA3        WPUA2    WPUA1    WPUA0
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-0           WPUA<7:0>: Weak Pull-up Register bits
                  1 = Pull-up enabled
Note 1:           0 = Pull-up disabled
        2:
            Global WPUEN bit of the OPTION_REG register must be cleared for individual pull-ups to be enabled.
            The weak pull-up device is automatically disabled if the pin is in configured as an output.

DS41579A-page 120                                 Preliminary            2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

REGISTER 13-7: ODCONA: PORTA OPEN DRAIN 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/W-0/0
     ODA7     ODA6                ODA5     ODA4         ODA3         ODA2                  ODA1     ODA0
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-0      ODA<7:0>: PORTA Open Drain Enable bits
             For RA<7:0> pins, respectively
             1 = Port pin operates as open-drain drive (sink current only)
             0 = Port pin operates as standard push-pull drive (source and sink current)

REGISTER 13-8: SLRCONA: PORTA SLEW RATE CONTROL REGISTER

    R/W-1/1  R/W-1/1             R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1               R/W-1/1  R/W-1/1
    SLRA7    SLRA6               SLRA5    SLRA4        SLRA3        SLRA2                 SLRA1    SLRA0
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-0      SLRA<7:0>: PORTA Slew Rate Enable bits
             For RA<7:0> pins, respectively
             1 = Port pin slew rate is limited
             0 = Port pin slews at maximum rate

REGISTER 13-9: INLVLA: PORTA INPUT LEVEL 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/W-0/0
   INLVLA7   INLVLA6             INLVLA5  INLVLA4      INLVLA3      INLVLA2               INLVLA1  INLVLA0
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-0      INLVLA<7:0>: PORTA Input Level Select bits
             For RA<7:0> pins, respectively
             1 = ST input used for PORT reads and interrupt-on-change
             0 = TTL input used for PORT reads and interrupt-on-change

2011 Microchip Technology Inc.                        Preliminary                        DS41579A-page 121
PIC16(L)F1782/3

TABLE 13-3: SUMMARY OF REGISTERS ASSOCIATED WITH PORTA

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

ANSELA         ANSA7    --       ANSA5 ANSA4         ANSA3     ANSA2                        ANSA1 ANSA0           120

INLVLA         INLVLA7 INLVLA6 INLVLA5 INLVLA4 INLVLA3 INLVLA2 INLVLA1 INLVLA0                                    121

LATA           LATA7    LATA6    LATA5     LATA4     LATA3     LATA2                        LATA1    LATA0        119

ODCONA         ODA7     ODA6     ODA5      ODA4      ODA3      ODA2                         ODA1     ODA0         121

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

PORTA              RA7  RA6      RA5       RA4       RA3       RA2                          RA1      RA0          119

SLRCONA        SLRA7    SLRA6    SLRA5     SLRA4     SLRA3     SLRA2                        SLRA1 SLRA0           121

TRISA          TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0                                            119

WPUA           WPUA7 WPUA6 WPUA5 WPUA4 WPUA3 WPUA2 WPUA1 WPUA0                                                    120

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

TABLE 13-4: SUMMARY OF CONFIGURATION WORD WITH PORTA

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      --   --       --        --        CLKOUTEN                           BOREN<1:0>   --
Legend:                                                                                                            44
         7:0       CP   MCLRE    PWRTE            WDTE<1:0>                             --          FOSC<1:0>

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

DS41579A-page 122                          Preliminary                                       2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

13.3 PORTB Registers                                         13.3.5 INPUT THRESHOLD CONTROL

13.3.1 DATA REGISTER                                         The INLVLB register (Register 13-17) controls the input
                                                             voltage threshold for each of the available PORTB
PORTB is an 8-bit wide, bidirectional port. The              input pins. A selection between the Schmitt Trigger
corresponding data direction register is TRISB               CMOS or the TTL Compatible thresholds is available.
(Register 13-11). Setting a TRISB bit (= 1) will make the    The input threshold is important in determining the
corresponding PORTB pin an input (i.e., put the              value of a read of the PORTB register and also the level
corresponding output driver in a High-Impedance mode).       at which an interrupt-on-change occurs, if that feature
Clearing a TRISB bit (= 0) will make the corresponding       is enabled. See Section 30.1 "DC Characteristics:
PORTB pin an output (i.e., enable the output driver and      PIC16(L)F1782/3-I/E (Industrial, Extended)" for more
put the contents of the output latch on the selected pin).   information on threshold levels.
Example 13-1 shows how to initialize an I/O port.
                                                             Note:  Changing the input threshold selection
Reading the PORTB register (Register 13-10) reads the               should be performed while all peripheral
status of the pins, whereas writing to it will write to the         modules are disabled. Changing the
PORT latch. All write operations are read-modify-write              threshold level during the time a module is
operations. Therefore, a write to a port implies that the           active may inadvertently generate a tran-
port pins are read, this value is modified and then written         sition associated with an input pin, regard-
to the PORT data latch (LATB).                                      less of the actual voltage level on that pin.

13.3.2 DIRECTION CONTROL                                     13.3.6 ANALOG CONTROL

The TRISB register (Register 13-11) controls the PORTB       The ANSELB register (Register 13-13) is used to
pin output drivers, even when they are being used as         configure the Input mode of an I/O pin to analog.
analog inputs. The user should ensure the bits in the        Setting the appropriate ANSELB bit high will cause all
TRISB register are maintained set when using them as         digital reads on the pin to be read as `0' and allow
analog inputs. I/O pins configured as analog inputs          analog functions on the pin to operate correctly.
always read `0'.
                                                             The state of the ANSELB bits has no effect on digital out-
13.3.3 OPEN DRAIN CONTROL                                    put functions. A pin with TRIS clear and ANSELB set will
                                                             still operate as a digital output, but the Input mode will be
The ODCONB register (Register 13-15) controls the            analog. This can cause unexpected behavior when exe-
open-drain feature of the port. Open drain operation is      cuting read-modify-write instructions on the affected
independently selected for each pin. When an                 port.
ODCONB bit is set, the corresponding port output
becomes an open drain driver capable of sinking              Note:  The ANSELB bits default to the Analog
current only. When an ODCONB bit is cleared, the                    mode after Reset. To use any pins as
corresponding port output pin is the standard push-pull             digital general purpose or peripheral
drive capable of sourcing and sinking current.                      inputs, the corresponding ANSEL bits
                                                                    must be initialized to `0' by user software.
13.3.4 SLEW RATE CONTROL

The SLRCONB register (Register 13-16) controls the
slew rate option for each port pin. Slew rate control is
independently selectable for each port pin. When an
SLRCONB bit is set, the corresponding port pin drive is
slew rate limited. When an SLRCONB bit is cleared,
The corresponding port pin drive slews at the maximum
rate possible.

2011 Microchip Technology Inc.  Preliminary                                        DS41579A-page 123
PIC16(L)F1782/3

13.3.7  PORTB FUNCTIONS AND OUTPUT
        PRIORITIES

Each PORTB pin is multiplexed with other functions. The
pins, their combined functions and their output priorities
are shown in Table 13-5.

When multiple outputs are enabled, the actual pin
control goes to the peripheral with the highest priority.

Analog input and some digital input functions are not
included in the list below. These input functions can
remain active when the pin is configured as an output.
Certain digital input functions override other port
functions and are included in Table 13-5.

TABLE 13-5: PORTB OUTPUT PRIORITY

Pin Name           Function Priority(1)

        RB0        CCP1

                   RB0

        RB1        OPA2OUT

                   RB1

        RB2        CLKR

                   RB2

        RB3        RB3

        RB4        RB4

        RB5        SDO

                   C3OUT

                   RB5

        RB6        ICDCLK

                   TX/CK

                   RB6

        RB7        ICDDAT

                   DACOUT2

                   SCL/SCK

                   DT

                   RB7

Note 1: Priority listed from highest to lowest.

DS41579A-page 124                                Preliminary   2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

REGISTER 13-10: PORTB: PORTB 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
      RB7      RB6                 RB5      RB4          RB3          RB2      RB1      RB0
                                                                                              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-0      RB<7:0>: PORTB General Purpose I/O Pin bits(1)
             1 = Port pin is > VIH
             0 = Port pin is < VIL

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

REGISTER 13-11: TRISB: PORTB TRI-STATE REGISTER

    R/W-1/1  R/W-1/1             R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1  R/W-1/1  R/W-1/1
    TRISB7   TRISB6              TRISB5   TRISB4       TRISB3       TRISB2   TRISB1   TRISB0
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-0      TRISB<7:0>: PORTB Tri-State Control bits
             1 = PORTB pin configured as an input (tri-stated)
             0 = PORTB pin configured as an output

REGISTER 13-12: LATB: PORTB DATA LATCH 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
     LATB7   LATB6               LATB5    LATB4        LATB3        LATB2    LATB1    LATB0
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-0      LATB<7:0>: PORTB Output Latch Value bits(1)

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

2011 Microchip Technology Inc.                        Preliminary           DS41579A-page 125
PIC16(L)F1782/3

REGISTER 13-13: ANSELB: PORTB ANALOG SELECT REGISTER

      U-0          U-0      R/W-1/1  R/W-1/1        R/W-1/1    R/W-1/1  R/W-1/1  R/W-1/1
       --                                                               ANSB1    ANSB0
bit 7                 --    ANSB5    ANSB4          ANSB3      ANSB2
                                                                                         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-0
             ANSB<5:0>: Analog Select between Analog or Digital Function on pins RB<5:0>, respectively
             0 = Digital I/O. Pin is assigned to port or digital special function.
             1 = Analog input. Pin is assigned as analog input(1). Digital input buffer disabled.

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

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

    R/W-1/1        R/W-1/1  R/W-1/1  R/W-1/1        R/W-1/1    R/W-1/1  R/W-1/1  R/W-1/1
    WPUB7          WPUB6    WPUB5    WPUB4          WPUB3      WPUB2    WPUB1    WPUB0
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-0      WPUB<7:0>: Weak Pull-up Register bits
             1 = Pull-up enabled
             0 = Pull-up disabled

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

DS41579A-page 126                                 Preliminary            2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

REGISTER 13-15: ODCONB: PORTB OPEN DRAIN 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/W-0/0
     ODB7     ODB6                ODB5     ODB4         ODB3         ODB2                  ODB1     ODB0
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-0      ODB<7:0>: PORTB Open Drain Enable bits
             For RB<7:0> pins, respectively
             1 = Port pin operates as open-drain drive (sink current only)
             0 = Port pin operates as standard push-pull drive (source and sink current)

REGISTER 13-16: SLRCONB: PORTB SLEW RATE CONTROL REGISTER

    R/W-1/1  R/W-1/1             R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1               R/W-1/1  R/W-1/1
    SLRB7    SLRB6               SLRB5    SLRB4        SLRB3        SLRB2                 SLRB1    SLRB0
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-0      SLRB<7:0>: PORTB Slew Rate Enable bits
             For RB<7:0> pins, respectively
             1 = Port pin slew rate is limited
             0 = Port pin slews at maximum rate

REGISTER 13-17: INLVLB: PORTB INPUT LEVEL 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/W-0/0
   INLVLB7   INLVLB6             INLVLB5  INLVLB4      INLVLB3      INLVLB2               INLVLB1  INLVLB0
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-0      INLVLB<7:0>: PORTB Input Level Select bits
             For RB<7:0> pins, respectively
             1 = ST input used for PORT reads and interrupt-on-change
             0 = TTL input used for PORT reads and interrupt-on-change

2011 Microchip Technology Inc.                        Preliminary                        DS41579A-page 127
PIC16(L)F1782/3

TABLE 13-6: SUMMARY OF REGISTERS ASSOCIATED WITH PORTB

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

ANSELB             --   --     ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 ANSB0 126

INLVLB   INLVLB7 INLVLB6 INLVLB5 INLVLB4 INLVLB3 INLVLB2 INLVLB1 INLVLB0 127

LATB     LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0                 125

ODCONB   ODB7 ODB6 ODB5 ODB4 ODB3 ODB2 ODB1 ODB0                         127

PORTB              RB7  RB6    RB5    RB4    RB3    RB2    RB1    RB0    125

SLRCONB  SLRB7 SLRB6 SLRB5 SLRB4 SLRB3 SLRB2 SLRB1 SLRB0                 127

TRISB    TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 125

WPUB         WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 126
Legend:
         x = unknown, u = unchanged, - = unimplemented locations read as `0'. Shaded cells are not used by
         PORTB.

DS41579A-page 128                     Preliminary           2011 Microchip Technology Inc.
                                                                     PIC16(L)F1782/3

13.4 PORTC Registers                                         feature is enabled. See Section 30.1 "DC Character-

13.4.1 DATA REGISTER                                         istics: PIC16(L)F1782/3-I/E (Industrial, Extended)"
                                                             for more information on threshold levels.
PORTC is an 8-bit wide bidirectional port. The
corresponding data direction register is TRISC               Note:   Changing the input threshold selection
(Register 13-19). Setting a TRISC bit (= 1) will make the            should be performed while all peripheral
corresponding PORTC pin an input (i.e., put the                      modules are disabled. Changing the
corresponding output driver in a High-Impedance mode).               threshold level during the time a module is
Clearing a TRISC bit (= 0) will make the corresponding               active may inadvertently generate a tran-
PORTC pin an output (i.e., enable the output driver and              sition associated with an input pin, regard-
put the contents of the output latch on the selected pin).           less of the actual voltage level on that pin.
Example 13-1 shows how to initialize an I/O port.
                                                             13.4.6  PORTC FUNCTIONS AND OUTPUT
Reading the PORTC register (Register 13-18) reads the                PRIORITIES
status of the pins, whereas writing to it will write to the
PORT latch. All write operations are read-modify-write       Each PORTC pin is multiplexed with other functions. The
operations. Therefore, a write to a port implies that the    pins, their combined functions and their output priorities
port pins are read, this value is modified and then written  are shown in Table 13-7.
to the PORT data latch (LATC).
                                                             When multiple outputs are enabled, the actual pin
13.4.2 DIRECTION CONTROL                                     control goes to the peripheral with the highest priority.

The TRISC register (Register 13-19) controls the             Analog input and some digital input functions are not
PORTC pin output drivers, even when they are being           included in the list below. These input functions can
used as analog inputs. The user should ensure the bits in    remain active when the pin is configured as an output.
the TRISC register are maintained set when using them        Certain digital input functions override other port
as analog inputs. I/O pins configured as analog inputs       functions and are included in Table 13-7.
always read `0'.
                                                             TABLE 13-7: PORTC OUTPUT PRIORITY
13.4.3 OPEN DRAIN CONTROL
                                                             Pin Name     Function Priority(1)
The ODCONC register (Register 13-22) controls the
open-drain feature of the port. Open drain operation is              RC0  PSMC1A
independently selected for each pin. When an                              RC0
ODCONC bit is set, the corresponding port output
becomes an open drain driver capable of sinking                      RC1  PSMC1B
current only. When an ODCONC bit is cleared, the                          CCP2
corresponding port output pin is the standard push-pull                   RC1
drive capable of sourcing and sinking current.
                                                                     RC2  PSMC1C
13.4.4 SLEW RATE CONTROL                                                  CCP1
                                                                          RC2
The SLRCONC register (Register 13-23) controls the
slew rate option for each port pin. Slew rate control is             RC3  PSMC1D
independently selectable for each port pin. When an                       SCL
SLRCONC bit is set, the corresponding port pin drive is                   SCK
slew rate limited. When an SLRCONC bit is cleared,                        RC3
The corresponding port pin drive slews at the maximum
rate possible.                                                       RC4  PSMC1D
                                                                          SDA
13.4.5 INPUT THRESHOLD CONTROL                                            RC4

The INLVLC register (Register 13-24) controls the input              RC5  PSMC1F
voltage threshold for each of the available PORTC                         SDO
input pins. A selection between the Schmitt Trigger                       RC5
CMOS or the TTL Compatible thresholds is available.
The input threshold is important in determining the                  RC6  PSMC2A
value of a read of the PORTC register and also the                        TX/CK
level at which an interrupt-on-change occurs, if that                     RC6

                                                                     RC7  PSMC2B
                                                                          DT
                                                                          RC7

                                                             Note 1: Priority listed from highest to lowest.

2011 Microchip Technology Inc.  Preliminary                              DS41579A-page 129
PIC16(L)F1782/3

REGISTER 13-18: PORTC: PORTC 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
      RC7            RC6      RC5      RC4          RC3           RC2      RC1      RC0
                                                                                          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-0      RC<7:0>: PORTC General Purpose I/O Pin bits(1)
             1 = Port pin is > VIH
             0 = Port pin is < VIL

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

REGISTER 13-19: TRISC: PORTC TRI-STATE REGISTER

    R/W-1/1        R/W-1/1  R/W-1/1  R/W-1/1      R/W-1/1       R/W-1/1  R/W-1/1  R/W-1/1
    TRISC7         TRISC6   TRISC5   TRISC4       TRISC3        TRISC2   TRISC1   TRISC0
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-0      TRISC<7:0>: PORTC Tri-State Control bits
             1 = PORTC pin configured as an input (tri-stated)
             0 = PORTC pin configured as an output

REGISTER 13-20: LATC: PORTC DATA LATCH 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
    LATC7          LATC6    LATC5    LATC4        LATC3         LATC2    LATC1    LATC0
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-0      LATC<7:0>: PORTC Output Latch Value bits(1)

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

DS41579A-page 130                                 Preliminary             2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

REGISTER 13-21: WPUC: WEAK PULL-UP PORTC REGISTER

    R/W-1/1  R/W-1/1             R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1               R/W-1/1  R/W-1/1
    WPUC7    WPUC6               WPUC5    WPUC4        WPUC3        WPUC2                 WPUC1    WPUC0
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-0      WPUC<7:0>: Weak Pull-up Register bits
             1 = Pull-up enabled
             0 = Pull-up disabled

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

REGISTER 13-22: ODCONC: PORTC OPEN DRAIN 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/W-0/0
     ODC7     ODC6                ODC5     ODC4         ODC3         ODC2                  ODC1     ODC0
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-0      ODC<7:0>: PORTC Open Drain Enable bits
             For RC<7:0> pins, respectively
             1 = Port pin operates as open-drain drive (sink current only)
             0 = Port pin operates as standard push-pull drive (source and sink current)

REGISTER 13-23: SLRCONC: PORTC SLEW RATE CONTROL REGISTER

    R/W-1/1  R/W-1/1             R/W-1/1  R/W-1/1      R/W-1/1      R/W-1/1               R/W-1/1  R/W-1/1
    SLRC7    SLRC6               SLRC5    SLRC4        SLRC3        SLRC2                 SLRC1    SLRC0
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-0      SLRC<7:0>: PORTC Slew Rate Enable bits
             For RC<7:0> pins, respectively
             1 = Port pin slew rate is limited
             0 = Port pin slews at maximum rate

2011 Microchip Technology Inc.                        Preliminary                        DS41579A-page 131
PIC16(L)F1782/3

REGISTER 13-24: INLVLC: PORTC INPUT LEVEL CONTROL REGISTER

    R/W-1/1  R/W-1/1  R/W-1/1       R/W-1/1        R/W-1/1  R/W-1/1     R/W-1/1       R/W-1/1
   INLVLC7   INLVLC6  INLVLC5       INLVLC4        INLVLC3  INLVLC2     INLVLC1       INLVLC0
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-0      INLVLC<7:0>: PORTC Input Level Select bits
             For RC<7:0> pins, respectively
             1 = ST input used for PORT reads and interrupt-on-change
             0 = TTL input used for PORT reads and interrupt-on-change

TABLE 13-8: SUMMARY OF REGISTERS ASSOCIATED WITH PORTC

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

LATC         LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0                          130

PORTC        RC7      RC6    RC5            RC4    RC3      RC2         RC1    RC0    130

TRISC        TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 130

WPUC         WPUC7 WPUC6 WPUC5 WPUC4 WPUC3 WPUC2 WPUC1 WPUC0 131

INLVLC       INLVLC7 INLVLC6 INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 INLVLC0 132

LATC         LATC7 LATC6 LATC5 LATC4 LATC3 LATC2 LATC1 LATC0                          130

ODCONC       ODC7 ODC6 ODC5 ODC4 ODC3 ODC2 ODC1 ODC0                                  131

PORTC        RC7      RC6    RC5            RC4    RC3      RC2         RC1    RC0    130

SLRCONC      SLRC7 SLRC6 SLRC5 SLRC4 SLRC3 SLRC2 SLRC1 SLRC0                          131

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

DS41579A-page 132                           Preliminary                  2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

13.5 PORTE Registers                                        13.5.2  PORTE FUNCTIONS AND OUTPUT
                                                                    PRIORITIES
RE3 is input only, and also functions as MCLR. The
MCLR feature can be disabled via a configuration fuse.      No output priorities, RE3 is an input only pin.
RE3 also supplies the programming voltage. The TRIS bit
for RE3 (TRISE3) always reads `1'.

13.5.1 INPUT THRESHOLD CONTROL

The INLVLE register (Register 13-28) controls the input
voltage threshold for each of the available PORTE
input pins. A selection between the Schmitt Trigger
CMOS or the TTL Compatible thresholds is available.
The input threshold is important in determining the
value of a read of the PORTE register and also the level
at which an interrupt-on-change occurs, if that feature
is enabled. See Section 30.1 "DC Characteristics:
PIC16(L)F1782/3-I/E (Industrial, Extended)" for more
information on threshold levels.

Note:       Changing the input threshold selection
            should be performed while all peripheral
            modules are disabled. Changing the
            threshold level during the time a module is
            active may inadvertently generate a tran-
            sition associated with an input pin, regard-
            less of the actual voltage level on that pin.

REGISTER 13-25: PORTE: PORTE REGISTER

       U-0            U-0        U-0                   U-0  R-x/u   U-0  U-0                                 U-0
        --
bit 7                 --         --                    --   RE3     --   --                                  --

                                                                                                                  bit 0

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

bit 7-4     Unimplemented: Read as `0'
bit 3
            RE3: PORTE Input Pin bit
bit 2-0     1 = Port pin is > VIH
            0 = Port pin is < VIL

            Unimplemented: Read as `0'

2011 Microchip Technology Inc.                        Preliminary            DS41579A-page 133
PIC16(L)F1782/3

REGISTER 13-26: TRISE: PORTE TRI-STATE REGISTER

       U-0            U-0  U-0                   U-0  U-1(1)   U-0  U-0  U-0
        --
bit 7                 --   --                    --   --       --   --   --

                                                                              bit 0

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

bit 7-4     Unimplemented: Read as `0'
bit 3       Unimplemented: Read as `1'
bit 2-0     Unimplemented: Read as `0'

Note 1: Unimplemented, read as `1'.

REGISTER 13-27: WPUE: WEAK PULL-UP PORTE REGISTER

       U-0            U-0  U-0                   U-0  R/W-1/1  U-0  U-0  U-0
        --
bit 7                 --   --                    --   WPUE3    --   --   --

                                                                              bit 0

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

bit 7-4     Unimplemented: Read as `0'
bit 3
            WPUE3: Weak Pull-up Register bit
bit 2-0     1 = Pull-up enabled
            0 = Pull-up disabled

            Unimplemented: Read as `0'

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

DS41579A-page 134                                Preliminary         2011 Microchip Technology Inc.
                                                                       PIC16(L)F1782/3

REGISTER 13-28: INLVLE: PORTE INPUT LEVEL CONTROL REGISTER

       U-0            U-0         U-0                  U-0    R/W-1/1      U-0           U-0         U-0
                                                                                                     --
       --             --          --                   --     INLVLE3         --         --
                                                                                                          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-4     Unimplemented: Read as `0'
bit 3
            INLVLE3: PORTE Input Level Select bit
bit 2-0     1 = ST input used for PORT reads and interrupt-on-change
            0 = TTL input used for PORT reads and interrupt-on-change

            Unimplemented: Read as `0'

TABLE 13-9: SUMMARY OF REGISTERS ASSOCIATED WITH PORTE

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

ADCON0      --                                CHS<4:0>                            GO/DONE ADON       147

INLVLE      --             --          --              --     INLVLE3  --         --          --     135

PORTE       --             --          --              --     RE3      --         --          --     133
TRISE
            --             --          --              --     --(1)    --         --          --     134

WPUE        --             --          --              --     WPUE3    --         --          --     134

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

Note 1: Unimplemented, read as `1'.

2011 Microchip Technology Inc.                        Preliminary                            DS41579A-page 135
PIC16(L)F1782/3

NOTES:

DS41579A-page 136  Preliminary   2011 Microchip Technology Inc.
14.0 INTERRUPT-ON-CHANGE                                          PIC16(L)F1782/3

All pins on all ports can be configured to operate as       14.3 Interrupt Flags
Interrupt-On-Change (IOC) pins. An interrupt can be
generated by detecting a signal that has either a rising    The bits located in the IOCxF registers are status flags
edge or a falling edge. Any individual pin, or combination  that correspond to the interrupt-on-change events of
of pins, can be configured to generate an interrupt. The    each port. If an expected edge is detected on an
interrupt-on-change module has the following features:      appropriately enabled pin, then the status flag for that pin
                                                            will be set, and an interrupt will be generated, provided
Interrupt-on-Change enable (Master Switch)                that the IOCIE bit is also set. The IOCIF bit of the
Individual pin configuration                              INTCON register is all of the bits of all IOCxF registers
rising and falling edge detection                         OR'd together.
Individual pin interrupt flags
                                                            14.4 Clearing Interrupt Flags
Figure 14-1 is a block diagram of the IOC module.
                                                            The individual status flags, (IOCxF register bits), can be
14.1 Enabling the Module                                    cleared by resetting them to zero. If another edge is
                                                            detected during this clearing operation, the associated
To allow individual pins to generate an interrupt, the      status flag will be set at the end of the sequence,
IOCIE bit of the INTCON register must be set. When the      regardless of the value actually being written.
IOCIE bit is disabled, the edge detection on the pin will   In order to ensure that no detected edge is lost while
still occur, but an interrupt will not be generated.        clearing flags, only AND operations masking out known
                                                            changed bits should be performed. The following
14.2 Individual Pin Configuration                           sequence is an example of what should be performed.

For each pin, a rising edge detector and a falling edge     EXAMPLE 14-1:
detector are present. To enable a pin to detect a rising
edge, the corresponding bit of the IOCxP register is set.             MOVLW 0xff
To enable a pin to detect a falling edge, the                         XORWF IOCBF, W
corresponding bit of the IOCxN register is set.                       ANDWF IOCBF, F

A pin can be configured to detect rising and falling        14.5 Operation in Sleep
edges simultaneously by setting the corresponding bits
in both of the IOCxP and IOCxN registers.                   The interrupt-on-change interrupt sequence will wake
                                                            the device from Sleep mode, if the IOCIE bit is set.
                                                            If an edge is detected while in Sleep mode, the affected
                                                            IOCxF register will be updated prior to the first instruc-
                                                            tion executed out of Sleep.

2011 Microchip Technology Inc.  Preliminary                DS41579A-page 137
PIC16(L)F1782/3

FIGURE 14-1:       INTERRUPT-ON-CHANGE BLOCK DIAGRAM

         IOCBNx    D       Q          IOCBFx            IOCIE
RBx                            From all other IOCBFx                IOC Interrupt to
                   CK         individual pin detectors                 CPU Core
                        R

IOCBPx             D       Q

                   CK
                        R

                              Q2 Clock Cycle

DS41579A-page 138             Preliminary                2011 Microchip Technology Inc.
                                                                    PIC16(L)F1782/3

14.6 Interrupt-On-Change Registers

REGISTER 14-1: IOCxP: INTERRUPT-ON-CHANGE POSITIVE EDGE 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
    IOCxP7   IOCxP6              IOCxP5   IOCxP4       IOCxP3       IOCxP2               IOCxP1   IOCxP0
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-0      IOCxP<7:0>: Interrupt-on-Change Positive Edge Enable bits(1)

             1 = Interrupt-on-Change enabled on the pin for a positive going edge. Associated Status bit and
                   interrupt flag will be set upon detecting an edge.

             0 = Interrupt-on-Change disabled for the associated pin.

Note 1: For IOCEP register, bit 3 (IOCEP3) is the only implemented bit in the register.

REGISTER 14-2: IOCxN: INTERRUPT-ON-CHANGE NEGATIVE EDGE 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
    IOCxN7   IOCxN6              IOCxN5   IOCxN4       IOCxN3       IOCxN2               IOCxN1   IOCxN0
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-0      IOCxN<7:0>: Interrupt-on-Change Negative Edge Enable bits(1)

             1 = Interrupt-on-Change enabled on the pin for a negative going edge. Associated Status bit and
                   interrupt flag will be set upon detecting an edge.

             0 = Interrupt-on-Change disabled for the associated pin.

Note 1: For IOCEN register, bit 3 (IOCEN3) is the only implemented bit in the register.

2011 Microchip Technology Inc.                        Preliminary                       DS41579A-page 139
PIC16(L)F1782/3

REGISTER 14-3: IOCxF: INTERRUPT-ON-CHANGE FLAG REGISTER

R/W/HS-0/0  R/W/HS-0/0 R/W/HS-0/0 R/W/HS-0/0 R/W/HS-0/0        R/W/HS-0/0               R/W/HS-0/0  R/W/HS-0/0
    IOCxF7                                                        IOCxF2                   IOCxF1      IOCxF0
                   IOCxF6      IOCxF5      IOCxF4       IOCxF3                                                  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         HS - Bit is set in hardware
`1' = Bit is set

bit 7-0      IOCxF<7:0>: Interrupt-on-Change Flag bits(1)

             1 = An enabled change was detected on the associated pin.
                  Set when IOCxPx = 1 and a rising edge was detected RBx, or when IOCxNx = 1 and a falling edge
                  was detected on RBx.

             0 = No change was detected, or the user cleared the detected change.

Note 1: For IOCEF register, bit 3 (IOCEF3) is the only implemented bit in the register.

TABLE 14-1: SUMMARY OF REGISTERS ASSOCIATED WITH INTERRUPT-ON-CHANGE

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

ANSELB             --      --     ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 ANSB0                                126

INTCON             GIE     PEIE TMR0IE INTE             IOCIE TMR0IF INTF                IOCIF       84

IOCAF        IOCAF7 IOCAF6 IOCAF5 IOCAF4 IOCAF3 IOCAF2 IOCAF1 IOCAF0                                 140

IOCAN        IOCAN7 IOCAN6 IOCAN5 IOCAN4 IOCAN3 IOCAN2 IOCAN1 IOCAN0 139

IOCAP        IOCAP7 IOCAP6 IOCAP5 IOCAP4 IOCAP3 IOCAP2 IOCAP1 IOCAP0                                 139

IOCBF        IOCBF7 IOCBF6 IOCBF5 IOCBF4 IOCBF3 IOCBF2 IOCBF1 IOCBF0                                 140

IOCBN        IOCBN7 IOCBN6 IOCBN5 IOCBN4 IOCBN3 IOCBN2 IOCBN1 IOCBN0 139

IOCBP        IOCBP7 IOCBP6 IOCBP5 IOCBP4 IOCBP3 IOCBP2 IOCBP1 IOCBP0                                 139

IOCCF        IOCCF7 IOCCF6 IOCCF5 IOCCF4 IOCCF3 IOCCF2 IOCCF1 IOCCF0                                 140

IOCCN        IOCCN7 IOCCN6 IOCCN5 IOCCN4 IOCCN3 IOCCN2 IOCCN1 IOCCN0 139

IOCCP        IOCCP7 IOCCP6 IOCCP5 IOCCP4 IOCCP3 IOCCP2 IOCCP1 IOCCP0 139

IOCEF              --      --          --        --     IOCEF3  --          --           --          140

IOCEN              --      --          --        --     IOCEN3  --          --           --          139

IOCEP              --      --          --        --     IOCEP3  --          --           --          139

TRISB        TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0                                 125

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

DS41579A-page 140                                Preliminary                 2011 Microchip Technology Inc.
15.0 FIXED VOLTAGE REFERENCE                                 PIC16(L)F1782/3
         (FVR)
                                                       15.1 Independent Gain Amplifiers
The Fixed Voltage Reference, or FVR, is a stable
voltage reference, independent of VDD, with 1.024V,    The output of the FVR supplied to the ADC,
2.048V or 4.096V selectable output levels. The output  Comparators, and DAC is routed through two
of the FVR can be configured to supply a reference     independent programmable gain amplifiers. Each
voltage to the following:                              amplifier can be configured to amplify the reference
                                                       voltage by 1x, 2x or 4x, to produce the three possible
ADC input channel                                    voltage levels.
ADC positive reference
Comparator positive input                            The ADFVR<1:0> bits of the FVRCON register are
Digital-to-Analog Converter (DAC)                    used to enable and configure the gain amplifier settings
                                                       for the reference supplied to the ADC module. Refer-
The FVR can be enabled by setting the FVREN bit of     ence Section 19.0 "Digital-to-Analog Converter
the FVRCON register.                                   (DAC) Module" for additional information.

                                                       The CDAFVR<1:0> bits of the FVRCON register are
                                                       used to enable and configure the gain amplifier settings
                                                       for the reference supplied to the DAC and comparator
                                                       module. Reference Section 17.0 Section 19.0 "Digi-
                                                       tal-to-Analog Converter (DAC) Module" and
                                                       Section 20.0 "Comparator Module" for additional
                                                       information.

                                                       15.2 FVR Stabilization Period

                                                       When the Fixed Voltage Reference module is enabled, it
                                                       requires time for the reference and amplifier circuits to
                                                       stabilize. Once the circuits stabilize and are ready for use,
                                                       the FVRRDY bit of the FVRCON register will be set. See
                                                       Section 30.0 "Electrical Specifications" for the
                                                       minimum delay requirement.

2011 Microchip Technology Inc.  Preliminary           DS41579A-page 141
PIC16(L)F1782/3

FIGURE 15-1:       VOLTAGE REFERENCE BLOCK DIAGRAM

                          ADFVR<1:0> 2                                       FVR BUFFER1
                                                                     X1     (To ADC Module)
                                                                     X2
                                                                     X4

                   CDAFVR<1:0> 2                                                 FVR BUFFER2
                                                                X1          (To Comparators, DAC)
                                                                X2
                                                                X4

                   FVREN                         +                          To BOR, LDO
                                                                                                          HFINTOSC
                                                 _                  FVRRDY
                                                                            HFINTOSC Enable
                   Any peripheral requiring the
                          Fixed Reference
                          (See Table 15-1)

TABLE 15-1: PERIPHERALS REQUIRING THE FIXED VOLTAGE REFERENCE (FVR)

Peripheral         Conditions                                               Description

HFINTOSC      FOSC<2:0> = 100 and                                   INTOSC is active and device is not in Sleep
              IRCF<3:0>  000x
BOR                                                                 BOR always enabled
LDO           BOREN<1:0> = 11                                       BOR disabled in Sleep mode, BOR Fast Start enabled.
PSMC 64 MHz                                                         BOR under software control, BOR Fast Start enabled
              BOREN<1:0> = 10 and BORFS = 1                         The device runs off of the ULP regulator when in Sleep mode.

              BOREN<1:0> = 01 and BORFS = 1                         64 MHz clock forces HFINTOSC on during Sleep.

              All PIC16F1782/3 devices, when
              VREGPM = 10 and not in Sleep

              PxSRC<1:0>

DS41579A-page 142                                   Preliminary              2011 Microchip Technology Inc.
                                                                       PIC16(L)F1782/3

15.3 FVR Control Registers

REGISTER 15-1: FVRCON: FIXED VOLTAGE REFERENCE CONTROL REGISTER

    R/W-0/0      R-q/q           R/W-0/0  R/W-0/0             R/W-0/0  R/W-0/0           R/W-0/0  R/W-0/0
    FVREN    FVRRDY(1)            TSEN    TSRNG
bit 7                                                                CDAFVR<1:0>         ADFVR<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         q = Value depends on condition
`1' = Bit is set

bit 7        FVREN: Fixed Voltage Reference Enable bit
bit 6        0 = Fixed Voltage Reference is disabled
bit 5        1 = Fixed Voltage Reference is enabled
bit 4
bit 3-2      FVRRDY: Fixed Voltage Reference Ready Flag bit(1)
             0 = Fixed Voltage Reference output is not ready or not enabled
bit 1-0      1 = Fixed Voltage Reference output is ready for use

             TSEN: Temperature Indicator Enable bit
             0 = Temperature indicator is disabled
             1 = Temperature indicator is enabled

             TSRNG: Temperature Indicator Range Selection bit
             0 = VOUT = VDD - 2VT (Low Range)
             1 = VOUT = VDD - 4VT (High Range)

             CDAFVR<1:0>: Comparator and DAC Fixed Voltage Reference Selection bit

             00 = Comparator and DAC Fixed Voltage Reference Peripheral output is off.
             01 = Comparator and DAC Fixed Voltage Reference Peripheral output is 1x (1.024V)
             10 = Comparator and DAC Fixed Voltage Reference Peripheral output is 2x (2.048V)(2)
             11 = Comparator and DAC Fixed Voltage Reference Peripheral output is 4x (4.096V)(2)

             ADFVR<1:0>: ADC Fixed Voltage Reference Selection bit
             00 = ADC Fixed Voltage Reference Peripheral output is off.
             01 = ADC Fixed Voltage Reference Peripheral output is 1x (1.024V)
             10 = ADC Fixed Voltage Reference Peripheral output is 2x (2.048V)(2)
             11 = ADC Fixed Voltage Reference Peripheral output is 4x (4.096V)(2)

Note 1: FVRRDY is always `1' on PIC16F1782/3 only.
        2: Fixed Voltage Reference output cannot exceed VDD.

TABLE 15-2: SUMMARY OF REGISTERS ASSOCIATED WITH FIXED VOLTAGE REFERENCE

Name         Bit 7      Bit 6    Bit 5                 Bit 4  Bit 3    Bit 2      Bit 1    Bit 0  Register
                                                                                         ADFVR0   on page
FVRCON       FVREN FVRRDY        TSEN                  TSRNG CDAFVR1 CDAFVR0 ADFVR1
                                                                                                     143

Legend: Shaded cells are not used with the Fixed Voltage Reference.

2011 Microchip Technology Inc.                        Preliminary                       DS41579A-page 143
PIC16(L)F1782/3

NOTES:

DS41579A-page 144  Preliminary   2011 Microchip Technology Inc.
                                                            PIC16LF1904/6/7

16.0 TEMPERATURE INDICATOR                                  FIGURE 16-1:  TEMPERATURE CIRCUIT
         MODULE                                                           DIAGRAM

This family of devices is equipped with a temperature       VDD
circuit designed to measure the operating temperature                         TSEN
of the silicon die. The circuit's range of operating
temperature falls between -40C and +85C. The                                   TSRNG
output is a voltage that is proportional to the device
temperature. The output of the temperature indicator is                   VOUT   ADC                ADC
internally connected to the device ADC.                                          MUX

The circuit may be used as a temperature threshold                                            n
detector or a more accurate temperature indicator,                                     CHS bits
depending on the level of calibration performed. A one-                          (ADCON0 register)
point calibration allows the circuit to indicate a
temperature closely surrounding that point. A two-point     16.2 Minimum Operating VDD vs.
calibration allows the circuit to sense the entire range             Minimum Sensing Temperature
of temperature more accurately. Reference Application
Note AN1333, "Use and Calibration of the Internal           When the temperature circuit is operated in low range,
Temperature Indicator" (DS01333) for more details           the device may be operated at any operating voltage
regarding the calibration process.                          that is within specifications.

16.1 Circuit Operation                                      When the temperature circuit is operated in high range,
                                                            the device operating voltage, VDD, must be high
Figure 16-1 shows a simplified block diagram of the         enough to ensure that the temperature circuit is cor-
temperature circuit. The proportional voltage output is     rectly biased.
achieved by measuring the forward voltage drop across
multiple silicon junctions.                                 Table 16-1 shows the recommended minimum VDD vs.
                                                            range setting.
Equation 16-1 describes the output characteristics of
the temperature indicator.                                  TABLE 16-1: RECOMMENDED VDD VS.
                                                                                 RANGE
EQUATION 16-1: VOUT RANGES
                                                            Min. VDD, TSRNG = 1  Min. VDD, TSRNG = 0
           High Range: VOUT = VDD - 4VT                                3.6V                 1.8V

           Low Range: VOUT = VDD - 2VT                      16.3 Temperature Output

The temperature sense circuit is integrated with the        The output of the circuit is measured using the internal
Fixed Voltage Reference (FVR) module. See                   Analog-to-Digital Converter. A channel is reserved for
Section 15.0 "Fixed Voltage Reference (FVR)" for            the temperature circuit output. Refer to Section 17.0
more information.                                           "Analog-to-Digital Converter (ADC) Module" for
                                                            detailed information.
The circuit is enabled by setting the TSEN bit of the
FVRCON register. When disabled, the circuit draws no        16.4 ADC Acquisition Time
current.
                                                            To ensure accurate temperature measurements, the
The circuit operates in either high or low range. The high  user must wait at least 200 s after the ADC input
range, selected by setting the TSRNG bit of the             multiplexer is connected to the temperature indicator
FVRCON register, provides a wider output voltage. This      output before the conversion is performed. In addition,
provides more resolution over the temperature range,        the user must wait 200 s between sequential
but may be less consistent from part to part. This range    conversions of the temperature indicator output.
requires a higher bias voltage to operate and thus, a
higher VDD is needed.

The low range is selected by clearing the TSRNG bit of
the FVRCON register. The low range generates a lower
voltage drop and thus, a lower bias voltage is needed to
operate the circuit. The low range is provided for low
voltage operation.

2011 Microchip Technology Inc.  Preliminary                                            DS41579A-page 145
PIC16LF1904/6/7

NOTES:

DS41579A-page 146  Preliminary   2011 Microchip Technology Inc.
                                                                                   PIC16(L)F178X

17.0 ANALOG-TO-DIGITAL                                            The ADC voltage reference is software selectable to be
                                 &nbs