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

型号

产品描述

搜索
 

PIC16LF1704-E-ML

器件型号:PIC16LF1704-E-ML
器件类别:半导体    嵌入式处理器和控制器   
文件大小:57622.74KB,共10页
厂商名称:Microchip
厂商官网:https://www.microchip.com
下载文档

器件描述

8-bit Microcontrollers - MCU 4K Word Flash 512B RAM High-Speed Comp

参数

产品属性属性值
产品种类:
Product Category:
8-bit Microcontrollers - MCU
制造商:
Manufacturer:
Microchip
RoHS:YES
封装:
Packaging:
Tube
商标:
Brand:
Microchip Technology
系列:
Series:
PIC16
工厂包装数量:
Factory Pack Quantity:
91
商标名:
Tradename:
PIC

PIC16LF1704-E-ML器件文档内容

                                                    PIC16(L)F1704/8

             14/20-Pin 8-Bit Advanced Analog Flash Microcontrollers

High-Performance RISC CPU                           Special Microcontroller Features

•  C Compiler Optimized Architecture                •  Operating Voltage Range:

•  Only 49 Instructions                                -  1.8V-3.6V (PIC16LF1704/8)

•  Up to 14 Kbytes Linear Program Memory               -  2.3V-5.5V (PIC16F1704/8)

   Addressing                                       •  Temperature Range:

•  Operating Speed:                                    -  Industrial: -40°C to 85°C

   -  DC – 32 MHz                                      -  Extended: -40°C to 125°C

   -  DC – 125 ns instruction cycle                 •  Power-on Reset (POR)

•  Interrupt Capability with Automatic Context      •  Low Power Brown-Out Reset (LPBOR)

   Saving                                           •  Extended Watch-Dog Timer (WDT):

•  16-Level Deep Hardware Stack with Optional          -  Programmable period from 1 ms to 256s

   Overflow/Underflow Reset                         •  Programmable Code Protection

•  Direct, Indirect and Relative Addressing modes:  •  In-Circuit Serial Programming™ (ICSP™) via

   -  Two full 16-bit File Select Registers (FSRs)     Two Pins

   -  FSRs can read program and data memory         •  In-Circuit Debug (ICD) via Two Pins

•  High-Endurance Flash Data Memory (HEF)           •  Enhanced Low-Voltage Programming (LVP)

   -  128 bytes of nonvolatile data storage         •  Power-Saving Sleep mode

   -  100k erase/write cycles

                                                    Digital Peripheral Features

Flexible Oscillator Structure                       •  Up to 17 I/O Pins and one Input-only Pin:

•  16 MHz Internal Oscillator Block:                   -  High current sink/source for LED drivers

   -  Accurate to ±1%, typical                         -  Individually programmable weak pull-ups

   -  Software selectable frequency range from         -  Interrupt-on-change pin option with edge

      16 MHz to 250 kHz                                   selectable option

   -  PLL multiplier to 32 MHz                      •  Timer0: 8-Bit Timer/Counter with 8-Bit

•  31 kHz Low-Power Internal Oscillator                Programmable Prescaler

•  External Oscillator Block with:                  •  Enhanced Timer1:

   -  Three crystal/resonator modes up to 20 MHz       -  16-bit timer/counter with prescaler

   -  Three external clock modes up to 20 MHz          -  External Gate Input mode

•  Fail-Safe Clock Monitor:                            -  Dedicated low-power 32 kHz oscillator driver

   -  Allows for safe shutdown if peripheral clock  •  Timer2:

      stops                                            -  Up to three (TMR2/4/6)

•  Two-Speed Oscillator Start-up                       -  8-Bit Timer/Counter

•  Oscillator Start-up Timer (OST)                     -  8-Bit Period Register

                                                       -  Prescaler and Postscaler

eXtreme Low-Power (XLP) Features                    •  Capture, Compare, PWM (CCP) Module

•  Sleep mode: 50 nA @ 1.8V, typical                •  Master Synchronous Serial Port (SSP) with SPI
                                                       and I2C with:

•  Watchdog Timer: 500 nA @ 1.8V, typical              -  7-bit address masking

•  Secondary Oscillator: 500 nA @ 32 kHz               -  SMBus/PMBusTM compatibility

•  Operating Current:                               •  Enhanced Universal Synchronous Asynchronous

   -  8 µA @ 32 kHz, 1.8V, typical                     Receiver Transmitter (EUSART):

   -  32 µA/MHz @ 1.8V, typical                        -  RS-232, RS-485 and LIN compatible

                                                       -  Auto-Baud Detect

                                                       -  Auto-wake-up on Start

 2013-2015 Microchip Technology Inc.                                                  DS40001715D-page 1
PIC16(L)F1704/8

Digital Peripheral Features (Continued)                                                                                                                                               Analog Peripheral Features

•  Complementary Output Generator (COG):                                                                                                                                              •    Operational Amplifiers:

   -  Push-Pull, Full Bridge, and Steering modes                                                                                                                                           -  Up to two configurable op amps

   -  Dedicated Rise/Fall Input Triggers                                                                                                                                                   -  Selectable internal and external channels

   -  Dedicated Deadtime Delay Counters                                                                                                                                                    -  High/Low selectable Gain Bandwidth Product

   -  Dedicated Phase Delay Counters                                                                                                                                                  •    Two High-Speed Comparators:

   -  Dedicated Blanking Delay Counters                                                                                                                                                    -  60 ns response time

   -  Concurrent Auto-Shutdown Selection                                                                                                                                                   -  Low-power/High-power mode

•  Two Pulse Width Modulation (PWM) modules:                                                                                                                                               -  Comparator outputs externally accessible

   -  10-bit Duty-Cycle Control                                                                                                                                                            -  Software hysteresis enable

•  Three Configurable Logic Cell (CLC) modules:                                                                                                                                       •    Analog-to-Digital Converter (ADC) module

   -  Generate a selected function of up to four                                                                                                                                           -  10-bit resolution, 12 channels

      inputs                                                                                                                                                                               -  Auto conversion start capability

   -  Combinational and State Logic                                                                                                                                                        -  Conversion available during Sleep

   -  External or Internal input/output pins                                                                                                                                          •    8-Bit Digital-to-Analog Converter (DAC):

   -  Operation in Sleep                                                                                                                                                                   -  Output available externally

•  Peripheral Pin Select (PPS):                                                                                                                                                            -  Positive and negative reference selection

   -  Digital outputs mapped to any GPIO pin                                                                                                                                               -  Internal connections to comparators,

   -  Digital inputs from any GPIO pin                                                                                                                                                        op amps, Fixed Voltage Reference (FVR)

   -  CLC input multiplexing                                                                                                                                                                  and ADC

                                                                                                                                                                                      •    Zero-Cross Detection Circuit:

                                                                                                                                                                                           -  Constant Voltage Output

                                                                                                                                                                                           -  Current Source/Sink

                                                                                                                                                                                           -  Interrupt on Edge Detect

                                                                                                                                                                                      •    Voltage Reference module:

                                                                                                                                                                                           -  Fixed Voltage Reference (FVR) with 1.024V,

                                                                                                                                                                                              2.048V and 4.096V output levels

PIC16(L)F170x Family Types

      Device   Data Sheet Index  Program Memory  Flash (words)  Data SRAM  (bytes)  High-Endurance  Flash (bytes)  I/O’s(2)  10-bit ADC (ch)  8-bit DAC  High-Speed/  Comparators  Op Amp     Zero Cross  Timers  (8/16-bit)  CCP  PWM  COG  EUSART  MSSP (I2C/SPI)  CLC  PPS  Debug(1)  XLP

PIC16(L)F1703  (3)               2048                           256                 128                            12        8                0          0                         2          1           2/1                 2    0    0    0       1               0    Y    I/E       Y

PIC16(L)F1704  (1)               4096                           512                 128                            12        8                1          2                         2          1           4/1                 2    2    1    1       1               3    Y    I/E       Y

PIC16(L)F1705  (2)               8192                           1024                128                            12        8                1          2                         2          1           4/1                 2    2    1    1       1               3    Y    I/E       Y

PIC16(L)F1707  (3)               2048                           256                 128                            18        12               0          0                         2          1           2/1                 2    0    0    0       1               0    Y    I/E       Y

PIC16(L)F1708  (1)               4096                           512                 128                            18        12               1          2                         2          1           4/1                 2    2    1    1       1               3    Y    I/E       Y

PIC16(L)F1709  (2)               8192                           1024                128                            18        12               1          2                         2          1           4/1                 2    2    1    1       1               3    Y    I/E       Y

Note  1:      Debugging Methods: (I) – Integrated on Chip; (H) – using Debug Header; E – using Emulation                                                                                                                                             Header.

      2:      One pin is input-only.

Data Sheet Index: (Unshaded devices are described in this document.)

      1:      DS40001715                                        PIC16(L)F1704/8 Data Sheet, 14/20-Pin Flash, 8-bit Microcontrollers.

      2:      DS40001729                                        PIC16(L)F1705/9 Data Sheet, 14/20-Pin Flash, 8-bit Microcontrollers.

      3:      DS40001722                                                   PIC16(L)F1703/7 Data Sheet, 14/20-Pin Flash, 8-bit Microcontrollers

   Note:      For other small form-factor package availability and marking information, please visit

              http://www.microchip.com/packaging or contact your local sales office.

DS40001715D-page 2                                                                                                                                                                                                                  2013-2015 Microchip Technology                      Inc.
                                                                                                  PIC16(L)F1704/8

PIN DIAGRAMS

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

                                       VDD                    1                        14    VSS

                                       RA5                    2         PIC16(L)F1704  13    RA0/ICSPDAT

                                       RA4                    3                        12    RA1/ICSPCLK

                                       VPP/MCLR/RA3           4                        11    RA2

                                       RC5                    5                        10    RC0

                                       RC4                    6                           9  RC1

                                       RC3                    7                           8  RC2

Note:      See Table 1    for the      pin allocation table.

FIGURE 2:  16-PIN         QFN

                                                              VDD  NC   NC   VSS

                                                              16   15   14   13

                                       RA5                 1                           12    RA0/ICSPDAT

                                       RA4                 2                           11    RA1/ICSPCLK

                                       RA3/MCLR/VPP        3  PIC16(L)F1704            10    RA2

                                       RC5                 4                           9     RC0

                                                              5    6    7    8

                                                              RC4  RC3  RC2  RC1

Note:      See  Table  1  for  the  pin allocation table.

 2013-2015 Microchip Technology Inc.                                                                     DS40001715D-page 3
PIC16(L)F1704/8

FIGURE 3:           20-PIN PDIP, SOIC,SSOP

                                        VDD                       1                                    20   VSS

                                        RA5                       2                                    19   ICSPDAT/RA0

                                        RA4                       3                                    18   ICSPCLK/RA1

                                        VPP/MCLR/RA3              4              PIC16(L)F1708         17   RA2

                                        RC5                       5                                    16   RC0

                                        RC4                       6                                    15   RC1

                                        RC3                       7                                    14   RC2

                                        RC6                       8                                    13   RB4

                                        RC7                       9                                    12   RB5

                                        RB7                       10                                   11   RB6

Note:      See      Table          2  for the pin allocation table.

FIGURE 4:           20-PIN QFN

                                                                  RA4  RA5  VDD  VSS  RA0/ICSPDAT

                                                                  20   19  18  17     16

                                        VPP/MCLR/RA3           1                                   15  RA1/ICSPCLK

                                        RC5                    2                                   14  RA2

                                        RC4                    3  PIC16(L)F1708                    13  RC0

                                        RC3                    4                                   12  RC1

                                        RC6                    5                                   11  RC2

                                                                  6    7    8    9    10

                                                                  RC7  RB7  RB6  RB5  RB4

Note:      See      Table  2  for  the  pin allocation table.

DS40001715D-page 4                                                                                                   2013-2015  Microchip  Technology  Inc.
 2013-2015 Microchip Technology Inc.  Pin Allocation Tables

                                       TABLE 1:                    14/16-PIN ALLOCATION TABLE (PIC16(L)F1704)

                                       I/O(2)      PDIP/SOIC/SSOP  QFN  ADC  Reference  Comparator  Op Amp   DAC       Zero Cross  Timers    CCP                          PWM  COG       MSSP    EUSART            CLC        Interrupt  Pull-up  Basic

                                       RA0         13              12   AN0  VREF-      C1IN+       —        DAC1OUT1  —           —         —                            —    —         —       —                 —          IOC        Y        ICSPDAT

                                       RA1         12              11   AN1  VREF+      C1IN0-      —        —         —           —         —                            —    —         —       —                 —          IOC        Y        ICSPCLK

                                                                                        C2IN0-

                                       RA2         11              10   AN2  —          —           —        DAC1OUT2  ZCD         T0CKI(1)  —                            —    COGIN(1)  —       —                 —          INT(1)     Y        —

                                                                                                                                                                                                                              IOC

                                       RA3         4               3    —    —          —           —        —         —           —         —                            —    —         —       —                 —          IOC        Y        MCLR

                                                                                                                                                                                                                                                  VPP

                                       RA4         3               2    AN3  —          —           —        —         —           T1G(1)    —                            —    —         —       —                 —          IOC        Y        CLKOUT

                                                                                                                                   SOSCO                                                                                                          OSC2

                                       RA5         2               1    —    —          —           —        —         —           T1CKI(1)  —                            —    —         —       —                 CLCIN3(1)  IOC        Y        CLKIN

                                                                                                                                   SOSCI                                                                                                          OSC1

                                       RC0         10              9    AN4  —          C2IN+       OPA1IN+  —         —           —         —                            —    —         SCK(1)  —                 —          IOC        Y        —

                                                                                                                                                                                         SCL(3)

                                       RC1         9               8    AN5  —          C1IN1-      OPA1IN-  —         —           —         —                            —    —         SDI(1)  —                 CLCIN2(1)  IOC        Y        —

                                                                                        C2IN1-                                                                                           SDA(3)

                                       RC2         8               7    AN6  —          C1IN2-      OPA1OUT  —         —           —         —                            —    —         —       —                 —          IOC        Y        —

                                                                                        C2IN2-

                                       RC3         7               6    AN7  —          C1IN3-      OPA2OUT  —         —           —         CCP2(1)                      —    —         SS(1)   —                 CLCIN0(1)  IOC        Y        —

                                                                                        C2IN3-

                                       RC4         6               5    —    —          —           OPA2IN-  —         —           —         —                            —    —         —       CK(1)             CLCIN1(1)  IOC        Y        —        PIC16(L)F1704/8

                                       RC5         5               4    —    —          —           OPA2IN+  —         —           —         CCP1(1)                      —    —         —       RX(1,3)           —          IOC        Y        —

                                       VDD         1               16   —    —          —           —        —         —           —         —                            —    —         —       —                 —          —          —        VDD

                                       VSS         14              13   —    —          —           —        —         —           —         —                            —    —         —       —                 —          —          —        VSS

                                                   —               —    —    —          C1OUT       —        —         —           —         CPP1     PWM3OUT                  COGA      SDA(3)  CK                CLC1OUT    —          —        —

                                       OUT(2)      —               —    —    —          C2OUT       —        —         —           —         CPP2     PWM4OUT                  COGB      SCL(3)  DT(3)             CLC2OUT    —          —        —

                                                   —               —    —    —          —           —        —         —           —         —                            —    COGC      SDO     TX                CLC3OUT    —          —        —

DS40001715D-page 5                                 —               —    —    —          —           —        —         —           —         —                            —    COGD      SCK     —                 —          —          —        —

                                       Note    1:  Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-1.

                                               2:  All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output selection registers. See Register 12-3.

                                               3:  These peripheral functions are bidirectional. The output pin selections must be the same as the input pin selections.
DS40001715D-page 6                     TABLE 2:                      20-PIN ALLOCATION TABLE (PIC16(L)F1708)                                                                                                                                                           PIC16(L)F1704/8

                                       I/O(2)      PDIP/SOIC/  SSOP  QFN  ADC   Reference  Comparator  Op Amp   DAC       Zero Cross  Timers    CCP                                   PWM  COG       MSSP    EUSART            CLC        Interrupt  Pull-up  Basic

                                       RA0         19                16   AN0   VREF-      C1IN+       —        DAC1OUT1  —           —         —                                     —    —         —       —                 —          IOC        Y        ICSPDAT

                                       RA1         18                15   AN1   VREF+      C1IN0-      —        —         —           —         —                                     —    —         —       —                 —          IOC        Y        ICSPCLK

                                                                                           C2IN0-

                                       RA2         17                14   AN2   —          —           —        DAC1OUT2  ZCD         T0CKI(1)  —                                     —    COGIN(1)  —       —                 —          INT(1)     Y        —

                                                                                                                                                                                                                                          IOC

                                       RA3         4                 1    —     —          —           —        —         —           —         —                                     —    —         —       —                 —          IOC        Y        MCLR

                                                                                                                                                                                                                                                              VPP

                                       RA4         3                 20   AN3   —          —           —        —         —           T1G(1)    —                                     —    —         —       —                 —          IOC        Y        CLKOUT

                                                                                                                                      SOSCO                                                                                                                   OSC2

                                       RA5         2                 19   —     —          —           —        —         —           T1CKI     —                                     —    —         —       —                 CLCIN3(1)  IOC        Y        CLKIN

                                                                                                                                      SOSCI                                                                                                                   OSC1

                                       RB4         13                10   AN10  —          —           OPA1IN-  —         —           —         —                                     —    —         SDI(1)  —                 —          IOC        Y        —

                                                                                                                                                                                                     SDA(3)

                                       RB5         12                9    AN11  —          —           OPA1IN+  —         —           —         —                                     —    —         —       RX(1,3)                      IOC        Y        —

                                       RB6         11                8    —     —          —           —        —         —           —         —                                     —    —         SCK(1)  —                 —          IOC        Y        —

                                                                                                                                                                                                     SCL(3)

                                       RB7         10                7    —     —          —           —        —         —           —         —                                     —    —         —       CK(1)             —          IOC        Y        —

                                       RC0         16                13   AN4   —          C2IN+       —        —         —           —         —                                     —    —         —       —                 —          IOC        Y        —

                                       RC1         15                12   AN5   —          C1IN1-      —        —         —           —         —                                     —    —         —       —                 CLCIN2(1)  IOC        Y        —

                                                                                           C2IN1-

                                       RC2         14                11   AN6   —          C1IN2-      OPA1OUT  —         —           —         —                                     —    —         —       —                 —          IOC        Y        —

                                                                                           C2IN2-

                                       RC3         7                 4    AN7   —          C1IN3-      OPA2OUT  —         —           —         CCP2(1)                               —    —         —       —                 CLCIN0(1)  IOC        Y        —

                                                                                           C2IN3-

                                       RC4         6                 3    —     —          —           —        —         —           —         —                                     —    —         —       —                 CLCIN1(1)  IOC        Y        —

 2013-2015 Microchip Technology Inc.  RC5         5                 2    —     —          —           —        —         —           —         CCP1(1)                               —    —         —       —                 —          IOC        Y        —

                                       RC6         8                 5    AN8   —          —           OPA2IN-  —         —           —         —                                     —    —         SS(1)   —                 —          IOC        Y        —

                                       RC7         9                 6    AN9   —          —           OPA2IN+  —         —           —         —                                     —    —         —       —                 —          IOC        Y        —

                                       VDD         1                 18   —     —          —           —        —         —           —         —                                     —    —         —       —                 —          —          —        VDD

                                       VSS         20                17   —     —          —           —        —         —           —         —                                     —    —         —       —                 —          —          —        VSS

                                                   —                 —    —     —          C1OUT       —        —         —           —         CPP1     PWM3OUT                           COGA      SDA(3)  CK                CLC1OUT    —          —        —

                                       OUT(2)      —                 —    —     —          C2OUT       —        —         —           —         CPP2     PWM4OUT                           COGB      SCL(3)  DT(3)             CLC2OUT    —          —        —

                                                   —                 —    —     —          —           —        —         —           —         —                                     —    COGC      SDO     TX                CLC3OUT    —          —        —

                                                   —                 —    —     —          —           —        —         —           —         —                                     —    COGD      SCK     —                 —          —          —        —

                                       Note    1:              Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-2.

                                               2:              All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output selection registers. See Register 12-3.

                                               3:              These peripheral functions are bidirectional. The output pin selections must be the same as the input pin selections.
                                       PIC16(L)F1704/8

Table of Contents

Device Overview ................................................................................................................................................................................... 9

Enhanced Mid-Range CPU ................................................................................................................................................................. 17

Memory Organization..........................................................................................................................................................................                19

Device Configuration ........................................................................................................................................................................... 48

Resets ................................................................................................................................................................................................. 54

Oscillator Module (with Fail-Safe Clock Monitor) ................................................................................................................................ 62

Interrupts ............................................................................................................................................................................................. 80

Power-Down Mode (Sleep) ................................................................................................................................................................. 93

Watchdog Timer (WDT) ...................................................................................................................................................................... 97

Flash Program Memory Control ........................................................................................................................................................ 102

I/O Ports ............................................................................................................................................................................................ 118

Peripheral Pin Select (PPS) Module ................................................................................................................................................. 136

Interrupt-On-Change ......................................................................................................................................................................... 143

Fixed Voltage Reference (FVR) ....................................................................................................................................................... 149

Temperature Indicator Module .......................................................................................................................................................... 152

Comparator Module  .......................................................................................................................................................................... 154

Pulse Width Modulation (PWM) ........................................................................................................................................................ 163

Complementary Output Generator (COG) Module ........................................................................................................................... 169

Configurable Logic Cell (CLC) .......................................................................................................................................................... 201

Analog-to-Digital Converter (ADC) Module ....................................................................................................................................... 217

Operational Amplifier (OPA) Modules ............................................................................................................................................... 231

8-Bit Digital-to-Analog Converter (DAC1) Module ............................................................................................................................. 234

Zero-Cross Detection (ZCD) Module ................................................................................................................................................ 238

Timer0 Module .................................................................................................................................................................................. 242

Timer1 Module with Gate Control ..................................................................................................................................................... 245

Timer2/4/6 Module ............................................................................................................................................................................ 256

Capture/Compare/PWM Modules ..................................................................................................................................................... 261

Master Synchronous Serial Port (MSSP) Module .............................................................................................................................. 268

Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ........................................................................ 324

In-Circuit Serial Programming™ (ICSP™) ........................................................................................................................................ 355

Instruction Set Summary ................................................................................................................................................................... 357

Electrical Specifications .................................................................................................................................................................... 371

DC and AC Characteristics Graphs and Charts ................................................................................................................................ 403

Development Support ....................................................................................................................................................................... 425

Packaging Information ...................................................................................................................................................................... 429

Appendix A: Data Sheet Revision History.........................................................................................................................................                             448

The Microchip Web Site .................................................................................................................................................................... 449

Customer Change Notification Service ............................................................................................................................................. 449

Customer Support ............................................................................................................................................................................. 449

Product Identification System  ........................................................................................................................................................... 450

 2013-2015 Microchip Technology Inc.  DS40001715D-page 7
PIC16(L)F1704/8

                              TO OUR VALUED CUSTOMERS

It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Microchip

products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined and

enhanced as new volumes and updates are introduced.

If you have any questions or comments regarding this publication, please contact the Marketing Communications Department via

E-mail at docerrors@microchip.com. 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., DS30000000A is version A of document DS30000000).

Errata

An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current

devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision

of silicon and revision of document to which it applies.

To determine if an errata sheet exists for a particular device, please check with one of the following:

•  Microchip’s Worldwide Web site; http://www.microchip.com

•  Your local Microchip sales office (see last page)

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

using.

Customer Notification System

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

DS40001715D-page 8                                             2013-2015 Microchip Technology Inc.
                                                                                PIC16(L)F1704/8

1.0     DEVICE OVERVIEW

The PIC16(L)F1704/8 are described within this data

sheet.  They   are  available  in   14-pin  and   20-pin         DIP

packages    and     16-pin     and  20-pin  QFN   packages.

Figure 1-1     shows        a  block   diagram    of             the

PIC16(L)F1704/8 devices. Table 1-2 shows the pinout

descriptions.

Reference Table 1-1 for peripherals available per device.

TABLE 1-1:          DEVICE PERIPHERAL

                    SUMMARY

Peripheral                                        PIC16(L)F1704  PIC16(L)F1708

Analog-to-Digital Converter (ADC)                 ●              ●

Digital-to-Analog Converter (DAC)                 ●              ●

Complementary Output Generator (COG)              ●              ●

Fixed Voltage Reference (FVR)                     ●              ●

Zero Cross Detection (ZCD)                        ●              ●

Temperature Indicator                             ●              ●

Capture/Compare/PWM (CCP/ECCP) Modules

                                            CCP1  ●              ●

                                            CCP2  ●              ●

Comparators

                                            C1    ●              ●

                                            C2    ●              ●

Configurable Logic Cell (CLC)

                                            CLC1  ●              ●

                                            CLC2  ●              ●

                                            CLC3  ●              ●

Enhanced Universal Synchronous/Asynchronous

Receiver/Transmitter (EUSART)

                                      EUSART      ●              ●

Master Synchronous Serial Ports

                                            MSSP  ●              ●

Op Amp

                                      Op Amp 1    ●              ●

                                      Op Amp 2    ●              ●

Pulse Width Modulator (PWM)

                                            PWM3  ●              ●

                                            PWM4  ●              ●

Timers

                                       Timer0     ●              ●

                                       Timer1     ●              ●

                                       Timer2     ●              ●

 2013-2015 Microchip Technology Inc.                                           DS40001715D-page 9
PIC16(L)F1704/8

FIGURE 1-1:             PIC16(L)F1704/8 BLOCK DIAGRAM

                                                      Program

                                                      Flash Memory

                                                                                               RAM          PORTA

                                                                                                            PORTB(1)

CLKOUT       Timing

             Generation

CLKIN        HFINTOSC/                                CPU                                                   PORTC

             LFINTOSC

             Oscillator

                                                      Figure 1-1

             MCLR

                                                                                                            ZCD

Op Amps                 PWM          Timer0      Timer1           Timer2  MSSP         Comparators

                                                                                                            COG

             Temp.           ADC                 FVR       DAC            CCPs         EUSART       CLCs

             Indicator       10-Bit

       Note  1:         PIC16(L)F1708 only.

             2:         See applicable chapters  for more information on peripherals.

DS40001715D-page 10                                                                             2013-2015  Microchip Technology  Inc.
                                                                                   PIC16(L)F1704/8

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

               Name            Function            Input   Output                              Description

                                                   Type    Type

RA0/AN0/VREF-/C1IN+/                     RA0       TTL/ST  CMOS    General purpose I/O.

DAC1OUT/ICSPDAT                          AN0       AN      —       ADC Channel 0 input.

                                         VREF-     AN      —       ADC Negative Voltage Reference input.

                                         C1IN+     AN      —       Comparator C1 positive input.

                               DAC1OUT             —       AN      Digital-to-Analog Converter output.

                               ICSPDAT             ST      CMOS    ICSP™ Data I/O.

RA1/AN1/VREF+/C1IN0-/C2IN0-/             RA1       TTL/ST  CMOS    General purpose I/O.

ICSPCLK                                  AN1       AN      —       ADC Channel 1 input.

                                         VREF+     AN      —       ADC Voltage Reference input.

                                       C1IN0-      AN      —       Comparator C2 negative input.

                                       C2IN0-      AN      —       Comparator C3 negative input.

                               ICSPCLK             ST      —       Serial Programming Clock.

RA2/AN2/DAC1OUT2/ZCD/                    RA2       TTL/ST  CMOS    General purpose I/O.

T0CKI(1)/COGIN(1)/INT(1)                 AN2       AN      —       ADC Channel 2 input.

                               DAC1OUT2            —       AN      Digital-to-Analog Converter output.

                                         ZCD       —       AN      Zero Cross Detection Current Source/Sink.

                                         T0CKI     TTL/ST  —       Timer0 clock input.

                                       COGIN       TTL/ST  —       Complementary Output Generator input.

                                         INT       TTL/ST  —       External interrupt.

RA3/MCLR/VPP                             RA3       TTL/ST  CMOS    General purpose input.

                                         MCLR      ST      —       Master Clear with internal pull-up.

                                         VPP       HV      —       Programming voltage.

RA4/AN3/T1G(1)/SOSCO/                    RA4       TTL/ST  CMOS    General purpose I/O.

OSC2/CLKOUT                              AN3       AN      —       ADC Channel 3 input.

                                         T1G       TTL/ST  —       Timer1 gate input.

                                      SOSCO        XTAL    XTAL    Secondary Oscillator Connection.

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

                               CLKOUT              —       CMOS    FOSC/4 output.

RA5/T1CKI(1)/SOSCI/                      RA5       TTL/ST  CMOS    General purpose I/O.

CLCIN3(1)/OSC1/CLKIN                     T1CKI     TTL/ST  —       Timer1 clock input.

                                       SOSCI       XTAL    XTAL    Secondary Oscillator Connection.

                                      CLCIN3       TTL/ST  —       Configurable Logic Cell source input.

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

                                       CLKIN       TTL/ST  —       External clock input (EC mode).

RC0/AN4/C2IN+/OPA1IN+/                   RC0       TTL/ST  —       General purpose I/O.

SCK(1)/SCL(3)                            AN4       AN      —       ADC Channel 4 input.

                                         C2IN+     AN      —       Comparator positive input.

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

                                         SCK       TTL/ST  —       SPI clock.

                                         SCL       I2C     —       I2C clock.

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

          HV   = High Voltage            XTAL   =  Crystal levels

Note  1:  Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-1.

      2:  All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output

          selection registers. See Register 12-3.

      3:  These I2C functions are bidirectional. The output pin selections must be the same as the input pin selections.

 2013-2015 Microchip Technology Inc.                                                                       DS40001715D-page 11
PIC16(L)F1704/8

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

               Name            Function             Input   Output                         Description

                                                    Type    Type

RC1/AN5/C1IN1-/C2IN1-/                   RC1        TTL/ST  CMOS    General purpose I/O.

OPA1IN-/SDI(1)/SDA(3)/                   AN5        AN      —       ADC Channel 5 input.

CLCIN2(1)                              C1IN1-       AN      —       Comparator C1 negative input.

                                       C2IN1-       AN      —       Comparator C2 negative input.

                                       OPA1IN-      AN      —       Operational Amplifier 1 inverting input.

                                         SDI        CMOS    —       SPI data input.

                                         SDA        I2C     —       I2C data input.

                                       CLCIN2       TTL/ST  —       Configurable Logic Cell source input.

RC2/AN6/C1IN2-/C2IN2-/                   RC2        TTL/ST  CMOS    General purpose I/O.

OPA1OUT                                  AN6        AN      —       ADC Channel 6 input.

                                       C1IN2-       AN      —       Comparator C1 negative input.

                                       C2IN2-       AN      —       Comparator C2 negative input.

                               OPA1OUT              —       AN      Operational Amplifier 1 output.

RC3/AN7/C1IN3-/C2IN3-/                   RC3        TTL/ST  CMOS    General purpose I/O.

OPA2OUT/CCP2(1)/SS(1)/                   AN7        AN      —       ADC Channel 7 input.

CLCIN0(1)                              C1IN3-       AN      —       Comparator C1 negative input.

                                       C2IN3-       AN      —       Comparator C2 negative input.

                               OPA2OUT              —       AN      Operational Amplifier 2 output.

                                         CCP2       TTL/ST  CMOS    Capture/Compare/PWM2.

                                         SS         TTL/ST  —       Slave Select input.

                                       CLCIN0       TTLST   —       Configurable Logic Cell source input.

RC4/OPA2IN-/CK(1)/CLCIN1(1)              RC4        TTL/ST  CMOS    General purpose I/O.

                                       OPA2IN-      AN      —       Operational Amplifier 2 inverting input.

                                         CK         TTL/ST  CMOS    USART synchronous clock.

                                       CLCIN1       TTL/ST  —       Configurable Logic Cell source input.

RC5/OPA2IN+/CCP1(1)/RX(1)                RC5        TTL/ST  CMOS    General purpose I/O.

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

                                         CCP1       TTL/ST  CMOS    Capture/Compare/PWM1.

                                         RX         TTL/ST  —       USART asynchronous input.

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
                                                                                          I2C        = Schmitt Trigger input with I2C
           TTL = TTL compatible input    ST     = Schmitt Trigger input with CMOS levels

           HV  = High Voltage            XTAL   = Crystal levels

Note  1:   Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-1.

      2:   All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output

           selection registers. See Register 12-3.

      3:   These I2C functions are bidirectional. The output pin selections must be the same as the input pin selections.

DS40001715D-page 12                                                                        2013-2015 Microchip Technology Inc.
                                                                                       PIC16(L)F1704/8

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

                Name            Function             Input  Output                           Description

                                                     Type   Type

OUT(2)                                  C1OUT        —      CMOS     Comparator output.

                                        C2OUT        —      CMOS     Comparator output.

                                          CCP1       —      CMOS     Capture/Compare/PWM1 output.

                                          CCP2       —      CMOS     Capture/Compare/PWM2 output.

                                PWM3OUT              —      CMOS     PWM3 output.

                                PWM4OUT              —      CMOS     PWM4 output.

                                        COGA         —      CMOS     Complementary Output Generator Output A.

                                        COGB         —      CMOS     Complementary Output Generator Output B.

                                        COGC         —      CMOS     Complementary Output Generator Output C.

                                        COGD         —      CMOS     Complementary Output Generator Output D.

                                        SDA(3)       —      OD       I2C data input/output.

                                          SDO        —      CMOS     SPI data output.

                                          SCK        —      CMOS     SPI clock output.

                                        SCL(3)       —      OD       I2C clock output.

                                        TX/CK        —      CMOS     USART asynchronous TX data/synchronous clock output.

                                          DT         —      CMOS     USART synchronous data output.

                                CLC1OUT              —      CMOS     Configurable Logic Cell 1 source output.

                                CLC2OUT              —      CMOS     Configurable Logic Cell 2 source output.

                                CLC3OUT              —      CMOS     Configurable Logic Cell 3 source output.

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

            HV  = High Voltage            XTAL  =    Crystal levels

Note    1:  Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-1.

        2:  All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output

            selection registers. See Register 12-3.

        3:  These I2C functions are bidirectional. The output pin selections must be the same as the input pin selections.

 2013-2015 Microchip Technology Inc.                                                                          DS40001715D-page 13
PIC16(L)F1704/8

TABLE 1-3:            PIC16(L)F1708 PIN OUT DESCRIPTION

                Name            Function             Input   Output                          Description

                                                     Type    Type

RA0/AN0/VREF-/C1IN+/                      RA0        TTL/ST  CMOS    General purpose I/O.

DAC1OUT/ICSPDAT                           AN0        AN      —       ADC Channel 0 input.

                                          VREF-      AN      —       ADC Negative Voltage Reference input.

                                          C1IN+      AN      —       Comparator C1 positive input.

                                DAC1OUT              —       AN      Digital-to-Analog Converter output.

                                ICSPDAT              ST      CMOS    ICSP™ Data I/O.

RA1/AN1/VREF+/C1IN0-/C2IN0-/              RA1        TTL/ST  CMOS    General purpose I/O.

ICSPCLK                                   AN1        AN      —       ADC Channel 1 input.

                                          VREF+      AN      —       ADC Voltage Reference input.

                                        C1IN0-       AN      —       Comparator C2 negative input.

                                        C2IN0-       AN      —       Comparator C3 negative input.

                                ICSPCLK              ST      —       Serial Programming Clock.

RA2/AN2/DAC1OUT2/ZCD/                     RA2        TTL/ST  CMOS    General purpose I/O.

T0CKI(1)/COGIN(1)/INT(1)                  AN2        AN      —       ADC Channel 2 input.

                                DAC1OUT2             —       AN      Digital-to-Analog Converter output.

                                          ZCD        —       AN      Zero-Cross Detection Current Source/Sink.

                                          T0CKI      ST      —       Timer0 clock input.

                                        COGIN        ST      CMOS    Complementary Output Generator input.

                                          INT        ST      —       External interrupt.

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

                                          MCLR       ST      —       Master Clear with internal pull-up.

                                          VPP        HV      —       Programming voltage.

RA4/AN3/T1G(1)/SOSCO/                     RA4        TTL/ST  CMOS    General purpose I/O.

OSC2/CLKOUT                               AN3        AN      —       ADC Channel 3 input.

                                          T1G        ST      —       Timer1 gate input.

                                        SOSCO        XTAL    XTAL    Secondary Oscillator Connection.

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

                                CLKOUT               —       CMOS    FOSC/4 output.

RA5/T1CKI/SOSCI/                          RA5        TTL/ST  CMOS    General purpose I/O.

CLCIN3(1)/OSC1/CLKIN                      T1CKI      ST      —       Timer1 clock input.

                                        SOSCI        XTAL    XTAL    Secondary Oscillator Connection.

                                        CLCIN3       ST      —       Configurable Logic Cell source input.

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

                                        CLKIN        ST      —       External clock input (EC mode).

RB4/AN10/OPA1IN-/SCK(1)/                  RB4        TTL/ST  CMOS    General purpose I/O.

SDA(3)                                    AN10       AN      —       ADC Channel 10 input.

                                        OPA1IN-      AN      —       Operational Amplifier 1 inverting input.

                                          SCK        ST      CMOS    SPI clock.

                                          SDA        I2C     OD      I2C data input/output.

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

            HV  = High Voltage            XTAL   = Crystal levels

Note    1:  Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-2.

        2:  All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output

            selection registers. See Register 12-3.

        3:  These I2C functions are bidirectional. The output pin selections must be the same as the input pin selections.

DS40001715D-page 14                                                                           2013-2015 Microchip Technology Inc.
                                                                                      PIC16(L)F1704/8

TABLE 1-3:           PIC16(L)F1708 PIN OUT DESCRIPTION (CONTINUED)

               Name            Function             Input   Output                              Description

                                                    Type    Type

RB5/AN11/OPA1IN+/RX(1)                   RB5        TTL/ST  CMOS    General purpose I/O.

                                         AN11       AN      —       ADC Channel 11 input.

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

                                         RX         ST      —       USART asynchronous input.

RB6/SDI(1)/SCL(3)                        RB6        TTL/ST  CMOS    General purpose I/O.

                                         SDI        CMOS    —       SPI data input.

                                         SCL        I2C     OD      I2C clock.

RB7/CK(1)                                RB7        TTL/ST  CMOS    General purpose I/O.

                                         CK         ST      CMOS    USART synchronous clock.

RC0/AN4/C2IN+                            RC0        TTL/ST  CMOS    General purpose I/O.

                                         AN4        AN      —       ADC Channel 4 input.

                                         C2IN+      AN      —       Comparator positive input.

RC1/AN5/C1IN1-/C2IN1-/                   RC1        TTL/ST  CMOS    General purpose I/O.

CLCIN2(1)                                AN5        AN      —       ADC Channel 5 input.

                                       C1IN1-       AN      —       Comparator C1 negative input.

                                       C2IN1-       AN      —       Comparator C2 negative input.

                                       CLCIN2       ST      —       Configurable Logic Cell source input.

RC2/AN6/C1IN2-/C2IN2-/                   RC2        TTL/ST  CMOS    General purpose I/O.

OPA1OUT                                  AN6        AN      —       ADC Channel 6 input.

                                       C1IN2-       AN      —       Comparator C1 negative input.

                                       C2IN2-       AN      —       Comparator C2 negative input.

                               OPA1OUT              —       AN      Operational Amplifier 1 output.

RC3/AN7/C1IN3-/C2IN3-/                   RC3        TTL/ST  CMOS    General purpose I/O.

OPA2OUT/CCP2(1)/CLCIN0(1)                AN7        AN      —       ADC Channel 7 input.

                                       C1IN3-       AN      —       Comparator C1 negative input.

                                       C2IN3-       AN      —       Comparator C2 negative input.

                               OPA2OUT              —       AN      Operational Amplifier 2 output.

                                         CCP2       ST      CMOS    Capture/Compare/PWM2.

                                       CLCIN0       ST      —       Configurable Logic Cell source input.

RC4/CLCIN1(1)                            RC4        TTL/ST  CMOS    General purpose I/O.

                                       CLCIN1       ST      —       Configurable Logic Cell source input.

RC5/CCP1(1)                              RC5        TTL/ST  CMOS    General purpose I/O.

                                         CCP1       ST      CMOS    Capture/Compare/PWM1.

RC6/AN8/OPA2IN-/SS(1)                    RC6        TTL/ST  CMOS    General purpose I/O.

                                         AN8        AN      —       ADC Channel 8 input.

                                       OPA2IN-      AN      —       Operational Amplifier 2 inverting input.

                                         SS         ST      —       Slave Select input.

RC7/AN9/OPA2IN+                          RC7        TTL/ST  CMOS    General purpose I/O.

                                         AN9        AN      —       ADC Channel 9 input.

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

VDD                                      VDD        Power   —       Positive supply.

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

           HV  = High Voltage            XTAL   =   Crystal levels

Note  1:   Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-2.

      2:   All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output

           selection registers. See Register 12-3.

      3:   These I2C functions are bidirectional. The output pin selections must be the same as the input pin selections.

 2013-2015 Microchip Technology Inc.                                                                         DS40001715D-page 15
PIC16(L)F1704/8

TABLE 1-3:            PIC16(L)F1708 PIN OUT DESCRIPTION (CONTINUED)

                Name            Function             Input  Output                          Description

                                                     Type   Type

VSS                                       VSS        Power  —       Ground reference.

OUT(2)                                  C1OUT        —      CMOS    Comparator output.

                                        C2OUT        —      CMOS    Comparator output.

                                          CCP1       —      CMOS    Capture/Compare/PWM1 output.

                                          CCP2       —      CMOS    Capture/Compare/PWM2 output.

                                PWM3OUT              —      CMOS    PWM3 output.

                                PWM4OUT              —      CMOS    PWM4 output.

                                        COGA         —      CMOS    Complementary Output Generator Output A.

                                        COGB         —      CMOS    Complementary Output Generator Output B.

                                        COGC         —      CMOS    Complementary Output Generator Output C.

                                        COGD         —      CMOS    Complementary Output Generator Output D.

                                        SDA(3)       —      OD      I2C data input/output.

                                          SDO        —      CMOS    SPI data output.

                                          SCK        —      CMOS    SPI clock output.

                                        SCL(3)       I2C    OD      I2C clock output.

                                        TX/CK        —      CMOS    USART asynchronous TX data/synchronous clock output.

                                          DT         —      CMOS    USART synchronous data output.

                                CLC1OUT              —      CMOS    Configurable Logic Cell 1 source output.

                                CLC2OUT              —      CMOS    Configurable Logic Cell 2 source output.

                                CLC3OUT              —      CMOS    Configurable Logic Cell 3 source output.

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

            HV  = High Voltage            XTAL  = Crystal levels

Note    1:  Default peripheral input. Input can be moved to any other pin with the PPS input selection registers. See Register 12-2.

        2:  All pin outputs default to PORT latch data. Any pin can be selected as a digital peripheral output with the PPS output

            selection registers. See Register 12-3.

        3:  These I2C functions are bidirectional. The output pin selections must be the same as the input pin selections.

DS40001715D-page 16                                                                          2013-2015 Microchip Technology Inc.
                                                                                                PIC16(L)F1704/8

2.0         ENHANCED MID-RANGE CPU                                            Relative          addressing      modes      are    available.     Two  File

This family of devices contain an enhanced mid-range                          Select            Registers      (FSRs)    provide   the  ability  to   read

8-bit CPU core. The CPU has 49 instructions. Interrupt                        program and data memory.

capability  includes  automatic    context       saving.         The          •       Automatic Interrupt Context Saving

hardware stack is 16 levels deep and has Overflow and                         •       16-level Stack with Overflow and Underflow

Underflow   Reset     capability.  Direct,      Indirect,        and          •       File Select Registers

                                                                              •       Instruction Set

FIGURE 2-1:               CORE BLOCK DIAGRAM

            15                 Configuration

                                                                 15                                            Data Bus         8

                                                                     Program Counter

                                   Flash

                MUX                Program

                                   Memory                            186-LLeevveel lSStatacckk                  RAM

                                                                           (135-bit)

                   Program         14                                Program Memory                                    12  RAM Addr

                      Bus                                             Read (PMR)

                                                                                                               Addr MUX

                               IInnssttrruuccttiioonn Rreegg               7                                    Indirect

                                                              Direct Addr                                           Addr

                                                                                                5               12         12

                      15                                                                        BFSSRR Rreegg

                                                                                                                       FSR0reRgeg

                                                                                                FFSSRR1 rReegg

                           15                                                                                       SSTTAATTUUSSRreegg

                                                              8

                                                                      Power-up                     3                   MUX

                                                                      Timer

                                   Instruction                        Oscillator
                                                                     Start-up Timer
                               DDeeccooddeea&nd                                                                 ALU
                                   Control
                                                                      Power-on
            OSC1/CLKIN                                                Reset                     8

     OSC2/CLKOUT                   Timing                             Watchdog                                  W reg
                                   Generation
                                                                      Timer

                                                                      Brown-out

                                                                      Reset

                                   Internal
                                   Oscillator

                                   Block

                                                                     VDD      VSS

 2013-2015 Microchip Technology Inc.                                                                                           DS40001715D-page 17
PIC16(L)F1704/8

2.1         Automatic Interrupt Context

            Saving

During    interrupts,    certain   registers  are  automatically

saved in shadow registers and restored when returning

from the interrupt. This saves stack space and user

code. See Section 7.5 “Automatic Context Saving”

for more information.

2.2         16-Level Stack with Overflow and

            Underflow

These devices have a hardware stack memory 15 bits

wide    and   16    words      deep.  A  Stack     Overflow      or

Underflow    will   set   the  appropriate    bit  (STKOVF       or

STKUNF) in the PCON register, and if enabled, will

cause a software Reset. See Section 3.6 “Stack” for

more details.

2.3         File Select Registers

There are two 16-bit File Select Registers (FSR). FSRs

can   access   all  file  registers   and     program   memory,

which allows one Data Pointer for all memory. When an

FSR points to program memory, there is one additional

instruction cycle in instructions using INDF to allow the

data to be fetched. General purpose memory can now

also  be    addressed     linearly,   providing    the  ability  to

access contiguous data larger than 80 bytes. There are

also  new     instructions     to  support    the  FSRs.     See

Section 3.7 “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 31.0 “Instruction Set Summary” for more

details.

DS40001715D-page 18                                                   2013-2015 Microchip Technology Inc.
                                                                        PIC16(L)F1704/8

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

•  Program Memory                                          counter  capable  of            addressing  a  32K  x  14  program

   -  Configuration Words                                  memory   space.   Table 3-1            shows   the  memory  sizes

   -  Device ID                                            implemented for the PIC16(L)F1704/8 family. Accessing

                                                           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

•  Data Memory                                             at 0004h (see Figure 3-1).

   -  Core Registers

   -  Special Function Registers

   -  General Purpose RAM

   -  Common RAM

      Note 1:  The   method  to   access  Flash    memory

               through the PMCON registers is described

               in Section 10.0 “Flash Program Memory

               Control”.

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          Last Program Memory                    High-Endurance Flash

                                          (Words)             Address                      Memory Address Range(1)

   PIC16(L)F1704/8                        4,096                 0FFFh                                  0F80h - 0FFFh

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

 2013-2015 Microchip Technology Inc.                                                                  DS40001715D-page 19
PIC16(L)F1704/8

FIGURE 3-1:          PROGRAM MEMORY MAP       3.1.1         READING PROGRAM MEMORY AS

                     AND STACK FOR                          DATA

                     PIC16(L)F1704/8          There  are    two   methods        of  accessing    constants  in

                                              program memory. The first method is to use tables of

                     PC<14:0>                 RETLW instructions. The second method is to set an

CALL, CALLW                                   FSR to point to the program memory.

RETURN, RETLW                  15             3.1.1.1           RETLW Instruction

Interrupt, RETFIE                             The RETLW instruction can be used to provide access

                     Stack Level 0            to tables of constants. The recommended way to create

                     Stack Level 1            such a table is shown in Example 3-1.

                     Stack Level 15           EXAMPLE 3-1:              RETLW INSTRUCTION

                                              constants

                     Reset Vector      0000h         BRW                         ;Add      Index  in  W  to

                                                                                 ;program    counter     to

                                                                                 ;select     data

                     Interrupt Vector  0004h         RETLW     DATA0             ;Index0     data

                                       0005h         RETLW     DATA1             ;Index1     data

                     Page 0                          RETLW     DATA2

On-chip                                07FFh         RETLW     DATA3

Program                                0800h

Memory                                        my_function

                     Page 1

                                       0FFFh         ;…   LOTS   OF   CODE…

                                       1000h         MOVLW            DATA_INDEX

             Rollover to Page 0                      call   constants

                                                     ;…   THE   CONSTANT     IS  IN  W

                                              The    BRW   instruction  makes        this  type   of  table  very

                                              simple 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

                                              setting bit 7 of the FSRxH register and reading the

                                              matching INDFx register. The MOVIW instruction will

                                              place the lower eight bits of the addressed word in the

                                              W register. Writes to the program memory cannot be

             Rollover to Page 1               performed     via  the  INDF       registers.  Instructions    that

                                       7FFFh  access the program memory via the FSR require one

                                              extra  instruction      cycle  to      complete.    Example 3-2

                                              demonstrates accessing the program memory via an

                                              FSR.

                                              The high directive will set bit<7> if a label points to a

                                              location in program memory.

DS40001715D-page 20                                                    2013-2015 Microchip Technology Inc.
                                                                  PIC16(L)F1704/8

EXAMPLE 3-2:                ACCESSING PROGRAM

                            MEMORY VIA FSR

constants

     DW  DATA0                      ;First   constant

     DW  DATA1                      ;Second     constant

     DW  DATA2

     DW  DATA3

my_function

     ;…  LOTS   OF  CODE…

     MOVLW     DATA_INDEX

     ADDLW     LOW   constants

     MOVWF     FSR1L

     MOVLW     HIGH   constants;MSb        sets

                                    automatically

     MOVWF     FSR1H

     BTFSC     STATUS,      C       ;carry   from    ADDLW?

     INCF      FSR1H,    f          ;yes

     MOVIW     0[FSR1]

;THE     PROGRAM    MEMORY     IS   IN  W

3.2        High-Endurance Flash

This device has a 128-byte section of high-endurance

Program     Flash     Memory        (PFM)   in   lieu  of  data

EEPROM. This area is especially well suited for non-

volatile data storage that is expected to be updated fre-

quently     over    the  life   of  the    end   product.    See

Section 10.2      “Flash    Program        Memory    Overview”

for  more   information     on  writing    data  to  PFM.    See

Section 3.1.1.2 “Indirect Read with FSR” for more

information about using the FSR registers to read byte

data stored in PFM.

 2013-2015 Microchip Technology Inc.                             DS40001715D-page 21
PIC16(L)F1704/8

3.3          Data Memory Organization                                  3.3.1.1       STATUS Register

The data memory is partitioned in 32 memory banks                      The STATUS register, shown in Register 3-1, contains:

with   128   bytes     in  a   bank.     Each    bank  consists   of   •   the arithmetic status of the ALU

(Figure 3-2):                                                          •   the Reset status

•  12 core registers                                                   The STATUS register can be the destination for any

•  20 Special Function Registers (SFR)                                 instruction,  like   any    other  register.   If  the  STATUS

•  Up to 80 bytes of General Purpose RAM (GPR)                         register is the destination for an instruction that affects

•  16 bytes of common RAM                                              the Z, DC or C bits, then the write to these three bits is

The active bank is selected by writing the bank number                 disabled. These bits are set or cleared according to the

into the Bank Select Register (BSR). Unimplemented                     device logic. Furthermore, the TO and PD bits are not

memory       will  read    as  ‘0’.  All  data   memory      can  be   writable. Therefore, the result of an instruction with the

accessed either directly (via instructions that use the                STATUS register as destination may be different than

file  registers)   or    indirectly   via   the  two   File  Select    intended.

Registers          (FSR).      See       Section 3.7   “Indirect       For example, CLRF         STATUS will clear the upper three

Addressing” for more information.                                      bits and set the Z bit. This leaves the STATUS register

Data memory uses a 12-bit address. The upper five bits                 as ‘000u   u1uu’ (where u = unchanged).

of the address define the Bank address and the lower                   It  is  recommended,        therefore,  that   only  BCF,     BSF,

seven bits select the registers/RAM in that bank.                      SWAPF and MOVWF instructions are used to alter the

                                                                       STATUS register, because these instructions do not

3.3.1            CORE REGISTERS                                        affect  any   Status  bits.   For  other       instructions   not

The core registers contain the registers that directly                 affecting  any      Status  bits   (Refer      to  Section 31.0

affect the basic operation. The core registers occupy                  “Instruction Set Summary”).

the   first  12    addresses   of    every  data    memory   bank          Note:     The C and DC bits operate as Borrow and

(addresses         x00h/x08h   through      x0Bh/x8Bh).      These                   Digit   Borrow  out       bits,  respectively,  in

registers    are   listed  below     in   Table 3-2.   For   detailed                subtraction.

information, see Table 3-9.

TABLE 3-2:             CORE REGISTERS

                   Addresses                BANKx

                   x00h or x80h             INDF0

                   x01h or x81h             INDF1

                   x02h or x82h                PCL

                   x03h or x83h            STATUS

                   x04h or x84h             FSR0L

                   x05h or x85h             FSR0H

                   x06h or x86h             FSR1L

                   x07h or x87h             FSR1H

                   x08h or x88h                BSR

                   x09h or x89h             WREG

                   x0Ah or x8Ah            PCLATH

                   x0Bh or x8Bh             INTCON

DS40001715D-page 22                                                                           2013-2015 Microchip Technology Inc.
                                                                                  PIC16(L)F1704/8

3.4           Register Definitions: Status

REGISTER 3-1:         STATUS: STATUS REGISTER

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

        —             —                —             TO            PD                    Z       DC(1)            C(1)

bit 7                                                                                                                   bit  0

Legend:

R = Readable bit               W = Writable bit              U = Unimplemented bit, read as ‘0’

u = Bit is unchanged           x = Bit is unknown            -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set               ‘0’ = Bit is cleared          q = Value depends on condition

bit  7-5          Unimplemented: Read as ‘0’

bit  4            TO: Time-Out bit

                  1 = After power-up, CLRWDT instruction or SLEEP instruction

                  0 = A WDT Time-out occurred

bit  3            PD: Power-Down bit

                  1 = After power-up or by the CLRWDT instruction

                  0 = By execution of the SLEEP instruction

bit  2            Z: Zero bit

                  1 = The result of an arithmetic or logic operation is zero

                  0 = The result of an arithmetic or logic operation is not zero

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

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

 2013-2015 Microchip Technology Inc.                                                            DS40001715D-page 23
PIC16(L)F1704/8

3.4.1          SPECIAL FUNCTION REGISTER                          FIGURE 3-2:        BANKED MEMORY

The Special Function Registers are registers used by                                 PARTITIONING

the  application  to    control  the  desired  operation      of

peripheral functions in the device. The Special Function          7-bit Bank Offset           Memory Region

Registers occupy the 20 bytes after the core registers of

every    data    memory   bank     (addresses  x0Ch/x8Ch                       00h

through x1Fh/x9Fh). The registers associated with the

operation    of  the  peripherals     are  described  in   the                                Core Registers

appropriate peripheral chapter of this data sheet.                             0Bh            (12 bytes)

3.4.2          GENERAL PURPOSE RAM                                             0Ch

There are up to 80 bytes of GPR in each data memory                                  Special Function Registers

bank.   The    General  Purpose    RAM     occupies   the     80                     (20 bytes maximum)

bytes after the SFR registers of selected data memory                          1Fh

banks.                                                                         20h

3.4.2.1          Linear Access to GPR

The    general   purpose  RAM      can     be  accessed   in  a

non-banked method via the FSRs. This can simplify

access to large memory structures. See Section 3.7.2

“Linear Data Memory” for more information.                                           General Purpose RAM

3.4.3          COMMON RAM                                                            (80 bytes maximum)

There are 16 bytes of common RAM accessible from all

banks.

                                                                               6Fh

                                                                               70h

                                                                                              Common RAM

                                                                                              (16 bytes)

                                                                               7Fh

                                                                  3.4.4  DEVICE MEMORY MAPS

                                                                  The memory maps for the device family are   as  shown

                                                                  in Tables 3-3 through 3-8.

DS40001715D-page 24                                                                   2013-2015 Microchip Technology Inc.
 2013-2015 Microchip Technology Inc.  TABLE 3-3:             PIC16(L)F1704 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                  280h                  300h                   380h

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

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

                                       00Bh                     08Bh                  10Bh                  18Bh                  20Bh                  28Bh                  30Bh                   38Bh

                                       00Ch      PORTA          08Ch  TRISA           10Ch  LATA            18Ch  ANSELA          20Ch  WPUA            28Ch  ODCONA          30Ch  SLRCONA          38Ch  INLVLA

                                       00Dh      —              08Dh  —               10Dh  —               18Dh  —               20Dh  —               28Dh  —               30Dh  —                38Dh  —

                                       00Eh      PORTC          08Eh  TRISC           10Eh  LATC            18Eh  ANSELC          20Eh  WPUC            28Eh  ODCONC          30Eh  SLRCONC          38Eh  INLVLC

                                       00Fh      —              08Fh  —               10Fh  —               18Fh  —               20Fh  —               28Fh  —               30Fh  —                38Fh  —

                                       010h      —              090h  —               110h  —               190h  —               210h  —               290h  —               310h  —                390h  —

                                       011h      PIR1           091h  PIE1            111h  CM1CON0         191h  PMADRL          211h  SSP1BUF         291h  CCPR1L          311h  —                391h  IOCAP

                                       012h      PIR2           092h  PIE2            112h  CM1CON1         192h  PMADRH          212h  SSP1ADD         292h  CCPR1H          312h  —                392h  IOCAN

                                       013h      PIR3           093h  PIE3            113h  CM2CON0         193h  PMDATL          213h  SSP1MSK         293h  CCP1CON         313h  —                393h  IOCAF

                                       014h      —              094h  —               114h  CM2CON1         194h  PMDATH          214h  SSP1STAT        294h  —               314h  —                394h  —

                                       015h      TMR0           095h  OPTION_REG      115h  CMOUT           195h  PMCON1          215h  SSP1CON         295h  —               315h  —                395h  —

                                       016h      TMR1L          096h  PCON            116h  BORCON          196h  PMCON2          216h  SSP1CON2        296h  —               316h  —                396h  —

                                       017h      TMR1H          097h  WDTCON          117h  FVRCON          197h  VREGCON(1)      217h  SSP1CON3        297h  —               317h  —                397h  IOCCP

                                       018h      T1CON          098h  OSCTUNE         118h  DAC1CON0        198h  —               218h  —               298h  CCPR2L          318h  —                398h  IOCCN

                                       019h      T1GCON         099h  OSCCON          119h  DAC1CON1        199h  RC1REG          219h  —               299h  CCPR2H          319h  —                399h  IOCCF

                                       01Ah      TMR2           09Ah  OSCSTAT         11Ah  —               19Ah  TX1REG          21Ah  —               29Ah  CCP2CON         31Ah  —                39Ah  —

                                       01Bh      PR2            09Bh  ADRESL          11Bh  —               19Bh  SP1BRGL         21Bh  —               29Bh  —               31Bh  —                39Bh  —

                                       01Ch      T2CON          09Ch  ADRESH          11Ch  ZCD1CON         19Ch  SP1BRGH         21Ch  —               29Ch  —               31Ch  —                39Ch  —

                                       01Dh      —              09Dh  ADCON0          11Dh  —               19Dh  RC1STA          21Dh  —               29Dh  —               31Dh  —                39Dh  —

                                       01Eh      —              09Eh  ADCON1          11Eh  —               19Eh  TX1STA          21Eh  —               29Eh  CCPTMRS         31Eh  —                39Eh  —

                                       01Fh      —              09Fh  ADCON2          11Fh  —               19Fh  BAUD1CON        21Fh  —               29Fh  —               31Fh  —                39Fh  —

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

                                                 General              General               General               General               General               General               Register

                                                 Purpose              Purpose               Purpose               Purpose               Purpose               Purpose         32Fh  16 Bytes               Unimplemented

                                                 Register             Register              Register              Register              Register              Register        330h                         Read as ‘0’

                                                 80 Bytes             80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              Unimplemented                          PIC16(L)F1704/8

                                                                                                                                                                                    Read as ‘0’

                                       06Fh                     0EFh                  16Fh                  1EFh                  26Fh                  2EFh                  36Fh                   3EFh

                                       070h                     0F0h                  170h                  1F0h                  270h                  2F0h                  370h                   3F0h

                                                Common RAM            Accesses              Accesses              Accesses              Accesses              Accesses              Accesses               Accesses

                                                 70h – 7Fh            70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh              70h – 7Fh

                                       07Fh                     0FFh                  17Fh                  1FFh                  27Fh                  2FFh                  37Fh                   3FFh

                                       Legend:     = Unimplemented data memory locations, read as ‘0’.

DS40001715D-page 25                    Note  1:  Unimplemented on PIC16LF1704.
DS40001715D-page 26                    TABLE 3-4:             PIC16(L)1708 MEMORY           MAP (BANKS 0-7)                                                                                                                PIC16(L)F1704/8

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

                                       000h                     080h                  100h                  180h                  200h                  280h                  300h                   380h

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

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

                                       00Bh                     08Bh                  10Bh                  18Bh                  20Bh                  28Bh                  30Bh                   38Bh

                                       00Ch      PORTA          08Ch  TRISA           10Ch  LATA            18Ch  ANSELA          20Ch  WPUA            28Ch  ODCONA          30Ch  SLRCONA          38Ch  INLVLA

                                       00Dh      PORTB          08Dh  TRISB           10Dh  LATB            18Dh  ANSELB          20Dh  WPUB            28Dh  ODCONB          30Dh  SLRCONB          38Dh  INLVLB

                                       00Eh      PORTC          08Eh  TRISC           10Eh  LATC            18Eh  ANSELC          20Eh  WPUC            28Eh  ODCONC          30Eh  SLRCONC          38Eh  INLVLC

                                       00Fh      —              08Fh  —               10Fh  —               18Fh  —               20Fh  —               28Fh  —               30Fh  —                38Fh  —

                                       010h      —              090h  —               110h  —               190h  —               210h  —               290h  —               310h  —                390h  —

                                       011h      PIR1           091h  PIE1            111h  CM1CON0         191h  PMADRL          211h  SSP1BUF         291h  CCPR1L          311h  —                391h  IOCAP

                                       012h      PIR2           092h  PIE2            112h  CM1CON1         192h  PMADRH          212h  SSP1ADD         292h  CCPR1H          312h  —                392h  IOCAN

                                       013h      PIR3           093h  PIE3            113h  CM2CON0         193h  PMDATL          213h  SSP1MSK         293h  CCP1CON         313h  —                393h  IOCAF

                                       014h      —              094h  —               114h  CM2CON1         194h  PMDATH          214h  SSP1STAT        294h  —               314h  —                394h  IOCBP

                                       015h      TMR0           095h  OPTION_REG      115h  CMOUT           195h  PMCON1          215h  SSP1CON         295h  —               315h  —                395h  IOCBN

                                       016h      TMR1L          096h  PCON            116h  BORCON          196h  PMCON2          216h  SSP1CON2        296h  —               316h  —                396h  IOCBF

                                       017h      TMR1H          097h  WDTCON          117h  FVRCON          197h  VREGCON(1)      217h  SSP1CON3        297h  —               317h  —                397h  IOCCP

                                       018h      T1CON          098h  OSCTUNE         118h  DAC1CON0        198h  —               218h  —               298h  CCPR2L          318h  —                398h  IOCCN

                                       019h      T1GCON         099h  OSCCON          119h  DAC1CON1        199h  RC1REG          219h  —               299h  CCPR2H          319h  —                399h  IOCCF

                                       01Ah      TMR2           09Ah  OSCSTAT         11Ah  —               19Ah  TX1REG          21Ah  —               29Ah  CCP2CON         31Ah  —                39Ah  —

                                       01Bh      PR2            09Bh  ADRESL          11Bh  —               19Bh  SP1BRGL         21Bh  —               29Bh  —               31Bh  —                39Bh  —

                                       01Ch      T2CON          09Ch  ADRESH          11Ch  ZCD1CON         19Ch  SP1BRGH         21Ch  —               29Ch  —               31Ch  —                39Ch  —

                                       01Dh      —              09Dh  ADCON0          11Dh  —               19Dh  RC1STA          21Dh  —               29Dh  —               31Dh  —                39Dh  —

                                       01Eh      —              09Eh  ADCON1          11Eh  —               19Eh  TX1STA          21Eh  —               29Eh  CCPTMRS         31Eh  —                39Eh  —

                                       01Fh      —              09Fh  ADCON2          11Fh  —               19Fh  BAUD1CON        21Fh  —               29Fh  —               31Fh  —                39Fh  —

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

                                                 General              General               General               General               General               General               Register

                                                 Purpose              Purpose               Purpose               Purpose               Purpose               Purpose         32Fh  16 Bytes               Unimplemented

                                                 Register             Register              Register              Register              Register              Register        330h                         Read as ‘0’

                                                 80 Bytes             80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              Unimplemented

                                                                                                                                                                                    Read as ‘0’

 2013-2015 Microchip Technology Inc.  06Fh                     0EFh                  16Fh                  1EFh                  26Fh                  2EFh                  36Fh                   3EFh

                                       070h                     0F0h                  170h                  1F0h                  270h                  2F0h                  370h                   3F0h

                                                Common RAM            Accesses              Accesses              Accesses              Accesses              Accesses              Accesses               Accesses

                                                 70h – 7Fh            70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh              70h – 7Fh

                                       07Fh                     0FFh                  17Fh                  1FFh                  27Fh                  2FFh                  37Fh                   3FFh

                                       Legend:     = Unimplemented data memory locations,   read as ‘0’.

                                       Note  1:  Unimplemented on PIC16LF1708.
 2013-2015 Microchip Technology Inc.  TABLE 3-5:            PIC16(L)F1704/8 MEMORY MAP, BANK 8-23

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

                                       400h                     480h                  500h                  580h                  600h                  680h                  700h                  780h

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

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

                                       40Bh                     48Bh                  50Bh                  58Bh                  60Bh                  68Bh                  70Bh                  78Bh

                                       40Ch     —               48Ch  —               50Ch  —               58Ch  —               60Ch  —               68Ch  —               70Ch  —               78Ch  —

                                       40Dh     —               48Dh  —               50Dh  —               58Dh  —               60Dh  —               68Dh  —               70Dh  —               78Dh  —

                                       40Eh     —               48Eh  —               50Eh  —               58Eh  —               60Eh  —               68Eh  —               70Eh  —               78Eh  —

                                       40Fh     —               48Fh  —               50Fh  —               58Fh  —               60Fh  —               68Fh  —               70Fh  —               78Fh  —

                                       410h     —               490h  —               510h  —               590h  —               610h  —               690h  —               710h  —               790h  —

                                       411h     —               491h  —               511h  OPA1CON         591h  —               611h  —               691h  COG1PHR         711h  —               791h  —

                                       412h     —               492h  —               512h  —               592h  —               612h  —               692h  COG1PHF         712h  —               792h  —

                                       413h     —               493h  —               513h  —               593h  —               613h  —               693h  COG1BLKR        713h  —               793h  —

                                       414h     —               494h  —               514h  —               594h  —               614h  —               694h  COG1BLKF        714h  —               794h  —

                                       415h     TMR4            495h  —               515h  OPA2CON         595h  —               615h  —               695h  COG1DBR         715h  —               795h  —

                                       416h     PR4             496h  —               516h  —               596h  —               616h  —               696h  COG1DBF         716h  —               796h  —

                                       417h     T4CON           497h  —               517h  —               597h  —               617h  PWM3DCL         697h  COG1CON0        717h  —               797h  —

                                       418h     —               498h  —               518h  —               598h  —               618h  PWM3DCH         698h  COG1CON1        718h  —               798h  —

                                       419h     —               499h  —               519h  —               599h  —               619h  PWM3CON         699h  COG1RIS         719h  —               799h  —

                                       41Ah     —               49Ah  —               51Ah  —               59Ah  —               61Ah  PWM4DCL         69Ah  COG1RSIM        71Ah  —               79Ah  —

                                       41Bh     —               49Bh  —               51Bh  —               59Bh  —               61Bh  PWM4DCH         69Bh  COG1FIS         71Bh  —               79Bh  —

                                       41Ch     TMR6            49Ch  —               51Ch  —               59Ch  —               61Ch  PWM4CON         69Ch  COG1FSIM        71Ch  —               79Ch  —

                                       41Dh     PR6             49Dh  —               51Dh  —               59Dh  —               61Dh  —               69Dh  COG1ASD0        71Dh  —               79Dh  —

                                       41Eh     T6CON           49Eh  —               51Eh  —               59Eh  —               61Eh  —               69Eh  COG1ASD1        71Eh  —               79Eh  —

                                       41Fh     —               49Fh  —               51Fh  —               59Fh  —               61Fh  —               69Fh  COG1STR         71Fh  —               79Fh  —

                                       420h                     4A0h                  520h                  5A0h                  620h                  6A0h                  720h                  7A0h

                                                Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented

                                                Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’

                                       46Fh                     4EFh                  56Fh                  5EFh                  66Fh                  6EFh                  76Fh                  7EFh

                                       470h                     4F0h                  570h                  5F0h                  670h                  6F0h                  770h                  7F0h

                                                Accesses              Accesses              Accesses              Accesses              Accesses              Accesses              Accesses              Accesses        PIC16(L)F1704/8

                                                70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh

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

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

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

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

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

                                       80Bh                     88Bh                  90Bh                  98Bh                  A0Bh                  A8Bh                  B0Bh                  B8Bh

DS40001715D-page 27                    80Ch                     88Ch                  90Ch                  98Ch                  A0Ch                  A8Ch                  B0Ch                  B8Ch

                                                Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented         Unimplemented

                                                Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’

                                       86Fh                     8EFh                  96Fh                  9EFh                  A6Fh                  AEFh                  B6Fh                  BEFh

                                       870h                     8F0h                  970h                  9F0h                  A70h                  AF0h                  B70h                  BF0h

                                                Accesses              Accesses              Accesses              Accesses              Accesses              Accesses              Accesses              Accesses

                                                70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh

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

                                       Legend:     = Unimplemented data memory locations, read as ‘0’.
DS40001715D-page 28                    TABLE 3-6:            PIC16(L)F1704/8 MEMORY MAP, BANK 24-31                                                                                                                                   PIC16(L)F1704/8

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

                                       C00h                     C80h                  D00h                  D80h                  E00h                     E80h                     F00h                     F80h

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

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

                                       C0Bh                     C8Bh                  D0Bh                  D8Bh                  E0Bh                     E8Bh                     F0Bh                     F8Bh

                                       C0Ch        —            C8Ch  —               D0Ch  —               D8Ch  —               E0Ch                     E8Ch                     F0Ch                     F8Ch

                                       C0Dh        —            C8Dh  —               D0Dh  —               D8Dh  —               E0Dh                     E8Dh                     F0Dh                     F8Dh

                                       C0Eh        —            C8Eh  —               D0Eh  —               D8Eh  —               E0Eh                     E8Eh                     F0Eh                     F8Eh

                                       C0Fh        —            C8Fh  —               D0Fh  —               D8Fh  —               E0Fh                     E8Fh                     F0Fh                     F8Fh

                                       C10h        —            C90h  —               D10h  —               D90h  —               E10h                     E90h                     F10h                     F90h

                                       C11h        —            C91h  —               D11h  —               D91h  —               E11h                     E91h                     F11h                     F91h

                                       C12h        —            C92h  —               D12h  —               D92h  —               E12h                     E92h                     F12h                     F92h

                                       C13h        —            C93h  —               D13h  —               D93h  —               E13h                     E93h                     F13h                     F93h

                                       C14h        —            C94h  —               D14h  —               D94h  —               E14h                     E94h                     F14h                     F94h

                                       C15h        —            C95h  —               D15h  —               D95h  —               E15h                     E95h                     F15h                     F95h

                                       C16h        —            C96h  —               D16h  —               D96h  —               E16h                     E96h                     F16h                     F96h

                                       C17h        —            C97h  —               D17h  —               D97h  —               E17h  See Table 3-7 for  E97h  See Table 3-7 for  F17h  See Table 3-7 for  F97h  See Table 3-8 for

                                       C18h        —            C98h  —               D18h  —               D98h  —               E18h  register mapping   E98h  register mapping   F18h  register mapping   F98h  register mapping

                                       C19h        —            C99h  —               D19h  —               D99h  —               E19h  details            E99h  details            F19h  details            F99h  details

                                       C1Ah        —            C9Ah  —               D1Ah  —               D9Ah  —               E1Ah                     E9Ah                     F1Ah                     F9Ah

                                       C1Bh        —            C9Bh  —               D1Bh  —               D9Bh  —               E1Bh                     E9Bh                     F1Bh                     F9Bh

                                       C1Ch        —            C9Ch  —               D1Ch  —               D9Ch  —               E1Ch                     E9Ch                     F1Ch                     F9Ch

                                       C1Dh        —            C9Dh  —               D1Dh  —               D9Dh  —               E1Dh                     E9Dh                     F1Dh                     F9Dh

                                       C1Eh        —            C9Eh  —               D1Eh  —               D9Eh  —               E1Eh                     E9Eh                     F1Eh                     F9Eh

                                       C1Fh        —            C9Fh  —               D1Fh  —               D9Fh  —               E1Fh                     E9Fh                     F1Fh                     F9Fh

                                       C20h                     CA0h                  D20h                  DA0h                  E20h                     EA0h                     F20h                     FA0h

                                                Unimplemented         Unimplemented         Unimplemented         Unimplemented

                                                Read as ‘0’           Read as ‘0’           Read as ‘0’           Read as ‘0’

                                       C6Fh                     CEFh                  D6Fh                  DEFh                  E6Fh                     EEFh                     F6Fh                     FEFh

                                       C70h                     CF0h                  D70h                  DF0h                  E70h                     EF0h                     F70h                     FF0h

 2013-2015 Microchip Technology Inc.           Accesses              Accesses              Accesses              Accesses              Accesses                 Accesses                 Accesses                 Accesses

                                                70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh             70h – 7Fh                70h – 7Fh                70h – 7Fh                70h – 7Fh

                                       CFFh                     CFFh                  D7Fh                  DFFh                  E7Fh                     EFFh                     F7Fh                     FFFh

                                       Legend:        = Unimplemented data memory locations, read as ‘0’.
                                                                           PIC16(L)F1704/8

TABLE 3-7:  PIC16(L)F1704/8 MEMORY MAP, BANK 28-30

                     Bank 28                    Bank 29                    Bank 30

            E0Ch                       —  E8Ch  —             F0Ch         —

            E0Dh                       —  E8Dh  —             F0Dh         —

            E0Eh                       —  E8Eh  —             F0Eh         —

            E0Fh     PPSLOCK              E8Fh  —             F0Fh         CLCDATA

            E10h     INTPPS               E90h  RA0PPS        F10h         CLC1CON

            E11h     T0CKIPPS             E91h  RA1PPS        F11h         CLC1POL

            E12h     T1CKIPPS             E92h  RA2PPS        F12h         CLC1SEL0

            E13h     T1GPPS               E93h  —             F13h         CLC1SEL1

            E14h     CCP1PPS              E94h  RA4PPS        F14h         CLC1SEL2

            E15h     CCP2PPS              E95h  RA5PPS        F15h         CLC1SEL3

            E16h                       —  E96h  —             F16h         CLC1GLS0

            E17h     COGINPPS             E97h  —             F17h         CLC1GLS1

            E18h                       —  E98h  —             F18h         CLC1GLS2

            E19h                       —  E99h  —             F19h         CLC1GLS3

            E1Ah                       —  E9Ah  —             F1Ah         CLC2CON

            E1Bh                       —  E9Bh  —             F1Bh         CLC2POL

            E1Ch                       —  E9Ch  RB4PPS(1)     F1Ch         CLC2SEL0

            E1Dh                       —  E9Dh  RB5PPS(1)     F1Dh         CLC2SEL1

            E1Eh                       —  E9Eh  RB6PPS(1)     F1Eh         CLC2SEL2

            E1Fh                       —  E9Fh  RB7PPS(1)     F1Fh         CLC2SEL3

            E20h     SSPCLKPPS            EA0h  RC0PPS        F20h         CLC2GLS0

            E21h     SSPDATPPS            EA1h  RC1PPS        F21h         CLC2GLS1

            E22h     SSPSSPPS             EA2h  RC2PPS        F22h         CLC2GLS2

            E23h                       —  EA3h  RC3PPS        F23h         CLC2GLS3

            E24h     RXPPS                EA4h  RC4PPS        F24h         CLC3CON

            E25h     CKPPS                EA5h  RC5PPS        F25h         CLC3POL

            E26h                       —  EA6h  RC6PPS(1)     F26h         CLC3SEL0

            E27h                       —  EA7h  RC7PPS(1)     F27h         CLC3SEL1

            E28h     CLCIN0PPS            EA8h  —             F28h         CLC3SEL2

            E29h     CLCIN1PPS            EA9h  —             F29h         CLC3SEL3

            E2Ah     CLCIN2PPS            EAAh  —             F2Ah         CLC3GLS0

            E2Bh     CLCIN3PPS            EABh  —             F2Bh         CLC3GLS1

            E2Ch                       —  EACh  —             F2Ch         CLC3GLS2

            E2Dh                       —  EADh  —             F2Dh         CLC3GLS3

            E2Eh                       —  EAEh  —             F2Eh         —

            E2Fh                       —  EAFh  —             F2Fh         —

            E30h                       —  EB0h  —             F30h         —

            E31h                       —  EB1h  —             F31h         —

            E32h                       —  EB2h  —             F32h         —

            E33h                       —  EB3h  —             F33h         —

            E34h                       —  EB4h  —             F34h         —

            E35h                       —  EB5h  —             F35h         —

            E36h                       —  EB6h  —             F36h         —

            E37h                       —  EB7h  —             F37h         —

            E38h                       —  EB8h  —             F38h         —

            E39h                       —  EB9h  —             F39h         —

            E3Ah                       —  EBAh  —             F3Ah         —

            E3Bh                       —  EBBh  —             F3Bh         —

            E3Ch                       —  EBCh  —             F3Ch         —

            E3Dh                       —  EBDh  —             F3Dh         —

            E3Eh                       —  EBEh  —             F3Eh         —

            E3Fh                       —  EBFh  —             F3Fh         —
            E40h                          EC0h                F40h

                                       —        —                          —

            E6Fh                          EEFh                F6Fh

            Legend:  = Unimplemented data memory locations, read as  ‘0’,

            Note 1:  Only available on PIC16(L)F1708 devices

 2013-2015 Microchip Technology Inc.                                                DS40001715D-page 29
PIC16(L)F1704/8

TABLE 3-8:     PIC16(L)F1704/8 MEMORY

               MAP, BANK 31

                     Bank 31

         F8Ch  Unimplemented

         FE3h  Read as ‘0’

         FE4h  STATUS_SHAD

         FE5h  WREG_SHAD

         FE6h  BSR_SHAD

         FE7h  PCLATH_SHAD

         FE8h  FSR0L_SHAD

         FE9h  FSR0H_SHAD

         FEAh  FSR1L_SHAD

         FEBh  FSR1H_SHAD

         FECh                —

         FEDh        STKPTR

         FEEh        TOSL

         FEFh        TOSH

Legend:        = Unimplemented  data  memory  locations,

               read as ‘0’,

DS40001715D-page 30                                        2013-2015 Microchip Technology Inc.
                                                                                           PIC16(L)F1704/8

3.4.5         CORE FUNCTION REGISTERS

              SUMMARY

The Core Function registers listed in Table 3-9 can be

addressed from any Bank.

TABLE 3-9:         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)

x01h or  INDF1     Addressing this location uses contents of FSR1H/FSR1L to address data memory                            xxxx  xxxx  uuuu  uuuu

x81h               (not a physical register)

x02h or  PCL       Program Counter (PC) Least Significant Byte                                                             0000  0000  0000  0000

x82h

x03h or  STATUS    —      —                   —                 TO     PD           Z            DC           C            ---1  1000  ---q  quuu

x83h

x04h or  FSR0L     Indirect Data Memory Address 0 Low Pointer                                                              0000  0000  uuuu  uuuu

x84h

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

x85h

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

x86h

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

x87h

x08h or  BSR       —      —                   —                 BSR4   BSR3         BSR2   BSR1               BSR0         ---0  0000  ---0  0000

x88h

x09h or  WREG      Working Register                                                                                        0000  0000  uuuu  uuuu

x89h

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

x8Ah

x0Bh or  INTCON    GIE    PEIE                TMR0IE            INTE   IOCIE  TMR0IF       INTF               IOCIF        0000  0000  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’.

Note     1:   These registers can be addressed from any bank.

 2013-2015 Microchip Technology Inc.                                                                                      DS40001715D-page 31
PIC16(L)F1704/8

TABLE 3-10:        SPECIAL FUNCTION REGISTER SUMMARY

                                                                                                                                    Value on    Value on all

Addr         Name    Bit 7        Bit 6       Bit 5              Bit 4     Bit 3                Bit 2   Bit 1               Bit 0   POR, BOR    other

                                                                                                                                                Resets

Bank 0

00Ch  PORTA          —                    —   RA5                RA4       RA3                  RA2     RA1                 RA0     --xx  xxxx  --uu  uuuu

00Dh  PORTB(3)       RB7          RB6         RB5                RB4       —                    —       —                   —       xxxx  ----  uuuu  ----

00Eh  PORTC        RC7(3)         RC6(3)      RC5                RC4       RC3                  RC2     RC1                 RC0     xxxx  xxxx  uuuu  uuuu

00Fh  —            Unimplemented                                                                                                    —                 —

010h  —            Unimplemented                                                                                                    —                 —

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

012h  PIR2         OSFIF          C2IF        C1IF                 —       BCL1IF               TMR6IF  TMR4IF              CCP2IF  000-  00--  000-  00--

013h  PIR3           —                    —   COGIF              ZCDIF     —                    CLC3IF  CLC2IF              CLC1IF  --00  -000  --00  -000

014h  —            Unimplemented                                                                                                    —                 —

015h  TMR0         Timer0 Module Register                                                                                           xxxx  xxxx  uuuu  uuuu

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

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

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

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

                                                                           DONE

01Ah  TMR2         Holding Register for the 8-bit TMR2 Register                                                                     xxxx  xxxx  uuuu  uuuu

01Bh  PR2          Timer2 Period Register                                                                                           xxxx  xxxx  uuuu  uuuu

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

01Dh

to    —            Unimplemented                                                                                                    —                 —

01Fh

Bank 1

08Ch  TRISA          —                    —   TRISA5             TRISA4    —(1)                 TRISA2  TRISA1              TRISA0  --11  1111  --11  1111

08Dh  TRISB(3)     TRISB7         TRISB6      TRISB5             TRISB4    —                    —       —                   —       1111  ----  1111  ----

08Eh  TRISC        TRISC7(3)      TRISC6(3)   TRISC5             TRISC4    TRISC3               TRISC2  TRISC1              TRISC0  1111  1111  1111  1111

08Fh  —            Unimplemented                                                                                                    —                 —

090h  —            Unimplemented                                                                                                    —                 —

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

092h  PIE2         OSFIE          C2IE        C1IE                 —       BCL1IE               TMR6IE  TMR4IE              CCP2IE  000-  0000  000-  0000

093h  PIE3           —                    —   COGIE              ZCDIE     —                    CLC3IE  CLC2IE              CLC1IE  --00  -000  --00  -000

094h  —            Unimplemented                                                                                                    —                 —

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

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

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

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

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

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

09Bh  ADRESL       ADC Result Register Low                                                                                          xxxx  xxxx  uuuu  uuuu

09Ch  ADRESH       ADC Result Register High                                                                                         xxxx  xxxx  uuuu  uuuu

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

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

09Fh  ADCON2                              TRIGSEL<3:0>                     —                    —       —                   —       0000  ----  0000  ----

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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

DS40001715D-page 32                                                                                      2013-2015 Microchip       Technology  Inc.
                                                                                             PIC16(L)F1704/8

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

                                                                                                                                  Value on    Value on all

Addr         Name  Bit 7          Bit 6          Bit 5         Bit 4         Bit 3  Bit 2      Bit 1                    Bit 0     POR, BOR    other

                                                                                                                                              Resets

Bank 2

10Ch  LATA         —                      —      LATA5         LATA4            —   LATA2      LATA1                    LATA0     --xx  -xxx  --uu  -uuu

10Dh  LATB(3)      LATB7          LATB6          LATB5         LATB4            —           —  —                        —         xxxx  ----  uuuu  ----

10Eh  LATC         LATC7(3)       LATC6(3)       LATC5         LATC4         LATC3  LATC2      LATC1                    LATC0     xxxx  xxxx  uuuu  uuuu

10Fh  —            Unimplemented                                                                                                  —           —

110h  —            Unimplemented                                                                                                  —           —

111h  CM1CON0      C1ON           C1OUT          —             C1POL         C1ZLF  C1SP       C1HYS                    C1SYNC    00-0  0100  00-0  0100

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

113h  CM2CON0      C2ON           C2OUT          —             C2POL         C2ZLF  C2SP       C2HYS                    C2SYNC    00-0  0100  00-0  0100

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

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

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

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

118h  DAC1CON0     DAC1EN                 ---  DAC1OE1         DAC1OE2          DAC1PSS<1:0>   ---                      DAC1NSS   0-00  00-0  0-00  00-0

119h  DAC1CON1                                                 DAC1R<7:0>                                                         0000  0000  0000  0000

11Ah  —            Unimplemented                                                                                                  —           —

11Bh  —            Unimplemented                                                                                                  —           —

11Ch  ZCD1CON      ZCD1EN                 —    ZCD1OUT         ZCD1POL          —           —  ZCD1INTP                 ZCD1INTN  0-00  --00  0-00  --00

11Dh  —            Unimplemented                                                                                                  —           —

11Eh  —            Unimplemented                                                                                                  —           —

11Fh  —            Unimplemented                                                                                                  —           —

Bank 3

18Ch  ANSELA       —                      —      —             ANSA4            —   ANSA2      ANSA1                    ANSA0     ---1  1111  ---1  1111

18Dh  ANSELB(3)    —                      —      ANSB5         ANSB4            —           —  —                        —         --11  ----  --11  ----

18Eh  ANSELC       ANSC7(3)       ANSC6(3)     ANSC5(2)        ANSC4(2)      ANSC3  ANSC2      ANSC1                    ANSC0     1111  1111  1111  1111

18Fh  —            Unimplemented                                                                                                  —           —

190h  —            Unimplemented                                                                                                  —           —

191h  PMADRL       Program Memory Address Register Low Byte                                                                       0000  0000  0000  0000

192h  PMADRH       —(1)           Program Memory Address Register High Byte                                                       1000  0000  1000  0000

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

194h  PMDATH       —                      —    Program Memory Read Data Register High Byte                                        --xx  xxxx  --uu  uuuu

195h  PMCON1       —              CFGS           LWLO          FREE          WRERR  WREN       WR                       RD        -000  x000  -000  q000

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

197h  VREGCON(4)   —                      —      —             —                —           —  VREGPM                   Reserved  ----  --01  ----  --01

198h  —            Unimplemented                                                                                                  —           —

199h  RC1REG       USART Receive Data Register                                                                                    0000  0000  0000  0000

19Ah  TX1REG       USART Transmit Data Register                                                                                   0000  0000  0000  0000

19Bh  SP1BRGL                                                         BRG<7:0>                                                    0000  0000  0000  0000

19Ch  SP1BRGH                                                     BRG<15:8>                                                       0000  0000  0000  0000

19Dh  RC1STA       SPEN           RX9            SREN          CREN          ADDEN  FERR       OERR                     RX9D      0000  0000  0000  0000

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

19Fh  BAUD1CON     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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

 2013-2015 Microchip Technology Inc.                                                                                   DS40001715D-page 33
PIC16(L)F1704/8

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

                                                                                                                               Value on    Value on all

Addr         Name    Bit 7        Bit 6       Bit 5            Bit 4         Bit 3  Bit 2    Bit 1                      Bit 0  POR, BOR    other

                                                                                                                                           Resets

Bank 4

20Ch  WPUA           —                    —   WPUA5            WPUA4         WPUA3  WPUA2    WPUA1                      WPUA0  --11  1111  --11  1111

20Dh  WPUB(3)      WPUB7          WPUB6       WPUB5            WPUB4            —   —        —                          —      1111  ----  1111  ----

20Eh  WPUC         WPUC7(3)       WPUC6(3)    WPUC5            WPUC4         WPUC3  WPUC2    WPUC1                      WPUC0  1111  1111  1111  1111

20Fh  —            Unimplemented                                                                                               —                 —

210h  —            Unimplemented                                                                                               —                 —

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

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

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

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

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

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

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

218h
—     —            Unimplemented                                                                                               —                 —
21Fh

Bank 5

28Ch  ODCONA         —                    —   ODA5             ODA4             —   ODA2     ODA1                       ODA0   --00  -000  --00  -000

28Dh  ODCONB(3)      ODB7         ODB6        ODB5             ODB4             —   —        —                          —      0000  ----  0000  ----

28Eh  ODCONC       ODC7(3)        ODC6(3)     ODC5             ODC4          ODC3   ODC2     ODC1                       ODC0   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        —                    —   DC1B<1:0>                                      CCP1M<3:0>                        --00  0000  --00  0000

294h
—     —            Unimplemented                                                                                               —                 —
297h

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

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

29Ah  CCP2CON        —                    —   DC2B<1:0>                                      CCP2M<3:0>                        --00  0000  --00  0000

29Bh
—     —            Unimplemented                                                                                               —                 —
29Dh

29Eh  CCPTMRS        P4TSEL<1:0>              P3TSEL<1:0>                       C2TSEL<1:0>              C1TSEL<1:0>           0000  0000  0000  0000

29Fh  —            Unimplemented                                                                                               —                 —

Bank 6

30Ch  SLRCONA        —                    —   SLRA5            SLRA4            —   SLRA2    SLRA1                      SLRA0  --00  -000  --00  -000

30Dh  SLRCONB(3)   SLRB7          SLRB6       SLRB5            SLRB4            —   —        —                          —      0000  ----  0000  ----

30Eh  SLRCONC      SLRC7(3)       SLRC6(3)    SLRC5            SLRC4         SLRC3  SLRC2    SLRC1                      SLRC0  0000  0000  0000  0000

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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

DS40001715D-page 34                                                                           2013-2015 Microchip             Technology  Inc.
                                                                                                PIC16(L)F1704/8

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

                                                                                                                                 Value on    Value on all

Addr         Name  Bit 7          Bit 6       Bit 5            Bit 4    Bit 3                   Bit 2    Bit 1          Bit 0    POR, BOR    other

                                                                                                                                             Resets

Bank 7

38Ch  INLVLA       —                      —   INLVLA5          INLVLA4  INLVLA3                 INLVLA2  INLVLA1        INLVLA0  --11  1111  --11  1111

38Dh  INLVLB(3)    INLVLB7        INLVLB6     INLVLB5          INLVLB4  —                       —        —              —        1111  ----  1111  ----

38Eh  INLVLC       INLVLC7(3)     INLVLC6(3)  INLVLC5          INLVLC4  INLVLC3                 INLVLC2  INLVLC1        INLVLC0  1111  1111  1111  1111

38Fh  —            Unimplemented                                                                                                 —           —

390h  —            Unimplemented                                                                                                 —           —

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

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

393h  IOCAF        —                      —   IOCAF5           IOCAF4   IOCAF3                  IOCAF2   IOCAF1         IOCAF0   --00  0000  --00  0000

394h  IOCBP(3)     IOCBP7         IOCBP6      IOCBP5           IOCBP4   —                       —        —              —        0000  ----  0000  ----

395h  IOCBN(3)     IOCBN7         IOCBN6      IOCBN5           IOCBN4   —                       —        —              —        0000  ----  0000  ----

396h  IOCBF(3)     IOCBF7         IOCBF6      IOCBF5           IOCBF4   —                       —        —              —        0000  ----  0000  ----

397h  IOCCP        IOCCP7(3)      IOCCP6(3)   IOCCP5           IOCCP4   IOCCP3                  IOCCP2   IIOCCP1        IOCCP0   0000  0000  0000  0000

398h  IOCCN        IOCCN7(3)      IOCCN6(3)   IOCCN5           IOCCN4   IOCCN3                  IOCCN2   IIOCCN1        IOCCN0   0000  0000  0000  0000

399h  IOCCF        IOCCF7(3)      IOCCF6(3)   IOCCF5           IOCCF4   IOCCF3                  IOCCF2   IIOCCF1        IOCCF0   0000  0000  0000  0000

39Ah
—     —            Unimplemented                                                                                                 —           —
39Fh

Bank 8

40Ch
—     —            Unimplemented                                                                                                 —           —
414h

415h  TMR4         Holding Register for the Least Significant Byte of the 16-bit TMR4 Register                                   xxxx  xxxx  uuuu  uuuu

416h  PR4          Holding Register for the Most Significant Byte of the 16-bit TMR4 Register                                    xxxx  xxxx  uuuu  uuuu

417h  T4CON        —                          T4OUTPS<3:0>                                      TMR4ON   T4CKPS<1:0>             -000  0000  -000  0000

418h
—     —            Unimplemented                                                                                                 —           —
41Bh

41Ch  TMR6         Holding Register for the Least Significant Byte of the 16-bit TMR6 Register                                   xxxx  xxxx  uuuu  uuuu

41Dh  PR6          Holding Register for the Most Significant Byte of the 16-bit TMR6 Register                                    xxxx  xxxx  uuuu  uuuu

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

41Fh  —            Unimplemented                                                                                                 —           —

Bank 9

48Ch

to    —            Unimplemented                                                                                                 —           —

49Fh

Bank 10

50Ch
—     —            Unimplemented                                                                                                 —           —
510h

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

512h

—     —            Unimplemented                                                                                                 —           —

514h

515h  OPA2CON      OPA2EN         OPA2SP      —                OPA2UG   —                       —        OPA2PCH<1:0>            00-0  --00  00-0  --00

516h
—     —            Unimplemented                                                                                                 —           —
51Fh

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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

 2013-2015 Microchip Technology Inc.                                                                                   DS40001715D-page 35
PIC16(L)F1704/8

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

                                                                                                                                 Value on    Value on all

Addr         Name    Bit 7        Bit 6       Bit 5            Bit 4    Bit 3              Bit 2   Bit 1                Bit 0    POR, BOR    other

                                                                                                                                             Resets

Bank 11

D8Ch

to     —           Unimplemented                                                                                                 —                 —

DADh

Bank 12

60Ch

to     —           Unimplemented                                                                                                 —                 —

616h

617h   PWM3DCL       PWM3DC<1:0>              —                —          —                —       —                    —        xx--  ----  uu--  ----

618h   PWM3DCH                                                 PWM3DC<9:2>                                                       xxxx  xxxx  uuuu  uuuu

619h   PWM3CON     PWM3EN                 —   PWM3OUT          PWM3POL    —                —       —                    —        0-x0  ----  u-uu  ----

61Ah   PWM4DCL       PWM4DC<1:0>              —                —          —                —       —                    —        00--  ----  uu--  ----

61Bh   PWM4DCH                                                 PWM4DC<9:2>                                                       0000  0000  uuuu  uuuu

61Ch   PWM4CON     PWM4EN                 —   PWM4OUT          PWM4POL    —                —       —                    —        0-x0  ----  u-uu  ----

61Dh
—      —           Unimplemented                                                                                                 —                 —
61Fh

Bank 13

68Ch

to     —           Unimplemented                                                                                                 —                 —

690h

691h   COG1PHR       —                    —   COG Rising Edge Phase Counter Register                                             --xx  xxxx  --uu  uuuu

692h   COG1PHF       —                    —   COG Falling Edge Phase Counter Register                                            --xx  xxxx  --uu  uuuu

693h   COG1BLKR      —                    —   COG Rising Edge Blanking Counter Register                                          --xx  xxxx  --uu  uuuu

694h   COG1BLKF      —                    —   COG Falling Edge Blanking Counter Register                                         --xx  xxxx  --uu  uuuu

695h   COG1DBR       —                    —   COG Rising Edge Dead-band Counter Register                                         --xx  xxxx  --uu  uuuu

696h   COG1DBF       —                    —   COG Falling Edge Dead-band Counter Register                                        --xx  xxxx  --uu  uuuu

697h   COG1CON0      G1EN         G1LD        —                G1CS<1:0>                           G1MD<2:0>                     00-0  0000  00-0  0000

698h   COG1CON1    G1RDBS         G1FDBS      —                —        G1POLD            G1POLC   G1POLB               G1POLA   00--  0000  00--  0000

699h   COG1RIS       —            G1RIS6      G1RIS5           G1RIS4   G1RIS3            G1RIS2   G1RIS1               G1RIS0   -000  0000  -000  0000

69Ah   COG1RSIM      —            G1RSIM6     G1RSIM5          G1RSIM4  G1RSIM3           G1RSIM2  G1RSIM1              G1RSIM0  -000  0000  -000  0000

69Bh   COG1FIS       —            G1FIS6      G1FIS5           G1FIS4   G1FIS3            G1FIS2   G1FIS1               G1FIS0   -000  0000  -000  0000

69Ch   COG1FSIM      —            G1FSIM6     G1FSIM5          G1FSIM4  G1FSIM3           G1FSIM2  G1FSIM1              G1FSIM0  -000  0000  -000  0000

69Dh   COG1ASD0    G1ASE          G1ARSEN     G1ASDBD<1:0>                G1ASDAC<1:0>             —                    —        0001  01--  0001  01--

69Eh   COG1ASD1      —                    —   —                —        G1AS3E            G1AS2E   G1AS1E               G1AS0E   ----  0000  ----  0000

69Fh   COG1STR     G1SDATD        G1SDATC     G1SDATB          G1SDATA  G1STRD            G1STRC   G1STRB               G1STRA   0000  0001  0000  0001

Bank 14-27

x0Ch/  —           Unimplemented                                                                                                 —                 —

x8Ch



x1Fh/

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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

DS40001715D-page 36                                                                                 2013-2015 Microchip         Technology  Inc.
                                                                             PIC16(L)F1704/8

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

                                                                                                                                   Value on       Value on all

Addr         Name    Bit 7          Bit 6     Bit 5            Bit 4  Bit 3  Bit 2           Bit 1                      Bit 0      POR, BOR       other

                                                                                                                                                  Resets

Bank 28

E0Ch

—     —              Unimplemented                                                                                                       —        —

E0Eh

E0Fh     PPSLOCK     —                    —   —                —      —      —               —                          PPSLOCKED  ----  ---0     ----  ---0

E10h         INTPPS  —                    —   —                              INTPPS<4:0>                                           ---0  0010     ---u  uuuu

E11h     T0CKIPPS    —                    —   —                              T0CKIPPS<4:0>                                         ---0  0010     ---u  uuuu

E12h     T1CKIPPS    —                    —   —                              T1CKIPPS<4:0>                                         ---0  0101     ---u  uuuu

E13h     T1GPPS      —                    —   —                              T1GPPS<4:0>                                           ---0  0100     ---u  uuuu

E14h     CCP1PPS     —                    —   —                              CCP1PPS<4:0>                                          ---1  0101     ---u  uuuu

E15h     CCP2PPS     —                    —   —                              CCP2PPS<4:0>                                          ---1  0011     ---u  uuuu

E16h         —       Unimplemented                                                                                                       —        —

E17h     COGINPPS    —                    —   —                              COGINPPS<4:0>                                         ---0  0010     ---u  uuuu

E18h

—     —              Unimplemented                                                                                                       —        —

E1Fh

E20h  SSPCLKPPS      —                    —   —                              SSPCLKPPS<4:0>                                        ---1  0000(3)  ---u  uuuu

                     —                    —   —                              SSPCLKPPS<4:0>                                        ---0  1110(4)  ---u  uuuu

E21h  SSPDATPPS      —                    —   —                              SSPDATPPS<4:0>                                        ---1  0001(3)  ---u  uuuu

                     —                    —   —                              SSPDATPPS<4:0>                                        ---0  1100(4)  ---u  uuuu

E22h     SSPSSPPS    —                    —   —                              SSPSSPPS<4:0>                                         ---1  0011(3)  ---u  uuuu

                     —                    —   —                              SSPSSPPS<4:0>                                         ---1  0110(4)  ---u  uuuu

E23h         —       Unimplemented                                                                                                       —        —

E24h         RXPPS   —                    —   —                              RXPPS<4:0>                                            ---1  0101(3)  ---u  uuuu

                     —                    —   —                              RXPPS<4:0>                                            ---0  1101(4)  ---u  uuuu

E25h         CKPPS   —                    —   —                              CKPPS<4:0>                                            ---1  0100(3)  ---u  uuuu

                     —                    —   —                              CKPPS<4:0>                                            ---0  1111(4)  ---u  uuuu

E26h         —       Unimplemented                                                                                                       —        —

E27h         —       Unimplemented                                                                                                       —        —

E28h     CLCIN0PPS   —                    —   —                              CLCIN0PPS<4:0>                                        ---1  0011     ---u  uuuu

E29h     CLCIN1PPS   —                    —   —                              CLCIN1PPS<4:0>                                        ---1  0100     ---u  uuuu

E2Ah     CLCIN2PPS   —                    —   —                              CLCIN2PPS<4:0>                                        ---1  0001     ---u  uuuu

E2Bh     CLCIN3PPS   —                    —   —                              CLCIN3PPS<4:0>                                        ---0  0101     ---u  uuuu

E2Ch

to    —              Unimplemented                                                                                                       —        —

E7Fh

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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

 2013-2015 Microchip Technology Inc.                                                                                   DS40001715D-page 37
PIC16(L)F1704/8

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

                                                                                                                                              Value on    Value on all

Addr         Name    Bit 7         Bit 6      Bit 5                Bit 4             Bit 3  Bit 2                    Bit 1         Bit 0      POR, BOR    other

                                                                                                                                                          Resets

Bank 29

E8Ch



E8Fh  —             Unimplemented                                                                                                             —                 —

E90h     RA0PPS      —                    —   —                                             RA0PPS<4:0>                                       ---0  0000  ---u  uuuu

E91h     RA1PPS      —                    —   —                                             RA1PPS<4:0>                                       ---0  0000  ---u  uuuu

E92h     RA2PPS      —                    —   —                                             RA2PPS<4:0>                                       ---0  0000  ---u  uuuu

E93h  —             Unimplemented                                                                                                             —                 —

E94h     RA4PPS      —                    —   —                                             RA4PPS<4:0>                                       ---0  0000  ---u  uuuu

E95h     RA5PPS      —                    —   —                                             RA5PPS<4:0>                                       ---0  0000  ---u  uuuu

E96h  —             Unimplemented                                                                                                             —                 —

E97h  —             Unimplemented                                                                                                             —                 —

E98h  —             Unimplemented                                                                                                             —                 —

E99h  —             Unimplemented                                                                                                             —                 —

E9Ah  —             Unimplemented                                                                                                             —                 —

E9Bh  —             Unimplemented                                                                                                             —                 —

E9Ch     RB4PPS(3)   —                    —   —                                             RB4PPS<4:0>                                       ---0  0000  ---u  uuuu

E9Dh     RB5PPS(3)   —                    —   —                                             RB5PPS<4:0>                                       ---0  0000  ---u  uuuu

E9Eh     RB6PPS(4)   —                    —   —                                             RB6PPS<4:0>                                       ---0  0000  ---u  uuuu

E9Fh     RB7PPS(3)   —                    —   —                                             RB7PPS<4:0>                                       ---0  0000  ---u  uuuu

EA0h     RC0PPS      —                    —   —                                             RC0PPS<4:0>                                       ---0  0000  ---u  uuuu

EA1h     RC1PPS      —                    —   —                                             RC1PPS<4:0>                                       ---0  0000  ---u  uuuu

EA2h     RC2PPS      —                    —   —                                             RC2PPS<4:0>                                       ---0  0000  ---u  uuuu

EA3h     RC3PPS      —                    —   —                                             RC3PPS<4:0>                                       ---0  0000  ---u  uuuu

EA4h     RC4PPS      —                    —   —                                             RC4PPS<4:0>                                       ---0  0000  ---u  uuuu

EA5h     RC5PPS      —                    —   —                                             RC5PPS<4:0>                                       ---0  0000  ---u  uuuu

EA6h     RC6PPS(4)   —                    —   —                                             RC6PPS<4:0>                                       ---0  0000  ---u  uuuu

EA7h     RC7PPS(4)   —                    —   —                                             RC7PPS<4:0>                                       ---0  0000  ---u  uuuu

EA8h



EEFh  —             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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

DS40001715D-page 38                                                                                                2013-2015      Microchip  Technology  Inc.
                                                                                          PIC16(L)F1704/8

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

                                                                                                                                       Value on    Value on all

Addr         Name  Bit 7          Bit 6       Bit 5            Bit 4            Bit 3     Bit 2        Bit 1                 Bit 0     POR, BOR    other

                                                                                                                                                   Resets

Bank 30

F0Ch



F0Eh  —            Unimplemented                                                                                                       —           —

F0Fh  CLCDATA      —                      —   —                —                —         MLC3OUT      MLC2OUT               MLC1OUT   ----  -000  ----  -000

F10h  CLC1CON      LC1EN                  —   LC1OUT           LC1INTP          LC1INTN             LC1MODE<2:0>                       0-x0  0000  0-00  0000

F11h  CLC1POL      LC1POL                 —   —                —                LC1G4POL  LC1G3POL     LC1G2POL              LC1G1POL  x---  xxxx  0---  uuuu

F12h  CLC1SEL0     —                      —   —                                           LC1D1S<4:0>                                  ---x  xxxx  ---u  uuuu

F13h  CLC1SEL1     —                      —   —                                           LC1D2S<4:0>                                  ---x  xxxx  ---u  uuuu

F14h  CLC1SEL2     —                      —   —                                           LC1D3S<4:0>                                  ---x  xxxx  ---u  uuuu

F15h  CLC1SEL3     —                      —   —                                           LC1D4S<4:0>                                  ---x  xxxx  ---u  uuuu

F16h  CLC1GLS0     LC1G1D4T       LC1G1D4N    LC1G1D3T         LC1G1D3N         LC1G1D2T  LC1G1D2N     LC1G1D1T              LC1G1D1N  xxxx  xxxx  uuuu  uuuu

F17h  CLC1GLS1     LC1G2D4T       LC1G2D4N    LC1G2D3T         LC1G2D3N         LC1G2D2T  LC1G2D2N     LC1G2D1T              LC1G2D1N  xxxx  xxxx  uuuu  uuuu

F18h  CLC1GLS2     LC1G3D4T       LC1G3D4N    LC1G3D3T         LC1G3D3N         LC1G3D2T  LC1G3D2N     LC1G3D1T              LC1G3D1N  xxxx  xxxx  uuuu  uuuu

F19h  CLC1GLS3     LC1G4D4T       LC1G4D4N    LC1G4D3T         LC1G4D3N         LC1G4D2T  LC1G4D2N     LC1G4D1T              LC1G4D1N  xxxx  xxxx  uuuu  uuuu

F1Ah  CLC2CON      LC2EN                  —   LC2OUT           LC2INTP          LC2INTN             LC2MODE<2:0>                       0-00  0000  0-00  0000

F1Bh  CLC2POL      LC2POL                 —   —                —                LC2G4POL  LC2G3POL     LC2G2POL              LC2G1POL  0---  xxxx  0---  uuuu

F1Ch  CLC2SEL0     —                      —   —                                           LC2D1S<4:0>                                  ---x  xxxx  ---u  uuuu

F1Dh  CLC2SEL1     —                      —   —                                           LC2D2S<4:0>                                  ---x  xxxx  ---u  uuuu

F1Eh  CLC2SEL2     —                      —   —                                           LC2D3S<4:0>                                  ---x  xxxx  ---u  uuuu

F1Fh  CLC2SEL3     —                      —   —                                           LC2D4S<4:0>                                  ---x  xxxx  ---u  uuuu

F20h  CLC2GLS0     LC2G1D4T       LC2G1D4N    LC2G1D3T         LC2G1D3N         LC2G1D2T  LC2G1D2N     LC2G1D1T              LC2G1D1N  xxxx  xxxx  uuuu  uuuu

F21h  CLC2GLS1     LC2G2D4T       LC2G2D4N    LC2G2D3T         LC2G2D3N         LC2G2D2T  LC2G2D2N     LC2G2D1T              LC2G2D1N  xxxx  xxxx  uuuu  uuuu

F22h  CLC2GLS2     LC2G3D4T       LC2G3D4N    LC2G3D3T         LC2G3D3N         LC2G3D2T  LC2G3D2N     LC2G3D1T              LC2G3D1N  xxxx  xxxx  uuuu  uuuu

F23h  CLC2GLS3     LC2G4D4T       LC2G4D4N    LC2G4D3T         LC2G4D3N         LC2G4D2T  LC2G4D2N     LC2G4D1T              LC2G4D1N  xxxx  xxxx  uuuu  uuuu

F24h  CLC3CON      LC3EN                  —   LC3OUT           LC3INTP          LC3INTN             LC3MODE<2:0>                       0-00  0000  0-00  0000

F25h  CLC3POL      LC3POL                 —   —                —                LC3G4POL  LC3G3POL     LC3G2POL              LC3G1POL  0---  xxxx  0---  uuuu

F26h  CLC3SEL0     —                      —   —                                           LC3D1S<4:0>                                  ---x  xxxx  ---u  uuuu

F27h  CLC3SEL1     —                      —   —                                           LC3D2S<4:0>                                  ---x  xxxx  ---u  uuuu

F28h  CLC3SEL2     —                      —   —                                           LC3D3S<4:0>                                  ---x  xxxx  ---u  uuuu

F29h  CLC3SEL3     —                      —   —                                           LC3D4S<4:0>                                  ---x  xxxx  ---u  uuuu

F2Ah  CLC3GLS0     LC3G1D4T       LC3G1D4N    LC3G1D3T         LC3G1D3N         LC3G1D2T  LC3G1D2N     LC3G1D1T              LC3G1D1N  xxxx  xxxx  uuuu  uuuu

F2Bh  CLC3GLS1     LC3G2D4T       LC3G2D4N    LC3G2D3T         LC3G2D3N         LC3G2D2T  LC3G2D2N     LC3G2D1T              LC3G2D1N  xxxx  xxxx  uuuu  uuuu

F2Ch  CLC3GLS2     LC3G3D4T       LC3G3D4N    LC3G3D3T         LC3G3D3N         LC3G3D2T  LC3G3D2N     LC3G3D1T              LC3G3D1N  xxxx  xxxx  uuuu  uuuu

F2Dh  CLC3GLS3     LC3G4D4T       LC3G4D4N    LC3G4D3T         LC3G4D3N         LC3G4D2T  LC3G4D2N     LC3G4D1T              LC3G4D1N  xxxx  xxxx  uuuu  uuuu

F2Eh

—     —            Unimplemented                                                                                                       —           —

F6Fh

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:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

 2013-2015 Microchip Technology Inc.                                                                                        DS40001715D-page 39
PIC16(L)F1704/8

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

                                                                                                                                   Value on    Value on all

Addr         Name    Bit 7        Bit 6       Bit 5            Bit 4          Bit 3         Bit 2  Bit 1                Bit 0      POR, BOR    other

                                                                                                                                               Resets

Bank 31

F8Ch

to    —            Unimplemented                                                                                                   —                 —

FE3h

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

      SHAD

FE5h  WREG_        Working Register Shadow                                                                                         xxxx  xxxx  uuuu  uuuu

      SHAD

FE6h  BSR_SHAD       —                    —   —                Bank Select Register Shadow                                         ---x  xxxx  ---u  uuuu

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

      SHAD

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

      SHAD

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

      SHAD

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

      SHAD

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

      SHAD

FECh  —            Unimplemented                                                                                                   —                 —

FEDh  STKPTR         —                    —   —                Current Stack Pointer                                               ---1  1111  ---1  1111

FEEh  TOSL         Top of Stack Low byte                                                                                           xxxx  xxxx  uuuu  uuuu

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

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, read as ‘0’, r = reserved.

             Shaded locations are unimplemented, read as ‘0’.

Note     1:  Unimplemented, read as ‘1’.

         2:  PIC16(L)F1704 only.

         3:  PIC16(L)F1708 only.

         4:  Unimplemented on PIC16LF1704/8.

DS40001715D-page 40                                                                                 2013-2015          Microchip  Technology  Inc.
                                                                                        PIC16(L)F1704/8

3.5       PCL and PCLATH                                                   3.5.3         COMPUTED FUNCTION CALLS

The Program Counter (PC) is 15 bits wide. The low byte                     A computed function CALL allows programs to maintain

comes from the PCL register, which is a readable and                       tables of functions and provide another way to execute

writable register. The high byte (PC<14:8>) is not directly                state machines or look-up tables. When performing a

readable or writable and comes from PCLATH. On any                         table  read   using  a   computed      function   CALL,   care

Reset,  the   PC   is  cleared.   Figure 3-3     shows  the    five        should be exercised if the table location crosses a PCL

situations for the loading of the PC.                                      memory boundary (each 256-byte block).

                                                                           If using the CALL instruction, the PCH<2:0> and PCL

FIGURE 3-3:             LOADING OF PC IN                                   registers  are   loaded  with   the   operand    of  the  CALL

                        DIFFERENT SITUATIONS                               instruction. PCH<6:3> is loaded with PCLATH<6:3>.

              14                                                           The    CALLW    instruction   enables  computed        calls  by

                   PCH                 PCL       0   Instruction with      combining    PCLATH      and   W  to   form  the     destination

          PC                                            PCL as             address.   A    computed               is  accomplished       by

                                                        Destination                                     CALLW

              6    7    0             8                                    loading the W register with the desired address and

PCLATH                            ALU Result                               executing CALLW. The PCL register is loaded with the

                                                                           value of W and PCH is loaded with PCLATH.

          PC  14   PCH                 PCL       0                         3.5.4         BRANCHING

                                                      GOTO,  CALL

                                                                           The branching instructions add an offset to the PC.

              64        0         11                                       This allows relocatable code and code that crosses

PCLATH                       OPCODE <10:0>                                 page boundaries. There are two forms of branching,

              14   PCH                 PCL       0                         BRW and BRA. The PC will have incremented to fetch

          PC                                            CALLW              the next instruction in both cases. When using either

                                                                           branching instruction, a PCL memory boundary may be

              6    7    0              8                                   crossed.

PCLATH                                    W                                If  using  BRW,  load   the  W  register   with   the  desired

              14  PCH                  PCL       0                         unsigned address and execute BRW. The entire PC will

          PC                                            BRW                be loaded with the address PC + 1 + W.

                                                                           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

          PC  14  PCH                  PCL       0

                                                        BRA

                        15

                   PC + OPCODE <8:0>

3.5.1         MODIFYING PCL

Executing any instruction with the PCL register as the

destination       simultaneously      causes     the    Program

Counter PC<14:8> bits (PCH) to be replaced by the

contents of the PCLATH register. This allows the entire

contents  of  the  program       counter     to  be  changed           by

writing the desired upper seven bits to the PCLATH

register. When the lower eight bits are written to the

PCL register, all 15 bits of the program counter will

change to the values contained in the PCLATH register

and those being written to the PCL register.

3.5.2         COMPUTED GOTO

A computed GOTO is accomplished by adding an offset to

the program counter (ADDWF        PCL). When performing a

table read using a computed GOTO method, care should

be exercised if the table location crosses a PCL memory

boundary  (each    256-byte      block).  Refer  to   Application

Note AN556, “Implementing a Table Read” (DS00556).

 2013-2015 Microchip Technology Inc.                                                                             DS40001715D-page 41
PIC16(L)F1704/8

3.6       Stack                                                          3.6.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 Figure 3-1). The stack space is not part                 STKPTR registers. STKPTR is the current value of the

of either program or data space. The PC is PUSHed                        Stack Pointer. TOSH:TOSL register pair points to the

onto the stack when CALL or CALLW instructions are                       TOP of the stack. Both registers are read/writable. TOS

executed or an interrupt causes a branch. The stack is                   is split into TOSH and TOSL due to the 15-bit size of the

POPed in the event of a RETURN,    RETLW or a RETFIE                     PC. To access the stack, adjust the value of STKPTR,

instruction   execution.   PCLATH  is  not   affected    by  a           which  will  position   TOSH:TOSL,     then       read/write  to

PUSH or POP operation.                                                   TOSH:TOSL. STKPTR is five bits to allow detection of

The stack operates as a circular buffer if the STVREN                    overflow and underflow.

bit is programmed to ‘0‘ (Configuration Words). This                     Note:        Care should be taken when modifying the

means that after the stack has been PUSHed sixteen                                    STKPTR while interrupts are enabled.

times, the seventeenth PUSH overwrites the value that                    During normal program operation, CALL, CALLW and

was stored from the first PUSH. The eighteenth PUSH                      Interrupts   will  increment  STKPTR            while  RETLW,

overwrites    the  second  PUSH    (and      so    on).  The             RETURN, and RETFIE will decrement STKPTR. At any

STKOVF and STKUNF flag bits will be set on an Over-                      time,  STKPTR      can  be  inspected  to    see   how  much

flow/Underflow,    regardless  of  whether   the   Reset     is          stack is left. The STKPTR always points at the currently

enabled.                                                                 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                Reference Figure 3-4 through Figure 3-7 for examples

              instructions or the vectoring to an interrupt              of accessing the stack.

              address.

FIGURE 3-4:               ACCESSING THE STACK EXAMPLE 1

              TOSH:TOSL                            0x0F                         STKPTR = 0x1F     Stack Reset Disabled

                                                                                                  (STVREN = 0)

                                                 0x0E

                                                 0x0D

                                                 0x0C

                                                 0x0B

                                                 0x0A                           Initial Stack Configuration:

                                                   0x09

                                                   0x08                         After Reset, the stack is empty. The

                                                                                empty stack is initialized so the Stack

                                                   0x07                         Pointer is pointing at 0x1F. If the Stack

                                                                                Overflow/Underflow Reset is enabled, the

                                                   0x06                         TOSH/TOSL registers will return ‘0’. If

                                                                                the Stack Overflow/Underflow Reset is

                                                   0x05                         disabled, the TOSH/TOSL registers will

                                                   0x04                         return the contents of stack address 0x0F.

                                                   0x03

                                                   0x02

                                                   0x01

                                                   0x00

              TOSH:TOSL                            0x1F          0x0000         STKPTR = 0x1F     Stack Reset Enabled

                                                                                                  (STVREN = 1)

DS40001715D-page 42                                                                          2013-2015 Microchip Technology Inc.
                                                                    PIC16(L)F1704/8

FIGURE 3-5:   ACCESSING                   THE STACK EXAMPLE      2

                                          0x0F

                                          0x0E

                                          0x0D

                                          0x0C

                                          0x0B

                                          0x0A

                                          0x09                      This figure shows the stack configuration

                                          0x08                      after the first CALL or a single interrupt.

                                                                    If a RETURN    instruction is executed, the

                                          0x07                      return address will be placed in the

                                                                    Program Counter and the Stack Pointer

                                          0x06                      decremented to the empty state (0x1F).

                                          0x05

                                          0x04

                                          0x03

                                          0x02

                                          0x01

              TOSH:TOSL                   0x00  Return Address      STKPTR = 0x00

FIGURE 3-6:   ACCESSING                   THE STACK EXAMPLE      3

                                          0x0F

                                          0x0E

                                          0x0D

                                          0x0C                      After seven CALLs or six CALLs and an

                                          0x0B                      interrupt, the stack looks like the figure

                                                                    on the left.  A series of RETURN instructions

                                          0x0A                      will repeatedly place the return addresses

                                          0x09                      into the Program Counter and pop the stack.

                                          0x08

                                          0x07

              TOSH:TOSL                   0x06  Return  Address     STKPTR = 0x06

                                          0x05  Return  Address

                                          0x04  Return  Address

                                          0x03  Return  Address

                                          0x02  Return  Address

                                          0x01  Return  Address

                                          0x00  Return  Address

  2013-2015  Microchip Technology  Inc.                                           DS40001715D-page                43
PIC16(L)F1704/8

FIGURE 3-7:                   ACCESSING THE STACK EXAMPLE 4

                                                          0x0F   Return  Address

                                                          0x0E   Return  Address

                                                          0x0D   Return  Address

                                                          0x0C   Return  Address

                                                          0x0B   Return  Address

                                                          0x0A   Return  Address  When the stack is full, the next CALL or

                                                          0x09   Return  Address  an interrupt will set the Stack Pointer to

                                                                                  0x10. This is identical to address 0x00

                                                          0x08   Return  Address  so the stack will wrap and overwrite the

                                                          0x07   Return  Address  return address at 0x00. If the Stack

                                                                                  Overflow/Underflow Reset is enabled, a

                                                          0x06   Return  Address  Reset will occur and location 0x00 will

                                                                                  not be overwritten.

                                                          0x05   Return  Address

                                                          0x04   Return  Address

                                                          0x03   Return  Address

                                                          0x02   Return  Address

                                                          0x01   Return  Address

                  TOSH:TOSL                               0x00   Return  Address  STKPTR = 0x10

3.6.2         OVERFLOW/UNDERFLOW RESET

If  the    STVREN        bit     in  Configuration        Words  is

programmed to ‘1’, the device will be reset if the stack

is  PUSHed        beyond   the       sixteenth     level  or   POPed

beyond     the    first  level,  setting      the  appropriate   bits

(STKOVF       or  STKUNF,        respectively)     in     the  PCON

register.

3.7        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

DS40001715D-page 44                                                                2013-2015 Microchip Technology            Inc.
                                                                   PIC16(L)F1704/8

FIGURE 3-8:  INDIRECT                  ADDRESSING

                                                   0x0000  0x0000

                                                           Traditional

                                                           Data Memory

                                                   0x0FFF  0x0FFF

                                                   0x1000  Reserved

                                                   0x1FFF

                                                   0x2000

                                                           Linear

                                                           Data Memory

                                                   0x29AF

                                                   0x29B0  Reserved

             FSR                       0x7FFF

             Address                   0x8000

             Range                                         0x0000

                                                           Program

                                                           Flash Memory

                                       0xFFFF              0x7FFF

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

 2013-2015 Microchip Technology Inc.                                    DS40001715D-page 45
PIC16(L)F1704/8

3.7.1  TRADITIONAL DATA MEMORY

The  traditional  data  memory  is   a  region  from   FSR

address 0x000 to FSR address 0xFFF. The addresses

correspond to the absolute addresses of all SFR, GPR

and common registers.

FIGURE 3-9:             TRADITIONAL DATA MEMORY                   MAP

                  Direct Addressing                                            Indirect Addressing

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

                                                               0  0  0  0

            Bank Select              Location Select                    Bank Select                 Location Select

                                        00000   00001  00010               11111

                                0x00

                                0x7F

                                        Bank 0  Bank 1 Bank 2              Bank 31

DS40001715D-page 46                                                                   2013-2015 Microchip Technology Inc.
                                                                          PIC16(L)F1704/8

3.7.2          LINEAR DATA MEMORY                             3.7.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

Unimplemented memory reads as 0x00. Use of the                memory which will be accessed through INDF. Only the

linear data memory region allows buffers to be larger         lower eight bits of each memory location is accessible

than 80 bytes because incrementing the FSR beyond             via INDF. Writing to the Program Flash Memory cannot

one bank will go directly to the GPR memory of the next       be     accomplished    via   the   FSR/INDF        interface.  All

bank.                                                         instructions that access Program Flash Memory via the

The 16 bytes of common memory are not included in             FSR/INDF    interface        will  require     one      additional

the linear data memory region.                                instruction cycle to complete.

FIGURE 3-10:               LINEAR DATA MEMORY                 FIGURE 3-11:                 PROGRAM FLASH

                           MAP                                                             MEMORY MAP

                                                                  7  FSRnH           0     7          FSRnL       0

7         FSRnH      0     7        FSRnL        0                1

0      0  1

                                                                          Location Select                0x8000   0x0000

          Location Select                0x2000  0x020

                                                 Bank 0

                                                 0x06F

                                                 0x0A0

                                                 Bank 1                                                           Program

                                                 0x0EF                                                            Flash

                                                 0x120                                                            Memory

                                                 Bank 2                                                           (low 8

                                                 0x16F                                                            bits)

                                                 0xF20

                                                 Bank 30                                                 0xFFFF   0x7FFF

                                         0x29AF  0xF6F

 2013-2015 Microchip Technology Inc.                                                                 DS40001715D-page 47
PIC16(L)F1704/8

4.0        DEVICE CONFIGURATION

Device configuration consists of Configuration Words,

Code Protection and Device ID.

4.1        Configuration Words

There are several Configuration Word bits that allow

different  oscillator  and  memory  protection     options.

These are implemented as Configuration Word 1 at

8007h and Configuration Word 2 at 8008h.

Note:      The DEBUG bit in Configuration Words is

           managed          automatically     by   device

           development      tools  including  debuggers

           and     programmers.    For     normal  device

           operation, this bit should be maintained as

           a ‘1’.

DS40001715D-page 48                                           2013-2015 Microchip Technology Inc.
                                                                                PIC16(L)F1704/8

4.2        Register Definitions: Configuration Words

REGISTER    4-1:      CONFIG1: CONFIGURATION WORD 1

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

                             FCMEN             IESO    CLKOUTEN                 BOREN<1:0>                              —

                             bit 13                                                                                          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(1)            MCLRE  PWRTE                   WDTE<1:0>                          FOSC<2:0>

bit 7                                                                                                                        bit 0

Legend:

R = Readable bit             P = Programmable bit      U = Unimplemented bit, read as ‘1’

‘0’ = Bit is cleared         ‘1’ = Bit is set          -n = Value when blank or after Bulk Erase

bit  13     FCMEN: Fail-Safe Clock Monitor Enable bit

            1 = Fail-Safe Clock Monitor and internal/external switchover are both enabled.

            0 = Fail-Safe Clock Monitor is disabled

bit  12     IESO: Internal External Switchover bit

            1 = Internal/External Switchover mode is enabled

            0 = Internal/External Switchover mode is disabled

bit  11     CLKOUTEN: Clock Out Enable bit

            If FOSC configuration bits are set to LP, XT, HS modes:

                      This bit is ignored, CLKOUT function is disabled. Oscillator function on the CLKOUT pin.

            All other FOSC modes:

                      1 = CLKOUT function is disabled. I/O function on the CLKOUT pin.

                      0 = CLKOUT function is enabled on the CLKOUT pin

bit  10-9   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

bit  8      Unimplemented: Read as ‘1’

bit  7      CP: Code Protection bit(1)

            1 = Program memory code protection is disabled

            0 = Program memory code protection is enabled

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

bit  5      PWRTE: Power-up Timer Enable bit

            1=        PWRT disabled

            0=        PWRT enabled

bit  4-3    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

 2013-2015 Microchip Technology Inc.                                                       DS40001715D-page 49
PIC16(L)F1704/8

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

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

             111 = ECH: External Clock, High-Power mode (4-20 MHz): device clock supplied to CLKIN pin

             110 = ECM: External Clock, Medium-Power mode (0.5-4 MHz): device clock supplied to CLKIN pin

             101 = ECL: External Clock, Low-Power mode (0-0.5 MHz): device clock supplied to CLKIN pin

             100 = INTOSC oscillator: I/O function on CLKIN pin

             011 = EXTRC oscillator: External RC circuit connected to CLKIN pin

             010 = HS oscillator: High-speed crystal/resonator connected between OSC1 and OSC2 pins

             001 = XT oscillator: Crystal/resonator connected between OSC1 and OSC2 pins

             000 = LP oscillator: Low-power crystal connected between OSC1 and OSC2 pins

Note     1:  The entire Flash program memory will be erased when the code protection is turned off during an erase.

             When a Bulk Erase Program Memory Command is executed, the entire Program Flash Memory and

             configuration memory will be erased.

DS40001715D-page 50                                                               2013-2015 Microchip Technology Inc.
                                                                                 PIC16(L)F1704/8

REGISTER 4-2:         CONFIG2: CONFIGURATION                        WORD 2

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

                                      LVP(1)       DEBUG(2)               LPBOR  BORV(3)                  STVREN     PLLEN

                           bit 13                                                                                                 bit 8

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

     ZCDDIS           —                  —                —               —      PPS1WAY                         WRT<1:0>

bit 7                                                                                                                             bit 0

Legend:

R = Readable bit           P = Programmable bit                       U = Unimplemented bit, read as ‘1’

‘0’ = Bit is cleared       ‘1’ = Bit is set                           -n = Value when blank or after Bulk Erase

bit  13           LVP: Low-Voltage Programming Enable bit(1)

                  1 = Low-voltage programming enabled

                  0 = High-voltage on MCLR must be used for programming

bit  12           DEBUG: In-Circuit Debugger Mode bit(2)

                  1 = In-Circuit Debugger disabled, ICSPCLK and ICSPDAT are general purpose I/O pins

                  0 = In-Circuit Debugger enabled, ICSPCLK and ICSPDAT are dedicated to the debugger

bit  11           LPBOR: Low-Power BOR Enable bit

                  1 = Low-Power Brown-out Reset is disabled

                  0 = Low-Power Brown-out Reset is enabled

bit  10           BORV: Brown-out Reset Voltage Selection bit(3)

                  1 = Brown-out Reset voltage (VBOR), low trip point selected.

                  0 = Brown-out Reset voltage (VBOR), high trip point selected.

bit  9            STVREN: Stack Overflow/Underflow Reset Enable bit

                  1 = Stack Overflow or Underflow will cause a Reset

                  0 = Stack Overflow or Underflow will not cause a Reset

bit  8            PLLEN: PLL Enable bit

                  1 = 4xPLL enabled

                  0 = 4xPLL disabled

bit  7            ZCDDIS: ZCD Disable bit

                  1 = ZCD disabled. ZCD can be enabled by setting the ZCDSEN bit of ZCDCON

                  0 = ZCD always enabled

bit  6-3          Unimplemented: Read as ‘1’

bit  2            PPS1WAY: PPSLOCK Bit One-Way Set Enable bit

                  1 = The PPSLOCK bit can only be set once after an unlocking sequence is executed; once PPSLOCK           is  set,  all

                      future changes to PPS registers are prevented

                  0 = The PPSLOCK bit can be set and cleared as needed (provided an unlocking sequence is executed)

bit  1-0          WRT<1:0>: Flash Memory Self-Write Protection bits

                  4 kW Flash memory

                      11 = Write protection off

                      10 = 000h to 1FFh write protected, 200h to FFFh may be modified by PMCON control

                      01 = 000h to 7FFh write protected, 800h to FFFh may be modified by PMCON control

                      00 = 000h to FFFh write protected, no addresses may be modified by PMCON control

Note      1:  The LVP bit cannot be programmed to ‘0’ when Programming mode is entered via LVP.

          2:  The DEBUG bit in Configuration Words is managed automatically by device development tools including debuggers

              and programmers. For normal device operation, this bit should be maintained as a ‘1’.

          3:  See VBOR parameter for specific trip point voltages.

 2013-2015 Microchip Technology Inc.                                                                            DS40001715D-page 51
PIC16(L)F1704/8

4.3       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.3.1       PROGRAM MEMORY PROTECTION

The entire program memory space is protected from

external reads and writes by the CP bit in Configuration

Words. When CP = 0, external reads and writes of

program memory are inhibited and a read will return all

‘0’s. The CPU can continue to read program memory,

regardless of the protection bit settings. Writing the

program     memory      is  dependent      upon   the  write

protection  setting.        See     Section 4.4        “Write

Protection” for more information.

4.4       Write Protection

Write protection allows the device to be protected from

unintended  self-writes.    Applications,   such   as    boot

loader software, can be protected while allowing other

regions of the program memory to be modified.

The WRT<1:0> bits in Configuration Words define the

size of the program memory block that is protected.

4.5       User ID

Four memory locations (8000h-8003h) are designated

as ID locations where the user can store checksum or

other code identification numbers. These locations are

readable and writable during normal execution. See

Section 10.4 “User ID, Device ID and Configuration

Word      Access”  for  more   information  on    accessing

these     memory   locations.  For  more    information   on

checksum    calculation,       see  the    “PIC16(L)F170X

Memory Programming Specification” (DS41683).

DS40001715D-page 52                                             2013-2015 Microchip Technology Inc.
                                                                                      PIC16(L)F1704/8

4.6       Device ID and Revision ID

The 14-bit device ID word is located at 8006h and the

14-bit revision ID is located at 8005h. These locations

are read-only and cannot be erased or modified. See

Section 10.4 “User ID, Device ID and Configuration

Word   Access”         for  more    information  on  accessing

these memory locations.

Development tools, such as device programmers and

debuggers, may be used to read the Device ID and

Revision ID.

4.7       Register Definitions: Device and Revision

REGISTER 4-3:               DEVID: DEVICE ID REGISTER

                                            R                   R             R             R  R  R

                                                                                 DEV<13:8>

                                    bit 13                                                           bit 8

       R                    R               R                   R             R             R  R  R

                                                                   DEV<7:0>

bit 7                                                                                                bit 0

Legend:

R = Readable bit

‘1’ = Bit is set                    ‘0’ = Bit is cleared

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

                            Device                        DEVID<13:0> Values

                       PIC16F1704                11       0000  0100  0011   (3043h)

                       PIC16LF1704               11       0000  0100  0101   (3045h)

                       PIC16F1708                11       0000  0100  0010   (3042h)

                       PIC16LF1708               11       0000  0100  0100   (3044h)

REGISTER          4-4:      REVID: REVISION ID            REGISTER

                                            R                   R             R             R  R  R

                                                                                 REV<13:8>

                                    bit 13                                                           bit 8

       R                    R               R                   R             R             R  R  R

                                                                   REV<7:0>

bit 7                                                                                                bit 0

Legend:

R = Readable      bit

‘1’ = Bit is set                    ‘0’ = Bit is cleared

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

 2013-2015 Microchip Technology Inc.                                                             DS40001715D-page 53
PIC16(L)F1704/8

5.0  RESETS

There are multiple ways to reset this device:

•  Power-On Reset (POR)

•  Brown-Out Reset (BOR)

•  Low-Power Brown-Out Reset (LPBOR)

•  MCLR Reset

•  WDT Reset

•  RESET instruction

•  Stack Overflow

•  Stack Underflow

•  Programming mode exit

To allow VDD to stabilize, an optional power-up timer

can be enabled to extend the Reset time after a BOR

or POR event.

A simplified block diagram of the On-Chip Reset Circuit

is shown in Figure 5-1.

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

                   ICSP™ Programming Mode Exit

                    RESET Instruction

                      Stack Underflow

                      Stack     Overlfow

                                 MCLRE

     VPP/MCLR

                         Sleep

                         WDT

                      Time-out                                                                                 Device

                                                                                                               Reset

                      Power-on

                         Reset

     VDD                               BOR

                                 Active(1)

                      Brown-out                                            R  PWRT

                         Reset                                                Done

                      LPBOR                                      LFINTOSC     PWRTE

                         Reset

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

DS40001715D-page 54                                                                      2013-2015 Microchip  Technology  Inc.
                                                                                       PIC16(L)F1704/8

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                           The       Brown-out     Reset      module   has      four   operating

extend    the   start-up  period        until  all  device  operation   modes     controlled         by    the     BOREN<1:0>            bits  in

conditions have been met.                                               Configuration Words. 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

The device is held in Reset as long as PWRT is active.                  •  BOR is always off

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   The       Brown-out     Reset    voltage    level  is  selectable      by

enabled by clearing the PWRTE bit in Configuration                      configuring the BORV bit in Configuration Words.

Words.                                                                  A  VDD    noise     rejection      filter  prevents    the  BOR      from

The Power-up Timer starts after the release of the POR                  triggering on small events. If VDD falls below VBOR for

and BOR.                                                                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                Instruction Execution upon:

                                                                                       Release of POR or Wake-up from Sleep

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

                                                       Awake            Active    Waits for BOR ready (BORRDY = 1)

          10                    X                      Sleep            Disabled

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

          01                                                X           Disabled

                                0                                                 Begins immediately (BORRDY = x)

          00                    X                           X           Disabled

Note 1:         In these specific cases, “Release of POR” and “Wake-up from Sleep”, there is no delay in start-up. The BOR

                ready flag, (BORRDY = 1), will be set before the CPU is ready to execute instructions because the BOR

                circuit is forced on by the BOREN<1:0> bits.

5.2.1           BOR IS ALWAYS ON                                        5.2.3          BOR CONTROLLED BY SOFTWARE

When      the   BOREN     bits  of      Configuration   Words    are    When      the  BOREN         bits  of      Configuration    Words      are

programmed to ‘11’, the BOR is always on. The device                    programmed          to  ‘01’,  the     BOR  is  controlled       by    the

start-up will be delayed until the BOR is ready and VDD                 SBOREN         bit  of  the    BORCON       register.       The  device

is higher than the BOR threshold.                                       start-up is not delayed by the BOR ready condition or

BOR protection is active during Sleep. The BOR does                     the VDD level.

not delay wake-up from Sleep.                                           BOR protection begins as soon as the BOR circuit is

5.2.2           BOR IS OFF IN SLEEP                                     ready. The status of the BOR circuit is reflected in the

                                                                        BORRDY bit of the BORCON register.

When      the   BOREN     bits  of      Configuration   Words    are    BOR protection is unchanged by Sleep.

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

 2013-2015 Microchip Technology Inc.                                                                               DS40001715D-page 55
PIC16(L)F1704/8

FIGURE 5-2:                  BROWN-OUT    SITUATIONS

                   VDD                                                                           VBOR

                   Internal                                      TPWRT(1)

                   Reset

                   VDD                                                                               VBOR

                   Internal                                   <  TPWRT      TPWRT(1)

                   Reset

                   VDD                                                                               VBOR

                   Internal                                                 TPWRT(1)

                   Reset

         Note  1:  TPWRT     delay only if PWRTE bit is programmed to ‘0’.

5.3          Register Definitions: BOR Control

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

SBOREN             BORFS(1)          —             —                        —         —              —          BORRDY

bit 7                                                                                                                   bit  0

Legend:

R = Readable bit             W = Writable bit                    U = Unimplemented bit, read as ‘0’

u = Bit is unchanged         x = Bit is unknown                  -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set             ‘0’ = Bit is cleared                q = Value depends on condition

bit 7              SBOREN: Software Brown-out Reset Enable bit

                   If BOREN <1:0> in Configuration Words  01:

                   SBOREN is read/write, but has no effect on the BOR.

                   If BOREN <1:0> in Configuration Words = 01:

                   1=  BOR Enabled

                   0=  BOR Disabled

bit 6              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

bit 5-1            Unimplemented: Read as ‘0’

bit 0              BORRDY: Brown-out Reset Circuit Ready Status bit

                   1 = The Brown-out Reset circuit is active

                   0 = The Brown-out Reset circuit is inactive

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

DS40001715D-page 56                                                                       2013-2015 Microchip Technology Inc.
                                                                                  PIC16(L)F1704/8

5.4        Low-Power Brown-Out Reset                               5.6        Watchdog Timer (WDT) Reset

           (LPBOR)                                                 The Watchdog Timer generates a Reset if the firmware

The    Low-Power       Brown-Out    Reset    (LPBOR)     is   an   does not issue a CLRWDT instruction within the time-out

essential    part  of   the  Reset  subsystem.      Refer     to   period. The TO and PD bits in the STATUS register are

Figure 5-1 to see how the BOR interacts with other                 changed to indicate the WDT Reset. See Section 9.0

modules.                                                           “Watchdog Timer (WDT)” for more information.

The LPBOR is used to monitor the external VDD pin.                 5.7        RESET Instruction

When too low of a voltage is detected, the device is

held in Reset. When this occurs, a register bit (BOR) is           A RESET instruction will cause a device Reset. The RI

changed to indicate that a BOR Reset has occurred.                 bit in the PCON register will be set to ‘0’. See Table 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.4.1         ENABLING LPBOR                                       5.8        Stack Overflow/Underflow Reset

The    LPBOR       is  controlled  by   the  LPBOR       bit  of   The   device   can  reset    when     the  Stack    Overflows  or

Configuration Words. When the device is erased, the                Underflows. The STKOVF or STKUNF bits of the PCON

LPBOR module defaults to disabled.                                 register indicate the Reset condition. These Resets are

5.4.1.1       LPBOR Module Output                                  enabled    by  setting  the  STVREN        bit  in  Configuration

The output of the LPBOR module is a signal indicating              Words.    See  3.6.2    “Overflow/Underflow            Reset”  for

whether or not a Reset is to be asserted. This signal is           more information.

OR’d   together    with  the  Reset     signal  of  the   BOR      5.9        Programming Mode Exit

module to provide the generic BOR signal, which goes

to the PCON register and to the power control block.               Upon    exit   of  Programming        mode,     the    device  will

                                                                   behave as if a POR had just occurred.

5.5        MCLR

The MCLR is an optional external input that can reset              5.10       Power-Up Timer

the  device.  The      MCLR   function  is  controlled  by    the  The Power-up Timer optionally delays device execution

MCLRE bit of Configuration Words and the LVP bit of                after a BOR or POR event. This timer is typically used to

Configuration Words (Table 5-2).                                   allow VDD to stabilize before allowing the device to start

                                                                   running.

TABLE 5-2:             MCLR CONFIGURATION                          The Power-up Timer is controlled by the PWRTE bit of

      MCLRE                   LVP                MCLR              Configuration Words.

          0                   0                 Disabled           5.11       Start-up Sequence

          1                   0                 Enabled            Upon the release of a POR or BOR, the following must

          x                   1                 Enabled            occur before the device will begin executing:

5.5.1         MCLR ENABLED                                         1.    Power-up Timer runs to completion (if enabled).

When MCLR is enabled and the pin is held low, the                  2.    Oscillator start-up timer runs to completion (if

device is held in Reset. The MCLR pin is connected to                    required for oscillator source).

VDD through an internal weak pull-up.                              3.    MCLR must be released (if enabled).

The device has a noise filter in the MCLR Reset path.              The total time-out will vary based on oscillator configu-

The filter will detect and ignore small pulses.                    ration    and      Power-up     Timer      configuration.      See

              A Reset does not drive the MCLR pin low.             Section 6.0        “Oscillator    Module        (with  Fail-Safe

Note:                                                              Clock Monitor)” for more information.

5.5.2         MCLR DISABLED                                        The Power-up Timer and oscillator start-up timer run

When MCLR is disabled, the pin functions as a general              independently of MCLR Reset. If MCLR is kept low

purpose input and the internal weak pull-up is under               long    enough,    the  Power-up       Timer      and  oscillator

software      control.   See                                       start-up timer will expire. Upon bringing MCLR high, the

                                   Section 11.1     “PORTA         device will begin execution after 10 FOSC cycles (see

Registers” for more information.                                   Figure 5-3). This is useful for testing purposes or to

                                                                   synchronize more than one device operating in parallel.

 2013-2015 Microchip Technology Inc.                                                                      DS40001715D-page 57
PIC16(L)F1704/8

FIGURE 5-3:                RESET START-UP     SEQUENCE

             VDD

Internal POR

                                              TPWRT

Power-up Timer

MCLR

                                                        TMCLR

Internal RESET

                           Oscillator  Modes

External Crystal                                               TOST

Oscillator Start-up Timer

Oscillator

             FOSC

Internal Oscillator

Oscillator

             FOSC

External Clock (EC)

CLKIN

             FOSC

DS40001715D-page 58                                                   2013-2015 Microchip Technology Inc.
                                                                            PIC16(L)F1704/8

5.12     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

conditions 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

                          Condition                              Program              STATUS                  PCON

                                                                 Counter              Register       Register

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

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

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

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

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

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

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

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

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

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

Legend:      u = unchanged,     x = unknown, - = unimplemented bit, reads as ‘0’.

Note 1:  When the wake-up is due to an interrupt and Global Enable bit (GIE) is set,     the return address is pushed  on

         the stack and PC is loaded with the interrupt vector (0004h) after execution    of PC + 1.

 2013-2015 Microchip Technology Inc.                                                                DS40001715D-page 59
PIC16(L)F1704/8

5.13       Power Control (PCON) Register

The Power Control (PCON) register contains flag bits

to differentiate between a:

•  Power-on Reset (POR)

•  Brown-out Reset (BOR)

•  Reset Instruction Reset (RI)

•  MCLR Reset (RMCLR)

•  Watchdog Timer Reset (RWDT)

•  Stack Underflow Reset (STKUNF)

•  Stack Overflow Reset (STKOVF)

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

5.14       Register Definitions: Power Control

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

   R = Readable bit                 W = Writable bit             U = Unimplemented bit, read as ‘0’

   u = Bit is unchanged             x = Bit is unknown           -m/n = Value at POR and BOR/Value at all other Resets

   ‘1’ = Bit is set                 ‘0’ = Bit is cleared         q = Value depends on condition

   bit  7            STKOVF: Stack Overflow Flag bit

                     1=  A Stack Overflow occurred

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

   bit  6            STKUNF: Stack Underflow Flag bit

                     1=  A Stack Underflow occurred

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

   bit  5            Unimplemented: Read as ‘0’

   bit  4            RWDT: Watchdog Timer Reset Flag bit

                     1 = A Watchdog Timer Reset has not occurred or set to ‘1’ by firmware

                     0 = A Watchdog Timer Reset has occurred (cleared by hardware)

   bit  3            RMCLR: MCLR Reset Flag bit

                     1 = A MCLR Reset has not occurred or set to ‘1’ by firmware

                     0 = A MCLR Reset has occurred (cleared by hardware)

   bit  2            RI: RESET Instruction Flag bit

                     1 = A RESET instruction has not been executed or set to ‘1’ by firmware

                     0 = A RESET instruction has been executed (cleared by hardware)

   bit  1            POR: Power-on Reset Status bit

                     1 = No Power-on Reset occurred

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

   bit  0            BOR: Brown-out Reset Status bit

                     1 = No Brown-out Reset occurred

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

                         occurs)

DS40001715D-page 60                                                                        2013-2015 Microchip Technology Inc.
                                                                 PIC16(L)F1704/8

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  56

PCON        STKOVF  STKUNF             —      RWDT   RMCLR       RI     POR                 BOR     60

STATUS      —       —                  —      TO     PD          Z                      DC  C       23

WDTCON      —       —                                WDTPS<4:0>                             SWDTEN  100

Legend:  — = unimplemented location, read as ‘0’. Shaded cells are not used by Resets.

 2013-2015 Microchip Technology Inc.                                                       DS40001715D-page 61
PIC16(L)F1704/8

6.0       OSCILLATOR MODULE (WITH                                The oscillator module can be configured in one of the

          FAIL-SAFE CLOCK MONITOR)                               following clock modes.

                                                                 1.    ECL – External Clock Low-Power mode

6.1       Overview                                                     (0 MHz to 0.5 MHz)

The    oscillator  module   has     a  wide  variety  of  clock  2.    ECM – External Clock Medium Power mode

sources and selection features that allow it to be used                (0.5 MHz to 4 MHz)

in  a   wide  range     of  applications     while  maximizing   3.    ECH – External Clock High-Power mode

performance        and  minimizing     power  consumption.             (4 MHz to 32 MHz)

Figure 6-1 illustrates a block diagram of the oscillator         4.    LP – 32 kHz Low-Power Crystal mode.

module.                                                          5.    XT – Medium Gain Crystal or Ceramic Resonator

Clock sources can be supplied from external oscillators,               Oscillator mode (up to 4 MHz)

quartz    crystal  resonators,      ceramic  resonators   and    6.    HS – High Gain Crystal or Ceramic Resonator

Resistor-Capacitor (RC) circuits. In addition, the system              mode (4 MHz to 20 MHz)

clock source can be supplied from one of two internal            7.    EXTRC – External Resistor-Capacitor

oscillators and PLL circuits, with a choice of speeds            8.    INTOSC – Internal oscillator (31 kHz to 32 MHz)

selectable    via  software.    Additional    clock   features   Clock Source modes are selected by the FOSC<2:0>

include:                                                         bits  in  the   Configuration     Words.  The    FOSC        bits

•   Selectable system clock source between external              determine the type of oscillator that will be used when

    or internal sources via software.                            the device is first powered.

•   Two-Speed Start-up mode, which minimizes                     The   ECH,     ECM,  and     ECL  clock   modes  rely    on  an

    latency between external oscillator start-up and             external logic level signal as the device clock source.

    code execution.                                              The LP, XT, and HS clock modes require an external

•   Fail-Safe Clock Monitor (FSCM) designed to                   crystal   or  resonator  to  be   connected  to  the   device.

    detect a failure of the external clock source (LP,           Each mode is optimized for a different frequency range.

    XT, HS, ECH, ECM, ECL or EXTRC modes) and                    The EXTRC clock mode requires an external resistor

    switch automatically to the internal oscillator.             and capacitor to set the oscillator frequency.

•   Oscillator Start-up Timer (OST) ensures stability            The INTOSC internal oscillator block produces low,

    of crystal oscillator sources.                               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.

DS40001715D-page 62                                                                    2013-2015 Microchip Technology Inc.
                                                                                           PIC16(L)F1704/8

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

              Secondary

              Oscillator  Timer1                                                                     Timer1 Clock Source Option

SOSCO                                                                                                for other modules

                          T1OSCEN
                          Enable
                          Oscillator
SOSCI                                                                                         T1OSC

                                                                                                     01

              External

              Oscillator  LP, XT, HS,  RC, EC

OSC2                                               0                                                      Sleep

                                                                                           0

                          Sleep                    1

                                                                                                                        FOSC

OSC1                                   PRIMUX                                                        00                 To CPU and

                                                                                                                        Peripherals

                                                                          4x  PLL          1

                                                                       IRCF<3:0>           PLLMUX

                                                            16 MHz                         INTOSC    1X

                                                            8 MHz         1111

              Internal                                      4 MHz

        Oscillator

              Block                                         2 MHz                                  SCS<1:0>

              HFPLL                    Postscaler           1 MHz

                          16 MHz                            500 kHz       MUX

                          (HFINTOSC)                        250 kHz

              500 kHz                                       125 kHz

              Source      500 kHz                           62.5 kHz

                          (MFINTOSC)                        31.25 kHz

              31 kHz                                        31 kHz
              Source
                                                                          0000

                          31 kHz (LFINTOSC)                                                WDT, PWRT, Fail-Safe Clock Monitor

                                                                                           Two-Speed Start-up and other modules

                          Inputs                                          Outputs

SCS           FOSC<2:0>   PLLEN or                    IRCF  PRIMUX                 PLLMUX

                          SPLLEN

                          0                           x                1           0

              =100                                 =1110               1           1

=00                       1                        ≠1110

                                                                       1           0

              ≠100        0                           x                0           0

                          1                           x                0           1

≠00           X           X                           X                X           X

 2013-2015 Microchip Technology Inc.                                                                        DS40001715D-page 63
PIC16(L)F1704/8

6.2         Clock Source Types                                           The Oscillator Start-up Timer (OST) is disabled when

Clock sources can be classified as external or internal.                 EC mode is selected. Therefore, there is no delay in

                                                                         operation after a Power-on Reset (POR) or wake-up

External clock sources rely on external circuitry for the                from  Sleep.    Because   the    PIC®  MCU     design     is   fully

clock   source      to   function.     Examples      are:   oscillator   static, stopping the external clock input will have the

modules     (ECH,       ECM,     ECL       mode),    quartz   crystal    effect of halting the device while leaving all data intact.

resonators      or  ceramic    resonators       (LP,  XT     and  HS     Upon     restarting  the  external    clock,   the   device    will

modes)      and     Resistor-Capacitor          (EXTRC)       mode       resume operation as if no time had elapsed.

circuits.

Internal    clock   sources      are       contained      within  the    FIGURE 6-2:               EXTERNAL CLOCK (EC)

oscillator module. The internal oscillator block has two                                           MODE OPERATION

internal oscillators and a dedicated Phase-Lock Loop

(HFPLL)     that    are    used  to    generate      three   internal       Clock from                      OSC1/CLKIN

system      clock   sources:     the   16 MHz      High-Frequency           Ext. System

Internal Oscillator (HFINTOSC), 500 kHz (MFINTOSC)                                                                  PIC® MCU

and    the  31 kHz       Low-Frequency          Internal   Oscillator

(LFINTOSC).                                                                    FOSC/4 or   I/O(1)           OSC2/CLKOUT

The system clock can be selected between external or

internal    clock   sources    via    the  System     Clock   Select        Note  1:    Output depends upon CLKOUTEN bit of the

(SCS) bits in the OSCCON register. See Section 6.3                                      Configuration Words.

“Clock Switching” for additional information.

6.2.1           EXTERNAL CLOCK SOURCES                                   6.2.1.2           LP, XT, HS Modes

An external clock source can be used as the device                       The LP, XT and HS modes support the use of quartz

system      clock   by   performing        one  of    the   following    crystal resonators or ceramic resonators connected to

actions:                                                                 OSC1 and OSC2 (Figure 6-3). The three modes select

•  Program the FOSC<2:0> bits in the Configuration                       a  low,  medium      or   high  gain  setting  of    the  internal

   Words to select an external clock source that will                    inverter-amplifier   to   support  various     resonator  types

   be used as the default system clock upon a                            and speed.

   device Reset.                                                         LP Oscillator mode selects the lowest gain setting of the

•  Write the SCS<1:0> bits in the OSCCON register                        internal inverter-amplifier. LP mode current consumption

   to switch the system clock source to:                                 is the least of the three modes. This mode is designed to

   -   Secondary oscillator during run-time, or                          drive only 32.768 kHz tuning-fork type crystals (watch

   -   An external clock source determined by the                        crystals).

       value of the FOSC bits.                                           XT    Oscillator    mode  selects     the  intermediate        gain

See Section 6.3 “Clock Switching”for more informa-                       setting  of  the     internal   inverter-amplifier.  XT   mode

tion.                                                                    current consumption is the medium of the three modes.

                                                                         This mode is best suited to drive resonators with a

6.2.1.1            EC Mode                                               medium drive level specification.

The    External     Clock  (EC)     mode   allows     an   externally    HS Oscillator mode selects the highest gain setting of the

generated   logic       level  signal  to  be   the   system      clock  internal inverter-amplifier. HS mode current consumption

source. When operating in this mode, an external clock                   is the highest of the three modes. This mode is best

source      is      connected         to   the      OSC1      input.     suited for resonators that require a high drive setting.

OSC2/CLKOUT is available for general purpose I/O or                      Figure 6-3     and   Figure 6-4    show    typical   circuits  for

CLKOUT. Figure 6-2 shows the pin connections for EC                      quartz crystal and ceramic resonators, respectively.

mode.

EC mode has three power modes to select from through

Configuration Words:

•  ECH – High power, 4-32 MHz

•  ECM – Medium power, 0.5-4 MHz

•  ECL – Low power, 0-0.5 MHz

DS40001715D-page 64                                                                            2013-2015 Microchip Technology Inc.
                                                                                 PIC16(L)F1704/8

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

      C1                                         To Internal               C1                                               To Internal

                                                 Logic                                                                      Logic

             Quartz              RF(2)           Sleep                                    RP(3)

             Crystal                                                                                          RF(2)         Sleep

      C2        RS(1)   OSC2/CLKOUT                                                                     OSC2/CLKOUT

                                                                           C2    Ceramic     RS(1)

                                                                                 Resonator

Note  1:  A  series    resistor  (RS)   may  be  required     for

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

      2:  The value of RF varies with the Oscillator mode                        ceramic resonators with low drive level.

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

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

             and recommended application.

      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

      3:     For oscillator design assistance, reference           Power-on Reset (POR) and when the Power-up Timer

             the following Microchip Application Notes:            (PWRT) has expired (if configured), or a wake-up from

          • AN826, “Crystal Oscillator Basics and                  Sleep. During this time, the program counter does not

             Crystal Selection for rfPIC® and PIC®                 increment        and   program       execution    is     suspended,

             Devices” (DS00826)                                    unless    either      FSCM       or  Two-Speed           Start-Up     are

          • AN849, “Basic PIC® Oscillator Design”                  enabled. In this case, code will continue to execute at

                                                                   the  selected     INTOSC         frequency        while  the    OST      is

             (DS00849)                                             counting. The OST ensures that the oscillator circuit,

          • AN943, “Practical PIC® Oscillator                      using a quartz crystal resonator or ceramic resonator,

             Analysis and Design” (DS00943)                        has started and is providing a stable system clock to

          • AN949, “Making Your Oscillator Work”                   the oscillator module.

             (DS00949)                                             In order to minimize latency between external oscillator

                                                                   start-up    and   code    execution,       the    Two-Speed        Clock

                                                                   Start-up      mode    can     be     selected     (see   Section 6.4

                                                                   “Two-Speed Clock Start-up Mode”).

 2013-2015 Microchip Technology Inc.                                                                         DS40001715D-page 65
PIC16(L)F1704/8

6.2.1.4            4x PLL                                              Note  1:  Quartz     crystal  characteristics      vary

The oscillator module contains a 4x PLL that can be                              according  to       type,  package       and

used with both external and internal clock sources to                            manufacturer. The user should consult the

provide a system clock source. The input frequency for                           manufacturer data sheets for specifications

the 4x PLL must fall within specifications. See the PLL                          and recommended application.

Clock Timing Specifications in Table 32-9.                                   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 Words                           3:  For oscillator design assistance, reference

      to a ‘1’.                                                                  the following Microchip Application Notes:

2.    Write the SPLLEN bit in the OSCCON register to                             • AN826, “Crystal Oscillator Basics and

      a ‘1’. If the PLLEN bit in Configuration Words 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            Secondary Oscillator                                          (DS00849)

The secondary oscillator is a separate crystal oscillator                        • AN943, “Practical PIC® Oscillator

that  is  associated        with  the  Timer1   peripheral.    It  is            Analysis and Design” (DS00943)

optimized     for  timekeeping      operations    with  a  32.768                • AN949, “Making Your Oscillator Work”

kHz   crystal      connected      between    the  SOSCO        and               (DS00949)

SOSCI device pins.                                                               • TB097, “Interfacing a Micro Crystal

The secondary oscillator can be used as an alternate                             MS1V-T1K 32.768 kHz Tuning Fork

system    clock    source      and     can  be  selected   during                Crystal to a PIC16F690/SS” (DS91097)

run-time using clock switching. Refer to Section 6.3                             • AN1288, “Design Practices for

“Clock Switching” for more information.                                          Low-Power External Oscillators”

                                                                                 (DS01288)

FIGURE 6-5:                 QUARTZ CRYSTAL

                            OPERATION

                            (SECONDARY

                            OSCILLATOR)

                                       PIC®  MCU

                                  SOSCI

          C1                                      To Internal

                                                  Logic

                   32.768 kHz

                   Quartz

                   Crystal

          C2                      SOSCO

DS40001715D-page 66                                                               2013-2015 Microchip Technology Inc.
                                                                              PIC16(L)F1704/8

6.2.1.6            External RC Mode                              6.2.2        INTERNAL CLOCK SOURCES

The      external      Resistor-Capacitor     (EXTRC)   mode     The  device      may   be  configured   to   use  the    internal

supports the use of an external RC circuit. This allows          oscillator block as the system clock by performing one

the designer maximum flexibility in frequency choice             of the following actions:

while keeping costs to a minimum when clock accuracy             •   Program the FOSC<2:0> bits in Configuration

is not required.                                                     Words to select the INTOSC clock source, which

The RC circuit connects to OSC1. OSC2/CLKOUT is                      will be used as the default system clock upon a

available     for  general  purpose      I/O  or  CLKOUT.   The      device Reset.

function of the OSC2/CLKOUT pin is determined by the             •   Write the SCS<1:0> bits in the OSCCON register

CLKOUTEN bit in Configuration Words.                                 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

                                                                 purpose I/O. OSC2/CLKOUT is available for general

         VDD                                                     purpose I/O or CLKOUT.

                                PIC® MCU                         The function of the OSC2/CLKOUT pin is determined

   REXT                                                          by the CLKOUTEN bit in Configuration Words.

                       OSC1/CLKIN                 Internal       The    internal   oscillator  block     has  two  independent

                                                  Clock          oscillators and a dedicated Phase-Lock Loop, HFPLL

   CEXT                                                          that can produce one of three internal system clock

   VSS                                                           sources.

                                                                 1.   The  HFINTOSC            (High-Frequency     Internal

   FOSC/4 or   I/O(1)  OSC2/CLKOUT                                    Oscillator) is factory calibrated and operates at

                                                                      16 MHz. The HFINTOSC source is generated

                                                                      from the 500 kHz MFINTOSC source and the

   Recommended values:      10 k  REXT  100 k, <3V                dedicated     Phase-Lock        Loop,   HFPLL.      The

                            3 k  REXT  100 k, 3-5V                frequency        of   the       HFINTOSC     can    be

                            CEXT > 20 pF, 2-5V                        user-adjusted via software using the OSCTUNE

   Note    1:      Output depends upon CLKOUTEN bit of the            register (Register 6-3).

                   Configuration Words.                          2.   The  MFINTOSC            (Medium-Frequency   Internal

                                                                      Oscillator) is factory calibrated and operates at

The RC oscillator frequency is a function of the supply               500 kHz. The frequency of the MFINTOSC can

voltage, the resistor (REXT) and capacitor (CEXT) values              be   user-adjusted         via  software     using  the

and the operating temperature. Other factors affecting                OSCTUNE register (Register 6-3).

the oscillator frequency are:                                    3.   The  LFINTOSC              (Low-Frequency    Internal

•  threshold voltage variation                                        Oscillator)   is     uncalibrated  and    operates  at

•  component tolerances                                               31 kHz.

•  packaging variations in capacitance

The user also needs to take into account variation due

to tolerance of external RC components used.

 2013-2015 Microchip Technology Inc.                                                                    DS40001715D-page 67
PIC16(L)F1704/8

6.2.2.1           HFINTOSC                                         6.2.2.3     Internal Oscillator Frequency

The High-Frequency Internal Oscillator (HFINTOSC) is                           Adjustment

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 output of the HFINTOSC connects to a postscaler                the  HFINTOSC      and      MFINTOSC        clock   sources        are

and  multiplexer  (see       Figure 6-1).   One    of  multiple    derived from the 500 kHz internal oscillator a change in

frequencies   derived    from   the    HFINTOSC        can    be   the OSCTUNE register value will apply to both.

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

The HFINTOSC is enabled by:                                        frequency. A value of 20h will provide an adjustment to

•  Configure the IRCF<3:0> bits of the OSCCON                      the minimum frequency.

   register for the desired HF frequency, and                      When the OSCTUNE register is modified, the oscillator

•  FOSC<2:0> = 100, or                                             frequency will begin shifting to the new frequency. Code

•  Set the System Clock Source (SCS) bits of the                   execution   continues       during   this   shift.  There      is  no

   OSCCON register to ‘1x’                                         indication that the shift has occurred.

A fast start-up oscillator allows internal circuits to power       OSCTUNE does not affect the LFINTOSC frequency.

up and stabilize before switching to HFINTOSC.                     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.                                               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

The  High-Frequency          Internal  Oscillator  Stable     bit  an uncalibrated 31 kHz internal clock source.

(HFIOFS) of the OSCSTAT register indicates when the                The output of the LFINTOSC connects to a multiplexer

HFINTOSC is running within 0.5% of its final value.                (see Figure 6-1). Select 31 kHz, via software, using the

                                                                   IRCF<3:0>   bits       of   the     OSCCON          register.      See

6.2.2.2           MFINTOSC                                         Section 6.2.2.7    “Internal       Oscillator       Clock   Switch

The      Medium-Frequency              Internal    Oscillator      Timing” for more information. The LFINTOSC is also

(MFINTOSC) is a factory calibrated 500 kHz internal                the  frequency     for     the   Power-up        Timer     (PWRT),

clock source. The frequency of the MFINTOSC can be                 Watchdog    Timer    (WDT)      and   Fail-Safe     Clock   Monitor

altered  via  software   using  the    OSCTUNE         register    (FSCM).

(Register 6-3).                                                    The  LFINTOSC          is   enabled   by     selecting      31 kHz

The output of the MFINTOSC connects to a postscaler                (IRCF<3:0> bits of the OSCCON register = 000) as the

and  multiplexer       (see   Figure 6-1).  One        of   nine   system     clock  source    (SCS      bits  of      the  OSCCON

frequencies   derived    from   the    MFINTOSC        can    be   register =  1x),   or   when     any  of    the     following      are

selected via software using the IRCF<3:0> bits of the              enabled:

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                 •  Fail-Safe Clock Monitor (FSCM)

(MFIOFR) of the OSCSTAT register indicates when the                The  Low-Frequency          Internal  Oscillator         Ready     bit

MFINTOSC is running.                                               (LFIOFR) of the OSCSTAT register indicates when the

                                                                   LFINTOSC is running.

DS40001715D-page 68                                                                        2013-2015 Microchip Technology Inc.
                                                                                  PIC16(L)F1704/8

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

using   the  Internal      Oscillator  Frequency        Select   bits  4x PLL associated with the External Oscillator Block to

IRCF<3:0> of the OSCCON register.                                      produce a 32 MHz internal system clock source. The

The    postscaled     output     of   the   16 MHz     HFINTOSC,       following  settings  are   required  to   use  the  32  MHz

500 kHz MFINTOSC, and 31 kHz LFINTOSC connect                          internal clock source:

to a multiplexer (see Figure 6-1). The Internal Oscillator             •  The FOSC bits in Configuration Words must be

Frequency    Select      bits   IRCF<3:0>      of  the  OSCCON            set to use the INTOSC source as the device

register   select  the     frequency       output  of  the  internal      system clock (FOSC<2:0> = 100).

oscillators. One of the following frequencies can be                   •  The SCS bits in the OSCCON register must be

selected via software:                                                    cleared to use the clock determined by

-    32 MHz (requires 4x PLL)                                             FOSC<2:0> in Configuration Words

-    16 MHz                                                               (SCS<1:0> = 00).

-    8 MHz                                                             •  The IRCF bits in the OSCCON register must be

-    4 MHz                                                                set to the 8 MHz HFINTOSC set to use

-    2 MHz                                                                (IRCF<3:0> = 1110).

-    1 MHz                                                             •  The SPLLEN bit in the OSCCON register must be

                                                                          set to enable the 4x PLL, or the PLLEN bit of the

-    500 kHz (default after Reset)                                        Configuration Words must be programmed to a

-    250 kHz                                                              ‘1’.

-    125 kHz                                                              Note:   When      using  the      PLLEN     bit  of    the

-    62.5 kHz                                                                     Configuration Words, the 4x PLL cannot

-    31.25 kHz                                                                    be disabled by software and the SPLLEN

-    31 kHz (LFINTOSC)                                                            option will not be available.

Note:        Following any Reset, the IRCF<3:0> bits                   The 4x PLL is not available for use with the internal

             of the OSCCON register are set to ‘0111’                  oscillator when the SCS bits of the OSCCON register

             and      the   frequency       selection   is  set  to    are set to ‘1x’. The SCS bits must be set to ‘00’ to use

             500 kHz. The user can modify the IRCF                     the 4x PLL with the internal oscillator.

             bits to select a different frequency.

The  IRCF<3:0>        bits  of   the   OSCCON       register    allow

duplicate    selections     for  some       frequencies.      These

duplicate choices can offer system design trade-offs.

Lower     power    consumption         can  be     obtained   when

changing     oscillator     sources    for  a  given    frequency.

Faster    transition    times    can   be   obtained        between

frequency changes that use the same oscillator source.

 2013-2015 Microchip Technology Inc.                                                                       DS40001715D-page 69
PIC16(L)F1704/8

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 32.0     “Electrical

Specifications”.

DS40001715D-page 70                                                   2013-2015 Microchip Technology Inc.
                                                                               PIC16(L)F1704/8

FIGURE 6-7:       INTERNAL OSCILLATOR SWITCH                         TIMING

HFINTOSC/         LFINTOSC (FSCM and WDT disabled)

MFINTOSC

HFINTOSC/

MFINTOSC                               Oscillator Delay(1)  2-cycle  Sync                           Running

LFINTOSC

IRCF <3:0>        0                              0

System Clock

HFINTOSC/         LFINTOSC (Either FSCM or WDT enabled)

MFINTOSC

HFINTOSC/

MFINTOSC                                                    2-cycle Sync                            Running

LFINTOSC

IRCF <3:0>                             0                  0

System Clock

LFINTOSC          HFINTOSC/MFINTOSC                                  LFINTOSC  turns  off  unless WDT or FSCM  is  enabled

LFINTOSC

                       Oscillator Delay(1)         2-cycle Sync                            Running

HFINTOSC/

MFINTOSC

IRCF <3:0>        =0                               0

System Clock

Note:        See  Table 6-1 for more information.

 2013-2015 Microchip Technology Inc.                                                               DS40001715D-page 71
PIC16(L)F1704/8

6.3         Clock Switching                                            6.3.3      SECONDARY OSCILLATOR

The system clock source can be switched between                        The secondary oscillator is a separate crystal oscillator

external and internal clock sources via software using                 associated with the Timer1 peripheral. It is optimized

the System Clock Select (SCS) bits of the OSCCON                       for timekeeping operations with a 32.768 kHz crystal

register. The following clock sources can be selected                  connected between the SOSCO and SOSCI device

using the SCS bits:                                                    pins.

•  Default system oscillator determined by FOSC                        The    secondary     oscillator         is      enabled   using     the

   bits in Configuration Words                                         T1OSCEN    control         bit  in  the     T1CON      register.    See

•  Timer1 32 kHz crystal oscillator                                    Section 25.0 “Timer1 Module with Gate Control” for

•  Internal Oscillator Block (INTOSC)                                  more information about the Timer1 peripheral.

6.3.1           SYSTEM CLOCK SELECT (SCS)                              6.3.4      SECONDARY OSCILLATOR READY

                BITS                                                              (SOSCR) BIT

The System Clock Select (SCS) bits of the OSCCON                       The user must ensure that the secondary oscillator is

register select the system clock source that is used for               ready to be used before it is selected as a system clock

the CPU and peripherals.                                               source. The Secondary Oscillator Ready (SOSCR) bit

                                                                       of   the  OSCSTAT          register      indicates       whether    the

•  When the SCS bits of the OSCCON register = 00,                      secondary  oscillator       is  ready       to  be  used.    After  the

   the system clock source is determined by the                        SOSCR bit is set, the SCS bits can be configured to

   value of the FOSC<2:0> bits in the Configuration                    select the secondary oscillator.

   Words.

•  When the SCS bits of the OSCCON register = 01,                      6.3.5      CLOCK SWITCHING BEFORE

   the system clock source is the secondary oscillator.                           SLEEP

•  When the SCS bits of the OSCCON register = 1x,                      When clock switching from an old clock to a new clock

   the system clock source is chosen by the internal                   is requested just prior to entering Sleep mode, it is

   oscillator frequency selected by the IRCF<3:0>                      necessary to confirm that the switch is complete before

   bits of the OSCCON register. After a Reset, the                     the SLEEP instruction is executed. Failure to do so may

   SCS bits of the OSCCON register are always                          result in an incomplete switch and consequential loss

   cleared.                                                            of   the  system     clock      altogether.     Clock    switching  is

   Note:        Any   automatic   clock      switch,   which      may  confirmed by monitoring the clock Status bits in the

                occur  from      Two-Speed            Start-up     or  OSCSTAT         register.       Switch      confirmation      can   be

                Fail-Safe Clock Monitor, does not update               accomplished by sensing that the ready bit for the new

                the SCS bits of the OSCCON register. The               clock is set or the ready bit for the old clock is cleared.

                user   can   monitor  the    OSTS      bit    of  the  For    example,   when      switching       between      the  internal

                OSCSTAT register to determine the current              oscillator with the PLL and the internal oscillator without

                system clock source.                                   the PLL, monitor the PLLR bit. When PLLR is set, the

When   switching       between    clock      sources,  a    delay  is  switch to 32 MHz operation is complete. Conversely,

required    to  allow  the   new      clock  to  stabilize.   These    when      PLLR   is  cleared,       the     switch     from   32 MHz

oscillator delays are shown in Table 6-1.                              operation to the selected internal clock is complete.

6.3.2           OSCILLATOR START-UP TIMER

                STATUS (OSTS) BIT

The Oscillator Start-up Timer Status (OSTS) bit of the

OSCSTAT register indicates whether the system clock

is running from the external clock source, as defined by

the   FOSC<2:0>        bits  in  the  Configuration    Words,      or

from   the   internal  clock     source.     In  particular,  OSTS

indicates that the Oscillator Start-up Timer (OST) has

timed out for LP, XT or HS modes. The OST does not

reflect the status of the secondary oscillator.

DS40001715D-page 72                                                                          2013-2015 Microchip Technology Inc.
                                                                                         PIC16(L)F1704/8

6.4           Two-Speed Clock Start-up Mode                                   6.4.1      TWO-SPEED START-UP MODE

Two-Speed Start-up mode provides additional power                                        CONFIGURATION

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                              •  IESO (of the Configuration Words) = 1;

Start-up      will  remove      the    external  oscillator    start-up          Internal/External Switchover bit (Two-Speed

time from the time spent awake and can reduce the                                Start-up mode enabled).

overall power consumption of the device. This mode                            •  SCS (of the OSCCON register) = 00.

allows the application to wake-up from Sleep, perform                         •  FOSC<2:0> bits in the Configuration Words

a few instructions using the INTOSC internal oscillator                          configured for LP, XT or HS mode.

block as the clock source and go back to Sleep without

waiting for the external oscillator to become stable.                         Two-Speed Start-up mode is entered after:

Two-Speed           Start-up       provides   benefits    when     the        •  Power-on Reset (POR) and, if enabled, after

oscillator    module       is   configured     for  LP,   XT   or  HS            Power-up Timer (PWRT) has expired, or

modes. The Oscillator Start-up Timer (OST) is enabled                         •  Wake-up from Sleep.

for  these      modes      and     must  count   1024     oscillations

before the oscillator can be used as the system clock

source.

If  the   oscillator     module    is  configured    for  any  mode

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

register 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

                                         LFINTOSC(1)               31 kHz

Sleep/POR                                MFINTOSC(1)               31.25 kHz-500 kHz     2 cycles

                                         HFINTOSC(1)               31.25 kHz-16 MHz

Sleep/POR                                EC, RC(1)                 DC – 32 MHz           2 cycles

LFINTOSC                                 EC, RC(1)                 DC – 32 MHz           1 cycle of each

Sleep/POR                                Secondary Oscillator      32 kHz-20 MHz         1024 Clock Cycles (OST)

                                         LP, XT, HS(1)

Any clock source                         MFINTOSC(1)               31.25 kHz-500 kHz     2 s (approx.)

                                         HFINTOSC(1)               31.25 kHz-16 MHz

Any clock source                         LFINTOSC(1)               31 kHz                1 cycle of each

Any clock source                         Secondary Oscillator      32 kHz                1024 Clock Cycles (OST)

PLL inactive                             PLL active                16-32 MHz             2 ms (approx.)

Note      1:    PLL inactive.

 2013-2015 Microchip Technology Inc.                                                                           DS40001715D-page 73
PIC16(L)F1704/8

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

2.  Instructions  begin   execution         by  the   internal  register  will  confirm   if  the  microcontroller  is   running

    oscillator at the frequency set in the IRCF<3:0>            from   the  external      clock  source,  as    defined  by  the

    bits of the OSCCON register.                                FOSC<2:0>       bits  in  the    Configuration  Words,   or  the

3.  OST enabled to count 1024 clock cycles.                     internal oscillator.

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

DS40001715D-page 74                                                                    2013-2015 Microchip Technology Inc.
                                                                                               PIC16(L)F1704/8

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 Words. The FSCM is applicable to all                                  INTOSC selected in OSCCON. When the OST times

external Oscillator modes (LP, XT, HS, EC, Secondary                                out, the Fail-Safe condition is cleared after successfully

Oscillator and RC).                                                                 switching to the external clock source. The OSFIF bit

                                                                                    should be cleared prior to switching to the external

FIGURE 6-9:                     FSCM BLOCK DIAGRAM                                  clock source. If the Fail-Safe condition still exists, the

                                                                                    OSFIF flag will again become set by hardware.

                                         Clock Monitor                              6.5.4      RESET OR WAKE-UP FROM SLEEP

        External                                  Latch

        Clock                                  S         Q                          The FSCM is designed to detect an oscillator failure

                                                                                    after the Oscillator Start-up Timer (OST) has expired.

                                                                                    The OST is used after waking up from Sleep and after

     LFINTOSC               ÷ 64               R            Q                       any type of Reset. The OST is not used with the EC or

     Oscillator                                                                     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

           Sample Clock                                                  Clock      code while the OST is operating.

                                                                    Failure             Note:  Due to the wide range of oscillator start-up

                                                                    Detected                   times,  the      Fail-Safe   circuit   is    not  active

                                                                                               during oscillator start-up (i.e., after exiting

6.5.1           FAIL-SAFE DETECTION                                                            Reset   or       Sleep).  After    an      appropriate

                                                                                               amount of time, the user should check the

The     FSCM       module       detects   a       failed       oscillator    by                Status  bits     in  the  OSCSTAT          register    to

comparing the external oscillator to the FSCM sample                                           verify the oscillator start-up and that the

clock. The sample clock is generated by dividing the                                           system clock switchover has successfully

LFINTOSC           by  64.  See      Figure 6-9.            Inside  the      fail              completed.

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.

 2013-2015 Microchip Technology Inc.                                                                                      DS40001715D-page 75
PIC16(L)F1704/8

FIGURE 6-10:          FSCM TIMING DIAGRAM

Sample Clock

System                                                       Oscillator

              Clock                                          Failure

       Output

Clock Monitor Output

              (Q)                                                                               Failure

                                                                                                Detected

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.

DS40001715D-page 76                                                       2013-2015 Microchip Technology Inc.
                                                                            PIC16(L)F1704/8

6.6          Register Definitions: Oscillator Control

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:

R = Readable bit                 W = Writable bit               U = Unimplemented bit, read as ‘0’

u = Bit is unchanged             x = Bit is unknown             -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set                 ‘0’ = Bit is cleared

bit 7             SPLLEN: Software PLL Enable bit

                  If PLLEN in Configuration Words = 1:

                  SPLLEN bit is ignored. 4x PLL is always enabled (subject to oscillator  requirements)

                  If PLLEN in Configuration Words = 0:

                  1=    4x PLL Is enabled

                  0=    4x PLL is disabled

bit 6-3           IRCF<3:0>: Internal Oscillator Frequency Select  bits

                  1111 =   16 MHz HF

                  1110 =   8 MHz or 32 MHz HF(2)

                  1101 =   4 MHz HF

                  1100 =   2 MHz HF

                  1011 =   1 MHz HF

                  1010 =   500 kHz HF(1)

                  1001 =   250 kHz HF(1)

                  1000 =   125 kHz HF(1)

                  0111 =   500 kHz MF (default upon Reset)

                  0110 =   250 kHz MF

                  0101 =   125 kHz MF

                  0100 =   62.5 kHz MF

                  0011 =   31.25 kHz HF(1)

                  0010 =   31.25 kHz MF

                  000x =   31 kHz LF

bit 2             Unimplemented: Read as ‘0’

bit 1-0           SCS<1:0>: System Clock Select bits

                  1x = Internal oscillator block

                  01 = Secondary oscillator

                  00 = Clock determined by FOSC<2:0> in Configuration Words

Note     1:   Duplicate frequency derived from HFINTOSC.

         2:   32 MHz when SPLLEN bit is set. Refer to Section 6.2.2.6 “32 MHz Internal Oscillator Frequency

              Selection”.

 2013-2015 Microchip Technology Inc.                                                               DS40001715D-page 77
PIC16(L)F1704/8

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

     SOSCR            PLLR         OSTS            HFIOFR     HFIOFL           MFIOFR  LFIOFR             HFIOFS

bit 7                                                                                                     bit 0

Legend:

R = Readable bit             W = Writable bit                 U = Unimplemented bit, read as ‘0’

u = Bit is unchanged         x = Bit is unknown               -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set             ‘0’ = Bit is cleared             q = Conditional

bit  7            SOSCR: Secondary Oscillator Ready bit

                  If T1OSCEN = 1:

                  1=  Secondary oscillator is ready

                  0=  Secondary oscillator is not ready

                  If T1OSCEN = 0:

                  1=  Secondary 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 Timer Status bit

                  1=  Running from the clock defined by the FOSC<2:0> bits of  the  Configuration  Words

                  0=  Running from an internal oscillator (FOSC<2:0> = 100)

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

DS40001715D-page 78                                                             2013-2015 Microchip Technology Inc.
                                                                                PIC16(L)F1704/8

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

       —                 —                                                    TUN<5:0>

bit 7                                                                                                                   bit 0

Legend:

R = Readable bit              W = Writable bit                   U = Unimplemented bit, read as ‘0’

u = Bit is unchanged          x = Bit is unknown                 -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set              ‘0’ = Bit is cleared

bit 7-6           Unimplemented: Read as ‘0’

bit 5-0           TUN<5:0>: Frequency Tuning bits

                  100000 =    Minimum frequency

                  •

                  •

                  •

                  111111 =

                  000000 = Oscillator module is running      at  the  factory-calibrated  frequency

                  000001 =

                  •

                  •

                  •

                  011110 =

                  011111 =    Maximum 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>           77

OSCSTAT           SOSCR       PLLR     OSTS         HFIOFR            HFIOFL    MFIOFR            LFIOFR     HFIOFS     78

OSCTUNE              —        —                                       TUN<5:0>                                          79

PIR2              OSFIF       C2IF     C1IF         —                 BCL1IF    TMR6IF            TMR4IF     CCP2IF     90

PIE2              OSFIE       C2IE     C1IE         —                 BCL1IE    TMR6IE            TMR4IE     CCP2IE     87

T1CON                TMR1CS<1:0>       T1CKPS<1:0>               T1OSCEN        T1SYNC            —          TMR1ON     253

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>              —     49

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

Legend:     — = unimplemented location, read as ‘0’. Shaded cells are not used by clock sources.

 2013-2015 Microchip Technology Inc.                                                                        DS40001715D-page 79
PIC16(L)F1704/8

7.0       INTERRUPTS

The interrupt feature allows certain events to preempt

normal program flow. Firmware is used to determine

the source of the interrupt and act accordingly. Some

interrupts can be configured to wake the MCU from

Sleep mode.

This  chapter   contains    the  following    information   for

Interrupts:

•  Operation

•  Interrupt Latency

•  Interrupts During Sleep

•  INT Pin

•  Automatic Context Saving

Many  peripherals     produce    interrupts.     Refer  to  the

corresponding chapters for details.

A  block  diagram     of  the  interrupt  logic  is  shown  in

Figure 7-1.

FIGURE 7-1:               INTERRUPT LOGIC

                                                            TMR0IF                    Wake-up

                                                            TMR0IE                    (If in Sleep mode)

                Peripheral Interrupts                            INTF

                                                                 INTE

      (TMR1IF)  PIR1<0>                                          IOCIF

      (TMR1IE)  PIE1<0>                                          IOCIE                         Interrupt

                                                                                               to CPU

                                                                 PEIE

                PIRn<7>                                          GIE

                PIEn<7>

DS40001715D-page 80                                                       2013-2015  Microchip Technology  Inc.
                                                                                   PIC16(L)F1704/8

7.1       Operation                                                   7.2         Interrupt Latency

Interrupts are disabled upon any device Reset. They                   Interrupt latency is defined as the time from when the

are enabled by setting the following bits:                            interrupt event occurs to the time code execution at the

•  GIE bit of the INTCON register                                     interrupt vector begins. The latency for synchronous

•  Interrupt Enable bit(s) for the specific interrupt                 interrupts   is  three  or    four  instruction  cycles.    For

   event(s)                                                           asynchronous     interrupts,  the   latency  is  three  to  five

•  PEIE bit of the INTCON register (if the Interrupt                  instruction  cycles,    depending   on  when     the  interrupt

   Enable bit of the interrupt event is contained in the              occurs. See Figure 7-2 and Figure 7-3 for more details.

   PIE1 or PIE2 registers)

The   INTCON,       PIR1     and    PIR2          registers  record

individual interrupts via interrupt flag bits. Interrupt flag

bits will be set, regardless of the status of the GIE, PEIE

and individual interrupt enable bits.

The following events happen when an interrupt event

occurs while the GIE bit is set:

•  Current prefetched instruction is flushed

•  GIE bit is cleared

•  Current Program Counter (PC) is pushed onto the

   stack

•  Critical registers are automatically saved to the

   shadow registers (See “Section 7.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.

 2013-2015 Microchip Technology Inc.                                                                     DS40001715D-page 81
PIC16(L)F1704/8

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

CLKR                                      Interrupt Sampled

                                          during Q1

Interrupt

GIE

PC             PC-1   PC                            PC+1               0004h        0005h

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

Interrupt

GIE

PC             PC-1   PC                  PC+1/FSR        New PC/      0004h        0005h

                                          ADDR            PC+1

Execute    2 Cycle Instruction at PC      Inst(PC)        NOP          NOP    Inst(0004h)

Interrupt

GIE

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

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

Interrupt

GIE

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

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

DS40001715D-page 82                                                                  2013-2015 Microchip Technology    Inc.
                                                                                       PIC16(L)F1704/8

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

Instruction       Inst (PC)                Inst (PC + 1)            —                  Inst (0004h)                 Inst (0005h)

Fetched

Instruction      Inst (PC – 1)             Inst (PC)                Forced NOP                  Forced NOP          Inst (0004h)

Executed

Note     1:  INTF flag is sampled here (every Q1).

         2:  Asynchronous interrupt latency = 3-5 TCY. Synchronous latency = 3-4 TCY, where TCY = instruction cycle           time.

             Latency is the same whether Inst (PC) is a single cycle or a 2-cycle instruction.

         3:  CLKOUT not available in all oscillator modes.

         4:  For minimum width of INT pulse, refer to AC specifications in Section 32.0 “Electrical Specifications””.

         5:  INTF is enabled to be set any time during the Q4-Q1 cycles.

 2013-2015 Microchip Technology Inc.                                                                           DS40001715D-page 83
PIC16(L)F1704/8

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

“Power-Down Mode (Sleep)” for more details.

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

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

registers are automatically restored. Any modifications

to  these      registers  during     the   ISR        will  be    lost.  If

modifications to any of these registers are desired, the

corresponding 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

application, other registers may also need to be saved.

DS40001715D-page 84                                                           2013-2015 Microchip Technology Inc.
                                                                                 PIC16(L)F1704/8

7.6         Register Definitions: Interrupt Control

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

R = Readable bit              W = Writable bit                     U = Unimplemented bit, read as ‘0’

u = Bit is unchanged          x = Bit is unknown                   -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set              ‘0’ = Bit is cleared

bit  7              GIE: Global Interrupt Enable bit

                    1 = Enables all active interrupts

                    0 = Disables all interrupts

bit  6              PEIE: Peripheral Interrupt Enable bit

                    1 = Enables all active peripheral interrupts

                    0 = Disables all peripheral interrupts

bit  5              TMR0IE: Timer0 Overflow Interrupt Enable bit

                    1 = Enables the Timer0 interrupt

                    0 = Disables the Timer0 interrupt

bit  4              INTE: INT External Interrupt Enable bit

                    1 = Enables the INT external interrupt

                    0 = Disables the INT external interrupt

bit  3              IOCIE: Interrupt-on-Change Enable bit

                    1 = Enables the interrupt-on-change

                    0 = Disables the interrupt-on-change

bit  2              TMR0IF: Timer0 Overflow Interrupt Flag bit

                    1 = TMR0 register has overflowed

                    0 = TMR0 register did not overflow

bit  1              INTF: INT External Interrupt Flag bit

                    1 = The INT external interrupt occurred

                    0 = The INT external interrupt did not occur

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

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

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

Note    1:   The IOCIF Flag bit is read-only and cleared when all the interrupt-on-change   flags      in  the  IOCxF  registers

             have been cleared by software.

Note:         Interrupt flag bits are set when an interrupt

              condition occurs, regardless of the state of

              its corresponding enable bit or the Global

              Enable bit, GIE, of the INTCON register.

              User  software  should           ensure     the

              appropriate  interrupt   flag    bits  are  clear

              prior to enabling an interrupt.

 2013-2015 Microchip Technology Inc.                                                                      DS40001715D-page 85
PIC16(L)F1704/8

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

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

TMR1GIE               ADIE  RCIE                       TXIE       SSP1IE        CCP1IE   TMR2IE           TMR1IE

bit 7                                                                                                     bit           0

Legend:

R = Readable bit            W = Writable bit                    U = Unimplemented bit, read as ‘0’

u = Bit is unchanged        x = Bit is unknown                  -n/n = Value at POR and BOR/Value at all  other Resets

‘1’ = Bit is set            ‘0’ = Bit is cleared

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: Analog-to-Digital Converter (ADC) Interrupt Enable bit

                  1 = Enables the ADC interrupt

                  0 = Disables the ADC interrupt

bit  5            RCIE: USART Receive Interrupt Enable bit

                  1 = Enables the USART receive interrupt

                  0 = Disables the USART receive interrupt

bit  4            TXIE: USART Transmit Interrupt Enable bit

                  1 = Enables the USART transmit interrupt

                  0 = Disables the USART transmit interrupt

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

                  1 = Enables the MSSP interrupt

                  0 = Disables the MSSP interrupt

bit  2            CCP1IE: CCP1 Interrupt Enable bit

                  1 = Enables the CCP1 interrupt

                  0 = Disables the CCP1 interrupt

bit  1            TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

                  1 = Enables the Timer2 to PR2 match interrupt

                  0 = Disables the Timer2 to PR2 match interrupt

bit  0            TMR1IE: Timer1 Overflow Interrupt Enable bit

                  1 = Enables the Timer1 overflow interrupt

                  0 = Disables the Timer1 overflow interrupt

Note:         Bit PEIE of the INTCON register must be

              set to enable any peripheral interrupt.

DS40001715D-page 86                                                              2013-2015 Microchip Technology Inc.
                                                                           PIC16(L)F1704/8

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

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

     OSFIE            C2IE             C1IE            —          BCL1IE   TMR6IE   TMR4IE               CCP2IE

bit 7                                                                                                    bit           0

Legend:

R = Readable bit            W = Writable bit                   U = Unimplemented bit, read as ‘0’

u = Bit is unchanged        x = Bit is unknown                 -n/n = Value at POR and BOR/Value at all  other Resets

‘1’ = Bit is set            ‘0’ = Bit is cleared

bit  7            OSFIE: Oscillator Fail Interrupt Enable bit

                  1=  Enables the Oscillator Fail interrupt

                  0=  Disables the Oscillator Fail interrupt

bit  6            C2IE: Comparator C2 Interrupt Enable bit

                  1=  Enables the Comparator C2 interrupt

                  0=  Disables the Comparator C2 interrupt

bit  5            C1IE: Comparator C1 Interrupt Enable bit

                  1=  Enables the Comparator C1 interrupt

                  0=  Disables the Comparator C1 interrupt

bit  4            Unimplemented: Read as ‘0’

bit  3            BCL1IE: MSSP Bus Collision Interrupt Enable bit

                  1=  Enables the MSSP Bus Collision Interrupt

                  0=  Disables the MSSP Bus Collision Interrupt

bit  2            TMR6IE: TMR6 to PR6 Match Interrupt Enable bit

                  1 = Enables the Timer6 to PR6 match interrupt

                  0 = Disables the Timer6 to PR6 match interrupt

bit  1            TMR4IE: TMR4to PR4 Match Interrupt Enable bit

                  1 = Enables the Timer4 to PR4 match interrupt

                  0 = Disables the Timer4 to PR4 match interrupt

bit  0            CCP2IE: CCP2 Interrupt Enable bit

                  1=  Enables the CCP2 interrupt

                  0=  Disables the CCP2 interrupt

Note:         Bit PEIE of the INTCON register must be

              set to enable any peripheral interrupt.

 2013-2015 Microchip Technology Inc.                                                              DS40001715D-page 87
PIC16(L)F1704/8

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

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

        —             —    COGIE                      ZCDIE         —    CLC3IE   CLC2IE                 CLC1IE

bit 7                                                                                                    bit           0

Legend:

R = Readable bit           W = Writable bit                    U = Unimplemented bit, read as ‘0’

u = Bit is unchanged       x = Bit is unknown                  -n/n = Value at POR and BOR/Value at all  other Resets

‘1’ = Bit is set           ‘0’ = Bit is cleared

bit  7-6          Unimplemented: Read as ‘0’

bit  5            COGIE: COG Auto-Shutdown Interrupt Enable bit

                  1=  COG interrupt enabled

                  0=  COG interrupt disabled

bit  4            ZCDIE: Zero-Cross Detection Interrupt Enable bit

                  1=  ZCD interrupt enabled

                  0=  ZCD interrupt disabled

bit  3            Unimplemented: Read as ‘0’

bit  2            CLC3IE: CLC3 Interrupt Enable bit

                  1=  CLC3 interrupt enabled

                  0=  CLC3 interrupt disabled

bit  1            CLC2IE: CLC2 Interrupt Enable bit

                  1=  CLC2 interrupt enabled

                  0=  CLC2 interrupt disabled

bit  0            CLC1IE: CLC1 Interrupt Enable bit

                  1=  CLC1 interrupt enabled

                  0=  CLC1 interrupt disabled

Note:        Bit PEIE of the INTCON register must be

             set to enable any peripheral interrupt.

DS40001715D-page 88                                                       2013-2015 Microchip Technology Inc.
                                                                                PIC16(L)F1704/8

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

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

TMR1GIF               ADIF             RCIF               TXIF   SSP1IF         CCP1IF   TMR2IF            TMR1IF

bit 7                                                                                                      bit           0

Legend:

R = Readable bit              W = Writable bit                   U = Unimplemented bit, read as ‘0’

u = Bit is unchanged          x = Bit is unknown                 -n/n = Value at POR and BOR/Value at all  other Resets

‘1’ = Bit is set              ‘0’ = Bit is cleared

bit  7              TMR1GIF: Timer1 Gate Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  6              ADIF: Analog-to-Digital Converter (ADC) Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  5              RCIF: USART Receive Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  4              TXIF: USART Transmit Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

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

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  2              CCP1IF: CCP1 Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  1              TMR2IF: Timer2 to PR2 Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  0              TMR1IF: Timer1 Overflow Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

Note:         Interrupt flag bits are set when an interrupt

              condition occurs, regardless of the state of

              its corresponding enable bit or the Global

              Enable bit, GIE, of the INTCON register.

              User  software  should           ensure     the

              appropriate  interrupt   flag    bits  are  clear

              prior to enabling an interrupt.

 2013-2015 Microchip Technology Inc.                                                                DS40001715D-page 89
PIC16(L)F1704/8

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

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

     OSFIF            C2IF            C1IF                —      BCL1IF   TMR6IF   TMR4IF                  CCP2IF

bit 7                                                                                                      bit           0

Legend:

R = Readable bit              W = Writable bit                   U = Unimplemented bit, read as ‘0’

u = Bit is unchanged          x = Bit is unknown                 -n/n = Value at POR and BOR/Value at all  other Resets

‘1’ = Bit is set              ‘0’ = Bit is cleared

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              Unimplemented: Read as ‘0’

bit  3              BCL1IF: MSSP Bus Collision Interrupt Flag    bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  2              TMR6IF: Timer6 to PR6 Interrupt Flag bit

                    1 = Interrupt is pending

                    0 = Interrupt is not pending

bit  1              TMR4IF: Timer4 to PR4 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

Note:         Interrupt flag bits are set when an interrupt

              condition occurs, regardless of the state of

              its corresponding enable bit or the Global

              Enable bit, GIE, of the INTCON register.

              User  software  should           ensure     the

              appropriate  interrupt  flag     bits  are  clear

              prior to enabling an interrupt.

DS40001715D-page 90                                                        2013-2015 Microchip Technology Inc.
                                                                        PIC16(L)F1704/8

REGISTER 7-7:             PIR3: PERIPHERAL INTERRUPT REQUEST REGISTER 3

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

        —             —                COGIF             ZCDIF     —    CLC3IF   CLC2IF                     CLC1IF

bit 7                                                                                                       bit           0

Legend:

R = Readable bit             W = Writable bit                     U = Unimplemented bit, read as ‘0’

u = Bit is unchanged         x = Bit is unknown                   -n/n = Value at POR and BOR/Value at all  other Resets

‘1’ = Bit is set             ‘0’ = Bit is cleared

bit  7-6           Unimplemented: Read as ‘0’

bit  5             COGIF: COG Auto-Shutdown Interrupt Flag bit

                   1 = Interrupt is pending

                   0 = Interrupt is not pending

bit  4             ZCDIF: Zero-Cross Detection Interrupt Flag bit

                   1 = Interrupt is pending

                   0 = Interrupt is not pending

bit  3             Unimplemented: Read as ‘0’

bit  2             CLC3IF: CLC3 Interrupt Flag bit

                   1 = Interrupt is pending

                   0 = Interrupt is not pending

bit  1             CLC2IF: CLC2 Interrupt Flag bit

                   1 = Interrupt is pending

                   0 = Interrupt is not pending

bit  0             CLC1IF: CLC1 Interrupt Flag bit

                   1 = Interrupt is pending

                   0 = Interrupt is not pending

Note:        Interrupt flag bits are set when an interrupt

             condition occurs, regardless of the state of

             its corresponding enable bit or the Global

             Enable bit, GIE, of the INTCON register.

             User  software  should           ensure     the

             appropriate  interrupt    flag   bits  are  clear

             prior to enabling an interrupt.

 2013-2015 Microchip Technology Inc.                                                                 DS40001715D-page 91
PIC16(L)F1704/8

TABLE 7-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   85

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

PIE1              TMR1GIE  ADIE            RCIE    TXIE               SSP1IE        CCP1IE          TMR2IE   TMR1IE  86

PIE2              OSFIE    C2IE            C1IE    —                  BCL1IE        TMR6IE          TMR4IE   CCP2IE  87

PIE3                 —     —               COGIE   ZCDIE              —             CLC3IE          CLC2IE   CLC1IE  88

PIR1              TMR1GIF  ADIF            RCIF    TXIF               SSP1IF        CCP1IF          TMR2IF   TMR1IF  89

PIR2              OSFIF    C2IF            C1IF    —                  BCL1IF        TMR6IF          TMR4IF   CCP2IF  90

PIR3                 —     —               COGIF   ZCDIF              —             CLC3IF          CLC2IF   CLC1IF  91

Legend:     —  =  unimplemented location,  read as ‘0’. Shaded cells  are not used  by interrupts.

DS40001715D-page 92                                                                          2013-2015      Microchip Technology Inc.
                                                                                            PIC16(L)F1704/8

8.0            POWER-DOWN MODE (SLEEP)                                       8.1        Wake-up from Sleep

The     Power-down        mode    is    entered       by  executing       a  The device can wake-up from Sleep through one of the

SLEEP instruction.                                                           following events:

Upon entering Sleep mode, the following conditions                           1.    External Reset input on MCLR pin, if enabled

exist:                                                                       2.    BOR Reset, if enabled

1.   WDT       will  be    cleared      but  keeps        running,    if     3.    POR Reset

     enabled for operation during Sleep.                                     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

4.   CPU clock is disabled.                                                        during Sleep (see individual peripheral for more

5.   31 kHz LFINTOSC is unaffected and peripherals                                 information)

     that operate from it may continue operation in                          The first three events will cause a device Reset. The

     Sleep.                                                                  last  three    events  are   considered  a  continuation    of

6.   Timer1          and  peripherals        that     operate  from          program    execution.    To  determine   whether  a  device

     Timer1 continue operation in Sleep when the                             Reset      or  wake-up       event  occurred,     refer     to

     Timer1 clock source selected is:                                        Section 5.12 “Determining the Cause of a Reset”.

        •  LFINTOSC                                                          When the SLEEP instruction is being executed, the next

        •  T1CKI                                                             instruction (PC + 1) is prefetched. For the device to

        •  Secondary oscillator                                              wake-up through an interrupt event, the corresponding

7.   ADC       is    unaffected,    if  the        dedicated   FRC           interrupt  enable   bit  must  be   enabled.  Wake-up     will

     oscillator is selected.                                                 occur regardless of the state of the GIE bit. If the GIE

8.   I/O ports maintain the status they had before                           bit is disabled, the device continues execution at the

     SLEEP         was    executed      (driving      high,  low      or     instruction after the SLEEP instruction. If the GIE bit is

     high-impedance).                                                        enabled, the device executes the instruction after the

9.   Resets        other  than  WDT     are        not  affected    by       SLEEP instruction, the device will then call the Interrupt

     Sleep mode.                                                             Service Routine. In cases where the execution of the

                                                                             instruction following SLEEP is not desirable, the user

Refer      to  individual  chapters          for   more      details  on     should have a NOP after the SLEEP instruction.

peripheral operation during Sleep.                                           The WDT is cleared when the device wakes up from

To   minimize        current    consumption,            the    following     Sleep, regardless of the source of wake-up.

conditions should be considered:

•   I/O pins should not be floating

•   External circuitry sinking current from I/O pins

•   Internal circuitry sourcing current from I/O pins

•   Current draw from pins with internal weak pull-ups

•   Modules using 31 kHz LFINTOSC

•   Modules using secondary oscillator

I/O  pins      that  are  high-impedance           inputs    should   be

pulled     to  VDD   or   VSS   externally        to  avoid  switching

currents caused by floating inputs.

Examples of internal circuitry that might be sourcing

current include modules such as the DAC and FVR

modules. See Section 22.0 “8-Bit Digital-to-Analog

Converter (DAC1) Module” and Section 14.0 “Fixed

Voltage    Reference       (FVR)”       for  more       information   on

these modules.

 2013-2015 Microchip Technology Inc.                                                                            DS40001715D-page 93
PIC16(L)F1704/8

8.1.1              WAKE-UP USING INTERRUPTS                                         •   If the interrupt occurs during or after the

When global interrupts are disabled (GIE cleared) and                                   execution of a SLEEP instruction

any interrupt source has both its interrupt enable bit                                  -  SLEEP instruction will be completely

and interrupt flag bit set, one of the following will occur:                               executed

•  If the interrupt occurs before the execution of a                                    -  Device will immediately wake-up from Sleep

   SLEEP instruction                                                                    -  WDT and WDT prescaler will be cleared

   -  SLEEP instruction will execute as a NOP                                           -  TO bit of the STATUS register will be set

   -  WDT and WDT prescaler will not be cleared                                         -  PD bit of the STATUS register will be cleared

   -  TO bit of the STATUS register will not be set                                 Even if the flag bits were checked before executing a

   -  PD bit of the STATUS register will not be                                     SLEEP instruction, it may be possible for flag bits to

      cleared                                                                       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 8-1:                  WAKE-UP FROM SLEEP THROUGH INTERRUPT

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

         CLKIN(1)

      CLKOUT(2)                                                        TOST(3)

   Interrupt flag                                                               Interrupt Latency(4)

   GIE bit                                               Processor in
   (INTCON reg.)
                                                         Sleep

   Instruction Flow

               PC        PC                PC + 1                PC + 2                PC + 2         PC + 2           0004h                          0005h

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

      Instruction        Inst(PC - 1)      Sleep                                Inst(PC + 1)       Forced NOP      Forced NOP           Inst(0004h)
      Executed

   Note     1:       External clock. High, Medium, Low mode assumed.

            2:       CLKOUT is shown here for timing reference.

            3:       TOST = 1024 TOSC. This delay does not apply to EC, RC and INTOSC Oscillator modes or Two-Speed Start-up (see Section 6.4

                     “Two-Speed Clock Start-up Mode”.

            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.

DS40001715D-page 94                                                                                        2013-2015 Microchip Technology Inc.
                                                                         PIC16(L)F1704/8

8.2        Low-Power Sleep Mode                                8.2.2     PERIPHERAL USAGE IN SLEEP

The PIC16F1704/8 device contains an internal Low               Some peripherals that can operate in Sleep mode will

Dropout    (LDO)  voltage     regulator,  which  allows   the  not operate properly with the Low-Power Sleep mode

device I/O pins to operate at voltages up to 5.5V while        selected. The Low-Power Sleep mode is intended for

the internal device logic operates at a lower voltage.         use only with the following peripherals:

The LDO and its associated reference circuitry must            •  Brown-Out Reset (BOR)

remain active when the device is in Sleep mode. The            •  Watchdog Timer (WDT)

PIC16F1704/8      allows   the  user      to  optimize    the  •  External interrupt pin/Interrupt-on-change pins

operating  current  in     Sleep,   depending    on       the  •  Timer1 (with external clock source<100 kHz)

application requirements.

A Low-Power Sleep mode can be selected by setting

the VREGPM bit of the VREGCON register. With this                 Note:  The   PIC16LF1704/8        does  not    have  a

bit set, the LDO and reference circuitry are placed in a                 configurable    Low-Power        Sleep    mode.

low-power state when the device is in Sleep.                             PIC16LF1704/8 is an unregulated device

8.2.1      SLEEP CURRENT VS. WAKE-UP                                     and is always in the lowest power state

           TIME                                                          when  in  Sleep,     with  no   wake-up   time

                                                                         penalty. This device has a lower maximum

In the default operating mode, the LDO and reference                     VDD   and       I/O  voltage     than     the

circuitry remain in the normal configuration while in                    PIC16F1704/8.        See         Section 32.0

Sleep. The device is able to exit Sleep mode quickly                     “Electrical    Specifications”   for      more

since all circuits remain active. In Low-Power Sleep                     information.

mode, when waking up from Sleep, an extra delay time

is required for these circuits to return to the normal

configuration and stabilize.

The    Low-Power    Sleep     mode        is  beneficial  for

applications that stay in Sleep mode for long periods of

time. The normal mode is beneficial for applications

that need to wake from Sleep quickly and frequently.

 2013-2015 Microchip Technology Inc.                                                         DS40001715D-page 95
PIC16(L)F1704/8

8.3          Register Definitions: Voltage Regulator Control

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

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

         —                —                —                —             —                   —                 VREGPM      Reserved

bit 7                                                                                                                                bit 0

Legend:

R = Readable bit                      W = Writable bit                    U = Unimplemented bit, read as ‘0’

u = Bit is unchanged                  x = Bit is unknown                  -n/n = Value at POR and BOR/Value at all other Resets

‘1’ = Bit is set                      ‘0’ = Bit is cleared

bit 7-2           Unimplemented: Read as ‘0’

bit 1             VREGPM: Voltage Regulator Power Mode Selection          bit

                  1=     Low-Power Sleep mode enabled in Sleep(2)

                         Draws lowest current in Sleep, slower wake-up

                  0=     Normal-Power mode enabled in Sleep(2)

                         Draws higher current in Sleep, faster wake-up

bit 0             Reserved: Read as ‘1’. Maintain this bit set.

Note     1:   PIC16F1704/8 only.

         2:   See Section 32.0 “Electrical Specifications”.

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

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

                                                                                                                                 Page

INTCON            GIE              PEIE    TMR0IE           INTE          IOCIE       TMR0IF            INTF    IOCIF            85

IOCAP             —                —       IOCAP5           IOCAP4        IOCAP3      IOCAP2            IOCAP1  IOCAP0           145

IOCAN             —                —       IOCAN5           IOCAN4        IOCAN3      IOCAN2            IOCAN1  IOCAN0           145

IOCAF             —                —       IOCAF5           IOCAF4        IOCAF3      IOCAF2            IOCAF1  IOCAF0           145

IOCBP(1)          IOCBP7          IOCBP6   IOCBP5           IOCBP4        —           —                 —       —                146

IOCBN(1)          IOCBN7          IOCBN6   IOCBN5           IOCBN4        —           —                 —       —                146

IOCBF(1)          IOCBF7          IOCBF6   IOCBF5           IOCBF4        —           —                 —       —                146

IOCCP             IOCCP7(1)   IOCCP