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

产品描述

搜索
 

PIC18F47K40-E/ML

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

器件描述

IC MCU 8BIT 128KB FLASH 44QFN

参数
产品属性属性值
核心处理器:PIC
核心尺寸:8-位
速度:64MHz
连接性:I²C,LINbus,SPI,UART/USART
外设:欠压检测/复位,LVD,POR,PWM,WDT
I/O 数:36
程序存储容量:128KB(64K x 16)
程序存储器类型:闪存
EEPROM 容量:1K x 8
RAM 容量:3.6K x 8
电压 - 电源(Vcc/Vdd):2.3 V ~ 5.5 V
数据转换器:A/D 35x10b,D/A 1x5b
振荡器类型:内部
工作温度:-40°C ~ 125°C(TA)
封装/外壳:44-VQFN 裸露焊盘
供应商器件封装:44-QFN(8x8)

PIC18F47K40-E/ML器件文档内容

                                                PIC18(L)F27/47K40

                                  PIC18(L)F27/47K40 Data Sheet

Description

These PIC18(L)F27/47K40 microcontrollers feature Analog, Core Independent Peripherals and

Communication Peripherals, combined with eXtreme Low-Power (XLP) technology for a wide range of

general purpose and low-power applications. These 28/40/44 -pin devices are equipped with a 10-bit

ADC with Computation (ADCC) automating Capacitive Voltage Divider (CVD) techniques for advanced

touch sensing, averaging, filtering, oversampling and performing automatic threshold comparisons. They

also offer a set of Core Independent Peripherals such as Complementary Waveform Generator (CWG),

Windowed Watchdog Timer (WWDT), Cyclic Redundancy Check (CRC)/Memory Scan, Zero-Cross

Detect (ZCD) and Peripheral Pin Select (PPS), providing for increased design flexibility and lower system

cost.

Core Features

•      C Compiler Optimized RISC Architecture

•      Operating Speed:

       –  DC – 64 MHz clock input over the full VDD range

       –  62.5 ns minimum instruction cycle

•      Programmable 2-Level Interrupt Priority

•      31-Level Deep Hardware Stack

•      Three 8-Bit Timers (TMR2/4/6) with Hardware Limit Timer (HLT)

•      Four 16-Bit Timers (TMR0/1/3/5)

•      Low-Current Power-on Reset (POR)

•      Power-up Timer (PWRT)

•      Brown-out Reset (BOR)

•      Low-Power BOR (LPBOR) Option

•      Windowed Watchdog Timer (WWDT):

       –  Watchdog Reset on too long or too short interval between watchdog  clear  events

       –  Variable prescaler selection

       –  Variable window size selection

       –  All sources configurable in hardware or software

Memory

•      128K bytes Program Flash Memory

•      3728 Bytes Data SRAM Memory

•      1024 Bytes Data EEPROM

•      Programmable Code Protection

© 2017 Microchip Technology Inc.                Datasheet                                  40001844D-page 1
                                                                     PIC18(L)F27/47K40

•  Direct, Indirect and Relative Addressing modes

Operating Characteristics

•  Operating Voltage Ranges:

   –  1.8V to 3.6V (PIC18LF27/47K40 )

   –  2.3V to 5.5V ( PIC18F27/47K40)

•  Temperature Range:

   –  Industrial: -40°C to 85°C

   –  Extended: -40°C to 125°C

Power-Saving Operation Modes

•  Doze: CPU and Peripherals Running at Different Cycle Rates (typically CPU is lower)

•  Idle: CPU Halted While Peripherals Operate

•  Sleep: Lowest Power Consumption

•  Peripheral Module Disable (PMD):

   –  Ability to selectively disable hardware module to minimize active power consumption       of  unused

      peripherals

eXtreme Low-Power (XLP) Features

•  Sleep mode: 50 nA @ 1.8V, typical

•  Windowed Watchdog Timer: 500 nA @ 1.8V, typical

•  Secondary Oscillator: 500 nA @ 32 kHz

•  Operating Current:

   –  8 uA @ 32 kHz, 1.8V, typical

   –  32 uA/MHz @ 1.8V, typical

Digital Peripherals

•  Complementary Waveform Generator (CWG):

   –  Rising and falling edge dead-band control

   –  Full-bridge, half-bridge, 1-channel drive

   –  Multiple signal sources

•  Capture/Compare/PWM (CCP) modules:

   –  Two CCPs

   –  16-bit resolution for Capture/Compare modes

   –  10-bit resolution for PWM mode

•  10-Bit Pulse-Width Modulators (PWM):

   –  Two 10-bit PWMs

•  Serial Communications:

   –  Two Enhanced USART (EUSART) with Auto-Baud            Detect,  Auto-wake-up  on   Start.

      RS-232, RS-485, LIN compatible

   –  SPI

   –  I2C, SMBus and PMBus™ compatible

© 2017 Microchip Technology Inc.                 Datasheet                              40001844D-page 2
                                                                PIC18(L)F27/47K40

•  Up to 35 I/O Pins and One Input Pin:

   –  Individually programmable pull-ups

   –  Slew rate control

   –  Interrupt-on-change on most pins

   –  Input level selection control

•  Programmable CRC with Memory Scan:

   –  Reliable data/program memory monitoring for Fail-Safe operation (e.g., Class  B)

   –  Calculate CRC over any portion of Flash or EEPROM

   –  High-speed or background operation

•  Hardware Limit Timer (TMR2/4/6+HLT):

   –  Hardware monitoring and Fault detection

•  Peripheral Pin Select (PPS):

   –  Enables pin mapping of digital I/O

•  Data Signal Modulator (DSM)

Analog Peripherals

•  10-Bit Analog-to-Digital Converter with Computation (ADC2):

   –  35 external channels

   –  Conversion available during Sleep

   –  Four internal analog channels

   –  Internal and external trigger options

   –  Automated math functions on input signals:

      •  Averaging, filter calculations, oversampling and threshold comparison

   –  8-bit hardware acquisition timer

•  Hardware Capacitive Voltage Divider (CVD) Support:

   –  8-bit precharge timer

   –  Adjustable sample and hold capacitor array

   –  Guard ring digital output drive

•  Zero-Cross Detect (ZCD):

   –  Detect when AC signal on pin crosses ground

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

   –  Output available externally

   –  Programmable 5-bit voltage (% of VDD)

   –  Internal connections to comparators, Fixed Voltage Reference and ADC

•  Two Comparators (CMP):

   –  Four external inputs

   –  External output via PPS

•  Fixed Voltage Reference (FVR) module:

   –  1.024V, 2.048V and 4.096V output levels

Clocking Structure

•  High-Precision Internal Oscillator Block (HFINTOSC):

   –  Selectable frequencies up to 64 MHz

© 2017 Microchip Technology Inc.             Datasheet                              40001844D-page 3
                                                                                                                                                                                                                                                      PIC18(L)F27/47K40

                –                              ±1% at calibration

             •  32 kHz Low-Power Internal Oscillator (LFINTOSC)

             •  External 32 kHz Crystal Oscillator (SOSC)

             •  External High-frequency Oscillator Block:

                –                              Three crystal/resonator modes

                –                              Digital Clock Input mode

                –                              4x PLL with external sources

             •  Fail-Safe Clock Monitor:

                –                              Allows for safe shutdown if external clock stops

             •  Oscillator Start-up Timer (OST)

             Programming/Debug Features

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

             •  In-Circuit Debug (ICD) with Three Breakpoints via Two                                                                                                                                                 Pins

             •  Debug Integrated On-Chip

             PIC18(L)F27/47K40 Family Types

Table   1.   Devices included in this data sheet

Device          Program Memory Flash  (bytes)  Data SRAM  (bytes)  Data EEPROM  (bytes)  I/O Pins  16-bit Timers  Comparators  10-bit ADC2 with  Computation (ch)  5-bit DAC  Zero-Cross Detect  CCP/10-bit PWM  CWG  SMT   Low Voltage Detect (LVD)  8-bit TMR with HLT  Windowed Watchdog  Timer  CRC with Memory Scan  EUSART  I2C/SPI  PPS  Peripheral Module Disable  Temperature Indicator  Debug(1)

PIC18(L)F27K40  128k                           3615                1024                  25        4              2                              24                1          1                  2/2             1    0     1                         3                                      Y      Y                     2       2        Y    Y                          Y                      I

PIC18(L)F47K40  128k                           3615                1024                  36        4              2                              35                1          1                  2/2             1    0     1                         3                                      Y      Y                     2       2        Y    Y                          Y                      I

Table 2. Devices not                           included in                               this      data sheet

Device          Program Memory Flash  (bytes)  Data SRAM  (bytes)  Data EEPROM  (bytes)  I/O Pins  16-bit Timers  Comparators  10-bit ADC2 with  Computation (ch)  5-bit DAC  Zero-Cross Detect  CCP/10-bit PWM  CWG  SMT   Low Voltage Detect (LVD)  8-bit TMR with HLT  Windowed Watchdog  Timer  CRC with Memory Scan  EUSART  I2C/SPI  PPS  Peripheral Module Disable  Temperature Indicator  Debug(1)

PIC18(L)F24K40  16k                            1024                256                   25        4              2                              24                1          1                  2/2             1    0     1                         3                                      Y      Y                     1       1        Y    Y                          Y                      I

PIC18(L)F25K40  32k                            2048                256                   25        4              2                              24                1          1                  2/2             1    0     1                         3                                      Y      Y                     1       1        Y    Y                          Y                      I

PIC18(L)F26K40  64k                            3615                1024                  25        4              2                              24                1          1                  2/2             1    0     1                         3                                      Y      Y                     2       2        Y    Y                          Y                      I

PIC18(L)F45K40  32k                            2048                256                   36        4              2                              35                1          1                  2/2             1    0     1                         3                                      Y      Y                     2       2        Y    Y                          Y                      I

PIC18(L)F46K40  64k                            3615                1024                  36        4              2                              35                1          1                  2/2             1    0     1                         3                                      Y      Y                     2       2        Y    Y                          Y                      I

PIC18(L)F65K40  32k                            2048                1024                  60        5              3                              45                1          1                  5/2             1    2     1                         4                                      Y      Y                     5       2        Y    Y                          Y                      I

        © 2017 Microchip Technology Inc.                                                                                                                                      Datasheet                                                                                                                                           40001844D-page 4
                                                                                                                                                                                                                                                          PIC18(L)F27/47K40

Device          Program Memory Flash  (bytes)  Data SRAM  (bytes)  Data EEPROM  (bytes)  I/O Pins  16-bit Timers  Comparators  10-bit ADC2 with  Computation (ch)  5-bit DAC     Zero-Cross Detect  CCP/10-bit PWM  CWG  SMT    Low Voltage Detect (LVD)  8-bit TMR with HLT  Windowed Watchdog  Timer  CRC with Memory Scan  EUSART  I2C/SPI    PPS  Peripheral Module Disable  Temperature Indicator  Debug(1)

PIC18(L)F66K40      64k                        3562                1024                  60        5              3                              45                     1         1                 5/2             1        2  1                         4                                      Y      Y                     5       2          Y    Y                          Y                      I

PIC18(L)F67K40  128k                           3562                1024                  60        5              3                              47                     1         1                 5/2             1        2  1                         4                                      Y      Y                     5       2          Y    Y                          Y                      I

        Note:  Debugging Methods: (I) – Integrated on Chip.

        Data Sheet Index:

        1.      DS40001843 PIC18(L)F24/25K40 Data Sheet, 28-Pin, 8-bit Flash Microcontrollers

        2.      DS40001816 PIC18(L)F26/45/46K40 Data Sheet, 28/40/44-Pin, 8-bit Flash Microcontrollers

        3.      DS40001844 PIC18(L)F27/47K40 Data Sheet, 28/40/44-Pin, 8-bit Flash Microcontrollers

        4.      DS40001842 PIC18(L)F65/66K40 Data Sheet, 64-Pin, 8-bit Flash Microcontrollers

        TF5iiltele.n:amDe:S40001820408--1p0i0nP0D0IC2IP81A8.v(sLd)F67K40 Data Sheet, 64-Pin, 8-bit Flash Microcontrollers

        Last Edit:                                        3/6/2017

        Pin Diagrams First Used:                          N/A

        Notes:                                            Generic 28-pin dual in-line diagram

        Figure 1. 28-pin SPDIP, SSOP, SOIC

                                                                                                                                                                                                                                                                                                                              Rev. 00-000 028A

                                                                                                                                                                                                                                                                                                                                      3/6/201 7

                                                                                                                  MCLR/VPP/RE3                                                1                                          28     RB7/ICSPDAT

                                                                                                                                                                   RA0        2                                          27     RB6/ICSPCLK

                                                                                                                                                                   RA1        3                                          26     RB6

                                                                                                                                                                   RA2        4                                          25     RB4

                                                                                                                                                                   RA3        5                                          24     RB3

                                                                                                                                                                   RA4        6                                          23     RB2

                                                                                                                                                                   RA5        7                                          22     RB1

                                                                                                                                                                   VSS        8                                          21     RB0

                                                                                                                                                                   RA7        9                                          20     VDD

                                                                                                                                                                   RA6        10                                         19     VSS

                                                                                                                                                                   RC0        11                                         18     RC7

                                                                                                                                                                   RC1        12                                         17     RC6

                                                                                                                                                                   RC2        13                                         16     RC5

                                                                                                                                                                   RC3        14                                         15     RC4

        © 2017 Microchip Technology Inc.                                                                                                                                         Datasheet                                                                                                                                            40001844D-page 5
                                                                                                                                                PIC18(L)F27/47K40

Figure 2. 28-pin QFN

                                                                                     RE3/MCLR/VPP  RB7/ICSPDAT  RB6/ICSPCLK                                       Rev. 00-000028B

                                                                                                                                                                  6/23/2017

                                                                           RA1  RA0                                          RB5  RB4

                                                                           28   27 26              25           24           23   22

                                                                  RA2  1                                                               21  RB3

                                                                  RA3  2                                                               20  RB2

                                                                  RA4  3                                                               19  RB1

                                                                  RA5  4                                                               18  RB0

                                                                  VSS  5                                                               17  VDD

                                                                  RA7  6                                                               16  VSS

                                                                  RA6  7                                                               15  RC7

                                                                           8    9    10            11           12           13   14

                                                                           RC0  RC1  RC2           RC3          RC4          RC5  RC6

Filename:   00-000040A.vsd

Title:      40-pin DIP

Last Edit:  3/6/2017

FNirsottUes:e d:It is recoNm/Amended that the exposed bottom                    pad                be           connected to VSS,               however it must   not              be  the  only
NVoSteSs:connectionGteonetrhice4d0-epvinicduea.l in-line diagram

Figure 3. 40-pin PDIP

                                                                                                                                                Rev. 00-000 040A

                                                                                                                                                3/6/201 7

                                  MCLR/VPP/RE3                         1                                                     40   RB7/ICSPDAT

                                                                  RA0  2                                                     39   RB6/ICSPCLK

                                                                  RA1  3                                                     38   RB6

                                                                  RA2  4                                                     37   RB4

                                                                  RA3  5                                                     36   RB3

                                                                  RA4  6                                                     35   RB2

                                                                  RA5  7                                                     34   RB1

                                                                  RE0  8                                                     33   RB0

                                                                  RE1  9                                                     32   VDD

                                                                  RE2  10                                                    31   VSS

                                                                  VDD  11                                                    30   RD7

                                                                  VSS  12                                                    29   RD6

                                                                  RA7  13                                                    28   RD5

                                                                  RA6  14                                                    27   RD4

                                                                  RC0  15                                                    26   RC7

                                                                  RC1  16                                                    25   RC6

                                                                  RC2  17                                                    24   RC5

                                                                  RC3  18                                                    23   RC4

                                                                  RD0  19                                                    22   RD3

                                                                  RD1  20                                                    21   RD2

© 2017 Microchip Technology Inc.                                           Datasheet                                                            40001844D-page 6
Filename:         00-000040B.vsd

Title:            40-pin QFN

Last Edit:        5/15/2017                                                                                                                          PIC18(L)F27/47K40

First Used:       N/A

Notes:            Generic 40-pin QFN  diagram

Figure 4. 40-pin  UQFN

                                                                                                                                                                   Rev. 00-000 040B

                                                                                                                                                                                     5/15/201 7

                                                                      RC6  RC5  RC4  RD3          RD2          RD0           RD1  RC3  RC2  RC1

                                                                      40   39   38   37           36           35            34   33   32   31

                                                            RC7  1                                                                               30  RC0

                                                            RD4  2                                                                               29  RA6

                                                            RD5  3                                                                               28  RA7

                                                            RD6  4                                                                               27  VSS

                                                            RD7  5                                                                               26  VDD

                                                            VSS  6                                                                               25  RE2

                                                            VDD  7                                                                               24  RE1

                                                            RB0  8                                                                               23  RE0

                                                            RB1  9                                                                               22  RA5

                                                            RB2  10                                                                              21  RA4

                                                                      11   12   13   14           15           16            17   18   19   20

                                                                      RB3  RB4  RB5  ICSPCLK/RB6  ICSPDAT/RB7  VPP/MCLR/RE3  RA0  RA1  RA2  RA3

Filename:         00-000044A.vsd

Title:            44-pin TQFP

Last Edit:        5/15/2017

NFoirtset:U seItd:is recomNm/Aended that the exposed             bottom pad be connected to                                                          VSS, however  it must           not         be  the  only
VSNSotecso: nnection toGetnheericd4e4v-picineT.QFP diagram

Figure 5. 44-pin TQFP

                                                                 RC6  RC5  RC4  RD3  RD2          RD0          RD1           RC3  RC2  RC1  RC0                    Rev. 00-000 044A

                                                                                                                                                                   5/15/201 7

                                                                 44   43   42   41   40           39           38            37   36   35   34

                                  RC7                       1                                                                                    33       RA6

                                  RD4                       2                                                                                    32       RA7

                                  RD5                       3                                                                                    31       NC

                                  RD6                       4                                                                                    30       VSS

                                  RD7                       5                                                                                    29       NC

                                  VSS                       6                                                                                    28       VDD

                                  VDD                       7                                                                                    27       RE2

                                  NC                        8                                                                                    26       RE1

                                  RB0                       9                                                                                    25       RE0

                                  RB1                       10                                                                                   24       RA5

                                  RB2                       11                                                                                   23       RA4

                                                                 12   13   14   15   16           17           18            19   20   21   22

                                                                 RB3  NC   RB4  RB5  ICSPCLK/RB6  ICSPDAT/RB7  VPP/MCLR/RE3  RA0  RA1  RA2  RA3

© 2017 Microchip Technology Inc.                                           Datasheet                                                                               40001844D-page 7
                Filename:          00-000044B.vsd

                Title:             44-pin QFN

                Last Edit:         5/15/2017                                                                                                              PIC18(L)F27/47K40

                First Used:        N/A

                Notes:             Generic 44-pin QFN   diagram

        Figure 6. 44-pin           QFN

                                                                                                                                                                              Rev. 00-000 044B

                                                                                                                                                                                 5/15/201 7

                                                                          RC6  RC5  RC4  RD3  RD2          RD0          RD1           RC3  RC2  RC1  RC0

                                                                          44   43   42   41   40           39           38            37   36   35   34

                                                            RC7       1                                                                                   33  RA6

                                                            RD4       2                                                                                   32  RA7

                                                            RD5       3                                                                                   31  NC

                                                            RD6       4                                                                                   30  VSS

                                                            RD7       5                                                                                   29  NC

                                                            VSS       6                                                                                   28  VDD

                                                            VDD       7                                                                                   27  RE2

                                                            NC        8                                                                                   26  RE1

                                                            RB0       9                                                                                   25  RE0

                                                            RB1       10                                                                                  24  RA5

                                                            RB2       11                                                                                  23  RA4

                                                                          12   13   14   15   16           17           18            19   20   21   22

                                                                          RB3  NC   RB4  RB5  ICSPCLK/RB6  ICSPDAT/RB7  VPP/MCLR/RE3  RA0  RA1  RA2  RA3

        Note:  It is recommended that the exposed                     bottom pad be connected                                                        to VSS, however it       must not be the only

        VSS connection to the device.

        Pin Allocation Tables

Table   1. 28-Pin Allocation Table

        28-Pin

I/O(2)  SPDIP,  28-Pin       A/D   Reference    Comparator  Timers       CCP        CWG                    ZCD                        Interrupt      EUSART        DSM        MSSP              Pull-  Basic

        SOIC,   (U)QFN                                                                                                                                                                          up

        SSOP

RA0     2       27           ANA0  —            C1IN0-      —             —              —                 —                          IOCA0               —        —          —                 Y      —

                                                C2IN0-

RA1     3       28           ANA1  —            C1IN1-      —             —              —                 —                          IOCA1               —        —          —                 Y      —

                                                C2IN1-

RA2     4       1            ANA2  DAC1OUT1     C1IN0+      —             —              —                 —                          IOCA2               —        —          —                 Y      —

                                   Vref- (DAC)  C2IN0+

                                   Vref- (ADC)

RA3     5       2            ANA3  Vref+ (DAC)  C1IN1+      —             —              —                 —                          IOCA3               —        MDCARL(1)  —                 Y      —

                                   Vref+ (ADC)

RA4     6       3            ANA4  —            —           T0CKI(1)      —              —                 —                          IOCA4               —        MDCARH(1)  —                 Y      —

RA5     7       4            ANA5  —            —           —             —              —                 —                          IOCA5               —        MDSRC(1)   SS1(1)            Y      —

RA6     10      7            ANA6  —            —           —             —              —                 —                          IOCA6               —        —          —                 Y      CLKOUT

                                                                                                                                                                                                       OSC2

RA7     9       6            ANA7  —            —           —             —              —                 —                          IOCA7               —        —          —                 Y      OSC1

                                                                                                                                                                                                       CLKIN

RB0     21      18           ANB0  —            C2IN1+      —             —        CWG1(1)                 ZCDIN                      IOCB0               —        —          —                 Y      —

                                                                                                                                      INT0(1)

        © 2017 Microchip Technology Inc.                                       Datasheet                                                                                      40001844D-page 8
                                                                                                                      PIC18(L)F27/47K40

        28-Pin

I/O(2)  SPDIP,       28-Pin       A/D       Reference  Comparator  Timers      CCP       CWG          ZCD  Interrupt  EUSART       DSM   MSSP                     Pull-   Basic

        SOIC,        (U)QFN                                                                                                                                       up

        SSOP

RB1        22        19      ANB1            —          C1IN3-     —           —         —            —    IOCB1           —       —     —                        Y       —
                                                                                                           INT1(1)
                                                        C2IN3-

RB2        23        20      ANB2            —          —          —           —         —            —    IOCB2           —       —     —                        Y       —
                                                                                                           INT2(1)

RB3        24        21      ANB3            —          C1IN2-     —           —         —            —    IOCB3           —       —     —                        Y       —

                                                        C2IN2-

RB4        25        22      ANB4            —          —          T5G(1)      —         —            —    IOCB4           —       —     —                        Y       —

RB5        26        23      ANB5            —          —          T1G(1)      —         —            —    IOCB5           —       —     —                        Y       —

RB6        27        24      ANB6            —          —          —           —         —            —    IOCB6           —       —     —                        Y      ICSPCLK

RB7        28        25      ANB7      DAC1OUT2         —          T6IN(1)     —         —            —    IOCB7           —       —     —                        Y      ICSPDAT

RC0        11        8       ANC0            —          —          T1CKI(1)    —         —            —    IOCC0           —       —     —                        Y       SOSCO
                                                                   T3CKI(1)

                                                                   T3G(1)

RC1        12        9       ANC1            —          —          —         CCP2(1)     —            —    IOCC1           —       —     —                        Y      SOSCIN

                                                                                                                                                                          SOSCI

RC2        13        10      ANC2            —          —          T5CKI(1)  CCP1(1)     —            —    IOCC2           —       —     —                        Y       —

RC3        14        11      ANC3            —          —          T2IN(1)     —         —            —    IOCC3           —       —     SCK1(1)                  Y       —
                                                                                                                                         SCL1(3,4)

RC4        15        12      ANC4            —          —          —           —         —            —    IOCC4           —       —     SDI1(1)                  Y       —
                                                                                                                                         SDA1(3,4)

RC5        16        13      ANC5            —          —          T4IN(1)     —         —            —    IOCC5           —       —     —                        Y       —

RC6        17        14      ANC6            —          —          —           —         —            —    IOCC6      CK1(1,3)     —     —                        Y       —

RC7        18        15      ANC7            —          —          —           —         —            —    IOCC7          RX1/     —     —                        Y       —
                                                                                                                      DT1(1,3)

RE3        1         26           —          —          —          —           —         —            —    IOCE3           —       —     —                        Y      Vpp/MCLR

VSS        19        16           —          —          —          —           —         —            —         —          —       —     —                        —       VSS

VDD        20        17           —          —          —          —           —         —            —         —          —       —     —                        —       VDD

VSS        8         5            —          —          —          —           —         —            —         —          —       —     —                        —       VSS

OUT(2)     —         —       ADGRDA          —          C1OUT      TMR0        CCP1   CWG1A           —         —         TX1/     DSM   SDO1                     —       —
                                                                                                                      CK1(3)
                             ADGRDB                     C2OUT                  CCP2   CWG1B                           DT1(3)             SCK1

                                                                               PWM3   CWG1C

                                                                               PWM4   CWG1D

Note: 

1.      This is a PPS remappable input signal. The input function may be moved from the default location shown to one of several other PORTx pins. Refer to the

        peripheral input selection table for details on which PORT pins may be used for this signal.

2.      All output signals shown in this row are PPS remappable. These signals may be mapped to output onto one of several PORTx pin options as described in the

        peripheral output selection table.

3.      This is a bidirectional signal. For normal module operation, the firmware should map this signal to the same pin in both the PPS input and PPS output registers.

4.      These pins are configured for I2C logic levels; The SCLx/SDAx signals may be assigned to any of these pins. PPS assignments to the other pins (e.g., RB1) will
        operate, but input logic levels will be standard TTL/ST as selected by the INLVL register, instead of the I2C specific or SMBus input buffer thresholds.

Table   2.  40/44-Pin Allocation Table

I/O(2)  40-     40-  44-     44-                                                                                                                                  Pull-

        Pin    Pin   Pin     Pin       A/D   Reference  Comparator    Timers        CCP     CWG            ZCD  Interrupt  EUSART  DSM   MSSP                        up   Basic

        PDIP UQFN QFN TQFP

RA0     2       17   19      19        ANA0     —          C1INO-           —        —        —            —       IOCA0        —     —     —                         Y   —

                                                           C2IN0-

RA1     3       18   20      20        ANA1     —          C1IN1-           —        —        —            —       IOCA1        —     —     —                         Y   —

                                                           C2IN1-

RA2     4       19   21      21        ANA2  DAC1OUT1      C1IN0+           —        —        —            —       IOCA2        —     —     —                         Y   —

                                                Vref-      C2IN0+

                                                (DAC5)

        © 2017 Microchip Technology Inc.                                             Datasheet                                           40001844D-page 9
                                                                                                    PIC18(L)F27/47K40

I/O(2)  40-   40-   44-  44-                                                                                                                Pull-

        Pin   Pin   Pin  Pin   A/D   Reference    Comparator  Timers    CCP      CWG      ZCD    Interrupt  EUSART    DSM        MSSP       up     Basic

        PDIP  UQFN  QFN  TQFP

                                     Vref- (ADC)

RA3     5     20    22   22    ANA3       Vref+   C1IN1+      —         —        —        —      IOCA3      —         MDCARL(1)  —          Y      —

                                     (DAC5)

                                          Vref+

                                     (ADC)

RA4     6     21    23   23    ANA4       —       —           T0CKI(1)  —        —        —      IOCA4      —         MDCARH(1)  —          Y      —

RA5     7     22    24   24    ANA5       —       —           —         —        —        —      IOCA5      —         MDSRC(1)   SS1(1)     Y      —

RA6     14    29    33   31    ANA6       —       —           —         —        —        —      IOCA6      —         —          —          Y      CLKOUT

                                                                                                                                                   OSC2

RA7     13    28    32   30    ANA7       —       —           —         —        —        —      IOCA7      —         —          —          Y      OSC1

                                                                                                                                                   CLKIN

RB0     33    8     9    8     ANB0       —       C2IN1+      —         —        CWG1(1)  ZCDIN  IOCB0      —         —          SS2(1)     Y      —

                                                                                                 INT0(1)

RB1     34    9     10   9     ANB1       —       C1IN3-      —         —        —        —      IOCB1      —         —          SCK2(1)    Y      —

                                                  C2IN3-                                         INT1(1)                         SCL2(3,4)

RB2     35    10    11   10    ANB2       —       —           —         —        —        —      IOCB2      —         —          SDI2(1)    Y      —

                                                                                                 INT2(1)                         SDA2(3,4)

RB3     36    11    12   11    ANB3       —       C1IN2-      —         —        —        —      IOCB3      —         —          —          Y      —

                                                  C2IN2-

RB4     37    12    14   14    ANB4       —       —           T5G(1)    —        —        —      IOCB4      —         —          —          Y      —

RB5     38    13    15   15    ANB5       —       —           T1G(1)    —        —        —      IOCB5      —         —          —          Y      —

RB6     39    14    16   16    ANB6       —       —           —         —        —        —      IOCB6      CK2(1,3)  —          —          Y      ICSPCLK

RB7     40    15    17   17    ANB7  DAC1OUT2     —           T6IN(1)   —        —        —      IOCB7      RX2/      —          —          Y      ICSPDAT
                                                                                                            DT2(1,3)

RC0     15    30    34   32    ANC0       —       —           T1CKI(1)  —        —        —      IOCC0      —         —          —          Y      SOSCO

                                                              T3CKI(1)

                                                              T3G(1)

RC1     16    31    35   35    ANC1       —       —           —         CCP2(1)  —        —      IOCC1      —         —          —          Y      SOSCIN

                                                                                                                                                   SOSCI

RC2     17    32    36   36    ANC2       —       —           T5CKI(1)  CCP1(1)  —        —      IOCC2      —         —          —          Y      —

RC3     18    33    37   37    ANC3       —       —           T2IN(1)   —        —        —      IOCC3      —         —          SCK1(1)    Y      —

                                                                                                                                 SCL1(3,4)

RC4     23    38    42   42    ANC4       —       —           —         —        —        —      IOCC4      —         —          SDI1(1)    —      —

                                                                                                                                 SDA1(3,4)

RC5     24    39    43   43    ANC5       —       —           T4IN(1)   —        —        —      IOCC5      —         —          —          Y      —

RC6     25    40    44   44    ANC6       —       —           —         —        —        —      IOCC6      CK1(1,3)  —          —          Y      —

RC7     26    1     1    1     ANC7       —       —           —         —        —        —      IOCC7      RX1/      —          —          Y      —
                                                                                                            DT1(1,3)

RD0     19    34    38   38    AND0       —       —           —         —        —        —      —          —         —          —          Y      —

RD1     20    35    39   39    AND1       —       —           —         —        —        —      —          —         —          —          Y      —

RD2     21    36    40   40    AND2       —       —           —         —        —        —      —          —         —          —          Y      —

RD3     22    37    41   41    AND3       —       —           —         —        —        —      —          —         —          —          Y      —

RD4     27    2     2    2     AND4       —       —           —         —        —        —      —          —         —          —          Y      —

RD5     28    3     3    3     AND5       —       —           —         —        —        —      —          —         —          —          Y      —

RD6     29    4     4    4     AND6       —       —           —         —        —        —      —          —         —          —          Y      —

        © 2017 Microchip Technology Inc.                                Datasheet                                          40001844D-page 10
                                                                                                              PIC18(L)F27/47K40

I/O(2)  40-   40-   44-  44-                                                                                                                                      Pull-

        Pin   Pin   Pin  Pin   A/D          Reference  Comparator  Timers  CCP   CWG                  ZCD  Interrupt  EUSART  DSM  MSSP                           up      Basic

        PDIP  UQFN  QFN  TQFP

RD7     30    5     5    5     AND7         —          —           —       —     —                    —    —          —       —    —                              Y       —

RE0     8     23    25   25    ANE0         —          —           —       —     —                    —    —          —       —    —                              Y       —

RE1     9     24    26   26    ANE1         —          —           —       —     —                    —    —          —       —    —                              Y       —

RE2     10    25    27   27    ANE2         —          —           —       —     —                    —    —          —       —    —                              Y       —

RE3     1     16    18   18    —            —          —           —       —     —                    —    IOCE3      —       —    —                              Y       Vpp/

                                                                                                                                                                          MCLR

VSS     12    6     6    6     —            —          —           —       —     —                    —    —          —       —    —                              —       VSS

VDD     11    7     7    7     —            —          —           —       —     —                    —    —          —       —    —                              —       VDD

VDD     32    26    28   28    —            —          —           —       —     —                    —    —          —       —    —                              —       VSS

VSS     31    27    30   29    —            —          —           —       —     —                    —    —          —       —    —                              —       VSS

OUT(2)  —     —     —    —     ADGRDA       —          C1OUT       TMR0    CCP1  CWG1A                —    —          TX1/    DSM  SDO1                           —       —
                                                                                                                      CK1(3)
                               ADGRDB                  C2OUT               CCP2  CWG1B                                             SCK1

                                                                           PWM3  CWG1C                                DT1(3)       SDO2

                                                                           PWM4  CWG1D                                TX2/         SCK2
                                                                                                                      CK2(3)

                                                                                                                      DT2(3)

Note: 

1.      This is a PPS remappable input signal. The input function may be moved from the default location shown to one of several other PORTx pins. Refer to the

        peripheral input selection table for details on which PORT pins may be used for this signal.

2.      All output signals shown in this row are PPS remappable. These signals may be mapped to output onto one of several PORTx pin options as described in the

        peripheral output selection table.

3.      This is a bidirectional signal. For normal module operation, the firmware should map this signal to the same pin in both the PPS input and PPS output registers.

4.      These pins are configured for I2C logic levels; The SCLx/SDAx signals may be assigned to any of these pins. PPS assignments to the other pins (e.g., RB1) will
        operate, but input logic levels will be standard TTL/ST as selected by the INLVL register, instead of the I2C specific or SMBus input buffer thresholds.

        © 2017 Microchip Technology Inc.                                   Datasheet                                               40001844D-page 11
                                             PIC18(L)F27/47K40

Table of Contents

Description.......................................................................................................................1

Core Features................................................................................................................ 1

Memory...........................................................................................................................1

Operating Characteristics.............................................................................................2

Power-Saving Operation Modes......................................................................................2

eXtreme Low-Power (XLP) Features............................................................................2

Digital Peripherals......................................................................................................... 2

Analog Peripherals........................................................................................................3

Clocking Structure........................................................................................................ 3

Programming/Debug Features..................................................................................... 4

PIC18(L)F27/47K40 Family Types.................................................................................4

Pin Diagrams..................................................................................................................5

Pin Allocation Tables.................................................................................................... 8

1.  Device Overview......................................................................................................21

    1.1.  New Core Features.................................................................................................................... 21

    1.2.  Other Special Features.............................................................................................................. 22

    1.3.  Details on Individual Family Members........................................................................................22

    1.4.  Register and Bit naming conventions.........................................................................................26

2.  Guidelines for Getting Started with PIC18(L)F27/47K40 Microcontrollers.............. 28

    2.1.  Basic Connection Requirements................................................................................................ 28

    2.2.  Power Supply Pins..................................................................................................................... 28

    2.3.  Master Clear (MCLR) Pin........................................................................................................... 29

    2.4.  ICSP™ Pins................................................................................................................................ 30

    2.5.  External Oscillator Pins.............................................................................................................. 30

    2.6.  Unused I/Os............................................................................................................................... 32

3.  Device Configuration............................................................................................... 33

    3.1.  Configuration Words...................................................................................................................33

    3.2.  Code Protection..........................................................................................................................33

    3.3.  Write Protection..........................................................................................................................33

    3.4.  User ID....................................................................................................................................... 33

    3.5.  Device ID and Revision ID......................................................................................................... 34

    3.6.  Register Summary - Configuration Words..................................................................................35

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 12
                                             PIC18(L)F27/47K40

    3.7.   Register Definitions: Configuration Words................................................................................. 35

    3.8.   Register Summary - Device and Revision..................................................................................46

    3.9.   Register Definitions: Device and Revision................................................................................. 46

4.  Oscillator Module (with Fail-Safe Clock Monitor).....................................................49

    4.1.   Overview.................................................................................................................................... 49

    4.2.   Clock Source Types................................................................................................................... 50

    4.3.   Clock Switching.......................................................................................................................... 55

    4.4.   Fail-Safe Clock Monitor.............................................................................................................. 58

    4.5.   Register Summary - OSC...........................................................................................................60

    4.6.   Register Definitions: Oscillator Control.......................................................................................60

5.  Reference Clock Output Module............................................................................. 70

    5.1.   Clock Source.............................................................................................................................. 70

    5.2.   Programmable Clock Divider......................................................................................................71

    5.3.   Selectable Duty Cycle................................................................................................................ 71

    5.4.   Operation in Sleep Mode............................................................................................................72

    5.5.   Register Summary: Reference CLK........................................................................................... 73

    5.6.   Register Definitions: Reference Clock........................................................................................73

6.  Power-Saving Operation Modes..............................................................................76

    6.1.   Doze Mode................................................................................................................................. 76

    6.2.   Sleep Mode................................................................................................................................ 77

    6.3.   Peripheral Operation in Power Saving Modes........................................................................... 80

    6.4.   Register Summary - Power Savings Control..............................................................................81

    6.5.   Register Definitions: Power Savings Control..............................................................................81

7.  (PMD) Peripheral Module Disable........................................................................... 85

    7.1.   Disabling a Module.....................................................................................................................85

    7.2.   Enabling a Module......................................................................................................................85

    7.3.   Register Summary - PMD.......................................................................................................... 86

    7.4.   Register Definitions: Peripheral Module Disable........................................................................ 86

8.  Resets..................................................................................................................... 94

    8.1.   Power-on Reset (POR).............................................................................................................. 94

    8.2.   Brown-out Reset (BOR)............................................................................................................. 95

    8.3.   Low-Power Brown-out Reset (LPBOR)...................................................................................... 97

    8.4.   MCLR......................................................................................................................................... 97

    8.5.   Windowed Watchdog Timer (WWDT) Reset.............................................................................. 98

    8.6.   RESET Instruction......................................................................................................................98

    8.7.   Stack Overflow/Underflow Reset................................................................................................98

    8.8.   Programming Mode Exit.............................................................................................................99

    8.9.   Power-up Timer (PWRT)............................................................................................................ 99

    8.10.  Start-up Sequence..................................................................................................................... 99

    8.11.  Determining the Cause of a Reset........................................................................................... 100

    8.12.  Power Control (PCON0) Register............................................................................................ 101

    8.13.  Register Summary - BOR Control and Power Control............................................................. 102

    8.14.  Register Definitions: Power Control......................................................................................... 102

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 13
                                             PIC18(L)F27/47K40

9.   (WWDT) Windowed Watchdog Timer....................................................................106

     9.1.   Independent Clock Source....................................................................................................... 107

     9.2.   WWDT Operating Modes......................................................................................................... 108

     9.3.   Time-out Period........................................................................................................................108

     9.4.   Watchdog Window....................................................................................................................108

     9.5.   Clearing the WWDT................................................................................................................. 109

     9.6.   Operation During Sleep............................................................................................................109

     9.7.   Register Summary - WDT Control............................................................................................ 111

     9.8.   Register Definitions: Windowed Watchdog Timer Control........................................................ 111

10.  Memory Organization............................................................................................ 117

     10.1.  Program Memory Organization................................................................................................ 117

     10.2.  PIC18 Instruction Cycle............................................................................................................123

     10.3.  Data Memory Organization...................................................................................................... 126

     10.4.  Data Addressing Modes........................................................................................................... 131

     10.5.  Data Memory and the Extended Instruction Set.......................................................................134

     10.6.  PIC18 Instruction Execution and the Extended Instruction Set................................................136

     10.7.  Register Summary: Memory and Status.................................................................................. 137

     10.8.  Register Definitions: Memory and Status................................................................................. 137

11.  (NVM) Nonvolatile Memory Control.......................................................................152

     11.1.  Program Flash Memory............................................................................................................153

     11.2.  User ID, Device ID and Configuration Word Access................................................................ 166

     11.3.  Data EEPROM Memory........................................................................................................... 166

     11.4.  Register Summary: NVM Control............................................................................................. 171

     11.5.  Register Definitions: Nonvolatile Memory................................................................................ 171

12.  8x8 Hardware Multiplier.........................................................................................179

     12.1.  Introduction...............................................................................................................................179

     12.2.  Operation..................................................................................................................................179

     12.3.  Register Summary - 8x8 Hardware Multiplier...........................................................................182

     12.4.  Register Definitions: 8x8 Hardware Multiplier.......................................................................... 182

13.  (CRC) Cyclic Redundancy Check Module with Memory Scanner.........................184

     13.1.  CRC Module Overview.............................................................................................................184

     13.2.  CRC Functional Overview........................................................................................................ 184

     13.3.  CRC Polynomial Implementation............................................................................................. 185

     13.4.  CRC Data Sources...................................................................................................................186

     13.5.  CRC Check Value.................................................................................................................... 186

     13.6.  CRC Interrupt........................................................................................................................... 187

     13.7.  Configuring the CRC................................................................................................................ 187

     13.8.  Program Memory Scan Configuration...................................................................................... 188

     13.9.  Scanner Interrupt......................................................................................................................188

     13.10. Scanning Modes...................................................................................................................... 188

     13.11. Register Summary - CRC.........................................................................................................192

     13.12. Register Definitions: CRC and Scanner Control...................................................................... 192

14.  Interrupts............................................................................................................... 204

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 14
                                             PIC18(L)F27/47K40

     14.1.  Mid-Range Compatibility.......................................................................................................... 204

     14.2.  Interrupt Priority........................................................................................................................204

     14.3.  Interrupt Response...................................................................................................................204

     14.4.  INTCON Registers................................................................................................................... 206

     14.5.  PIR Registers........................................................................................................................... 206

     14.6.  PIE Registers........................................................................................................................... 206

     14.7.  IPR Registers........................................................................................................................... 206

     14.8.  INTn Pin Interrupts................................................................................................................... 206

     14.9.  TMR0 Interrupt......................................................................................................................... 206

     14.10. Interrupt-on-Change.................................................................................................................206

     14.11. Context Saving During Interrupts............................................................................................. 207

     14.12. Register Summary - Interrupt Control...................................................................................... 208

     14.13. Register Definitions: Interrupt Control...................................................................................... 208

15.  I/O Ports................................................................................................................ 234

     15.1.  I/O Priorities..............................................................................................................................235

     15.2.  PORTx Registers..................................................................................................................... 235

     15.3.  PORTE Registers.....................................................................................................................238

     15.4.  Register Summary - Input/Output.............................................................................................240

     15.5.  Register Definitions: Port Control............................................................................................. 241

16.  Interrupt-on-Change.............................................................................................. 282

     16.1.  Features................................................................................................................................... 282

     16.2.  Overview.................................................................................................................................. 282

     16.3.  Block Diagram.......................................................................................................................... 283

     16.4.  Enabling the Module.................................................................................................................283

     16.5.  Individual Pin Configuration......................................................................................................283

     16.6.  Interrupt Flags.......................................................................................................................... 284

     16.7.  Clearing Interrupt Flags............................................................................................................284

     16.8.  Operation in Sleep....................................................................................................................284

     16.9.  Register Summary - Interrupt-on-Change................................................................................ 285

     16.10. Register Definitions: Interrupt-on-Change Control................................................................... 285

17.  (PPS) Peripheral Pin Select Module......................................................................298

     17.1.  PPS Inputs............................................................................................................................... 298

     17.2.  PPS Outputs.............................................................................................................................300

     17.3.  Bidirectional Pins......................................................................................................................301

     17.4.  PPS Lock..................................................................................................................................301

     17.5.  PPS One-Way Lock..................................................................................................................302

     17.6.  Operation During Sleep............................................................................................................302

     17.7.  Effects of a Reset..................................................................................................................... 302

     17.8.  Register Summary - PPS......................................................................................................... 303

     17.9.  Register Definitions: PPS Input and Output Selection............................................................. 304

18.  Timer0 Module.......................................................................................................308

     18.1.  Timer0 Operation......................................................................................................................309

     18.2.  Clock Selection.........................................................................................................................309

     18.3.  Timer0 Output and Interrupt..................................................................................................... 310

     18.4.  Operation During Sleep............................................................................................................ 311

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 15
                                             PIC18(L)F27/47K40

     18.5.  Register Summary - Timer0..................................................................................................... 312

     18.6.  Register Definitions: Timer0 Control.........................................................................................312

19.  Timer1 Module with Gate Control.......................................................................... 316

     19.1.  Timer1 Operation......................................................................................................................317

     19.2.  Clock Source Selection............................................................................................................ 318

     19.3.  Timer1 Prescaler...................................................................................................................... 319

     19.4.  Secondary Oscillator................................................................................................................ 319

     19.5.  Timer1 Operation in Asynchronous Counter Mode.................................................................. 320

     19.6.  Timer1 16-Bit Read/Write Mode............................................................................................... 320

     19.7.  Timer1 Gate..............................................................................................................................321

     19.8.  Timer1 Interrupt........................................................................................................................326

     19.9.  Timer1 Operation During Sleep................................................................................................326

     19.10. CCP Capture/Compare Time Base..........................................................................................326

     19.11. CCP Special Event Trigger.......................................................................................................327

     19.12. Peripheral Module Disable....................................................................................................... 327

     19.13. Register Summary - Timer1 .................................................................................................... 328

     19.14. Register Definitions: Timer1.....................................................................................................328

20.  Timer2 Module.......................................................................................................335

     20.1.  Timer2 Operation......................................................................................................................336

     20.2.  Timer2 Output...........................................................................................................................337

     20.3.  External Reset Sources............................................................................................................337

     20.4.  Timer2 Interrupt........................................................................................................................ 338

     20.5.  Operating Modes......................................................................................................................339

     20.6.  Operation Examples.................................................................................................................341

     20.7.  Timer2 Operation During Sleep................................................................................................351

     20.8.  Register Summary - Timer2..................................................................................................... 352

     20.9.  Register Definitions: Timer2 Control.........................................................................................352

21.  Capture/Compare/PWM Module........................................................................... 360

     21.1.  CCP Module Configuration.......................................................................................................360

     21.2.  Capture Mode...........................................................................................................................361

     21.3.  Compare Mode.........................................................................................................................363

     21.4.  PWM Overview.........................................................................................................................364

     21.5.  Register Summary - CCP Control............................................................................................ 369

     21.6.  Register Definitions: CCP Control............................................................................................ 369

22.  (PWM) Pulse-Width Modulation............................................................................ 375

     22.1.  Fundamental Operation............................................................................................................376

     22.2.  PWM Output Polarity................................................................................................................376

     22.3.  PWM Period............................................................................................................................. 376

     22.4.  PWM Duty Cycle...................................................................................................................... 377

     22.5.  PWM Resolution.......................................................................................................................377

     22.6.  Operation in Sleep Mode..........................................................................................................378

     22.7.  Changes in System Clock Frequency...................................................................................... 378

     22.8.  Effects of Reset........................................................................................................................ 378

     22.9.  Setup for PWM Operation using PWMx Output Pins............................................................... 378

     22.10. Setup for PWM Operation to Other Device Peripherals...........................................................379

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 16
                                             PIC18(L)F27/47K40

     22.11. Register Summary - Registers Associated with PWM............................................................. 380

     22.12. Register Definitions: PWM Control...........................................................................................380

23.  (ZCD) Zero-Cross Detection Module.....................................................................384

     23.1.  External Resistor Selection...................................................................................................... 385

     23.2.  ZCD Logic Output.....................................................................................................................385

     23.3.  ZCD Logic Polarity................................................................................................................... 385

     23.4.  ZCD Interrupts..........................................................................................................................385

     23.5.  Correction for ZCPINV Offset......................................................................................................386

     23.6.  Handling VPEAK Variations........................................................................................................388

     23.7.  Operation During Sleep............................................................................................................388

     23.8.  Effects of a Reset..................................................................................................................... 388

     23.9.  Disabling the ZCD Module....................................................................................................... 389

     23.10. Register Summary: ZCD Control............................................................................................. 390

     23.11. Register Definitions: ZCD Control............................................................................................ 390

24.  (CWGx) Complementary Waveform Generator Module........................................ 392

     24.1.  Fundamental Operation............................................................................................................392

     24.2.  Operating Modes......................................................................................................................392

     24.3.  Start-up Considerations............................................................................................................403

     24.4.  Clock Source............................................................................................................................ 403

     24.5.  Selectable Input Sources......................................................................................................... 404

     24.6.  Output Control.......................................................................................................................... 404

     24.7.  Dead-Band Control...................................................................................................................404

     24.8.  Rising Edge and Reverse Dead Band......................................................................................405

     24.9.  Falling Edge and Forward Dead Band..................................................................................... 405

     24.10. Dead-Band Jitter...................................................................................................................... 406

     24.11. Auto-Shutdown.........................................................................................................................407

     24.12. Operation During Sleep............................................................................................................409

     24.13. Configuring the CWG............................................................................................................... 410

     24.14. Register Summary - CWG Control........................................................................................... 411

     24.15. Register Definitions: CWG Control...........................................................................................411

25.  (DSM) Data Signal Modulator Module...................................................................421

     25.1.  DSM Operation.........................................................................................................................422

     25.2.  Modulator Signal Sources........................................................................................................ 423

     25.3.  Carrier Signal Sources............................................................................................................. 423

     25.4.  Carrier Synchronization............................................................................................................424

     25.5.  Carrier Source Polarity Select.................................................................................................. 426

     25.6.  Programmable Modulator Data................................................................................................ 426

     25.7.  Modulated Output Polarity........................................................................................................426

     25.8.  Operation in Sleep Mode..........................................................................................................426

     25.9.  Effects of a Reset..................................................................................................................... 427

     25.10. Peripheral Module Disable....................................................................................................... 427

     25.11. Register Summary - DSM........................................................................................................ 428

     25.12. Register Definitions: Modulation Control..................................................................................428

26.  (MSSP) Master Synchronous Serial Port Module................................................. 434

     26.1.  SPI Mode Overview..................................................................................................................434

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 17
                                             PIC18(L)F27/47K40

     26.2.  SPI Mode Operation.................................................................................................................436

     26.3.  I2C Mode Overview.................................................................................................................. 444

     26.4.  I2C Mode Operation................................................................................................................. 448

     26.5.  I2C Slave Mode Operation....................................................................................................... 452

     26.6.  I2C Master Mode...................................................................................................................... 470

     26.7.  Baud Rate Generator............................................................................................................... 484

     26.8.  Register Summary: MSSP Control...........................................................................................486

     26.9.  Register Definitions: MSSP Control......................................................................................... 486

27.  (EUSART) Enhanced Universal Synchronous Asynchronous Receiver Transmitter

     ...............................................................................................................................498

     27.1.  EUSART Asynchronous Mode................................................................................................. 500

     27.2.  EUSART Baud Rate Generator (BRG).................................................................................... 506

     27.3.  EUSART Synchronous Mode...................................................................................................515

     27.4.  EUSART Operation During Sleep............................................................................................ 520

     27.5.  Register Summary - EUSART .................................................................................................522

     27.6.  Register Definitions: EUSART Control..................................................................................... 522

28.  (FVR) Fixed Voltage Reference.............................................................................532

     28.1.  Independent Gain Amplifiers.................................................................................................... 532

     28.2.  FVR Stabilization Period.......................................................................................................... 532

     28.3.  Register Summary - FVR ........................................................................................................ 534

     28.4.  Register Definitions: FVR Control............................................................................................ 534

29.  Temperature Indicator Module...............................................................................537

     29.1.  Circuit Operation...................................................................................................................... 537

     29.2.  Minimum Operating VDD...........................................................................................................538

     29.3.  Temperature Output................................................................................................................. 538

     29.4.  ADC Acquisition Time...............................................................................................................538

30.  (DAC) 5-Bit Digital-to-Analog Converter Module................................................... 539

     30.1.  Output Voltage Selection..........................................................................................................540

     30.2.  Ratiometric Output Level..........................................................................................................540

     30.3.  DAC Voltage Reference Output............................................................................................... 541

     30.4.  Operation During Sleep............................................................................................................541

     30.5.  Effects of a Reset..................................................................................................................... 541

     30.6.  Register Summary - DAC Control............................................................................................ 542

     30.7.  Register Definitions: DAC Control............................................................................................ 542

31.  (ADC2) Analog-to-Digital Converter with Computation Module............................. 545

     31.1.  ADC Configuration................................................................................................................... 546

     31.2.  ADC Operation......................................................................................................................... 551

     31.3.  ADC Acquisition Requirements................................................................................................ 555

     31.4.  Capacitive Voltage Divider (CVD) Features............................................................................. 557

     31.5.  Computation Operation............................................................................................................ 562

     31.6.  Register Summary - ADC Control............................................................................................ 569

     31.7.  Register Definitions: ADC Control............................................................................................ 569

32.  (CMP) Comparator Module................................................................................... 592

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 18
                                             PIC18(L)F27/47K40

     32.1.  Comparator Overview.............................................................................................................. 592

     32.2.  Comparator Control..................................................................................................................593

     32.3.  Comparator Hysteresis.............................................................................................................594

     32.4.  Operation With Timer1 Gate.....................................................................................................594

     32.5.  Comparator Interrupt................................................................................................................ 595

     32.6.  Comparator Positive Input Selection........................................................................................ 595

     32.7.  Comparator Negative Input Selection...................................................................................... 596

     32.8.  Comparator Response Time.................................................................................................... 596

     32.9.  Analog Input Connection Considerations................................................................................. 597

     32.10. CWG1 Auto-Shutdown Source................................................................................................ 597

     32.11. ADC Auto-Trigger Source.........................................................................................................598

     32.12. Even Numbered Timers Reset.................................................................................................598

     32.13. Operation in Sleep Mode......................................................................................................... 598

     32.14. Register Summary - Comparator............................................................................................. 599

     32.15. Register Definitions: Comparator Control................................................................................ 599

33.  (HLVD) High/Low-Voltage Detect.......................................................................... 605

     33.1.  Operation..................................................................................................................................605

     33.2.  Setup........................................................................................................................................ 606

     33.3.  Current Consumption............................................................................................................... 606

     33.4.  HLVD Start-up Time................................................................................................................. 606

     33.5.  Applications.............................................................................................................................. 608

     33.6.  Operation During Sleep............................................................................................................609

     33.7.  Operation During Idle and Doze Modes................................................................................... 609

     33.8.  Effects of a Reset..................................................................................................................... 609

     33.9.  Register Summary - HLVD ...................................................................................................... 610

     33.10. Register Definitions: HLVD Control.......................................................................................... 610

34.  Register Summary.................................................................................................613

35.  (ICSP™) In-Circuit Serial Programming™..............................................................621

     35.1.  High-Voltage Programming Entry Mode...................................................................................621

     35.2.  Low-Voltage Programming Entry Mode....................................................................................621

     35.3.  Common Programming Interfaces........................................................................................... 621

36.  Instruction Set Summary....................................................................................... 624

     36.1.  Standard Instruction Set...........................................................................................................624

     36.2.  Extended Instruction Set.......................................................................................................... 703

37.  Development Support............................................................................................716

     37.1.  MPLAB X Integrated Development Environment Software...................................................... 716

     37.2.  MPLAB XC Compilers.............................................................................................................. 717

     37.3.  MPASM Assembler.................................................................................................................. 717

     37.4.  MPLINK Object Linker/MPLIB Object Librarian........................................................................718

     37.5.  MPLAB Assembler, Linker and Librarian for Various Device Families..................................... 718

     37.6.  MPLAB X SIM Software Simulator........................................................................................... 718

     37.7.  MPLAB REAL ICE In-Circuit Emulator System........................................................................ 718

     37.8.  MPLAB ICD 3 In-Circuit Debugger System..............................................................................719

     37.9.  PICkit 3 In-Circuit Debugger/Programmer................................................................................719

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 19
                                             PIC18(L)F27/47K40

37.10. MPLAB PM3 Device Programmer............................................................................................719

37.11. Demonstration/Development Boards, Evaluation Kits, and Starter Kits...................................719

37.12. Third-Party Development Tools................................................................................................720

38. Electrical Specifications.........................................................................................721

38.1.  Absolute Maximum Ratings(†).................................................................................................. 721

38.2.  Standard Operating Conditions................................................................................................ 721

38.3.  DC Characteristics................................................................................................................... 723

38.4.  AC Characteristics....................................................................................................................733

39. DC and AC Characteristics Graphs and Tables.................................................... 755

39.1.  Graphs......................................................................................................................................756

40. Packaging Information...........................................................................................775

40.1.  Package Details....................................................................................................................... 777

41. Revision History.....................................................................................................797

The Microchip Web Site.............................................................................................. 798

Customer Change Notification Service........................................................................798

Customer Support....................................................................................................... 798

Product Identification System...................................................................................... 799

Microchip Devices Code Protection Feature............................................................... 799

Legal Notice.................................................................................................................800

Trademarks................................................................................................................. 800

Quality Management System Certified by DNV...........................................................801

Worldwide Sales and Service......................................................................................802

© 2017 Microchip Technology Inc.  Datasheet  40001844D-page 20
                                                                                      PIC18(L)F27/47K40

1.     Device Overview

       This document contains device specific information for the following devices:

       •  PIC18F27K40                            •             PIC18LF27K40

       •  PIC18F47K40                            •             PIC18LF47K40

       This family offers the advantages of all PIC18 microcontrollers – namely, high computational performance

       at an economical price – with the addition of high-endurance Program Flash Memory. In addition to these

       features, the PIC18(L)F27/47K40 family introduces design enhancements that make these

       microcontrollers a logical choice for many high-performance, power sensitive applications.

1.1    New Core Features

1.1.1  XLP Technology

       All of the devices in the PIC18(L)F27/47K40 family incorporate a range of features that can significantly

       reduce power consumption during operation. Key items include:

       •  Alternate Run Modes: By clocking the controller from the secondary oscillator or the internal

          oscillator block, power consumption during code execution can be reduced by as much as 90%.

       •  Multiple Idle Modes: The controller can also run with its CPU core disabled but the peripherals still

          active. In these states, power consumption can be reduced even further, to as little as 4% of normal

          operation requirements.

       •  On-the-fly Mode Switching: The power-managed modes are invoked by user code during operation,

          allowing the user to incorporate power-saving ideas into their application’s software design.

       •  Peripheral Module Disable: Modules that are not being used in the code can be selectively disabled

          using the PMD module. This further reduces the power consumption.

1.1.2  Multiple Oscillator Options and Features

       All of the devices in the PIC18(L)F27/47K40family offer several different oscillator options. The

       PIC18(L)F27/47K40 family can be clocked from several different sources:

       •  HFINTOSC

          –  1-64 MHz precision digitally controlled internal oscillator

       •  LFINTOSC

          –  31 kHz internal oscillator

       •  EXTOSC

          –  External clock (EC)

          –  Low-power oscillator (LP)

          –  Medium power oscillator (XT)

          –  High-power oscillator (HS)

       •  SOSC

          –  Secondary oscillator circuit operating at 31 kHz

       •  A Phase Lock Loop (PLL) frequency multiplier (4x) is available  to    the   External  Oscillator  modes

          enabling clock speeds of up to 64 MHz

       © 2017 Microchip Technology Inc.          Datasheet                                         40001844D-page 21
                                                                              PIC18(L)F27/47K40

     •   Fail-Safe Clock Monitor: This option constantly monitors the main clock source against a reference

         signal provided by the LFINTOSC. If a clock failure occurs, the controller is switched to the internal

         oscillator block, allowing for continued operation or a safe application shutdown.

1.2  Other Special Features

     •   Memory Endurance: The Flash cells for both program memory and data EEPROM are rated to last

         for many thousands of erase/write cycles – up to 10K for program memory and 100K for EEPROM.

         Data retention without refresh is conservatively estimated to be greater than 40 years.

     •   Self-programmability: These devices can write to their own program memory spaces under internal

         software control. By using a boot loader routine located in the protected Boot Block at the top of

         program memory, it becomes possible to create an application that can update itself in the field.

     •   Extended Instruction Set: The PIC18(L)F27/47K40 family includes an optional extension to the

         PIC18 instruction set, which adds eight new instructions and an Indexed Addressing mode. This

         extension, enabled as a device configuration option, has been specifically designed to optimize re-

         entrant application code originally developed in high-level languages, such as C.

     •   Enhanced Peripheral Pin Select: The Peripheral Pin Select (PPS) module connects peripheral

         inputs and outputs to the device I/O pins. Only digital signals are included in the selections. All

         analog inputs and outputs remain fixed to their assigned pins.

     •   Enhanced Addressable EUSART: This serial communication module is capable of standard

         RS-232 operation and provides support for the LIN bus protocol. Other enhancements include

         automatic baud rate detection and a 16-bit Baud Rate Generator for improved resolution. When the

         microcontroller is using the internal oscillator block, the EUSART provides stable operation for

         applications that talk to the outside world without using an external crystal (or its accompanying

         power requirement).

     •   10-bit A/D Converter with Computation: This module incorporates programmable acquisition time,

         allowing for a channel to be selected and a conversion to be initiated without waiting for a sampling

         period and thus, reduce code overhead. It has a new module called ADC2 with computation

         features, which provides a digital filter and threshold interrupt functions.

     •   Windowed Watchdog Timer (WWDT):

         –  Timer monitoring of overflow and underflow events

         –  Variable prescaler selection

         –  Variable window size selection

         –  All sources configurable in hardware or software

1.3  Details on Individual Family Members

     Devices in the PIC18(L)F27/47K40 family are available  in  28/40/44-pin  packages.      The  block  diagram  for

     this device is shown in Figure 1-1.

     The devices have the following differences:

     1.  Program Flash Memory

     2.  Data Memory SRAM

     3.  Data Memory EEPROM

     4.  A/D channels

     5.  I/O ports

     6.  Enhanced USART

     © 2017 Microchip Technology Inc.             Datasheet                                       40001844D-page 22
                                                                   PIC18(L)F27/47K40

7.  Input Voltage Range/Power Consumption

All other features for devices in this family are identical. These are summarized in the following Device

Features table.

The pinouts for all devices are listed in the pin summary tables.

Table 1-1. Device Features

                                  Features                         PIC18(L)F27K40       PIC18(L)F47K40

Program Memory (Bytes)                                             131072                 131072

Program Memory (Instructions)                                      65536                  65536

Data Memory (Bytes)                                                3720                   3720

Data EEPROM Memory (Bytes)                                         1024                   1024

I/O Ports                                                          A,B,C,E(1)             A,B,C,D,E(1)

Capture/Compare/PWM Modules (CCP)                                  2                      2

10-Bit Pulse-Width Modulator (PWM)                                 2                      2

10-Bit Analog-to-Digital Module (ADC2) with Computation            4 internal             4 internal

Accelerator                                                        24 external            35 external

                                                                   28-pin SPDIP           40-pin PDIP

                                                                   28-pin SOIC            40-pin UQFN

Packages                                                           28-pin SSOP            44-pin QFN

                                                                   28-pin QFN             44-pin TQFP

Interrupt Sources                                                                  36

Timers (16-/8-bit)                                                                 4/3

Serial Communications                                                            2 MSSP,

                                                                                2 EUSART

Enhanced Complementary Waveform Generator    (ECWG)                                1

Zero-Cross Detect (ZCD)                                                            1

Data Signal Modulator (DSM)                                                        1

Peripheral Pin Select (PPS)                                                        Yes

Peripheral Module Disable (PMD)                                                    Yes

16-bit CRC with NVMSCAN                                                            Yes

Programmable High/Low-Voltage Detect (HLVD)                                        Yes

Programmable Brown-out Reset (BOR)                                                 Yes

                                                                               POR, BOR,

Resets (and Delays)                                                   RESET Instruction,

                                                                         Stack Overflow,

© 2017 Microchip Technology Inc.             Datasheet                                    40001844D-page 23
                                                       PIC18(L)F27/47K40

                                  Features             PIC18(L)F27K40  PIC18(L)F47K40

                                                       Stack Underflow,

                                                       MCLR, WWDT,

                                                       (PWRT, OST)

Instruction Set                                        75 Instructions;

                                                       83 with Extended Instruction Set enabled

Operating Frequency                                    DC – 64 MHz

Note 1: RE3 is an input only pin.

© 2017 Microchip Technology Inc.            Datasheet                  40001844D-page 24
                                                                                                             PIC18(L)F27/47K40

Figure  1-1. PIC18(L)F27/47K40 Family Block Diagram

                                                  Data Bus<8>                                                                          Rev. 30-000131B

                                                                                                                                       6/14/2017

            Table Pointer<21>

                 inc/dec logic                             8     8                       Data Latch

                                                                                         Data Memory

                     21               PCLATU PCLATH

                                  20                                                     Address Latch                PORTA

                                              PCU     PCH     PCL                                                     RA<7:0>

                                              Program Counter                                      12

                                                                                      Data Address<12>

                                                 31-Level Stack

            Address Latch                                                        4          12          4

            Program Memory                         STKPTR                        BSR     FSR0      Access
                                                                                                       Bank
            (8/16/32/64 Kbytes)                                                          FSR1
                                                                                                                      PORTB
                                                                                         FSR2           12
                 Data Latch                                                                                           RB<7:0>

                                  8                                                      inc/dec
                                                                                         logic
                                      Table Latch

                                      ROM Latch                                          Address

            Instruction Bus <16>                                                         Decode

                                                                                                                      PORTC

                                              IR                                                                      RC<7:0>

                                                                                                             8

                                      Instruction             State machine

                                      Decode and              control signals

                                             Control                                     PRODH PRODL

                                                                                                                      PORTD(3)

                                                                                 3          8x8 Multiply              RD<7:0>

                                                                                                                   8

                                                                                 BITOP          W               8

                                                                                      8            8

            OSC1(2)               Internal                 Power-up
                                  Oscillator
                                                              Timer                      8                      8
                                      Block
            OSC2(2)                                                                                                   PORTE
                                                           Oscillator
                                                                                            ALU<8>                    RE<2:0>(3)
                                  LFINTOSC            Start-up Timer

            SOSCI                 Oscillator               Power-on                                8                  RE3(1)

                                  64 MHz                      Reset

            SOSCO                 Oscillator               Watchdog
                                                              Timer
                                                                                 Precision
                                  Single-Supply            Brown-out             Band Gap          FVR
            MCLR(1)
                                  Programming                 Reset              Reference

                                  In-Circuit               Fail-Safe

                                  Debugger                Clock Monitor

                     BOR              NVM                     Timer1     Timer2                                                   FVR

                     HLVD         Controller      Timer0      Timer3     Timer4  ZCD        CRC-Scan                  DAC

                                                              Timer5     Timer6

            FVR  Comparators          CCP1        PWM3        MSSP1    EUSART1                                        ADC         FVR

            DAC      C1/C2            CCP2        PWM4        MSSP2    EUSART2   ECWG       DSM              PMD      10-bit

Note    1:  RE3 is only available when MCLR functionality is disabled.

        2:  OSC1/CLKIN and OSC2/CLKOUT are only available in select oscillator modes.

        3:  PORTD and PORTE<2:0> not implemented on 28-pin devices.

© 2017 Microchip Technology Inc.                                         Datasheet                                            40001844D-page 25
                                                                                       PIC18(L)F27/47K40

1.4      Register and Bit naming conventions

1.4.1    Register Names

         When there are multiple instances of the same peripheral in a device, the peripheral control registers will

         be depicted as the concatenation of a peripheral identifier, peripheral instance, and control identifier. The

         control registers section will show just one instance of all the register names with an ‘x’ in the place of the

         peripheral instance number. This naming convention may also be applied to peripherals when there is

         only one instance of that peripheral in the device to maintain compatibility with other devices in the family

         that contain more than one.

1.4.2    Bit Names

         There are two variants for bit names:

         •  Short name: Bit function abbreviation

         •  Long name: Peripheral abbreviation + short name

1.4.2.1  Short Bit Names

         Short bit names are an abbreviation for the bit function. For example, some peripherals are enabled with

         the EN bit. The bit names shown in the registers are the short name variant.

         Short bit names are useful when accessing bits in C programs. The general format for accessing bits by

         the short name is RegisterNamebits.ShortName. For example, the enable bit, EN, in the COG1CON0

         register can be set in C programs with the instruction COG1CON0bits.EN        =  1.

         Short names are generally not useful in assembly programs because the same name may be used by

         different peripherals in different bit positions. When this occurs, during the include file generation, all

         instances of that short bit name are appended with an underscore plus the name of the register in which

         the bit resides to avoid naming contentions.

1.4.2.2  Long Bit Names

         Long bit names are constructed by adding a peripheral abbreviation prefix to the short name. The prefix is

         unique to the peripheral thereby making every long bit name unique. The long bit name for the COG1

         enable bit is the COG1 prefix, G1, appended with the enable bit short name, EN, resulting in the unique

         bit name G1EN.

         Long bit names are useful in both C and assembly programs. For example, in C the COG1CON0 enable

         bit can be set with the G1EN      =  1 instruction. In assembly, this bit can be set with the BSF

         COG1CON0,G1EN instruction.

1.4.2.3  Bit Fields

         Bit fields are two or more adjacent bits in the same register. Bit fields adhere only to the short bit naming

         convention. For example, the three Least Significant bits of the COG1CON0 register contain the mode

         control bits. The short name for this field is MD. There is no long bit name variant. Bit field access is only

         possible in C programs. The following example demonstrates a C program instruction for setting the

         COG1 to the Push-Pull mode:

         COG1CON0bits.MD = 0x5;

         Individual bits in a bit field can also be accessed with long and short bit names. Each bit is the field name

         appended with the number of the bit position within the field. For example, the Most Significant mode bit

         has the short bit name MD2 and the long bit name is G1MD2. The following two examples demonstrate

         assembly program sequences for setting the COG1 to Push-Pull mode:

         © 2017 Microchip Technology Inc.              Datasheet                                            40001844D-page 26
                                                        PIC18(L)F27/47K40

         Example 1:

         MOVLW  ~(1<          ANDWF  COG1CON0,F
         MOVLW  1<          IORWF  COG1CON0,F

         Example 2:

         BSF    COG1CON0,G1MD2
         BCF    COG1CON0,G1MD1
         BSF    COG1CON0,G1MD0

1.4.3    Register and Bit Naming Exceptions

1.4.3.1  Status, Interrupt, and Mirror Bits

         Status, interrupt enables, interrupt flags, and mirror bits are contained in registers that span more than

         one peripheral. In these cases, the bit name shown is unique so there is no prefix or short name variant.

1.4.3.2  Legacy Peripherals

         There are some peripherals that do not strictly adhere to these naming conventions. Peripherals that

         have existed for many years and are present in almost every device are the exceptions. These

         exceptions were necessary to limit the adverse impact of the new conventions on legacy code.

         Peripherals that do adhere to the new convention will include a table in the registers section indicating the

         long name prefix for each peripheral instance. Peripherals that fall into the exception category will not

         have this table. These peripherals include, but are not limited to the following:

         •    EUSART

         •    MSSP

         © 2017 Microchip Technology Inc.    Datasheet                                      40001844D-page 27
                                                                                                                          PIC18(L)F27/47K40

2.     Guidelines for Getting Started with PIC18(L)F27/47K40
       Microcontrollers

2.1    Basic Connection Requirements

       Getting started with the PIC18(L)F27/47K40 family of 8-bit microcontrollers requires attention to a minimal

       set of device pin connections before proceeding with development.

       The following pins must always be connected:

       •  All VDD and VSS pins (see Power Supply Pins)

       •  MCLR pin (see Master Clear (MCLR) Pin)

       These pins must also be connected if they are being used in the end application:

       •  ICSPCLK/ICSPDAT pins used for In-Circuit Serial Programming™ (ICSP™) and debugging purposes

          (see ICSP™ Pins)

       •  OSCI and OSCO pins when an external oscillator source is used (see External Oscillator Pins)
                                         Filename:                    10-000249A.vsd

       Additionally, the following pins maTyitleb:e required: Getting Started on PIC18
                                         Last Edit:                   9/1/2015

       •  VREF+/VREF-  pins   are        usedFwirshteUnseedx: ternal  vPoIClt1a8g(Le)Fr2eXf/4eXreK4n0ce  for analog modules     is implemented
                                         Note:                        Generic figure showing             the MCLR, VDD and VSS  pin connections.

       The minimum mandatory connections are shown in the figure below.

       Figure 2-1. Recommended Minimum Connections

                                                                                                         Rev. 10-000249A

                                                                                                         9/1/2015

                                                VDD                                   C2

                                                R1                              VDD       Vss

                                                     R2

                                                                      MCLR

                                                C1

                                                                            PIC18(L)Fxxxxx

                                                                      Vss

                                         Key (all values are recommendations):

                                         C1 and C2 : 0.1 F, 20V ceramic

                                         R1: 10 kΩ

                                         R2: 100Ω to 470Ω

2.2    Power Supply Pins

2.2.1  Decoupling Capacitors

       The use of decoupling capacitors on every pair of power supply pins (VDD and VSS) is required.

       Consider the following criteria when using decoupling capacitors:

       •  Value and type of capacitor: A 0.1 μF (100 nF), 10-20V capacitor is recommended. The capacitor

          should be a low-ESR device, with a resonance frequency in the range of 200 MHz and higher.

          Ceramic capacitors are recommended.

       •  Placement on the printed circuit board: The decoupling capacitors should be placed as close to the

          pins as possible. It is recommended to place the capacitors on the same side of the board as the

       © 2017 Microchip Technology Inc.                                    Datasheet                                            40001844D-page 28
                                                                                                                                               PIC18(L)F27/47K40

           device. If space is constricted, the capacitor can be placed on another layer on the PCB using a

           via; however, ensure that the trace length from the pin to the capacitor is no greater than 0.25 inch

           (6 mm).

       •   Handling high-frequency noise: If the board is experiencing high-frequency noise (upward of tens of

           MHz), add a second ceramic type capacitor in parallel to the above described decoupling capacitor.

           The value of the second capacitor can be in the range of 0.01 μF to 0.001 μF. Place this second

           capacitor next to each primary decoupling capacitor. In high-speed circuit designs, consider

           implementing a decade pair of capacitances as close to the power and ground pins as possible

           (e.g., 0.1 μF in parallel with 0.001 μF).

       •   Maximizing performance: On the board layout from the power supply circuit, run the power and

           return traces to the decoupling capacitors first, and then to the device pins. This ensures that the

           decoupling capacitors are first in the power chain. Equally important is to keep the trace length

           between the capacitor and the power pins to a minimum, thereby reducing PCB trace inductance.

2.2.2  Tank Capacitors

       On boards with power traces running longer than six inches in length, it is suggested to use a tank

       capacitor for integrated circuits, including microcontrollers, to supply a local power source. The value of

       the tank capacitor should be determined based on the trace resistance that connects the power supply

       source to the device, and the maximum current drawn by the device in the application. In other words,

       select the tank capacitor so that it meets the acceptable voltage sag at the device. Typical values range

       from 4.7 μF to 47 μF.

2.3    Master Clear (MCLR) Pin

       The MCLR pin provides two specific device functions: Device Reset, and Device Programming and

       Debugging. If programming and debugging are not required in the end application, a direct connection to

       VDD may be all that is required. The addition of other components, to help increase the application’s

       resistance to spurious Resets from voltage sags, may be beneficial. A typical configuration is shown in

       Figure 2-1. Other circuit designs may be implemented, depending on the application’s requirements.

       During programming and debugging, the resistance and capacitance that can be added to the pin must

       be considered. Device programmers and debuggers drive the MCLR pin. Consequently, specific voltage

       levels (VIH and VIL) and fast signal transitions must not be adversely affected. Therefore, specific values

       of R1 and C1 will need to be adjusted based on the application and PCB requirements. For example, it is

       recommended that the capacitor, C1, be isolated from the MCLR pin during programming and debugging

       operations by using a jumper (Figure 2-2). The jumper is replaced for normal run-time operations.

       Any components associated with the MCLR pin should be placed within 0.25 inch (6 mm) of the pin.

       Figure 2-2. Example of MCLR Pin Connections

                                                    VDD                                                                  Rev. 30-000058A

                                                                                                                         6/23/2017

                                                        R1

                                                                  R2      MCLR

                                                        JP

                                                         C1

       Note: 

       1.  R1 ≤ 10 kΩ is recommeNnodteed1.: ARs1ugg10eksteids rsetcaormtimnegndveadlPuAe sisug1ge0stkeΩd .                                     Ensure  that  the  MCLR pin VIH
                                                    starting  value   is  10 k  P Ensure                                 that             the
           and  VIL  specifications      are  met.
                                                    MCLR pin VIH and      VIL specifications are metP

                                              2:    R2      470   will limit any current flowing into

                                                    MCLR from the external capacitorOC1Oin the

                                                    event     of  MCLR    pin   breakdownO due                                            to

       © 2017 Microchip Technology Inc.             EOlveecrtsrotrsetsasticDEDOiSsc(PhDEaarngsteuarsDeEhtSheaDte(tthoer  Electrical                               40001844D-page  29

                                                                                                                         MCLR pin

                                                    VIH and VIL specifications are metP
                                                                     PIC18(L)F27/47K40

     2.  R2 ≤ 470Ω will limit any current flowing into MCLR from the extended capacitor, C1, in the event of

         MCLR pin breakdown, due to Electrostatic Discharge (ESD) or Electrical Overstress (EOS). Ensure

         that the MCLR pin VIH and VIL specifications are met.

2.4  ICSP™ Pins

     The ICSPCLK and ICSPDAT pins are used for In-Circuit Serial Programming™ (ICSP™) and debugging

     purposes. It is recommended to keep the trace length between the ICSP connector and the ICSP pins on

     the device as short as possible. If the ICSP connector is expected to experience an ESD event, a series

     resistor is recommended, with the value in the range of a few tens of ohms, not to exceed 100Ω.

     Pull-up resistors, series diodes and capacitors on the ICSPCLK and ICSPDAT pins are not recommended

     as they can interfere with the programmer/debugger communications to the device. If such discrete

     components are an application requirement, they should be removed from the circuit during programming

     and debugging. Alternatively, refer to the AC/DC characteristics and timing requirements information in

     the respective device Flash programming specification for information on capacitive loading limits, and

     pin input voltage high (VIH) and input low (VIL) requirements.

     For device emulation, ensure that the “Communication Channel Select” (i.e., ICSPCLK/ICSPDAT pins),

     programmed into the device, matches the physical connections for the ICSP to the Microchip debugger/

     emulator tool.

     For more information on available Microchip development tools connection requirements, refer to the

     “Development Support” section.

     Related Links

     Development Support

2.5  External Oscillator Pins

     Many microcontrollers have options for at least two oscillators: a high-frequency primary oscillator and a

     low-frequency secondary oscillator.

     The oscillator circuit should be placed on the same side of the board as the device. Place the oscillator

     circuit close to the respective oscillator pins with no more than 0.5 inch (12 mm) between the circuit

     components and the pins. The load capacitors should be placed next to the oscillator itself, on the same

     side of the board.

     Use a grounded copper pour around the oscillator circuit to isolate it from surrounding circuits. The

     grounded copper pour should be routed directly to the MCU ground. Do not run any signal traces or

     power traces inside the ground pour. Also, if using a two-sided board, avoid any traces on the other side

     of the board where the crystal is placed.

     Layout suggestions are shown in the following figure. In-line packages may be handled with a single-

     sided layout that completely encompasses the oscillator pins. With fine-pitch packages, it is not always

     possible to completely surround the pins and components. A suitable solution is to tie the broken guard

     sections to a mirrored ground layer. In all cases, the guard trace(s) must be returned to ground.

     © 2017 Microchip Technology Inc.           Datasheet            40001844D-page 30
                                                                                                 PIC18(L)F27/47K40

Figure  2-3. Suggested  Placement of the Oscillator Circuit

                                                                                                 Rev. 30-000059A

                                                                                                      4/6/2017

                                           Single-Sided and In-Line Layouts:

                                                    Copper Pour          Primary Oscillator
                                                                         Crystal
                                                    (tied to ground)

                                                                                   DEVICE PINS

                                  Primary                                                        OSC1
                                  Oscillator

                                  C1                       `                                     OSC2

                                  C2                                                             GND

                                                           `

                                                                                                 SOSCO

                                  Secondary Oscillator                                           SOSCI

                                  (SOSC)

                                  Crystal                             `

                                                    SOSC:  C1            SOSC: C2

                                                    Fine-Pitch (Dual-Sided) Layouts:

                                                           Top Layer Copper Pour

                                                                 (tied to ground)

                                  Bottom Layer
                                  Copper Pour

                                  (tied to ground)

                                  OSCO

                                                                                             C2

                                  GND                                                        Oscillator

                                                                                                 Crystal

                                                                                             C1

                                  OSCI

                                        DEVICE PINS

In planning the application’s routing and I/O assignments, ensure that adjacent port pins, and other

signals in close proximity to the oscillator, are benign (i.e., free of high frequencies, short rise and fall

times, and other similar noise).

For additional information and design guidance on oscillator circuits, refer to these Microchip Application

Notes, available at the corporate website (www.microchip.com):

•  AN826, “Crystal Oscillator Basics and Crystal Selection for rfPIC™ and PICmicro® Devices”

•  AN849, “Basic PICmicro® Oscillator Design”

•  AN943, “Practical PICmicro® Oscillator Analysis and Design”

•  AN949, “Making Your Oscillator Work”

Related Links

Oscillator Module (with Fail-Safe Clock Monitor)

© 2017 Microchip Technology Inc.                                      Datasheet                                   40001844D-page 31
                                                                                    PIC18(L)F27/47K40

2.6  Unused I/Os

     Unused I/O pins should be configured as outputs and driven to a logic low state. Alternatively, connect a

     1kΩ to 10 kΩ resistor to VSS on unused pins to drive the output to logic low.

     © 2017 Microchip Technology Inc.  Datasheet                                    40001844D-page 32
                                                                                    PIC18(L)F27/47K40

3.     Device Configuration

       Device configuration consists of Configuration Words, Code Protection, Device ID and Rev ID.

3.1    Configuration Words

       There are six Configuration Word bits that allow the user to setup the device with several choices of

       oscillators, Resets and memory protection options. These are implemented as Configuration Word 1

       through Configuration Word 6 at 300000h through 30000Bh.

                Important:  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.2    Code Protection

       Code protection allows the device to be protected from unauthorized access. Program memory protection

       and data memory are controlled independently. Internal access to the program memory is unaffected by

       any code protection setting.

3.2.1  Program Memory Protection

       The entire program memory space is protected from external reads and writes by the CP bit. 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. Self-writing the program

       memory is dependent upon the write protection setting.

3.2.2  Data memory protection

       The entire Data EEPROM Memory space is protected from external reads and writes by the CPD bit.

       When CPD = 0, external reads and writes of Data EEPROM Memory are inhibited and a read will return

       all ‘0’s. The CPU can continue to read Data EEPROM Memory regardless of the protection bit settings.

3.3    Write Protection

       Write protection allows the device to be protected from unintended self-writes. Applications, such as boot

       loader software, can be protected while allowing other regions of the program memory to be modified.

       The WRT bits define the size of the program memory block that is protected.

3.4    User ID

       Eight words in the memory space (200000h-200000Fh) 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 the “User ID, Device ID and Configuration Word Access” section for more

       information on accessing these memory locations. For more information on checksum calculation, see

       the “PIC18(L)F27/47K40 Memory Programming Specification”, (DS40001772).

       Related Links

       User ID, Device ID and Configuration Word Access

       © 2017 Microchip Technology Inc.                  Datasheet                  40001844D-page 33
                                                                      PIC18(L)F27/47K40

3.5  Device ID and Revision ID

     The 16-bit device ID word is located at 0x3FFFFE and the 16-bit revision ID is located at 0x3FFFFC.

     These locations are read-only and cannot be erased or modified.

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

     Revision ID and Configuration Words. Refer to the “Nonvolatile Memory (NVM) Control” section for more

     information on accessing these locations.

     Related Links

     (NVM) Nonvolatile Memory Control

     © 2017 Microchip Technology Inc.           Datasheet             40001844D-page 34
                                                                                              PIC18(L)F27/47K40

3.6       Register  Summary   - Configuration Words

Offset    Name      Bit Pos.

0x300000  CONFIG1   7:0                                 RSTOSC[2:0]                                        FEXTOSC[2:0]

                    15:8                                FCMEN                        CSWEN                               CLKOUTEN

0x300002  CONFIG2   7:0                     BOREN[1:0]  LPBOREN                                            PWRTE         MCLRE

                    15:8      XINST                     DEBUG           STVREN       PPS1WAY  ZCD          BORV[1:0]

0x300004  CONFIG3   7:0                                 WDTE[1:0]                             WDTCPS[4:0]

                    15:8                                                WDTCCS[2:0]                        WDTCWS[2:0]

0x300006  CONFIG4   7:0       WRT7          WRT6        WRT5            WRT4         WRT3     WRT2         WRT1          WRT0

                    15:8                                           LVP  SCANE                 WRTD         WRTB          WRTC

0x300008  CONFIG5   7:0                                                                                    CPD           CP

                    15:8

0x30000A  CONFIG6   7:0       EBTR7         EBTR6       EBTR5           EBTR4        EBTR3    EBTR2        EBTR1         EBTR0

                    15:8                                                                                   EBTRB

3.7       Register  Definitions: Configuration Words

          © 2017 Microchip Technology Inc.                              Datasheet                          40001844D-page 35
                                                                                    PIC18(L)F27/47K40

3.7.1       CONFIG1

            Name:        CONFIG1

            Offset:      0x300000

            Configuration word 1

            Oscillators

       Bit       15            14         13               12   11                  10     9                        8

                                          FCMEN                 CSWEN                                    CLKOUTEN

Access                                    R/W                   R/W                                                 R/W

Reset                                     1                     1                                                   1

       Bit       7             6          5                4    3                   2      1                        0

                                          RSTOSC[2:0]                                      FEXTOSC[2:0]

Access                   R/W              R/W              R/W                     R/W     R/W                      R/W

Reset                          1          1                1                        1      1                        1

            Bit 13 – FCMEN Fail-Safe Clock Monitor Enable bit

            Value        Description

            1            Fail Safe Clock Monitor enabled

            0            Fail Safe Clock Monitor disabled

            Bit 11 – CSWEN Clock Switch Enable bit

            Value        Description

            1            Writing to NOSC and NDIV is allowed

            0            The NOSC and NDIV bits cannot be changed by user software

            Bit 8 – CLKOUTEN Clock Out Enable bit

            If FEXTOSC = HS, XT, LP, then this bit is ignored.

            Otherwise:

            Value        Description

            1            CLKOUT function is disabled; I/O function on OSC2

            0            CLKOUT function is enabled; FOSC/4 clock appears at OSC2

            Bits 6:4 – RSTOSC[2:0] Power-up Default Value for COSC bits

            This value is the Reset default value for COSC and selects the oscillator first used by user software.

            Refer to COSC operation.

            Value        Description

            111          EXTOSC operating per FEXTOSC bits (device manufacturing default)

            110          HFINTOSC with HFFRQ = 4 MHz and CDIV = 4:1

            101          LFINTOSC

            100          SOSC

            011          Reserved

            010          EXTOSC with 4x PLL, with EXTOSC operating per FEXTOSC bits

            001          Reserved

            000          HFINTOSC with HFFRQ = 64 MHz and CDIV = 1:1. Resets COSC/NOSC to b'110'.

        © 2017 Microchip Technology Inc.                        Datasheet                       40001844D-page 36
                                                                  PIC18(L)F27/47K40

Bits 2:0  –  FEXTOSC[2:0] FEXTOSC External Oscillator Mode        Selection bits

Value        Description

111          EC (external clock) above 8 MHz

110          EC (external clock) for 500 kHz to 8 MHz

101          EC (external clock) below 500 kHz

100          Oscillator not enabled

011          Reserved (do not use)

010          HS (crystal oscillator) above 8 MHz

001          XT (crystal oscillator) above 500 kHz, below 8 MHz

000          LP (crystal oscillator) optimized for 32.768 kHz

Related Links

OSCFRQ

OSCCON2

© 2017 Microchip Technology Inc.                       Datasheet                  40001844D-page 37
                                                                             PIC18(L)F27/47K40

3.7.2       CONFIG2

            Name:       CONFIG2

            Offset:     0x300002

            Configuration Word 2

            Supervisor

       Bit     15                 14      13          12                11   10               9               8

               XINST                      DEBUG       STVREN    PPS1WAY      ZCD                   BORV[1:0]

Access         R/W                        R/W         R/W               R/W  R/W              R/W             R/W

Reset          1                          1           1                 1    1                1               1

       Bit     7                  6       5           4                 3    2                1               0

                      BOREN[1:0]          LPBOREN                                          PWRTE     MCLRE

Access         R/W                R/W     R/W                                                 R/W             R/W

Reset          0                  1       1                                                   1               1

            Bit 15 – XINST Extended Instruction Set Enable bit

            Value       Description

            1           Extended Instruction Set and Indexed Addressing mode disabled (Legacy mode)

            0           Extended Instruction Set and Indexed Addressing mode enabled

            Bit 13 – DEBUG Debugger Enable bit

            Value       Description

            1           Background debugger disabled

            0           Background debugger enabled

            Bit 12 – STVREN Stack Overflow/Underflow Reset Enable bit

            Value       Description

            1           Stack Overflow or Underflow will cause a Reset

            0           Stack Overflow or Underflow will not cause a Reset

            Bit 11 – PPS1WAY PPSLOCKED bit One-Way Set Enable bit

            Value       Description

            1           The PPSLOCKED bit can only be set once after an unlocking sequence is executed; once

                        PPSLOCK is set, all future changes to PPS registers are prevented

            0           The PPSLOCKED bit can be set and cleared as needed (provided an unlocking sequence is

                        executed)

            Bit 10 – ZCD ZCD Disable bit

            Value       Description

            1           ZCD disabled. ZCD can be enabled by setting the ZCDSEN bit of ZCDCON

            0           ZCD always enabled, PMDx[ZCDMD] bit is ignored

            Bits 9:8 – BORV[1:0] Brown-out Reset Voltage Selection bit

            PIC18F device:

        © 2017 Microchip Technology Inc.                        Datasheet                            40001844D-page 38
                                                                              PIC18(L)F27/47K40

Value          Description

11             Brown-out Reset    Voltage  (VBOR)  set  to  2.45V

10             Brown-out Reset    Voltage  (VBOR)  set  to  2.45V

01             Brown-out Reset    Voltage  (VBOR)  set  to  2.7V

00             Brown-out Reset    Voltage  (VBOR)  set  to  2.85V

PIC18LF  device:

Value          Description

11             Brown-out Reset    Voltage  (VBOR)  set  to  1.90V

10             Brown-out Reset    Voltage  (VBOR)  set  to  2.45V

01             Brown-out Reset    Voltage  (VBOR)  set  to  2.7V

00             Brown-out Reset    Voltage  (VBOR)  set  to  2.85V

Bits 7:6 – BOREN[1:0] Brown-out Reset Enable bits

When enabled, Brown-out Reset Voltage (VBOR) is set by BORV bit

Value    Description

11       Brown-out Reset enabled, SBOREN bit is ignored

10       Brown-out Reset enabled while running, disabled in Sleep; SBOREN is ignored

01       Brown-out Reset enabled according to SBOREN

00       Brown-out Reset disabled

Bit 5 – LPBOREN Low-Power BOR Enable bit

Value    Description

1        Low-Power Brown-out Reset is disabled

0        Low-Power Brown-out Reset is enabled

Bit 1 – PWRTE Power-up Timer Enable bit

Value    Description

1        PWRT disabled

0        PWRT enabled

Bit 0 – MCLRE Master Clear (MCLR) Enable bit

Value    Condition                Description

x        If LVP = 1               RE3 pin function is MCLR

1        If LVP = 0               MCLR pin is MCLR

0        If LVP = 0               MCLR pin function is port defined function

Note:  BORV - The higher voltage setting is recommended for operation at or above 16 MHz.

Related Links

PMD2

© 2017 Microchip Technology Inc.                    Datasheet                              40001844D-page 39
                                                                                PIC18(L)F27/47K40

3.7.3       CONFIG3

            Name:     CONFIG3

            Offset:   0x300004

            Configuration Word 3

            Windowed Watchdog Timer

       Bit       15             14             13           12            11    10                   9            8

                                                       WDTCCS[2:0]                           WDTCWS[2:0]

Access                                         R/W          R/W        R/W      R/W                  R/W          R/W

Reset                                           1           1                1  1                    1            1

       Bit       7              6               5           4                3  2                    1            0

                                    WDTE[1:0]                                   WDTCPS[4:0]

Access                        R/W              R/W          R/W        R/W      R/W                  R/W          R/W

Reset                           1               1           1                1  1                    1            1

            Bits 13:11 – WDTCCS[2:0] WDT Input Clock Selector bits

            Value        Condition        Description

            x            WDTE=00          These bits have no effect

            111          WDTE≠00          Software Control

            110 to       WDTE≠00          Reserved (Default to LFINTOSC)

            010

            001          WDTE≠00          WDT reference clock is the 31.25 kHz MFINTOSC

            000          WDTE≠00          WDT reference clock is the 31.0 kHz LFINTOSC (default      value)

            Bits 10:8 –  WDTCWS[2:0] WDT Window Select bits

                                    WDTCON1[WINDOW] at POR                      Software control of     Keyed access

            WDTCWS       Value      Window delay       Window opening           WINDOW                    required?

                                    Percent of time         Percent of time

                 111     111              n/a                    100            Yes                          No

                 110     110              n/a                    100

                 101     101              25                     75

                 100     100              37.5                   62.5

                 011     011              50                     50             No                           Yes

                 010     010              62.5                   37.5

                 001     001              75                     25

                 000     000              87.5                   12.5

            Bits 6:5 – WDTE[1:0] WDT Operating Mode bits

        © 2017 Microchip Technology Inc.                             Datasheet                            40001844D-page 40
                                                                   PIC18(L)F27/47K40

Value      Description

11         WDT enabled regardless of Sleep; SEN bit in WDTCON0 is ignored

10         WDT enabled while Sleep = 0, suspended when Sleep = 1; SEN bit in WDTCON0 is ignored

01         WDT enabled/disabled by SEN bit in WDTCON0

00         WDT disabled, SEN bit in WDTCON0 is ignored

Bits 4:0 – WDTCPS[4:0] WDT Period Select bits

                                  WDTCON0[WDTPS] at POR

WDTCPS     Value                  Divider Ratio  Typical Time Out  Software Control of WDTPS?

                                                 (FIN = 31 kHz)

    11111  01011                  1:65536   216          2s                Yes

    11110  11110

    ...    ...                    1:32      25   1 ms                      No

    10011  10011

    10010  10010        1:8388608           223  256s

    10001  10001        1:4194304           222  128s

    10000  10000        1:2097152           221  64s

    01111  01111        1:1048576           220  32s

    01110  01110                  1:524299  219  16s

    01101  01101                  1:262144  218          8s

    01100  01100                  1:131072  217          4s

    01011  01011                  1:65536   216          2s

    01010  01010                  1:32768   215          1s

    01001  01001                  1:16384   214  512 ms                    Yes

    01000  01000                  1:8192    213  256 ms

    00111  00111                  1:4096    212  128 ms

    00110  00110                  1:2048    211  64 ms

    00101  00101                  1:1024    210  32 ms

    00100  00100                  1:512     29   16 ms

    00011  00011                  1:256     28   8 ms

    00010  00010                  1:128     27   4 ms

    00001  00001                  1:64      26   2 ms

    00000  00000                  1:32      25   1 ms

© 2017 Microchip Technology Inc.                 Datasheet                      40001844D-page 41
                                                                             PIC18(L)F27/47K40

3.7.4       CONFIG4

            Name:     CONFIG4

            Offset:   0x300006

            Configuration Word 4

            Memory Write Protection

       Bit     15     14                  13              12          11     10             9                      8

                                          LVP         SCANE                  WRTD           WRTB  WRTC

Access                                    R/W             R/W                R/W            R/W   R/W

Reset                                     1               1                  1              1                      1

       Bit     7      6                   5               4           3      2              1                      0

               WRT7   WRT6                WRT5            WRT4        WRT3   WRT2           WRT1  WRT0

Access         R/W    R/W                 R/W             R/W         R/W    R/W            R/W   R/W

Reset          1      1                   1               1           1      1              1                      1

            Bit 13 – LVP Low-Voltage Programming Enable bit

            The LVP bit cannot be written (to zero) while operating from the LVP programming interface. The purpose

            of this rule is to prevent the user from dropping out of LVP mode while programming from LVP mode, or

            accidentally eliminating LVP mode from the Configuration state.

            Value     Description

            1         Low-voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE Configuration

                      bit is ignored.

            0         HV on MCLR/VPP must be used for programming

            Bit 12 – SCANE Scanner Enable bit

            Value     Description

            1         Scanner module is available for use, PMD0[SCANMD] bit enables the module

            0         Scanner module is NOT available for use, PMD0[SCANMD] bit is ignored

            Bit 10 – WRTD Data EEPROM Write Protection bit

            Value     Description

            1         Data EEPROM NOT write-protected

            0         Data EEPROM write-protected

            Bit 9 – WRTB Boot Block Write Protection bit

            Value     Description

            1         Boot Block NOT write-protected

            0         Boot Block write-protected

            Bit 8 – WRTC Configuration Register Write Protection bit

            Value     Description

            1         Configuration Registers NOT write-protected

            0         Configuration Registers write-protected

        © 2017 Microchip Technology Inc.                        Datasheet                         40001844D-page 42
                                                                         PIC18(L)F27/47K40

Bits 0, 1, 2, 3, 4, 5, 6, 7 – WRTn User NVM Self-Write Protection  bits

Value  Description

1      Corresponding Memory Block NOT write-protected

0      Corresponding Memory Block write-protected

Related Links

Program Memory Organization

© 2017 Microchip Technology Inc.  Datasheet                              40001844D-page 43
                                                                         PIC18(L)F27/47K40

3.7.5       CONFIG5

            Name:     CONFIG5

            Offset:   0x300008

            Configuration Word 5

            Code Protection

       Bit     15            14           13  12                     11  10  9    8

Access

Reset

       Bit     7             6            5             4            3   2   1    0

                                                                             CPD  CP

Access                                                                       RO   RO

Reset                                                                        1    1

            Bit 1 –  CPD Data NVM (DFM) Memory Code Protection bit

            Value     Description

            1         Data NVM code protection disabled

            0         Data NVM code protection enabled

            Bit 0 –  CP User NVM Program Memory Code Protection bit

            Value     Description

            1         User NVM code protection disabled

            0         User NVM code protection enabled

        © 2017 Microchip Technology Inc.                   Datasheet              40001844D-page 44
                                                                                PIC18(L)F27/47K40

3.7.6       CONFIG6

            Name:     CONFIG6

            Offset:   0x30000A

            Configuration Word 6

            Memory Read Protection

       Bit     15          14             13         12                     11  10               9        8

                                                                                             EBTRB

Access                                                                                       R/W

Reset                                                                                            1

       Bit     7           6              5          4                      3   2                1        0

               EBTR7       EBTR6          EBTR5      EBTR4  EBTR3               EBTR2        EBTR1        EBTR0

Access         R/W         R/W            R/W        R/W    R/W                 R/W          R/W          R/W

Reset          1           1              1          1                      1   1                1        1

            Bit 9 – EBTRB Table Read Protection bit

            Value     Description

            1         Memory Boot Block NOT protected from table reads executed in other blocks

            0         Memory Boot Block protected from table reads executed in other blocks

            Bits 0, 1, 2, 3, 4, 5, 6, 7 – EBTRn Table Read Protection bits

            Value     Description

            1         Corresponding Memory Block NOT protected from table reads executed in other blocks

            0         Corresponding Memory Block protected from table reads executed in other blocks

            Related Links

            Program Memory Organization

        © 2017 Microchip Technology Inc.                    Datasheet                               40001844D-page 45
                                                                               PIC18(L)F27/47K40

3.8       Register     Summary   -          Device and Revision

Offset    Name         Bit Pos.

0x3FFFFC  REVISION ID  7:0                  MJRREV[1:0]                        MNRREV[5:0]

                       15:8                              1010[3:0]                          MJRREV[5:2]

0x3FFFFE  DEVICE ID    7:0                                          DEV[7:0]

                       15:8                                         DEV[15:8]

3.9       Register     Definitions: Device and Revision

          © 2017 Microchip Technology Inc.                          Datasheet                            40001844D-page 46
                                                                     PIC18(L)F27/47K40

3.9.1       DEVICE ID

            Name:     DEVICE ID

            Offset:   0x3FFFFE

            Device ID Register

       Bit  15                  14        13      12             11  10  9          8

                                                      DEV[15:8]

Access      RO                  RO        RO      RO             RO  RO  RO         RO

Reset       q                   q         q       q              q   q   q          q

       Bit  7                   6         5       4              3   2   1          0

                                                      DEV[7:0]

Access      RO                  RO        RO      RO             RO  RO  RO         RO

Reset       q                   q         q       q              q   q   q          q

            Bits 15:0 – DEV[15:0]

            Device ID bits

                                          Device                         Device ID

                                    PIC18F27K40                          6960h

                                    PIC18F47K40                          6900h

                                    PIC18LF27K40                         6A40h

                                    PIC18LF47K40                         69E0h

        © 2017 Microchip Technology Inc.              Datasheet                     40001844D-page 47
                                                                                    PIC18(L)F27/47K40

3.9.2       REVISION ID

            Name:     REVISION ID

            Offset:   0x3FFFFC

            Revision ID Register

       Bit  15                   14             13             12  11               10               9       8

                                     1010[3:0]                                          MJRREV[5:2]

Access      RO                   RO             RO  RO             RO               RO               RO      RO

Reset       1                    0              1              0   q                q                q       q

       Bit  7                    6              5              4   3                2                1       0

                    MJRREV[1:0]                                        MNRREV[5:0]

Access      RO                   RO             RO  RO             RO               RO               RO      RO

Reset       q                    q              q              q   q                q                q       q

            Bits 15:12 – 1010[3:0] Read as ‘1010’

            These bits are fixed with value ‘1010’ for all devices in this family.

            Bits 11:6 – MJRREV[5:0] Major Revision ID bits

            These bits are used to identify a major revision. A major revision is indicated by an all-layer  revision (A0,

            B0, C0, etc.).

            Revision A = b'00 0000'

            Bits 5:0 – MNRREV[5:0] Minor Revision ID bits

            These bits are used to identify a minor revision.

        © 2017 Microchip Technology Inc.                           Datasheet                                 40001844D-page 48
                                                                          PIC18(L)F27/47K40

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

4.1  Overview

     The oscillator module has multiple clock sources and selection features that allow it to be used in a wide

     range of applications while maximizing performance and minimizing power consumption. Figure 4-1

     illustrates a block diagram of the oscillator module.

     Clock sources can be supplied from external oscillators, quartz-crystal resonators and ceramic

     resonators. In addition, the system clock source can be supplied from one of two internal oscillators and

     PLL circuits, with a choice of speeds selectable via software. Additional clock features include:

     •  Selectable system clock source between external or internal sources via software.

     •  Fail-Safe Clock Monitor (FSCM) designed to detect a failure of the external clock source (LP, XT,

        HS, ECH, ECM, ECL) and switch automatically to the internal oscillator.

     •  Oscillator Start-up Timer (OST) ensures stability of crystal oscillator sources.

     The RSTOSC bits of Configuration Word 1 determine the type of oscillator that will be used when the

     device runs after Reset, including when it is first powered up.

     If an external clock source is selected, the FEXTOSC bits of Configuration Word 1 must be used in

     conjunction with the RSTOSC bits to select the External Clock mode.

     The external oscillator module can be configured in one of the following clock modes, by setting the

     FEXTOSC<2:0> bits of Configuration Word 1:

     •  ECL – External Clock Low-Power mode

        (below 500 kHz)

     •  ECM – External Clock Medium Power mode

        (500 kHz to 8 MHz)

     •  ECH – External Clock High-Power mode

        (above 8 MHz)

     •  LP – 32 kHz Low-Power Crystal mode

     •  XT – Medium Gain Crystal or Ceramic Resonator Oscillator mode (between            500  kHz      and  8  MHz)

     •  HS – High Gain Crystal or Ceramic Resonator mode (above 4 MHz)

     The ECH, ECM, and ECL Clock modes rely on an external logic level signal as the device clock source.

     The LP, XT, and HS Clock modes require an external crystal or resonator to be connected to the device.

     Each mode is optimized for a different frequency range. The internal oscillator block produces low and

     high-frequency clock sources, designated LFINTOSC and HFINTOSC. Multiple device clock frequencies

     may be derived from these clock sources.

     © 2017 Microchip Technology Inc.                       Datasheet                          40001844D-page 49
     Title:              Simplified Clock Source Block Diagram for PIC18(L)F2x/4x/6xK40

     Last Edit:          5/10/2016

     First Used:         PIC18(L)F2x/4x/6xK40 (MVAE,MVAF,MVAB,MVAC,MVAK)

     Notes:                                                                                                                  PIC18(L)F27/47K40

     Figure 4-1. Simplified          PIC®    MCU  Clock Source Block                                   Diagram

                                                                                                                                                        Rev. 10-000208D

                                                                                                                                                        5/10/2016

     CLKIN/OSC1

                    External

                    Oscillator

                    (EXTOSC)

     CLKOUT/OSC2                                                                                           CDIV<4:0>

                                     4x PLL                 COSC<2:0>

     SOSCIN/SOSCI

                    Secondary                                                                          512  1001

                    Oscillator                                                                         256

                    (SOSC)                                  111                                             1000      Sleep

             SOSCO                                          010                                        128  0111                          System Clock

                                                            100                          Post Divider  64   0110

                  LFINTOSC                                  101                                        32   0101

                    31 kHz                                  110                                        16   0100                  SYSCMD  Peripheral Clock

                  Oscillator                                                                           8

                                                  Reserved  011                                             0011

                                                  Reserved  001                                        4    0010      Sleep

                  HFINTOSC                        Reserved  000                                        2    0001      Idle

                                                                                                       1    0000

                  FRQ<3:0>

             1,2,4,8,12,16,32,48,64

                    MHz

                  Oscillator                      LFINTOSC is used to

                                                  monitor system clock    FSCM

                  MFINTOSC                                                                                        To Peripherals

             31.25 kHz and 500 kHz                                                                                To Peripherals

                  Oscillator                                                                                      To Peripherals

                                                                                                                  To Peripherals

     Related Links

     CONFIG1

4.2  Clock Source Types

     Clock sources can be classified as external or internal.

     External clock sources rely on external circuitry for the clock source to function. Examples are: oscillator

     modules (ECH, ECM, ECL mode), quartz crystal resonators or ceramic resonators (LP, XT and HS

     modes).

     Internal clock sources are contained within the oscillator module. The internal oscillator block has two

     internal oscillators that are used to generate internal system clock sources. The High-Frequency Internal

     Oscillator (HFINTOSC) can produce 1, 2, 4, 8, 12, 16, 32, 48 and 64 MHz clock. The frequency can be

     controlled through the OSCFRQ register. The Low-Frequency Internal Oscillator (LFINTOSC) generates a

     fixed 31 kHz frequency.

     A 4x PLL is provided that can be used in conjunction with the external clock.

     The system clock can be selected between external or internal clock sources via the NOSC bits. The

     system clock can be made available on the OSC2/CLKOUT pin for any of the modes that do not use the

     OSC2 pin. The clock out functionality is governed by the CLKOUTEN bit in the CONFIG1H register. If

     enabled, the clock out signal is always at a frequency of FOSC/4.

     Related Links

     OSCFRQ

     4x PLL

     © 2017 Microchip Technology Inc.                                                    Datasheet                                        40001844D-page 50
                                                                                    PIC18(L)F27/47K40

         Clock Switching

4.2.1    External Clock Sources

         An external clock source can be used as the device system clock by performing one of the following

         actions:

         •   Program the RSTOSC<2:0> and FEXTOSC<2: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 NOSC<2:0> and NDIV<3:0> bits to switch the system clock source.

         Related Links

         Clock Switching

4.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 OSC1 input. OSC2/

         CLKOUT is available for general purpose I/O or CLKOUT. The following figure shows the pin connections

         for EC mode.

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

         •   ECH – High power, above 8 MHz

         •   ECM – Medium power, 500 kHz-8 MHz

         •   ECL – Low power, below 500 kHz

         The Oscillator Start-up Timer (OST) is disabled when EC mode is selected. Therefore, there is no delay
         in operation after a Power-on Reset (POR) or wake-up from Sleep. Because the PIC® MCU design is fully

         static, stopping the external clock input will have the effect of halting the device while leaving all data

         intact. Upon restarting the external clock, the device will resume operation as if no time had elapsed.

         Figure 4-2. External Clock (EC) Mode Operation

                                                                                    Rev. 30-000060A

                                                                                    4/6/2017

                                           Clock from           OSC1/CLKIN

                                           Ext. System              PIC® MCU

                                           FOSC/4 or    I/O(1)  OSC2/CLKOUT

         Note: 

         1.  Output depends upon CLKOUTEN bit of the Configuration Words (CONFIG1H).

4.2.1.2  LP, XT, HS Modes

         The LP, XT and HS modes support the use of quartz crystal resonators or ceramic resonators connected

         to OSC1 and OSC2 (Figure 4-3). The three modes select a low, medium or high gain setting of the

         internal inverter-amplifier to support various resonator types and speed.

         LP Oscillator mode selects the lowest gain setting of the internal inverter-amplifier. LP mode current

         consumption is the least of the three modes. This mode is designed to drive only 32.768 kHz tuning-fork

         type crystals (watch crystals).

         XT Oscillator mode selects the intermediate gain setting of the internal inverter-amplifier. XT mode current

         consumption is the medium of the three modes. This mode is best suited to drive resonators with a

         medium drive level specification (above 500 kHz - 8 MHz).

         © 2017 Microchip Technology Inc.                       Datasheet                            40001844D-page 51
                                                                                                PIC18(L)F27/47K40

         HS Oscillator mode selects the highest gain setting of the internal inverter-amplifier. HS mode current

         consumption is the highest of the three modes. This mode is best suited for resonators that require a high

         drive setting (above 8 MHz).

         Figure 4-3 and Figure 4-4 show typical circuits for quartz crystal and ceramic resonators, respectively.

         Figure 4-3. Quartz Crystal Operation (LP, XT or HS Mode)

                                                                                                Rev. 30-000061A

                                                                                                      4/6/2017

                                                                         PIC® MCU

                                                                         OSC1/CLKIN

                                                 C1                                      To Internal

                                                                                         Logic

                                                      Quartz             RF(2)           Sleep

                                                      Crystal

                                                 C2   RS(1)              OSC2/CLKOUT

         Note: 

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

         2.  The  value  of  RF  varies    with  the  Oscillator  mode   selected     (typically between         2  MΩ  to  10  MΩ).
                                                                                               

         Figure 4-4. Ceramic Resonator Operation

         (XT or HS Mode)

                                                                                                Rev. 30-000062A

                                                                                                      4/6/2017

                                                                         PIC® MCU

                                                                         OSC1/CLKIN

                                                 C1                                      To Internal

                                                                                         Logic

                                                               RP(3)     RF(2)           Sleep

                                                 C2   Ceramic     RS(1)  OSC2/CLKOUT

                                                      Resonator

         Note: 

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

         2.  The value of RF varies with the Oscillator mode selected (typicallybetween 2 MΩ to 10 MΩ).

         3.  An additional parallel feedback resistor (RP) may be required for proper ceramic resonator

             operation.

4.2.1.3  Oscillator Start-up Timer (OST)

         If the oscillator module is configured for LP, XT or HS modes, the Oscillator Start-up Timer (OST) counts

         1024 oscillations from OSC1. This occurs following a Power-on Reset (POR), or a wake-up from Sleep.

         The OST ensures that the oscillator circuit, using a quartz crystal resonator or ceramic resonator, has

         started and is providing a stable system clock to the oscillator module.

4.2.1.4  4x PLL

         The oscillator module contains a 4x PLL that can be used with the external clock sources to provide a

         system clock source. The input frequency for the PLL must fall within specifications.

         The PLL can be enabled for use by one of two methods:

         © 2017 Microchip Technology Inc.                                Datasheet                                      40001844D-page 52
                                                                               PIC18(L)F27/47K40

         1.  Program the RSTOSC bits in the Configuration Word 1 to ‘010’ (enable EXTOSC with 4x PLL).

         2.  Write the NOSC bits to ‘010’ (enable EXTOSC with 4x PLL).

         Related Links

         PLL Specifications

4.2.1.5  Secondary Oscillator

         The secondary oscillator is a separate oscillator block that can be used as an alternate system clock

         source. The secondary oscillator is optimized for 32.768 kHz, and can be used with an external crystal

         oscillator connected to the SOSCI and SOSCO device pins, or an external clock source connected to the

         SOSCIN pin. The secondary oscillator can be selected during run-time using clock switching.

         Figure 4-5. Quartz Crystal Operation (Secondary Oscillator)

                                                                               Rev. 30-000063A

                                                                                     4/6/2017

                                                            PIC® MCU

                                                            SOSCI

                                           C1                           To Internal

                                                                        Logic

                                                32.768 kHz

                                                Quartz

                                                Crystal

                                           C2               SOSCO

         Note: 

         1.  Quartz crystal characteristics vary according to type, package and manufacturer. The user should

             consult the manufacturer data sheets for specifications and recommended application.

         2.  Always verify oscillator performance over the VDD and temperature range that is expected for the

             application.

         3.  For oscillator design assistance, reference the following Microchip Application Notes:

                 –  AN826, “Crystal Oscillator Basics and Crystal Selection for PIC® and PIC® Devices”

                    (DS00826)

                 –  AN849, “Basic PIC® Oscillator Design” (DS00849)

                 –  AN943, “Practical PIC® Oscillator Analysis and Design” (DS00943)

                 –  AN949, “Making Your Oscillator Work” (DS00949)

                 –  TB097, “Interfacing a Micro Crystal MS1V-T1K 32.768 kHz Tuning Fork Crystal to a

                    PIC16F690/SS” (DS91097)

                 –  AN1288, “Design Practices for Low-Power External Oscillators” (DS01288)

         Related Links

         Clock Switching

4.2.2    Internal Clock Sources

         The device may be configured to use the internal oscillator block as the system clock by performing one

         of the following actions:

         •   Program the RSTOSC<2:0> bits in Configuration Words to select the INTOSC clock as the default

             system clock upon a device Reset.

         •   Write the NOSC<2:0> bits to switch the system clock source to the internal oscillator during run-

             time.

         © 2017 Microchip Technology Inc.                   Datasheet                                 40001844D-page 53
                                                                                   PIC18(L)F27/47K40

         In INTOSC mode, OSC1/CLKIN is available for general purpose I/O. OSC2/CLKOUT is available for

         general purpose I/O or CLKOUT.

         The function of the OSC2/CLKOUT pin is determined by the CLKOUTEN bit in Configuration Words.

         The internal oscillator block has two independent oscillators that can produce two internal system clock

         sources.

         1.  The HFINTOSC (High-Frequency Internal Oscillator) is factory-calibrated and operates from 1 to 64

             MHz. The frequency of HFINTOSC can be selected through the OSCFRQ Frequency Selection

             register, and fine-tuning can be done via the OSCTUNE register.

         2.  The LFINTOSC (Low-Frequency Internal Oscillator) is factory-calibrated and operates at 31 kHz.

         Related Links

         Clock Switching

         OSCFRQ

         OSCTUNE

4.2.2.1  HFINTOSC

         The High-Frequency Internal Oscillator (HFINTOSC) is a precision digitally-controlled internal clock

         source that produces a stable clock up to 64 MHz. The HFINTOSC can be enabled through one of the

         following methods:

         •   Programming the RSTOSC<2:0> bits in Configuration Word 1 to ‘110’ (FOSC = 1 MHz) or ‘000’

             (FOSC = 64 MHz) to set the oscillator upon device Power-up or Reset.

         •   Write to the NOSC<2:0> bits during run-time.

         The HFINTOSC frequency can be selected by setting the HFFRQ<3:0> bits.

         The NDIV<3:0> bits allow for division of the HFINTOSC output from a range between 1:1 and 1:512.

         Related Links

         Clock Switching

4.2.2.2  MFINTOSC

         The module provides two (500 kHz and 31.25 kHz) constant clock outputs. These clocks are digital

         divisors of the HFINTOSC clock. Dynamic divider logic is used to provide constant MFINTOSC clock

         rates for all settings of HFINTOSC.

         The MFINTOSC cannot be used to drive the system but it is used to clock certain modules such as the

         Timers and WWDT.

4.2.2.3  LFINTOSC

         The Low-Frequency Internal Oscillator (LFINTOSC) is a factory-calibrated 31 kHz internal clock source.

         The LFINTOSC is the frequency for the Power-up Timer (PWRT), Windowed Watchdog Timer (WWDT)

         and Fail-Safe Clock Monitor (FSCM).

         The LFINTOSC is enabled through one of the following methods:

         •   Programming the RSTOSC<2:0> bits of Configuration Word 1 to enable LFINTOSC.

         •   Write to the NOSC<2:0> bits during run-time.

         Related Links

         Clock Switching

         © 2017 Microchip Technology Inc.                  Datasheet                       40001844D-page 54
                                                                                     PIC18(L)F27/47K40

4.2.2.4  ADCRC (also referred to as FRC)

         The ADCRC is an oscillator dedicated to the ADC2 module. The ADCRC oscillator can be manually

         enabled using the ADOEN bit. The ADCRC runs at a fixed frequency of 600 kHz. ADCRC is automatically

         enabled if it is selected as the clock source for the ADC2 module.

4.2.3    Oscillator Status and Adjustments

4.2.3.1  Internal Oscillator Frequency Adjustment

         The internal oscillator is factory-calibrated. This internal oscillator can be adjusted in software by writing

         to the OSCTUNE register.

         The default value of the OSCTUNE register is 00h. The value is a 6-bit two’s complement number. A

         value of 1Fh will provide an adjustment to the maximum frequency. A value of 20h will provide an

         adjustment to the minimum frequency.

         When the OSCTUNE register is modified, the oscillator frequency will begin shifting to the new frequency.

         Code execution continues during this shift. There is no indication that the shift has occurred.

         OSCTUNE does not affect the LFINTOSC frequency. Operation of features that depend on the

         LFINTOSC clock source frequency, such as the Power-up Timer (PWRT), WWDT, Fail-Safe Clock

         Monitor (FSCM) and peripherals, are not affected by the change in frequency.

         Related Links

         OSCTUNE

4.2.3.2  Oscillator Status and Manual Enable

         The Ready status of each oscillator (including the ADCRC oscillator) is displayed in OSCSTAT. The

         oscillators (but not the PLL) may be explicitly enabled through OSCEN.

         Related Links

         OSCSTAT

         OSCEN

4.2.3.3  HFOR and MFOR Bits

         The HFOR and MFOR bits indicate that the HFINTOSC and MFINTOSC is ready. These clocks are

         always valid for use at all times, but only accurate after they are ready.

         When a new value is loaded into the OSCFRQ register, the HFOR and MFOR bits will clear, and set

         again when the oscillator is ready. During pending OSCFRQ changes the MFINTOSC clock will stall at a

         high or a low state, until the HFINTOSC resumes operation.

4.3      Clock Switching

         The system clock source can be switched between external and internal clock sources via software using

         the New Oscillator Source (NOSC) bits. The following clock sources can be selected using the following:

         •  External oscillator

         •  Internal Oscillator Block (INTOSC)

                        Important:  The Clock Switch Enable bit in Configuration Word 1 can be used to enable

                        or disable the clock switching capability. When cleared, the NOSC and NDIV bits cannot

                        be changed by user software. When set, writing to NOSC and NDIV is allowed and would

                        switch the clock frequency.

         © 2017 Microchip Technology Inc.            Datasheet                                            40001844D-page 55
                                                                              PIC18(L)F27/47K40

4.3.1  New Oscillator Source (NOSC) and New Divider Selection Request (NDIV) Bits

       The New Oscillator Source (NOSC) and New Divider Selection Request (NDIV) bits select the system

       clock source and frequency that are used for the CPU and peripherals.

       When new values of NOSC and NDIV are written to OSCCON1, the current oscillator selection will

       continue to operate while waiting for the new clock source to indicate that it is stable and ready. In some

       cases, the newly requested source may already be in use, and is ready immediately. In the case of a

       divider-only change, the new and old sources are the same, so the source will be ready immediately. The

       device may enter Sleep while waiting for the switch.

       When the new oscillator is ready, the New Oscillator Ready (NOSCR) bit is set and also the Clock Switch

       Interrupt Flag (CSWIF) bit of PIR1 sets. If Clock Switch Interrupts are enabled (CSWIE = 1), an interrupt

       will be generated at that time. The Oscillator Ready (ORDY) bit can also be polled to determine when the

       oscillator is ready in lieu of an interrupt.

          Important:  The CSWIF interrupt will not wake the system from Sleep.

       If the Clock Switch Hold (CSWHOLD) bit is clear, the oscillator switch will occur when the New Oscillator

       is Ready bit (NOSCR) is set, and the interrupt (if enabled) will be serviced at the new oscillator setting.

       If CSWHOLD is set, the oscillator switch is suspended, while execution continues using the current (old)

       clock source. When the NOSCR bit is set, software should:

       •  Set CSWHOLD = 0 so the switch can complete, or

       •  Copy COSC into NOSC to abandon the switch.

       If DOZE is in effect, the switch occurs on the next clock cycle, whether or not the CPU is operating during

       that cycle.

       Changing the clock post-divider without changing the clock source (i.e., changing FOSC from 1 MHz to 2

       MHz) is handled in the same manner as a clock source change, as described previously. The clock

       source will already be active, so the switch is relatively quick. CSWHOLD must be clear (CSWHOLD = 0)

       for the switch to complete.

       The current COSC and CDIV are indicated in the OSCCON2 register up to the moment when the switch

       actually occurs, at which time OSCCON2 is updated and ORDY is set. NOSCR is cleared by hardware to

       indicate that the switch is complete.

       Related Links

       Clock Switch and Sleep

4.3.2  PLL Input Switch

       Switching between the PLL and any non-PLL source is managed as described above. The input to the

       PLL is established when NOSC selects the PLL, and maintained by the COSC setting.

       When NOSC and COSC select the PLL with different input sources, the system continues to run using

       the COSC setting, and the new source is enabled per NOSC. When the new oscillator is ready (and

       CSWHOLD = 0), system operation is suspended while the PLL input is switched and the PLL acquires

       lock. This provides a truly glitch-free clock switch operation.

       © 2017 Microchip Technology Inc.                      Datasheet                    40001844D-page 56
                                                                                                            PIC18(L)F27/47K40

                      Important:  If the PLL fails to lock, the FSCM will trigger.

4.3.3  Clock Switch and Sleep

       If OSCCON1 is written with a new value and the device is put to Sleep before the switch completes, the

       switch will not take place and the device will enter Sleep mode.

       When the device wakes from Sleep and the CSWHOLD bit is clear, the device will wake with the ‘new’

       clock active, and the clock switch interrupt flag bit (CSWIF) will be set.

       When the device wakes from Sleep and the CSWHOLD bit is set, the device will wake with the ‘old’ clock

       active and the new clock will be requested again.

       Figure 4-6. Clock Switch (CSWHOLD = 0)

                                                                                                                                                                                   Rev. 30-000064A

                                 OSCCON1                                                                                                                                           4/7/2016

                                 WRITTEN

                                                 OSC #1              OSC #2

           ORDY

           NOSCR                                                     NOTE 2

           CSWIF                                             NOTE 1

                                           USER

           CSWHOLD                         CLEAR

       NoteN:o te 1:  CSWIF is asserted coincident with NOSCR; interrupt is serviced at OSC#2 speed.

       1.  CS2W: ITFheisasassesrtieonrteofdNOcoSiCnRciisdehinddtewn iftrhomNthOeSusCeRr b;eicnatueserriut apptpiesarsseornvlyicfoerdthaetdOuraStiCon#o2f thsepseweitdch. .

       2.  The assertion of NOSCR is hidden from the user because it appears only for the duration of the

           switch.

       Figure 4-7. Clock Switch (CSWHOLD = 1)

                                                                                                                                                                                   Rev. 30-000065A

                                 OSCCON1                                                                                                                                           4/6/2017

                                 WRITTEN

                                                                                 OSC #1                     OSC #2

                      ORDY

           NOSCR

           CSWIF                                             NOTE 1

           CSWHOLD                                                                        USER

                                                                                          CLEAR

       NoteN:o te 1:  CSWIF  is  asserted  coincident  with  NOSCR, and may  be  cleared  before or  after  clearing  CSWHOLD                                               =  0.

       © 2017 Microchip Technology Inc.                                      Datasheet                                                                                         40001844D-page 57
                                                                                    PIC18(L)F27/47K40

       1.  CSWIF is asserted coincident with       NOSCR,    and  may  be  cleared before or after clearing

           CSWHOLD = 0.

       Figure 4-8. Clock Switch Abandoned

                                                                                                                        Rev. 30-000066A

                                                                                                                        4/6/2017

                            OSCCON1                                        OSCCON1

                            WRITTEN                                        WRITTEN

                                                     OSC #1

               ORDY                                                              NOTE 2

               NOSCR

               CSWIF                                 NOTE 1

           CSWHOLD

       Note: 

       1.  CSWIF may    be cleared before or   after rewriting OSCCON1; CSWIF is                     not automatically  cleared.

       2.  ORDY = 0 if  OSCCON1 does not        match OSCCON2; a new switch will                     begin.

4.4    Fail-Safe Clock Monitor

       The Fail-Safe Clock Monitor (FSCM) allows the device to continue operating should the external oscillator

       fail. The FSCM is enabled by setting the FCMEN bit in the Configuration Words. The FSCM is applicable

       to all external Oscillator modes (LP, XT, HS, ECL/M/H and Secondary Oscillator).

       Figure 4-9. FSCM Block Diagram

                                                                                    Rev. 30-000067A

                                                                  Clock Monitor          4/6/2017

                                         External                      Latch

                                         Clock                    S           Q

                                         LFINTOSC    ÷ 64         R           Q

                                         Oscillator

                                         31 kHz      488 Hz

                                         D~32  sd    D~2 msd

                                           Sample Clock                             Clock

                                                                                    Failure

                                                                                 Detected

4.4.1  Fail-Safe Detection

       The FSCM module detects a failed oscillator by comparing the external oscillator to the FSCM sample

       clock. The sample clock is generated by dividing the LFINTOSC by 64. See Figure 4-9. Inside the fail

       detector block is a latch. The external clock sets the latch on each falling edge of the external clock. The

       sample clock clears the latch on each rising edge of the sample clock. A failure is detected when an

       entire half-cycle of the sample clock elapses before the external clock goes low.

       © 2017 Microchip Technology Inc.                      Datasheet                                       40001844D-page 58
                                                                                      PIC18(L)F27/47K40

4.4.2  Fail-Safe Operation

       When the external clock fails, the FSCM overwrites the COSC bits to select HFINTOSC (3'b110). The

       frequency of HFINTOSC would be determined by the previous state of the HFFRQ bits and the NDIV/

       CDIV bits. The bit flag OSCFIF of the PIR1 register is set. Setting this flag will generate an interrupt if the

       OSCFIE bit of the PIE1 register is also set. The device firmware can then take steps to mitigate the

       problems that may arise from a failed clock. The system clock will continue to be sourced from the

       internal clock source until the device firmware successfully restarts the external oscillator and switches

       back to external operation, by writing to the NOSC and NDIV bits.

4.4.3  Fail-Safe Condition Clearing

       The Fail-Safe condition is cleared after a Reset, executing a SLEEP instruction or changing the NOSC

       and NDIV bits. When switching to the external oscillator or PLL, the OST is restarted. While the OST is

       running, the device continues to operate from the INTOSC selected in OSCCON1. When the OST times

       out, the Fail-Safe condition is cleared after successfully switching to the external clock source. The

       OSCFIF bit should be cleared prior to switching to the external clock source. If the Fail-Safe condition still

       exists, the OSCFIF flag will again become set by hardware.

4.4.4  Reset or Wake-up from Sleep

       The FSCM is designed to detect an oscillator failure after the Oscillator Start-up Timer (OST) has expired.

       The OST is used after waking up from Sleep and after any type of Reset. The OST is not used with the

       EC Clock modes so that the FSCM will be active as soon as the Reset or wake-up has completed.

       Figure 4-10. FSCM Timing Diagram

                                                                                                           Rev. 30-000068A

                                                                                                               4/6/2017

       Sample Clock

       System                                                             Oscillator

       Clock                                                              Failure

       Output

       Clock Monitor Output

       (Q)                                                                            Failure

                                                                                      Detected

       OSCFIF

                                         Test                             Test        Test

       Note:  The system clock is normally at a much higher frequency than the sample clock. The relative

       frequencies in this example have been chosen for clarity.

       © 2017 Microchip Technology Inc.        Datasheet                                        40001844D-page 59
                                                                             PIC18(L)F27/47K40

4.5     Register  Summary - OSC

Offset  Name      Bit Pos.

0x0ED8  OSCCON1   7:0                              NOSC[2:0]                     NDIV[3:0]

0x0ED9  OSCCON2   7:0                              COSC[2:0]                     CDIV[3:0]

0x0EDA  OSCCON3   7:0       CSWHOLD       SOSCPWR             ORDY   NOSCR

0x0EDB  OSCSTAT   7:0       EXTOR         HFOR     MFOR       LFOR   SOR     ADOR            PLLR

0x0EDC  OSCEN     7:0       EXTOEN        HFOEN    MFOEN      LFOEN  SOSCEN  ADOEN

0x0EDD  OSCTUNE   7:0                                                HFTUN[5:0]

0x0EDE  OSCFRQ    7:0                                                            HFFRQ[3:0]

4.6     Register  Definitions: Oscillator Control

        © 2017 Microchip Technology Inc.                  Datasheet                          40001844D-page 60
                                                                                          PIC18(L)F27/47K40

4.6.1       OSCCON1

            Name:     OSCCON1

            Offset:   0xED8

            Oscillator Control Register1

       Bit         7         6             5         4                     3              2              1         0

                                          NOSC[2:0]                                           NDIV[3:0]

Access                       R/W           R/W       R/W        R/W                      R/W             R/W       R/W

Reset                        f             f         f                     f              f              f         f

            Bits 6:4 – NOSC[2:0]  New Oscillator Source Request bits(1,2,3)

            The setting requests a source oscillator and PLL combination per Table 4-2.

            Table 4-1. Default Oscillator Settings

            CONFIG1[RSTOSC]                          SFR Reset Values (fff ffff)               Initial FOSC Frequency

                                          NOSC/COSC     NDIV/CDIV             OSCFRQ

                      111                     111         0000                                 EXTOSC per FEXTOSC

                      110                     110         0010                    4 MHz        FOSC = 1 MHz (4 MHz/4)

                      101                     101         0000                                           LFINTOSC

                      100                     100         0000                                              SOSC

                      011                                                     Reserved

                      010                     010         0000                    4 MHz         EXTOSC + 4xPLL(4)

                      001                                                     Reserved

                      000                     110         0000                    64 MHz        FOSC = 64 MHz

            Table  4-2. NOSC Bit Settings

                      NOSC<2:0>                                                   Clock Source

                             111                                                     EXTOSC(5)

                             110                                                  HFINTOSC(6)

                             101                                                     LFINTOSC

                             100                                                     SOSC

                             011                                                     Reserved

                             010                                              EXTOSC + 4x PLL(7)

                             001                                                     Reserved

                             000                                                     Reserved

            Bits 3:0 – NDIV[3:0]  New Divider Selection Request bits(2,3)

            The setting determines the new postscaler division ratio per Table 4-3.

        © 2017 Microchip Technology Inc.                  Datasheet                                           40001844D-page 61
                                                               PIC18(L)F27/47K40

Table 4-3. NDIV     Bit  Settings

NDIV<3:0>                                       Clock Divider

1111-1010                                       Reserved

1001                                            512

1000                                            256

0111                                            128

0110                                            64

0101                                            32

0100                                            16

0011                                            8

0010                                            4

0001                                            2

0000                                            1

Note: 

1.    The default value (f/f) is determined by the CONFIG1[RSTOSC] Configuration bits. See Table 4-1.

2.    If NOSC is written with a reserved value (Table 4-2), the operation is ignored and NOSC is not

      written.

3.    When CONFIG1[CSWEN] = 0, this register is read-only and cannot be changed from the POR

      value.

4.    EXTOSC must meet the PLL specifications.

5.    EXTOSC configured by CONFIG1[FEXTOSC].

6.    HFINTOSC frequency is set with the HFFRQ bits.

7.    EXTOSC must meet the PLL specifications.

Related Links

CONFIG1

PLL Specifications

© 2017 Microchip Technology Inc.                    Datasheet  40001844D-page 62
                                                                                          PIC18(L)F27/47K40

4.6.2       OSCCON2

            Name:      OSCCON2

            Offset:    0xED9

            Oscillator Control Register 2

       Bit        7           6            5                 4            3               2               1       0

                                           COSC[2:0]                                           CDIV[3:0]

Access                        R            R                 R            R               R               R       R

Reset                         q            q                 q            q               q               q       q

            Bits 6:4 – COSC[2:0]  Current Oscillator Source Select bits (read-only)(1,2)

            Indicates the current source oscillator and PLL combination as shown in the following         table.

            Table 4-4. COSC Bit Settings

                       COSC/NOSC                                                    Clock Source

                              111                                                      EXTOSC(3)

                              110                                                   HFINTOSC(4)

                              101                                                      LFINTOSC

                              100                                                      SOSC

                              011                                                      Reserved

                              010                                                   EXTOSC + 4x PLL(5)

                              001                                                      Reserved

                              000                                                      Reserved

            Bits 3:0 – CDIV[3:0]  Current Divider Select     bits (read-only)(1,2)

            Indicates the current postscaler division ratio  as shown in the follwing  table.

            Table 4-5. CDIV Bit Settings

            CDIV/NDIV                                           Clock Divider

            1111-1010                                           Reserved

            1001                                                512

            1000                                                256

            0111                                                128

            0110                                                64

            0101                                                32

            0100                                                16

            0011                                                8

            0010                                                4

        © 2017 Microchip Technology Inc.                            Datasheet                                40001844D-page 63
                                                                   PIC18(L)F27/47K40

CDIV/NDIV                                       Clock Divider

0001                                            2

0000                                            1

Note: 

1.    The POR value is the value present when user code execution  begins.

2.    The Reset value (q/q) is the same as the NOSC/NDIV bits.

3.    EXTOSC configured by the CONFIG1[FEXTOSC] bits.

4.    HFINTOSC frequency is set with the HFFRQ bits.

5.    EXTOSC must meet the PLL specifications.

Related Links

CONFIG1

PLL Specifications

© 2017 Microchip Technology Inc.                   Datasheet                40001844D-page 64
                                                                              PIC18(L)F27/47K40

4.6.3       OSCCON3

            Name:      OSCCON3

            Offset:    0xEDA

            Oscillator Control Register 3

       Bit      7             6            5                4          3      2  1                             0

               CSWHOLD  SOSCPWR                        ORDY            NOSCR

Access         R/W/HC         R/W                           RO         RO

Reset           0             0                             0          0

            Bit 7 – CSWHOLD Clock Switch Hold bit

            Value       Description

            1           Clock switch will hold (with interrupt) when the oscillator selected by NOSC is ready

            0           Clock switch may proceed when the oscillator selected by NOSC is ready; when NOSCR

                        becomes ‘1’, the switch will occur

            Bit 6 – SOSCPWR Secondary Oscillator Power Mode Select bit

            Value       Description

            1           Secondary oscillator operating in High-Power mode

            0           Secondary oscillator operating in Low-Power mode

            Bit 4 – ORDY Oscillator Ready bit (read-only)

            Value       Description

            1           OSCCON1 = OSCCON2; the current system clock is the clock specified by NOSC

            0           A clock switch is in progress

            Bit 3 – NOSCR  New Oscillator is Ready bit (read-only)(1)

            Value       Description

            1           A clock switch is in progress and the oscillator selected by NOSC indicates a “ready”

                        condition

            0           A clock switch is not in progress, or the NOSC-selected oscillator is not yet ready

            Note: 

            1.  If CSWHOLD = 0, the user may not see this bit set because the bit is set for less than one

                instruction cycle.

        © 2017 Microchip Technology Inc.                        Datasheet                                    40001844D-page 65
                                                                                      PIC18(L)F27/47K40

4.6.4       OSCSTAT

            Name:     OSCSTAT

            Offset:   0xEDB

            Oscillator Status Register 1

       Bit     7             6            5               4       3                   2             1            0

               EXTOR         HFOR         MFOR            LFOR    SOR        ADOR                                PLLR

Access         RO            RO           RO              RO      RO                  RO                         RO

Reset          q             q            q               q       q                   q                          q

            Bit 7 – EXTOR EXTOSC (external) Oscillator Ready bit

            Value     Description

            1         The oscillator is ready to be used

            0         The oscillator is not enabled, or is not yet ready to  be used

            Bit 6 – HFOR HFINTOSC Oscillator Ready bit

            Value     Description

            1         The oscillator is ready to be used

            0         The oscillator is not enabled, or is not yet ready to  be used

            Bit 5 – MFOR MFINTOSC Oscillator Ready bit

            Value     Description

            1         The oscillator is ready to be used

            0         The oscillator is not enabled, or is not yet ready to  be used

            Bit 4 – LFOR LFINTOSC Oscillator Ready bit

            Value     Description

            1         The oscillator is ready to be used

            0         The oscillator is not enabled, or is not yet ready to  be used

            Bit 3 – SOR Secondary (Timer1) Oscillator Ready bit

            Value     Description

            1         The oscillator is ready to be used

            0         The oscillator is not enabled, or is not yet ready to  be used

            Bit 2 – ADOR ADC Oscillator Ready bit

            Value     Description

            1         The oscillator is ready to be used

            0         The oscillator is not enabled, or is not yet ready to  be used

            Bit 0 – PLLR PLL Ready bit

            Value     Description

            1         The PLL is ready to be used

            0         The PLL is not enabled, the required input source      is not ready, or  the  PLL is  not  locked.

        © 2017 Microchip Technology Inc.                         Datasheet                                  40001844D-page 66
                                                                               PIC18(L)F27/47K40

4.6.5       OSCFRQ

            Name:         OSCFRQ

            Offset:       0xEDE

            HFINTOSC Frequency Selection Register

       Bit        7              6           5              4  3               2                1    0

                                                                                    HFFRQ[3:0]

Access                                                         R/W             R/W              R/W  R/W

Reset                                                          q               q                q    q

            Bits  3:0  –  HFFRQ[3:0] HFINTOSC   Frequency      Selection bits

                                    HFFRQ                                      Nominal Freq (MHz)

                                    1001

                                    1010

                                    1111

                                    1110                                            Reserved

                                    1101

                                    1100

                                    1011

                                    1000(1)                                         64

                                    0111                                            48

                                    0110                                            32

                                    0101                                            16

                                    0100                                            12

                                    0011                                            8

                                    0010(1)                                         4

                                    0001                                            2

                                    0000                                            1

            Note: 

            1.    Refer to Table 4-1 for more information.

        © 2017 Microchip Technology Inc.                       Datasheet                             40001844D-page 67
                                                                                        PIC18(L)F27/47K40

4.6.6       OSCTUNE

            Name:     OSCTUNE

            Offset:   0xEDD

            HFINTOSC Tuning Register

       Bit  7                6            5    4                  3                     2  1                   0

                                                                       HFTUN[5:0]

Access                                    R/W  R/W                R/W              R/W     R/W                 R/W

Reset                                     0    0                  0                     0  0                   0

            Bits 5:0 – HFTUN[5:0] HFINTOSC Frequency Tuning bits

            Value     Description

            01 1111   Maximum frequency

            00 0000   Center frequency. Oscillator module is running at the calibrated     frequency (default  value).

            10 0000   Minimum frequency

        © 2017 Microchip Technology Inc.            Datasheet                                   40001844D-page 68
                                                                                    PIC18(L)F27/47K40

4.6.7       OSCEN

            Name:      OSCEN

            Offset:    0xEDC

            Oscillator Manual Enable Register

       Bit     7              6                5             4      3               2      1          0

               EXTOEN  HFOEN              MFOEN        LFOEN    SOSCEN              ADOEN

Access         R/W            R/W         R/W          R/W          R/W             R/W

Reset          0              0                0             0      0               0

            Bit 7 – EXTOEN External Oscillator Manual Request Enable bit

            Value      Description

            1          EXTOSC is explicitly enabled, operating as specified by CONFIG1[FEXTOSC]

            0          EXTOSC is only enabled if requested by a peripheral

            Bit 6 – HFOEN HFINTOSC Oscillator Manual Request Enable bit

            Value      Description

            1          HFINTOSC is explicitly enabled, operating as specified by OSCFRQ

            0          HFINTOSC is only enabled if requested by a peripheral

            Bit 5 – MFOEN MFINTOSC (500 kHz/31.25 kHz) Oscillator Manual Request Enable bit (Derived  from

            HFINTOSC)

            Value      Description

            1          MFINTOSC is explicitly enabled

            0          MFINTOSC is only enabled if requested by a peripheral

            Bit 4 – LFOEN LFINTOSC (31 kHz) Oscillator Manual Request Enable bit

            Value      Description

            1          LFINTOSC is explicitly enabled

            0          LFINTOSC is only enabled if requested by a peripheral

            Bit 3 – SOSCEN Secondary Oscillator Manual Request Enable bit

            Value      Description

            1          Secondary Oscillator is explicitly enabled, operating as specified by SOSCPWR

            0          Secondary Oscillator is only enabled if requested by a peripheral

            Bit 2 – ADOEN ADC Oscillator Manual Request Enable bit

            Value      Description

            1          ADC oscillator is explicitly enabled

            0          ADC oscillator is only enabled if requested by a peripheral

        © 2017 Microchip Technology Inc.                        Datasheet                             40001844D-page 69
                                                                                                                                                                         PIC18(L)F27/47K40

5.   Reference Clock Output Module

     The reference clock output module provides the ability to send a clock signal to the clock reference output

     pin (CLKR). The reference clock output can also be routed internally as a signal for other peripherals,

     such as the Data Signal Modulator (DSM), Memory Scanner, and Timer module.

     The reference clock output module has the following features:

     FT•iiltelen:aSmee:lectable1Cc0lol-o0cck00kR2e6sf1eoBrue.vnrsccdeeBulosciknDgiatghreamCWLiKthRSeCleLcKtabrlee gCilsoctek rSource

     L•ast EPdirt:ogramma5/b11le/20c1lo6ck divider
     FN•iorstet sU:Sseedl:ectablePdICu1ty8(Lc)yFc2xle/4x/6xK40 (MVAF,MVAE,MVAB,MVAC,MVAK)

     Figure 5-1. Clock Reference Block Diagram

                                                                                                                                                                                      Rev. 10-000261B

                                                                                                                                                                                      5/11/2016

                                                            CLKRDIV<2:0>

                                                    CLKREN  Counter Reset

                                                                                                                                                               128  111

             See                                                                                                                      Reference Clock Divider  64   110  CLKRDC<1:0>

             CLKRCLK                                                                                                                                           32   101

             Register                                                                                                                                                                      CLKR

                                                                                                                                                               16   100

                                                                                                                                                               8    011  Duty Cycle   PPS

             Filename:            10-000264B.vsd

             Title:               C5P/Il2oC5c1/k82R(0L1e)6Ffe2rxe/n4cxe/6TxiKm4in0g(MVAF,MVAE,MVAB,MVAC,MV42AK)001001

             Last Edit:                                                                                                                                                  To Peripherals

             First Used:

             Notes:                    CLKREN                                                                                                                       000

             CLKRCLK<3:0>

     Figure  5-2. Clock Reference Timing

                                                                                                                                                                                           Rev. 10-000264B

                                                                                                                                                                                                       5/25/2016

                                       P1           P2

                         CLKRCLK

                         CLKREN

             CLKR Output

             CLKRDIV<2:0> = 001

             CLKRDC<1:0>   = 10        Duty Cycle

                                       (50%)

             CLKR Output               CLKRCLK/2

             CLKRDIV<2:0> = 001

             CLKRDC<1:0>   = 01        Duty Cycle

                                       (25%)

5.1  Clock Source

     The clock source of the reference clock peripheral is selected with the CLK bits. The available clock

     sources are listed in the following table:

     © 2017 Microchip Technology Inc.                       Datasheet                                                                                                                 40001844D-page 70
                                                                       PIC18(L)F27/47K40

       Table  5-1. CLKR  Clock    Sources

                 CLK                                     Clock Source

                 111                                     Reserved

                 110                                     Reserved

                 101                                     Reserved

                 100                                     SOSC

                 011                                     MFINTOSC (500 kHz)

                 010                                     LFINTOSC (31 kHz)

                 001                                     HFINTOSC

                 000                                     FOSC

5.1.1  Clock Synchronization

       The CLKR output signal is ensured to be glitch-free when the EN bit is set to start the module and enable

       the CLKR output.

       When the reference clock output is disabled, the output signal will be disabled immediately.

       Clock dividers and clock duty cycles can be changed while the module is enabled but doing so may

       cause glitches to occur on the output. To avoid possible glitches, clock dividers and clock duty cycles

       should be changed only when the EN bit is clear.

5.2    Programmable Clock Divider

       The module takes the clock input and divides it based on the value of the DIV bits.

       The following configurations are available:

       •      Base Fosc value

       •      FOSC divided by 2

       •      FOSC divided by 4

       •      FOSC divided by 8

       •      FOSC divided by 16

       •      FOSC divided by 32

       •      FOSC divided by 64

       •      FOSC divided by 128

       The clock divider values can be changed while the module is enabled. However, in order to prevent

       glitches on the output, the DIV bits should only be changed when the module is disabled (EN = 0).

5.3    Selectable Duty Cycle

       The DC bits are used to modify the duty cycle of the output clock. A duty cycle of 0%, 25%, 50%, or 75%

       can be selected for all clock rates when the DIV value is not 0b000. When DIV=0b000 then the duty

       cycle defaults to 50% for all values of DC except 0b00 in which case the duty cycle is 0% (constant low

       output).

       The duty cycle can be changed while the module is enabled. However, in order to prevent glitches on the

       output, the DC bits should only be changed when the module is disabled (EN = 0).

       © 2017 Microchip Technology Inc.                  Datasheet                                   40001844D-page 71
                                                  PIC18(L)F27/47K40

     Important:  The DC value at reset is 10. This makes the default duty cycle 50% and not 0%.

5.4  Operation in Sleep Mode

     The reference clock module continues to operate and provide a signal output in sleep for all clock source

     selections except FOSC (CLK=0).

     © 2017 Microchip Technology Inc.  Datasheet  40001844D-page 72
                                                                             PIC18(L)F27/47K40

5.5     Register Summary: Reference CLK

Offset  Name            Bit Pos.

0x0F3E  CLKRCON         7:0               EN                        DC[1:0]                     DIV[2:0]

0x0F3F  CLKRCLK         7:0                                                                     CLK[2:0]

5.6     Register Definitions: Reference Clock

        Long bit name prefixes for the Reference Clock peripherals  are shown in the following  table. Refer  to  the

        "Long Bit Names" section for more information.

        Table 5-2. TABLE 5-1:

                        Peripheral                                  Bit Name Prefix

                        CLKR                                                 CLKR

        Related Links

        Long Bit Names

        © 2017 Microchip Technology Inc.                Datasheet                               40001844D-page 73
                                                                                             PIC18(L)F27/47K40

5.6.1       CLKRCON

            Name:       CLKRCON

            Offset:     0xF3E

            Reference Clock Control Register

       Bit       7               6            5             4             3             2                 1    0

                 EN                                              DC[1:0]                           DIV[2:0]

Access           R/W                                        R/W           R/W           R/W               R/W  R/W

Reset            0                                          1             0             0                 0    0

            Bit 7 – EN

            Reference Clock Module Enable bit

            Value       Description

            1           Reference clock module enabled

            0           Reference clock module is disabled

            Bits 4:3 – DC[1:0]

            Reference Clock Duty Cycle bits(1)

            Value       Description

            11          Clock outputs duty cycle of 75%

            10          Clock outputs duty cycle of 50%

            01          Clock outputs duty cycle of 25%

            00          Clock outputs duty cycle of 0%

            Bits 2:0 – DIV[2:0]

            Reference Clock Divider bits

            Value       Description

            111         Base clock value  divided  by  128

            110         Base clock value  divided  by  64

            101         Base clock value  divided  by  32

            100         Base clock value  divided  by  16

            011         Base clock value  divided  by  8

            010         Base clock value  divided  by  4

            001         Base clock value  divided  by  2

            000         Base clock value

            Note: 

            1.   Bits are valid for reference clock divider values of two or   larger,  the  base  clock  cannot be further

                 divided.

        © 2017 Microchip Technology Inc.                         Datasheet                                     40001844D-page  74
                                                                       PIC18(L)F27/47K40

5.6.2       CLKRCLK

            Name:     CLKRCLK

            Offset:   0xF3F

            Clock Reference Clock Selection MUX

       Bit  7                6            5           4     3          2    1         0

                                                                            CLK[2:0]

Access                                                                 R/W  R/W       R/W

Reset                                                                  0    0         0

            Bits 2:0 – CLK[2:0] CLKR Clock Selection  bits

            See the Clock Sources table.

        © 2017 Microchip Technology Inc.                    Datasheet                 40001844D-page 75
                                                                                    PIC18(L)F27/47K40

6.     Power-Saving Operation Modes

       The purpose of the Power-Down modes is to reduce power consumption. There are three Power-Down

       modes:

       •  Doze mode

       •  Sleep mode

       •  Idle mode

6.1    Doze Mode

       Doze mode allows for power saving by reducing CPU operation and program memory (PFM) access,

       without affecting peripheral operation. Doze mode differs from Sleep mode because the bandgap and

       system oscillators continue to operate, while only the CPU and PFM are affected. The reduced execution

       saves power by eliminating unnecessary operations within the CPU and memory.

       When the Doze Enable bit is set (DOZEN = 1), the CPU executes only one instruction cycle out of every

       N cycles as defined by the DOZE bits. For example, if DOZE = 001, the instruction cycle ratio is 1:4. The

       CPU and memory execute for one instruction cycle and then lay idle for three instruction cycles. During

       the unused cycles, the peripherals continue to operate at the system clock speed.

6.1.1  Doze Operation

       The Doze operation is illustrated in Figure 6-1 . For this example:

       •  Doze enabled (DOZEN = 1)

       •  DOZE = 001 (1:4) ratio

       •  Recover-on-Interrupt enabled (ROI = 1)

       As with normal operation, the PFM fetches for the next instruction   cycle.  The Q-clocks  to  the  peripherals

       continue throughout.

       Figure 6-1. DOZE MODE OPERATION EXAMPLE (DOZE<2:0>                   = 001,  1:4)

                                                                                                                     Rev.  3000089A

                                                                                                                           4/11/2017

6.1.2  Interrupts During Doze

       If an interrupt occurs and the Recover-On-Interrupt bit is clear (ROI = 0) at the time of the interrupt, the

       Interrupt Service Routine (ISR) continues to execute at the rate selected by DOZE<2:0>. Interrupt latency

       is extended by the DOZE<2:0> ratio.

       If an interrupt occurs and the ROI bit is set (ROI = 1) at the time of the interrupt, the DOZEN bit is cleared

       and the CPU executes at full speed. The prefetched instruction is executed and then the interrupt vector

       sequence is executed. In Figure 6-1, the interrupt occurs during the 2nd instruction cycle of the Doze

       © 2017 Microchip Technology Inc.           Datasheet                                           40001844D-page 76
                                                                            PIC18(L)F27/47K40

     period, and immediately brings the CPU out of Doze. If the Doze-On-Exit (DOE) bit is set (DOE = 1) when

     the RETFIE operation is executed, DOZEN is set, and the CPU executes at the reduced rate based on

     the DOZE<2:0> ratio.

     Figure 6-2. Doze Software Example

     //Mainline               operation
     bool     somethingToDo                 =  FALSE:
     void     main()
     {
     initializeSystem();
     //   DOZE         =     64:1     (for     example)
     //   ROI       =     1;
     GIE   =     1;       //     enable     interrupts
     while       (1)
     {
     //   If     ADC         completed,        process     data
     if   (somethingToDo)
     {
     doSomething();
     DOZEN       =     1;     //   resume      low-power
     }
     }
     }
     //   Data         interrupt         handler
     void     interrupt()
     {
     //   DOZEN           =   0   because      ROI  =   1
     if   (ADIF)
     {
     somethingToDo                 =   TRUE;
     DOE   =     0;       //     make  main()       go  fast
     ADIF     =     0;
     }
     //   else         check       other       interrupts...
     if   (TMR0IF)
     {
     timerTick++;
     DOE   =     1;       //     make  main()       go  slow
     TMR0IF         =     0;
     }
     }

6.2  Sleep Mode

     Sleep mode is entered by executing the SLEEP instruction, while the Idle Enable (IDLEN) bit of the

     CPUDOZE register is clear (IDLEN = 0).

     Upon entering Sleep mode, the following conditions exist:

     1.    WDT will be cleared but keeps running if enabled for operation during Sleep

     2.    The PD bit of the STATUS register is cleared

     3.    The TO bit of the STATUS register is set

     4.    The CPU clock is disabled

     5.    LFINTOSC, SOSC, HFINTOSC and ADCRC are unaffected and peripherals using them may

           continue operation in Sleep.

     6.    I/O ports maintain the status they had before Sleep was executed (driving high, low, or high-

           impedance)

     7.    Resets other than WDT are not affected by Sleep mode

     Refer to individual chapters for more details on peripheral operation during Sleep.

     To minimize current consumption, the following conditions should be considered:

     •     I/O pins should not be floating

     © 2017 Microchip Technology Inc.                            Datasheet                40001844D-page 77
                                                                                    PIC18(L)F27/47K40

       •       External circuitry sinking current from I/O pins

       •       Internal circuitry sourcing current from I/O pins

       •       Current draw from pins with internal weak pull-ups

       •       Modules using any oscillator

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

       currents caused by floating inputs.

       Examples of internal circuitry that might be sourcing current include modules such as the DAC and FVR

       modules.

6.2.1  Wake-up from Sleep

       The device can wake-up from Sleep through one of the following events:

       1.      External Reset input on MCLR pin, if enabled

       2.      BOR Reset, if enabled

       3.      Low-Power Brown-Out Reset (LPBOR), if enabled

       4.      POR Reset

       5.      Windowed Watchdog Timer, if enabled

       6.      All interrupt sources except clock switch interrupt can wake-up the part.

       The first five events will cause a device Reset. The last one event is considered a continuation of

       program execution. To determine whether a device Reset or wake-up event occurred, refer to

       "Determining the Cause of a Reset".

       When the SLEEP instruction is being executed, the next instruction (PC + 2) is prefetched. For the device

       to wake-up through an interrupt event, the corresponding Interrupt Enable bit must be enabled, as well as

       the Peripheral Interrupt Enable bit (PEIE = 1), for every interrupt not in PIR0. Wake-up will occur

       regardless of the state of the GIE bit. If the GIE bit is disabled, the device continues execution at the

       instruction after the SLEEP instruction. If the GIE bit is enabled, the device executes the instruction after

       the SLEEP instruction, the device will then call the Interrupt Service Routine. In cases where the

       execution of the instruction following SLEEP is not desirable, the user should have a NOP after the SLEEP

       instruction.

       The WDT is cleared when the device wakes-up from Sleep, regardless of the source of wake-up.

       Upon a wake from a Sleep event, the core will wait for a combination of three conditions before beginning

       execution. The conditions are:

       •       PFM Ready

       •       COSC-Selected Oscillator Ready

       •       BOR Ready (unless BOR is disabled)

6.2.2  Wake-up Using Interrupts

       When global interrupts are disabled (GIE cleared) and any interrupt source, with the exception of the

       clock switch interrupt, has both its interrupt enable bit and interrupt flag bit set, one of the following will

       occur:

       •       If the interrupt occurs before the execution of a SLEEP instruction

               –     SLEEP instruction will execute as a NOP

               –     WDT and WDT prescaler will not be cleared

               –     TO bit of the STATUS register will not be set

               –     PD bit of the STATUS register will not be cleared

       © 2017 Microchip Technology Inc.                           Datasheet                        40001844D-page 78
                                                                                                        PIC18(L)F27/47K40

         •   If the interrupt occurs during or after the execution of a SLEEP instruction

                  –        SLEEP instruction will be completely executed

                  –        Device will immediately wake-up from Sleep

                  –        WDT and WDT prescaler will be cleared

                  –        TO bit of the STATUS register will be set

                  –        PD bit of the STATUS register will be cleared

         Even if the flag bits were checked before executing a SLEEP instruction, it may be possible for flag bits to

         become set before the SLEEP instruction completes. To determine whether a SLEEP instruction executed,

         test the PD bit. If the PD bit is set, the SLEEP instruction was executed as a NOP.

         Figure 6-3. WAKE-UP FROM SLEEP THROUGH INTERRUPT

                                                                                                                                 Rev. 3000090A

                                                                                                                                        4/12/2017

             CLKIN(1)

            CLKOUT(2)                                                    TOST(3)

         Interrupt flag                                                           Interrupt Latency(4)

         GIE bit                                           Processor in
         (INTCON reg.)
                                                           Sleep

         Instruction Flow

                  PC       PC                PC + 1               PC + 2          PC + 2                PC + 2  0004h            0005h

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

         Instruction       Inst(PC - 1)      Sleep                                Inst(PC + 1)  Forced NOP      Forced NOP       Inst(0004h)
         Executed

         Note: 

         1.  External clock. High, Medium, Low mode assumed.

         2.  CLKOUT is shown here for timing reference.

         3.  TOST = 1024 TOSC. This delay does not apply to EC and INTOSC Oscillator modes.

         4.  GIE = 1 assumed. In this case after wake-up, the processor calls the ISR at 0004h.                              If  GIE = 0,

             execution will continue in-line.

6.2.3    Low-Power Sleep Mode

         The PIC18F27/47K40 device family contains an internal Low Dropout (LDO) voltage regulator, which

         allows the device I/O pins to operate at voltages up to 5.5V while the internal device logic operates at a

         lower voltage. The LDO and its associated reference circuitry must remain active when the device is in

         Sleep mode.

         The PIC18F27/47K40devices allows the user to optimize the operating current in Sleep, depending on

         the application requirements.

         Low-Power Sleep mode can be selected by setting the VREGPM bit of the VREGCON register.

6.2.3.1  Sleep Current vs. Wake-up Time

         In the default operating mode, the LDO and reference circuitry remain in the normal configuration while in

         Sleep. The device is able to exit Sleep mode quickly since all circuits remain active. In Low-Power Sleep

         mode, when waking-up from Sleep, an extra delay time is required for these circuits to return to the

         normal configuration and stabilize.

         The Low-Power Sleep mode is beneficial for applications that stay in Sleep mode for long periods of time.

         The Normal mode is beneficial for applications that need to wake from Sleep quickly and frequently.

         © 2017 Microchip Technology Inc.                                 Datasheet                                          40001844D-page 79
                                                                         PIC18(L)F27/47K40

6.2.3.2  Peripheral Usage in Sleep

         Some peripherals that can operate in Sleep mode will not operate properly with the Low-Power Sleep

         mode selected. The Low-Power Sleep mode is intended for use with these peripherals:

         •  Brown-out Reset (BOR)

         •  Windowed Watchdog Timer (WWDT)

         •  External interrupt pin/Interrupt-On-Change pins

         •  Peripherals that run off external secondary clock source

         It is the responsibility of the end user to determine what is acceptable for their application when setting

         the VREGPM settings in order to ensure operation in Sleep.

            Important:  The PIC18F27/47K40 devices do not have a configurable Low-Power Sleep mode.

            PIC18LF27/47K40 devices are unregulated and are always in the lowest power state when in

            Sleep, with no wake-up time penalty. These devices have a lower maximum Vdd and I/O

            voltage than the PIC18F27/47K40.

6.2.4    Idle Mode

         When IDLEN is set (IDLEN = 1), the SLEEP instruction will put the device into Idle mode. In Idle mode,

         the CPU and memory operations are halted, but the peripheral clocks continue to run. This mode is

         similar to Doze mode, except that in IDLE both the CPU and PFM are shut off.

            Important:  If CLKOUTEN is enabled (CLKOUTEN = 0, Configuration Word 1H), the output will

            continue operating while in Idle.

6.2.4.1  Idle and Interrupts

         IDLE mode ends when an interrupt occurs (even if GIE = 0), but IDLEN is not changed. The device can

         re-enter IDLE by executing the SLEEP instruction.

         If Recover-On-Interrupt is enabled (ROI = 1), the interrupt that brings the device out of Idle also restores

         full-speed CPU execution when doze is also enabled.

6.2.4.2  Idle and WWDT

         When in Idle, the WWDT Reset is blocked and will instead wake the device. The WWDT wake-up is not

         an interrupt, therefore ROI does not apply.

            Important:  The WWDT can bring the device out of Idle, in the same way it brings the device

            out of Sleep. The DOZEN bit is not affected.

6.3      Peripheral Operation in Power Saving Modes

         All selected clock sources and the peripherals running off them are active in both IDLE and DOZE mode.

         Only in Sleep mode, both the FOSC and FOSC/4 clocks are unavailable. All the other clock sources are

         active, if enabled manually or through peripheral clock selection before the part enters Sleep.

         © 2017 Microchip Technology Inc.                     Datasheet                                   40001844D-page 80
                                                                 PIC18(L)F27/47K40

6.4     Register  Summary - Power Savings Control

Offset  Name      Bit Pos.

0x0ED7  CPUDOZE   7:0       IDLEN         DOZEN  ROI  DOE        DOZE[2:0]

0x0ED8

...     Reserved

0x0EDE

0x0EDF  VREGCON   7:0                                            VREGPM     Reserved

6.5     Register  Definitions: Power Savings Control

        © 2017 Microchip Technology Inc.              Datasheet  40001844D-page 81
                                                                             PIC18(L)F27/47K40

6.5.1       VREGCON

            Name:     VREGCON

            Offset:   0xEDF

            Voltage Regulator Control Register(1)

       Bit      7            6            5        4                 3       2  1       0

                                                                                VREGPM  Reserved

Access                                                                          R/W     R/W

Reset                                                                           0       1

            Bit 1 – VREGPM Voltage Regulator Power Mode Selection       bit

            Value     Description

            1         Low-Power Sleep mode enabled in Sleep.(2)

                      Draws lowest current in Sleep, slower wake-up

            0         Normal Power mode enabled in Sleep.(2)

                      Draws higher current in Sleep, faster wake-up

            Bit 0 – Reserved Read as ‘1’. Maintain this bit set.

            Note: 

            1.  F devices only.

            2.  See Electrical Specifications.

            Related Links

            Electrical Specifications

        © 2017 Microchip Technology Inc.                          Datasheet          40001844D-page 82
                                                                                         PIC18(L)F27/47K40

6.5.2       CPUDOZE

            Name:        CPUDOZE

            Offset:      0xED7

            Doze and Idle Register

       Bit       7              6              5       4                     3           2            1           0

               IDLEN           DOZEN           ROI     DOE                                            DOZE[2:0]

Access           R/W       R/W/HC/HS           R/W     R/W                               R/W          R/W         R/W

Reset            0              0              0       0                                 0            0           0

            Bit 7 – IDLEN Idle Enable bit

            Reset States: POR/BOR = 0

                         All Other Resets = u

            Value        Description

            1            A SLEEP instruction inhibits the CPU clock, but not the peripheral clock(s)

            0            A SLEEP instruction places the device into full Sleep mode

            Bit 6 – DOZEN

            Doze Enable bit(1)

            Value        Description

            1            The CPU executes instruction cycles according to DOZE setting

            0            The CPU executes all instruction cycles (fastest, highest power operation)

            Bit 5 – ROI Recover-On-Interrupt bit

            Value        Description

            1            Entering the Interrupt Service Routine (ISR) makes DOZEN = 0, bringing the CPU to full-

                         speed operation

            0            Interrupt entry does not change DOZEN

            Bit 4 – DOE Doze-On-Exit bit

            Value        Description

            1            Executing RETFIE makes DOZEN = 1, bringing the CPU to reduced speed operation

            0            RETFIE does not change DOZEN

            Bits 2:0  –  DOZE[2:0] Ratio   of  CPU  Instruction  Cycles  to  Peripheral  Instruction  Cycles

            Value        Description

            111          1:256

            110          1:128

            101          1:64

            100          1:32

            011          1:16

            010          1:8

            001          1:4

            000          1:2

        © 2017 Microchip Technology Inc.                         Datasheet                                    40001844D-page 83
                                                                          PIC18(L)F27/47K40

Note: 

1.  When ROI = 1 or          DOE   =  1,  DOZEN  is  changed by hardware  interrupt entry and/or exit.

© 2017 Microchip Technology  Inc.                    Datasheet            40001844D-page 84
                                                                                   PIC18(L)F27/47K40

7.   (PMD) Peripheral Module Disable

     This module provides the ability to selectively enable or disable a peripheral. Disabling a peripheral

     places it in its lowest possible power state. The user can disable unused modules to reduce the overall

     power consumption.

     The PIC18(L)F27/47K40 devices address this requirement by allowing peripheral modules to be

     selectively enabled or disabled. Disabling a peripheral places it in the lowest possible power mode.

           Important:  All modules are ON by default following any system reset.

7.1  Disabling a Module

     A peripheral can be disabled by setting the corresponding peripheral disable  bit  in  the  PMDx  register.

     Disabling a module has the following effects:

     •  The module is held in Reset and does not function.

     •  All the SFRs pertaining to that peripheral become “unimplemented”

        –            Writing is disabled

        –            Reading returns 0x00

     •  Module outputs are disabled

     Related Links

     I/O Priorities

7.2  Enabling a Module

     Clearing the corresponding module disable bit in the PMDx register, re-enables the module and the SFRs

     will reflect the Power-on-Reset values.

           Important:  There should be no reads/writes to the module SFRs for at least two instruction

           cycles after it has been re-enabled.

     © 2017 Microchip Technology Inc.               Datasheet                                    40001844D-page 85
                                                                              PIC18(L)F27/47K40

7.3     Register  Summary - PMD

Offset  Name      Bit Pos.

0x0EE1  PMD0      7:0       SYSCMD        FVRMD    HLVDMD   CRCMD     SCANMD  NVMMD   CLKRMD  IOCMD

0x0EE2  PMD1      7:0                     TMR6MD   TMR5MD   TMR4MD    TMR3MD  TMR2MD  TMR1MD  TMR0MD

0x0EE3  PMD2      7:0                     DACMD    ADCMD                      CMP2MD  CMP1MD  ZCDMD

0x0EE4  PMD3      7:0                                                 PWM4MD  PWM3MD  CCP2MD  CCP1MD

0x0EE5  PMD4      7:0       UART2MD       UART1MD  MSSP2MD  MSSP1MD                           CWG1MD

0x0EE6  PMD5      7:0                                                                         DSMMD

7.4     Register  Definitions: Peripheral Module Disable

        © 2017 Microchip Technology Inc.                   Datasheet                  40001844D-page 86
                                                                           PIC18(L)F27/47K40

7.4.1       PMD0

            Name:      PMD0

            Offset:    0xEE1

            PMD Control Register 0

       Bit        7           6             5           4       3          2      1                     0

               SYSCMD        FVRMD        HLVDMD     CRCMD      SCANMD     NVMMD  CLKRMD                IOCMD

Access         R/W            R/W           R/W         R/W     R/W        R/W    R/W                   R/W

Reset             0           0             0           0       0          0      0                     0

            Bit 7 – SYSCMD Disable Peripheral System Clock Network bit

            Disables the System clock network(1)

            Value      Description

            1          System clock network disabled (FOSC)

            0          System clock network enabled

            Bit 6 – FVRMD Disable Fixed Voltage Reference bit

            Value      Description

            1          FVR module disabled

            0          FVR module enabled

            Bit 5 – HLVDMD Disable High-Low-Voltage Detect bit

            Value      Description

            1          HLVD module disabled

            0          HLVD module enabled

            Bit 4 – CRCMD Disable CRC Engine bit

            Value      Description

            1          CRC module disabled

            0          CRC module enabled

            Bit 3 – SCANMD Disable NVM Memory Scanner bit

            Disables the Scanner module(2)

            Value      Description

            1          NVM Memory Scan module disabled

            0          NVM Memory Scan module enabled

            Bit 2 – NVMMD NVM Module Disable bit

            Disables the NVM module(3)

            Value      Description

            1          All Memory reading and writing is disabled; NVMCON  registers cannot be written

            0          NVM module enabled

            Bit 1 – CLKRMD Disable Clock Reference bit

        © 2017 Microchip Technology Inc.                       Datasheet               40001844D-page 87
                                                              PIC18(L)F27/47K40

Value    Description

1        CLKR module disabled

0        CLKR module enabled

Bit 0 – IOCMD Disable Interrupt-on-Change bit, All Ports

Value    Description

1        IOC module(s) disabled

0        IOC module(s) enabled

Note: 

1.  Clearing the SYSCMD bit disables the system clock (FOSC) to peripherals, however  peripherals

    clocked by FOSC/4 are not affected.

2.  Subject to SCANE bit in Configuration Word 4.

3.  When enabling NVM, a delay of up to 1 µs is required before accessing data.

Related Links

CONFIG4

© 2017 Microchip Technology Inc.                   Datasheet                          40001844D-page 88
                                                                            PIC18(L)F27/47K40

7.4.2       PMD1

            Name:     PMD1

            Offset:   0xEE2

            PMD Control Register 1

       Bit        7          6            5       4                 3       2       1       0

                      TMR6MD              TMR5MD  TMR4MD            TMR3MD  TMR2MD  TMR1MD  TMR0MD

Access                       R/W          R/W     R/W               R/W     R/W     R/W     R/W

Reset                        0            0       0                 0       0       0       0

            Bits 0, 1, 2, 3, 4, 5, 6 – TMRnMD Disable Timer n  bit

            Value     Description

            1         TMRn module disabled

            0         TMRn module enabled

        © 2017 Microchip Technology Inc.                       Datasheet                 40001844D-page 89
                                                                          PIC18(L)F27/47K40

7.4.3       PMD2

            Name:     PMD2

            Offset:   0xEE3

            PMD Control Register 2

       Bit        7          6             5     4                  3     2       1       0

                           DACMD          ADCMD                           CMP2MD  CMP1MD  ZCDMD

Access                       R/W           R/W                            R/W     R/W     R/W

Reset                        0             0                              0       0       0

            Bit 6 – DACMD Disable DAC bit

            Value     Description

            1         DAC module disabled

            0         DAC module enabled

            Bit 5 – ADCMD Disable ADC bit

            Value     Description

            1         ADC module disabled

            0         ADC module enabled

            Bits 1, 2 – CMPnMD Disable Comparator CMPn bit

            Value     Description

            1         CMPn module disabled

            0         CMPn module enabled

            Bit 0 – ZCDMD  Disable Zero-Cross Detect module bit(1)

            Value     Description

            1         ZCD module disabled

            0         ZCD module enabled

            Note: 

            1.    Subject to ZCD bit in Configuration Word 2.

            Related Links

            CONFIG2

        © 2017 Microchip Technology Inc.                       Datasheet               40001844D-page 90
                                                                        PIC18(L)F27/47K40

7.4.4       PMD3

            Name:     PMD3

            Offset:   0xEE4

            PMD Control Register 3

       Bit        7          6            5  4                     3    2       1       0

                                                PWM4MD                  PWM3MD  CCP2MD  CCP1MD

Access                                                             R/W  R/W     R/W     R/W

Reset                                                              0    0       0       0

            Bit 3 – PWM4MD Disable Pulse-Width Modulator PWM4 bit

            Value     Description

            1         PWM4 module disabled

            0         PWM4 module enabled

            Bit 2 – PWM3MD Disable Pulse-Width Modulator PWM3 bit

            Value     Description

            1         PWM3 module disabled

            0         PWM3 module enabled

            Bit 1 – CCP2MD Disable Pulse-Width Modulator CCP2 bit

            Value     Description

            1         CCP2 module disabled

            0         CCP2 module enabled

            Bit 0 – CCP1MD Disable Pulse-Width Modulator CCP1 bit

            Value     Description

            1         CCP1 module disabled

            0         CCP1 module enabled

        © 2017 Microchip Technology Inc.        Datasheet                            40001844D-page 91
                                                                       PIC18(L)F27/47K40

7.4.5       PMD4

            Name:       PMD4

            Offset:     0xEE5

            PMD Control Register 4

       Bit        7            6          5         4       3          2  1  0

               UART2MD  UART1MD           MSSP2MD  MSSP1MD                   CWG1MD

Access         R/W             R/W        R/W       R/W                      R/W

Reset             0            0          0         0                        0

            Bit 7 – UART2MD Disable EUSART2 bit

            Value       Description

            1           EUSART2 module disabled

            0           EUSART2 module enabled

            Bit 6 – UART1MD Disable EUSART1 bit

            Value       Description

            1           EUSART1 module disabled

            0           EUSART1 module enabled

            Bit 5 – MSSP2MD Disable MSSP2 bit

            Value       Description

            1           MSSP2 module disabled

            0           MSSP2 module enabled

            Bit 4 – MSSP1MD Disable MSSP1 bit

            Value       Description

            1           MSSP1 module disabled

            0           MSSP1 module enabled

            Bit 0 – CWG1MD Disable CWG1 Module bit

            Value       Description

            1           CWG1 module disabled

            0           CWG1 module enabled

        © 2017 Microchip Technology Inc.                    Datasheet        40001844D-page 92
                                                                          PIC18(L)F27/47K40

7.4.6       PMD5

            Name:     PMD5

            Offset:   0xEE6

            PMD Control Register 5

       Bit        7          6            5    4               3          2  1  0

                                                                                DSMMD

Access                                                                          R/W

Reset                                                                           0

            Bit 0 – DSMMD Disable Data Signal  Modulator  bit

            Value     Description

            1         DSM module disabled

            0         DSM module enabled

        © 2017 Microchip Technology Inc.                       Datasheet        40001844D-page 93
                                                                                                                                                                           PIC18(L)F27/47K40

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

     BORFoilernPamOeR: event. 10-000006E.vsd

     A simTLpaitlsleitf:iEeddit:block diaS5g/i1mr1ap/2lmif0ie1d6obflothckedOiagnr-aCmhfoipr RREeSEsTetmCodirucleuit is shown in the block diagram below.

     FigurFNeiorst8et :U-1se. dS: implifiP1e.ICdS1e8Be(LTlo)aFbc2lekx/48Dx-1/i6afxogKr 4Br0aOm(RMVaocAtfFiv,OeMcnVoA-nCEd,ihtMioiVnpAsBR,MeVsAeCt,MCVirAcKu) it

                                                                                                                                                                           Rev. 10-000006E

                                                                                                                                                                           5/11/2016

                    ICSP™ Programming Mode Exit

                        RESET Instruction

                        Stack Underflow

                        Stack          Overflow

        VPP/MCLR             MCLRE

                                                 WWDT Time-out/                                                                                                            Device

                                                 Window voilation                                                                                                          Reset

                  Power-on

                    Reset

        VDD

                  Brown-out                                                   R                                                                                  Power-up

                   Reset(1)                                                                                                                                      Timer

                                                                   LFINTOSC                                                                                      PWRTE

                   LPBOR

                    Reset

     Note:  See   “BOR Operating       Conditions” table for BOR active       conditions.

8.1  Power-on Reset (POR)

     The POR circuit holds the device in Reset until VDD has reached an acceptable level for minimum

     operation. Slow rising VDD, fast operating speeds or analog performance may require greater than

     minimum VDD. The PWRT, BOR or MCLR features can be used to extend the start-up period until all

     device operation conditions have been met.

     © 2017 Microchip Technology Inc.                              Datasheet                                                                                               40001844D-page 94
                                                                        PIC18(L)F27/47K40

8.2    Brown-out Reset (BOR)

       The BOR circuit holds the device in Reset when VDD reaches a selectable minimum level. Between the

       POR and BOR, complete voltage range coverage for execution protection can be implemented.

       The Brown-out Reset module has four operating modes controlled by the BOREN<1:0> bits in

       Configuration Words. The four operating modes are:

       •  BOR is always on

       •  BOR is off when in Sleep

       •  BOR is controlled by software

       •  BOR is always off

       Refer to “BOR Operating Conditions” table for more information.

       The Brown-out Reset voltage level is selectable by configuring the BORV<1:0> bits in Configuration

       Words.

       A VDD noise rejection filter prevents the BOR from triggering on small events. If VDD falls below VBOR for  a

       duration greater than parameter TBORDC, the device will reset.

       Related Links

       CONFIG2

       Reset, WDT, Oscillator Start-up Timer, Power-up Timer, Brown-Out Reset and Low-Power Brown-Out Reset

       Specifications

8.2.1  BOR is Always On

       When the BOREN bits of Configuration Words are programmed to ‘11’, the BOR is always on. The device

       start-up will be delayed until the BOR is ready and VDD is higher than the BOR threshold.

       BOR protection is active during Sleep. The BOR does not delay wake-up from Sleep.

8.2.2  BOR is OFF in Sleep

       When the BOREN bits of Configuration Words are programmed to ‘10’, the BOR is on, except in Sleep.

       The device start-up will be delayed until the BOR is ready and VDD is higher than the BOR threshold.

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

8.2.3  BOR Controlled by Software

       When the BOREN bits of Configuration Words are programmed to ‘01’, the BOR is controlled by the

       SBOREN bit. The device start-up is not delayed by the BOR ready condition or the VDD level.

       BOR protection begins as soon as the BOR circuit is ready. The status of the BOR circuit is reflected in

       the BORRDY bit.

       BOR protection is unchanged by Sleep.

       © 2017 Microchip Technology Inc.                    Datasheet                                40001844D-page 95
                                                                                     PIC18(L)F27/47K40

       Table 8-1. BOR Operating          Modes

       BOREN<1:0>  SBOREN                Device  BOR Mode                  Instruction Execution upon:

                                         Mode                         Release of POR     Wake-up from Sleep

               11  X                     X       Active        Wait for release of BOR   Begins immediately

                                                                           (BORRDY = 1)

                                         Awake   Active        Wait for release of BOR                    N/A

           10      X                                                       (BORRDY = 1)

                                         Sleep   Hibernate                 N/A           Wait for release of

                                                                                         BOR (BORRDY = 1)

           01      1                     X       Active        Wait for release of BOR   Begins immediately

                   0                     X       Hibernate                 (BORRDY = 1)

           00      X                     X       Disabled                            Begins immediately

       Note: 

       1.  In this specific case, “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

       Figure 8-2. Brown-out Situations

                                                                                         Rev. 30-000092A

                                                                                         4/12/2017

                   VDD                                                                   VBOR

                   Internal                                    TPWRT(1)

                   Reset

                   VDD                                                                   VBOR

                   Internal                                 <  TPWRT       TPWRT(1)

                   Reset

                   VDD                                                                   VBOR

                   Internal                                                TPWRT(1)

                   Reset

       Note:  TPWRT delay only if PWRTE bit is programmed to ‘0’.

8.2.4  BOR and Bulk Erase

       BOR is forced ON during PFM Bulk Erase operations to make sure that           the system code protection

       cannot be compromised by reducing VDD.

       During Bulk Erase, the BOR is enabled at 2.45V, even if it is configured      to some other value. If VDD  falls,

       the erase cycle will be aborted, but the device will not be reset.

       © 2017 Microchip Technology Inc.                    Datasheet                                     40001844D-page 96
                                                                                     PIC18(L)F27/47K40

8.3      Low-Power Brown-out Reset (LPBOR)

         The Low-Power Brown-out Reset (LPBOR) provides an additional BOR circuit for low power operation.

         Refer to the figure below to see how the BOR interacts with other modules.

         The LPBOR is used to monitor the external VDD pin. When too low of a voltage is detected, the device is

         held in Reset.

         Figure 8-3. LPBOR, BOR, POR Relationship

                                                                                                         Rev. 30-000091A

                                                                                                               4/12/2017

                                             BOR

                                           BOR Event

                  REARM POR

                  Event                                                              To PCON

                                                                                     indicator bit

                         POR

                                             LPBOR

                  POR Event                LPBOR Event

                                                                                     Reset

                                                                                     logic

8.3.1    Enabling LPBOR

         The LPBOR is controlled by the LPBOREN bit of Configuration Word 2. When the device is erased, the

         LPBOR module defaults to disabled.

         Related Links

         CONFIG2

8.3.1.1  LPBOR Module Output

         The output of the LPBOR module is a signal indicating whether or not a Reset is to be asserted. This

         signal is OR’d together with the Reset signal of the BOR module to provide the generic BOR signal,

         which goes to the PCON0 register and to the power control block.

8.4      MCLR

         The MCLR is an optional external input that can reset the device. The MCLR function is controlled by the

         MCLRE bit of Configuration Words and the LVP bit of Configuration Words (see table below). The

         RMCLR bit in the PCON0 register will be set to ‘0’ if a MCLR has occurred.

         © 2017 Microchip Technology Inc.               Datasheet                    40001844D-page 97
                                                                      PIC18(L)F27/47K40

       Table 8-2. MCLR Configuration

                       MCLRE                               LVP        MCLR

                       x                                   1          Enabled

                       1                                   0          Enabled

                       0                                   0          Disabled

8.4.1  MCLR Enabled

       When MCLR is enabled and the pin is held low, the device is held in Reset. The MCLR pin is connected

       to VDD through an internal weak pull-up.

       The device has a noise filter in the MCLR Reset path. The filter will detect and ignore small pulses.

                Important:  An internal Reset event (RESET instruction, BOR, WWDT, POR, STKOVF,

                STKUNF) does not drive the MCLR pin low.

8.4.2  MCLR Disabled

       When MCLR is disabled, the MCLR becomes input-only and pin functions such as internal weak pull-ups

       are under software control.

       Related Links

       I/O Priorities

8.5    Windowed Watchdog Timer (WWDT) Reset

       The Windowed Watchdog Timer generates a Reset if the firmware does not issue a CLRWDT instruction

       within the time-out period or window set. The TO and PD bits in the STATUS register and the RWDT bit

       are changed to indicate a WDT Reset. The WDTWV bit indicates if the WDT Reset has occurred due to a

       timeout or a window violation.

       Related Links

       STATUS

       (WWDT) Windowed Watchdog Timer

8.6    RESET Instruction

       A RESET instruction will cause a device Reset. The RI bit will be set to ‘0’. See Table 8-3 for default

       conditions after a RESET instruction has occurred.

8.7    Stack Overflow/Underflow Reset

       The device can reset when the Stack Overflows or Underflows. The STKOVF or STKUNF bits register

       indicate the Reset condition. These Resets are enabled by setting the STVREN bit in Configuration

       Words.

       Related Links

       CONFIG2

       © 2017 Microchip Technology Inc.                    Datasheet            40001844D-page 98
                                                                       PIC18(L)F27/47K40

      Stack Overflow and Underflow Resets

8.8   Programming Mode Exit

      Upon exit of Programming mode, the device will behave as if a POR had just occurred.

8.9   Power-up Timer (PWRT)

      The Power-up Timer provides a nominal 66 ms (2048 cycles of LFINTOSC) time out on POR or Brown-

      out Reset.

      The device is held in Reset as long as PWRT is active. The PWRT delay allows additional time for the

      VDD to rise to an acceptable level. The Power-up Timer is enabled by clearing the PWRTE bit in

      Configuration Words.

      The Power-up Timer starts after the release of the POR and BOR.

      For additional information, refer to Application Note AN607, “Power-up Trouble Shooting” (DS00000607).

8.10  Start-up Sequence

      Upon the release of a POR or BOR, the following must occur before the device will begin executing:

      1.  Power-up Timer runs to completion (if enabled).

      2.  Oscillator start-up timer runs to completion (if required for selected oscillator source).

      3.  MCLR must be released (if enabled).

      The total time out will vary based on oscillator configuration and Power-up Timer configuration.

      The Power-up Timer and oscillator start-up timer run independently of MCLR Reset. If MCLR is kept low

      long enough, the Power-up Timer and oscillator Start-up Timer will expire. Upon bringing MCLR high, the

      device will begin execution after 10 FOSC cycles (see figure below). This is useful for testing purposes or

      to synchronize more than one device operating in parallel.

      © 2017 Microchip Technology Inc.         Datasheet                                              40001844D-page 99
                                                                                     PIC18(L)F27/47K40

      Figure 8-4. Reset Start-up Sequence

                                                                                                            Rev. 30-000093A

                                                                                                            4/12/2017

                     VDD

      Internal POR

                                                    TPWRT

      Power-up Timer

      MCLR

                                                           TMCLR

      Internal RESET

                                 Oscillator  Modes

      External Crystal                                                TOST

      Oscillator Start-up Timer

      Oscillator

                     FOSC

      Internal Oscillator

      Oscillator

                     FOSC

      External Clock (EC)

      CLKIN

                     FOSC

      Related Links

      Oscillator Module (with Fail-Safe Clock Monitor)

8.11  Determining the Cause of a Reset

      Upon any Reset, multiple bits in the STATUS and PCON0 registers are updated to indicate the cause of

      the Reset. The following table shows the Reset conditions of these registers.

      Table 8-3. Reset Condition for Special Registers

                                 Condition                 Program                   STATUS  PCON0

                                                           Counter          Register(2,3)    Register

      Power-on Reset                                       0                -110     0000    0011  110x

      Brown-out Reset                                      0                -110     0000    0011  11u0

      MCLR Reset during normal operation                   0                -uuu     uuuu    uuuu  0uuu

      MCLR Reset during Sleep                              0                -10u     uuuu    uuuu  0uuu

      WDT Time-out Reset                                   0                -0uu     uuuu    uuu0  uuuu

      WDT Wake-up from Sleep                               PC + 2           -00u     uuuu    uuuu  uuuu

      © 2017 Microchip Technology Inc.                     Datasheet                         40001844D-page 100
                                                                                  PIC18(L)F27/47K40

              Condition                                    Program                STATUS                    PCON0

                                                           Counter                Register(2,3)             Register

      WWDT Window Violation Reset                          0                      -uuu   uuuu               uu0u  uuuu

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

      RESET Instruction Executed                           0                      -uuu   uuuu               uuuu  u0uu

      Stack Overflow Reset (STVREN = 1)                    0                      -uuu   uuuu               1uuu  uuuu

      Stack Underflow Reset (STVREN = 1)                   0                      -uuu   uuuu               u1uu  uuuu

      Data Protection (Fuse fault)                         0                      ---u   uuuu               uuuu  uuuu

      VREG or ULP Ready fault                              0                      ---1   1000               0011  001u

      Legend: u = unchanged, x = unknown, — = unimplemented bit, reads as ‘0’.

      Note: 

      1.  When the wake-up is due to an interrupt and Global Interrupt Enable bit (GIE) is set, the return

          address is pushed on the stack and PC is loaded with the corresponding interrupt vector

          (depending on source, high or low priority) after execution of PC + 2.

      2.  If a Status bit is not implemented, that bit will be read as ‘0’.

      3.  Status bits Z, C, DC are reset by POR/BOR.

8.12  Power Control (PCON0) Register

      The Power Control (PCON0) register contains flag bits to differentiate between a:

      •   Brown-out Reset (BOR)

      •   Power-on Reset (POR)

      •   Reset Instruction Reset (RI)

      •   MCLR Reset (RMCLR)

      •   Watchdog Timer Reset (RWDT)

      •   Watchdog Window Violation (WDTWV)

      •   Stack Underflow Reset (STKUNF)

      •   Stack Overflow Reset (STKOVF)

      The Power Control register bits are shown in PCON0.

      Hardware will change the corresponding register bit during the Reset process; if the Reset was not

      caused by the condition, the bit remains unchanged (Table 8-3).

      Software should reset the bit to the inactive state after restart (hardware will not reset the bit).

      Software may also set any PCON0 bit to the active state, so that user code may be tested, but no Reset

      action will be generated.

      © 2017 Microchip Technology Inc.                     Datasheet                             40001844D-page 101
                                                                           PIC18(L)F27/47K40

8.13    Register  Summary - BOR Control and Power Control

Offset  Name      Bit Pos.

0x0EE0  BORCON    7:0       SBOREN                                                  BORRDY

0x0EE1

...     Reserved

0x0FD6

0x0FD7  PCON0     7:0       STKOVF        STKUNF  WDTWV  RWDT       RMCLR  RI  POR  BOR

8.14    Register  Definitions: Power Control

        © 2017 Microchip Technology Inc.                 Datasheet             40001844D-page 102
                                                                                        PIC18(L)F27/47K40

8.14.1       BORCON

             Name:      BORCON

             Offset:    0xEE0

             Brown-out Reset Control Register

        Bit     7              6               5            4            3              2           1     0

                SBOREN                                                                                    BORRDY

Access          R/W                                                                                       R

Reset           1                                                                                         q

             Bit 7 – SBOREN Software Brown-out Reset Enable bit

             Reset States: POR/BOR = 1

                            All Other Resets = u

             Value      Condition              Description

             —          If BOREN≠01            SBOREN is read/write, but has no effect     on  the  BOR.

             1          If BOREN=01            BOR Enabled

             0          If BOREN=01            BOR Disabled

             Bit 0 – BORRDY Brown-out Reset Circuit Ready Status bit

             Reset States: POR/BOR = q

                            All Other Resets = u

             Value      Description

             1          The Brown-out Reset Circuit is active and armed

             0          The Brown-out Reset Circuit is disabled or is warming up

             Related Links

             CONFIG2

        © 2017 Microchip Technology Inc.                       Datasheet                                  40001844D-page 103
                                                                                      PIC18(L)F27/47K40

8.14.2       PCON0

             Name:      PCON0

             Offset:    0xFD7

             Power Control Register 0

        Bit     7                6        5           4        3                      2           1          0

                STKOVF  STKUNF            WDTWV       RWDT     RMCLR                  RI          POR        BOR

Access          R/W/HS  R/W/HS            R/W/HC      R/W/HC   R/W/HC                 R/W/HC      R/W/HC     R/W/HC

Reset           0                0        1           1        1                      1           0          q

             Bit 7 – STKOVF Stack Overflow Flag bit

             Reset States: POR/BOR = 0

                        All Other Resets = q

             Value      Description

             1          A Stack Overflow occurred (more CALLs than fit on the stack)

             0          A Stack Overflow has not occurred or set to ‘0’ by firmware

             Bit 6 – STKUNF Stack Underflow Flag bit

             Reset States: POR/BOR = 0

                        All Other Resets = q

             Value      Description

             1          A Stack Underflow occurred (more RETURNs than CALLs)

             0          A Stack Underflow has not occurred or set to ‘0’ by firmware

             Bit 5 – WDTWV Watchdog Window Violation Flag bit

             Reset States: POR/BOR = 1

                        All Other Resets = q

             Value      Description

             1          A WDT window violation has not occurred or set to ‘1’ by firmware

             0          A CLRWDT instruction was issued when the WDT Reset window was closed (set to ‘0’ in

                        hardware when a WDT window violation Reset occurs)

             Bit 4 – RWDT WDT Reset Flag bit

             Reset States: POR/BOR = 1

                        All Other Resets = q

             Value      Description

             1          A WDT overflow/time-out Reset has not occurred or set to ‘1’ by firmware

             0          A WDT overflow/time-out Reset has occurred (set to ‘0’ in hardware when a WDT Reset

                        occurs)

             Bit 3 – RMCLR  MCLR Reset Flag bit

             Reset States: POR/BOR = 1

                        All Other Resets = q

        © 2017 Microchip Technology Inc.                       Datasheet                               40001844D-page 104
                                                                PIC18(L)F27/47K40

Value  Description

1      A MCLR Reset has not occurred or set to ‘1’ by firmware

0      A MCLR Reset has occurred (set to ‘0’ in hardware when a MCLR Reset occurs)

Bit 2 – RI  RESET Instruction Flag bit

Reset States: POR/BOR = 1

       All Other Resets = q

Value  Description

1      A RESET instruction has not been executed or set to ‘1’ by firmware

0      A RESET instruction has been executed (set to ‘0’ in hardware upon executing a RESET

       instruction)

Bit 1 – POR Power-on Reset Status bit

Reset States: POR/BOR = 0

       All Other Resets = u

Value  Description

1      No Power-on Reset occurred or set to ‘1’ by firmware

0      A Power-on Reset occurred (set to ‘0’ in hardware when a Power-on Reset occurs)

Bit 0 – BOR Brown-out Reset Status bit

Reset States: POR/BOR = q

       All Other Resets = u

Value  Description

1      No Brown-out Reset occurred or set to ‘1’ by firmware

0      A Brown-out Reset occurred (set to ‘0’ in hardware when a Brown-out Reset occurs)

© 2017 Microchip Technology Inc.        Datasheet                           40001844D-page 105
                                                                          PIC18(L)F27/47K40

9.  (WWDT) Windowed Watchdog Timer

    The Watchdog Timer (WDT) is a system timer that generates a Reset if the firmware does not issue a

    CLRWDT instruction within the time-out period. The Watchdog Timer is typically used to recover the

    system from unexpected events. The Windowed Watchdog Timer (WWDT) differs in that CLRWDT

    instructions are only accepted when they are performed within a specific window during the time-out

    period.

    The WWDT has the following features:

    •  Selectable clock source

    •  Multiple operating modes

             –  WWDT is always on

             –  WWDT is off when in Sleep

             –  WWDT is controlled by software

             –  WWDT is always off

    •  Configurable time-out period is from 1   ms to 256s  (nominal)

    •  Configurable window size from 12.5%      to 100% of  the time-out  period

    •  Multiple Reset conditions

    © 2017 Microchip Technology Inc.            Datasheet                         40001844D-page 106
     Filename:    10-000162A.vsd

     Title:       Windowed Watchdog Timer Timer Block Diagram

     Last Edit:   1/2/2014                                                          PIC18(L)F27/47K40

     First Used:  PIC16(L)F1613 (LECQ)

     Notes:

     Figure 9-1. Windowed Watchdog Timer Block Diagram

                                                                                                      Rev. 10-000 162A

                                                                                                      1/2/201 4

                                                                        WWDT

                                                                        Armed

                                                                                                      WDT

                                                                                              Window

                                                                                              Violation

                                                                        Window Closed

                                            Window                      Comparator

                  CLRWDT                    Sizes

                                                    WINDOW

                  RESET

                  Reserved             111

                  Reserved             110

                  Reserved             101              R

                  Reserved             100          18-bit Prescale

                  Reserved             011              Counter

                  SOSC                 010          E

             MFINTOSC/16               001

                  LFINTOSC             000

                  CS

                                                    PS

                                                                     R  5-bit       Overflow

                                                                     WDT Counter       Latch  WDT Time-out

             WDTE<1:0> = 01

                  SEN

             WDTE<1:0> = 11

             WDTE<1:0> = 10

                  Sleep

9.1  Independent Clock Source

     The WWDT can derive its time base from either the 31 kHz LFINTOSC or 31.25 kHz MFINTOSC internal

     oscillators, depending on the value of WDTE Configuration bits.

     If WDTE = 2'b1x, then the clock source will be enabled depending on the WDTCCS Configuration bits.

     If WDTE = 2'b01, the SEN bit should be set by software to enable WWDT, and the clock source is

     enabled by the WDTCS bits.

     Time intervals in this chapter are based on a minimum nominal interval of 1 ms. See “Electrical

     Specifications” for LFINTOSC and MFINTOSC tolerances.

     © 2017 Microchip Technology Inc.                       Datasheet                         40001844D-page 107
                                                                 PIC18(L)F27/47K40

       Related Links

       CONFIG3

       Internal Oscillator Parameters(1)

9.2    WWDT Operating Modes

       The Windowed Watchdog Timer module has four operating modes controlled by the WDTE bits in

       Configuration Words. See Table 9-1.

9.2.1  WWDT Is Always On

       When the WDTE bits of Configuration Words are set to ‘11’, the WWDT is always on.

       WWDT protection is active during Sleep.

9.2.2  WWDT Is Off in Sleep

       When the WDTE bits of Configuration Words are set to ‘10’, the WWDT is on, except in Sleep.

       WWDT protection is not active during Sleep.

9.2.3  WWDT Controlled by Software

       When the WDTE bits of Configuration Words are set to ‘01’, the WWDT is controlled by the SEN bit.

       WWDT protection is unchanged by Sleep. See the following table for more details.

       Table 9-1. WWDT Operating Modes

       WDTE<1:0>                          SEN       Device Mode                           WWDT Mode

                      11                    X       X                                     Active

                      10                    X       Awake                                 Active

                                                    Sleep                                 Disabled

                      01                    1       X                                     Active

                                            0       X                                     Disabled

                      00                    X       X                                     Disabled

9.3    Time-out Period

       If the WDTCPS Configuration bits default to 0b11111, then the WDTPS bits set the time-out period from

       1 ms to 256 seconds (nominal). If any value other than the default value is assigned to WDTCPS

       Configuration bits, then the timer period will be based on the WDTCPS bits in the CONFIG3 register. After

       a Reset, the default time-out period is 2s.

       Related Links

       CONFIG3

9.4    Watchdog Window

       The Windowed Watchdog Timer has an optional Windowed mode that is controlled by the WDTCWS

       Configuration bits and WINDOW bits. In the Windowed mode, the CLRWDT instruction must occur within

       the allowed window of the WDT period. Any CLRWDT instruction that occurs outside of this window will

       © 2017 Microchip Technology Inc.             Datasheet                             40001844D-page 108
                                                                             PIC18(L)F27/47K40

       trigger a window violation and will cause a WWDT Reset, similar to a WWDT time out. See Figure 9-2 for

       an example.

       The window size is controlled by the WINDOW Configuration bits, or the WINDOW bits, if WDTCWS =

       111.

       The five Most Significant bits of the WDTTMR register are used to determine whether the window is open,

       as defined by the WINDOW bits.

       In the event of a window violation, a Reset will be generated and the WDTWV bit of the PCON0 register

       will be cleared. This bit is set by a POR or can be set in firmware.

       Related Links

       PCON0

9.5    Clearing the WWDT

       The WWDT is cleared when any of the following conditions occur:

       •     Any Reset

       •     Valid CLRWDT instruction is executed

       •     Device enters Sleep

       •     Exit Sleep by Interrupt

       •     WWDT is disabled

       •     Oscillator Start-up Timer (OST) is running

       •     Any write to the WDTCON0 or WDTCON1 registers

9.5.1  CLRWDT Considerations (Windowed Mode)

       When in Windowed mode, the WWDT must be armed before a CLRWDT instruction will clear the timer.

       This is performed by reading the WDTCON0 register. Executing a CLRWDT instruction without performing

       such an arming action will trigger a window violation regardless of whether the window is open or not.

       See Table 9-2 for more information.

9.6    Operation During Sleep

       When the device enters Sleep, the WWDT is cleared. If the WWDT is enabled during Sleep, the WWDT

       resumes counting. When the device exits Sleep, the WWDT is cleared again.

       The WWDT remains clear until the Oscillator Start-up Timer (OST) completes, if enabled.

       When a WWDT time-out occurs while the device is in Sleep, no Reset is generated. Instead, the device

       wakes up and resumes operation. The TO and PD bits in the STATUS register are changed to indicate

       the event. The RWDT bit in the PCON0 register can also be used.

       Table 9-2. WWDT Clearing Conditions

                                         Conditions                                             WWDT

       WDTE = 00

       WDTE = 01 and SEN = 0                                                                    Cleared

       WDTE = 10 and enter Sleep

       CLRWDT Command

       © 2017 Microchip Technology Inc.                  Datasheet                              40001844D-page 109
                                                                                       PIC18(L)F27/47K40

                                  Conditions                                                                   WWDT

Oscillator Fail Detected

ExitFSilelneaempe:+ System10-C00lo01c6k3A=.vSsdOSC, EXTRC, INTOSC,    EXTCLK

Title:               WDT WINDOW PERIOD AND DELAY

ExitLSaslteEedpit:+ System8/1C5/l2o0c1k6 = XT, HS, LP                                  Cleared                 until the end  of  OST
First Used:          PIC16(L)F1613 (LECQ)

ChaNnogtees:INTOSC divider (IRCF bits)                                                                         Unaffected

Figure 9-2. Window Period and Delay

                                                                                              Rev. 10-000163A

                                                                                              8/15/2016

                           CLRWDT Instruction

                           (or other WDT Reset)        Window Period

                                  Window Closed                 Window Open

                                  Window Delay                               Time-out  Event

                                  (window violation can occur)

Related Links

Oscillator Start-up Timer  (OST)

STATUS

PCON0

Memory Organization

© 2017 Microchip Technology Inc.                                Datasheet                                      40001844D-page 110
                                                                                    PIC18(L)F27/47K40

9.7     Register  Summary   -             WDT  Control

Offset  Name      Bit Pos.

0x0ED2  WDTCON0   7:0                                                WDTPS[4:0]                         SEN

0x0ED3  WDTCON1   7:0                                   WDTCS[2:0]                         WINDOW[2:0]

0x0ED4  WDTPS     7:0                                                PSCNTL[7:0]

                  15:8                                               PSCNTH[7:0]

0x0ED6  WDTTMR    7:0                                   WDTTMR[4:0]                 STATE  PSCNT[1:0]

9.8     Register  Definitions: Windowed Watchdog                     Timer Control

        © 2017 Microchip Technology Inc.                Datasheet                          40001844D-page 111
                                                                                        PIC18(L)F27/47K40

9.8.1       WDTCON0

            Name:     WDTCON0

            Offset:   0xED2

            Watchdog Timer Control Register 0

       Bit      7            6            5              4              3               2        1         0

                                                                   WDTPS[4:0]                              SEN

Access                                    R/W           R/W         R/W                 R/W      R/W       R/W

Reset                                     q              q              q               q        q         0

            Bits 5:1 – WDTPS[4:0]  Watchdog Timer Prescale Select       bits(1)

            Bit Value = Prescale Rate

            Value     Description

            11111 to  Reserved. Results in minimum interval (1 ms)

            10011

            10010     1:8388608 (223) (Interval 256s nominal)

            10001     1:4194304 (222) (Interval 128s nominal)

            10000     1:2097152 (221) (Interval 64s nominal)

            01111     1:1048576 (220) (Interval 32s nominal)

            01110     1:524288 (219) (Interval 16s nominal)

            01101     1:262144 (218) (Interval 8s nominal)

            01100     1:131072 (217) (Interval 4s nominal)

            01011     1:65536 (Interval 2s nominal) (Reset value)

            01010     1:32768 (Interval 1s nominal)

            01001     1:16384 (Interval 512 ms nominal)

            01000     1:8192 (Interval 256 ms nominal)

            00111     1:4096 (Interval 128 ms nominal)

            00110     1:2048 (Interval 64 ms nominal)

            00101     1:1024 (Interval 32 ms nominal)

            00100     1:512 (Interval 16 ms nominal)

            00011     1:256 (Interval 8 ms nominal)

            00010     1:128 (Interval 4 ms nominal)

            00001     1:64 (Interval 2 ms nominal)

            00000     1:32 (Interval 1 ms nominal)

            Bit 0 – SEN Software Enable/Disable for Watchdog Timer bit

            Value     Condition                                    Description

            —         If WDTE = 1x                                 This bit is ignored

            1         If WDTE = 01                                 WDT is turned on

            0         If WDTE = 01                                 WDT is turned off

            —         If WDTE = 00                                 This bit is ignored

            Note: 

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

            2.  When WDTCPS in CONFIG3 = 11111, the Reset value (q) of WDTPS                 is  ‘01011’.  Otherwise, the

                Reset value of WDTPS is equal to WDTCPS in CONFIG3.

        © 2017 Microchip Technology Inc.                       Datasheet                                   40001844D-page 112
                                                                          PIC18(L)F27/47K40

   3.    When WDTCPS in CONFIG3L    ≠  11111,  these bits are read-only.

©  2017  Microchip Technology Inc.             Datasheet                  40001844D-page 113
                                                                                 PIC18(L)F27/47K40

9.8.2       WDTCON1

            Name:     WDTCON1

            Offset:   0xED3

            Watchdog Timer Control Register 1

       Bit       7           6            5           4             3            2        1              0

                                          WDTCS[2:0]                                WINDOW[2:0]

Access                       R/W          R/W         R/W                R/W              R/W            R/W

Reset                        q            q           q                          q        q              q

            Bits 6:4 – WDTCS[2:0] Watchdog Timer Clock Select bits

            Value     Description

            111 to    Reserved

            010

            001       MFINTOSC 31.25 kHz

            000       LFINTOSC 31 kHz

            Bits 2:0 – WINDOW[2:0] Watchdog Timer Window Select bits

            WINDOW              Window delay Percent of time             Window     opening Percent  of  time

                 111                           N/A                                  100

                 110                           12.5                                 87.5

                 101                           25                                   75

                 100                           37.5                                 62.5

                 011                           50                                   50

                 010                           62.5                                 37.5

                 001                           75                                   25

                 000                           87.5                                 12.5

            Note: 

            1.   If WDTCCS in CONFIG3 = 111, the Reset value of WDTCS is ‘000’.

            2.   The Reset value (q) of WINDOW is determined by the value of WDTCWS in the CONFIG3 register.

            3.   If WDTCCS in CONFIG3 ≠ 111, these bits are read-only.

            4.   If WDTCWS in CONFIG3 ≠ 111, these bits are read-only.

        © 2017 Microchip Technology Inc.                      Datasheet                        40001844D-page 114
                                                                            PIC18(L)F27/47K40

9.8.3       WDTPS

            Name:     WDTPS

            Offset:   0xED4

            WWDT Prescale Select Register (Read-Only)

       Bit      15           14           13           12               11  10  9                           8

                                                           PSCNTH[7:0]

Access          RO           RO           RO           RO               RO  RO  RO                          RO

Reset           0            0            0            0                0   0   0                           0

       Bit      7            6            5            4                3   2   1                           0

                                                           PSCNTL[7:0]

Access          RO           RO           RO           RO               RO  RO  RO                          RO

Reset           0            0            0            0                0   0   0                           0

            Bits 15:8 – PSCNTH[7:0]  Prescale Select High Byte bits(1)

            Bits 7:0 – PSCNTL[7:0]  Prescale Select Low Byte bits(1)

            Note: 

            1.  The 18-bit WDT prescale value, PSCNT<17:0> includes         the WDTPSL, WDTPSH and the      lower  bits

                of the WDTTMR registers. PSCNT<17:0> is intended for        debug operations and should be  read

                during normal operation.

        © 2017 Microchip Technology Inc.                   Datasheet                40001844D-page 115
                                                                                    PIC18(L)F27/47K40

9.8.4       WDTTMR

            Name:     WDTTMR

            Offset:   0xED6

            WDT Timer Register (Read-Only)

       Bit        7          6              5          4               3            2      1                0

                                          WDTTMR[4:0]                               STATE     PSCNT[1:0]

Access            R          R              R          R               R            R      R                R

Reset             0          0              0          0               0            0      0                0

            Bits  7:3 – WDTTMR[4:0] Watchdog Window Value bits

                  WINDOW                         WDT Window State                          Open Percent

                                            Closed                     Open

                      111                   N/A                 00000-11111                   100

                      110                 00000-00011           00100-11111                   87.5

                      101                 00000-00111           01000-11111                   75

                      100                 00000-01011                  01100-11111            62.5

                      011                 00000-01111           10000-11111                   50

                      010                 00000-10011           10100-11111                   37.5

                      001                 00000-10111                  11000-11111            25

                      000                 00000-11011                  11100-11111            12.5

            Bit 2 – STATE WDT Armed Status bit

            Value     Description

            1         WDT is armed

            0         WDT is not armed

            Bits 1:0 – PSCNT[1:0]  Prescale Select Upper Byte bits(1)

            Note: 

            1.    The 18-bit WDT prescale value, PSCNT<17:0> includes the WDTPSL, WDTPSH and the lower         bits

                  of the WDTTMR registers. PSCNT<17:0> is intended for debug operations and should be read

                  during normal operation.

        © 2017 Microchip Technology Inc.                  Datasheet                           40001844D-page 116
                                                                                PIC18(L)F27/47K40

10.   Memory Organization

      There are three types of memory in PIC18 enhanced microcontroller devices:

      •  Program Memory

      •  Data RAM

      •  Data EEPROM

      In Harvard architecture devices, the data and program memories use separate buses which allows for

      concurrent access of the two memory spaces. The data EEPROM, for practical purposes, can be

      regarded as a peripheral device, since it is addressed and accessed through a set of control registers.

      Additional detailed information on the operation of the Program Flash Memory and Data EEPROM

      Memory is provided in the Nonvolatile Memory (NVM) Control Section.

      Related Links

      (NVM) Nonvolatile Memory Control

10.1  Program Memory Organization

      PIC18 microcontrollers implement a 21-bit Program Counter, which is capable of addressing a 2 Mbyte

      program memory space. Accessing a location between the upper boundary of the physically implemented

      memory and the 2 Mbyte address will return all ‘0’s (a NOP instruction).

      Refer to the following tables for device memory maps and code protection Configuration bits associated

      with the various sections of PFM.

      PIC18 devices have two interrupt vectors. The Reset vector address is at 0000h and the interrupt vector

      addresses are at 0008h and 0018h.

      © 2017 Microchip Technology Inc.   Datasheet                                40001844D-page 117
                                                                                                   PIC18(L)F27/47K40

Figure 10-1. Program and Data Memory Map

                                                                                                                     Rev. 40-000101A

                                                                                                                         4/20/2017

Address                                                               Device

          PIC18(L)Fx4K40          PIC18(L)F25/45K40       PIC18(L)F65K40            PIC18(L)Fx6K40       PIC18(L)Fx7K40

Note 1                                                    Stack (31 Levels)

00 0000h                                                        Reset Vecor

…                                                                     …

00 0008h                                                  Interrupt Vecor High

…                                                                     …

00 0018h                                                  Interrupt Vecor Low

…                                                                     …

00 001Ah  Program Flash

to        Memory                  Program Flash           Program Flash

00 3FFFh  (8 KW)                  Memory                        Memory

00 4000h                          (16 KW)                       (16 KW)             Program Flash

to                                                                                  Memory               Program Flash

00 7FFFh                                                                            (32 KW)              Memory

00 8000h                                                                                                 (64 KW)

to

00 FFFFh  Not

01 0000h  Present(2)              Not                                 Not

to                                Present(2)                    Present(2)

01 FFFFh                                                                            Not

02 0000h                                                                            Present(2)           Not

to                                                                                                       Present(2)

1F FFFFh

20 0000h

to                                                        User  IDs (8 Words)(3)

20 000Fh

20 0010h

to                                                              Reserved

2F FFFFh

30 0000h

to                                            Configuration Words (6 Words)(3)

30 000Bh

30 000Ch

to                                                              Reserved

30 FFFFh

31 0000h

to        Data EEPROM (256 Bytes)

31 00FFh                                                                      Data  EEPROM (1024 Bytes)

31 0100h

to                Unimplemented

31 01FFh

30 000Ch

to                                                              Reserved

30 FFFFh

3F FFFCh

to                                                        Revision ID (1 Word)(4)

3F FFFDh

3F FFFEh

to                                                        Device ID (1 Word)(4)

3F FFFFh

Note 1:   The stack is a separate SRAM panel, apart from all user memory panels.

2:        The addresses do not roll over. The region is read as ‘0’.

3:        Not code-protected.

4:        Device/Revision IDs are hard-coded in silicon.

© 2017 Microchip Technology Inc.                                      Datasheet                                         40001844D-page 118
                                                                                    PIC18(L)F27/47K40

Figure 10-2. Memory Map and Code Protection Control

                                                                                                                      Rev. 40-000100A

                                                                                                                      4/20/2017

Region  Address                                                    Device

                  PIC18(L)Fx4K40           PIC18(L)F25/45K40       PIC18(L)F65K40   PIC18(L)Fx6K40   PIC18(L)Fx7K40

        00 0000h  Boot Block                          Boot Block   Boot Block       Boot Block            Boot Block

        to                        1 KW                    1 KW     1 KW             1 KW                  1 KW

        00 07FFh  CP, WRTB, EBTRB          CP, WRTB, EBTRB         CP, WRTB, EBTRB  CP, WRTB, EBTRB  CP, WRTB, EBTRB

        00 0800h                  Block 0                 Block 0  Block 0

        to                        3 KW                    3 KW     3 KW             Block 0               Block 0

        00 1FFFh  CP, WRT0, EBTR0          CP, WRT0, EBTR0         CP, WRT0, EBTR0  7 KW                  7 KW

        00 2000h                  Block 1                 Block 1  Block 1          CP, WRT0, EBTR0  CP, WRT0, EBTR0

        to                        4 KW                    4 KW     4 KW

        00 3FFFh  CP, WRT1, EBTR1          CP, WRT1, EBTR1         CP, WRT1, EBTR1

        00 4000h                                          Block 2  Block 2

        to                                                4 KW     4 KW             Block 1               Block 1

        00 5FFFh                           CP, WRT2, EBTR2         CP, WRT2, EBTR2  8 KW                  8 KW

        00 6000h                                          Block 3  Block 3          CP, WRT1, EBTR1  CP,  WRT1, EBTR1

        to                                                4 KW     4 KW

        00 7FFFh                           CP, WRT3, EBTR3         CP, WRT3, EBTR3

        00 8000h                                                                    Block 2               Block 2

        to                                                                          8 KW                  8 KW

PFM     00 BFFFh                                                                    CP, WRT2, EBTR2  CP,  WRT2, EBTR2

        00 C000h                                                                    Block 3               Block 3

        to                                                                          8 KW                  8 KW

        00 FFFFh                  Not                                               CP, WRT3, EBTR3  CP,  WRT3, EBTR3

        01 0000h  Present                                                                                 Block 4

        to                                                                                                8 KW

        01 3FFFh                                          Not      Not                               CP,  WRT4, EBTR4

        01 4000h                                          Present  Present                                Block 5

        to                                                                                                8 KW

        01 7FFFh                                                                    Not              CP,  WRT5, EBTR5

        01 8000h                                                                    Present               Block 6

        to                                                                                                8 KW

        01 BFFFh                                                                                     CP,  WRT6, EBTR6

        01 C000h                                                                                          Block 7

        to                                                                                                8 KW

        01 FFFFh                                                                                     CP,  WRT7, EBTR7

        30 0000h                                                   6 Words

CONFIG  to                                                         WRTC

        30 000Bh

        31 0000h                           256 Words

        to                                 CPD, WRTD

Data    31 00FFh                                                                    1 KW

EEPROM  31 0100h                                                                    CPD, WRTD

        to                                 Unimplemented

        31 01FFh

© 2017 Microchip Technology Inc.                                   Datasheet                              40001844D-page 119
                                                                                         PIC18(L)F27/47K40

10.1.1    Program Counter

          The Program Counter (PC) specifies the address of the instruction to fetch for execution. The PC is 21

          bits wide and is contained in three separate 8-bit registers. The low byte, known as the PCL register, is

          both readable and writable. The high byte, or PCH register, contains the PC<15:8> bits; it is not directly

          readable or writable. Updates to the PCH register are performed through the PCLATH register. The upper

          byte is called PCU. This register contains the PC<20:16> bits; it is also not directly readable or writable.

          Updates to the PCU register are performed through the PCLATU register.

          The contents of PCLATH and PCLATU are transferred to the Program Counter by any operation that

          writes PCL. Similarly, the upper two bytes of the Program Counter are transferred to PCLATH and

          PCLATU by an operation that reads PCL. This is useful for computed offsets to the PC (see Computed

          GOTO).

          The PC addresses bytes in the program memory. To prevent the PC from becoming misaligned with word

          instructions, the Least Significant bit of PCL is fixed to a value of ‘0’. The PC increments by two to

          address sequential instructions in the program memory.

          The CALL, RCALL, GOTO and program branch instructions write to the Program Counter directly. For

          these instructions, the contents of PCLATH and PCLATU are not transferred to the Program Counter.

10.1.2    Return Address Stack

          The return address stack allows any combination of up to 31 program calls and interrupts to occur. The

          PC is pushed onto the stack when a CALL or RCALL instruction is executed or an interrupt is

          Acknowledged. The PC value is pulled off the stack on a RETURN, RETLW or a RETFIE instruction.

          PCLATU and PCLATH are not affected by any of the RETURN or CALL instructions.

          The stack operates as a 31-word by 21-bit RAM and a 5-bit Stack Pointer, or as a 35-word by 21-bit RAM

          with a 6-bit Stack Pointer in ICD mode. The stack space is not part of either program or data space. The

          Stack Pointer is readable and writable and the address on the top of the stack is readable and writable

          through the Top-of-Stack (TOS) Special File registers. Data can also be pushed to, or popped from the

          stack, using these registers.

          A CALL type instruction causes a push onto the stack; the Stack Pointer is first incremented and the

          location pointed to by the Stack Pointer is written with the contents of the PC (already pointing to the

          instruction following the CALL). A RETURN type instruction causes a pop from the stack; the contents of

          the location pointed to by the STKPTR are transferred to the PC and then the Stack Pointer is

          decremented.

          The Stack Pointer is initialized to ‘0b00000’ after all Resets. There is no RAM associated with the location

          corresponding to a Stack Pointer value of ‘0b00000’; this is only a Reset value. Status bits in the PCON0

          register indicate if the stack is full or has overflowed or has under-flowed.

10.1.2.1  Top-of-Stack Access

          Only the top of the return address stack (TOS) is readable and writable. A set of three registers,

          TOSU:TOSH:TOSL, hold the contents of the stack location pointed to by the STKPTR register (see

          Figure 10-3). This allows users to implement a software stack if necessary. After a CALL,      RCALL or

          interrupt, the software can read the pushed value by reading the TOSU:TOSH:TOSL registers. These

          values can be placed on a user defined software stack. At return time, the software can return these

          values to TOSU:TOSH:TOSL and do a return.

          The user must disable the Global Interrupt Enable (GIE) bits while accessing the stack to prevent

          inadvertent stack corruption.

          © 2017 Microchip Technology Inc.           Datasheet                                         40001844D-page 120
                                                                                        PIC18(L)F27/47K40

          Figure  10-3. Return Address Stack and Associated Registers

                                                           Return Address Stack <20:0>                               Rev. 30-00094A

                                                                                                                     4/12/2017

                                                                               11111

                              Top-of-Stack Registers                           11110          Stack Pointer
                                                                               11101

                   TOSU                 TOSH     TOSL                                         STKPTR<4:0>

                         00h                1Ah       34h                                     00010

                                                                    001A34h    00011

                                                      Top-of-Stack  000D58h    00010

                                                                               00001
                                                                               00000

10.1.2.2  Return Stack Pointer

          The STKPTR register contains the Stack Pointer value. The STKOVF (Stack Overflow) Status bit and the

          STKUNF (Stack Underflow) Status bit can be accessed using the PCON0 register. The value of the Stack

          Pointer can be 0 through 31. On Reset, the Stack Pointer value will be zero. The user may read and write

          the Stack Pointer value. This feature can be used by a Real-Time Operating System (RTOS) for stack

          maintenance. After the PC is pushed onto the stack 32 times (without popping any values off the stack),

          the STKOVF bit is set. The STKOVF bit is cleared by software or by a POR. The action that takes place

          when the stack becomes full depends on the state of the STVREN (Stack Overflow Reset Enable)

          Configuration bit.

          If STVREN is set (default), a Reset will be generated and a Stack Overflow will be indicated by the

          STKOVF bit when the 32nd push is initiated. This includes CALL and CALLW instructions, as well as

          stacking the return address during an interrupt response. The STKOVF bit will remain set and the Stack

          Pointer will be set to zero.

          If STVREN is cleared, the STKOVF bit will be set on the 32nd push and the Stack Pointer will remain at

          31 but no Reset will occur. Any additional pushes will overwrite the 31st push but the STKPTR will remain

          at 31.

          Setting STKOVF = 1 in software will change the bit, but will not generate a Reset.

          The STKUNF bit is set when a stack pop returns a value of zero. The STKUNF bit is cleared by software

          or by POR. The action that takes place when the stack becomes full depends on the state of the

          STVREN (Stack Overflow Reset Enable) Configuration bit.

          If STVREN is set (default) and the stack has been popped enough times to unload the stack, the next pop

          will return a value of zero to the PC, it will set the STKUNF bit and a Reset will be generated. This

          condition can be generated by the RETURN, RETLW and RETFIE instructions.

          If STVREN is cleared, the STKUNF bit will be set, but no Reset will occur.

                   Important:  Returning a value of zero to the PC on an underflow has the effect of vectoring the

                   program to the Reset vector, where the stack conditions can be verified and appropriate actions

                   can be taken. This is not the same as a Reset, as the contents of the SFRs are not affected.

          Related Links

          CONFIG2

          

          © 2017 Microchip Technology Inc.                          Datasheet                 40001844D-page 121
                                                                                          PIC18(L)F27/47K40

10.1.2.3  Stack Overflow and Underflow Resets

          Device Resets on Stack Overflow and Stack Underflow conditions are enabled by setting the STVREN

          configuration bit in Configuration. When STVREN is set, a Full or Underflow condition will set the

          respective STKOVF or STKUNF bit and then cause a device Reset. When STVREN is cleared, a Full or

          Underflow condition will set the respective STKOVF or STKUNF bit but not cause a device Reset. The

          STKOVF or STKUNF bits are cleared by the user software or a Power-on Reset.

10.1.2.4  PUSH and POP Instructions

          Since the Top-of-Stack is readable and writable, the ability to push values onto the stack and pull values

          off the stack without disturbing normal program execution is a desirable feature. The PIC18 instruction set

          includes two instructions, PUSH and POP, that permit the TOS to be manipulated under software control.

          TOSU, TOSH and TOSL can be modified to place data or a return address on the stack.

          The PUSH instruction places the current PC value onto the stack. This increments the Stack Pointer and

          loads the current PC value onto the stack.

          The POP instruction discards the current TOS by decrementing the Stack Pointer. The previous value

          pushed onto the stack then becomes the TOS value.

10.1.2.5  Fast Register Stack

          A fast register stack is provided for the STATUS, WREG and BSR registers, to provide a “fast return”

          option for interrupts. The stack for each register is only one level deep and is neither readable nor

          writable. It is loaded with the current value of the corresponding register when the processor vectors for

          an interrupt. All interrupt sources will push values into the fast register stack . The values in the registers

          are then loaded back into their associated registers if the RETFIE,             FAST instruction is used to return

          from the interrupt.

                   Important:  The TO and PD bits of the STATUS register are not copied over in this operation.

          If both low and high priority interrupts are enabled, the stack registers cannot be used reliably to return

          from low priority interrupts. If a high priority interrupt occurs while servicing a low priority interrupt, the

          stack register values stored by the low priority interrupt will be overwritten. In these cases, users must

          save the key registers by software during a low priority interrupt.

          If interrupt priority is not used, all interrupts may use the fast register stack for returns from interrupt. If no

          interrupts are used, the fast register stack can be used to restore the STATUS, WREG and BSR registers

          at the end of a subroutine call. To use the fast register stack for a subroutine call, a CALL    label,              FAST

          instruction must be executed to save the STATUS, WREG and BSR registers to the fast register stack. A

          RETURN,  FAST instruction is then executed to restore these registers from the fast register stack.

          The following example shows a source code example that uses the fast register stack during a subroutine

          call and return.

          Fast Register Stack Code Example

                            CALL  •  SUB1,  FAST  ;STATUS,  WREG,   BSR  SAVED  IN  FAST  REGISTER  STACK

                   SUB1:          •

                                  •
                                  •
                            RETURN,  FAST         ;RESTORE  VALUES  SAVED  IN   FAST  REGISTER  STACK

          © 2017 Microchip Technology Inc.                          Datasheet                              40001844D-page 122
                                                                                                PIC18(L)F27/47K40

10.1.3    Look-up Tables in Program Memory

          There may be programming situations that require the creation of data structures, or look-up tables, in

          program memory. For PIC18 devices, look-up tables can be implemented in two ways:

          •  Computed GOTO

          •  Table Reads

10.1.3.1  Computed GOTO

          A computed GOTO is accomplished by adding an offset to the Program Counter. An example is shown in

          the following code example.

          A look-up table can be formed with an ADDWF               PCL instruction and a group of RETLW nn instructions. The

          W register is loaded with an offset into the table before executing a call to that table. The first instruction

          of the called routine is the ADDWF        PCL instruction. The next instruction executed will be one of the RETLW

          nn instructions that returns the value ‘nn’ to the calling function.

          The offset value (in WREG) specifies the number of bytes that the Program Counter should advance and

          must be multiples of two (LSb = 0).

          In this method, only one data byte may be stored in each instruction location and room on the return

          address stack is required.

             Computed GOTO Using an Offset Value

                           RLNCF  OFFSET,     W     ;    W   must   be  an  even  number,  Max  OFFSET  =  127
                           CALL   TABLE

                           ORG    nn00h          ;  00   in  LSByte     ensures   no  addition  overflow
             TABLE:
                           ADDWF  PCL            ;  Add     OFFSET  to  program   counter
                           RETLW  A              ;  Value    @  OFFSET=0
                           RETLW  B              ;  Value    @  OFFSET=1
                           RETLW  C              ;  Value    @  OFFSET=2
                           .
                           .
                           .

10.1.3.2  Table Reads and Table Writes

          A more compact method of storing data in program memory allows two bytes of data to be stored in each

          instruction location.

          Look-up table data may be stored two bytes per program word by using table reads and writes. The Table

          Pointer (TBLPTR) register specifies the byte address and the Table Latch (TABLAT) register contains the

          data that is read from or written to program memory. Data is transferred to or from program memory one

          byte at a time.

          Table read and table write operations are discussed further in the Table Reads and Table Writes section.

10.2      PIC18 Instruction Cycle

10.2.1    Clocking Scheme

          The microcontroller clock input, whether from an internal or external source, is internally divided by four to

          generate four non-overlapping quadrature clocks (Q1, Q2, Q3 and Q4). Internally, the Program Counter is

          incremented on every Q1; the instruction is fetched from the program memory and latched into the

          instruction register during Q4. The instruction is decoded and executed during the following Q1 through

          Q4. The clocks and instruction execution flow are shown in the following figure.

          © 2017 Microchip Technology Inc.                              Datasheet                               40001844D-page 123
                                                                                                                  PIC18(L)F27/47K40

        Figure 10-4. CLOCK/INSTRUCTION CYCLE

                                                                                                                                                          Rev. 30-000095A

                                                                                                                                                             4/13/2017

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

                      OSC1

                      Q1

                      Q2                                                                                                                           Internal

                      Q3                                                                                                                           Phase
                                                                                                                                                   Clock

                      Q4

                      PC                      PC                         PC + 2                                   PC + 4

           OSC2/CLKOUT
               (RC mode)

                                   Execute INST (PC – 2)

                                     Fetch INST (PC)                     Execute INST (PC)

                                                                         Fetch INST (PC + 2)                      Execute INST (PC + 2)

                                                                                                                  Fetch INST (PC + 4)

10.2.2  Instruction Flow/Pipelining

        An “Instruction Cycle” consists of four Q cycles: Q1 through Q4. The instruction fetch and execute are

        pipelined in such a manner that a fetch takes one instruction cycle, while the decode and execute take

        another instruction cycle. However, due to the pipelining, each instruction effectively executes in one

        cycle. If an instruction causes the Program Counter to change (e.g., GOTO), then two cycles are required

        to complete the instruction as shown in the figure below.

        A fetch cycle begins with the Program Counter (PC) incrementing in Q1.

        In the execution cycle, the fetched instruction is latched into the Instruction Register (IR) in cycle Q1. This

        instruction is then decoded and executed during the Q2, Q3 and Q4 cycles. Data memory is read during

        Q2 (operand read) and written during Q4 (destination write).

        Figure 10-5. Instruction Pipeline Flow

                                                                                                                                                          Rev. 10-000337A

                                                                                                                                                             9/27/2017

                                              TCY0            TCY1           TCY2                 TCY3                TCY4                   TCY5

           1.  MOVLW  55h                     Fetch 1         Execute 1

           2.  MOVWF  PORTB                                   Fetch 2    Execute 2

           3.  BRA    Sub_1                                                  Fetch 3          Execute 3

           4.  BSF    PORTA,   BITS       (Forced  NOP)                                           Fetch 4         Flush (NOP)

          5.  Instruction  @  address    Sub_1                                                                   Fetch Sub_1  Execute Sub_1

                    All instructions are single cycle except for any program branches. These take two cycles since the fetch instruction

                    is “flushed” from the pipeline while the new instruction is being fetched and then executed.

10.2.3  Instructions in Program Memory

        The program memory is addressed in bytes. Instructions are stored as either two bytes or four bytes in

        program memory. The Least Significant Byte of an instruction word is always stored in a program memory

        location with an even address (LSb = 0). To maintain alignment with instruction boundaries, the PC

        increments in steps of two and the LSb will always read ‘0’ (see Program Counter).

        The Instructions in Program Memory figure below shows how instruction words are stored in the program

        memory.

        The CALL and GOTO instructions have the absolute program memory address embedded into the

        instruction. Since instructions are always stored on word boundaries, the data contained in the instruction

        © 2017 Microchip Technology Inc.                                 Datasheet                                                       40001844D-page 124
                                                                                        PIC18(L)F27/47K40

        is a word address. The word address is written to PC<20:1>, which accesses the desired byte address in

        program memory. Instruction #2 in the example shows how the instruction GOTO    0006h is encoded in the

        program memory. Program branch instructions, which encode a relative address offset, operate in the

        same manner. The offset value stored in a branch instruction represents the number of single-word

        instructions that the PC will be offset by. The Instruction Set Summary provides further details of the

        instruction set.

        Figure 10-6. Instructions in Program Memory

                                                                                        Word Address              Rev. 30-000112A4/19/2017

                                                                    LSB = 1    LSB = 0  

                                          Program Memory                                000000h

                                          Byte Locations                              000002h

                                                                                        000004h

                                                                                        000006h

                          Instruction 1:  MOVLW  055h               0Fh        55h      000008h

                          Instruction 2:  GOTO   0006h              EFh        03h      00000Ah

                                                                    F0h        00h      00000Ch

                          Instruction 3:  MOVFF  123h,        456h  C1h        23h      00000Eh

                                                                    F4h        56h      000010h

                                                                                        000012h

                                                                                        000014h

        Related Links

        Instruction Set Summary

10.2.4  Two-Word Instructions

        The standard PIC18 instruction set has four two-word instructions: CALL, MOVFF, GOTO and LFSR. In all

        cases, the second word of the instruction always has ‘1111’ as its four Most Significant bits; the other 12

        bits are literal data, usually a data memory address.

        The use of ‘1111’ in the 4 MSbs of an instruction specifies a special form of NOP. If the instruction is

        executed in proper sequence – immediately after the first word – the data in the second word is accessed

        and used by the instruction sequence. If the first word is skipped for some reason and the second word is

        executed by itself, a NOP is executed instead. This is necessary for cases when the two-word instruction

        is preceded by a conditional instruction that changes the PC. The Two-Word Instructions figure below

        shows how this works.

           Important:  See the PIC18 Instruction Execution and the Extended Instruction Set section for

          information on two-word instructions in the extended instruction set.

        © 2017 Microchip Technology Inc.                            Datasheet                         40001844D-page 125
                                                                                       PIC18(L)F27/47K40

      Figure 10-7. Two-Word        Instructions

                                                                                                                Rev. 30-000113A

                                                                                                                4/19/2017

         CASE 1:

         Object Code                    Source Code

         0110  0110   0000  0000        TSTFSZ       REG1         ;  is   RAM  location  0?

         1100  0001   0010  0011        MOVFF        REG1,  REG2  ;  No,   skip  this  word

         1111  0100   0101  0110                                  ;  Execute     this  word  as  a  NOP

         0010  0100   0000  0000        ADDWF        REG3         ;  continue    code

         CASE 2:

         Object Code                    Source Code

         0110  0110   0000  0000        TSTFSZ       REG1         ;  is   RAM  location  0?

         1100  0001   0010  0011        MOVFF        REG1,  REG2  ;  Yes,  execute     this  word

         1111  0100   0101  0110                                  ;  2nd   word  of    instruction

         0010  0100   0000  0000        ADDWF        REG3         ;  continue    code

      

10.3  Data Memory Organization

                  Important:  The operation of some aspects of data memory are changed when the PIC18

                  extended instruction set is enabled. See PIC18 Instruction Execution and the Extended

                  Instruction Set for more information.

      The data memory in PIC18 devices is implemented as static RAM. Each register in the data memory has

      a 12-bit address, allowing up to 4096 bytes of data memory. The memory space is divided into as many

      as 16 banks that contain 256 bytes each. The figure below shows the data memory organization for all

      devices in the device family.

      The data memory contains Special Function Registers (SFRs) and General Purpose Registers (GPRs).

      The SFRs are used for control and status of the controller and peripheral functions, while GPRs are used

      for data storage and scratchpad operations in the user’s application. Any read of an unimplemented

      location will read as ‘0’s.

      The instruction set and architecture allow operations across all banks. The entire data memory may be

      accessed by Direct, Indirect or Indexed Addressing modes. Addressing modes are discussed later in this

      subsection.

      To ensure that commonly used registers (SFRs and select GPRs) can be accessed in a single cycle,

      PIC18 devices implement an Access Bank. This is a 256-byte memory space that provides fast access to

      SFRs and the lower portion of GPR Bank 0 without using the Bank Select Register (BSR). The Access

      Bank section provides a detailed description of the Access RAM.

      © 2017 Microchip Technology Inc.                      Datasheet                                    40001844D-page 126
© 2017 Microchip Technology Inc.  Figure 10-8. Data Memory Map

                                                                                                                                               Rev. 40-000102A

                                                                                                                                                            6/20/2017

                                  Bank  BSR<3:0>    addr<7:0>                               PIC18(L)F

                                        addr<11:8>              24k40  25k40  26k40  27k40  45k40  46k40  47k40  65k40  66k40  67k40

                                  0          0h     00h-5Fh

                                                    60h-FFh

                                  1          1h     00h-FFh

                                  2          2h     00h-FFh

                                  3          3h     00h-FFh

                                  4          4h     00h-FFh

                                  5          5h     00h-FFh

                                  6          6h     00h-FFh

                                  7          7h     00h-FFh                                                                           Virtual  Access Bank

                                  8          8h     00h-FFh

                                  9          9h     00h-FFh                                                                                    00h-5Fh

Datasheet                         10         Ah     00h-FFh                                                                                    60h-FFh

                                  11         Bh     00h-FFh

                                  12         Ch     00h-FFh

                                                    00h-E9h

                                  13         Dh     EAh-EEh

                                                    EFh-FFh

                                                    00h-87h

                                                    88h-8Ch                                                                                                            PIC18(L)F27/47K40

                                  14         Eh     8Dh-8Fh

                                                    90h-9Fh

                                                    A0h-FFh

                                  15         Fh     00h-5Fh

40001844D-page 127                                  60h-FFh

                                        GPR

                                        SFR

                                  Unimplemented
                                                                            PIC18(L)F27/47K40

10.3.1  Bank Select Register

        Large areas of data memory require an efficient addressing scheme to make rapid access to any address

        possible. Ideally, this means that an entire address does not need to be provided for each read or write

        operation. For PIC18 devices, this is accomplished with a RAM banking scheme. This divides the

        memory space into 16 contiguous banks of 256 bytes. Depending on the instruction, each location can be

        addressed directly by its full 12-bit address, or an 8-bit low-order address and a 4-bit Bank Pointer.

        Most instructions in the PIC18 instruction set make use of the Bank Pointer, known as the Bank Select

        Register (BSR). This SFR holds the four Most Significant bits of a location’s address; the instruction itself

        includes the eight Least Significant bits. Only the four lower bits of the BSR are implemented (BSR<3:0>).

        The upper four bits are unused; they will always read ‘0’ and cannot be written to. The BSR can be

        loaded directly by using the MOVLB instruction.

        The value of the BSR indicates the bank in data memory; the eight bits in the instruction show the

        location in the bank and can be thought of as an offset from the bank’s lower boundary. The relationship

        between the BSR’s value and the bank division in data memory is shown in the figure below.

        Since up to 16 registers may share the same low-order address, the user must always be careful to

        ensure that the proper bank is selected before performing a data read or write. For example, writing what

        should be program data to an 8-bit address of F9h while the BSR is 0Fh will end up resetting the Program

        Counter.

        While any bank can be selected, only those banks that are actually implemented can be read or written

        to. Writes to unimplemented banks are ignored, while reads from unimplemented banks will return ‘0’s.

        Even so, the STATUS register will still be affected as if the operation was successful. The data memory

        maps in the following figure indicate which banks are implemented.

        In the core PIC18 instruction set, only the MOVFF instruction fully specifies the 12-bit address of the

        source and target registers. This instruction ignores the BSR completely when it executes. All other

        instructions include only the low-order address as an operand and must use either the BSR or the Access

        Bank to locate their target registers.

        © 2017 Microchip Technology Inc.                 Datasheet                                  40001844D-page 128
                                                                                        PIC18(L)F27/47K40

        Figure  10-9. Use of the          Bank  Select Register (Direct Addressing)

                                                                                                                                       Rev. 30-000108A

                                                                                                                                       09/07/2017

                                BSR(1)                      Data Memory                                        From Opcode(2)

                7                               0  000h                  00h         7                                              0

                0    0   0      0  0      0  1  0           Bank 0       FFh         1                      1  1  1  1  1      1  1

                                                   100h     Bank 1       00h

                Bank Select(2)                     200h                  FFh
                                                                         00h
                                                            Bank 2
                                                                         FFh
                                                   300h

                                                            Bank 3

                                                            through

                                                            Bank 13

                                                   E00h     Bank 14      00h

                                                                         FFh
                                                                         00h
                                                   F00h     Bank 15

                                                   FFFh                  FFh

               Note  1:  The Access RAM bit of the instruction can be used to force an override of the selected bank (BSR<3:0>) to

                         the registers of the Access Bank.

                     2:  The    MOVFF     instruction embeds the entire 12-bit address in the instruction.

10.3.2  Access Bank

        While the use of the BSR with an embedded 8-bit address allows users to address the entire range of

        data memory, it also means that the user must always ensure that the correct bank is selected.

        Otherwise, data may be read from or written to the wrong location. This can be disastrous if a GPR is the

        intended target of an operation, but an SFR is written to instead. Verifying and/or changing the BSR for

        each read or write to data memory can become very inefficient.

        To streamline access for the most commonly used data memory locations, the data memory is configured

        with an Access Bank, which allows users to access a mapped block of memory without specifying a BSR.

        The Access Bank consists of the first 96 bytes of memory (00h-5Fh) in Bank 0 and the last 160 bytes of

        memory (60h-FFh) in Block 15. The lower half is known as the “Access RAM” and is composed of GPRs.

        This upper half is also where the device’s SFRs are mapped. These two areas are mapped contiguously

        in the Access Bank and can be addressed in a linear fashion by an 8-bit address (see Data Memory

        Map).

        The Access Bank is used by core PIC18 instructions that include the Access RAM bit (the ‘a’ parameter

        in the instruction). When ‘a’ is equal to ‘1’, the instruction uses the BSR and the 8-bit address included in

        the opcode for the data memory address. When ‘a’ is ‘0’, however, the instruction is forced to use the

        Access Bank address map; the current value of the BSR is ignored entirely.

        Using this “forced” addressing allows the instruction to operate on a data address in a single cycle,

        without updating the BSR first. For 8-bit addresses of 60h and above, this means that users can evaluate

        and operate on SFRs more efficiently. The Access RAM below 60h is a good place for data values that

        the user might need to access rapidly, such as immediate computational results or common program

        variables. Access RAM also allows for faster and more code efficient context saving and switching of

        variables.

        

        © 2017 Microchip Technology Inc.                    Datasheet                                                   40001844D-page 129
                                                                        PIC18(L)F27/47K40

        The mapping of the Access Bank is slightly different when the extended instruction set is enabled (XINST

        Configuration bit = 1). This is discussed in more detail in the Mapping the Access Bank in Indexed Literal

        Offset Mode section.

10.3.3  General Purpose Register File

        PIC18 devices may have banked memory in the GPR area. This is data RAM, which is available for use

        by all instructions. GPRs start at the bottom of Bank 0 (address 000h) and grow upwards towards the

        bottom of the SFR area. GPRs are not initialized by a Power-on Reset and are unchanged on all other

        Resets.

10.3.4  Special Function Registers

        The Special Function Registers (SFRs) are registers used by the CPU and peripheral modules for

        controlling the desired operation of the device. These registers are implemented as static RAM. SFRs

        start at the top of data memory (FFFh) and extend downward. A list of these registers is given in the

        register summary table.

        The SFRs can be classified into two sets: those associated with the “core” device functionality (ALU,

        Resets and interrupts) and those related to the peripheral functions. The Reset and Interrupt registers are

        described in their respective chapters, while the ALU’s STATUS register is described later in this section.

        Registers related to the operation of a peripheral feature are described in the chapter for that peripheral.

        The SFRs are typically distributed among the peripherals whose functions they control. Unused SFR

        locations are unimplemented and read as ‘0’s.

        Related Links

        Register Summary

10.3.5  Status Register

        The STATUS register contains the arithmetic status of the ALU. As with any other SFR, it can be the

        operand for any instruction.

        If the STATUS register is the destination for an instruction that affects the Z, DC, C, OV or N bits, the

        results of the instruction are not written; instead, the STATUS register is updated according to the

        instruction performed. Therefore, the result of an instruction with the STATUS register as its destination

        may be different than intended. As an example, CLRF  STATUS will set the Z bit and leave the remaining

        Status bits unchanged (‘000u u1uu’).

        It is recommended that only BCF, BSF, SWAPF, MOVFF and MOVWF instructions are used to alter the

        STATUS register, because these instructions do not affect the Z, C, DC, OV or N bits in the STATUS

        register.

        For other instructions that do not affect Status bits, see the instruction set summaries.

                   Important:  The C and DC bits operate as the borrow and digit borrow bits, respectively, in

                   subtraction.

        Related Links

        Instruction Set Summary

        © 2017 Microchip Technology Inc.                     Datasheet                             40001844D-page 130
                                                                              PIC18(L)F27/47K40

10.4    Data Addressing Modes

           Important:  The execution of some instructions in the core PIC18 instruction set are changed

           when the PIC18 extended instruction set is enabled. See Data Memory and the Extended

           Instruction Set for more information.

        While the program memory can be addressed in only one way – through the Program Counter –

        information in the data memory space can be addressed in several ways. For most instructions, the

        addressing mode is fixed. Other instructions may use up to three modes, depending on which operands

        are used and whether or not the extended instruction set is enabled.

        The addressing modes are:

        •  Inherent

        •  Literal

        •  Direct

        •  Indirect

        An additional addressing mode, Indexed Literal Offset, is available when the extended instruction set is

        enabled (XINST Configuration bit = 1). Its operation is discussed in greater detail in Indexed Addressing

        with Literal Offset.

10.4.1  Inherent and Literal Addressing

        Many PIC18 control instructions do not need any argument at all; they either perform an operation that

        globally affects the device or they operate implicitly on one register. This addressing mode is known as

        Inherent Addressing. Examples include SLEEP, RESET and DAW.

        Other instructions work in a similar way but require an additional explicit argument in the opcode. This is

        known as Literal Addressing mode because they require some literal value as an argument. Examples

        include ADDLW and MOVLW, which respectively, add or move a literal value to the W register. Other

        examples include CALL and GOTO, which include a 20-bit program memory address.

10.4.2  Direct Addressing

        Direct addressing specifies all or part of the source and/or destination address of the operation within the

        opcode itself. The options are specified by the arguments accompanying the instruction.

        In the core PIC18 instruction set, bit-oriented and byte-oriented instructions use some version of direct

        addressing by default. All of these instructions include some 8-bit literal address as their Least Significant

        Byte. This address specifies either a register address in one of the banks of data RAM (see General

        Purpose Register File) or a location in the Access Bank (see Access Bank) as the data source for the

        instruction.

        The Access RAM bit ‘a’ determines how the address is interpreted. When ‘a’ is ‘1’, the contents of the

        BSR (see Bank Select Register) are used with the address to determine the complete 12-bit address of

        the register. When ‘a’ is ‘0’, the address is interpreted as being a register in the Access Bank. Addressing

        that uses the Access RAM is sometimes also known as Direct Forced Addressing mode.

        A few instructions, such as MOVFF, include the entire 12-bit address (either source or destination) in their

        opcodes. In these cases, the BSR is ignored entirely.

        The destination of the operation’s results is determined by the destination bit ‘d’. When ‘d’ is ‘1’, the

        results are stored back in the source register, overwriting its original contents. When ‘d’ is ‘0’, the results

        © 2017 Microchip Technology Inc.                       Datasheet                         40001844D-page 131
                                                                                           PIC18(L)F27/47K40

          are stored in the W register. Instructions without the ‘d’ argument have a destination that is implicit in the

          instruction; their destination is either the target register being operated on or the W register.

10.4.3    Indirect Addressing

          Indirect addressing allows the user to access a location in data memory without giving a fixed address in

          the instruction. This is done by using File Select Registers (FSRs) as pointers to the locations which are

          to be read or written. Since the FSRs are themselves located in RAM as Special File Registers, they can

          also be directly manipulated under program control. This makes FSRs very useful in implementing data

          structures, such as tables and arrays in data memory.

          The registers for indirect addressing are also implemented with Indirect File Operands (INDFs) that permit

          automatic manipulation of the pointer value with auto-incrementing, auto-decrementing or offsetting with

          another value. This allows for efficient code, using loops, such as the following example of clearing an

          entire RAM bank.

             How to Clear      RAM (Bank    1) Using Indirect Addressing

             NEXT:  LFSR       FSR0,100h      ;  Set   FSR0   to  beginning     of  Bank1

                    CLRF       POSTINC0       ;  Clear  INDF      register  then    increment  FSR0

                    BTFSS      FSR0H,1        ;  Has   high   FSR0  byte    incremented    to  next  bank?
                    BRA        NEXT           ;  NO,   clear  next  byte    in  Bank1

             CONTINUE:                        ;  YES,   continue

10.4.3.1  FSR Registers and the INDF Operand

          At the core of indirect addressing are three sets of registers: FSR0, FSR1 and FSR2. Each represents a

          pair of 8-bit registers, FSRnH and FSRnL. Each FSR pair holds a 12-bit value, therefore, the four upper

          bits of the FSRnH register are not used. The 12-bit FSR value can address the entire range of the data

          memory in a linear fashion. The FSR register pairs, then, serve as pointers to data memory locations.

          Indirect addressing is accomplished with a set of Indirect File Operands, INDF0 through INDF2. These

          can be thought of as “virtual” registers; they are mapped in the SFR space but are not physically

          implemented. Reading or writing to a particular INDF register actually accesses its corresponding FSR

          register pair. A read from INDF1, for example, reads the data at the address indicated by FSR1H:FSR1L.

          Instructions that use the INDF registers as operands actually use the contents of their corresponding FSR

          as a pointer to the instruction’s target. The INDF operand is just a convenient way of using the pointer.

          Because indirect addressing uses a full 12-bit address, data RAM banking is not necessary. Thus, the

          current contents of the BSR and the Access RAM bit have no effect on determining the target address.

10.4.3.2  FSR Registers and POSTINC, POSTDEC, PREINC and PLUSW

          In addition to the INDF operand, each FSR register pair also has four additional indirect operands. Like

          INDF, these are “virtual” registers which cannot be directly read or written. Accessing these registers

          actually accesses the location to which the associated FSR register pair points, and also performs a

          specific action on the FSR value. They are:

          •  POSTDEC: accesses the location to which the FSR points, then automatically decrements the FSR

             by 1 afterwards

          •  POSTINC: accesses the location to which the FSR points, then automatically increments the FSR

             by 1 afterwards

          •  PREINC: automatically increments the FSR by one, then uses the location to which the FSR points

             in the operation

          © 2017 Microchip Technology Inc.                        Datasheet                                  40001844D-page 132
                                                                                                           PIC18(L)F27/47K40

          •         PLUSW: adds the signed value of the W register (range of -127 to 128) to that of the FSR and uses

                    the location to which the result points in the operation.

          In this context, accessing an INDF register uses the value in the associated FSR register without

          changing it. Similarly, accessing a PLUSW register gives the FSR value an offset by that in the W

          register; however, neither W nor the FSR is actually changed in the operation. Accessing the other virtual

          registers changes the value of the FSR register.

          Figure 10-10. Indirect Addressing

                                                                                                                              Rev. 30-000109A

                                                                                                                              4/18/2017

                                                                                                           000h

             Using an instruction with one of the                    ADDWF,      INDF1,  1                       Bank 0

             indirect addressing registers as the                                                          100h

             operand....                                                                                         Bank 1

                                                                                                           200h

                                                                                                           300h  Bank 2

             ...uses the 12-bit address stored in                       FSR1H:FSR1L

             the    FSR    pair  associated  with  that  7                    0  7                      0

             register....                                                                                        Bank 3

                                                         x  x  x  x  1  1  1  0  1  1    0  0  1  1  0  0        through

                                                                                                                 Bank 13

             ...to  determine    the  data   memory

             location to be used in that operation.

             In this case, the FSR1 pair contains                                                          E00h

             ECCh. This means the contents of                                                                    Bank 14

             location ECCh will be added to that                                                           F00h

             of the W register and stored back in                                                                Bank 15

             ECCh.                                                                                         FFFh

                                                                                                                 Data Memory

          Operations on the FSRs with POSTDEC, POSTINC and PREINC affect the entire register pair; that is,

          rollovers of the FSRnL register from FFh to 00h carry over to the FSRnH register. On the other hand,

          results of these operations do not change the value of any flags in the STATUS register (e.g., Z, N, OV,

          etc.).

          The PLUSW register can be used to implement a form of indexed addressing in the data memory space.

          By manipulating the value in the W register, users can reach addresses that are fixed offsets from pointer

          addresses. In some applications, this can be used to implement some powerful program control structure,

          such as software stacks, inside of data memory.

10.4.3.3  Operations by FSRs on FSRs

          Indirect addressing operations that target other FSRs or virtual registers represent special cases. For

          example, using an FSR to point to one of the virtual registers will not result in successful operations. As a

          specific case, assume that FSR0H:FSR0L contains FE7h, the address of INDF1. Attempts to read the

          value of the INDF1 using INDF0 as an operand will return 00h. Attempts to write to INDF1 using INDF0

          as the operand will result in a NOP.

          On the other hand, using the virtual registers to write to an FSR pair may not occur as planned. In these

          cases, the value will be written to the FSR pair but without any incrementing or decrementing. Thus,

          writing to either the INDF2 or POSTDEC2 register will write the same value to the FSR2H:FSR2L.

          Since the FSRs are physical registers mapped in the SFR space, they can be manipulated through all

          direct operations. Users should proceed cautiously when working on these registers, particularly if their

          code uses indirect addressing.

          © 2017 Microchip Technology Inc.                                       Datasheet                       40001844D-page 133
                                                                                   PIC18(L)F27/47K40

        Similarly, operations by indirect addressing are generally permitted on all other SFRs. Users should

        exercise the appropriate caution that they do not inadvertently change settings that might affect the

        operation of the device.

10.5    Data Memory and the Extended Instruction Set

        Enabling the PIC18 extended instruction set (XINST Configuration bit = 1) significantly changes certain

        aspects of data memory and its addressing. Specifically, the use of the Access Bank for many of the core

        PIC18 instructions is different; this is due to the introduction of a new addressing mode for the data

        memory space.

        What does not change is just as important. The size of the data memory space is unchanged, as well as

        its linear addressing. The SFR map remains the same. Core PIC18 instructions can still operate in both

        Direct and Indirect Addressing mode; inherent and literal instructions do not change at all. Indirect

        addressing with FSR0 and FSR1 also remain unchanged.

10.5.1  Indexed Addressing with Literal Offset

        Enabling the PIC18 extended instruction set changes the behavior of indirect addressing using the FSR2

        register pair within Access RAM. Under the proper conditions, instructions that use the Access Bank –

        that is, most bit-oriented and byte-oriented instructions – can invoke a form of indexed addressing using

        an offset specified in the instruction. This special addressing mode is known as Indexed Addressing with

        Literal Offset, or Indexed Literal Offset mode.

        When using the extended instruction set, this addressing mode requires the following:

        •  The use of the Access Bank is forced (‘a’ = 0) and

        •  The file address argument is less than or equal to 5Fh.

        Under these conditions, the file address of the instruction is not interpreted as the lower byte of an

        address (used with the BSR in direct addressing), or as an 8-bit address in the Access Bank. Instead, the

        value is interpreted as an offset value to an Address Pointer, specified by FSR2. The offset and the

        contents of FSR2 are added to obtain the target address of the operation.

10.5.2  Instructions Affected by Indexed Literal Offset Mode

        Any of the core PIC18 instructions that can use direct addressing are potentially affected by the Indexed

        Literal Offset Addressing mode. This includes all byte-oriented and bit-oriented instructions, or almost

        one-half of the standard PIC18 instruction set. Instructions that only use Inherent or Literal Addressing

        modes are unaffected.

        Additionally, byte-oriented and bit-oriented instructions are not affected if they do not use the Access

        Bank (Access RAM bit is ‘1’), or include a file address of 60h or above. Instructions meeting these criteria

        will continue to execute as before. A comparison of the different possible addressing modes when the

        extended instruction set is enabled is shown in the following figure.

        Those who desire to use byte-oriented or bit-oriented instructions in the Indexed Literal Offset mode

        should note the changes to assembler syntax for this mode. This is described in more detail in the

        Extended Instruction Syntax section.

        © 2017 Microchip Technology Inc.                 Datasheet                             40001844D-page 134
                                                                                     PIC18(L)F27/47K40

Figure 10-11. Comparing Addressing                   Options for Bit-Oriented and

Byte-Oriented Instructions (Extended                 Instruction Set Enabled)

                                                                                                               Rev. 30-000110A

   EXAMPLE INSTRUCTION:                  ADDWF,  f,  d,  a  (Opcode: 0010      01da  ffff  ffff)                        4/18/2017

   When ‘a’ = 0 and f  60h:                                000h

   The   instruction         executes    in                 060h

   Direct Forced mode. ‘f’ is inter-                              Bank 0

   preted    as    a   location    in  the                  100h

   Access      RAM     between      060h                                                               00h

   and 0FFh. This is the same as                                  Bank 1                               60h

   locations       F60h        to   FFFh                          through

                                                                  Bank 14                                      Valid range

   (Bank 15) of data memory.                                                                                   for ‘f’

   Locations below 60h are not                              F00h                           Access RAM  FFh

   available     in    this    addressing                         Bank 15

   mode.                                                    F60h

                                                                  SFRs

                                                            FFFh  Data Memory

   When ‘a’ = 0 and f5Fh:                                000h

   The   instruction         executes    in

   Indexed Literal Offset mode. ‘f’                         060h

   is interpreted as an offset to the                             Bank 0

   address     value    in     FSR2.     The                100h                           001001da  ffffffff

   two   are       added     together    to                       Bank 1

   obtain the address of the target                               through

   register for the instruction. The                              Bank 14

   address     can     be    anywhere    in                                                FSR2H       FSR2L

   the data memory space.                                   F00h

   Note    that    in  this    mode,     the                      Bank 15

   correct syntax is now:                                   F60h

   ADDWF     [k],      d                                          SFRs

   where ‘k’ is the same as ‘f’.                            FFFh  Data Memory

                                                                                           BSR

   When ‘a’ = 1 (all values of f):                          000h                           00000000

   The   instruction         executes    in                 060h

   Direct mode (also known as                                     Bank 0

   Direct Long mode). ‘f’ is inter-                         100h

   preted as a location in one of

   the   16    banks       of  the     data                       Bank 1                   001001da  ffffffff

   memory      space.      The     bank  is                       through

   designated by the Bank Select                                  Bank 14

   Register (BSR). The address

   can   be    in  any     implemented                      F00h

   bank    in    the    data       memory                         Bank 15

   space.                                                   F60h

                                                                  SFRs

                                                            FFFh

                                                                  Data Memory

Related Links



© 2017 Microchip Technology Inc.                                  Datasheet                            40001844D-page 135
                                                                             PIC18(L)F27/47K40

        Extended Instruction Syntax

10.5.3  Mapping the Access Bank in Indexed Literal Offset Mode

        The use of Indexed Literal Offset Addressing mode effectively changes how the first 96 locations of

        Access RAM (00h to 5Fh) are mapped. Rather than containing just the contents of the bottom section of

        Bank 0, this mode maps the contents from a user defined “window” that can be located anywhere in the

        data memory space. The value of FSR2 establishes the lower boundary of the addresses mapped into

        the window, while the upper boundary is defined by FSR2 plus 95 (5Fh). Addresses in the Access RAM

        above 5Fh are mapped as previously described (see Access Bank). An example of Access Bank

        remapping in this addressing mode is shown in the following figure.

        Figure 10-12. Remapping the Access Bank with Indexed Literal Offset Addressing

           Example Situation:                                                                                   Rev. 30-000111A

                                                                                                                4/18/2017

           ADDWF      f,    d,  a             000h

           FSR2H:FSR2L = 120h                       Bank 0

           Locations      in    the  region

           from  the      FSR2       pointer  100h  Bank 1

           (120h) to the pointer plus         120h  Window

           05Fh (17Fh) are mapped             17Fh                                                              00h

           to    the  bottom         of  the        Bank 1

           Access RAM (000h-05Fh).            200h                                      Bank 1 “Window”

           Special    File    Registers  at                                                                     5Fh
                                                                                                                60h
           F60h   through       FFFh     are

           mapped     to      60h    through        Bank 2                                          SFRs

           FFh, as usual.                           through

           Bank  0    addresses      below          Bank 14

           5Fh can still be addressed                                                                           FFh

           by using the BSR.                                                            Access Bank

                                              F00h

                                                    Bank 15

                                              F60h

                                                    SFRs

                                              FFFh

                                                    Data Memory

        Remapping of the Access Bank applies only to operations using the Indexed Literal Offset mode.

        Operations that use the BSR (Access RAM bit is ‘1’) will continue to use direct addressing as before.

10.6    PIC18 Instruction Execution and the Extended Instruction Set

        Enabling the extended instruction set adds eight additional commands to the existing PIC18 instruction

        set. These instructions are executed as described in the Extended Instruction Set section.

        Related Links

        Extended Instruction Syntax

        

        © 2017 Microchip Technology Inc.                         Datasheet                          40001844D-page 136
                                                                                   PIC18(L)F27/47K40

10.7    Register  Summary:                Memory and  Status

Offset  Name      Bit Pos.

0x0FD8  STATUS    7:0                     TO           PD      N               OV  Z             DC  C

0x0FD9  FSR2      7:0                                             FSRL[7:0]

                  15:8                                                                FSRH[3:0]

0x0FDB  PLUSW2    7:0                                             PLUSW[7:0]

0x0FDC  PREINC2   7:0                                             PREINC[7:0]

0x0FDD  POSTDEC2  7:0                                          POSTDEC[7:0]

0x0FDE  POSTINC2  7:0                                          POSTINC[7:0]

0x0FDF  INDF2     7:0                                             INDF[7:0]

0x0FE0  BSR       7:0                                                                 BSR[3:0]

0x0FE1  FSR1      7:0                                             FSRL[7:0]

                  15:8                                                                FSRH[3:0]

0x0FE3  PLUSW1    7:0                                             PLUSW[7:0]

0x0FE4  PREINC1   7:0                                             PREINC[7:0]

0x0FE5  POSTDEC1  7:0                                          POSTDEC[7:0]

0x0FE6  POSTINC1  7:0                                          POSTINC[7:0]

0x0FE7  INDF1     7:0                                             INDF[7:0]

0x0FE8  WREG      7:0                                             WREG[7:0]

0x0FE9  FSR0      7:0                                             FSRL[7:0]

                  15:8                                                                FSRH[3:0]

0x0FEB  PLUSW0    7:0                                             PLUSW[7:0]

0x0FEC  PREINC0   7:0                                             PREINC[7:0]

0x0FED  POSTDEC0  7:0                                          POSTDEC[7:0]

0x0FEE  POSTINC0  7:0                                          POSTINC[7:0]

0x0FEF  INDF0     7:0                                             INDF[7:0]

0x0FF0

...     Reserved

0x0FF8

0x0FF9  PCL       7:0                                             PCL[7:0]

0x0FFA  PCLAT     7:0                                             PCLATH[7:0]

                  15:8                                                             PCLATU[4:0]

0x0FFC  STKPTR    7:0                                                              STKPTR[4:0]

                  7:0                                             TOSL[7:0]

0x0FFD  TOS       15:8                                            TOSH[7:0]

                  23:16                                                            TOSU[4:0]

10.8    Register  Definitions:            Memory  and  Status

        © 2017 Microchip Technology Inc.                      Datasheet                          40001844D-page 137
                                                                                  PIC18(L)F27/47K40

10.8.1       PCL

             Name:     PCL

             Offset:   0xFF9

             Low byte of the Program   Counter

        Bit       7               6       5                   4              3    2    1    0

                                                                   PCL[7:0]

Access            R/W         R/W         R/W                 R/W            R/W  R/W  R/W  R/W

Reset             0               0       0                   0              0    0    0    0

             Bits 7:0 – PCL[7:0]

             Provides direct read and  write access  to  the  Program Counter

        © 2017 Microchip Technology Inc.                           Datasheet                40001844D-page 138
                                                                                 PIC18(L)F27/47K40

10.8.2       PCLAT

             Name:     PCLAT

             Offset:   0xFFA

             Program Counter Latches. Holding register for bits <21:9> of the Program Counter (PC). Reads of the

             PCL register transfer the upper PC bits to the PCLAT register. Writes to PCL register transfer the PCLAT

             value to the PC.

        Bit  15                14         13   12                           11   10           9                   8

                                                                                 PCLATU[4:0]

Access                                         R/W                          R/W  R/W          R/W                 R/W

Reset                                          0                            0    0            0                   0

        Bit  7                 6          5    4                            3    2            1                   0

                                                               PCLATH[7:0]

Access       R/W               R/W        R/W  R/W                          R/W  R/W          R/W                 R/W

Reset        0                 0          0    0                            0    0            0                   0

             Bits 12:8 – PCLATU[4:0] Upper PC Latch register

             Holding register for Program Counter bits <21:17>

             Bits 7:0 – PCLATH[7:0] High PC Latch register

             Holding register for Program Counter bits <16:8>

        © 2017 Microchip Technology Inc.                        Datasheet                          40001844D-page 139
                                                                                        PIC18(L)F27/47K40

10.8.3       TOS

             Name:     TOS

             Offset:   0xFFD

             Top-Of-Stack Registers.

             Contents of the stack pointed to by the STKPTR register.    This  is  the  value that  will  be loaded  into  the

             Program Counter upon a RETURN or RETFIE instruction.

        Bit       23          22          21             20              19             18                17               16

                                                                                        TOSU[4:0]

Access                                                   R/W             R/W            R/W               R/W              R/W

Reset                                                    0               0              0                 0                0

        Bit       15          14          13             12              11             10                9                8

                                                              TOSH[7:0]

Access            R/W         R/W         R/W            R/W             R/W            R/W               R/W              R/W

Reset             0           0           0              0               0              0                 0                0

        Bit       7           6           5              4               3              2                 1                0

                                                              TOSL[7:0]

Access            R/W         R/W         R/W            R/W             R/W            R/W               R/W              R/W

Reset             0           0           0              0               0              0                 0                0

             Bits 20:16 – TOSU[4:0] Upper byte of TOS register

             Bits <21:17> of the TOS

             Bits 15:8 – TOSH[7:0] High Byte of the TOS Register

             Bits <16:8> of the TOS

             Bits 7:0 – TOSL[7:0] Low Byte TOS Register

             Bits <7:0> of the TOS

        © 2017 Microchip Technology Inc.                        Datasheet                                      40001844D-page 140
                                                                         PIC18(L)F27/47K40

10.8.4       STKPTR

             Name:     STKPTR

             Offset:   0xFFC

             Stack Pointer Register

        Bit  7                 6           5        4               3    2            1    0

                                                                         STKPTR[4:0]

Access                                              R/W             R/W  R/W          R/W  R/W

Reset                                               0               0    0            0    0

             Bits 4:0 – STKPTR[4:0] Stack  Pointer  Location  bits

        © 2017 Microchip Technology Inc.                      Datasheet                    40001844D-page 141
                                                                                  PIC18(L)F27/47K40

10.8.5       STATUS

             Name:     STATUS

             Offset:   0xFD8

             Status Register

        Bit     7                6                  5  4              3           2             1                  0

                                 TO            PD      N              OV          Z             DC                 C

Access                           R                  R  R/W            R/W         R/W           R/W                R/W

Reset                            1                  1  0              0           0             0                  0

             Bit 6 – TO Time-Out bit

             Reset States: POR/BOR = 1

                       All Other Resets = q

             Value     Description

             1         Set at power-up or by execution of CLRWDT or SLEEP instruction

             0         A WDT time-out occurred

             Bit 5 – PD Power-Down bit

             Reset States: POR/BOR = 1

                       All Other Resets = q

             Value     Description

             1         Set at power-up or by execution of CLRWDT instruction

             0         Cleared by execution of the SLEEP instruction

             Bit 4 – N Negative bit

             Used for signed arithmetic (2’s complement); indicates if the result is negative,

             (ALU MSb = 1).

             Reset States: POR/BOR = 0

                       All Other Resets = u

             Value     Description

             1         The result is negative

             0         The result is positive

             Bit 3 – OV Overflow bit

             Used for signed arithmetic (2’s complement); indicates an overflow of the 7-bit    magnitude,  which  causes

             the sign bit (bit 7) to change state.

             Reset States: POR/BOR = 0

                       All Other Resets = u

             Value     Description

             1         Overflow occurred for current signed arithmetic operation

             0         No overflow occurred

             Bit 2 – Z Zero bit

             Reset States: POR/BOR = 0

                       All Other Resets = u

        © 2017 Microchip Technology Inc.                    Datasheet                                40001844D-page 142
                                                                           PIC18(L)F27/47K40

Value   Description

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/Borrow bit

ADDWF, ADDLW, SUBLW, SUBWF instructions(1)

Reset States: POR/BOR = 0

        All Other Resets = u

Value   Description

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

ADDWF, ADDLW, SUBLW, SUBWF instructions(1,2)

Reset States: POR/BOR = 0

        All Other Resets = u

Value   Description

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.

2.  For Rotate (RRCF, RLCF) instructions, this bit is loaded with either the high or low-order bit of the

    Source register.

© 2017 Microchip Technology Inc.              Datasheet                    40001844D-page 143
                                                                         PIC18(L)F27/47K40

10.8.6       WREG

             Name:     WREG

             Offset:   0xFE8

             Shadow    of Working Data    Register

        Bit  7                6           5         4               3    2    1    0

                                                         WREG[7:0]

Access       R/W              R/W         R/W       R/W             R/W  R/W  R/W  R/W

Reset        x                x           x         x               x    x    x    x

             Bits 7:0  – WREG[7:0]

        © 2017 Microchip Technology Inc.                 Datasheet                 40001844D-page 144
                                                                                           PIC18(L)F27/47K40

10.8.7       INDF

             Name:     INDFx

             Offset:   0xFEF,0xFE7,0xFDF

             Indirect Data Register. This is a virtual register. The GPR/SFR     register  addressed by the FSRx register is

             the target for all operations involving the INDFx register.

        Bit        7          6           5                 4                 3            2    1    0

                                                                 INDF[7:0]

Access       R/W              R/W         R/W               R/W             R/W            R/W  R/W  R/W

Reset              0          0           0                 0                 0            0    0    0

             Bits 7:0 – INDF[7:0]

             Indirect data pointed to by the FSRx register

        © 2017 Microchip Technology Inc.                         Datasheet                           40001844D-page 145
                                                                          PIC18(L)F27/47K40

10.8.8       POSTDEC

             Name:     POSTDECx

             Offset:   0xFED,0xFE5,0xFDD

             Indirect Data Register with post decrement. This is a virtual register. The GPR/SFR register addressed by

             the FSRx register is the target for all operations involving the POSTDECx register. FSRx is decrememted

             after the read or write operation.

        Bit  7         6                         5    4                3  2    1    0

                                                         POSTDEC[7:0]

Access       R/W       R/W                       R/W  R/W  R/W            R/W  R/W  R/W

Reset        0         0                         0    0                0  0    0    0

             Bits 7:0 – POSTDEC[7:0]

        © 2017 Microchip Technology Inc.                   Datasheet                40001844D-page 146
                                                                          PIC18(L)F27/47K40

10.8.9       POSTINC

             Name:     POSTINCx

             Offset:   0xFEE,0xFE6,0xFDE

             Indirect Data Register with post increment. This is a virtual register. The GPR/SFR register addressed by

             the FSRx register is the target for all operations involving the POSTINCx register. FSRx is incremented

             after the read or write operation.

        Bit  7         6                         5    4                3  2    1                                      0

                                                         POSTINC[7:0]

Access       R/W       R/W                       R/W  R/W  R/W            R/W  R/W  R/W

Reset        0         0                         0    0                0  0    0                                      0

             Bits 7:0 – POSTINC[7:0]

        © 2017 Microchip Technology Inc.                   Datasheet                40001844D-page 147
                                                                               PIC18(L)F27/47K40

10.8.10  PREINC

         Name:     PREINCx

         Offset:   0xFEC,0xFE4,0xFDC

         Indirect Data Register with pre increment. This is a virtual register. The GPR/SFR register addressed by

         the FSRx register plus 1 is the target for all operations involving the PREINCx register. FSRx is

         incremented before the read or write operation.

Bit      7         6                       5              4               3    2    1                              0

                                                             PREINC[7:0]

Access   R/W       R/W                     R/W  R/W                       R/W  R/W  R/W                     R/W

Reset    0         0                       0              0               0    0    0                              0

         Bits 7:0 – PREINC[7:0]

         © 2017 Microchip Technology Inc.                    Datasheet                   40001844D-page 148
                                                                                   PIC18(L)F27/47K40

10.8.11  PLUSW

         Name:     PLUSWx

         Offset:   0xFEB,0xFE3,0xFDB

         Indirect Data Register with WREG offset. This is a virtual register. The  GPR/SFR register addressed by

         the sum of the FSRx register plus the signed value of the W register is   the target for all operations

         involving the PLUSWx register.

Bit      7                 6               5    4                3                 2    1                         0

                                                     PLUSW[7:0]

Access   R/W       R/W                     R/W  R/W              R/W               R/W  R/W                       R/W

Reset    0                 0               0    0                0                 0    0                         0

         Bits 7:0 – PLUSW[7:0]

         © 2017 Microchip Technology Inc.            Datasheet                               40001844D-page 149
                                                                                      PIC18(L)F27/47K40

10.8.12  FSR

         Name:     FSRx

         Offset:   0xFE9,0xFE1,0xFD9

         Indirect Address Register. The FSR value  is  the address of the   data  to  which the INDF register  points.

Bit           15         14                13          12              11             10              9        8

                                                                                           FSRH[3:0]

Access                                                                 R/W            R/W             R/W      R/W

Reset                  &nbs