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

型号

产品描述

搜索
 

PIC16LF1578T-I/SS

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

器件描述

IC MCU 8BIT 7KB FLASH 20SSOP

参数

产品属性属性值
核心处理器:PIC
核心尺寸:8-位
速度:32MHz
连接性:LINbus,UART/USART
外设:欠压检测/复位,POR,PWM,WDT
I/O 数:12
程序存储容量:7KB(4K x 14)
程序存储器类型:闪存
EEPROM 容量:-
RAM 容量:512 x 8
电压 - 电源(Vcc/Vdd):1.8 V ~ 3.6 V
数据转换器:A/D 12x10b,D/A 1x5b
振荡器类型:内部
工作温度:-40°C ~ 85°C(TA)
封装/外壳:20-SSOP(0.209",5.30mm 宽)
供应商器件封装:20-SSOP

PIC16LF1578T-I/SS器件文档内容

                                                      PIC16(L)F1574/5/8/9

                14/20-Pin MCUs with High-Precision 16-Bit PWMs

Description

PIC16(L)F1574/5/8/9 microcontrollers combine the capabilities of 16-bit PWMs with Analog to suit a variety of applications.

These devices deliver four 16-bit PWMs with independent timers for applications where high resolution is needed, such as

LED lighting, stepper motors, power supplies and other general purpose applications. The core independent peripherals

(16-bit  PWMs,  Complementary     Waveform   Generator),  Enhanced  Universal  Synchronous     Asynchronous           Receiver

Transceiver (EUSART) and Analog (ADCs, Comparator and DAC) enable closed-loop feedback and communication for

use in multiple market segments. The Peripheral Pin Select (PPS) functionality allows for I/O pin remapping of the digital

peripherals for increased flexibility. The EUSART peripheral enables the communication for applications such as LIN.

Core Features                                             eXtreme Low-Power (XLP) Features:

•  C Compiler Optimized RISC Architecture                 •  Sleep mode: 20 nA @ 1.8V, typical

•  Only 49 Instructions                                   •  Watchdog Timer: 260 nA @ 1.8V, typical

•  Operating Speed:                                       •  Operating Current:

   -  DC – 32 MHz clock input                                -      30 µA/MHz @ 1.8V, typical

   -  125 ns minimum instruction cycle

•  Interrupt Capability                                   Digital Peripherals

•  16-Level Deep Hardware Stack                           •  16-Bit PWM:

•  Two 8-Bit Timers                                          -      Four 16-bit PWMs with independent timers

•  One 16-Bit Timer                                          -      Multiple output modes (standard, center-

•  Four additional 16-Bit Timers available using the                aligned, set and toggle on register match)

   16-Bit PWMs                                               -      User settings for phase, duty cycle, period,

•  Power-on Reset (POR)                                             offset and polarity

•  Power-up Timer (PWRT)                                     -      16-bit timer capability

•  Low-Power Brown-out Reset (LPBOR)                         -      Interrupts generated based on timer matches

•  Programmable Watchdog Timer (WDT) up to 256s                     with offset, duty cycle, period and phase

•  Programmable Code Protection                                     registers

                                                          •  Complementary Waveform Generator (CWG):

Memory                                                       -      Rising and falling edge dead-band control

•  Up to 14 KB Flash Program Memory                          -      Multiple signal sources

•  Up to 1024 Bytes Data SRAM Memory                      •  Enhanced Universal Synchronous Asynchronous

•  Direct, Indirect and Relative Addressing modes            Receiver Transceiver (EUSART):

•  High-Endurance Flash Data Memory (HEF)                    -      Supports LIN applications

   -  128 bytes if nonvolatile data storage               •  Peripheral Pin Select (PPS):

   -  100k erase/write cycles                                -      I/O pin remapping of digital peripherals

Operating Characteristics                                 Device I/O Port Features

•  Operating Voltage Range:                               •  Up to 18 I/Os

   -  1.8V to 3.6V (PIC16LF1574/5/8/9)                    •  Individually Selectable Weak Pull-ups

   -  2.3V to 5.5V (PIC16F1574/5/8/9)                     •  Interrupt-on-Change Pins Option with Edge-

•  Temperature Range:                                        Selectable Option

   -  Industrial: -40°C to 85°C

   -  Extended: -40°C to 125°C

•  Internal Voltage Reference module

•  In-Circuit Serial Programming™ (ICSP™) via Two

   Pins

 2016 Microchip Technology Inc.                                                               DS40001782C-page 1
PIC16(L)F1574/5/8/9

Analog Peripherals                                                                                                                                         Clocking Structure

•  10-Bit Analog-to-Digital Converter (ADC):                                                                                                               •            Precision Internal Oscillator:

   -  Up to 12 external channels                                                                                                                                        -  Factory calibrated ±1%, typical

   -  Conversion available during Sleep                                                                                                                                 -  Software-selectable clock speeds from

•  Two Comparators:                                                                                                                                                        31 kHz to 32 MHz

   -  Low-Power/High-Speed modes                                                                                                                           •            External Oscillator Block with:

   -  Fixed Voltage Reference at (non)inverting                                                                                                                         -  Two external clock modes up to 32 MHz

      input(s)                                                                                                                                             •            Digital Oscillator Input Available

   -  Comparator outputs externally accessible

   -  Synchronization with Timer1 clock source

   -  Software hysteresis enable

•  5-Bit Digital-to-Analog Converter (DAC):

   -  5-bit resolution, rail-to-rail

   -  Positive Reference Selection

   -  Unbuffered I/O pin output

   -  Internal connections to ADCs and

      comparators

•  Voltage Reference:

   -  Fixed Voltage Reference with 1.024V, 2.048V

      and 4.096V output levels

TABLE 1:          PIC12(L)F1571/2 AND PIC16(L)F1574/5/8/9 FAMILY TYPES

         Device        Data Sheet Index  Program Flash Memory  (Kwords)  Program Flash Memory  (Kbytes)  Data SRAM (bytes)  I/O Pins  8-Bit/16-Bit Timers  Comparators     16-Bit PWM  10-Bit ADC (ch)  5-Bit DAC  CWG  EUSART  PPS  Debug(1)

   PIC12(L)F1571      (A)                1                               1.75                            128                6         2/4(2)               1               3           4                1          1    0       N    I

   PIC12(L)F1572      (A)                2                               3.5                             256                6         2/4(2)               1               3           4                1          1    1       N    I

   PIC16(L)F1574      (B)                4                               7                               512                12        2/5(3)               2               4           8                1          1    1       Y    I

   PIC16(L)F1575      (B)                8                               14                              1024               12        2/5(3)               2               4           8                1          1    1       Y    I

   PIC16(L)F1578      (B)                4                               7                               512                18        2/5(3)               2               4           12               1          1    1       Y    I

   PIC16(L)F1579      (B)                8                               14                              1024               18        2/5(3)               2               4           12               1          1    1       Y    I

   Note  1:  I – Debugging integrated on chip.

         2:  Three additional 16-bit timers available when not using the 16-bit PWM outputs.

         3:  Four additional 16-bit timers available when not using the 16-bit PWM outputs.

   Data Sheet Index:

         A)  DS-40001723                                       PIC12(L)F1571/2 Data Sheet, 8-Pin Flash, 8-bit MCU with High-Precision 16-bit PWM

         B)  Future Release                                    PIC16(L)F1574/5/8/9 Data Sheet, 8-Pin Flash, 8-bit MCU with High-Precision 16-bit

                                                               PWM

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

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

DS40001782C-page 2                                                                                                                                                                                                  2016 Microchip Technology Inc.
                                                              PIC16(L)F1574/5/8/9

TABLE 2:       PACKAGES

Packages                          PDIP           SOIC  TSSOP  SSOP  UQFN

PIC16(L)F1574                                                    

PIC16(L)F1575                                                    

PIC16(L)F1578                                                    

PIC16(L)F1579                                                    

Note:     Pin details are subject to    change.

 2016 Microchip Technology Inc.                                    DS40001782C-page 3
PIC16(L)F1574/5/8/9

PIN DIAGRAMS

FIGURE 1:           14-PIN PDIP, SOIC, TSSOP

                                       VDD                 1                   14      VSS

                                       RA5                 2  PIC16(L)F1574/5  13      RA0/ICSPDAT

                                       RA4                 3                   12      RA1/ICSPCLK

                                    MCLR/VPP/RA3           4                   11      RA2

                                       RC5                 5                   10      RC0

                                       RC4                 6                   9       RC1

                                       RC3                 7                   8       RC2

Note:      See  Table  3  for  the  pin allocation table.

FIGURE 2:           16-PIN UQFN (4x4)

                                                              VDD  NC          NC   VSS

                                                              16   15 14            13

                                       RA5            1       PIC16(L)F1574/5            12     RA0

                                       RA4            2                                     11  RA1

                                    MCLR/VPP/RA3      3                                  10     RA2

                                       RC5            4                                     9   RC0

                                                              5    6           7    8

                                                              RC4  RC3         RC2  RC1

Note:      See Table 3 for the pin allocation table.

DS40001782C-page 4                                                                                    2016 Microchip Technology Inc.
                                                                                                    PIC16(L)F1574/5/8/9

FIGURE 3:       20-PIN PDIP, SOIC, SSOP

                                                  VDD      1                               20   VSS

                                                  RA5      2                               19   RA0

                                                  RA4      3                               18   RA1

                                    MCLR/VPP/RA3           4         PIC16(L)F1578/9       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 4 for the pin allocation table.

FIGURE 4:       20-PIN UQFN (4x4)

                                                           RA4  RA5  VDD              VSS  RA0

                                                           2019 18 17 16

                                    MCLR/VPP/RA3  1        PIC16(L)F1578/9                      15   RA1

                                    RC5           2                                             14   RA2

                                    RC4           3                                             13   RC0

                                    RC3           4                                             12   RC1

                                    RC6           5                                             11   RC2

                                                           6    7    8                9 10

                                                           RC7  RB7  RB6  RB5              RB4

Note:      See  Table  4  for  the  pin allocation table.

 2016 Microchip Technology Inc.                                                                          DS40001782C-page 5
PIC16(L)F1574/5/8/9

PIN ALLOCATION TABLES

TABLE 3:                                     14/16-PIN ALLOCATION TABLE (PIC16(L)F1574/5)

I/O     14-Pin PDIP/SOIC/TSSOP  16-Pin UQFN  ADC        Reference  Comparator     Timers    PWM      EUSART                            CWG             Interrupt  Pull-up    Basic

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

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

RA2     11                      10           AN2        —          —              T0CKI(1)  —        —        CWG1IN(1)                     INT(1)/IOC            Y          —

RA3         4                   3            —          —          —              —         —        —                                 —    IOC                   Y        MCLR/VPP

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

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

RC0     10                      9            AN4        —          C2IN+          —         —        —                                 —    IOC                   Y          —

RC1         9                   8            AN5        —          C1IN1-/C2IN1-  —         —        —                                 —    IOC                   Y          —

RC2         8                   7            AN6        —          C1IN2-/C2IN2-  —         —        —                                 —    IOC                   Y          —

RC3         7                   6            AN7        —          C1IN3-/C2IN3-  —         —        —                                 —    IOC                   Y          —

RC4         6                   5            ADCACT(1)  —          —              —         —        CK(1)                             —    IOC                   Y          —

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

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

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

        —                       —            —          —          C1OUT          —         PWM1OUT  DT(3)    CWG1A                                    —          —          —

OUT(2)  —                       —            —          —          C2OUT          —         PWM2OUT  CK       CWG1B                                    —          —          —

        —                       —            —          —          —              —         PWM3OUT  TX                                —               —          —          —

        —                       —            —          —          —              —         PWM4OUT  —                                 —               —          —          —

Note    1:                      Default peripheral input. Input can be moved to any other pin with the PPS Input Selection registers.

        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.

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

DS40001782C-page 6                                                                                                                      2016 Microchip Technology Inc.
                                                                                                PIC16(L)F1574/5/8/9

TABLE 4:                                    20-PIN ALLOCATION TABLE (PIC16(L)F1578/9)

I/O     20-Pin PDIP/SOIC/SSOP  20-Pin UQFN  ADC        Reference  Comparator     Timers    PWM      EUSART                            CWG   Interrupt    Pull-up  Basic

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

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

RA2     17                     14           AN2        —          —              T0CKI(1)  —        —        CWG1IN(1)                      INT(1)/IOC   Y        —

RA3         4                  1            —          —          —              —         —        —                                 —     IOC          Y        MCLR/VPP

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

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

RB4     13                     10           AN10       —          —              —         —        —                                 —     IOC          Y        —

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

RB6     11                     8            —          —          —              —         —        —                                 —     IOC          Y        —

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

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

RC1     15                     12           AN5        —          C1IN1-/C2IN1-  —         —        —                                 —     IOC          Y        —

RC2     14                     11           AN6        —          C1IN2-/C2IN2-  —         —        —                                 —     IOC          Y        —

RC3         7                  4            AN7        —          C1IN3-/C2IN3-  —         —        —                                 —     IOC          Y        —

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

RC5         5                  2            —          —          —              —         —        —                                 —     IOC          Y        —

RC6         8                  5            AN8        —          —              —         —        —                                 —     IOC          Y        —

RC7         9                  6            AN9        —          —              —         —        —                                 —     IOC          Y        —

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

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

        —                      —            —          —          C1OUT          —         PWM1OUT  DT(3)    CWG1A                          —            —        —

OUT(2)  —                      —            —          —          C2OUT          —         PWM2OUT  CK       CWG1B                          —            —        —

        —                      —            —          —          —              —         PWM3OUT  TX                                —     —            —        —

        —                      —            —          —          —              —         PWM4OUT  —                                 —     —            —        —

Note    1:                     Default peripheral input. Input can be moved to any other pin with the PPS Input Selection registers.

        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.

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

 2016 Microchip Technology Inc.                                                                                                            DS40001782C-page 7
PIC16(L)F1574/5/8/9

TABLE OF CONTENTS

1.0   Device Overview ........................................................................................................................................................................ 10

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

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

4.0   Device Configuration .................................................................................................................................................................. 55

5.0   Oscillator Module........................................................................................................................................................................ 61

6.0   Resets ........................................................................................................................................................................................ 73

7.0   Interrupts .................................................................................................................................................................................... 81

8.0   Power-Down Mode (Sleep) ........................................................................................................................................................ 94

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

10.0  Flash Program Memory Control ............................................................................................................................................... 101

11.0  I/O Ports ................................................................................................................................................................................... 117

12.0  Peripheral Pin Select (PPS) Module ........................................................................................................................................ 135

13.0  Interrupt-On-Change ................................................................................................................................................................ 141

14.0  Fixed Voltage Reference (FVR) ............................................................................................................................................... 147

15.0  Temperature Indicator Module ................................................................................................................................................. 150

16.0  Analog-to-Digital Converter (ADC) Module .............................................................................................................................. 152

17.0  5-Bit Digital-to-Analog Converter (DAC) Module ...................................................................................................................... 166

18.0  Comparator Module.................................................................................................................................................................. 169

19.0  Timer0 Module ......................................................................................................................................................................... 176

20.0  Timer1 Module with Gate Control............................................................................................................................................. 179

21.0  Timer2 Module ......................................................................................................................................................................... 189

22.0  Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ............................................................... 192

23.0  16-bit Pulse-Width Modulation (PWM) Module ........................................................................................................................ 220

24.0  Complementary Waveform Generator (CWG) Module ............................................................................................................ 246

25.0  In-Circuit Serial Programming™ (ICSP™) ............................................................................................................................... 258

26.0  Instruction Set Summary .......................................................................................................................................................... 260

27.0  Electrical Specifications............................................................................................................................................................ 274

28.0  DC and AC Characteristics Graphs and Charts ....................................................................................................................... 398

29.0  Development Support............................................................................................................................................................... 312

30.0  Packaging Information.............................................................................................................................................................. 316

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

The Microchip Website....................................................................................................................................................................... 339

Customer Change Notification Service .............................................................................................................................................. 339

Customer Support .............................................................................................................................................................................. 339

Product Identification System............................................................................................................................................................. 340

DS40001782C-page 8    2016 Microchip Technology Inc.
                                                              PIC16(L)F1574/5/8/9

                                  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 Website 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 Website; 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 website at www.microchip.com to receive the most current information on all of our products.

 2016 Microchip Technology Inc.                                                                              DS40001782C-page 9
PIC16(L)F1574/5/8/9

1.0     DEVICE OVERVIEW

The PIC16(L)F1574/5/8/9 are described within this data

sheet. The block diagram of these devices are shown in

Figure 1-1,  the  available  peripherals            are            shown          in

Table 1-1, and the pinout descriptions are shown in

Table 1-2 and Table 1-3.

TABLE 1-1:        DEVICE PERIPHERAL

                  SUMMARY

Peripheral                           PIC16(L)F1574  PIC16(L)F1575  PIC16(L)F1578  PIC16(L)F1579

Analog-to-Digital Converter (ADC)         ●         ●              ●              ●

Complementary Wave Generator              ●         ●              ●              ●

(CWG)

Digital-to-Analog Converter (DAC)         ●         ●              ●              ●

Enhanced Universal                        ●         ●              ●              ●

Synchronous/Asynchronous

Receiver/Transmitter (EUSART)

Fixed Voltage Reference (FVR)             ●         ●              ●              ●

Temperature Indicator                     ●         ●              ●              ●

Comparators

                               C1         ●         ●              ●              ●

                               C2         ●         ●              ●              ●

PWM Modules

                             PWM1         ●         ●              ●              ●

                             PWM2         ●         ●              ●              ●

                             PWM3         ●         ●              ●              ●

                             PWM4         ●         ●              ●              ●

Timers

                             Timer0       ●         ●              ●              ●

                             Timer1       ●         ●              ●              ●

                             Timer2       ●         ●              ●              ●

DS40001782C-page 10                                                                               2016 Microchip Technology Inc.
                                                                                  PIC16(L)F1574/5/8/9

1.1          Register and Bit Naming                                    1.1.2.3            Bit Fields

             Conventions                                                Bit fields are two or more adjacent bits in the same

1.1.1            REGISTER NAMES                                         register. Bit fields adhere only to the short bit naming

                                                                        convention. For example, the three Least Significant

When      there    are     multiple   instances    of     the   same    bits  of  the    COG1CON0            register    contain       the   mode

peripheral in a device, the peripheral control registers                control bits. The short name for this field is MD. There

will be depicted as the concatenation of a peripheral                   is no long bit name variant. Bit field access is only

identifier,  peripheral    instance,      and    control  identifier.   possible     in      C  programs.         The    following      example

The    control     registers  section      will  show     just     one  demonstrates a C program instruction for setting the

instance of all the register names with an ‘x’ in the place             COG1 to the Push-Pull mode:

of   the     peripheral    instance       number.  This      naming     COG1CON0bits.MD                =     0x5;

convention may also be applied to peripherals when                      Individual bits in a bit field can also be accessed with

there  is    only  one     instance   of  that   peripheral    in  the  long and short bit names. Each bit is the field name

device to maintain compatibility with other devices in                  appended with the number of the bit position within the

the family that contain more than one.                                  field. For example, the Most Significant mode bit has

1.1.2            BIT NAMES                                              the   short  bit     name      MD2   and    the      long  bit  name   is

There are two variants for bit names:                                   G1MD2.       The     following       two   examples        demonstrate

                                                                        assembly program sequences for setting the COG1 to

•   Short name: Bit function abbreviation                               Push-Pull mode:

•   Long name: Peripheral abbreviation + short name                     Example 1:

1.1.2.1            Short Bit Names                                      MOVLW     ~(1<
                                                                        ANDWF     COG1CON0,F

Short bit names are an abbreviation for the bit function.               MOVLW     1<
For example, some peripherals are enabled with the                      IORWF     COG1CON0,F

EN bit. The bit names shown in the registers are the                    Example 2:

short name variant.                                                     BSF       COG1CON0,G1MD2

Short bit names are useful when accessing bits in C                     BCF       COG1CON0,G1MD1

programs. The general format for accessing bits by the                  BSF       COG1CON0,G1MD0

short     name     is    RegisterNamebits.ShortName.               For  1.1.3          REGISTER AND BIT NAMING

example, the enable bit, EN, in the COG1CON0 regis-                                    EXCEPTIONS

ter  can     be  set   in  C  programs     with    the    instruction

COG1CON0bits.EN            =  1.                                        1.1.3.1            Status, Interrupt, and Mirror Bits

Short     names    are     generally  not  useful  in     assembly      Status, interrupt enables, interrupt flags, and mirror bits

programs because the same name may be used by                           are contained in registers that span more than one

different peripherals in different bit positions. When this             peripheral.      In  these     cases,      the  bit  name       shown  is

occurs, during the include file generation, all instances               unique so there is no prefix or short name variant.

of that short bit name are appended with an underscore

plus the name of the register in which the bit resides to               1.1.3.2            Legacy Peripherals

avoid naming contentions.

1.1.2.2            Long Bit Names                                       There are some peripherals that do not strictly adhere

                                                                        to these naming conventions. Peripherals that have

Long bit names are constructed by adding a peripheral                   existed for many years and are present in almost every

abbreviation prefix to the short name. The prefix is                    device    are    the    exceptions.        These     exceptions      were

unique to the peripheral thereby making every long bit                  necessary      to    limit  the      adverse    impact     of   the   new

name unique. The long bit name for the COG1 enable                      conventions        on   legacy       code.      Peripherals     that   do

bit is the COG1 prefix, G1, appended with the enable                    adhere to the new convention will include a table in the

bit short name, EN, resulting in the unique bit name                    registers section indicating the long name prefix for

G1EN.                                                                   each peripheral instance. Peripherals that fall into the

Long bit names are useful in both C and assembly pro-                   exception      category        will  not   have   this     table.   These

grams. For example, in C the COG1CON0 enable bit                        peripherals include, but are not limited to, the following:

can be set with the G1EN      =       1 instruction. In assembly,       •  EUSART

this bit can be set with the BSF                 COG1CON0,G1EN          •  MSSP

instruction.

 2016 Microchip Technology Inc.                                                                                        DS40001782C-page 11
PIC16(L)F1574/5/8/9

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

                                                                                                      Rev. 10-000039I

                                                                                                      9/18/2014

                                              Program

                                              Flash Memory

                                                                                        RAM

                                                                                                      PORTA

          CLKOUT     Timing                                                                           PORTB(4)

                     Generation

                                              CPU                                                     PORTC

             CLKIN   INTRC

                     Oscillator               (Note 3)

                           MCLR

                     TMR2     TMR1  TMR0  C2  C1        Temp               ADC     DAC  FVR

                                                       Indicator           10-bit

CWG1                                              PWM4                     PWM3  PWM2   PWM1  EUSART

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

      2:     See Table 1-1 for peripherals available on specific devices.

      3:     See Figure 2-1.

      4:     PIC16(L)F1578/9 only.

DS40001782C-page 12                                                                      2016 Microchip Technology    Inc.
                                                                         PIC16(L)F1574/5/8/9

TABLE 1-2:            PIC16(L)F1574/5 PINOUT DESCRIPTION

                Name                      Function     Input    Output                                 Description

                                                       Type     Type

RA0/AN0/C1IN+/DAC1OUT1/                     RA0        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

ICSPDAT                                     AN0        AN       —        ADC Channel input.

                                            C1IN+      AN       —        Comparator positive input.

                                  DAC1OUT1             —        AN       Digital-to-Analog Converter output.

                                          ICSPDAT      ST       CMOS     ICSP™ Data I/O.

RA1/AN1/VREF+/C1IN0-/C2IN0-/                RA1        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

ICSPCLK                                     AN1        AN       —        ADC Channel input.

                                            VREF+      AN       —        Voltage Reference input.

                                            C1IN0-     AN       —        Comparator negative input.

                                            C2IN0-     AN       —        Comparator negative input.

                                          ICSPCLK      ST       —        ICSP Programming Clock.

RA2/AN2/T0CKI(1)/CWG1IN(1)/                 RA2        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.
INT(1)
                                            AN2        AN       —        ADC Channel input.

                                            T0CKI      TTL/ST   —        Timer0 clock input.

                                          CWG1IN       TTL/ST   —        CWG complementary input.

                                            INT        TTL/ST   —        External interrupt.

RA3/VPP/MCLR                                RA3        TTL/ST   —        General purpose input with IOC and         WPU.

                                            VPP        HV       —        Programming voltage.

                                            MCLR       ST       —        Master Clear with internal pull-up.

RA4/AN3/T1G(1)/CLKOUT                       RA4        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

                                            AN3        AN       —        ADC Channel input.

                                            T1G        TTL/ST   —        Timer1 Gate input.

                                          CLKOUT       CMOS/OD  CMOS     FOSC/4 output.

RA5/CLKIN/T1CKI(1)                          RA5        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

                                            CLKIN      CMOS     —        External clock input (EC mode).

                                            T1CKI      TTL/ST   —        Timer1 clock input.

RC0/AN4/C2IN+                               RC0        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN4        AN       —        ADC Channel input.

                                            C2IN+      AN       —        Comparator positive input.

RC1/AN5/C1IN1-/C2IN1-                       RC1        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN5        AN       —        ADC Channel input.

                                            C1IN1-     AN       —        Comparator negative input.

                                            C2IN1-     AN       —        Comparator negative input.

RC2/AN6/C1IN2-/C2IN2-                       RC2        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN6        AN       —        ADC Channel input.

                                            C1IN2-     AN       —        Comparator negative input.

                                            C2IN2-     AN       —        Comparator negative input.

RC3/AN7/C1IN3-/C2IN3-                       RC3        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN7        AN       —        ADC Channel input.

                                            C1IN3-     AN       —        Comparator negative input.

                                            C2IN3-     AN       —        Comparator negative input.

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.

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

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

 2016 Microchip Technology Inc.                                                                                   DS40001782C-page 13
PIC16(L)F1574/5/8/9

TABLE 1-2:            PIC16(L)F1574/5 PINOUT DESCRIPTION (CONTINUED)

                Name                      Function     Input    Output                                 Description

                                                       Type     Type

RC4/ADCACT(1)/CK(1)                         RC4        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                          ADCACT       TTL/ST   —        ADC Auto-conversion Trigger input.

                                            CK         ST       CMOS     USART synchronous clock.

RC5/RX(1,3)                                 RC5        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            RX         ST       —        USART asynchronous input.

OUT(2)                                      C1OUT      —        CMOS     Comparator output.

                                            C2OUT      —        CMOS     Comparator output.

                                  PWM1OUT              —        CMOS     PWM1 output.

                                  PWM2OUT              —        CMOS     PWM2 output.

                                  PWM3OUT              —        CMOS     PWM3 output.

                                  PWM4OUT              —        CMOS     PWM4 output.

                                            CWG1A      —        CMOS     Complementary Output Generator Output A.

                                            CWG1B      —        CMOS     Complementary Output Generator Output B.

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

                                            DT(3)      —        CMOS     USART synchronous data output.

VDD                                         VDD        Power    —        Positive supply.

VSS                                         VSS        Power    —        Ground reference.

Legend:     AN   =  Analog input or output  CMOS    =  CMOS compatible input or output         OD   =  Open-Drain
                                                                                               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.

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

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

DS40001782C-page 14                                                                                     2016 Microchip Technology Inc.
                                                                         PIC16(L)F1574/5/8/9

TABLE 1-3:            PIC16(L)F1578/9 PINOUT DESCRIPTION

                Name                      Function     Input    Output                                 Description

                                                       Type     Type

RA0/AN0/C1IN+/DAC1OUT/                      RA0        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

ICSPDAT                                     AN0        AN       —        ADC Channel input.

                                            C1IN+      AN       —        Comparator 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/OD  General purpose input with IOC and         WPU.

ICSPCLK                                     AN1        AN       —        ADC Channel input.

                                            VREF+      AN       —        Voltage Reference input.

                                            C1IN0-     AN       —        Comparator negative input.

                                            C2IN0-     AN       —        Comparator negative input.

                                          ICSPCLK      ST       —        ICSP Programming Clock.

RA2/AN2/T0CKI(1)/CWG1IN(1)/                 RA2        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.
INT(1)
                                            AN2        AN       —        ADC Channel input.

                                            T0CKI      TTL/ST   —        Timer0 clock input.

                                          CWG1IN       TTL/ST   —        CWG complementary input.

                                            INT        TTL/ST   —        External interrupt.

RA3/VPP/MCLR                                RA3        TTL/ST   —        General purpose input with IOC and         WPU.

                                            VPP        HV       —        Programming voltage.

                                            MCLR       ST       —        Master Clear with internal pull-up.

RA4/AN3/T1G(1)/CLKOUT                       RA4        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

                                            AN3        AN       —        ADC Channel input.

                                            T1G        TTL/ST   —        Timer1 Gate input.

                                          CLKOUT       —        CMOS     FOSC/4 output.

RA5/CLKIN/T1CKI(1)                          RA5        TTL/ST   CMOS/OD  General purpose input with IOC and         WPU.

                                            CLKIN      CMOS     —        External clock input (EC mode).

                                            T1CKI      TTL/ST   —        Timer1 clock input.

RB4/AN10                                    RB4        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN10       AN       —        ADC Channel input.

RB5/AN11/RX(1)                              RB5        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN11       AN       —        ADC Channel input.

                                            RX         ST       —        USART asynchronous input.

RB6                                         RB6        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

RB7/CK                                      RB7        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            CK         ST       CMOS     USART synchronous clock.

RC0/AN4/C2IN+                               RC0        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN4        AN       —        ADC Channel input.

                                            C2IN+      AN       —        Comparator positive input.

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.

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

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

 2016 Microchip Technology Inc.                                                                                    DS40001782C-page 15
PIC16(L)F1574/5/8/9

TABLE 1-3:            PIC16(L)F1578/9 PINOUT DESCRIPTION (CONTINUED)

                Name                      Function     Input    Output                                 Description

                                                       Type     Type

RC1/AN5/C1IN1-/C2IN1-                       RC1        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN5        AN       —        ADC Channel input.

                                            C1IN1-     AN       —        Comparator negative input.

                                            C2IN1-     AN       —        Comparator negative input.

RC2/AN6/C1IN2-/C2IN2-                       RC2        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN6        AN       —        ADC Channel input.

                                            C1IN2-     AN       —        Comparator negative input.

                                            C2IN2-     AN       —        Comparator negative input.

RC3/AN7/C1IN3-/C2IN3-                       RC3        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                            AN7        AN       —        ADC Channel input.

                                            C1IN3-     AN       —        Comparator negative input.

                                            C2IN3-     AN       —        Comparator negative input.

RC4/ADCACT(1)                               RC4        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

                                          ADCACT       TTL/ST   —        ADC Auto-conversion Trigger input.

RC5                                         RC5        TTL/ST   CMOS/OD  General purpose input with IOC and WPU.

OUT(2)                                      C1OUT      —        CMOS     Comparator output.

                                            C2OUT      —        CMOS     Comparator output.

                                  PWM1OUT              —        CMOS     PWM1 output.

                                  PWM2OUT              —        CMOS     PWM2 output.

                                  PWM3OUT              —        CMOS     PWM3 output.

                                  PWM4OUT              —        CMOS     PWM4 output.

                                            CWG1A      —        CMOS     Complementary Output Generator Output A.

                                            CWG1B      —        CMOS     Complementary Output Generator Output B.

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

                                            DT(3)      —        CMOS     USART synchronous data output.

VDD                                         VDD        Power    —        Positive supply.

VSS                                         VSS        Power    —        Ground reference.

Legend:     AN   =  Analog input or output  CMOS    =  CMOS compatible input or output         OD   =  Open-Drain
                                                                                               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.

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

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

DS40001782C-page 16                                                                                     2016 Microchip Technology Inc.
                                                                                            PIC16(L)F1574/5/8/9

2.0         ENHANCED MID-RANGE CPU                                                  •  Automatic Interrupt Context Saving

This family of devices contain an enhanced mid-range                                •  16-level Stack with Overflow and Underflow

8-bit CPU core. The CPU has 49 instructions. Interrupt                              •  File Select Registers

capability  includes    automatic        context      saving.     The               •  Instruction Set

hardware stack is 16 levels deep and has Overflow and

Underflow       Reset   capability.  Direct,          Indirect,   and

Relative    addressing  modes        are  available.         Two  File

Select  Registers      (FSRs)  provide    the       ability  to   read

program and data memory.

FIGURE 2-1:               CORE BLOCK DIAGRAM

                                                                                                                            Rev. 10-000055A

                                                                                                                            7/30/2013

            15                       Configuration

                                                             15                             Data Bus              8

                                                                  Program Counter

                MUX                       Flash

                                          Program

                                          Memory                  16-Level Stack

                                                                        (15-bit)                     RAM

                        Program           14

                          Bus                                     Program Memory                    12            RAM Addr

                                                                        Read (PMR)

                                     Instruction Reg                                             Addr MUX

                                                                                                        Indirect

                                                      Direct      Addr  7                        12     Addr

                                                                                            5                  12

                                                                                       BSR  Reg

                   15                                                                                     FSR0 Reg

                                     15                                                     FSR1 Reg

                                                                                                          STATUS Reg

                                                             8

                                                                        Power-up                 3                MUX

                                         Instruction                    Timer

                                     Decode and                         Power-on

                                          Control                       Reset                           ALU

                                                                  Watchdog             8

                   CLKIN                  Timing                        Timer

                CLKOUT                   Generation               Brown-out

                                                                        Reset                           W Reg

                                          Internal

                                          Oscillator              VDD          VSS

                                          Block

 2016 Microchip Technology Inc.                                                                                            DS40001782C-page 17
PIC16(L)F1574/5/8/9

2.1       Automatic Interrupt Context

          Saving

During    interrupts,  certain  registers  are  automatically

saved in shadow registers and restored when returning

from the interrupt. This saves stack space and user

code. See Section 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 Under-

flow will set the appropriate bit (STKOVF or STKUNF)

in the PCON register, and if enabled, will cause a soft-

ware Reset. See section Section 3.5 “Stack” for more

details.

2.3       File Select Registers

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

FSRs can access all file registers and program mem-

ory, 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 mem-

ory can now also be addressed linearly, providing the

ability to access contiguous data larger than 80 bytes.

There are also new instructions to support the FSRs.

See  Section   3.6 “Indirect      Addressing”   for   more

details.

2.4       Instruction Set

There are 49 instructions for the enhanced mid-range

CPU to support the features of the CPU. See Section

26.0 “Instruction Set Summary” for more details.

DS40001782C-page 18                                             2016 Microchip Technology Inc.
                                                                PIC16(L)F1574/5/8/9

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.   Accessing               a  location      above  these

                                                       boundaries     will  cause          a     wrap-around   within  the

   -  User ID                                          implemented memory space. The Reset vector is at

   -  Flash Program Memory                             0000h    and   the   interrupt         vector  is   at  0004h   (See

•  Data Memory                                         Figure 3-1).

   -  Core Registers                                   3.2      High-Endurance Flash

   -  Special Function Registers

   -  General Purpose RAM                              This device has a 128-byte section of high-endurance

   -  Common RAM                                       Program Flash Memory (PFM) in lieu of data EEPROM.

The following features are associated with access and  This area is especially well suited for nonvolatile data

control of program memory and data memory:             storage that is expected to be updated frequently over

                                                       the life of the end product. See Section 10.2 “Flash

•  PCL and PCLATH                                      Program Memory Overview” for more information on

•  Stack                                               writing  data  to    PFM.           See   Section   3.3.2 “Special

•  Indirect Addressing                                 Function Register” for more information about using

                                                       the SFR registers to read byte data stored in PFM.

TABLE 3-1:             DEVICE SIZES AND ADDRESSES

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

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

   PIC16(L)F1575/9                8,192                     1FFFh                                1F80h-1FFFh

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

 2016 Microchip Technology Inc.                                                                 DS40001782C-page 19
PIC16(L)F1574/5/8/9

FIGURE 3-1:          PROGRAM MEMORY MAP                   FIGURE 3-2:         PROGRAM MEMORY MAP

                     AND STACK FOR                                            AND STACK FOR

                     PIC16(L)F1574/8                                          PIC16(L)F1575/9

                                         Rev. 10-000040A                                       Rev. 10-000040B

                                         7/30/2013                                             7/30/2013

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

CALL,        CALLW             15                         CALL,        CALLW            15

RETURN,      RETLW                                        RETURN,      RETLW

Interrupt, RETFIE                                         Interrupt, RETFIE

                     Stack Level 0                                            Stack Level 0

                     Stack Level 1                                            Stack Level 1

                     Stack Level 15                                          Stack Level 15

                     Reset Vector        0000h                                Reset Vector     0000h

                     Interrupt Vector    0004h                         Interrupt Vector      0004h

                                         0005h                                               0005h

On-chip              Page 0                                                   Page 0

Program                                  07FFh                                               07FFh

Memory                                   0800h                                                 0800h

                     Page 1                               On-chip             Page 1

                                         0FFFh            Program                            0FFFh

                     Rollover to Page 0  1000h            Memory                               1000h

                                                                              Page 2

                                                                                             17FFh

                                                                                             1800h

                                                                              Page 3

                                                                                             1FFFh

                                                                       Rollover to Page 0      2000h

                     Rollover to Page 1  7FFFh

                                                                       Rollover to Page 3    7FFFh

DS40001782C-page 20                                                            2016 Microchip Technology Inc.
                                                                          PIC16(L)F1574/5/8/9

3.2.1       READING PROGRAM MEMORY AS                              3.2.1.2      Indirect Read with FSR

            DATA                                                   The program memory can be accessed as data by

There  are  two  methods         of  accessing    constants  in    setting bit 7 of the FSRxH register and reading the

program memory. The first method is to use tables of               matching INDFx register. The MOVIW instruction will

RETLW instructions. The second method is to set an                 place the lower eight bits of the addressed word in the

FSR to point to the program memory.                                W register. Writes to the program memory cannot be

                                                                   performed    via  the  INDF   registers.      Instructions  that

3.2.1.1         RETLW Instruction                                  access the program memory via the FSR require one

The RETLW instruction can be used to provide access                extra  instruction     cycle  to  complete.      Example 3-2

to tables of constants. The recommended way to create              demonstrates accessing the program memory via an

such a table is shown in Example 3-1.                              FSR.

                                                                   The HIGH operator will set bit<7> if a label points to a

EXAMPLE 3-1:             RETLW INSTRUCTION                         location in program memory.

constants                                                          EXAMPLE 3-2:              ACCESSING PROGRAM

     BRW                         ;Add      Index  in  W  to

                                 ;program  counter       to                                  MEMORY VIA FSR

                                 ;select   data                    constants

     RETLW     DATA0             ;Index0   data                    DW           DATA0                ;First   constant

     RETLW     DATA1             ;Index1   data                    DW           DATA1                ;Second     constant

     RETLW     DATA2                                               DW           DATA2

     RETLW     DATA3                                               DW           DATA3

                                                                   my_function

                                                                   ;…     LOTS  OF    CODE…

my_function                                                        MOVLW        DATA_INDEX

     ;…   LOTS  OF    CODE…                                        ADDLW        LOW   constants

     MOVLW            DATA_INDEX                                   MOVWF        FSR1L

     call   constants                                              MOVLW        HIGH   constants;MSb         is  set

     ;…   THE   CONSTANT     IS  IN  W                                                               automatically

The         instruction  makes       this  type   of  table  very  MOVWF        FSR1H

     BRW                                                           BTFSC        STATUS,C             ;carry   from    ADDLW?

simple to implement. If your code must remain portable             INCF         FSR1H,f              ;yes

with previous generations of microcontrollers, then the            MOVIW        0[FSR1]

BRW instruction is not available so the older table read           ;THE   PROGRAM     MEMORY     IS  IN  W

method must be used.

 2016 Microchip Technology Inc.                                                                           DS40001782C-page 21
PIC16(L)F1574/5/8/9

3.3        Data Memory Organization                                 3.3.1           CORE REGISTERS

The data memory is partitioned in 32 memory banks                   The core registers contain the registers that directly

with  128  bytes      in  a   bank.  Each      bank  consists   of  affect the basic operation. The core registers occupy

(Figure 3-3):                                                       the  first  12   addresses  of  every  data  memory  bank

•  12 core registers                                                (addresses      x00h/x08h   through    x0Bh/x8Bh).   These

•  20 Special Function Registers (SFR)                              registers   are  listed  below  in  Table 3-2.  For  detailed

                                                                    information, see Table 3-14.

•  Up to 80 bytes of General Purpose RAM (GPR)

•  16 bytes of common RAM                                           TABLE 3-2:       CORE REGISTERS

The active bank is selected by writing the bank number

into the Bank Select Register (BSR). Unimplemented                                   Addresses             BANKx

memory     will   read    as  ‘0’.  All  data  memory      can  be

accessed either directly (via instructions that use the                             x00h or x80h           INDF0

file  registers)  or    indirectly   via  the  two   File  Select                   x01h or x81h           INDF1

Registers        (FSR).       See    Section   3.6 “Indirect                        x02h or x82h           PCL

Addressing” for more information.                                                   x03h or x83h         STATUS

Data memory uses a 12-bit address. The upper five bits                              x04h or x84h           FSR0L

of the address define the Bank address and the lower                                x05h or x85h           FSR0H

seven bits select the registers/RAM in that bank.                                   x06h or x86h           FSR1L

                                                                                    x07h or x87h           FSR1H

                                                                                    x08h or x88h           BSR

                                                                                    x09h or x89h           WREG

                                                                                    x0Ah or x8Ah         PCLATH

                                                                                    x0Bh or x8Bh           INTCON

DS40001782C-page 22                                                                              2016 Microchip Technology Inc.
                                                                                   PIC16(L)F1574/5/8/9

3.3.1.1              STATUS Register                                    For example, CLRF        STATUS will clear the upper three

The STATUS register, shown in Register 3-1, contains:                   bits and set the Z bit. This leaves the STATUS register

•  the arithmetic status of the ALU                                     as ‘000u       u1uu’ (where u = unchanged).

•  the Reset status                                                     It is recommended, therefore, that only BCF,             BSF,

                                                                        SWAPF and MOVWF instructions are used to alter the

The STATUS register can be the destination for any                      STATUS register, because these instructions do not

instruction,     like  any  other   register.  If  the  STATUS          affect     any  Status   bits.  For   other  instructions  not

register is the destination for an instruction that affects             affecting       any   Status    bits  (Refer  to  Section

the Z, DC or C bits, then the write to these three bits is              26.0 “Instruction Set Summary”).

disabled. These bits are set or cleared according to the                Note 1:         The C and DC bits operate as Borrow

device logic. Furthermore, the TO and PD bits are not                                   and Digit Borrow out bits, respectively, in

writable. Therefore, the result of an instruction with the                              subtraction.

STATUS register as destination may be different than

intended.

REGISTER 3-1:               STATUS: STATUS REGISTER

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

           —                —                  —          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. For rotate (RRF, RLF) instructions, this bit is loaded with either the high-order or low-order

                 bit of the source register.

 2016 Microchip Technology Inc.                                                                              DS40001782C-page 23
PIC16(L)F1574/5/8/9

3.3.2          SPECIAL FUNCTION REGISTER                       FIGURE 3-3:          BANKED MEMORY

The Special Function Registers are registers used by                                PARTITIONING

the  application  to  control  the  desired    operation   of                                            Rev. 10-000041A

peripheral functions in the device. The Special Function                                                        7/30/2013

Registers occupy the 20 bytes after the core registers of

every    data   memory   bank  (addresses      x0Ch/x8Ch       7-bit  Bank  Offset  Memory Region

through x1Fh/x9Fh). The registers associated with the                       00h

operation of the peripherals are described in the appro-                            Core Registers

priate peripheral chapter of this data sheet.                                       (12 bytes)

3.3.3          GENERAL PURPOSE RAM                                          0Bh

                                                                            0Ch

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

bank. The Special Function Registers occupy the 20                                  (20 bytes maximum)

bytes after the core registers of every data memory                         1Fh

bank (addresses x0Ch/x8Ch through x1Fh/x9Fh).                               20h

3.3.3.1         Linear Access to GPR

The    general  purpose  RAM   can  be      accessed  in   a

non-banked method via the FSRs. This can simplify

access   to    large  memory   structures.   See  Section

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

3.3.4          COMMON RAM                                                           (80 bytes maximum)

There are 16 bytes of common RAM accessible from all

banks.

3.3.5          DEVICE MEMORY MAPS

The memory maps are as shown in Table 3-3 through

Table 3-13.                                                                 6Fh

                                                                            70h

                                                                                    Common RAM

                                                                                    (16 bytes)

                                                                            7Fh

DS40001782C-page 24                                                                  2016 Microchip Technology            Inc.
 2016 Microchip Technology Inc.  TABLE 3-3:             PIC16(L)F1574 MEMORY          MAP, BANKS 0-7

                                            BANK0                BANK1                 BANK2                 BANK3                 BANK4                 BANK5                 BANK6                 BANK7

                                  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  —               291h  —               311h  —               391h  IOCAP

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

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

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

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

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

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

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

                                  019h      T1GCON         099h  OSCCON          119h  DACCON1         199h  RCREG           219h  —               299h  —               319h  —               399h  IOCCF

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

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

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

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

                                  01Eh      —              09Eh  ADCON1          11Eh  —               19Eh  TXSTA           21Eh  —               29Eh  —               31Eh  —               39Eh  —

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

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

                                                                                                                                                                               Purpose

                                            General              General               General               General               General               General               Register                              PIC16(L)F1574/5/8/9

                                            Purpose              Purpose               Purpose               Purpose               Purpose               Purpose         32Fh  16 Bytes              Unimplemented

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

                                            80 Bytes             80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              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

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

DS40001782C-page 25               Legend:     = Unimplemented data memory locations, read as ‘0’.

                                  Note  1:  Unimplemented on PIC16LF1574.
DS40001782C-page 26               TABLE 3-4:             PIC16(L)F1575 MEMORY          MAP, BANKS 0-7                                                                                                                PIC16(L)F1574/5/8/9

                                            BANK0                BANK1                 BANK2                 BANK3                 BANK4                 BANK5                 BANK6                 BANK7

                                  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  —               291h  —               311h  —               391h  IOCAP

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

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

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

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

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

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

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

                                  019h      T1GCON         099h  OSCCON          119h  DACCON1         199h  RCREG           219h  —               299h  —               319h  —               399h  IOCCF

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

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

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

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

                                  01Eh      —              09Eh  ADCON1          11Eh  —               19Eh  TXSTA           21Eh  —               29Eh  —               31Eh  —               39Eh  —

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

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

                                            General              General               General               General               General               General               General               General

                                            Purpose              Purpose               Purpose               Purpose               Purpose               Purpose               Purpose               Purpose

                                            Register             Register              Register              Register              Register              Register              Register              Register

                                            80 Bytes             80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes

                                  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

 2016 Microchip Technology Inc.  07Fh                     0FFh                  17Fh                  1FFh                  27Fh                  2FFh                  37Fh                  3FFh

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

                                  Note  1:  Unimplemented on PIC16LF1575.
 2016 Microchip Technology Inc.  TABLE 3-5:             PIC16(L)F1578 MEMORY          MAP, BANKS 0-7

                                            BANK0                BANK1                 BANK2                 BANK3                 BANK4                 BANK5                 BANK6                 BANK7

                                  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  —               291h  —               311h  —               391h  IOCAP

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

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

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

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

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

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

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

                                  019h      T1GCON         099h  OSCCON          119h  DACCON1         199h  RCREG           219h  —               299h  —               319h  —               399h  IOCCF

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

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

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

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

                                  01Eh      —              09Eh  ADCON1          11Eh  —               19Eh  TXSTA           21Eh  —               29Eh  —               31Eh  —               39Eh  —

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

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

                                                                                                                                                                               Purpose

                                            General              General               General               General               General               General               Register                              PIC16(L)F1574/5/8/9

                                            Purpose              Purpose               Purpose               Purpose               Purpose               Purpose         32Fh  16 Bytes              Unimplemented

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

                                            80 Bytes             80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              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

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

DS40001782C-page 27               Legend:     = Unimplemented data memory locations, read as ‘0’.

                                  Note  1:  Unimplemented on PIC16LF1578.
 2016 Microchip Technology Inc.  TABLE 3-6:             PIC16(L)F1579 MEMORY          MAP, BANKS 0-7

                                            BANK0                BANK1                 BANK2                 BANK3                 BANK4                 BANK5                 BANK6                 BANK7

                                  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  —               291h  —               311h  —               391h  IOCAP

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

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

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

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

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

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

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

                                  019h      T1GCON         099h  OSCCON          119h  DACCON1         199h  RCREG           219h  —               299h  —               319h  —               399h  IOCCF

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

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

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

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

                                  01Eh      —              09Eh  ADCON1          11Eh  —               19Eh  TXSTA           21Eh  —               29Eh  —               31Eh  —               39Eh  —

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

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

                                            General              General               General               General               General               General               General               General         PIC16(L)F1574/5/8/9

                                            Purpose              Purpose               Purpose               Purpose               Purpose               Purpose               Purpose               Purpose

                                            Register             Register              Register              Register              Register              Register              Register              Register

                                            80 Bytes             80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes              80 Bytes

                                  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

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

DS40001782C-page 28               Legend:     = Unimplemented data memory locations, read as ‘0’.

                                  Note  1:  Unimplemented on PIC16LF1579.
DS40001782C-page 29               TABLE 3-7:            PIC16(L)F1574/8 MEMORY MAP, BANKS 8-15                                                                                                                       PIC16(L)F1574/5/8/9

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

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

                                  40Bh     (Table 3-2)     48Bh  (Table 3-2)     50Bh  (Table 3-2)     58Bh  (Table 3-2)     60Bh  (Table 3-2)     68Bh  (Table 3-2)     70Bh  (Table 3-2)     78Bh  (Table 3-2)

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

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

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

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

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

                                  411h        —            491h  —               511h             —    591h  —               611h  —               691h  CWG1DBR         711h  —               791h  —

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

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

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

                                  415h        —            495h  —               515h             —    595h  —               615h  —               695h  CWG1CON2        715h  —               795h  —

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

                                  417h        —            497h  —               517h             —    597h  —               617h  —               697h  —               717h  —               797h  —

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

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

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

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

                                  41Ch        —            49Ch  —               51Ch             —    59Ch  —               61Ch  —               69Ch  —               71Ch  —               79Ch  —

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

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

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

                                  420h                     4A0h                  520h                  5A0h                  620h                  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

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

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

 2016 Microchip Technology Inc.  Legend:     = Unimplemented data memory locations, read as ‘0’
 2016 Microchip Technology Inc.  TABLE 3-8:            PIC16(L)F1575/9 MEMORY MAP, BANKS 8-15

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

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

                                  40Bh     (Table 3-2)     48Bh  (Table 3-2)     50Bh  (Table 3-2)     58Bh  (Table 3-2)     60Bh  (Table 3-2)     68Bh  (Table 3-2)     70Bh  (Table 3-2)     78Bh  (Table 3-2)

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

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

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

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

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

                                  411h        —            491h  —               511h             —    591h  —               611h  —               691h  CWG1DBR         711h  —               791h  —

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

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

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

                                  415h        —            495h  —               515h             —    595h  —               615h  —               695h  CWG1CON2        715h  —               795h  —

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

                                  417h        —            497h  —               517h             —    597h  —               617h  —               697h  —               717h  —               797h  —

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

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

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

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

                                  41Ch        —            49Ch  —               51Ch             —    59Ch  —               61Ch  —               69Ch  —               71Ch  —               79Ch  —

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

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

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

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

                                                                                                                                   Purpose

                                           General               General               General               General               Register

                                           Purpose               Purpose               Purpose               Purpose         63Fh  32 Bytes              Unimplemented         Unimplemented         Unimplemented   PIC16(L)F1574/5/8/9

                                           Register              Register              Register              Register        640h                        Read as ‘0’           Read as ‘0’           Read as ‘0’

                                           80 Bytes              80 Bytes              80 Bytes              80 Bytes              Unimplemented

                                                                                                                                   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

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

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

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

DS40001782C-page 30
DS40001782C-page 31               TABLE 3-9:            PIC16(L)F1574/5/8/9 MEMORY MAP,                BANKS 16-23                                                                                                   PIC16(L)F1574/5/8/9

                                           BANK16                BANK17                BANK18                BANK19                BANK20                BANK21                BANK22                BANK23

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

                                  80Bh     (Table 3-2)     88Bh  (Table 3-2)     90Bh  (Table 3-2)     98Bh  (Table 3-2)     A0Bh  (Table 3-2)     A8Bh  (Table 3-2)     B0Bh  (Table 3-2)     B8Bh  (Table 3-2)

                                  80Ch     —               88Ch  —               90Ch  —               98Ch  —               A0Ch  —               A8Ch  —               B0Ch  —               B8Ch  —

                                  80Dh     —               88Dh  —               90Dh  —               98Dh  —               A0Dh  —               A8Dh  —               B0Dh  —               B8Dh  —

                                  80Eh     —               88Eh  —               90Eh  —               98Eh  —               A0Eh  —               A8Eh  —               B0Eh  —               B8Eh  —

                                  80Fh     —               88Fh  —               90Fh  —               98Fh  —               A0Fh  —               A8Fh  —               B0Fh  —               B8Fh  —

                                  810h     —               890h  —               910h  —               990h  —               A10h  —               A90h  —               B10h  —               B90h  —

                                  811h     —               891h  —               911h  —               991h  —               A11h  —               A91h  —               B11h  —               B91h  —

                                  812h     —               892h  —               912h  —               992h  —               A12h  —               A92h  —               B12h  —               B92h  —

                                  813h     —               893h  —               913h  —               993h  —               A13h  —               A93h  —               B13h  —               B93h  —

                                  814h     —               894h  —               914h  —               994h  —               A14h  —               A94h  —               B14h  —               B94h  —

                                  815h     —               895h  —               915h  —               995h  —               A15h  —               A95h  —               B15h  —               B95h  —

                                  816h     —               896h  —               916h  —               996h  —               A16h  —               A96h  —               B16h  —               B96h  —

                                  817h     —               897h  —               917h  —               997h  —               A17h  —               A97h  —               B17h  —               B97h  —

                                  818h     —               898h  —               918h  —               998h  —               A18h  —               A98h  —               B18h  —               B98h  —

                                  819h     —               899h  —               919h  —               999h  —               A19h  —               A99h  —               B19h  —               B99h  —

                                  81Ah     —               89Ah  —               91Ah  —               99Ah  —               A1Ah  —               A9Ah  —               B1Ah  —               B9Ah  —

                                  81Bh     —               89Bh  —               91Bh  —               99Bh  —               A1Bh  —               A9Bh  —               B1Bh  —               B9Bh  —

                                  81Ch     —               89Ch  —               91Ch  —               99Ch  —               A1Ch  —               A9Ch  —               B1Ch  —               B9Ch  —

                                  81Dh     —               89Dh  —               91Dh  —               99Dh  —               A1Dh  —               A9Dh  —               B1Dh  —               B9Dh  —

                                  81Eh     —               89Eh  —               91Eh  —               99Eh  —               A1Eh  —               A9Eh  —               B1Eh  —               B9Eh  —

                                  81Fh     —               89Fh  —               91Fh  —               99Fh  —               A1Fh  —               A9Fh  —               B1Fh  —               B9Fh  —

                                  820h                     8A0h                  920h                  9A0h                  A20h                  AA0h                  B20h                  BA0h

                                           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

 2016 Microchip Technology Inc.  Legend:     = Unimplemented data memory locations, read as ‘0’.
 2016 Microchip Technology Inc.  TABLE 3-10:           PIC16(L)F1574/5/8/9 MEMORY MAP,                BANKS 24-31

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

                                  C00h     Core Registers  C80h  Core Registers  D00h  Core Registers  D80h  Core Registers  E00h  Core Registers  E80h  Core Registers  F00h  Core Registers  F80h  Core Registers

                                  C0Bh     (Table 3-2)     C8Bh  (Table 3-2)     D0Bh  (Table 3-2)     D8Bh  (Table 3-2)     E0Bh  (Table 3-2)     E8Bh  (Table 3-2)     F0Bh  (Table 3-2)     F8Bh  (Table 3-2)

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

                                  C0Dh     —               C8Dh  —               D0Dh          —                                                                         F0Dh  —

                                  C0Eh     —               C8Eh  —               D0Eh          —                                                                         F0Eh  —

                                  C0Fh     —               C8Fh  —               D0Fh          —                                                                         F0Fh  —

                                  C10h     —               C90h  —               D10h          —                                                                         F10h  —

                                  C11h     —               C91h  —               D11h          —                                                                         F11h  —

                                  C12h     —               C92h  —               D12h          —                                                                         F12h  —

                                  C13h     —               C93h  —               D13h          —                                                                         F13h  —

                                  C14h     —               C94h  —               D14h          —                                                                         F14h  —

                                  C15h     —               C95h  —               D15h          —                                                                         F15h  —

                                  C16h     —               C96h  —               D16h          —                                                                         F16h  —

                                  C17h     —               C97h  —               D17h          —                                                                         F17h  —

                                  C18h     —               C98h  —               D18h          —             See Table 3-11        See Table 3-12        See Table 3-12  F18h  —                     See Table 3-13

                                  C19h     —               C99h  —               D19h          —                                                                         F19h  —

                                  C1Ah     —               C9Ah  —               D1Ah          —                                                                         F1Ah  —

                                  C1Bh     —               C9Bh  —               D1Bh          —                                                                         F1Bh  —

                                  C1Ch     —               C9Ch  —               D1Ch          —                                                                         F1Ch  —

                                  C1Dh     —               C9Dh  —               D1Dh          —                                                                         F1Dh  —

                                  C1Eh     —               C9Eh  —               D1Eh          —                                                                         F1Eh  —

                                  C1Fh     —               C9Fh  —               D1Fh          —                                                                         F1Fh  —

                                  C20h                     CA0h                  D20h                                                                                    F20h

                                           Unimplemented         Unimplemented         Unimplemented                                                                           Unimplemented

                                           Read as ‘0’           Read as ‘0’           Read as ‘0’                                                                             Read as ‘0’                           PIC16(L)F1574/5/8/9

                                  C6Fh                     CEFh                  D6Fh                  DEFh                  E6Fh                  EEFh                  F6Fh                  FEFh

                                  C70h                     CF0h                  D70h                  DF0h                  E70h                  EF0h                  F70h                  FF0h

                                           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’

DS40001782C-page 32
                                                                    PIC16(L)F1574/5/8/9

TABLE    3-11:  PIC16(L)F1574/5/8/9  MEMORY                   TABLE 3-12:    PIC16(L)F1574/5/8/9 MEMORY

                MAP, BANK 27                                                 MAP, BANK 28-29

                Bank 27

         D8Ch   —                                                            Bank 28            Bank 29

         D8Dh   —                                                   E0Ch     —            E8Ch                  —

         D8Eh   PWMEN                                               E0Dh     —            E8Dh                  —

         D8Fh   PWMLD                                               E0Eh     —            E8Eh                  —

         D90h   PWMOUT                                              E0Fh     PPSLOCK      E8Fh                  —

         D91h   PWM1PHL                                             E10h     INTPPS       E90h  RA0PPS

         D92h   PWM1PHH                                             E11h     T0CKIPPS     E91h  RA1PPS

         D93h   PWM1DCL                                             E12h     T1CKIPPS     E92h  RA2PPS

         D94h   PWM1DCH                                             E13h     T1GPPS       E93h                  —

         D95h   PWM1PRL                                             E14h     CWG1PPS      E94h  RA4PPS

         D96h   PWM1PRH                                             E15h     RXPPS        E95h  RA5PPS

         D97h   PWM1OFL                                             E16h     CKPPS        E96h                  —

         D98h   PWM1OFH                                             E17h     ADCACTPPS    E97h                  —

         D99h   PWM1TMRL                                            E18h     —            E98h                  —

         D9Ah   PWM1TMRH                                            E19h     —            E99h                  —

         D9Bh   PWM1CON                                             E1Ah                  E9Ah

         D9Ch   PWM1INTE                                                     —                                  —

         D9Dh   PWM1INTF                                            E1Bh     —            E9Bh                  —

         D9Eh   PWM1CLKCON                                          E1Ch     —            E9Ch  RB4PPS(1)

         D9Fh   PWM1LDCON                                           E1Dh     —            E9Dh  RB5PPS(1)

         DA0h   PWM1OFCON                                           E1Eh     —            E9Eh  RB6PPS(1)

         DA1h   PWM2PHL                                             E1Fh     —            E9Fh  RB7PPS(1)

         DA2h   PWM2PHH                                             E20h     —            EA0h  RC0PPS

         DA3h   PWM2DCL                                             E21h     —            EA1h  RC1PPS

         DA4h   PWM2DCH

         DA5h   PWM2PRL                                             E22h     —            EA2h  RC2PPS

         DA6h   PWM2PRH                                             E23h     —            EA3h  RC3PPS

         DA7h   PWM2OFL                                             E24h     —            EA4h  RC4PPS

         DA8h   PWM2OFH                                             E25h     —            EA5h  RC5PPS

         DA9h   PWM2TMRL                                            E26h     —            EA6h  RC6PPS(1)

         DAAh   PWM2TMRH                                            E27h     —            EA7h  RC7PPS(1)

         DABh   PWM2CON                                             E28h     —            EA8h                  —

         DACh   PWM2INTE                                            E29h     —            EA9h                  —

         DADh   PWM2INTF                                            E2Ah     —            EAAh                  —

         DAEh   PWM2CLKCON                                          E2Bh     —            EABh                  —

         DAFh   PWM2LDCON                                           E2Ch     —            EACh                  —

         DB0h   PWM2OFCON                                           E2Dh     —            EADh                  —

         DB1h   PWM3PHL                                             E2Eh     —            EAEh                  —

         DB2h   PWM3PHH                                             E2Fh     —            EAFh                  —

         DB3h   PWM3DCL                                             E30h     —            EB0h                  —

         DB4h   PWM3DCH                                             E31h     —            EB1h                  —

         DB5h   PWM3PRL                                             E32h     —            EB2h                  —

         DB6h   PWM3PRH

         DB7h   PWM3OFL                                             E33h     —            EB3h                  —

         DB8h   PWM3OFH                                             E34h     —            EB4h                  —

         DB9h   PWM3TMRL                                            E35h     —            EB5h                  —

         DBAh   PWM3TMRH                                            E36h     —            EB6h                  —

         DBBh   PWM3CON                                             E37h     —            EB7h                  —

         DBCh   PWM3INTE                                            E38h     —            EB8h                  —

         DBDh   PWM3INTF                                            E39h     —            EB9h                  —

         DBEh   PWM3CLKCON                                          E3Ah     —            EBAh                  —

         DBFh   PWM3LDCON                                           E3Bh     —            EBBh                  —

         DC0h   PWM3OFCON                                           E3Ch     —            EBCh                  —

         DC1h   PWM4PHL                                             E3Dh     —            EBDh                  —

         DC2h   PWM4PHH                                             E3Eh     —            EBEh                  —

         DC3h   PWM4DCL                                             E3Fh     —            EBFh                  —

         DC4h   PWM4DCH                                             E40h                  EC0h

         DC5h   PWM4PRL                                                      —                                  —

         DC6h   PWM4PRH

         DC7h   PWM4OFL                                             E6Fh                  EEFh

         DC8h   PWM4OFH                                             Legend:  = Unimplemented data memory locations,

         DC9h   PWM4TMRL                                                     read as ‘0’

         DCAh   PWM4TMRH                                      Note  1:       Unimplemented on PIC16(L)F1574/5.

         DCBh   PWM4CON

         DCCh   PWM4INTE

         DCDh   PWM4INTF

         DCEh   PWM4CLKCON

         DCFh   PWM4LDCON

         DD0h   PWM4OFCON

         DD1h

         DEFh   —

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

 2016 Microchip Technology Inc.                                                                DS40001782C-page 33
PIC16(L)F1574/5/8/9

TABLE    3-13:  PIC16(L)F1574/5/8/9        MEMORY

                MAP, BANK 31

                              Bank 31

         F8Ch

                     Unimplemented

                              Read as ‘0’

         FE3h

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

DS40001782C-page 34                                      2016 Microchip Technology Inc.
                                                                                  PIC16(L)F1574/5/8/9

3.3.6         CORE FUNCTION REGISTERS

              SUMMARY

The Core Function registers listed in Table 3-14 can

be addressed from any Bank.

TABLE 3-14:      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     —                —         —                                 BSR<4:0>                                     ---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’.

 2016 Microchip Technology Inc.                                                                                           DS40001782C-page 35
DS40001782C-page 36               TABLE 3-15:       SPECIAL FUNCTION REGISTER SUMMARY                                                                                                                   PIC16(L)F1574/5/8/9

                                                                                                                                                                   Value on                 Value on

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

                                                                                                                                                                                            Resets

                                  Bank  0

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

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

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

                                  00Fh      —           Unimplemented                                                                                              —                        —

                                  010h      —           Unimplemented                                                                                              —                        —

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

                                  012h      PIR2                   —     C2IF    C1IF                —       —                    —              —              —  -00-  ----               -00-  ----

                                  013h      PIR3        PWM4IF           PWM3IF  PWM2IF              PWM1IF  —                    —              —              —  0000  ----               0000  ----

                                  014h      —                                                                                                                      —                        —

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

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

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

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

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

                                                                                                             DONE

                                  01Ah      TMR2        Timer2 Module Register                                                                                     0000  0000               0000  0000

                                  01Bh      PR2         Timer2 Period Register                                                                                     1111  1111               1111  1111

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

                                  01Dh      —           Unimplemented                                                                                              —                        —

                                  01Eh      —           Unimplemented                                                                                              —                        —

                                  01Fh      —           Unimplemented                                                                                              —                        —

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

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

                                        2:  PIC16F1574/5/8/9 only.

                                        3:  Unimplemented, read as ‘1’.

 2016 Microchip Technology Inc.
 2016 Microchip Technology Inc.  TABLE 3-15:           SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

                                                                                                                                                         Value on                                  Value on

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

                                                                                                                                                                                                   Resets

                                  Bank     1

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

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

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

                                  08Fh        —           Unimplemented                                                                                  —                                         —

                                  090h        —           Unimplemented                                                                                  —                                         —

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

                                  092h        PIE2        —                C2IE       C1IE       —         —                 —   —                —      -00-                                ----  -00-  ----

                                  093h        PIE3        PWM4IE           PWM3IE     PWM2IE     PWM1IE    —                 —   —                —      0000                                ----  0000  ----

                                  094h        —                                                                                                          —                                         —

                                  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     —                PLLR       OSTS       HFIOFR    HFIOFL      MFIOFR    LFIOFR   HFIOFS         -0q0                                0q00  -qqq  qqqq

                                  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>            —                 —      ADPREF<1:0>          0000                                --00  0000  --00  PIC16(L)F1574/5/8/9

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

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

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

                                        2:    PIC16F1574/5/8/9 only.

                                        3:    Unimplemented, read as ‘1’.

DS40001782C-page 37
DS40001782C-page 38               TABLE 3-15:            SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)                                                                                                           PIC16(L)F1574/5/8/9

                                                                                                                                           Value on                                                  Value on

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

                                                                                                                                                                                                     Resets

                                  Bank 2

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

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

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

                                  10Fh          —        Unimplemented                                                                     —                                                         —

                                  110h          —        Unimplemented                                                                     —                                                         —

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

                                  112h          CM1CON1  C1INTP              C1INTN    C1PCH<1:0>    —                 C1NCH<2:0>          0000                                                -000  0000  -000

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

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

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

                                  116h          BORCON   SBOREN              BORFS     —      —      —      —          —           BORRDY  10--                                                ---q  uu--  ---u

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

                                  118h          DACCON0  DACEN               —         DACOE  —      DACPSS<1:0>       —              —    0-0-                                                00--  0-0-  00--

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

                                  11Ah

                                        to      —        Unimplemented                                                                     —                                                         —

                                  11Fh

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

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

                                            2:  PIC16F1574/5/8/9 only.

                                            3:  Unimplemented, read as ‘1’.

 2016 Microchip Technology Inc.
 2016 Microchip Technology Inc.  TABLE 3-15:       SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

                                                                                                                                                                          Value on           Value on

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

                                                                                                                                                                                             Resets

                                  Bank 3

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

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

                                  18Eh      ANSELC      ANSC7(1)         ANSC6(1)     —          —        ANSC3           ANSC2                  ANSC1          ANSC0     11--  1111         11--  1111

                                  18Fh      —           Unimplemented                                                                                                     —                  —

                                  190h      —           Unimplemented                                                                                                     —                  —

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

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

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

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

                                  195h      PMCON1      —(3)             CFGS      LWLO          FREE     WRERR           WREN                   WR             RD        1000  x000         1000  q000

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

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

                                  198h      —           Unimplemented                                                                                                     —                  —

                                  199h      RCREG       USART Receive Data Register                                                                                       0000  0000         0000  0000

                                  19Ah      TXREG       USART Transmit Data Register                                                                                      0000  0000         0000  0000

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

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

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

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

                                  19Fh      BAUDCON     ABDOVF           RCIDL        —          SCKP     BRG16           —                      WUE            ABDEN     01-0  0-00         01-0  0-00  PIC16(L)F1574/5/8/9

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

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

                                        2:  PIC16F1574/5/8/9 only.

                                        3:  Unimplemented, read as ‘1’.

DS40001782C-page 39
DS40001782C-page 40               TABLE 3-15:            SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)                                                                                                           PIC16(L)F1574/5/8/9

                                                                                                                                                                               Value on              Value on

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

                                                                                                                                                                                                     Resets

                                  Bank 4

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

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

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

                                  20Fh

                                        to      —           Unimplemented                                                                                                      —                     —

                                  21Fh

                                  Bank 5

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

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

                                  28Eh          ODCONC      ODC7(1)          ODC6(1)   ODC5   ODC4   ODC3                             ODC2              ODC1            ODC0   0000  0000            0000  0000

                                  28Fh

                                        to      —           Unimplemented                                                                                                      —                     —

                                  29Fh

                                  Bank 6

                                  30Ch          SLRCONA     —                —         SLRA5  SLRA4  —                                SLRA2             SLRA1           SLRA0  --11  -111            --11  -111

                                  30Dh          SLRCONB(1)  SLRB7            SLRB6     SLRB5  SLRB4  —                                —                 —               —      1111  ----            1111  ----

                                  30Eh          SLRCONC     SLRC7(1)         SLRC6(1)  SLRC5  SLRC4  SLRC3                            SLRC2             SLRC1           SLRC0  1111  1111            1111  1111

                                  30Fh

                                        to      —           Unimplemented                                                                                                      —                     —

                                  31Fh

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

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

                                            2:  PIC16F1574/5/8/9 only.

                                            3:  Unimplemented, read as ‘1’.

 2016 Microchip Technology Inc.
 2016 Microchip Technology Inc.  TABLE 3-15:             SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

                                                                                                                                                                                Value on            Value on

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

                                                                                                                                                                                                    Resets

                                  Bank 7

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

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

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

                                  38Fh

                                        to      —          Unimplemented                                                                                                        —                   —

                                  390h

                                  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(1)   IOCBP7            IOCBP6      IOCBP5   IOCBP4   —                         —                 —               —        0000  ----          --00  ----

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

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

                                  397h          IOCCP      IOCCP7(1)         IOCCP6(1)   IOCCP5   IOCCP4   IOCCP3                    IOCCP2            IOCCP1          IOCCP0   0000  0000          0000  0000

                                  398h          IOCCN      IOCCN7(1)         IOCCN6(1)   IOCCN5   IOCCN4   IOCCN3                    IOCCN2            IOCCN1          IOCCN0   0000  0000          0000  0000

                                  399h          IOCCF      IOCCF7(1)         IOCCF6(1)   IOCCF5   IOCCF4   IOCCF3                    IOCCF2            IOCCF1          IOCCF0   0000  0000          0000  0000

                                  39Ah

                                        to      —          Unimplemented                                                                                                        —                   —

                                  39Fh

                                  Bank 8

                                  40Ch

                                        to      —          Unimplemented                                                                                                        —                   —           PIC16(L)F1574/5/8/9

                                  41Fh

                                  Bank 9

                                  48Ch

                                        to      —          Unimplemented                                                                                                        —                   —

                                  49Fh

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

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

                                            2:  PIC16F1574/5/8/9 only.

                                            3:  Unimplemented, read as ‘1’.

DS40001782C-page 41
DS40001782C-page 42               TABLE 3-15:      SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)                                                                                                            PIC16(L)F1574/5/8/9

                                                                                                                                                                          Value on              Value on

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

                                                                                                                                                                                                Resets

                                  Bank 10

                                  50Ch

                                        to      —         Unimplemented                                                                                                   —                     —

                                  51Fh

                                  Bank 11

                                  58Ch

                                        to      —         Unimplemented                                                                                                   —                     —

                                  59Fh

                                  Bank 12

                                  60Ch

                                        to      —         Unimplemented                                                                                                   —                     —

                                  61Fh

                                  Bank 13

                                  68Ch

                                        to      —         Unimplemented                                                                                                   —                     —

                                  690h

                                  691h          CWG1DBR   —                  —                       CWG1DBR<5:0>                                                         --00  0000            --00  0000

                                  692h          CWG1DBF   —                  —                       CWG1DBF<5:0>                                                         --xx  xxxx            --xx  xxxx

                                  693h          CWG1CON0  G1EN               —        —      G1POLB  G1POLA    —         —                                         G1CS0  0--0  0--0            0--0  0--0

                                  694h          CWG1CON1  G1ASDLB<1:0>                G1ASDLA<1:0>   —                   G1IS<2:0>                                        0000  -000            0000  -000

                                  695h          CWG1CON2  G1ASE              G1ARSEN  —      —       G1ASDSC2  G1ASDSC1  G1ASDSPPS                                 —      00--  000-            00--  000-

                                  696h

                                        to      —         Unimplemented                                                                                                   —                     —

                                  69Fh

                                  Banks 14-26

                                  x0Ch/         —         Unimplemented                                                                                                   —                     —

                                  x8Ch

                                  —

                                  x1Fh/

                                  x9Fh

 2016 Microchip Technology Inc.  Legend:       x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved. Shaded locations are  unimplemented, read as ‘0’.

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

                                            2:  PIC16F1574/5/8/9 only.

                                            3:  Unimplemented, read as ‘1’.
 2016 Microchip Technology Inc.  TABLE 3-15:      SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

                                                                                                                                                Value on                                         Value on

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

                                                                                                                                                                                                 Resets

                                  Bank 27

                                  D8Ch      —           Unimplemented                                                                           —                                                —

                                  D8Dh      —           Unimplemented                                                                           —                                                —

                                  D8Eh      PWMEN       —                —            —  —      PWM4EN_A   PWM3EN_A     PWM2EN_A   PWM1EN_A     ----                                       0000  ----  0000

                                  D8Fh      PWMLD       —                —            —  —      PWM4LDA_A  PWM3LDA_A    PWM2LDA_A  PWM1LDA_A    ----                                       0000  ----  0000

                                  D90h      PWMOUT      —                —            —  —      PWM4OUT_A  PWM3OUT_A    PWM2OUT_A  PWM1OUT_A    ----                                       0000  ----  0000

                                  D91h      PWM1PHL                                             PH<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  D92h      PWM1PHH                                             PH<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  D93h      PWM1DCL                                             DC<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  D94h      PWM1DCH                                             DC<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  D95h      PWM1PRL                                             PR<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  D96h      PWM1PRH                                             PR<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  D97h      PWM1OFL                                             OF<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  D98h      PWM1OFH                                             OF<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  D99h      PWM1TMRL                                            TMR<7:0>                                        xxxx                                       xxxx  uuuu  uuuu

                                  D9Ah      PWM1TMRH                                            TMR<15:8>                                       xxxx                                       xxxx  uuuu  uuuu

                                  D9Bh      PWM1CON     EN               —      OUT      POL              MODE<1:0>     —                —      0-00                                       00--  0-00  00--

                                  D9Ch      PWM1INTE    —                —            —  —      OFIE       PHIE         DCIE             PRIE   ----                                       000   ----  000

                                  D9Dh      PWM1INTF    —                —            —  —      OFIF       PHIF         DCIF             PRIF   ----                                       000   ----  000

                                  D9Eh      PWM1CLKCON  —                       PS<2:0>         —                    —         CS<1:0>          -000                                       -000  -000  --00

                                  D9Fh      PWM1LDCON   LDA              LDT          —  —      —                    —         LDS<1:0>         00--                                       -000  00--  --00  PIC16(L)F1574/5/8/9

                                  DA0h      PWM1OFCON              —        OFM<1:0>     OFO    —                    —         OFS<1:0>         -000                                       -000  -000  --00

                                  DA1h      PWM2PHL                                             PH<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  DA2h      PWM2PHH                                             PH<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  DA3h      PWM2DCL                                             DC<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  DA4h      PWM2DCH                                             DC<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  DA5h      PWM2PRL                                             PR<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  DA6h      PWM2PRH                                             PR<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

DS40001782C-page 43               DA7h      PWM2OFL                                             OF<7:0>                                         xxxx                                       xxxx  uuuu  uuuu

                                  DA8h      PWM2OFH                                             OF<15:8>                                        xxxx                                       xxxx  uuuu  uuuu

                                  DA9h      PWM2TMRL                                            TMR<7:0>                                        xxxx                                       xxxx  uuuu  uuuu

                                  DAAh      PWM2TMRH                                            TMR<15:8>                                       xxxx                                       xxxx  uuuu  uuuu

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

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

                                        2:  PIC16F1574/5/8/9 only.

                                        3:  Unimplemented, read as ‘1’.
DS40001782C-page 44               TABLE 3-15:  SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)                                                                                                                PIC16(L)F1574/5/8/9

                                                                                                                                                                             Value on           Value on

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

                                                                                                                                                                                                Resets

                                  Bank 27   (Continued)

                                  DABh      PWM2CON      EN                    —      OUT      POL                        MODE<1:0>                  —                —      0-00  00--         0-00  00--

                                  DACh      PWM2INTE     —                     —            —  —                OFIE       PHIE                      DCIE             PRIE   ----  000          ----  000

                                  DADh      PWM2INTF     —                     —            —  —                OFIF       PHIF                      DCIF             PRIF   ----  000          ----  000

                                  DAEh      PWM2CLKCON   —                            PS<2:0>                   —                    —                      CS<1:0>          -000  -000         -000  --00

                                  DAFh      PWM2LDCON    LDA                   LDT          —  —                —                    —                      LDS<1:0>         00--  -000         00--  --00

                                  DB0h      PWM2OFCON              —              OFM<1:0>     OFO              —                    —                      OFS<1:0>         -000  -000         -000  --00

                                  DB1h      PWM3PHL                                                             PH<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DB2h      PWM3PHH                                                             PH<15:8>                                                     xxxx  xxxx         uuuu  uuuu

                                  DB3h      PWM3DCL                                                             DC<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DB4h      PWM3DCH                                                             DC<15:8>                                                     xxxx  xxxx         uuuu  uuuu

                                  DB5h      PWM3PRL                                                             PR<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DB6h      PWM3PRH                                                             PR<15:8>                                                     xxxx  xxxx         uuuu  uuuu

                                  DB7h      PWM3OFL                                                             OF<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DB8h      PWM3OFH                                                             OF<15:8>                                                     xxxx  xxxx         uuuu  uuuu

                                  DB9h      PWM3TMRL                                                            TMR<7:0>                                                     xxxx  xxxx         uuuu  uuuu

                                  DBAh      PWM3TMRH                                                            TMR<15:8>                                                    xxxx  xxxx         uuuu  uuuu

                                  DBBh      PWM3CON      EN                    —      OUT      POL                        MODE<1:0>                  —                —      0-00  00--         0-00  00--

                                  DBCh      PWM3INTE     —                     —            —  —                OFIE       PHIE                      DCIE             PRIE   ----  000          ----  000

                                  DBDh      PWM3INTF     —                     —            —  —                OFIF       PHIF                      DCIF             PRIF   ----  000          ----  000

                                  DBEh      PWM3CLKCON   —                            PS<2:0>                   —                    —                      CS<1:0>          -000  -000         -000  --00

                                  DBFh      PWM3LDCON    LDA                   LDT          —  —                —                    —                      LDS<1:0>         00--  -000         00--  --00

                                  DC0h      PWM3OFCON              —              OFM<1:0>     OFO              —                    —                      OFS<1:0>         -000  -000         -000  --00

                                  DC1h      PWM4PHL                                                             PH<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DC2h      PWM4PHH                                                             PH<15:8>                                                     xxxx  xxxx         uuuu  uuuu

 2016 Microchip Technology Inc.  DC3h      PWM4DCL                                                             DC<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DC4h      PWM4DCH                                                             DC<15:8>                                                     xxxx  xxxx         uuuu  uuuu

                                  DC5h      PWM4PRL                                                             PR<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DC6h      PWM4PRH                                                             PR<15:8>                                                     xxxx  xxxx         uuuu  uuuu

                                  DC7h      PWM4OFL                                                             OF<7:0>                                                      xxxx  xxxx         uuuu  uuuu

                                  DC8h      PWM4OFH                                                             OF<15:8>                                                     xxxx  xxxx         uuuu  uuuu

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

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

                                        2:  PIC16F1574/5/8/9 only.

                                        3:  Unimplemented, read as ‘1’.
 2016 Microchip Technology Inc.  TABLE 3-15:           SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

                                                                                                                                                                                      Value on          Value on

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

                                                                                                                                                                                                        Resets

                                  Bank 27       (Continued)

                                  DC9h          PWM4TMRL                                                            TMR<7:0>                                                          xxxx  xxxx        uuuu  uuuu

                                  DCAh          PWM4TMRH                                                            TMR<15:8>                                                         xxxx  xxxx        uuuu  uuuu

                                  DCBh          PWM4CON      EN                  —      OUT         POL                MODE<1:0>                           —                —         0000  00--        0000  00--

                                  DCCh          PWM4INTE     —                   —            —     —               OFIE               PHIE                DCIE             PRIE      ----  000         ----  000

                                  DCDh          PWM4INTF     —                   —            —     —               OFIF               PHIF                DCIF             PRIF      ----  000         ----  000

                                  DCEh          PWM4CLKCON   —                          PS<2:0>                     —                  —                          CS<1:0>             -000  -000        -000  --00

                                  DCFh          PWM4LDCON    LDA                 LDT          —     —               —                  —                          LDS<1:0>            00--  -000        00--  --00

                                  DD0h          PWM4OFCON              —            OFM<1:0>        OFO             —                  —                          OFS<1:0>            -000  -000        -000  --00

                                  DD1h

                                        to      —            Unimplemented                                                                                                            —                 —

                                  DEFh

                                  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  PIC16(L)F1574/5/8/9

                                  E14h          CWG1INPPS              —         —            —                                        CWGINPPS<4:0>                                  ---0  0010        ---u  uuuu

                                  E15h          RXPPS                  —         —            —                                        RXPPS<4:0>                                     ---1  0101        ---u  uuuu

                                  E16h          CKPPS                  —         —            —                                        CKPPS<4:0>                                     ---1  0101        ---u  uuuu

                                  E17h          ADCACTPPS              —         —            —                                        ADCACTPPS<4:0>                                 ---1  0101        ---u  uuuu

                                  E18h

                                        to      —            Unimplemented                                                                                                            —                 —

                                  E6Fh

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

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

DS40001782C-page 45                         2:  PIC16F1574/5/8/9 only.

                                            3:  Unimplemented, read as ‘1’.
DS40001782C-page 46               TABLE 3-15:       SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)                                                                                                                  PIC16(L)F1574/5/8/9

                                                                                                                                                                                 Value on              Value on

                                  Address      Name    Bit 7                 Bit 6  Bit 5       Bit 4             Bit 3                 Bit 2             Bit 1           Bit 0  POR, BOR              all 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

                                  —

                                  E9Bh      —          Unimplemented                                                                                                             —                     —

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

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

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

                                  E9Fh      RB7PPS(1)              —         —      —                                                   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(1)              —         —      —                                                   RC6PPS<4:0>                              ---0  0000            ---u  uuuu

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

 2016 Microchip Technology Inc.  EA8h

                                  —

                                  EEFh      —          Unimplemented                                                                                                             —                     —

                                  Bank 30

                                  F0Ch

                                  —         —          Unimplemented                                                                                                             —                     —

                                  F1Fh

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

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

                                        2:  PIC16F1574/5/8/9 only.

                                        3:  Unimplemented, read as ‘1’.
 2016 Microchip Technology Inc.  TABLE     3-15:   SPECIAL FUNCTION REGISTER SUMMARY (CONTINUED)

                                                                                                                                                                       Value on             Value on

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

                                                                                                                                                                                            Resets

                                  Bank 31

                                  F8Ch      —            Unimplemented                                                                                                 —                    —

                                  —

                                  FE3h

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

                                            SHAD

                                  FE5h      WREG_        Working Register Shadow                                                                                       xxxx  xxxx           uuuu  uuuu

                                            SHAD

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

                                            SHAD

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

                                            SHAD

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

                                            SHAD

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

                                            SHAD

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

                                            SHAD

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

                                            SHAD

                                  FECh      —            Unimplemented                                                                                                 —                    —

                                  FEDh      STKPTR       —               —        —              Current Stack Pointer                                                 ---1  1111           ---1  1111  PIC16(L)F1574/5/8/9

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

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

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

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

                                        2:  PIC16F1574/5/8/9 only.

                                        3:  Unimplemented, read as ‘1’.

DS40001782C-page 47
PIC16(L)F1574/5/8/9

3.4       PCL and PCLATH                                                  3.4.2        COMPUTED GOTO

The Program Counter (PC) is 15 bits wide. The low byte                    A computed GOTO is accomplished by adding an offset to

comes from the PCL register, which is a readable and                      the program counter (ADDWF     PCL). When performing a

writable register. The high byte (PC<14:8>) is not directly               table read using a computed GOTO method, care should

readable or writable and comes from PCLATH. On any                        be exercised if the table location crosses a PCL memory

Reset,  the   PC   is  cleared.  Figure 3-4    shows   the          five  boundary   (each  256-byte     block).  Refer     to  Application

situations for the loading of the PC.                                     Note AN556, “Implementing a Table Read” (DS00556).

FIGURE 3-4:             LOADING OF PC IN                                  3.4.3        COMPUTED FUNCTION CALLS

                        DIFFERENT SITUATIONS                              A computed function CALL allows programs to maintain

                                                                          tables of functions and provide another way to execute

                                                   Rev. 10-000042A        state machines or look-up tables. When performing a

                                                       7/30/2013

                                                                          table  read  using  a    computed       function  CALL,    care

              14   PCH               PCL       0   Instruction            should be exercised if the table location crosses a PCL

          PC                                       with PCL as            memory boundary (each 256-byte block).

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

              6    7    0            8

     PCLATH                      ALU result                               registers  are   loaded  with  the  operand       of  the  CALL

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

              14   PCH               PCL       0       GOTO,              The CALLW instruction enables computed calls by com-

          PC                                           CALL               bining PCLATH and W to form the destination address.

              64                 11                                       A computed CALLW is accomplished by loading the W

                        0                                                 register with the desired address and executing CALLW.

     PCLATH                      OPCODE <10:0>                            The PCL register is loaded with the value of W and

                                                                          PCH is loaded with PCLATH.

              14   PCH               PCL       0

          PC                                           CALLW              3.4.4        BRANCHING

              6    7    0            8                                    The branching instructions add an offset to the PC.

     PCLATH                             W                                 This allows relocatable code and code that crosses

                                                                          page boundaries. There are two forms of branching,

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

                   PCH                                                    the next instruction in both cases. When using either

          PC                                           BRW                branching instruction, a PCL memory boundary may be

                        15                                                crossed.

                        PC + 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                                           BRA                be loaded with the address PC + 1 + W.

                        15                                                If using BRA, the entire PC will be loaded with PC + 1 +,

                       PC + OPCODE <8:0>                                  the signed value of the operand of the BRA instruction.

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

DS40001782C-page 48                                                                                    2016 Microchip Technology Inc.
                                                                                    PIC16(L)F1574/5/8/9

3.5       Stack                                                             3.5.1         ACCESSING THE STACK

All  devices   have   a  16-level x 15-bit       wide  hardware             The stack is available through the TOSH, TOSL and

stack  (refer  to    Figures 3-5    through 3-8).      The   stack          STKPTR registers. STKPTR is the current value of the

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

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

instructions   are   executed     or  an   interrupt   causes  a            is split into TOSH and TOSL due to the 15-bit size of the

branch. The stack is POPed in the event of a RETURN,                        PC. To access the stack, adjust the value of STKPTR,

RETLW or a RETFIE instruction execution. PCLATH is                          which   will  position  TOSH:TOSL,    then         read/write     to

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

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 stack

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

enabled.                                                                    place on the stack. Therefore, a CALL or CALLW                    will

     Note 1:   There     are  no    instructions/mnemonics                  increment the STKPTR and then write the PC, and a

               called PUSH or POP. These are actions                        return  will  unload    the  PC  and  then       decrement        the

               that  occur    from    the  execution   of    the            STKPTR.

               CALL,     CALLW,       RETURN,    RETLW and                  Reference Figure 3-5 through Figure 3-8 for examples

               RETFIE instructions or the vectoring to                      of accessing the stack.

               an interrupt address.

FIGURE 3-5:              ACCESSING THE STACK EXAMPLE 1

                                                                                                                             Rev. 10-000043A

                                                                                                                               7/30/2013

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

                                                                                                    (STVREN = 0)

                                                      0x0E

                                                      0x0D

                                                      0x0C

                                                      0x0B                          Initial Stack Configuration:

                                                      0x0A

                                                      0x09                          After Reset, the stack is empty. The

                                                                                    empty stack is initialized so the Stack

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

                                                      0x07                          Overflow/Underflow Reset is enabled, the

                                                                                    TOSH/TOSL register will return ‘0’. If the

                                                      0x06                          Stack Overflow/Underflow Reset is

                                                      0x05                          disabled, the TOSH/TOSL register will

                                                                                    return the contents of stack address

                                                      0x04                          0x0F.

                                                      0x03

                                                      0x02

                                                      0x01

                                                      0x00

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

                                                                                                    (STVREN = 1)

 2016 Microchip Technology Inc.                                                                                  DS40001782C-page 49
PIC16(L)F1574/5/8/9

FIGURE 3-6:          ACCESSING THE STACK EXAMPLE 2

                                                                                               Rev. 10-000043B

                                                                                                        7/30/2013

                                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

                                0x06                     Program Counter and the Stack Pointer

                                                         decremented to the empty state (0x1F).

                                0x05

                                0x04

                                0x03

                                0x02

                                0x01

              TOSH:TOSL         0x00  Return Address     STKPTR = 0x00

FIGURE  3-7:         ACCESSING  THE STACK EXAMPLE     3

                                                                                                Rev. 10-000043C

                                                                                                        7/30/2013

                                0x0F

                                0x0E

                                0x0D

                                0x0C                     After seven CALLs or six CALLs and an

                                0x0B                     interrupt, the stack looks like the figure on

                                0x0A                     the left. A series of RETURN instructions will

                                                         repeatedly place the return addresses into

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

DS40001782C-page 50                                                      2016 Microchip Technology                Inc.
                                                                                     PIC16(L)F1574/5/8/9

FIGURE 3-8:                   ACCESSING THE STACK EXAMPLE                         4

                                                                                                                                 Rev. 10-000043D

                                                                                                                                 7/30/2013

                                                          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 so

                                                          0x08   Return  Address     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

                                                          0x05   Return  Address     not be overwritten.

                                                          0x04   Return  Address

                                                          0x03   Return  Address

                                                          0x02   Return  Address

                                                          0x01   Return  Address

                  TOSH:TOSL                               0x00   Return  Address     STKPTR = 0x10

3.5.2         OVERFLOW/UNDERFLOW RESET

If  the    STVREN        bit     in  Configuration        Words  is

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

is  PUSHed        beyond   the       sixteenth     level  or    POPed

beyond     the    first  level,  setting      the  appropriate   bits

(STKOVF       or  STKUNF,        respectively)     in     the   PCON

register.

3.6        Indirect Addressing

The INDFn registers are not physical registers. Any

instruction that accesses an INDFn register actually

accesses the register at the address specified by the

File  Select    Registers        (FSR).   If  the  FSRn        address

specifies one of the two INDFn registers, the read will

return ‘0’ and the write will not occur (though Status bits

may be affected). The FSRn register value is created

by the pair FSRnH and FSRnL.

The FSR registers form a 16-bit address that allows an

addressing space with 65536 locations. These locations

are divided into three memory regions:

•   Traditional Data Memory

•   Linear Data Memory

•   Program Flash Memory

 2016 Microchip Technology Inc.                                                                          DS40001782C-page 51
PIC16(L)F1574/5/8/9

FIGURE 3-9:          INDIRECT ADDRESSING

                                                                                              Rev. 10-000044A

                                                                                              7/30/2013

                                            0x0000      0x0000

                                                        Traditional

                                                        Data Memory

                                            0x0FFF      0x0FFF

                                            0x1000

                                                        Reserved

                                            0x1FFF

                                            0x2000

                                                        Linear

                                                        Data Memory

                                            0x29AF

                                            0x29B0

                                                        Reserved

                     FSR                    0x7FFF

                     Address                0x8000      0x0000

                     Range

                                                        Program

                                                        Flash Memory

                                            0xFFFF      0x7FFF

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

DS40001782C-page 52                                                                            2016 Microchip Technology  Inc.
                                                                           PIC16(L)F1574/5/8/9

3.6.1     TRADITIONAL DATA MEMORY

The  traditional     data  memory    is  a   region  from    FSR

address 0x000 to FSR address 0xFFF. The addresses

correspond to the absolute addresses of all SFR, GPR

and common registers.

FIGURE 3-10:               TRADITIONAL DATA MEMORY                MAP

                                                                                                                Rev. 10-000056A

                                                                                                                7/31/2013

          Direct Addressing                                            Indirect   Addressing

                        From Opcode

       4  BSR     0  6           0                                7    FSRxH      0  7  FSRxL  0

                                                                  0000

          Bank Select      Location Select                           Bank Select              Location  Select

                                     00000   00001   00010        11111

                           0x00

                           0x7F

                                     Bank 0  Bank 1  Bank 2       Bank 31

 2016 Microchip Technology Inc.                                                                        DS40001782C-page 53
PIC16(L)F1574/5/8/9

3.6.2          LINEAR DATA MEMORY                                 3.6.3       PROGRAM FLASH MEMORY

The    linear  data  memory     is  the     region   from    FSR  To    make  constant        data     access  easier,    the      entire

address 0x2000 to FSR address 0x29AF. This region is              program Flash memory is mapped to the upper half of

a virtual region that points back to the 80-byte blocks of        the FSR address space. When the MSb of FSRnH is

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-11:               LINEAR DATA MEMORY                     FIGURE 3-12:                PROGRAM FLASH

                           MAP                                                                MEMORY MAP

                                            Rev. 10-000057A

                                            7/31/2013                                                             Rev. 10-000058A

                                                                                                                        7/31/2013

       7  FSRnH      0     7  FSRnL      0                               7    FSRnH      0    7     FSRnL      0

       001                                                               1

          Location Select           0x2000                                   Location Select           0x8000

                                            0x020                                                                 0x0000

                                            Bank 0

                                            0x06F

                                            0x0A0

                                            Bank 1

                                            0x0EF                                                                 Program

                                            0x120                                                                 Flash

                                            Bank 2                                                                Memory

                                            0x16F                                                                 (low 8 bits)

                                            0xF20

                                            Bank 30

                                            0xF6F                                                      0xFFFF     0x7FFF

                                0x29AF

DS40001782C-page 54                                                                               2016 Microchip Technology Inc.
                                                             PIC16(L)F1574/5/8/9

4.0        DEVICE CONFIGURATION

Device configuration consists of Configuration Words,

Code Protection and Device ID.

4.1        Configuration Words

There are several Configuration Word bits that allow

different  oscillator  and  memory  protection     options.

These are implemented as Configuration Word 1 at

8007h and Configuration Word 2 at 8008h.

Note:      The DEBUG bit in Configuration Words is

           managed          automatically     by   device

           development      tools  including  debuggers

           and     programmers.    For     normal  device

           operation, this bit should be maintained as

           a ‘1’.

 2016 Microchip Technology Inc.                             DS40001782C-page 55
PIC16(L)F1574/5/8/9

4.2           Register Definitions: Configuration Words

REGISTER 4-1:               CONFIGURATION WORD 1

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

                                               —             —      CLKOUTEN                    BOREN<1:0>(1)                         —

                                       bit 13                                                                                                bit 8

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

        CP(2)         MCLRE            PWRTE(1)                   WDTE<1:0>                     —              FOSC<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-12        Unimplemented: Read as ‘1’

bit  11           CLKOUTEN: Clock Out Enable bit

                  1   =     OFF   – CLKOUT function is disabled. I/O or oscillator function on CLKOUT pin

                  0      =  ON    – CLKOUT function is enabled on CLKOUT pin

bit  10-9         BOREN<1:0>: Brown-out Reset Enable bits(1)

                  11     =  ON         – Brown-out Reset enabled. The SBOREN bit is ignored.

                  10     =  SLEEP      – Brown-out Reset enabled while running and disabled in Sleep. The SBOREN bit is ignored.

                  01     =  SBODEN– Brown-out Reset controlled by the SBOREN bit in the BORCON register

                  00     =  OFF        – Brown-out Reset disabled. The SBOREN bit is ignored.

bit  8            Unimplemented: Read as ‘1’

bit  7            CP: Flash Program Memory Code Protection bit(2)

                  1   =     OFF – Code protection off. Program Memory can be read and written.

                  0   =     ON   – Code protection on. Program Memory cannot be read or written externally.

bit  6            MCLRE: MCLR/VPP Pin Function Select bit

                  If LVP bit = 1   (ON):

                         This bit is ignored. MCLR/VPP pin function is MCLR; Weak pull-up enabled.

                  If LVP bit = 0   (OFF):

                  1   =     ON  – MCLR/VPP pin function is MCLR; Weak pull-up enabled.

                  0   =  OFF – MCLR/VPP pin function is digital input; MCLR internally disabled; Weak pull-up under control of pin’s       WPU

                         control bit.

bit  5            PWRTE: Power-up Timer Enable bit(1)

                  1   =     OFF – PWRT disabled

                  0   =     ON  – PWRT enabled

bit  4-3          WDTE<1:0>: Watchdog Timer Enable bit

                  11     =  ON         – WDT enabled. SWDTEN is ignored.

                  10     =  SLEEP      – WDT enabled while running and disabled in Sleep. SWDTEN is ignored.

                  01     =  SWDTEN– WDT controlled by the SWDTEN bit in the WDTCON register

                  00     =  OFF        – WDT disabled. SWDTEN is ignored.

bit  2            Unimplemented: Read as ‘1’

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

                  11     =  ECH        – External Clock, High-Power mode: CLKI on CLKI

                  10     =  ECM        – External Clock, Medium Power mode: CLKI on CLKI

                  01     =  ECL        – External Clock, Low-Power mode: CLKI on CLKI

                  00     =  INTOSC – I/O function on CLKI

Note      1:   Enabling Brown-out Reset does not automatically enable Power-up Timer.

          2:   Once enabled, code-protect can only be disabled by bulk erasing the device.

DS40001782C-page 56                                                                                    2016 Microchip Technology Inc.
                                                                           PIC16(L)F1574/5/8/9

REGISTER 4-2:            CONFIGURATION WORD 2

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

                                  LVP(1)            DEBUG(2)        LPBOREN      BORV(3)             STVREN    PLLEN

                                  bit 13                                                                               bit 8

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

         —               —                —         —               —            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       =  ON    –  Low-voltage       programming  enabled.  MCLR/VPP        pin  function  is  MCLR.   MCLRE

                                  Configuration bit is ignored.

              0       =  OFF   –  High Voltage on MCLR/VPP must be used for programming

bit  12       DEBUG: Debugger Mode bit(2)

              1       =  OFF   – In-Circuit Debugger disabled; ICSPCLK and ICSPDAT are general purpose I/O pins.

              0       =  ON    – In-Circuit Debugger enabled; ICSPCLK and ICSPDAT are dedicated to the debugger.

bit  11       LPBOREN: Low-Power Brown-out Reset Enable bit

              1       =  OFF   – Low-power Brown-out Reset is disabled

              0       =  ON    – Low-power Brown-out Reset is enabled

bit  10       BORV: Brown-out Reset Voltage Selection bit(3)

              1       =  LOW   – Brown-out Reset voltage (VBOR), low trip point selected

              0       =  HIGH  – Brown-out Reset voltage (VBOR), high trip point selected

bit  9        STVREN: Stack Overflow/Underflow Reset Enable bit

              1       =  ON    – Stack Overflow or Underflow will cause a Reset

              0       =  OFF   – Stack Overflow or Underflow will not cause a Reset

bit  8        PLLEN: PLL Enable bit

              1       =  ON    – 4xPLL enabled

              0       =  OFF   – 4xPLL disabled

bit  7-3      Unimplemented: Read as ‘1’

bit  2        PPS1WAY: PPSLOCK Bit One-Way Set Enable bit

              1       =  ON       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       =  OFF      The PPSLOCK bit can be set and cleared as needed (provided an unlocking sequence is

                                  executed)

Note      1:  This 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.

 2016 Microchip Technology Inc.                                                                          DS40001782C-page 57
PIC16(L)F1574/5/8/9

REGISTER     4-2:      CONFIGURATION WORD 2 (CONTINUED)

bit 1-0      WRT<1:0>: Flash Memory Self-Write Protection bits

             4 kW Flash memory: (PIC16(L)F1574/8):

                   11  =  OFF   Write protection off

                   10  =  BOOT  0000h to 1FFh write protected, 0200h to 0FFFh may be modified by PMCON control

                   01  =  HALF  0000h to 07FFh write protected, 0800h to 0FFFh may be modified by PMCON control

                   00  =  ALL   0000h to 0FFFh write protected, no addresses may be modified by PMCON control

             8 kW Flash memory: (PIC16(L)F1575/9)

                   11  =  OFF   Write protection off

                   10  =  BOOT  0000h to 1FFh write protected, 0200h to 1FFFh may be modified by PMCON control

                   01  =  HALF  0000h to 0FFFh write protected, 1000h to 1FFFh may be modified by PMCON control

                   00  =  ALL   0000h to 1FFFh write protected, no addresses may be modified by PMCON control

Note     1:  This 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.

DS40001782C-page 58                                                 2016 Microchip Technology Inc.
                                                                  PIC16(L)F1574/5/8/9

4.3       Code Protection

Code protection allows the device to be protected from

unauthorized access. Internal access to the program

memory is unaffected by any code protection setting.

4.3.1         PROGRAM MEMORY PROTECTION

The entire program memory space is protected from

external reads and writes by the CP bit in Configuration

Words. When CP = 0, external reads and writes of

program memory are inhibited and a read will return all

‘0’s. The CPU can continue to read program memory,

regardless of the protection bit settings. Writing the

program       memory       is   dependent  upon     the    write

protection       setting.       See    Section      4.4 “Write

Protection” for more information.

4.4       Write Protection

Write protection allows the device to be protected from

unintended       self-writes.    Applications,      such   as

bootloader software, can be protected while allowing

other regions of the program memory to be modified.

The WRT<1:0> bits in Configuration Words define the

size of the program memory block that is protected.

4.5       User ID

Four memory locations (8000h-8003h) are designated as

ID locations where the user can store checksum or other

code   identification      numbers.    These    locations  are

readable    and  writable      during  normal  execution.  See

Section 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)F157x     Memory

Programming Specification” (DS40001766).

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.

 2016 Microchip Technology Inc.                                  DS40001782C-page 59
PIC16(L)F1574/5/8/9

4.7        Register  Definitions: Device ID

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

                                         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

           ‘0’ = Bit is cleared               ‘1’ = Bit is set         x = Bit is unknown

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

             Refer to Table 4-1 to determine what these bits will read on which device. A value of     3FFFh  is  invalid.

Note   1:  This location cannot be written.

REGISTER 4-4:        REVISIONID:            REVISION ID  REGISTER(1)

                                         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

           ‘0’ = Bit is cleared               ‘1’ = Bit is set         x = Bit is unknown

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

             These bits are used to identify  the device revision.

Note 1:    This location cannot be written.

TABLE 4-1:     DEVICE            ID  VALUES

           DEVICE                             Device ID                              Revision          ID

PIC16F1574                                    3000h                                        2xxxh

PIC16F1575                                    3001h                                        2xxxh

PIC16F1578                                    3002h                                        2xxxh

PIC16F1579                                    3003h                                        2xxxh

PIC16LF1574                                   3004h                                        2xxxh

PIC16LF1575                                   3005h                                        2xxxh

PIC16LF1578                                   3006h                                        2xxxh

PIC16LF1579                                   3007h                                        2xxxh

DS40001782C-page 60                                                                   2016 Microchip Technology Inc.
                                                                           PIC16(L)F1574/5/8/9

5.0      OSCILLATOR MODULE                                       The oscillator module can be configured in one of the

                                                                 following clock modes.

5.1      Overview                                                1.    ECL – External Clock Low-Power mode

The  oscillator  module      has  a  wide    variety  of  clock        (0 MHz to 0.5 MHz)

sources and selection features that allow it to be used          2.    ECM – External Clock Medium Power mode

in a wide range of applications while maximizing perfor-               (0.5 MHz to 4 MHz)

mance and minimizing power consumption. Figure 5-1               3.    ECH – External Clock High-Power mode

illustrates a block diagram of the oscillator module.                  (4 MHz to 32 MHz)

Clock sources can be supplied from external logic level          4.    INTOSC – Internal oscillator (31 kHz to 32 MHz).

clocks.  In  addition,  the  system   clock  source   can   be   Clock Source modes are selected by the FOSC<1:0>

supplied from one of two internal oscillators and PLL            bits  in  the   Configuration  Words.  The    FOSC         bits

circuits, with a choice of speeds selectable via software.       determine the type of oscillator that will be used when

Additional clock features include:                               the device is first powered.

•  Selectable system clock source between external               The   ECH,     ECM,  and  ECL  clock   modes  rely     on  an

   or internal sources via software.                             external logic level signal as the device clock source.

                                                                 The INTOSC internal oscillator block produces low,

                                                                 medium,        and   high-frequency    clock        sources,

                                                                 designated LFINTOSC, MFINTOSC and HFINTOSC.

                                                                 (see  Internal  Oscillator    Block,  Figure 5-1).  A   wide

                                                                 selection of device clock frequencies may be derived

                                                                 from these three clock sources.

 2016 Microchip Technology Inc.                                                                       DS40001782C-page 61
PIC16(L)F1574/5/8/9

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

                                                                                                           Rev. 10-000155A

                                                                                                                           10/11/2013

                               FOSC<1:0>

                                              2                                Reserved   01        Sleep

CLKIN                                                                                                      FOSC(1)

                                                                          0

                                                            4x PLL(2)                     00               to CPU and

                                                                          1

                                                                                                           Peripherals

                                              PLLEN                               INTOSC  1x

                                              SPLLEN

                                                                                              2

                                                              16 MHz                      SCS<1:0>

                                                              8 MHz

                                                              4 MHz

             HFPLL             HFINTOSC(1)                    2 MHz

          16 MHz                                 Prescaler    1 MHz

                                                            *500 kHz

          500 kHz              MFINTOSC(1)                  *250 kHz

          Oscillator                                        *125 kHz

                                                            62.5 kHz

                                                            *31.25 kHz

      Internal Oscillator                                     *31 kHz

             Block                                                      4

                                                                       IRCF<3:0>

             31 kHz            LFINTOSC(1)                                                                 to WDT, PWRT, and

          Oscillator                                                                                       other Peripherals

                               FRC(1)                                                                      to Peripherals

          600 kHz                                             to ADC and

          Oscillator                                        other Peripherals

             * Available with  more than one  IRCF selection

Note  1:     See Section 5.2 “Clock Source Types”.

      2:     If FOSC<1:0> = 00, 4x PLL can only be used if IRCF<3:0> = 1110.

DS40001782C-page 62                                                                                  2016 Microchip Technology        Inc.
                                                                               PIC16(L)F1574/5/8/9

5.2         Clock Source Types                                           The Oscillator Start-up Timer (OST), when available, is

Clock sources can be classified as external or internal.                 disabled when EC mode is selected. Therefore, there

                                                                         is no delay in operation after a Power-On Reset (POR)

External clock sources rely on external circuitry for the                or wake-up from Sleep. Because the PIC® MCU design

clock source to function.                                                is fully static, stopping the external clock input will have

Internal clock sources are contained within the oscilla-                 the effect of halting the device while leaving all data

tor module. The internal oscillator block has two inter-                 intact. Upon restarting the external clock, the device

nal    oscillators     and    a  dedicated        Phase-Lock   Loop      will resume operation as if no time had elapsed.

(HFPLL)     that     are    used  to     generate      three  internal   FIGURE 5-2:          EXTERNAL CLOCK (EC)

system      clock    sources:     the    16 MHz   High-Frequency                              MODE OPERATION

Internal Oscillator (HFINTOSC), 500 kHz (MFINTOSC)

and    the  31 kHz        Low-Frequency           Internal  Oscillator

(LFINTOSC).                                                              Clock from           CLKIN

The system clock can be selected between external or                     Ext. System                       PIC® MCU

internal    clock    sources     via   the   System    Clock   Select

(SCS)     bits  in   the    OSCCON          register.  See    Section                         CLKOUT

5.3 “Clock Switching” for additional information.                        FOSC/4 or    I/O(1)

5.2.1           EXTERNAL CLOCK SOURCES                                   Note  1:    Output depends upon CLKOUTEN bit of the

An external clock source can be used as the device                                   Configuration Words.

system      clock    by   performing         one  of   the    following

actions:

•  Program the FOSC<1:0> bits in the Configuration

   Words to select an external clock source that will

   be used as the default system clock upon a

   device Reset.

•  Write the SCS<1:0> bits in the OSCCON register

   to switch the system clock source to:

   -   Timer1 oscillator during run-time, or

   -   An external clock source determined by the

       value of the FOSC bits.

See Section 5.3 “Clock Switching”for more informa-

tion.

5.2.1.1              EC Mode

The    External      Clock  (EC)      mode   allows    an   externally

generated       logic  level     signal  to  be   the  system  clock

source. When operating in this mode, an external clock

source is connected to the CLKIN input. CLKOUT is

available       for    general    purpose         I/O  or   CLKOUT.

Figure 5-2 shows the pin connections for EC mode.

EC mode has three power modes to select from through

the FOSC bits in the Configuration Words:

•  ECH - High power, 4-20 MHz

•  ECM - Medium power, 0.5-4 MHz

•  ECL - Low power, 0-0.5 MHz

 2016 Microchip Technology Inc.                                                                           DS40001782C-page 63
PIC16(L)F1574/5/8/9

5.2.2        INTERNAL CLOCK SOURCES                                   5.2.2.1           HFINTOSC

The  device      may   be  configured    to     use  the    internal  The High-Frequency Internal Oscillator (HFINTOSC) is

oscillator block as the system clock by performing one                a factory calibrated 16 MHz internal clock source. The

of the following actions:                                             frequency     of  the    HFINTOSC      can  be     altered  via

•   Program the FOSC<1:0> bits in Configuration                       software using the OSCTUNE register (Register 5-3).

    Words to select the INTOSC clock source, which                    The output of the HFINTOSC connects to a postscaler

    will be used as the default system clock upon a                   and  multiplexer  (see       Figure 5-1).   One    of  multiple

    device Reset.                                                     frequencies   derived    from   the    HFINTOSC        can    be

•   Write the SCS<1:0> bits in the OSCCON register                    selected via software using the IRCF<3:0> bits of the

    to switch the system clock source to the internal                 OSCCON        register.  See   Section      5.2.2.8 “Internal

    oscillator during run-time. See Section                           Oscillator Clock Switch Timing” for more information.

    5.3 “Clock Switching”for more information.                        The HFINTOSC is enabled by:

In  INTOSC       mode,     CLKIN     is  available   for    general   •  Configure the IRCF<3:0> bits of the OSCCON

purpose I/O. CLKOUT is available for general purpose                     register for the desired HF frequency, and

I/O or CLKOUT.                                                        •  FOSC<1:0> = 00, or

The function of the OSC2/CLKOUT pin is determined                     •  Set the System Clock Source (SCS) bits of the

by the CLKOUTEN bit in Configuration Words.                              OSCCON register to ‘1x’.

The    internal   oscillator  block      has    two  independent      A fast start-up oscillator allows internal circuits to power

oscillators and a dedicated Phase Lock Loop, HFPLL                    up and stabilize before switching to HFINTOSC.

that can produce one of three internal system clock                   The  High-Frequency          Internal  Oscillator  Ready      bit

sources.                                                              (HFIOFR) of the OSCSTAT register indicates when the

1.   The  HFINTOSC            (High-Frequency        Internal         HFINTOSC is running.

     Oscillator) is factory calibrated and operates at                The High-Frequency Internal Oscillator Status Locked

     16 MHz. The HFINTOSC source is generated                         bit (HFIOFL) of the OSCSTAT register indicates when

     from the 500 kHz MFINTOSC source and the                         the HFINTOSC is running within 2% of its final value.

     dedicated     Phase      Lock       Loop,  HFPLL.      The

     frequency        of   the       HFINTOSC        can    be        The  High-Frequency          Internal  Oscillator  Stable     bit

     user-adjusted via software using the OSCTUNE                     (HFIOFS) of the OSCSTAT register indicates when the

     register (Register 5-3).                                         HFINTOSC is running within 0.5% of its final value.

2.   The  MFINTOSC            (Medium-Frequency      Internal         5.2.2.2           MFINTOSC

     Oscillator) is factory calibrated and operates at

     500 kHz. The frequency of the MFINTOSC can                       The      Medium-Frequency              Internal        Oscillator

     be   user-adjusted         via  software        using  the       (MFINTOSC) is a factory calibrated 500 kHz internal

     OSCTUNE register (Register 5-3).                                 clock source. The frequency of the MFINTOSC can be

3.   The  LFINTOSC              (Low-Frequency       Internal         altered  via  software   using  the    OSCTUNE         register

     Oscillator)   is     uncalibrated   and    operates    at        (Register 5-3).

     31 kHz.                                                          The output of the MFINTOSC connects to a postscaler

                                                                      and  multiplexer       (see   Figure 5-1).  One        of   nine

                                                                      frequencies   derived    from   the    MFINTOSC        can    be

                                                                      selected via software using the IRCF<3:0> bits of the

                                                                      OSCCON        register.  See   Section      5.2.2.8 “Internal

                                                                      Oscillator Clock Switch Timing” for more information.

                                                                      The MFINTOSC is enabled by:

                                                                      •  Configure the IRCF<3:0> bits of the OSCCON

                                                                         register for the desired HF frequency, and

                                                                      •  FOSC<1:0> = 00, or

                                                                      •  Set the System Clock Source (SCS) bits of the

                                                                         OSCCON register to ‘1x’

                                                                      The Medium-Frequency Internal Oscillator Ready bit

                                                                      (MFIOFR) of the OSCSTAT register indicates when the

                                                                      MFINTOSC is running.

DS40001782C-page 64                                                                                 2016 Microchip Technology Inc.
                                                                          PIC16(L)F1574/5/8/9

5.2.2.3     Internal Oscillator Frequency                          5.2.2.5        FRC

            Adjustment                                             The FRC clock is an uncalibrated, nominal 600 kHz

The 500 kHz internal oscillator is factory calibrated.             peripheral clock source.

This internal oscillator can be adjusted in software by            The FRC is automatically turned on by the peripherals

writing to the OSCTUNE register (Register 5-3). Since              requesting the FRC clock.

the  HFINTOSC     and     MFINTOSC        clock   sources     are  The FRC clock will continue to run during Sleep.

derived from the 500 kHz internal oscillator a change in

the OSCTUNE register value will apply to both.                     5.2.2.6        Internal Oscillator Frequency

The default value of the OSCTUNE register is ‘0’. The                             Selection

value is a 6-bit two’s complement number. A value of               The system clock speed can be selected via software

1Fh  will   provide   an  adjustment      to      the  maximum     using  the  Internal  Oscillator  Frequency    Select   bits,

frequency. A value of 20h will provide an adjustment to            IRCF<3:0> of the OSCCON register.

the minimum frequency.

When the OSCTUNE register is modified, the oscillator              The postscaler outputs of the 16 MHz HFINTOSC, 500

frequency will begin shifting to the new frequency. Code           kHz    MFINTOSC,      and  31 kHz       LFINTOSC    output

execution   continues     during  this    shift.  There  is   no   connect to a multiplexer (see Figure 5-1). The Internal

indication that the shift has occurred.                            Oscillator  Frequency     Select  bits  IRCF<3:0>   of  the

OSCTUNE does not affect the LFINTOSC frequency.                    OSCCON register select the frequency output of the

Operation of features that depend on the LFINTOSC                  internal oscillators. One of the following frequencies

clock source frequency, such as the Power-up Timer                 can be selected via software:

(PWRT), Watchdog Timer (WDT), and peripherals, are                 -    32 MHz (requires 4x PLL)

not affected by the change in frequency.                           -    16 MHz

5.2.2.4     LFINTOSC                                               -    8 MHz

                                                                   -    4 MHz

The Low-Frequency Internal Oscillator (LFINTOSC) is                -    2 MHz

an uncalibrated 31 kHz internal clock source.                      -    1 MHz

The output of the LFINTOSC connects to a multiplexer               -    500 kHz (default after Reset)

(see Figure 5-1). Select 31 kHz, via software, using the           -    250 kHz

IRCF<3:0> bits of the OSCCON register. See Section                 -    125 kHz

5.2.2.8 “Internal Oscillator Clock Switch Timing” for              -    62.5 kHz

more information. The LFINTOSC is also the frequency               -    31.25 kHz

for the Power-up Timer (PWRT) and Watchdog Timer

(WDT).                                                             -    31 kHz (LFINTOSC)

The  LFINTOSC         is  enabled   by    selecting      31 kHz    Note:       Following any Reset, the IRCF<3:0> bits

(IRCF<3:0> bits of the OSCCON register = 000) as the                           of the OSCCON register are set to ‘0111’

system     clock  source  (SCS      bits  of      the  OSCCON                  and  the   frequency    selection  is  set  to

register =  1x),  or   when  any    of    the     following   are              500 kHz. The user can modify the IRCF

enabled:                                                                       bits to select a different frequency.

•  Configure the IRCF<3:0> bits of the OSCCON                      The  IRCF<3:0>   bits  of  the    OSCCON  register     allow

   register for the desired LF frequency, and                      duplicate selections for some frequencies. These dupli-

•  FOSC<1:0> = 00, or                                              cate choices can offer system design trade-offs. Lower

•  Set the System Clock Source (SCS) bits of the                   power consumption can be obtained when changing

   OSCCON register to ‘1x’                                         oscillator sources for a given frequency. Faster transi-

Peripherals that use the LFINTOSC are:                             tion times can be obtained between frequency changes

                                                                   that use the same oscillator source.

•  Power-up Timer (PWRT)

•  Watchdog Timer (WDT)

The  Low-Frequency        Internal  Oscillator         Ready  bit

(LFIOFR) of the OSCSTAT register indicates when the

LFINTOSC is running.

 2016 Microchip Technology Inc.                                                                       DS40001782C-page 65
PIC16(L)F1574/5/8/9

5.2.2.7            32 MHz Internal Oscillator                    5.2.2.8        Internal Oscillator Clock Switch

                   Frequency Selection                                          Timing

The      Internal  Oscillator  Block   can  be  used  with  the  When switching between the HFINTOSC, MFINTOSC

4x PLL associated with the External Oscillator Block to          and the LFINTOSC, the new oscillator may already be

produce a 32 MHz internal system clock source. The               shut down to save power (see Figure 5-3). If this is the

following settings are required to use the 32 MHz inter-         case, there is a delay after the IRCF<3:0> bits of the

nal clock source:                                                OSCCON register are modified before the frequency

•  The FOSC bits in Configuration Words must be                  selection     takes  place.    The   OSCSTAT         register  will

   set to use the INTOSC source as the device                    reflect  the  current      active  status   of  the  HFINTOSC,

   system clock (FOSC<1:0> = 00).                                MFINTOSC and LFINTOSC oscillators. The sequence

•  The SCS bits in the OSCCON register must be                   of a frequency selection is as follows:

   cleared to use the clock determined by                        1.  IRCF<3:0>        bits  of  the  OSCCON      register  are

   FOSC<1:0> in Configuration Words                                  modified.

   (SCS<1:0> = 00).                                              2.  If the new clock is shut down, a clock start-up

•  The IRCF bits in the OSCCON register must be                      delay is started.

   set to the 8 MHz HFINTOSC set to use                          3.  Clock switch circuitry waits for a falling edge of

   (IRCF<3:0> = 1110).                                               the current clock.

•  The SPLLEN bit in the OSCCON register must be                 4.  The     current   clock    is  held  low    and  the  clock

   set to enable the 4x PLL, or the PLLEN bit of the                 switch circuitry waits for a rising edge in the new

   Configuration Words must be programmed to a                       clock.

   ‘1’.                                                          5.  The new clock is now active.

   Note:  When       using     the     PLLEN     bit  of    the  6.  The OSCSTAT register is updated as required.

          Configuration Words, the 4x PLL cannot                 7.  Clock switch is complete.

          be disabled by software and the 8 MHz                  See Figure 5-3 for more details.

          HFINTOSC             option  will  no  longer     be

          available.                                             If the internal oscillator speed is switched between two

The 4x PLL is not available for use with the internal            clocks of the same source, there is no start-up delay

oscillator when the SCS bits of the OSCCON register              before the new frequency is selected. Clock switching

are set to ‘1x’. The SCS bits must be set to ‘00’ to use         time delays are shown in Table 5-1.

the 4x PLL with the internal oscillator.                         Start-up    delay    specifications      are    located   in   the

                                                                 oscillator    tables       of      Section      27.0 “Electrical

                                                                 Specifications”.

DS40001782C-page 66                                                                              2016 Microchip Technology Inc.
                                                                                   PIC16(L)F1574/5/8/9

FIGURE 5-3:   INTERNAL OSCILLATOR SWITCH TIMING

HFINTOSC/     LFINTOSC (WDT disabled)

MFINTOSC

HFINTOSC/

MFINTOSC                          Oscillator Delay(1)                2-cycle Sync                    Running

LFINTOSC

IRCF <3:0>    0                                      0

System Clock

HFINTOSC/     LFINTOSC (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  is  enabled

LFINTOSC

                                  Oscillator Delay(1)  2-cycle Sync                         Running

HFINTOSC/

MFINTOSC

IRCF <3:0>    =0                                       0

System Clock

Note  1:     See Table 5-1, “Oscillator Switching Delays”            for more information.

 2016 Microchip Technology Inc.                                                                             DS40001782C-page 67
PIC16(L)F1574/5/8/9

5.3          Clock Switching                                           5.4     Clock Switching Before Sleep

The system clock source can be switched between                        When clock switching from an old clock to a new clock

external and internal clock sources via software using                 is requested just prior to entering Sleep mode, it is

the System Clock Select (SCS) bits of the OSCCON                       necessary to confirm that the switch is complete before

register. The following clock sources can be selected                  the SLEEP instruction is executed. Failure to do so may

using the SCS bits:                                                    result in an incomplete switch and consequential loss of

•  Default system oscillator determined by FOSC                        the   system   clock     altogether.  Clock    switching     is

   bits in Configuration Words                                         confirmed by monitoring the clock Status bits in the

•  Internal Oscillator Block (INTOSC)                                  OSCSTAT       register.  Switch       confirmation  can      be

                                                                       accomplished by sensing that the ready bit for the new

5.3.1            SYSTEM CLOCK SELECT (SCS)                             clock is set or the ready bit for the old clock is cleared.

                 BITS                                                  For  example,  when      switching    between  the  internal

The System Clock Select (SCS) bits of the OSCCON                       oscillator with the PLL and the internal oscillator without

register selects the system clock source that is used for              the PLL, monitor the PLLR bit. When PLLR is set, the

the CPU and peripherals.                                               switch to 32 MHz operation is complete. Conversely,

                                                                       when    PLLR   is  cleared,  the      switch  from  32   MHz

•  When the SCS bits of the OSCCON register = 00,                      operation to the selected internal clock is complete.

   the system clock source is determined by value of

   the FOSC<1:0> bits in the Configuration Words.

•  When the SCS bits of the OSCCON register = 01,

   the system clock source is the Timer1 oscillator.

•  When the SCS bits of the OSCCON register = 1x,

   the system clock source is chosen by the internal

   oscillator frequency selected by the IRCF<3:0>

   bits of the OSCCON register. After a Reset, the

   SCS bits of the OSCCON register are always

   cleared.

   Note:         Any   automatic   clock    switch   does   not

                 update  the    SCS  bits   of  the  OSCCON

                 register. The user can monitor the OSTS

                 bit of the OSCSTAT register to determine

                 the current system clock source.

When     switching      between    clock  sources,   a  delay  is

required     to  allow   the  new  clock    to  stabilize.  These

oscillator delays are shown in Table 5-1.

TABLE 5-1:              OSCILLATOR SWITCHING DELAYS

   Switch From                       Switch To              Frequency                     Oscillator Delay

                                     LFINTOSC(1)            31 kHz
                                     MFINTOSC(1)                                                                      (TWARM)(2)
   Sleep/POR                         HFINTOSC(1)            31.25 kHz-500 kHz             Oscillator Warm-up  Delay

                                                            31.25 kHz-16 MHz

   Sleep/POR                         EC(1)                  DC – 32 MHz                   2 cycles

   LFINTOSC                          EC(1)                  DC – 32 MHz                   1 cycle of each

   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

   PLL inactive                      PLL active             16-32 MHz                     2 ms (approx.)

   Note  1:      PLL inactive.

         2:      See Section 27.0 “Electrical Specifications”.

DS40001782C-page 68                                                                                  2016 Microchip Technology Inc.
                                                                          PIC16(L)F1574/5/8/9

5.5          Register Definitions: Oscillator Control

REGISTER 5-1:         OSCCON: OSCILLATOR CONTROL REGISTER

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

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

bit 7                                                                                                          bit 0

Legend:

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 (see Section 5.2.2.1 “HFINTOSC”)

                  1101 =  4 MHz HF

                  1100 =  2 MHz HF

                  1011 =  1 MHz HF
                          500 kHz HF(1)
                  1010 =  250 kHz HF(1)

                  1001 =  125 kHz HF(1)

                  1000 =

                  0111 =  500 kHz MF (default upon Reset)

                  0110 =  250 kHz MF

                  0101 =  125 kHz MF

                  0100 =  62.5 kHz MF
                          31.25 kHz HF(1)
                  0011 =

                  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 = Reserved

                  00 = Clock determined by FOSC<1:0> in Configuration Words.

Note     1:   Duplicate frequency derived from HFINTOSC.

 2016 Microchip Technology Inc.                                                                     DS40001782C-page 69
PIC16(L)F1574/5/8/9

REGISTER 5-2:         OSCSTAT: OSCILLATOR STATUS REGISTER

        U-0           R-0/q  R-q/q                 R-0/q      R-0/q            R-q/q    R-0/q                 R-0/q

        —             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            Unimplemented: Read as ‘0’

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<1:0> bits     of  the  Configuration  Words

                  0=  Running from an internal oscillator (FOSC<1:0> = 00)

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

DS40001782C-page 70                                                                      2016 Microchip Technology Inc.
                                                                                   PIC16(L)F1574/5/8/9

REGISTER 5-3:         OSCTUNE: OSCILLATOR TUNING REGISTER

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

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

 2016 Microchip Technology Inc.                                                                          DS40001782C-page 71
PIC16(L)F1574/5/8/9

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

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

                                                                                                                 on Page

OSCCON      SPLLEN                    IRCF<3:0>                     —                          SCS<1:0>          69

OSCSTAT          —           PLLR     OSTS      HFIOFR    HFIOFL    MFIOFR                     LFIOFR   HFIOFS   70

OSCTUNE          —           —                            TUN<5:0>                                               71

Legend:  — = unimplemented location, read as ‘0’. Shaded cells are not used by clock sources.

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

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

                                                                                                                 on Page

CONFIG1  13:8           —       —     —          —        CLKOUTEN     BOREN<1:0>                        —       56

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

Legend:  — = unimplemented location, read as ‘0’. Shaded cells are not used by clock sources.

DS40001782C-page 72                                                                             2016 Microchip Technology Inc.
                                                                     PIC16(L)F1574/5/8/9

6.0      RESETS

There are multiple ways to reset this device:

•  Power-On Reset (POR)

•  Brown-Out Reset (BOR)

•  Low-Power Brown-Out Reset (LPBOR)

•  MCLR Reset

•  WDT Reset

•  RESET instruction

•  Stack Overflow

•  Stack Underflow

•  Programming mode exit

To allow VDD to stabilize, an optional Power-up Timer

can be enabled to extend the Reset time after a BOR

or POR event.

A simplified block diagram of the On-chip Reset Circuit

is shown in Figure 6-1.

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

                                                                                                 Rev. 10-000006A

                                                                                                 8/14/2013

                      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        Power-up

                         Reset                                                Timer

                      LPBOR                                LFINTOSC           PWRTE

                         Reset

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

 2016 Microchip Technology Inc.                                                                 DS40001782C-page 73
PIC16(L)F1574/5/8/9

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

The POR circuit holds the device in Reset until VDD has                 The BOR circuit holds the device in Reset when VDD

reached   an    acceptable      level   for    minimum      operation.  reaches   a    selectable      minimum      level.     Between       the

Slow    rising  VDD,      fast  operating      speeds       or  analog  POR and BOR, complete voltage range coverage for

performance may require greater than minimum VDD.                       execution protection can be implemented.

The PWRT, BOR or MCLR features can be used to                           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 Configu-

conditions have been met.                                               ration Words. The four operating modes are:

6.1.1           POWER-UP TIMER (PWRT)                                   •  BOR is always on

The    Power-up   Timer         provides       a    nominal      64 ms  •  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 6-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 6-2 for more information.

AN607, “Power-up Trouble Shooting” (DS00607).

TABLE 6-1:            BOR OPERATING MODES

BOREN<1:0>                  SBOREN                  Device Mode         BOR Mode                Instruction Execution upon:

                                                                                       Release of POR or Wake-up from Sleep

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

                                                    Awake               Active    Waits for BOR ready (BORRDY = 1)

          10                    X                      Sleep            Disabled

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

          01                                                X           Disabled  Begins immediately (BORRDY = x)

                                0

          00                    X                           X           Disabled

Note 1:         In these specific cases, “release of POR” and “wake-up from Sleep,” there is no delay in start-up. The BOR

                ready flag, (BORRDY = 1), will be set before the CPU is ready to execute instructions because the BOR

                circuit is forced on by the BOREN<1:0> bits.

6.2.1           BOR IS ALWAYS ON                                        6.2.3          BOR CONTROLLED BY SOFTWARE

When the BOREN bits of Configuration Words are pro-                     When      the  BOREN         bits  of      Configuration    Words    are

grammed 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

6.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 pro-                     BOR protection is unchanged by Sleep.

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

DS40001782C-page 74                                                                                     2016 Microchip Technology Inc.
                                                                                 PIC16(L)F1574/5/8/9

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

6.3          Register Definitions: BOR Control

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

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

SBOREN             BORFS             —                  —                   —         —              —          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:

                   1=  BOR Enabled

                   0=  BOR Disabled

                   If BOREN <1:0> in Configuration Words  01:

                   SBOREN is read/write, but has no effect on the BOR

bit 6              BORFS: Brown-Out Reset Fast Start bit(1)

                   If BOREN <1:0> = 10 (Disabled in Sleep) or BOREN<1:0> = 01 (Under software        control):

                   1=  Band gap is forced on always (covers sleep/wake-up/operating cases)

                   0=  Band gap operates normally, and may turn off

                   If BOREN<1:0> = 11 (Always on) or BOREN<1:0> = 00 (Always off)

                   BORFS is Read/Write, but has no effect.

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.

 2016 Microchip Technology Inc.                                                                           DS40001782C-page 75
PIC16(L)F1574/5/8/9

6.4        Low-Power Brown-Out Reset                              6.6        Watchdog Timer (WDT) Reset

           (LPBOR)                                                The Watchdog Timer generates a Reset if the firmware

The Low-Power Brown-Out Reset (LPBOR) operates                    does not issue a CLRWDT instruction within the time-out

like the BOR to detect low voltage conditions on the              period. The TO and PD bits in the STATUS register are

VDD pin. When too low of a voltage is detected, the               changed    to  indicate    the  WDT        Reset.    See  Section

device is held in Reset. When this occurs, a register bit         9.0 “Watchdog Timer (WDT)” for more information.

(BOR) is changed to indicate that a BOR Reset has

occurred. The BOR bit in PCON is used for both BOR                6.7        RESET Instruction

and the LPBOR. Refer to Register 6-2.                             A RESET instruction will cause a device Reset. The RI

The LPBOR voltage threshold (VLPBOR) has a wider                  bit in the PCON register will be set to ‘0’. See Table 6-4

tolerance    than  the  BOR  (VBOR),   but   requires   much      for   default  conditions  after    a  RESET       instruction  has

less current (LPBOR current) to operate. The LPBOR                occurred.

is intended for use when the BOR is configured as

disabled   (BOREN = 00)      or    disabled  in  Sleep  mode      6.8        Stack Overflow/Underflow Reset

(BOREN = 10).

Refer to Figure 6-1 to see how the LPBOR interacts                The   device   can  reset    when      the  Stack    Overflows  or

with other modules.                                               Underflows. The STKOVF or STKUNF bits of the PCON

                                                                  register indicate the Reset condition. These Resets are

6.4.1         ENABLING LPBOR                                      enabled    by  setting  the  STVREN         bit  in  Configuration

The    LPBOR       is  controlled  by  the   LPBOR      bit  of   Words.     See      Section     3.5.2 “Overflow/Underflow

Configuration Words. When the device is erased, the               Reset” for more information.

LPBOR module defaults to disabled.                                6.9        Programming Mode Exit

6.5        MCLR                                                   Upon    exit   of  Programming         mode,     the  device    will

The MCLR is an optional external input that can reset             behave as if a POR had just occurred.

the  device.  The      MCLR  function  is  controlled   by   the  6.10       Power-Up Timer

MCLRE bit of Configuration Words and the LVP bit of

Configuration Words (Table 6-2).                                  The Power-up Timer optionally delays device execution

                                                                  after a BOR or POR event. This timer is typically used to

TABLE 6-2:             MCLR CONFIGURATION                         allow VDD to stabilize before allowing the device to start

     MCLRE                   LVP                 MCLR             running.

                                                                  The Power-up Timer is controlled by the PWRTE bit of

          0                  0                   Disabled         Configuration Words.

          1                  0                   Enabled

          x                  1                   Enabled          6.11       Start-up Sequence

6.5.1         MCLR ENABLED                                        Upon the release of a POR or BOR, the following must

                                                                  occur before the device will begin executing:

When MCLR is enabled and the pin is held low, the                 1.    Power-up Timer runs to completion (if enabled).

device is held in Reset. The MCLR pin is connected to             2.    MCLR must be released (if enabled).

VDD through an internal weak pull-up.

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 Section

                                                                  5.0 “Oscillator Module” for more information.

Note:         A Reset does not drive the MCLR pin low.            The   Power-up      Timer    runs   independently         of  MCLR

6.5.2         MCLR DISABLED                                       Reset. If MCLR is kept low long enough, the Power-up

                                                                  Timer will expire. Upon bringing MCLR high, the device

When MCLR is disabled, the pin functions as a general             will  begin    execution     after     10   FOSC      cycles    (see

purpose input and the internal weak pull-up is under              Figure 6-3). This is useful for testing purposes or to

software     control.  See   Section   11.1 “PORTA      Regis-    synchronize more than one device operating in parallel.

ters” for more information.

DS40001782C-page 76                                                                             2016 Microchip Technology Inc.
                                                                          PIC16(L)F1574/5/8/9

FIGURE 6-3:        RESET START-UP SEQUENCE

                                                                                                                 Rev. 10-000032B

                                                                                                                 7/30/2013

             VDD

Internal POR

Power-up Timer                                                            TPWRT

MCLR

Internal RESET

Int. Oscillator

         FOSC

Begin Execution                   code execution (1)                                    code execution (1)

                   Internal Oscillator, PWRTEN = 0                        Internal Oscillator, PWRTEN = 1

             VDD

Internal POR

Power-up Timer                                                            TPWRT

MCLR

Internal RESET

Ext. Clock (EC)

         FOSC

Begin Execution                   code execution (1)                                    code execution (1)

                   External Clock (EC modes), PWRTEN = 0                  External Clock (EC modes), PWRTEN = 1

Note 1:      Code  execution begins 10 FOSC cycles after the FOSC  clock  is released.

 2016 Microchip Technology Inc.                                                        DS40001782C-page 77
PIC16(L)F1574/5/8/9

6.12     Determining the Cause of a Reset

Upon  any  Reset,  multiple     bits  in  the  STATUS  and

PCON registers are updated to indicate the cause of

the Reset. Table 6-3 and Table 6-4 show the Reset

conditions of these registers.

TABLE 6-3:         RESET STATUS BITS AND THEIR SIGNIFICANCE

STKOVF     STKUNF    RWDT             RMCLR    RI      POR  BOR  TO         PD                 Condition

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

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

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

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

u           u        0                    u    u       u    u    0          u      WDT Reset

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

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

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

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

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

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

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

TABLE 6-4:         RESET CONDITION FOR SPECIAL REGISTERS

                     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 the Global Interrupt Enable bit (GIE) is set, the return address

         is pushed on the stack and PC is loaded with the interrupt vector (0004h) after execution of PC + 1.

DS40001782C-page 78                                                                       2016 Microchip Technology Inc.
                                                                           PIC16(L)F1574/5/8/9

6.13       Power Control (PCON) Register

The Power Control (PCON) register contains flag bits

to differentiate between a:

•  Power-On Reset (POR)

•  Brown-Out Reset (BOR)

•  Reset Instruction Reset (RI)

•  MCLR Reset (RMCLR)

•  Watchdog Timer Reset (RWDT)

•  Stack Underflow Reset (STKUNF)

•  Stack Overflow Reset (STKOVF)

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

6.14       Register Definitions: Power Control

REGISTER 6-2:            PCON: POWER CONTROL REGISTER

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

        STKOVF       STKUNF         —                     RWDT   RMCLR                 RI            POR         BOR

   bit 7                                                                                                                bit 0

   Legend:

   HC = Bit is cleared by hardware                               HS = Bit is set by hardware

   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            STKOVF: Stack Overflow Flag bit

                     1=  A Stack Overflow occurred

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

   bit  6            STKUNF: Stack Underflow Flag bit

                     1=  A Stack Underflow occurred

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

   bit  5            Unimplemented: Read as ‘0’

   bit  4            RWDT: Watchdog Timer Reset Flag bit

                     1 = A Watchdog Timer Reset has not occurred or set by firmware

                     0 = A Watchdog Timer Reset has occurred (cleared by hardware)

   bit  3            RMCLR: MCLR Reset Flag bit

                     1 = A MCLR Reset has not occurred or set by firmware

                     0 = A MCLR Reset has occurred (cleared by hardware)

   bit  2            RI: RESET Instruction Flag bit

                     1 = A RESET instruction has not been executed or set by firmware

                     0 = A RESET instruction has been executed (cleared by hardware)

   bit  1            POR: Power-On Reset Status bit

                     1 = No Power-on Reset occurred

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

   bit  0            BOR: Brown-Out Reset Status bit

                     1 = No Brown-out Reset occurred

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

                         occurs)

 2016 Microchip Technology Inc.                                                                     DS40001782C-page 79
PIC16(L)F1574/5/8/9

TABLE 6-5:       SUMMARY OF REGISTERS ASSOCIATED WITH RESETS

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

                                                                                                         on Page

BORCON      SBOREN           BORFS    —         —         —           —              —        BORRDY        75

PCON        STKOVF       STKUNF       —         RWDT      RMCLR       RI             POR      BOR           79

STATUS           —           —        —         TO        PD          Z              DC       C             23

WDTCON           —           —                            WDTPS<4:0>                          SWDTEN        99

Legend:   — = unimplemented bit, reads as ‘0’. Shaded cells are not used by Resets.

Note  1:  Other (non Power-up) Resets include MCLR Reset and Watchdog Timer Reset during normal operation.

TABLE 6-6:       SUMMARY OF CONFIGURATION WORD WITH RESETS

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

                                                                                                         on Page

CONFIG1   13:8       —          —     —         —         CLKOUTEN        BOREN<1:0>          —             56

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

CONFIG2   13:8       —          —     LVP       DEBUG     LPBOREN     BORV           STVREN   PLLEN         57

            7:0      —          —     —         —         —           PPS1WAY                 WRT<1:0>

Legend:   — = unimplemented location, read      as ‘0’. Shaded cells are not used by Resets.

DS40001782C-page 80                                                                   2016 Microchip Technology Inc.
                                                                        PIC16(L)F1574/5/8/9

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

                                                                                         Rev. 10-000010A

                                                                                             1/13/2014

                                                             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>

                PIEn<7>                                           GIE

 2016 Microchip Technology Inc.                                        DS40001782C-page 81
PIC16(L)F1574/5/8/9

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, PIE2 and PIE3 registers)

The INTCON, PIR1, PIR2 and PIR3 registers record

individual interrupts via interrupt flag bits. Interrupt flag

bits will be set, regardless of the status of the GIE, PEIE

and individual interrupt enable bits.

The following events happen when an interrupt event

occurs while the GIE bit is set:

•  Current prefetched instruction is flushed

•  GIE bit is cleared

•  Current Program Counter (PC) is pushed onto the

   stack

•  Critical registers are automatically saved to the

   shadow registers (See “Section 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.

DS40001782C-page 82                                                                                2016 Microchip Technology Inc.
                                                                          PIC16(L)F1574/5/8/9

FIGURE 7-2:         INTERRUPT LATENCY

Fosc

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

CLKR                                              Interrupt Sampled

                                                  during Q1

Interrupt

GIE

PC           PC-1                 PC                PC+1                  0004h        0005h

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)

 2016 Microchip Technology Inc.                                                                   DS40001782C-page 83
PIC16(L)F1574/5/8/9

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

FOSC

CLKOUT                        (3)

INT pin                                      (1)

INTF                 (1)            (4)                         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:  For minimum width of INT pulse, refer to AC specifications in Section 27.0 “Electrical Specifications”.

         4:  INTF is enabled to be set any time during the Q4-Q1 cycles.

DS40001782C-page 84                                                                                  2016 Microchip Technology Inc.
                                                                         PIC16(L)F1574/5/8/9

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

ters are automatically restored. Any modifications to

these registers during the ISR will be lost. If modifica-

tions to any of these registers are desired, the corre-

sponding shadow register should be modified and the

value    will  be   restored      when     exiting  the  ISR.      The

shadow    registers    are      available  in  Bank     31    and   are

readable       and  writable.     Depending         on   the  user’s

application, other registers may also need to be saved.

 2016 Microchip Technology Inc.                                         DS40001782C-page 85
PIC16(L)F1574/5/8/9

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(1)     PEIE(2)  TMR0IE                      INTE         IOCIE        TMR0IF             INTF  IOCIF(3)

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)

                  1 = Enables all active interrupts

                  0 = Disables all interrupts

bit  6            PEIE: Peripheral Interrupt Enable bit(2)

                  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(3)

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

               enable bit or the Global Interrupt Enable bit, GIE of the INTCON register. User software should ensure the

               appropriate interrupt flag bits are clear prior to enabling an interrupt.

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

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

DS40001782C-page 86                                                                               2016 Microchip Technology Inc.
                                                                           PIC16(L)F1574/5/8/9

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        U-0             U-0  R/W-0/0        R/W-0/0

TMR1GIE               ADIE        RCIE                  TXIE          —               —    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-2          Unimplemented: Read as ‘0’

bit  1            TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

                  1 = Enables the Timer2 to PR2 match interrupt

                  0 = Disables the Timer2 to PR2 match interrupt

bit  0            TMR1IE: Timer1 Overflow Interrupt Enable bit

                  1 = Enables the Timer1 overflow interrupt

                  0 = Disables the Timer1 overflow interrupt

Note:         Bit PEIE of the INTCON register must be

              set to enable any peripheral interrupt.

 2016 Microchip Technology Inc.                                                                    DS40001782C-page 87
PIC16(L)F1574/5/8/9

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

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

         —            C2IE  C1IE                     —      —    —                              —                —

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             Unimplemented: Read as ‘0’

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-0           Unimplemented: Read as ‘0’

Note:       Bit PEIE of the INTCON register must be

            set to enable any peripheral interrupt.

DS40001782C-page 88                                                    2016 Microchip Technology Inc.
                                                                     PIC16(L)F1574/5/8/9

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

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

     PWM4IE       PWM3IE          PWM2IE               PWM1IE   —    —                              —                —

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            PWM4IE: PWM4 Interrupt Enable         bit

                  1=  Enables the PWM4 interrupt

                  0=  Disables the PWM4 interrupt

bit  6            PWM3IE: PWM3 Interrupt Enable         bit

                  1=  Enables the PWM3 interrupt

                  0=  Disables the PWM3 interrupt

bit  5            PWM2IE: PWM2 Interrupt Enable         bit

                  1=  Enables the PWM2 interrupt

                  0=  Disables the PWM2 interrupt

bit  4            PWM1IE: PWM1 Interrupt Enable         bit

                  1=  Enables the PWM1 interrupt

                  0=  Disables the PWM1 interrupt

bit  3-0          Unimplemented: Read as ‘0’

Note:         Bit PEIE of the INTCON register must be

              set to enable any peripheral interrupt.

 2016 Microchip Technology Inc.                                                                    DS40001782C-page 89
PIC16(L)F1574/5/8/9

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

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

TMR1GIF               ADIF  RCIF                  TXIF         —    —    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: 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-2          Unimplemented: Read as ‘0’

bit  1            TMR2IF: Timer2 to PR2 Interrupt Flag bit

                  1 = Interrupt is pending

                  0 = Interrupt is not pending

bit  0            TMR1IF: Timer1 Overflow Interrupt Flag bit

                  1 = Interrupt is pending

                  0 = Interrupt is not pending

Note:         Interrupt flag bits are set when an interrupt

              condition occurs, regardless of the state of

              its corresponding enable bit or the Global

              Interrupt Enable bit, GIE of the INTCON

              register. User software should ensure the

              appropriate interrupt flag bits are clear prior

              to enabling an interrupt. The USART RCIF

              and TXIF bits are read-only.

DS40001782C-page 90                                                       2016 Microchip Technology Inc.
                                                                  PIC16(L)F1574/5/8/9

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

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

         —            C2IF             C1IF             —    —    —                              —                —

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             Unimplemented: Read as ‘0’

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-0           Unimplemented: Read as ‘0’

Note:       Interrupt flag bits are set when an interrupt

            condition occurs, regardless of the state of

            its corresponding enable bit or the Global

            Interrupt Enable bit, GIE of the INTCON

            register. User software should ensure the

            appropriate interrupt flag bits are clear prior

            to enabling an interrupt.

 2016 Microchip Technology Inc.                                                                 DS40001782C-page 91
PIC16(L)F1574/5/8/9

REGISTER 7-7:         PIR3: PERIPHERAL INTERRUPT REQUEST REGISTER 3

       R-0/0          R-0/0  R-0/0                 R-0/0   U-0                   U-0           U-0                U-0

PWM4IF(1)         PWM3IF(1)  PWM2IF(1)          PWM1IF(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             PWM4IF: PWM4 Interrupt Flag      bit(1)

                  1 = Interrupt is pending

                  0 = Interrupt is not pending

bit 6             PWM3IF: PWM3 Interrupt Flag      bit(1)

                  1 = Interrupt is pending

                  0 = Interrupt is not pending

bit 5             PWM2IF: PWM2 Interrupt Flag      bit(1)

                  1 = Interrupt is pending

                  0 = Interrupt is not pending

bit 4             PWM1IF: PWM1 Interrupt Flag      bit(1)

                  1 = Interrupt is pending

                  0 = Interrupt is not pending

bit 3-0           Unimplemented: Read as ‘0’

Note     1:   These bits are read-only. They must be cleared by addressing the Flag registers inside the module.

         2:   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 appropri-

              ate interrupt flag bits are clear prior to enabling an interrupt.

DS40001782C-page 92                                                                    2016 Microchip Technology Inc.
                                                                         PIC16(L)F1574/5/8/9

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   86

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

PIE1         TMR1GIE              ADIE   RCIE    TXIE         —          —            TMR2IE       TMR1IE  87

PIE2         —                    C2IE   C1IE    —            —          —            —            —       88

PIE3         PWM4IE   PWM3IE             PWM2IE  PWM1IE       —          —            —            —       89

PIR1         TMR1GIF              ADIF   RCIF    TXIF         —          —            TMR2IF       TMR1IF  90

PIR2         —