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

型号

产品描述

搜索

PIC18F26K20-E-SS

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

器件描述

Multilayer Ceramic Capacitors MLCC - SMD/SMT 100uF 10V X5R +/-20% 1210 HiCV

参数

产品属性属性值
产品种类:
Product Category:
8-bit Microcontrollers - MCU
制造商:
Manufacturer:
Microchip
RoHS:YES
安装风格:
Mounting Style:
SMD/SMT
封装 / 箱体:
Package / Case:
SSOP-28
系列:
Series:
PIC18wqrbyasbffbbeesstydzs
Core:PIC18
Data Bus Width:8 bit
Maximum Clock Frequency:64 MHz
Program Memory Size:64 kB
Data RAM Size:3.84 kB
ADC Resolution:10 bit
Number of I/Os:25 I/O
工作电源电压:
Operating Supply Voltage:
1.8 V to 3.6 V
最大工作温度:
Maximum Operating Temperature:
+ 125 C
封装:
Packaging:
Tube
商标:
Brand:
Microchip Technology
高度:
Height:
1.75 mm
接口类型:
Interface Type:
CCP, ECCP, EUSART, I2C, MSSP, SPI
长度:
Length:
10.2 mm
最小工作温度:
Minimum Operating Temperature:
- 40 C
Number of ADC Channels:11
Number of Timers/Counters:4 Timer
Processor Series:PIC18
产品:
Product:
MCU
Program Memory Type:Flash
工厂包装数量:
Factory Pack Quantity:
47
电源电压-最大:
Supply Voltage - Max:
3.6 V
电源电压-最小:
Supply Voltage - Min:
1.8 V
商标名:
Tradename:
PIC
宽度:
Width:
5.3 mm
单位重量:
Unit Weight:
0.025045 oz

PIC18F26K20-E-SS器件文档内容

                                                     PIC18F2XK20/4XK20

                        28/40/44-Pin Flash Microcontrollers

                                        with XLP Technology

High-Performance RISC CPU                            Extreme Low-Power Management

•  C Compiler Optimized Architecture:                with XLP

   -  Optional extended instruction set designed to  •  Sleep Mode: < 100 nA @ 1.8V

      optimize re-entrant code                       •  Watchdog Timer: < 800 nA @ 1.8V

•  Up to 1024 bytes Data EEPROM                      •  Timer1 Oscillator: < 800 nA @ 32 kHz and 1.8V

•  Up to 64 Kbytes Linear Program Memory

   Addressing                                        Analog Features

•  Up to 3936 bytes Linear Data Memory Addressing

•  Up to 16 MIPS Operation                           •  Analog-to-Digital Converter (ADC) Module:

•  16-bit Wide Instructions, 8-bit Wide Data Path       -  10-bit resolution, 13 External Channels

•  Priority Levels for Interrupts                       -  Auto-acquisition capability

•  31-Level, Software Accessible Hardware Stack         -  Conversion available during Sleep

•  8 x 8 Single-Cycle Hardware Multiplier               -  1.2V Fixed Voltage Reference (FVR) channel

Flexible Oscillator Structure                           -  Independent input multiplexing

                                                     •  Analog Comparator Module:

•  Precision 16 MHz Internal Oscillator Block:          -  Two rail-to-rail analog comparators

   -  Factory calibrated to ± 1%                        -  Independent input multiplexing

   -  Software selectable frequencies range of       •  Voltage Reference (CVREF) Module

      31 kHz to 16 MHz

   -  64 MHz performance available using PLL –          -  Programmable (% VDD), 16 steps

      no external components required                   -  Two 16-level voltage ranges using VREF pins

•  Four Crystal Modes up to 64 MHz                   Peripheral Highlights

•  Two External Clock Modes up to 64 MHz

•  4X Phase Lock Loop (PLL)                          •  Up to 35 I/O Pins plus 1 Input-only Pin:

•  Secondary Oscillator using Timer1 @ 32 kHz           -  High-Current Sink/Source 25 mA/25 mA

•  Fail-Safe Clock Monitor:                             -  Three programmable external interrupts

   -  Allows for safe shutdown, if peripheral clock     -  Four programmable interrupt-on-change

      stops                                             -  Eight programmable weak pull-ups

   -  Two-Speed Oscillator Start-up                     -  Programmable slew rate

Special Microcontroller Features                     •  Capture/Compare/PWM (CCP) Module

                                                     •  Enhanced CCP (ECCP) module:

•  Operating Voltage Range: 1.8V to 3.6V                -  One, two or four PWM outputs

•  Self-Programmable under Software Control             -  Selectable polarity

•  Programmable 16-Level High/Low-Voltage               -  Programmable dead time

   Detection (HLVD) module:                             -  Auto-shutdown and auto-restart

   -  Interrupt on High/Low-Voltage Detection        •  Master Synchronous Serial Port (MSSP) Module

•  Programmable Brown-out Reset (BOR):                  -  3-wire SPI (supports all four modes)

   -  With software enable option                       -  I2C™ Master and Slave modes with address

•  Extended Watchdog Timer (WDT):                          mask

   -  Programmable period from 4 ms to 131s          •  Enhanced Universal Synchronous Asynchronous

•  Single-Supply 3V In-Circuit Serial                   Receiver Transmitter (EUSART) Module:

   Programming™ (ICSP™) via Two Pins                    -  Supports RS-485, RS-232 and LIN

•  In-Circuit Debug (ICD) via Two Pins                  -  RS-232 operation using internal oscillator

                                                        -  Auto-Wake-up on Break

                                                        -  Auto-Baud Detect

 2010-2015 Microchip Technology Inc.                                                      DS40001303H-page 1
PIC18F2XK20/4XK20

-
PIC18F2XK20/4XK20 Family Types

                Program Memory          Data Memory                      10-bit    CCP/      MSSP      EUSART

   Device                                                     I/O(1)     A/D       ECCP                        Comp.  Timers

                Flash    # Single-Word  SRAM         EEPROM              (ch)(2)          SPI  Master                 8/16-bit

                (bytes)  Instructions   (bytes)      (bytes)                       (PWM)       I2C™

   PIC18F23K20  8K       4096           512          256      25         11        1/1    Y        Y   1       2      1/3

   PIC18F24K20  16K      8192           768          256      25         11        1/1    Y        Y   1       2      1/3

   PIC18F25K20  32K      16384          1536         256      25         11        1/1    Y        Y   1       2      1/3

   PIC18F26K20  64k      32768          3936         1024     25         11        1/1    Y        Y   1       2      1/3

   PIC18F43K20  8K       4096           512          256      36         14        1/1    Y        Y   1       2      1/3

   PIC18F44K20  16K      8192           768          256      36         14        1/1    Y        Y   1       2      1/3

   PIC18F45K20  32K      16384          1536         256      36         14        1/1    Y        Y   1       2      1/3

   PIC18F46K20  64k      32768          3936         1024     36         14        1/1    Y        Y   1       2      1/3

   Note  1:  One pin is input-only.

         2:  Channel count includes  internal Fixed  Voltage  Reference  channel.

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

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

DS40001303H-page 2                                                                         2010-2015 Microchip Technology Inc.
                                                                                                                                                           PIC18F2XK20/4XK20

Pin Diagrams

FIGURE 1:           28-PIN SPDIP, SOIC, SSOP

                    MCLR/VPP/RE3                               1                                                                                                                            28  RB7/KBI3/PGD

                    AN0/C12IN0-/RA0                            2                                                                                                                            27  RB6//KBI2/PGC

                    AN1/C12IN1-/RA1                            3                                                                                                                            26  RB5/KBI1/PGM

                    AN2/VREF-/CVREF/C2IN+/RA2                  4                                                                                                                            25  RB4/KBI0/AN11/P1D

                    AN3/VREF+/C1IN+/RA3                        5                                       PIC18F23K20  PIC18F24K20  PIC18F25K20  PIC18F26K20                                   24  RB3/AN9/C12IN2-/CCP2(1)

                    T0CKI/C1OUT/RA4                            6                                                                                                                            23  RB2/INT2/AN8/P1B

                    AN4/SS/HLVDIN/C2OUT/RA5                    7                                                                                                                            22  RB1/INT1/AN10/C12IN3-/P1C

                                                       VSS     8                                                                                                                            21  RB0/INT0/FLT0/AN12

                    OSC1/CLKIN/RA7                             9                                                                                                                            20  VDD

                    OSC2/CLKOUT/RA6                         10                                                                                                                              19  VSS

                    T1OSO/T13CKI/RC0                        11                                                                                                                              18  RC7/RX/DT

                    T1OSI/CCP2(1)/RC1                       12                                                                                                                              17  RC6/TX/CK

                    CCP1/P1A/RC2                            13                                                                                                                              16  RC5/SDO

                                       SCK/SCL/RC3          14                                                                                                                              15  RC4/SDI/SDA

Note:          See  Table 1 for pin allocation table.

FIGURE 2:           28-PIN QFN/UQFN

                                                                  RA1/AN1/C12IN1-   RA0/AN0/C12IN0-    RE3/MCLR/VPP  RB7/KBI3/PGD  RB6/KBI2/PGC            RB5/KBI1/PGM  RB4/KBI0/AN11/P1D

                                                                  28 27 26 25 24 23 22

                    AN2/VREF-/CVREF/C2IN+/RA2               1                                                                                                                               21  RB3/AN9/C12IN2-/CCP2(1)

                    AN3/VREF+/C1IN+/RA3                     2        PIC18F23K20                                                                                                            20  RB2/INT2/AN8/P1B

                    T0CKI/C1OUT/RA4                         3        PIC18F24K20                                                                                                            19  RB1/INT1/AN10/C12IN3-/P1C

                    AN4/SS/HLVDIN/C2OUT/RA5                 4        PIC18F25K20                                                                                                            18  RB0/INT0/FLT0/AN12

                                                       VSS  5        PIC18F26K20                                                                                                            17  VDD

                    OSC1/CLKIN/RA7                          6                                                                                                                               16  VSS

                    OSC2/CLKOUT/RA6                         7                                                                                                                               15  RC7/RX/DT

                                                                  8                 9 10 11 12 13 14

                                                                  T1OSO/T13CKI/RC0  T1OSI/CCP2(1)/RC1  CCP1/P1A/RC2  SCK/SCL/RC3   SDI/SDA/RC4   SDO/RC5                 TX/CK/RC6

Note       1:  RB3 is the alternate pin for CCP2 multiplexing.

           2:  UQFN package availability applies only to PIC18F23K20.

           3:  See Table 1 for pin allocation table.

           4:  The exposed pad should be connected to VSS.

 2010-2015 Microchip Technology Inc.                                                                                                                                                                                      DS40001303H-page 3
PIC18F2XK20/4XK20

FIGURE  3:          40-PIN PDIP

                                 MCLR/VPP/RE3                                                               1                                                                                                                   40                   RB7/KBI3/PGD

                                 AN0/C12IN0-/RA0                                                            2                                                                                                                   39                   RB6/KBI2/PGC

                                 AN1/C12IN1-/RA1                                                            3                                                                                                                   38                   RB5/KBI1/PGM

                           AN2/VREF-/CVREF/C2IN+/RA2                                                        4                                                                                                                   37                   RB4/KBI0/AN11

                           AN3/VREF+/C1IN+/RA3                                                              5                                                                                                                   36                   RB3/AN9/C12IN2-/CCP2(1)

                           T0CKI/C1OUT/RA4                                                                  6                                                                                                                   35                   RB2/INT2/AN8

                           AN4/SS/HLVDIN/C2OUT/RA5                                                          7                                                                                                                   34                   RB1/INT1/AN10/C12IN3-

                                            RD/AN5/RE0                                                      8                           PIC18F43K20  PIC18F44K20  PIC18F45K20      PIC18F46K20                                  33                   RB0/INT0/FLT0/AN12

                                 WR/AN6/RE1                                                                 9                                                                                                                   32                   VDD

                                            CS/AN7/RE2                                                      10                                                                                                                  31                   VSS

                                                                               VDD                          11                                                                                                                  30                   RD7/PSP7/P1D

                                                                               VSS                          12                                                                                                                  29                   RD6/PSP6/P1C

                                 OSC1/CLKIN/RA7                                                             13                                                                                                                  28                   RD5/PSP5/P1B

                           OSC2/CLKOUT/RA6                                                                  14                                                                                                                  27                   RD4/PSP4

                           T1OSO/T13CKI/RC0                                                                 15                                                                                                                  26                   RC7/RX/DT

                           T1OSI/CCP2(1)/RC1                                                                16                                                                                                                  25                   RC6/TX/CK

                                 CCP1/P1A/RC2                                                               17                                                                                                                  24                   RC5/SDO

                                 SCK/SCL/RC3                                                                18                                                                                                                  23                   RC4/SDI/SDA

                                            PSP0/RD0                                                        19                                                                                                                  22                   RD3/PSP3

                                            PSP1/RD1                                                        20                                                                                                                  21                   RD2/PSP2

Note:       See  Table  2  for pin allocation table.

FIGURE  4:          40-PIN UQFN

                                                                               RC6/TX/Ck      RC5/SDO       RC4/SDI/SDA   RD3/PSP3      RD2/PSP2                  RD1/PSP1         RD0/PSP0          RC3/SCK/SCL                RC2/CCP1/P1A         RC1/T1OSI/CCP2

                           RX/DT/RC7                                           40             39            38 37 36 35 34                                                                           33 32                                           31

                                                      1

                           RD4/PSP4/RD4               2                                                                                                                                                                                              30              RC0/T1OSO/T13CKI

                           PSP5/P1B/RD5               3                                                                                                                                                                                              29              RA6/OSC2/CLKOUT

                        RD6/PSP6/P1C/RD6              4                                                                                                                                                                                              28              RA7/OSC1/CLKIN

                           PSP7/P1D/RD7               5                                                                                                                                                                                              27              VSS

                                 VSS                  6                                                     PIC18F4XK20                                                                                                                              26              VDD

                                 VDD                  7                                                                                                                                                                                              25              RE2/CS/AN7

                        INT0/FLT0/AN12/RB0            8                                                                                                                                                                                              24              RE1/WR/AN6

                 INT1/AN10/C12IN3-/RB1                9                                                                                                                                                                                              23              RE0/RD/AN5

                           INT2/AN8/RB2               10                                                                                                                                                                                             22              RA5/AN4/SS/HLVDIN/C2OUT

                                                                                                                                                                                                                                                     21              RA4/T0CKI/C1OUT

                                                          11                   12             13            14 15 16 17 18                                                                           19 20

                                                          AN9/C12IN2-/CCP/RB3  KBI0/AN11/RB4  KBI1/PGM/RB5  KBI2/PGC/RB6  KBI3/PGD/RB7  MCLR/VPP/RE3              AN0/C12IN0-/RA0  AN1/C12/IN1-/RA1  AN2/VREF-/CVREF/C2IN+/RA2  AN3/VREF+/C1IN+/RA3

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

            2:   It is recommended that the exposed bottom pad be                                                                       connected                                                    to                         VSS.

DS40001303H-page 4                                                                                                                                                                                                                                                         2010-2015 Microchip  Technology  Inc.
                                                                                                                                                       PIC18F2XK20/4XK20

FIGURE 5:      44-PIN  QFN

                                                                      RC6/TX/CK                RC5/SDO  RC4/SDI/SDA    RD3/PSP3      RD2/PSP2      RD1/PSP1      RD0/PSP0      RC3/SCK/SCL      RC2/CCP1/P1A        RC1/T1OSI/CCP2(1)              RC0/T1OSO/T13CKI

                                                                      44                       43       42             41            40            39            38            37               36                      35                         34

                                       RX/DT/RC7                1                                                                                                                                                                                  33                   RA6/OSC2/CLKOUT

                                       RD4/PSP4/RD4             2                                                                                                                                                                                  32                   RA7/OSC1/CLKIN

                                       PSP5/P1B/RD5             3                                                                                                                                                                                  31                   VSS

                                       PSP6/P1C/RD6             4                                            PIC18F43K20                                                                                                                           30                   VSS

                                       PSP7/P1D/RD7             5                                            PIC18F44K20                                                                                                                           29                   VDD

                                                      VSS       6                                            PIC18F45K20                                                                                                                           28                   VDD

                                                      VDD       7                                            PIC18F46K20                                                                                                                           27                   RE2/CS/AN7

                                                      VDD       8                                                                                                                                                                                  26                   RE1/WR/AN6

                       INT0/FLT0/AN12/RB0                       9                                                                                                                                                                                  25                   RE0/RD/AN5

                       INT1/AN10/C12IN3-/RB1                    10                                                                                                                                                                                 24                   RA5/AN4/SS/HLVDIN/C2OUT

                                       INT2/AN8/RB2             11                                                                                                                                                                                 23                   RA4/T0CKI/C1OUT

                                                                          12                   13       14             15            16            17            18            19                                   20                   21        22

                                                                      AN9/C12IN2-/CCP2(1)/RB3  NC       KBI0/AN11/RB4  KBI1/PGM/RB5  KBI2/PGC/RB6  KBI3/PGD/RB7  MCLR/VPP/RE3  AN0/C12IN0-/RA0  AN1/C12IN1-/RA1         AN2/VREF-/CVREF/C2IN+/RA2  AN3/VREF+/C1IN+/RA3

Note       1:  RB3 is the alternate pin for CCP2 multiplexing.

           2:  The exposed pad should be connected to VSS.

           3:  See Table 2 for pin allocation table.

FIGURE 6:      44-PIN TQFP

                                                           RC6/TX/CK  RC5/SDO  RC4/SDI/SDA     RD3/PSP3      RD2/PSP2      RD1/PSP1      RD0/PSP0      RC3/SCK/SCL      RC2/CCP1/P1A  RC1/T1OSI/CCP2(1)             NC

                                                           44         43       42              41            40            39            38            37               36               35                         34

                       RX/DT/RC7                      1                                                                                                                                                                 33                                              NC

                       PSP4/RD4                       2                                                                                                                                                                 32                                              RC0/T1OSO/T13CKI

                       PSP5/P1B/RD5                   3                                                                                                                                                                 31                                              RA6/OSC2/CLKOUT

                       PSP6/P1C/RD6                   4                        PIC18F43K20                                                                                                                              30                                              RA7/OSC1/CLKIN

                       PSP7/P1D/RD7                   5                        PIC18F44K20                                                                                                                              29                                              VSS

                                       VSS            6                        PIC18F45K20                                                                                                                              28                                              VDD

                                       VDD            7                        PIC18F46K20                                                                                                                              27                                              RE2/CS/AN7

               INT0/FLT0/AN12/RB0                     8                                                                                                                                                                 26                                              RE1/WR/AN6

               INT1/AN10/C12IN3-/RB1                  9                                                                                                                                                                 25                                              RE0/RD/AN5

                       INT2/AN8/RB2                   10                                                                                                                                                                24                                              RA5/AN4/SS/HLVDIN/C2OUT

               AN9/C12IN2-/CCP2(1)/RB3                11                                                                                                                                                                23                                              RA4/T0CKI/C1OUT

                                                           12         13       14              15            16            17            18            19               20               21                         22

                                                           NC         NC       KBI0/AN11/RB4   KBI1/PGM/RB5  KBI2/PGC/RB6  KBI3/PGD/RB7  MCLR/VPP/RE3  AN0/C12IN0-/RA0  AN1/C12IN1-/RA1  AN2/VREF-/CVREF/C2IN+/RA2  AN3/VREF+/C1IN+/RA3

Note  1:       RB3 is the alternate pin for CCP2 multiplexing.

      2:       See Table 2 for pin allocation table.

 2010-2015 Microchip Technology Inc.                                                                                                                                                                                                                                                     DS40001303H-page 5
PIC18F2XK20/4XK20

Pin Allocation Tables

TABLE 1:                            28-PIN ALLOCATION TABLE (PIC18F2XK20)

I/O       28-Pin SPDIP, SOIC, SSOP  28-Pin QFN/UQFN  Analog  Comparator  Reference  ECCP        EUSART  MSSP  Timers     Slave  Interrupts  Pull-up  Basic

RA0       2                         27               AN0     C12IN0-     —          —           —       —     —          —      —           —        —

RA1       3                         28               AN1     C12IN1-     —          —           —       —     —          —      —           —        —

RA2       4                         1                AN2     C2IN+       VREF-/     —           —       —     —          —      —           —        —

                                                                         CVREF

RA3       5                         2                AN3     C1IN+       VREF+      —           —       —     —          —      —           —        —

RA4       6                         3                —       C1OUT       —          —           —       —     T0CKI      —      —           —        —

RA5       7                         4                AN4     C2OUT       HLVDIN     —           —       SS    —          —      —           —        —

RA6       10                        7                —       —           —          —           —       —     —          —      —           —        OSC2/

                                                                                                                                                     CLKOUT

RA7       9                         6                —       —           —          —           —       —     —          —      —           —        OSC1/

                                                                                                                                                     CLKIN

RB0       21                        18               AN12    —           —          FLT0        —       —     —          —      INT0        Yes      —

RB1       22                        19               AN10    C12IN3-     —          P1C         —       —     —          —      INT1        Yes      —

RB2       23                        20               AN8     —           —          P1B         —       —     —          —      INT2        Yes      —

RB3       24                        21               AN9     C12IN2-                CCP2(1)     —       —     —          —      —           Yes      —

RB4       25                        22               AN11    —           —          P1D         —       —     —          —      KBI0        Yes      —

RB5       26                        23               —       —           —          —           —       —     —          —      KBI1        Yes      PGM

RB6       27                        24               —       —           —          —           —       —     —          —      KBI2        Yes      PGC

RB7       28                        25               —       —           —          —           —       —     —          —      KBI3        Yes      PGD

RC0       11                        8                —       —           —          —           —       —     T1OSO/     —      —           —        —

                                                                                                              T13CKI

RC1       12                        9                —       —           —          CCP2(2)     —       —     T1OSI      —      —           —        —

RC2       13                        10               —       —           —          CCP1/       —       —     —          —      —           —        —

                                                                                    P1A

RC3       14                        11               —       —           —          —           —       SCK/  —          —      —           —        —

                                                                                                        SCL

RC4       15                        12               —       —           —          —           —       SDI/  —          —      —           —        —

                                                                                                        SDA

RC5       16                        13               —       —           —          —           —       SDO   —          —      —           —        —

RC6       17                        14               —       —           —          —        TX/CK      —     —          —      —           —        —

RC7       18                        15               —       —           —          —        RX/DT      —     —          —      —           —        —

RE3(3)    1                         26               —       —           —          —           —       —     —          —      —           —        MCLR/

                                                                                                                                                     VPP

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

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

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

Note  1:  CCP2 multiplexed with RB3 when CONFIG3H<0> =                                       0

      2:  CCP2 multiplexed with RC1 when CONFIG3H<0> =                                       1

      3:  Input-only

DS40001303H-page 6                                                                                                      2010-2015 Microchip Technology Inc.
                                                                                                   PIC18F2XK20/4XK20

TABLE 2:                            40/44-PIN ALLOCATION TABLE (PIC18F4XK20)

I/O       40-Pin PDIP  40-Pin UQFN  44-Pin TQFP  44-Pin QFN  Analog    Comp.   Reference  ECCP     EUSART  MSSP  Timers  Slave  Interrupts  Pull-up  Basic

RA0       2            17           19           19          AN0       C12IN0  —          —        —       —     —       —      —           —        —

                                                                       -

RA1       3            18           20           20          AN1       C12IN1  —          —        —       —     —       —      —           —        —

                                                                       -

RA2       4            19           21           21          AN2       C2IN+   VREF-/     —        —       —     —       —      —           —        —

                                                                               CVREF

RA3       5            20           22           22          AN3       C1IN+   VREF+      —        —       —     —       —      —           —        —

RA4       6            21           23           23          —         C1OUT   —          —        —       —     T0CKI   —      —           —        —

RA5       7            22           24           24          AN4       C2OUT   HLVDIN     —        —       SS    —       —      —           —        —

RA6       14           29           31           33          —         —       —          —        —       —     —       —      —           —        OSC2/

                                                                                                                                                     CLKOUT

RA7       13           28           30           32          —         —       —          —        —       —     —       —      —           —        OSC1/

                                                                                                                                                     CLKIN

RB0       33           8            8            9           AN12      —       —          FLT0     —       —     —       —      INT0        Yes      —

RB1       34           9            9            10          AN10      C12IN3  —          —        —       —     —       —      INT1        Yes      —

                                                                       -

RB2       35           10           10           11          AN8       —       —          —        —       —     —       —      INT2        Yes      —

RB3       36           11           11           12          AN9       C12IN2  —          CCP2(1)  —       —     —       —      —           Yes      —

                                                                       -

RB4       37           12           14           14          AN11      —       —          —        —       —     —       —      KBI0        Yes      —

RB5       38           13           15           15          —         —       —          —        —       —     —       —      KBI1        Yes      PGM

RB6       39           14           16           16          —         —       —          —        —       —     —       —      KBI2        Yes      PGC

RB7       40           15           17           17          —         —       —          —        —       —     —       —      KBI3        Yes      PGD

RC0       15           30           32           34          —         —       —          —        —       —     T1OSO/  —      —           —        —

                                                                                                                 T13CKI

RC1       16           31           35           35          —         —       —          CCP2(2)  —       —     T1OSI   —      —           —        —

RC2       17           32           36           36          —         —       —          CCP1/    —       —     —       —      —           —        —

                                                                                          P1A

RC3       18           33           37           37          —         —       —          —        —       SCK/  —       —      —           —        —

                                                                                                           SCL

RC4       23           38           42           42          —         —       —          —        —       SDI/  —       —      —           —        —

                                                                                                           SDA

RC5       24           39           43           43          —         —       —          —        —       SDO   —       —      —           —        —

RC6       25           40           44           44          —         —       —          —        TX/     —     —       —      —           —        —

                                                                                                   CK

RC7       26           1            1            1           —         —       —          —        RX/     —     —       —      —           —        —

                                                                                                   DT

RD0       19           34           38           38          —         —       —          —        —       —     —       PSP0   —           —        —

RD1       20           35           39           39          —         —       —          —        —       —     —       PSP1   —           —        —

RD2       21           36           40           40          —         —       —          —        —       —     —       PSP2   —           —        —

RD3       22           37           41           41          —         —       —          —        —       —     —       PSP3   —           —        —

RD4       27           2            2            2           —         —       —          —        —       —     —       PSP4   —           —        —

RD5       28           3            3            3           —         —       —          P1B      —       —     —       PSP5   —           —        —

RD6       29           4            4            4           —         —       —          P1C      —       —     —       PSP6   —           —        —

Note  1:  CCP2 multiplexed                                   with RB3  when CONFIG3H<0> = 0

      2:  CCP2 multiplexed                                   with RC1  when CONFIG3H<0> = 1

      3:  Input-only.

 2010-2015 Microchip Technology Inc.                                                                                                       DS40001303H-page  7
PIC18F2XK20/4XK20

TABLE 2:                            40/44-PIN ALLOCATION TABLE (PIC18F4XK20)                                 (CONTINUED)

I/O       40-Pin PDIP  40-Pin UQFN  44-Pin TQFP  44-Pin QFN  Analog    Comp.  Reference  ECCP  EUSART  MSSP  Timers  Slave  Interrupts  Pull-up  Basic

RD7       30           5            5            5           —         —      —          P1D   —       —     —       PSP7   —           —        —

RE0       8            23           25           25          AN5       —      —          —     —       —     —       RD     —           —        —

RE1       9            24           26           26          AN6       —      —          —     —       —     —       WR     —           —        —

RE2       10           25           27           27          AN7       —      —          —     —       —     —       CS     —           —        —

RE3(3)    1            16           18           18          —         —      —          —     —       —     —       —      —           —        MCLR/VPP

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

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

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

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

—         –            —            NC           8           —         —      —          —     —       —     —       —      —           —        VDD

—         –            —            NC           29          —         —      —          —     —       —     —       —      —           —        VDD

—         –-           —            NC           31          —         —      —          —     —       —     —       —      —           —        VSS

Note  1:  CCP2 multiplexed                                   with RB3  when CONFIG3H<0> = 0

      2:  CCP2 multiplexed                                   with RC1  when CONFIG3H<0> = 1

      3:  Input-only.

DS40001303H-page 8                                                                                                    2010-2015 Microchip       Technology Inc.
                                       PIC18F2XK20/4XK20

Table of Contents

1.0   Device Overview .......................................................................................................................................................................          11

2.0   Oscillator Module (With Fail-Safe Clock Monitor)......................................................................................................................                           26

3.0   Power-Managed Modes ............................................................................................................................................................                 41

4.0   Reset .........................................................................................................................................................................................  48

5.0   Memory Organization ................................................................................................................................................................             61

6.0   Flash Program Memory.............................................................................................................................................................                84

7.0   Data EEPROM Memory ............................................................................................................................................................                  93

8.0   8 x 8 Hardware Multiplier...........................................................................................................................................................             98

9.0   Interrupts .................................................................................................................................................................................     100

10.0  I/O Ports ..................................................................................................................................................................................     113

11.0  Capture/Compare/PWM (CCP) Modules ................................................................................................................................                               134

12.0  Timer0 Module ........................................................................................................................................................................           145

13.0  Timer1 Module ........................................................................................................................................................................           148

14.0  Timer2 Module ........................................................................................................................................................................           155

15.0  Timer3 Module ........................................................................................................................................................................           157

16.0  Enhanced Capture/Compare/PWM (ECCP) Module...............................................................................................................                                        161

17.0  Master Synchronous Serial Port (MSSP) Module ...................................................................................................................                                 179

18.0  Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ..............................................................                                                         222

19.0  Analog-to-Digital Converter (ADC) Module .............................................................................................................................                           249

20.0  Comparator Module.................................................................................................................................................................               262

21.0  Voltage References.................................................................................................................................................................              272

22.0  High/Low-Voltage Detect (HLVD)............................................................................................................................................                       276

23.0  Special Features of the CPU...................................................................................................................................................                   281

24.0  Instruction Set Summary .........................................................................................................................................................                296

25.0  Development Support..............................................................................................................................................................                346

26.0  Electrical Characteristics .........................................................................................................................................................             350

27.0  DC and AC Characteristics Graphs and Tables......................................................................................................................                                387

28.0  Packaging Information.............................................................................................................................................................               410

Appendix A: Revision History............................................................................................................................................................               435

Appendix B: Device Differences .......................................................................................................................................................                 436

The Microchip Web Site ....................................................................................................................................................................            437

Customer Change Notification Service .............................................................................................................................................                     437

Customer Support .............................................................................................................................................................................         437

Product Identification System ...........................................................................................................................................................              438

 2010-2015 Microchip Technology Inc.  DS40001303H-page 9
PIC18F2XK20/4XK20

                              TO OUR VALUED CUSTOMERS

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

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

enhanced as new volumes and updates are introduced.

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

E-mail at docerrors@microchip.com. We welcome your feedback.

Most Current Data Sheet

To obtain the most up-to-date version of this data sheet, please register at our Worldwide Web site at:

   http://www.microchip.com

You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page.

The last character of the literature number is the version number, (e.g., DS30000000A is version A of document DS30000000).

Errata

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

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

of silicon and revision of document to which it applies.

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

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

•  Your local Microchip sales office (see last page)

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

using.

Customer Notification System

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

DS40001303H-page 10                                            2010-2015 Microchip Technology Inc.
                                                                  PIC18F2XK20/4XK20

1.0     DEVICE OVERVIEW                                           1.1.2       MULTIPLE OSCILLATOR OPTIONS

This document contains device specific information for                        AND FEATURES

the following devices:                                            All of the devices in the PIC18F2XK20/4XK20 family

                                                                  offer ten different oscillator options, allowing users a

   •  PIC18F23K20               •     PIC18F43K20                 wide   range   of  choices  in     developing  application

   •  PIC18F24K20               •     PIC18F44K20                 hardware. These include:

   •  PIC18F25K20               •     PIC18F45K20                 •  Four Crystal modes, using crystals or ceramic

   •  PIC18F26K20               •     PIC18F46K20                    resonators

This   family      offers  the  advantages     of  all   PIC18    •  Two External Clock modes, offering the option of

microcontrollers        –    namely,  high     computational         using two pins (oscillator input and a divide-by-4

performance at an economical price – with the addition               clock output) or one pin (oscillator input, with the

of high-endurance, Flash program memory. On top of                   second pin reassigned as general I/O)

these   features,       the  PIC18F2XK20/4XK20            family  •  Two External RC Oscillator modes with the same

introduces     design      enhancements  that  make       these      pin options as the External Clock modes

microcontrollers        a    logical  choice       for    many    •  An internal oscillator block which contains a

high-performance, power sensitive applications.                      16 MHz HFINTOSC oscillator and a 31 kHz

                                                                     LFINTOSC oscillator which together provide 8

1.1     New Core Features                                            user selectable clock frequencies, from 31 kHz to

                                                                     16 MHz. This option frees the two oscillator pins

1.1.1          XLP TECHNOLOGY                                        for use as additional general purpose I/O.

All of the devices in the PIC18F2XK20/4XK20 family                •  A Phase Lock Loop (PLL) frequency multiplier,

incorporate a range of features that can significantly               available to both the high-speed crystal and inter-

reduce  power      consumption        during  operation.    Key      nal oscillator modes, which allows clock speeds of

items include:                                                       up to 64 MHz. Used with the internal oscillator, the

•     Alternate Run Modes: By clocking the controller                PLL gives users a complete selection of clock

      from the Timer1 source or the internal oscillator              speeds, from 31 kHz to 64 MHz – all without using

      block, power consumption during code execution                 an external crystal or clock circuit.

      can be reduced by as much as 90%.                           Besides its availability as a clock source, the internal

•     Multiple Idle Modes: The controller can also run            oscillator block provides a stable reference source that

      with its CPU core disabled but the peripherals still        gives  the     family  additional  features    for      robust

      active. In these states, power consumption can be           operation:

      reduced even further, to as little as 4% of normal          •  Fail-Safe Clock Monitor: This option constantly

      operation requirements.                                        monitors the main clock source against a

•     On-the-fly Mode Switching: The power-                          reference signal provided by the LFINTOSC. If a

      managed modes are invoked by user code during                  clock failure occurs, the controller is switched to

      operation, allowing the user to incorporate                    the internal oscillator block, allowing for continued

      power-saving ideas into their application’s                    operation or a safe application shutdown.

      software design.                                            •  Two-Speed Start-up: This option allows the

•     Low Consumption in Key Modules: The                            internal oscillator to serve as the clock source

      power requirements for both Timer1 and the                     from Power-on Reset, or wake-up from Sleep

      Watchdog Timer are minimized. See                              mode, until the primary clock source is available.

      Section 26.0 “Electrical Specifications”

      for values.

 2010-2015 Microchip Technology Inc.                                                                DS40001303H-page 11
PIC18F2XK20/4XK20

1.2        Other Special Features                         1.3        Details on Individual Family

•  Memory Endurance: The Flash cells for both                        Members

   program memory and data EEPROM are rated to            Devices     in    the   PIC18F2XK20/4XK20         family  are

   last for many thousands of erase/write cycles – up to  available   in  28-pin    and  40/44-pin  packages.       Block

   10K for program memory and 100K for EEPROM.            diagrams for the two groups are shown in Figure 1-1

   Data retention without refresh is conservatively       and Figure 1-2.

   estimated to be greater than 40 years.                 The devices are differentiated from each other in five

•  Self-programmability: These devices can write          ways:

   to their own program memory spaces under

   internal software control. By using a bootloader       1.   Flash      program        memory     (8 Kbytes       for

   routine located in the protected Boot Block at the          PIC18F23K20/43K20         devices,       16 Kbytes   for

   top of program memory, it becomes possible to               PIC18F24K20/44K20         devices,       32 Kbytes   for

   create an application that can update itself in the         PIC18F25K20/45K20         AND        64 Kbytes       for

   field.                                                      PIC18F26K20/46K20).

•  Extended Instruction Set: The PIC18F2XK20/             2.   A/D channels (11 for 28-pin devices, 14 for

   4XK20 family introduces an optional extension to            40/44-pin devices).

   the PIC18 instruction set, which adds eight new        3.   I/O   ports  (three  bidirectional   ports   on  28-pin

   instructions and an Indexed Addressing mode.                devices,     five  bidirectional  ports  on  40/44-pin

   This extension, enabled as a device configuration           devices).

   option, has been specifically designed to optimize     4.   Parallel Slave Port (present only on 40/44-pin

   re-entrant application code originally developed in         devices).

   high-level languages, such as C.                       All other features for devices in this family are identical.

•  Enhanced CCP module: In PWM mode, this                 These are summarized in Table 1-1.

   module provides 1, 2 or 4 modulated outputs for        The pinouts for all devices are listed in the pin summary

   controlling half-bridge and full-bridge drivers.       tables: Table     and Table , and I/O description tables:

   Other features include:                                Table 1-2 and Table 1-3.

   -  Auto-Shutdown, for disabling PWM outputs

      on interrupt or other select conditions

   -  Auto-Restart, to reactivate outputs once the

      condition has cleared

   -  Output steering to selectively enable one or

      more of four outputs to provide the PWM

      signal.

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

•  Extended Watchdog Timer (WDT): This

   enhanced version incorporates a 16-bit

   postscaler, allowing an extended time-out range

   that is stable across operating voltage and

   temperature. See Section 26.0 “Electrical

   Specifications” for time-out periods.

DS40001303H-page 12                                                                2010-2015 Microchip Technology Inc.
 2010-2015 Microchip Technology Inc.  TABLE 1-1:                DEVICE FEATURES

                                               Features          PIC18F23K20            PIC18F24K20            PIC18F25K20            PIC18F26K20             PIC18F43K20            PIC18F44K20            PIC18F45K20            PIC18F46K20

                                       Operating Frequency(2)    DC – 64 MHz            DC – 64 MHz            DC – 64 MHz            DC – 64 MHz             DC – 64 MHz            DC – 64 MHz            DC – 64 MHz            DC – 64 MHz

                                       Program Memory (Bytes)    8192                   16384                  32768                  65536                   8192                   16384                  32768                  65536

                                       Program Memory            4096                   8192                   16384                  32768                   4096                   8192                   16384                  32768

                                       (Instructions)

                                       Data Memory (Bytes)       512                    768                    1536                   3936                    512                    768                    1536                   3936

                                       Data EEPROM Memory        256                    256                    256                    1024                    256                    256                    256                    1024

                                       (Bytes)

                                       Interrupt Sources         19                     19                     19                     19                      20                     20                     20                     20

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

                                       Timers                    4                      4                      44                                             44                                            44

                                       Capture/Compare/PWM       1                      1                      1                      1                       1                      1                      1                      1

                                       Modules

                                       Enhanced Capture/         1                      1                      11                                             11                                            11

                                       Compare/PWM Modules

                                       Serial Communications     MSSP, Enhanced         MSSP, Enhanced         MSSP, Enhanced         MSSP, Enhanced          MSSP, Enhanced         MSSP, Enhanced         MSSP, Enhanced         MSSP, Enhanced

                                                                 EUSART                 EUSART                 EUSART                 EUSART                  EUSART                 EUSART                 EUSART                 EUSART

                                       Parallel Communica-       No                     No                     No                     No                      Yes                    Yes                    Yes                    Yes

                                       tions (PSP)

                                       10-bit Analog-to-Digital  1 internal plus 10     1 internal plus 10     1 internal plus 10     1 internal plus 10      1 internal plus 13     1 internal plus 13     1 internal plus 13     1 internal plus 13

                                       Module                    Input Channels         Input Channels         Input Channels         Input Channels          Input Channels         Input Channels         Input Channels         Input Channels

                                       Resets (and Delays)       POR, BOR, RESET        POR, BOR, RESET        POR, BOR, RESET        POR, BOR, RESET         POR, BOR, RESET        POR, BOR, RESET        POR, BOR, RESET        POR, BOR, RESET

                                                                 Instruction, Stack     Instruction, Stack     Instruction, Stack     Instruction, Stack      Instruction, Stack     Instruction, Stack     Instruction, Stack     Instruction, Stack   PIC18F2XK20/4XK20

                                                                 Full, Stack Underflow  Full, Stack Underflow  Full, Stack Underflow  Full, Stack Underflow   Full, Stack Underflow  Full, Stack Underflow  Full, Stack Underflow  Full, Stack

                                                                 (PWRT, OST),           (PWRT, OST), MCLR      (PWRT, OST),           (PWRT, OST), MCLR       (PWRT, OST),           (PWRT, OST),           (PWRT, OST),           Underflow (PWRT,

                                                                 MCLR (optional),       (optional), WDT        MCLR (optional),       (optional), WDT         MCLR (optional),       MCLR (optional),       MCLR (optional),       OST), MCLR

                                                                 WDT                                           WDT                                            WDT                    WDT                    WDT                    (optional), WDT

                                       Programmable High/        Yes                    Yes                    Yes                    Yes                     Yes                    Yes                    Yes                    Yes

                                       Low-Voltage Detect

                                       Programmable Brown-       Yes                    Yes                    Yes                    Yes                     Yes                    Yes                    Yes                    Yes

                                       out Reset

                                       Instruction Set           75 Instructions; 83    75 Instructions; 83    75 Instructions; 83    75 Instructions; 83     75 Instructions; 83    75 Instructions; 83    75 Instructions; 83    75 Instructions; 83

                                                                 with Extended          with Extended          with Extended          with Extended           with Extended          with Extended          with Extended          with Extended

                                                                 Instruction Set        Instruction Set        Instruction Set        Instruction Set         Instruction Set        Instruction Set        Instruction Set        Instruction Set

                                                                 enabled                enabled                enabled                enabled                 enabled                enabled                enabled                enabled

                                       Packages                  28-pin PDIP            28-pin PDIP            28-pin PDIP            28-pin PDIP             40-pin PDIP            40-pin PDIP            40-pin PDIP            40-pin PDIP

DS40001303H-page 13                                              28-pin SOIC            28-pin SOIC            28-pin SOIC            28-pin SOIC             44-pin QFN             44-pin QFN             44-pin QFN             44-pin QFN

                                                                 28-pin QFN             28-pin QFN             28-pin QFN             28-pin QFN              44-pin TQFP            44-pin TQFP            44-pin TQFP            44-pin TQFP

                                                                 28-pin SSOP            28-pin SSOP            28-pin SSOP            28-pin SSOP             40-pin UQFN            40-pin UQFN            40-pin UQFN            40-pin UQFN

                                                                 28-pin UQFN

                                       Note       1:    PORTE contains the single RE3 read-only bit. The LATE and TRISE registers are not implemented.

                                                  2:    Frequency range shown applies to industrial range devices only. Maximum frequency for extended range  devices is 48 MHz.
PIC18F2XK20/4XK20

FIGURE 1-1:                     PIC18F2XK20 (28-PIN) BLOCK DIAGRAM

                                                        Data Bus<8>

       Table Pointer<21>

                                                     8   8                       Data Latch                       PORTA

          inc/dec logic                                                                                                  RA0/AN0

                                                                                 Data Memory                             RA1/AN1

           21                   PCLATU PCLATH                                                                            RA2/AN2/VREF-/CVREF

                            20                                                   Address Latch                           RA3/AN3/VREF+

                                        PCU     PCH     PCL                                                              RA4/T0CKI/C1OUT

                                        Program Counter                                                                  RA5/AN4/SS/HLVDIN/C2OUT

                                                                                          12                             OSC2/CLKOUT(3)/RA6

                                                                              Data Address<12>                           OSC1/CLKIN(3)/RA7

                                        31-Level Stack

       Address Latch                                                     4            12        4

       Program Memory                        STKPTR                      BSR     FSR0     Access

       (8/16/32/64 Kbytes)                                                       FSR1         Bank

           Data Latch                                                            FSR2           12

                                                                                                                  PORTB  RB0/INT0/FLT0/AN12

                            8                                                    inc/dec                                 RB1/INT1/AN10/C12IN3-

                                Table Latch                                      logic                                   RB2/INT2/AN8

                                                                                                                         RB3/AN9/CCP2(1)/C12IN2-

                                                                                 Address                                 RB4/KBI0/AN11

                                ROM Latch                                        Decode                                  RB5/KBI1/PGM

      Instruction Bus <16>                                                                                               RB6/KBI2/PGC

                                                                                                                         RB7/KBI3/PGD

                                        IR

                                                                                                    8

                                Instruction             State machine

                                Decode and              control signals

                                       Control                                   PRODH PRODL

                                                                                                                  PORTC

                                                                                    8 x 8 Multiply                       RC0/T1OSO/T13CKI

                                                                         3                                8              RC1/T1OSI/CCP2(1)

                                                                                                                         RC2/CCP1

                                                                         BITOP        W                8                 RC3/SCK/SCL

                                                                              8           8                              RC4/SDI/SDA

OSC1(3)                     Internal                                                                                     RC5/SDO

                            Oscillator               Power-up                    8                     8                 RC6/TX/CK

                                Block                   Timer                                                            RC7/RX/DT

OSC2(3)                                              Oscillator                     ALU<8>

                            LFINTOSC            Start-up Timer

T1OSI                       Oscillator               Power-on                             8

                            16 MHz                      Reset

T1OSO                       Oscillator               Watchdog

                                                        Timer

                                                     Brown-out           Precision        FVR

MCLR(2)                  Single-Supply                  Reset            Band Gap                                 PORTE

                         Programming                                     Reference

                            In-Circuit               Fail-Safe

VDD, VSS                    Debugger            Clock Monitor                                                            MCLR/VPP/RE3(2)

           BOR                  Data

           HLVD                EEPROM           Timer0           Timer1       Timer2            Timer3

FVR                                                                                             ADC          FVR

CVREF  Comparator               ECCP1           CCP2             MSSP         EUSART            10-bit

Note   1:  CCP2 is multiplexed with RC1 when Configuration bit CCP2MX is set, or RB3 when CCP2MX is not set.

       2:  RE3 is only available when MCLR functionality is disabled.

       3:  OSC1/CLKIN and OSC2/CLKOUT are only available in select oscillator modes and when these pins are not being used as digital I/O.

           Refer to Section 2.0 “Oscillator Module (With Fail-Safe Clock Monitor)” for additional information.

DS40001303H-page 14                                                                                                2010-2015 Microchip Technology Inc.
                                                                                          PIC18F2XK20/4XK20

FIGURE 1-2:                     PIC18F4XK20 (40/44-PIN) BLOCK DIAGRAM

                                                        Data Bus<8>

       Table Pointer<21>                                                                                            PORTA

                                                                                                                           RA0/AN0

                                                     8   8                       Data Latch                                RA1/AN1

          inc/dec logic                                                                                                    RA2/AN2/VREF-/CVREF

                                                                                 Data Memory                               RA3/AN3/VREF+

           21                   PCLATU PCLATH                                                                              RA4/T0CKI/C1OUT

                            20                                                   Address Latch                             RA5/AN4/SS/HLVDIN/C2OUT

                                        PCU     PCH     PCL                                                                OSC2/CLKOUT(3)/RA6

                                        Program Counter                                      12                            OSC1/CLKIN(3)/RA7

                                                                              Data Address<12>

                                                                                                                    PORTB

                                        31-Level Stack                                                                     RB0/INT0/FLT0/AN12

       Address Latch                                                     4            12         4                         RB1/INT1/AN10/C12IN3-

       Program Memory                        STKPTR                      BSR     FSR0        Access                        RB2/INT2/AN8

       (8/16/32/64 Kbytes)                                                       FSR1        Bank                          RB3/AN9/CCP2(1)/C12IN2-

          Data Latch                                                             FSR2               12                     RB4/KBI0/AN11

                                                                                                                           RB5/KBI1/PGM

                                                                                 inc/dec                                   RB6/KBI2/PGC

                            8                                                    logic                                     RB7/KBI3/PGD

                                Table Latch

                                ROM Latch                                        Address                            PORTC

       Instruction Bus <16>                                                      Decode                                    RC0/T1OSO/T13CKI

                                                                                                                           RC1/T1OSI/CCP2(1)

                                        IR                                                                                 RC2/CCP1/P1A

                                                                                                                           RC3/SCK/SCL

                                                                                                                           RC4/SDI/SDA

                                                                                                     8                     RC5/SDO

                                Instruction             State machine                                                      RC6/TX/CK

                                Decode and              control signals                                                    RC7/RX/DT

                                       Control                                   PRODH PRODL

                                                                                                                    PORTD

                                                                         3          8 x 8 Multiply                         RD0/PSP0

                                                                                                            8              RD1/PSP1

                                                                         BITOP            W                                RD2/PSP2

                                                                              8              8          8                  RD3/PSP3

                                                                                                                           RD4/PSP4

OSC1(3)                     Internal                 Power-up                                                              RD5/PSP5/P1B

                            Oscillator                  Timer                    8                       8                 RD6/PSP6/P1C

OSC2(3)                         Block                                                                                      RD7/PSP7/P1D

                                                     Oscillator                  ALU<8>

                            LFINTOSC            Start-up Timer

T1OSI                       Oscillator               Power-on                                8

                            16 MHz                      Reset

T1OSO                       Oscillator               Watchdog                                                       PORTE

                                                        Timer                                                              RE0/RD/AN5

                                                     Brown-out           Precision        FVR                              RE1/WR/AN6

MCLR(2)                  Single-Supply                  Reset            Band Gap

                         Programming                                     Reference                                         RE2/CS/AN7

                            In-Circuit               Fail-Safe                                                             MCLR/VPP/RE3(2)

VDD, VSS                    Debugger            Clock Monitor

           BOR                  Data

           HLVD             EEPROM              Timer0           Timer1       Timer2             Timer3

FVR                                                                                                            FVR

CVREF  Comparator               ECCP1           CCP2             MSSP    EUSART                  ADC                PSP

                                                                                                 10-bit

Note   1:  CCP2 is multiplexed with RC1 when Configuration bit CCP2MX is set, or RB3 when CCP2MX is not set.

       2:  RE3 is only available when MCLR functionality is disabled.

       3:  OSC1/CLKIN and OSC2/CLKOUT are only available in select oscillator modes and when these pins are not being used as digital I/O.

           Refer to Section 2.0 “Oscillator Module (With Fail-Safe Clock Monitor)” for additional information.

 2010-2015 Microchip Technology Inc.                                                                                      DS40001303H-page 15
PIC18F2XK20/4XK20

TABLE 1-2:       PIC18F2XK20 PINOUT I/O DESCRIPTIONS

                         Pin Number    Pin   Buffer

      Pin Name           PDIP,  QFN    Type  Type                              Description

                         SOIC

MCLR/VPP/RE3             1      26                       Master Clear (input) or programming voltage (input)

MCLR                                   I     ST          Active-low Master Clear (device Reset) input

VPP                                    P                 Programming voltage input

RE3                                    I     ST          Digital input

OSC1/CLKIN/RA7           9      6                        Oscillator crystal or external clock input

OSC1                                   I     ST          Oscillator crystal input or external clock source input

                                                         ST buffer when configured in RC mode; CMOS otherwise

CLKIN                                  I     CMOS        External clock source input. Always associated with pin

                                                         function OSC1. (See related OSC1/CLKIN, OSC2/CLKOUT

                                                         pins)

RA7                                    I/O   TTL         General purpose I/O pin

OSC2/CLKOUT/RA6          10     7                        Oscillator crystal or clock output

OSC2                                   O     —           Oscillator crystal output. Connects to crystal or

                                                         resonator in Crystal Oscillator mode

CLKOUT                                 O     —           In RC mode, OSC2 pin outputs CLKOUT which has 1/4 the

                                                         frequency of OSC1 and denotes the instruction cycle rate

RA6                                    I/O   TTL         General purpose I/O pin

Legend:   TTL =  TTL compatible input                    CMOS =         CMOS compatible input or output

          ST  =  Schmitt Trigger input with CMOS levels  I      =       Input

          O   =  Output                                  P      =       Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

DS40001303H-page 16                                                                 2010-2015 Microchip Technology Inc.
                                                             PIC18F2XK20/4XK20

TABLE 1-2:        PIC18F2XK20 PINOUT I/O DESCRIPTIONS (CONTINUED)

                          Pin Number        Pin   Buffer

       Pin Name           PDIP,        QFN  Type  Type                            Description

                          SOIC

                                                          PORTA is a bidirectional I/O port.

RA0/AN0/C12IN0-           2            27

RA0                                         I/O   TTL     Digital I/O

AN0                                         I     Analog  Analog input 0, ADC channel 0

C12IN0-                                     I     Analog  Comparators C1 and C2 inverting input

RA1/AN1/C12IN1-           3            28

RA1                                         I/O   TTL     Digital I/O

AN1                                         I     Analog  ADC input 1, ADC channel 1

C12IN1-                                     I     Analog  Comparators C1 and C2 inverting input

RA2/AN2/VREF-/CVREF/      4            1

C2IN+

RA2                                         I/O   TTL     Digital I/O

AN2                                         I     Analog  Analog input 2, ADC channel 2

VREF-                                       I     Analog  A/D reference voltage (low) input

CVREF                                       O     Analog  Comparator reference voltage output

C2IN+                                       I     Analog  Comparator C2 non-inverting input

RA3/AN3/VREF+/C1IN+       5            2

RA3                                         I/O   TTL     Digital I/O

AN3                                         I     Analog  Analog input 3, ADC channel 3

VREF+                                       I     Analog  A/D reference voltage (high) input

C1IN+                                       I     Analog  Comparator C1 non-inverting input

RA4/T0CKI/C1OUT           6            3

RA4                                         I/O   ST      Digital I/O

T0CKI                                       I     ST      Timer0 external clock input

C1OUT                                       O     CMOS    Comparator C1 output

RA5/AN4/SS/HLVDIN/        7            4

C2OUT

RA5                                         I/O   TTL     Digital I/O

AN4                                         I     Analog  Analog input 4, ADC channel 4

SS                                          I     TTL     SPI slave select input

HLVDIN                                      I     Analog  High/Low-Voltage Detect input

C2OUT                                       O     CMOS    Comparator C2 output

RA6                                                       See the OSC2/CLKOUT/RA6 pin

RA7                                                       See the OSC1/CLKIN/RA7 pin

Legend:    TTL =  TTL compatible input                    CMOS =          CMOS compatible input or  output

           ST  =  Schmitt Trigger input with CMOS levels  I            =  Input

           O   =  Output                                  P            =  Power

Note   1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

       2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

 2010-2015 Microchip Technology Inc.                                                            DS40001303H-page 17
PIC18F2XK20/4XK20

TABLE 1-2:       PIC18F2XK20 PINOUT I/O DESCRIPTIONS (CONTINUED)

                         Pin Number    Pin   Buffer

      Pin Name           PDIP,  QFN    Type  Type                               Description

                         SOIC

                                                         PORTB is a bidirectional I/O port. PORTB can be software

                                                         programmed for internal weak pull-up on each input.

RB0/INT0/FLT0/AN12       21     18

RB0                                    I/O   TTL         Digital I/O

INT0                                   I     ST          External interrupt 0

FLT0                                   I     ST          PWM Fault input for CCP1

AN12                                   I     Analog      Analog input 12, ADC channel 12

RB1/INT1/AN10/C12IN3-    22     19

/P1C

RB1                                    I/O   TTL         Digital I/O

INT1                                   I     ST          External interrupt 1

AN10                                   I     Analog      Analog input 10, ADC channel 10

C12IN3-                                I     Analog      Comparators C1 and C2 inverting input

P1C                                    O     CMOS        Enhanced CCP1 PWM output

RB2/INT2/AN8/P1B         23     20

RB2                                    I/O   TTL         Digital I/O

INT2                                   I     ST          External interrupt 2

AN8                                    I     Analog      Analog input 8, ADC channel 8

P1B                                    O     CMOS        Enhanced CCP1 PWM output

RB3/AN9/C12IN2-/CCP2     24     21

RB3                                    I/O   TTL         Digital I/O

AN9                                    I     Analog      Analog input 9, ADC channel 9

C12IN2-                                I     Analog      Comparators C1 and C2 inverting input

CCP2(2)                                I/O   ST          Capture 2 input/Compare 2 output/PWM 2 output

RB4/KBI0/AN11/P1D        25     22

RB4                                    I/O   TTL         Digital I/O

KBI0                                   I     TTL         Interrupt-on-change pin

AN11                                   I     Analog      Analog input 11, ADC channel 11

P1D                                    O     CMOS        Enhanced CCP1 PWM output

RB5/KBI1/PGM             26     23

RB5                                    I/O   TTL         Digital I/O

KBI1                                   I     TTL         Interrupt-on-change pin

PGM                                    I/O   ST          Low-Voltage ICSP™ Programming enable pin

RB6/KBI2/PGC             27     24

RB6                                    I/O   TTL         Digital I/O

KBI2                                   I     TTL         Interrupt-on-change pin

PGC                                    I/O   ST          In-Circuit Debugger and ICSP™ programming clock pin

RB7/KBI3/PGD             28     25

RB7                                    I/O   TTL         Digital I/O

KBI3                                   I     TTL         Interrupt-on-change pin

PGD                                    I/O   ST          In-Circuit Debugger and ICSP™ programming data pin

Legend: TTL =    TTL compatible input                    CMOS =          CMOS compatible input or output

          ST  =  Schmitt Trigger input with CMOS levels  I            =  Input

          O   =  Output                                  P            =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

DS40001303H-page 18                                                                 2010-2015 Microchip Technology Inc.
                                                               PIC18F2XK20/4XK20

TABLE 1-2:       PIC18F2XK20 PINOUT I/O DESCRIPTIONS (CONTINUED)

                         Pin Number           Pin   Buffer

      Pin Name           PDIP,         QFN    Type  Type                             Description

                         SOIC

                                                            PORTC is a bidirectional I/O port.

RC0/T1OSO/T13CKI         11            8

RC0                                           I/O   ST      Digital I/O

T1OSO                                         O     —       Timer1 oscillator output

T13CKI                                        I     ST      Timer1/Timer3 external clock input

RC1/T1OSI/CCP2           12            9

RC1                                           I/O   ST      Digital I/O

T1OSI                                         I     Analog  Timer1 oscillator input

CCP2(1)                                       I/O   ST      Capture 2 input/Compare 2 output/PWM 2 output

RC2/CCP1/P1A             13            10

RC2                                           I/O   ST      Digital I/O

CCP1                                          I/O   ST      Capture 1 input/Compare 1 output

P1A                                           O     CMOS    Enhanced CCP1 PWM output

RC3/SCK/SCL              14            11

RC3                                           I/O   ST      Digital I/O

SCK                                           I/O   ST      Synchronous serial clock input/output for SPI mode

SCL                                           I/O   ST      Synchronous serial clock input/output for I2C™ mode

RC4/SDI/SDA              15            12

RC4                                           I/O   ST      Digital I/O

SDI                                           I     ST      SPI data in

SDA                                           I/O   ST      I2C™ data I/O

RC5/SDO                  16            13

RC5                                           I/O   ST      Digital I/O

SDO                                           O     —       SPI data out

RC6/TX/CK                17            14

RC6                                           I/O   ST      Digital I/O

TX                                            O     —       EUSART asynchronous transmit

CK                                            I/O   ST      EUSART synchronous clock (see related RX/DT)

RC7/RX/DT                18            15

RC7                                           I/O   ST      Digital I/O

RX                                            I     ST      EUSART asynchronous receive

DT                                            I/O   ST      EUSART synchronous data (see related TX/CK)

RE3                      —             —      —     —       See MCLR/VPP/RE3 pin

VSS                      8, 19         5, 16  P     —       Ground reference for logic and I/O pins

VDD                      20            17     P     —       Positive supply for logic and I/O pins

Legend:   TTL =  TTL compatible input                       CMOS =          CMOS compatible input or output

          ST  =  Schmitt Trigger input with CMOS levels     I            =  Input

          O   =  Output                                     P            =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

 2010-2015 Microchip Technology Inc.                                                                DS40001303H-page 19
PIC18F2XK20/4XK20

TABLE 1-3:       PIC18F4XK20 PINOUT I/O DESCRIPTIONS

      Pin Name               Pin Number             Pin     Buffer                    Description

                     PDIP    QFN        TQFP  UQFN  Type    Type

MCLR/VPP/RE3             1   18         18    16                    Master Clear (input) or programming voltage

MCLR                                                I          ST   (input)

VPP                                                 P                  Active-low Master Clear (device Reset) input

RE3                                                 I          ST      Programming voltage input

                                                                       Digital input

OSC1/CLKIN/RA7           13  32         30    28                    Oscillator crystal or external clock input

OSC1                                                I          ST      Oscillator crystal input or external clock source

                                                                       input

                                                                       ST buffer when configured in RC mode;

CLKIN                                               I       CMOS       analog otherwise

                                                                       External clock source input. Always associated

                                                                    with

RA7                                                 I/O     TTL        pin function OSC1 (See related OSC1/CLKIN,

                                                                       OSC2/CLKOUT pins)

                                                                       General purpose I/O pin

OSC2/CLKOUT/             14  33         31    29                    Oscillator crystal or clock output

RA6                                                 O          —       Oscillator crystal output. Connects to crystal

OSC2                                                                   or resonator in Crystal Oscillator mode

                                                    O          —       In RC mode, OSC2 pin outputs CLKOUT which

CLKOUT                                                                 has 1/4 the frequency of OSC1 and denotes

                                                                       the instruction cycle rate

                                                    I/O     TTL        General purpose I/O pin

RA6

Legend:   TTL =  TTL compatible input                       CMOS =     CMOS compatible input or output

          ST  =  Schmitt Trigger input  with  CMOS  levels  I       =  Input

          O   =  Output                                     P       =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

DS40001303H-page 20                                                                 2010-2015 Microchip Technology Inc.
                                                                  PIC18F2XK20/4XK20

TABLE 1-3:        PIC18F4XK20 PINOUT I/O DESCRIPTIONS (CONTINUED)

      Pin Name               Pin Number             Pin        Buffer                  Description

                  PDIP       QFN        TQFP  UQFN  Type       Type

                                                                       PORTA is a bidirectional I/O port.

RA0/AN0/C12IN0-           2  19         19

RA0                                                       I/O  TTL        Digital I/O

AN0                                                       I    Analog     Analog input 0, ADC channel 0

C12IN0-                                                   I    Analog     Comparator C1 and C2 inverting input

RA1/AN1/C12IN0-           3  20         20

RA1                                                       I/O  TTL        Digital I/O

AN1                                                       I    Analog     Analog input 1, ADC channel 1

C12IN0-                                                   I    Analog     Comparator C1 and C2 inverting input

RA2/AN2/VREF-/            4  21         21

CVREF/C2IN+

RA2                                                       I/O  TTL        Digital I/O

AN2                                                       I    Analog     Analog input 2, ADC channel 2

VREF-                                                     I    Analog     A/D reference voltage (low) input

CVREF                                                     O    Analog     Comparator reference voltage output

C2IN+                                                     I    Analog     Comparator C2 non-inverting input

RA3/AN3/VREF+/            5  22         22

C1IN+

RA3                                                       I/O  TTL        Digital I/O

AN3                                                       I    Analog     Analog input 3, ADC channel 3

VREF+                                                     I    Analog     A/D reference voltage (high) input

C1IN+                                                     I    Analog     Comparator C1 non-inverting input

RA4/T0CKI/C1OUT           6  23         23

RA4                                                       I/O     ST      Digital I/O

T0CKI                                                     I       ST      Timer0 external clock input

C1OUT                                                     O    CMOS       Comparator C1 output

RA5/AN4/SS/HLV-           7  24         24

DIN/C2OUT

RA5                                                       I/O  TTL        Digital I/O

AN4                                                       I    Analog     Analog input 4, ADC channel 4

SS                                                        I    TTL        SPI slave select input

HLVDIN                                                    I    Analog     High/Low-Voltage Detect input

C2OUT                                                     O    CMOS       Comparator C2 output

RA6                                                                       See the OSC2/CLKOUT/RA6 pin

RA7                                                                       See the OSC1/CLKIN/RA7 pin

Legend:    TTL =  TTL compatible input                         CMOS =     CMOS compatible input or output

           ST  =  Schmitt Trigger input with CMOS levels       I       =  Input

           O   =  Output                                       P       =  Power

Note   1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

       2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

 2010-2015 Microchip Technology Inc.                                                             DS40001303H-page 21
PIC18F2XK20/4XK20

TABLE 1-3:       PIC18F4XK20 PINOUT I/O DESCRIPTIONS                  (CONTINUED)

      Pin Name               Pin Number            Pin        Buffer                  Description

                     PDIP    QFN       TQFP  UQFN  Type       Type

                                                                      PORTB is a bidirectional I/O port. PORTB can

                                                                      be software programmed for internal weak

                                                                      pull-up on each input.

RB0/INT0/FLT0/           33  9         8

AN12                                                     I/O  TTL        Digital I/O

RB0                                                      I       ST      External interrupt 0

INT0                                                     I       ST      PWM Fault input for Enhanced CCP1

FLT0                                                     I    Analog     Analog input 12, ADC channel 12

AN12

RB1/INT1/AN10/           34  10        9

C12IN3-

RB1                                                      I/O  TTL        Digital I/O

INT1                                                     I       ST      External interrupt 1

AN10                                                     I    Analog     Analog input 10, ADC channel 10

C12IN3-                                                  I    Analog     Comparator C1 and C2 inverting input

RB2/INT2/AN8             35  11        10

RB2                                                      I/O  TTL        Digital I/O

INT2                                                     I       ST      External interrupt 2

AN8                                                      I    Analog     Analog input 8, ADC channel 8

RB3/AN9/C12IN2-/         36  12        11

CCP2

RB3                                                      I/O  TTL        Digital I/O

AN9                                                      I    Analog     Analog input 9, ADC channel 9

C12IN23-                                                 I    Analog     Comparator C1 and C2 inverting input

CCP2(2)                                                  I/O     ST      Capture 2 input/Compare 2 output/PWM 2

                                                                         output

RB4/KBI0/AN11            37  14        14

RB4                                                      I/O  TTL        Digital I/O

KBI0                                                     I    TTL        Interrupt-on-change pin

AN11                                                     I    Analog     Analog input 11, ADC channel 11

RB5/KBI1/PGM             38  15        15

RB5                                                      I/O  TTL        Digital I/O

KBI1                                                     I    TTL        Interrupt-on-change pin

PGM                                                      I/O     ST      Low-Voltage ICSP™ Programming enable pin

RB6/KBI2/PGC             39  16        16

RB6                                                      I/O  TTL        Digital I/O

KBI2                                                     I    TTL        Interrupt-on-change pin

PGC                                                      I/O     ST      In-Circuit Debugger and ICSP™

                                                                         programming clock pin

RB7/KBI3/PGD             40  17        17

RB7                                                      I/O  TTL        Digital I/O

KBI3                                                     I    TTL        Interrupt-on-change pin

PGD                                                      I/O     ST      In-Circuit Debugger and ICSP™

                                                                         programming data pin

Legend: TTL =    TTL compatible input                         CMOS    =  CMOS compatible input or output

          ST  =  Schmitt Trigger input with CMOS levels       I       =  Input

          O   =  Output                                       P       =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

DS40001303H-page 22                                                                    2010-2015 Microchip Technology Inc.
                                                                 PIC18F2XK20/4XK20

TABLE 1-3:       PIC18F4XK20 PINOUT I/O DESCRIPTIONS (CONTINUED)

      Pin Name               Pin Number            Pin        Buffer                    Description

                 PDIP        QFN       TQFP  UQFN  Type       Type

                                                                      PORTC is a bidirectional I/O port.

RC0/T1OSO/               15  34        32

T13CKI                                                   I/O     ST      Digital I/O

RC0                                                      O       —       Timer1 oscillator output

T1OSO                                                    I       ST      Timer1/Timer3 external clock input

T13CKI

RC1/T1OSI/CCP2           16  35        35

RC1                                                      I/O     ST      Digital I/O

T1OSI                                                    I    CMOS       Timer1 oscillator input

CCP2(1)                                                  I/O     ST      Capture 2 input/Compare 2 output/PWM 2

                                                                         output

RC2/CCP1/P1A             17  36        36

RC2                                                      I/O     ST      Digital I/O

CCP1                                                     I/O     ST      Capture 1 input/Compare 1 output/PWM 1

P1A                                                      O       —       output

                                                                         Enhanced CCP1 output

RC3/SCK/SCL              18  37        37

RC3                                                      I/O     ST      Digital I/O

SCK                                                      I/O     ST      Synchronous serial clock input/output for

                                                                         SPI mode

SCL                                                      I/O     ST      Synchronous serial clock input/output for I2C™

                                                                         mode

RC4/SDI/SDA              23  42        42

RC4                                                      I/O     ST      Digital I/O

SDI                                                      I       ST      SPI data in

SDA                                                      I/O     ST      I2C™ data I/O

RC5/SDO                  24  43        43

RC5                                                      I/O     ST      Digital I/O

SDO                                                      O       —       SPI data out

RC6/TX/CK                25  44        44

RC6                                                      I/O     ST      Digital I/O

TX                                                       O       —       EUSART asynchronous transmit

CK                                                       I/O     ST      EUSART synchronous clock (see related RX/

                                                                         DT)

RC7/RX/DT                26  1         1

RC7                                                      I/O     ST      Digital I/O

RX                                                       I       ST      EUSART asynchronous receive

DT                                                       I/O     ST      EUSART synchronous data (see related TX/

                                                                         CK)

Legend: TTL =    TTL compatible input                         CMOS    =  CMOS compatible input or output

          ST  =  Schmitt Trigger input with CMOS levels       I       =  Input

          O   =  Output                                       P       =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

 2010-2015 Microchip Technology Inc.                                                              DS40001303H-page 23
PIC18F2XK20/4XK20

TABLE 1-3:       PIC18F4XK20 PINOUT          I/O DESCRIPTIONS         (CONTINUED)

      Pin Name               Pin Number            Pin        Buffer                  Description

                     PDIP    QFN       TQFP  UQFN  Type       Type

                                                                      PORTD is a bidirectional I/O port or a   Parallel

                                                                      Slave Port (PSP) for interfacing to a

                                                                      microprocessor port. These pins have     TTL input

                                                                      buffers when PSP module is enabled.

RD0/PSP0                 19  38        38

RD0                                                      I/O     ST      Digital I/O

PSP0                                                     I/O  TTL        Parallel Slave Port data

RD1/PSP1                 20  39        39

RD1                                                      I/O     ST      Digital I/O

PSP1                                                     I/O  TTL        Parallel Slave Port data

RD2/PSP2                 21  40        40

RD2                                                      I/O     ST      Digital I/O

PSP2                                                     I/O  TTL        Parallel Slave Port data

RD3/PSP3                 22  41        41

RD3                                                      I/O     ST      Digital I/O

PSP3                                                     I/O  TTL        Parallel Slave Port data

RD4/PSP4                 27  2         2

RD4                                                      I/O     ST      Digital I/O

PSP4                                                     I/O  TTL        Parallel Slave Port data

RD5/PSP5/P1B             28  3         3

RD5                                                      I/O     ST      Digital I/O

PSP5                                                     I/O  TTL        Parallel Slave Port data

P1B                                                      O       —       Enhanced CCP1 output

RD6/PSP6/P1C             29  4         4

RD6                                                      I/O     ST      Digital I/O

PSP6                                                     I/O  TTL        Parallel Slave Port data

P1C                                                      O       —       Enhanced CCP1 output

RD7/PSP7/P1D             30  5         5

RD7                                                      I/O     ST      Digital I/O

PSP7                                                     I/O  TTL        Parallel Slave Port data

P1D                                                      O       —       Enhanced CCP1 output

Legend:   TTL =  TTL compatible input                         CMOS    =  CMOS compatible input     or  output

          ST  =  Schmitt Trigger input with CMOS levels       I       =  Input

          O   =  Output                                       P       =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

DS40001303H-page 24                                                                    2010-2015 Microchip Technology Inc.
                                                                 PIC18F2XK20/4XK20

TABLE 1-3:       PIC18F4XK20 PINOUT I/O DESCRIPTIONS (CONTINUED)

      Pin Name               Pin Number               Pin     Buffer                  Description

                 PDIP        QFN       TQFP     UQFN  Type    Type

                                                                      PORTE is a bidirectional I/O port

RE0/RD/AN5               8   25        25

    RE0                                                  I/O     ST      Digital I/O

    RD                                                   I    TTL        Read control for Parallel Slave Port

                                                                         (see related WR and CS pins)

    AN5                                                  I    Analog     Analog input 5, ADC channel 5

RE1/WR/AN6               9   26        26

    RE1                                                  I/O     ST      Digital I/O

    WR                                                   I    TTL        Write control for Parallel Slave Port

                                                                         (see related CS and RD pins)

    AN6                                                  I    Analog     Analog input 6, ADC channel 6

RE2/CS/AN7               10  27        27

    RE2                                                  I/O     ST      Digital I/O

    CS                                                   I    TTL        Chip Select control for Parallel Slave  Port

                                                                         (see related RD and WR)

    AN7                                                  I    Analog     Analog input 7, ADC channel 7

RE3                      —   —         —                 —       —    See MCLR/VPP/RE3 pin

VSS              12, 31      6, 30,    6, 29             P       —    Ground reference for logic and I/O pins

                             31

VDD              11, 32      7, 8,     7, 28             P       —    Positive supply for logic and I/O pins

                             28, 29

NC                       —   13        12, 13,           —       —    No connect

                                       33, 34

Legend:   TTL =  TTL compatible input                         CMOS =     CMOS compatible input or output

          ST  =  Schmitt Trigger input with CMOS levels       I       =  Input

          O   =  Output                                       P       =  Power

Note  1:  Default assignment for CCP2 when Configuration bit CCP2MX is set.

      2:  Alternate assignment for CCP2 when Configuration bit CCP2MX is cleared.

 2010-2015 Microchip Technology Inc.                                                             DS40001303H-page 25
PIC18F2XK20/4XK20

2.0        OSCILLATOR MODULE (WITH                                                          The oscillator module can be configured in one of ten

           FAIL-SAFE CLOCK MONITOR)                                                         primary clock modes.

                                                                                            1.    LP        Low-Power Crystal

2.1        Overview                                                                         2.    XT        Crystal/Resonator

The    oscillator      module  has       a  wide    variety  of          clock              3.    HS        High-Speed Crystal/Resonator

sources and selection features that allow it to be used                                     4.    HSPLL     High-Speed Crystal/Resonator

in  a  wide      range  of     applications       while  maximizing                                         with PLL enabled

performance        and  minimizing          power       consumption.                        5.    RC        External Resistor/Capacitor with

Figure 2-1 illustrates a block diagram of the oscillator                                                    FOSC/4 output on RA6

module.                                                                                     6.    RCIO      External Resistor/Capacitor with I/O

Clock  sources         can     be  configured       from                 external                           on RA6

oscillators, quartz crystal resonators, ceramic resonators                                  7.    INTOSC    Internal Oscillator with FOSC/4

and    Resistor-Capacitor      (RC)      circuits.  In   addition,       the                                output on RA6 and I/O on RA7

system clock source can be configured from one of two                                       8.    INTOSCIO  Internal Oscillator with I/O on RA6

internal oscillators, with a choice of speeds selectable via                                                and RA7

software. Additional clock features include:                                                9.    EC        External Clock with FOSC/4 output

•   Selectable system clock source between external                                         10.   ECIO      External Clock with I/O on RA6

    or internal via software.                                                               Primary Clock modes are selected by the FOSC<3:0>

•   Two-Speed Start-up mode, which minimizes                                                bits  of   the  CONFIG1H        Configuration           Register.  The

    latency between external oscillator start-up and                                        HFINTOSC        and  LFINTOSC              are   factory    calibrated

    code execution.                                                                         high-frequency       and        low-frequency             oscillators,

•   Fail-Safe Clock Monitor (FSCM) designed to                                              respectively,   which     are   used         as  the    internal   clock

    detect a failure of the external clock source (LP,                                      sources.

    XT, HS, EC or RC modes) and switch

    automatically to the internal oscillator.

FIGURE 2-1:                    PIC® MCU CLOCK SOURCE                               BLOCK DIAGRAM

                                                             PIC18F2XK20/4XK20

                   Primary Oscillator                                                                       LP, XT, HS, RC, EC

    OSC2

                                                                                                                                           IDLEN

                               Sleep                                                                   HSPLL, HFINTOSC/PLL

                                                                                            4 x PLL                                        Sleep

    OSC1                                    OSCTUNE<6>(1)

                   Secondary Oscillator                                                                               T1OSC       MUX    Main         Peripherals

    T1OSO

                               T1OSCEN

                               Enable

    T1OSI                      Oscillator                                          OSCCON<6:4>              Internal  Oscillator

                        FOSC<3:0>     OSCCON<1:0>                                  16 MHz   111                                                         CPU

                                                                                   8 MHz                                                     Sleep

                               Internal                                                     110

                            Oscillator                                             4 MHz

                               Block                         Postscaler            2 MHz    101                                   Clock

                               16 MHz                                                       100   MUX                             Control

                               Source       16 MHz                                 1 MHz    011

                               31 kHz       (HFINTOSC)                             500 kHz                            FOSC<3:0>        OSCCON<1:0>

                                                                                            010

                               Source                                              250 kHz  001

                                                                         1         31 kHz                                       Clock Source Option

                                   31 kHz (LFINTOSC)                     0                  000                                 for other Modules

                                                                                   OSCTUNE<7>

                                                                                                                                WDT, PWRT, FSCM

                                                                                                                                and Two-Speed Start-up

           Note    1:  Operates only when HFINTOSC is the primary oscillator.

DS40001303H-page 26                                                                                               2010-2015 Microchip Technology Inc.
                                                                        PIC18F2XK20/4XK20

2.2         Oscillator Control                                          2.2.4           CLOCK STATUS

The OSCCON register (Register 2-1) controls several                     The OSTS and IOFS bits of the OSCCON register, and

aspects     of  the  device   clock’s  operation,     both    in  full  the T1RUN bit of the T1CON register, indicate which

power operation and in power-managed modes.                             clock source is currently providing the main clock. The

•  Main System Clock Selection (SCS)                                    OSTS bit indicates that the Oscillator Start-up Timer

                                                                        has timed out and the primary clock is providing the

•  Internal Frequency selection bits (IRCF)                             device clock. The IOFS bit indicates when the internal

•  Clock Status bits (OSTS, IOFS)                                       oscillator  block     has   stabilized     and   is  providing    the

•  Power management selection (IDLEN)                                   device clock in HFINTOSC Clock modes. The IOFS

                                                                        and    OSTS         Status  bits   will    both      be  set      when

2.2.1           MAIN SYSTEM CLOCK SELECTION                             SCS<1:0> = 00 and HFINTOSC is the primary clock.

The System Clock Select bits, SCS<1:0>, select the                      The T1RUN bit indicates when the Timer1 oscillator is

main clock source. The available clock sources are                      providing the device clock in secondary clock modes.

                                                                        When SCS<1:0>  00, only one of these three bits will

•  Primary clock defined by the FOSC<3:0> bits of                       be set at any time. If none of these bits are set, the

   CONFIG1H. The primary clock can be the primary                       LFINTOSC is providing the clock or the HFINTOSC has

   oscillator, an external clock, or the internal                       just started and is not yet stable.

   oscillator block.

•  Secondary clock (Timer1 oscillator)                                  2.2.5           POWER MANAGEMENT

•  Internal oscillator block (HFINTOSC and                              The IDLEN bit of the OSCCON register determines if

   LFINTOSC).                                                           the device goes into Sleep mode or one of the Idle

The clock source changes immediately after one or                       modes when the SLEEP instruction is executed.

more of the bits is written to, following a brief clock                 The use of the flag and control bits in the OSCCON

transition interval. The SCS bits are cleared to select                 register    is  discussed      in  more    detail    in  Section 3.0

the primary clock on all forms of Reset.                                “Power-Managed Modes”.

2.2.2           INTERNAL FREQUENCY                                      Note 1:         The Timer1 oscillator must be enabled to

                SELECTION                                                               select the secondary clock source. The

The    Internal      Oscillator    Frequency          Select      bits                  Timer1 oscillator is enabled by setting the

(IRCF<2:0>) select the frequency output of the internal                                 T1OSCEN bit of the T1CON register. If

oscillator block. The choices are the LFINTOSC source                                   the Timer1 oscillator is not enabled, then

(31 kHz), the HFINTOSC source (16 MHz) or one of                                        the   main     oscillator  will  continue     to  run

the    frequencies        derived     from    the     HFINTOSC                          from the previously selected source. The

postscaler      (31.25 kHz    to   8 MHz).        If  the  internal                     source will then switch to the secondary

oscillator block is supplying the main clock, changing                                  oscillator after the T1OSCEN bit is set.

the states of these bits will have an immediate change                              2:  It   is  recommended          that       the  Timer1

on the internal oscillator’s output. On device Resets,                                  oscillator be operating and stable before

the output frequency of the internal oscillator is set to                               selecting the secondary clock source or a

the default frequency of 1 MHz.                                                         very     long  delay     may     occur   while    the

                                                                                        Timer1 oscillator starts.

2.2.3           LOW FREQUENCY SELECTION

When a nominal output frequency of 31 kHz is selected

(IRCF<2:0> = 000), users may choose which internal

oscillator  acts     as  the  source.  This   is  done     with   the

INTSRC bit of the OSCTUNE register. Setting this bit

selects the HFINTOSC as a 31.25 kHz clock source by

enabling the divide-by-512 output of the HFINTOSC

postscaler.     Clearing      INTSRC   selects        LFINTOSC

(nominally 31 kHz) as the clock source.

This option allows users to select the tunable and more

precise     HFINTOSC          as   a   clock      source,     while

maintaining power savings with a very low clock speed.

Regardless      of   the  setting  of  INTSRC,        LFINTOSC

always remains the clock source for features such as

the Watchdog Timer and the Fail-Safe Clock Monitor.

 2010-2015 Microchip Technology Inc.                                                                              DS40001303H-page 27
PIC18F2XK20/4XK20

REGISTER 2-1:        OSCCON: OSCILLATOR CONTROL REGISTER

R/W-0              R/W-0     R/W-1           R/W-1                 R-q             R-0      R/W-0           R/W-0

IDLEN              IRCF2     IRCF1           IRCF0             OSTS(1)    IOFS              SCS1            SCS0

bit 7                                                                                                             bit  0

Legend:

R = Readable bit     W = Writable bit        U = Unimplemented bit, read as ‘0’         q = depends on condition

-n = Value at POR    ‘1’ = Bit is set        ‘0’ = Bit is cleared                       x = Bit is unknown

bit 7        IDLEN: Idle Enable bit

             1=      Device enters Idle mode on SLEEP instruction

             0=      Device enters Sleep mode on SLEEP instruction

bit 6-4      IRCF<2:0>: Internal Oscillator Frequency Select bits

             111 = 16 MHz (HFINTOSC drives clock directly)

             110 = 8 MHz

             101 = 4 MHz

             100 = 2 MHz

             011 = 1 MHz(3)

             010 = 500 kHz

             001 = 250 kHz

             000 = 31 kHz (from either HFINTOSC/512 or LFINTOSC directly)(2)

bit 3        OSTS: Oscillator Start-up Time-out Status bit(1)

             1=      Device is running from the clock defined by FOSC<2:0> of the CONFIG1   register

             0=      Device is running from the internal oscillator (HFINTOSC or LFINTOSC)

bit 2        IOFS: HFINTOSC Frequency Stable bit

             1=      HFINTOSC frequency is stable

             0=      HFINTOSC frequency is not stable

bit 1-0      SCS<1:0>: System Clock Select bits

             1x = Internal oscillator block

             01 = Secondary (Timer1) oscillator

             00 = Primary clock (determined by CONFIG1H[FOSC<3:0>]).

Note     1:  Reset state depends on state of the IESO Configuration bit.

         2:  Source selected by the INTSRC bit of the OSCTUNE register, see text.

         3:  Default output frequency of HFINTOSC on Reset.

DS40001303H-page 28                                                                 2010-2015 Microchip Technology Inc.
                                                                         PIC18F2XK20/4XK20

2.3        Clock Source Modes                                            2.4          External Clock Modes

Clock Source modes can be classified as external or                      2.4.1             OSCILLATOR START-UP TIMER (OST)

internal.

•  External Clock modes rely on external circuitry for                   When the oscillator module is configured for LP, XT or

   the clock source. Examples are: Clock modules                         HS modes, the Oscillator Start-up Timer (OST) counts

   (EC mode), quartz crystal resonators or ceramic                       1024 oscillations from OSC1. This occurs following a

   resonators (LP, XT and HS modes) and Resistor-                        Power-on Reset (POR) and when the Power-up Timer

   Capacitor (RC mode) circuits.                                         (PWRT) has expired (if configured), or a wake-up from

                                                                         Sleep. During this time, the program counter does not

•  Internal clock sources are contained internally                       increment and program execution is suspended. The

   within the Oscillator block. The Oscillator block                     OST ensures that the oscillator circuit, using a quartz

   has two internal oscillators: the 16 MHz                              crystal resonator or ceramic resonator, has started and

   High-Frequency Internal Oscillator (HFINTOSC)                         is  providing      a    stable  system   clock  to  the   oscillator

   and the 31 kHz Low-Frequency Internal Oscillator                      module.           When  switching  between      clock     sources,  a

   (LFINTOSC).                                                           delay is required to allow the new clock to stabilize.

The system clock can be selected between external or                     These oscillator delays are shown in Table 2-1.

internal   clock  sources    via       the  System  Clock      Select    In order to minimize latency between external oscillator

(SCS<1:0>)        bits  of   the       OSCCON       register.    See     start-up     and   code      execution,  the  Two-Speed   Clock

Section 2.9       “Clock       Switching”           for    additional    Start-up          mode  can  be    selected   (see  Section 2.10

information.                                                             “Two-Speed Clock Start-up Mode”).

TABLE 2-1:              OSCILLATOR DELAY EXAMPLES

          Switch From                       Switch To                    Frequency                          Oscillator Delay

           Sleep/POR                        LFINTOSC                     31 kHz                  Oscillator Warm-Up Delay (TWARM)

                                            HFINTOSC                     250 kHz to 16 MHz

           Sleep/POR                        EC, RC                       DC – 64 MHz             2 instruction cycles

     LFINTOSC (31 kHz)                      EC, RC                       DC – 64 MHz             1 cycle of each

           Sleep/POR                        LP, XT, HS                   32 kHz to 40 MHz        1024 Clock Cycles (OST)

           Sleep/POR                        HSPLL                        32 MHz to 64 MHz        1024 Clock Cycles (OST) + 2 ms

     LFINTOSC (31 kHz)                      HFINTOSC                     250 kHz to 16 MHz       1 s (approx.)

2.4.2          EC MODE                                                   FIGURE 2-2:                     EXTERNAL CLOCK            (EC)

The   External    Clock      (EC)  mode     allows  an     externally                                    MODE OPERATION

generated logic level as the system clock source. When

operating  in     this  mode,      an  external     clock  source  is        Clock from                     OSC1/CLKIN

connected to the OSC1 input and the OSC2 is available                        Ext. System

for  general    purpose      I/O.  Figure 2-2       shows   the    pin                                            PIC® MCU

connections for EC mode.                                                                         I/O        OSC2/CLKOUT(1)

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                            Note     1:    Alternate pin functions are listed in

from   Sleep.   Because      the   PIC®     MCU     design  is   fully                      Section 1.0 “Device Overview”.

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.

 2010-2015 Microchip Technology Inc.                                                                             DS40001303H-page 29
PIC18F2XK20/4XK20

2.4.3        LP, XT, HS MODES                                          Note      1:     Quartz       crystal      characteristics      vary

The LP, XT and HS modes support the use of quartz                                       according       to    type,      package       and

crystal resonators or ceramic resonators connected to                                   manufacturer. The user should consult the

OSC1 and OSC2 (Figure 2-3). The mode selects a low,                                     manufacturer data sheets for specifications

medium or high gain setting of the internal inverter-                                   and recommended application.

amplifier to support various resonator types and speed.                          2:     Always verify oscillator performance over

LP Oscillator mode selects the lowest gain setting of the                               the  VDD   and     temperature      range   that  is

internal inverter-amplifier. LP mode current consumption                                expected for the application.

is the least of the three modes. This mode is best suited                        3:     For oscillator design assistance, reference

to drive resonators with a low drive level specification, for                           the following Microchip Applications Notes:

example, tuning fork type crystals.

XT  Oscillator    mode   selects   the    intermediate           gain                • AN826, “Crystal Oscillator Basics and

setting  of  the  internal  inverter-amplifier.     XT        mode                      Crystal Selection for rfPIC® and PIC®

current consumption is the medium of the three modes.                                   Devices” (DS00826)

This mode is best suited to drive resonators with a                                  • AN849, “Basic PIC® Oscillator Design”

medium drive level specification.                                                       (DS00849)

HS Oscillator mode selects the highest gain setting of the                           • AN943, “Practical PIC® Oscillator

internal inverter-amplifier. HS mode current consumption                                Analysis and Design” (DS00943)

is the highest of the three modes. This mode is best                                 • AN949, “Making Your Oscillator Work”

suited for resonators that require a high drive setting.                                (DS00949)

Figure 2-3   and  Figure 2-4       show   typical   circuits     for   FIGURE 2-4:                   CERAMIC RESONATOR

quartz crystal and ceramic resonators, respectively.                                                 OPERATION

FIGURE 2-3:              QUARTZ CRYSTAL                                                              (XT OR HS MODE)

                         OPERATION (LP, XT OR                                                                            PIC® MCU

                         HS MODE)

                                                                                                           OSC1/CLKIN

                                          PIC® MCU

                                                                             C1                                              To Internal

                            OSC1/CLKIN                                                                                       Logic

         C1                                         To Internal                               RP(3)               RF(2)      Sleep

                                                    Logic

                Quartz             RF(2)            Sleep

                Crystal                                                      C2                  RS(1)     OSC2/CLKOUT

                                                                                     Ceramic

                                                                                     Resonator

         C2       RS(1)     OSC2/CLKOUT                                Note  1:      A   series  resistor   (RS)  may    be  required  for

                                                                                     ceramic resonators with low drive level.

Note     1:  A  series   resistor  (RS)   may  be   required     for         2:      The value of RF varies with the Oscillator mode

             quartz crystals with low drive level.                                   selected (typically between 2 M to 10 M.

         2:  The value of RF varies with the Oscillator mode                 3:      An  additional     parallel  feedback   resistor  (RP)

             selected (typically between 2 M to 10 M.                             may be required for proper ceramic resonator

                                                                                     operation.

DS40001303H-page 30                                                                              2010-2015 Microchip Technology Inc.
                                                                        PIC18F2XK20/4XK20

2.4.4             EXTERNAL RC MODES                                     2.5         Internal Clock Modes

The external Resistor-Capacitor (RC) modes support                      The oscillator module has two independent, internal

the  use      of  an  external  RC  circuit.  This       allows    the  oscillators that can be configured or selected as the

designer maximum flexibility in frequency choice while                  system clock source.

keeping costs to a minimum when clock accuracy is not                   1.   The       HFINTOSC          (High-Frequency           Internal

required. There are two modes: RC and RCIO.                                  Oscillator) is factory calibrated and operates at

2.4.4.1           RC Mode                                                    16 MHz. The frequency of the HFINTOSC can

In RC mode, the RC circuit connects to OSC1. OSC2/                           be     user-adjusted         via   software      using    the

CLKOUT outputs the RC oscillator frequency divided                           OSCTUNE register (Register 2-2).

by 4. This signal may be used to provide a clock for                    2.   The       LFINTOSC           (Low-Frequency           Internal

external circuitry, synchronization, calibration, test or                    Oscillator) operates at 31 kHz.

other application requirements. Figure 2-5 shows the                    The system clock speed can be selected via software

external RC mode connections.                                           using   the    Internal     Oscillator  Frequency        Select   bits

                                                                        IRCF<2:0> of the OSCCON register.

FIGURE 2-5:             EXTERNAL RC MODES                               The system clock can be selected between external or

                                                                        internal clock sources via the System Clock Selection

         VDD                        PIC® MCU                            (SCS<1:0>)        bits   of    the     OSCCON      register.      See

                                                                        Section 2.9 “Clock Switching” for more information.

   REXT

                      OSC1/CLKIN                         Internal       2.5.1       INTOSC AND INTOSCIO MODES

                                                         Clock          The    INTOSC      and      INTOSCIO      modes    configure      the

   CEXT                                                                 internal oscillators as the primary clock source. The

   VSS                                                                  FOSC<3:0>         bits   in  the    CONFIG1H         Configuration

                                                                        register    determine        which     mode    is  selected.      See

         FOSC/4   or  OSC2/CLKOUT(1)                                    Section 23.0 “Special Features of the CPU” for more

         I/O(2)                                                         information.

                                                                        In INTOSC mode, OSC1/CLKIN is available for general

   Recommended values:          10 k  REXT  100 k                   purpose     I/O.   OSC2/CLKOUT            outputs     the  selected

                                CEXT > 20 pF                            internal oscillator frequency divided by 4. The CLKOUT

                                                                        signal   may   be  used      to  provide  a    clock  for  external

   Note   1:      Alternate pin functions are listed in                 circuitry,   synchronization,       calibration,   test    or    other

                  Section 1.0 “Device Overview”.                        application requirements.

          2:      Output depends upon RC or RCIO clock mode.            In INTOSCIO mode, OSC1/CLKIN and OSC2/CLKOUT

                                                                        are available for general purpose I/O.

2.4.4.2           RCIO Mode                                             2.5.2          HFINTOSC

In RCIO mode, the RC circuit is connected to OSC1.                      The output of the HFINTOSC connects to a postscaler

OSC2 becomes an additional general purpose I/O pin.                     and     multiplexer      (see    Figure 2-1).      One     of    eight

The RC oscillator frequency is a function of the supply                 frequencies    can      be   selected   via    software    using  the

voltage, the resistor (REXT) and capacitor (CEXT) values                IRCF<2:0>      bits      of  the    OSCCON         register.      See

and the operating temperature. Other factors affecting                  Section 2.5.4      “Frequency          Select  Bits   (IRCF)”        for

the oscillator frequency are:                                           more information.

•  input threshold voltage variation                                    The HFINTOSC is enabled when:

•  component tolerances

•  packaging variations in capacitance                                  •   SCS1 = 1 and IRCF<2:0>               000

The user also needs to take into account variation due                  •   SCS1 = 1 and IRCF<2:0> = 000 and INTSRC = 1

to tolerance of external RC components used.                            •   IESO bit of CONFIG1H = 1 enabling Two-Speed

                                                                            Start-up.

                                                                        •   FCMEM bit of CONFIG1H = 1 enabling

                                                                            Two-Speed Start-up and Fail-Safe mode.

                                                                        •   FOSC<3:0> of CONFIG1H selects the internal

                                                                            oscillator as the primary clock

                                                                        The HF Internal Oscillator (IOFS) bit of the OSCCON

                                                                        register indicates whether the HFINTOSC is stable or not.

 2010-2015 Microchip Technology Inc.                                                                             DS40001303H-page 31
PIC18F2XK20/4XK20

2.5.2.1       OSCTUNE Register                                  (PWRT),  Watchdog            Timer   (WDT),   Fail-Safe  Clock

The    HFINTOSC    is  factory  calibrated      but  can  be    Monitor (FSCM) and peripherals, are not affected by the

adjusted in software by writing to the TUN<5:0> bits of         change in frequency.

the OSCTUNE register (Register 2-2).                            The OSCTUNE register also implements the INTSRC

The default value of the TUN<5:0> is ‘000000’. The              and PLLEN bits, which control certain features of the

value is a 6-bit two’s complement number.                       internal oscillator block.

When     the  OSCTUNE     register    is    modified,     the   The INTSRC bit allows users to select which internal

HFINTOSC      frequency  will  begin  shifting  to   the  new   oscillator provides the clock source when the 31 kHz

frequency. Code execution continues during this shift.          frequency option is selected. This is covered in greater

There is no indication that the shift has occurred.             detail in Section 2.2.3 “Low Frequency Selection”.

OSCTUNE does not affect the LFINTOSC frequency.                 The PLLEN bit controls the operation of the frequency

Operation of features that depend on the LFINTOSC               multiplier, PLL, in internal oscillator modes. For more

clock source frequency, such as the Power-up Timer              details  about        the  function  of  the  PLLEN      bit  see

                                                                Section 2.6.2 “PLL in HFINTOSC Modes”

REGISTER 2-2:            OSCTUNE: OSCILLATOR TUNING REGISTER

     R/W-0         R/W-0              R/W-0            R/W-0    R/W-0                 R/W-0          R/W-0         R/W-0

INTSRC             PLLEN(1)           TUN5                TUN4  TUN3                  TUN2           TUN1          TUN0

bit 7                                                                                                                    bit 0

Legend:

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

-n = Value at POR               ‘1’ = Bit is set                ‘0’ = Bit is cleared           x = Bit is unknown

bit 7         INTSRC: Internal Oscillator Low-Frequency Source Select bit

              1=       31.25 kHz device clock derived from 16 MHz HFINTOSC source (divide-by-512              enabled)

              0=       31 kHz device clock derived directly from LFINTOSC internal oscillator

bit 6         PLLEN: Frequency Multiplier PLL for HFINTOSC Enable bit(1)

              1=       PLL enabled for HFINTOSC (8 MHz and 16 MHz only)

              0=       PLL disabled

bit 5-0       TUN<5:0>: Frequency Tuning bits

              011111 = Maximum frequency

              011110 =

                  •••

              000001 =

              000000 = Oscillator module is running at the factory calibrated frequency.

              111111 =

                  •••

              100000 = Minimum frequency

Note     1:   The PLLEN bit is active only when the HFINTOSC is the primary clock source (FOSC<2:0> = 100X) and

              the selected frequency is 8 MHz or 16 MHz. Otherwise, the PLLEN bit is unavailable and always reads ‘0’.

DS40001303H-page 32                                                                         2010-2015 Microchip Technology Inc.
                                                                     PIC18F2XK20/4XK20

2.5.3          LFINTOSC                                              2.5.5        HFINTOSC FREQUENCY DRIFT

The Low-Frequency Internal Oscillator (LFINTOSC) is                  The factory calibrates the internal oscillator block output

a 31 kHz internal clock source.                                      (HFINTOSC) for 16 MHz. However, this frequency may

The    output  of    the  LFINTOSC       connects    to   internal   drift as VDD or temperature changes, which can affect the

oscillator  block    frequency     selection  multiplexer      (see  controller operation in a variety of ways. It is possible to

Figure 2-1).   Select     31 kHz,  via   software,      using  the   adjust the HFINTOSC frequency by modifying the value

IRCF<2:0>      bits  of   the    OSCCON       register    and  the   of the TUN<5:0> bits in the OSCTUNE register. This has

INTSRC        bit    of   the    OSCTUNE      register.        See   no effect on the LFINTOSC clock source frequency.

Section 2.5.4      “Frequency      Select     Bits   (IRCF)”   for   Tuning the HFINTOSC source requires knowing when to

more information. The LFINTOSC is also the frequency                 make the adjustment, in which direction it should be

for  the    Power-up      Timer  (PWRT),      Watchdog     Timer     made   and   in  some    cases,   how      large  a  change    is

(WDT) and Fail-Safe Clock Monitor (FSCM).                            needed. Three possible compensation techniques are

The LFINTOSC is enabled when any of the following                    discussed    in  the   following  sections,     however      other

are enabled:                                                         techniques may be used.

•  IRCF<2:0> bits of the OSCCON register = 000 and                   2.5.5.1          Compensating with the EUSART

   INTSRC bit of the OSCTUNE register = 0                            An adjustment may be required when the EUSART

•  Power-up Timer (PWRT)                                             begins to generate framing errors or receives data with

•  Watchdog Timer (WDT)                                              errors while in Asynchronous mode. Framing errors

•  Fail-Safe Clock Monitor (FSCM)                                    indicate that the device clock frequency is too high; to

                                                                     adjust for this, decrement the value in OSCTUNE to

2.5.4          FREQUENCY SELECT BITS (IRCF)                          reduce the clock frequency. On the other hand, errors

The   output   of    the  16 MHz   HFINTOSC          and  31 kHz     in data may suggest that the clock speed is too low; to

LFINTOSC connects to a postscaler and multiplexer                    compensate,      increment      OSCTUNE      to   increase     the

(see   Figure 2-1).      The   Internal  Oscillator  Frequency       clock frequency.

Select bits IRCF<2:0> of the OSCCON register select                  2.5.5.2          Compensating with the Timers

the output frequency of the internal oscillators. One of

eight frequencies can be selected via software:                      This technique compares device clock speed to some

•  16 MHz                                                            reference clock. Two timers may be used; one timer is

•  8 MHz                                                             clocked  by  the    peripheral    clock,   while  the   other  is

                                                                     clocked  by  a    fixed  reference     source,    such  as     the

•  4 MHz                                                             Timer1 oscillator.

•  2 MHz                                                             Both timers are cleared, but the timer clocked by the

•  1 MHz (Default after Reset)                                       reference    generates   interrupts.      When    an    interrupt

•  500 kHz                                                           occurs, the internally clocked timer is read and both

•  250 kHz                                                           timers are cleared. If the internally clocked timer value

•  31 kHz (LFINTOSC or HFINTOSC/512)                                 is greater than expected, then the internal oscillator

                                                                     block is running too fast. To adjust for this, decrement

                                                                     the OSCTUNE register.

   Note:       Following any Reset, the IRCF<2:0> bits               2.5.5.3          Compensating with the CCP Module

               of the OSCCON register are set to ‘011’

               and   the  frequency      selection   is   set  to                     in Capture Mode

               1 MHz. The user can modify the IRCF bits              A CCP module can use free running Timer1 (or Timer3),

               to select a different frequency.                      clocked by the internal oscillator block and an external

                                                                     event with a known period (i.e., AC power frequency).

                                                                     The    time  of   the    first  event  is  captured      in    the

                                                                     CCPRxH:CCPRxL registers and is recorded for use later.

                                                                     When the second event causes a capture, the time of the

                                                                     first event is subtracted from the time of the second

                                                                     event. Since the period of the external event is known,

                                                                     the time difference between events can be calculated.

                                                                     If the measured time is much greater than the calcu-

                                                                     lated time, the internal oscillator block is running too

                                                                     fast; to compensate, decrement the OSCTUNE register.

                                                                     If the measured time is much less than the calculated

                                                                     time, the internal oscillator block is running too slow; to

                                                                     compensate, increment the OSCTUNE register.

 2010-2015 Microchip Technology Inc.                                                                       DS40001303H-page 33
PIC18F2XK20/4XK20

2.6    PLL Frequency Multiplier                               2.6.2         PLL IN HFINTOSC MODES

A Phase-Locked Loop (PLL) circuit is provided as an           The  4x    frequency  multiplier      can       be   used     with  the

option for users who wish to use a lower frequency            internal oscillator block to produce faster device clock

oscillator circuit or to clock the device up to its highest   speeds     than  are  normally        possible      with  an  internal

rated frequency from the crystal oscillator. This may be      oscillator. When enabled, the PLL produces a clock

useful for customers who are concerned with EMI due           speed of up to 64 MHz.

to high-frequency crystals or users who require higher        Unlike  HSPLL     mode,    the        PLL  is   controlled    through

clock  speeds  from  an   internal  oscillator.  There  are   software.  The    PLLEN    control         bit  of  the   OSCTUNE

three conditions when the PLL can be used:                    register is used to enable or disable the PLL operation

•  When the primary clock is HSPLL                            when the HFINTOSC is used.

•  When the primary clock is HFINTOSC and the                 The PLL is available when the device is configured to

   selected frequency is 16 MHz                               use  the   internal   oscillator  block     as  its  primary      clock

•  When the primary clock is HFINTOSC and the                 source (FOSC<3:0> = 1001 or 1000). Additionally, the

   selected frequency is 8 MHz                                PLL  will  only  function  when       the   selected      output    fre-

                                                              quency is either 8 MHz or 16 MHz (OSCCON<6:4> =

2.6.1      HSPLL OSCILLATOR MODE                              111 or 110). If both of these conditions are not met, the

The HSPLL mode makes use of the HS mode oscillator            PLL is disabled.

for frequencies up to 16 MHz. A PLL then multiplies the       The  PLLEN       control   bit    is  only      functional    in  those

oscillator output frequency by 4 to produce an internal       internal oscillator modes where the PLL is available. In

clock frequency up to 64 MHz. The PLLEN bit of the            all other modes, it is forced to ‘0’ and is effectively

OSCTUNE register is active only when the HFINTOSC             unavailable.

is the primary clock and is not available in HSPLL

oscillator mode.

The PLL is only available to the primary oscillator when

the FOSC<3:0> Configuration bits are programmed for

HSPLL mode (= 0110).

FIGURE 2-6:           PLL BLOCK DIAGRAM

                      (HS MODE)

           HS Oscillator Enable

                     PLL Enable

           (from Configuration Register 1H)

     OSC2

           HS Mode   FIN         Phase

                           Comparator

     OSC1  Crystal   FOUT

               Osc

                                 Loop

                                 Filter

                      4            VCO               SYSCLK

                                                 MUX

DS40001303H-page 34                                                                  2010-2015 Microchip Technology Inc.
                                                                          PIC18F2XK20/4XK20

2.7         Effects of Power-Managed Modes                                significant           current       consumption        are     listed     in

            on the Various Clock Sources                                  Section TABLE 26-8: “Peripheral                      Supply Current,

                                                                          PIC18F2XK20/4XK20”.

For more information about the modes discussed in this

section see Section 3.0 “Power-Managed Modes”. A                          2.8       Power-up Delays

quick reference list is also available in Table 3-1.

When      PRI_IDLE     mode       is  selected,    the  designated        Power-up delays are controlled by two timers, so that

primary oscillator continues to run without interruption.                 no external Reset circuitry is required for most applica-

For  all   other  power-managed           modes,     the    oscillator    tions.    The      delays    ensure      that  the   device    is   kept  in

using the OSC1 pin is disabled. The OSC1 pin (and                         Reset until the device power supply is stable under nor-

OSC2 pin, if used by the oscillator) will stop oscillating.               mal circumstances and the primary clock is operating

                                                                          and       stable.     For  additional    information       on  power-up

In   secondary         clock      modes        (SEC_RUN         and       delays, see Section 4.5 “Device Reset Timers”.

SEC_IDLE),        the  Timer1      oscillator  is    operating  and       The first timer is the Power-up Timer (PWRT), which

providing the device clock. The Timer1 oscillator may                     provides        a  fixed    delay   on   power-up      (parameter       33,

also run in all power-managed modes if required to                        Table ). It is enabled by clearing (= 0) the PWRTEN

clock Timer1 or Timer3.                                                   Configuration bit.

In   internal     oscillator     modes      (INTOSC_RUN         and       The       second      timer     is  the  Oscillator    Start-up     Timer

INTOSC_IDLE), the internal oscillator block provides                      (OST), intended to keep the chip in Reset until the

the device clock source. The 31 kHz LFINTOSC output                       crystal oscillator is stable (LP, XT and HS modes). The

can be used directly to provide the clock and may be                      OST       does     this    by   counting       1024    oscillator   cycles

enabled to support various special features, regardless                   before allowing the oscillator to clock the device.

of   the   power-managed              mode   (see    Section 23.2

“Watchdog         Timer       (WDT)”,       Section 2.10    “Two-         When      the      HSPLL       Oscillator     mode     is  selected,    the

Speed Clock Start-up Mode” and Section 2.11 “Fail-                        device is kept in Reset for an additional 2 ms, following

Safe Clock Monitor” for more information on WDT,                          the HS mode OST delay, so the PLL can lock to the

Fail-Safe Clock Monitor and Two-Speed Start-up). The                      incoming clock frequency.

HFINTOSC output at 16 MHz may be used directly to                         There is a delay of interval TCSD (parameter 38, Table ),

clock  the     device  or     may     be  divided    down   by  the       following POR, while the controller becomes ready to

postscaler. The HFINTOSC output is disabled if the                        execute instructions. This delay runs concurrently with

clock is provided directly from the LFINTOSC output.                      any       other    delays.   This     may     be  the  only    delay    that

If the Sleep mode is selected, all clock sources are                      occurs when any of the EC, RC or INTIO modes are

stopped.    Since      all  the  transistor    switching    currents      used as the primary clock source.

have been stopped, Sleep mode achieves the lowest                         When the HFINTOSC is selected as the primary clock,

current    consumption        of   the    device     (only  leakage       the       main     system      clock     can   be   delayed    until    the

currents).                                                                HFINTOSC is stable. This is user selectable by the

Enabling any on-chip feature that will operate during                     HFOFST bit of the CONFIG3H Configuration register.

Sleep will increase the current consumed during Sleep.                    When the HFOFST bit is cleared the main system clock

The LFINTOSC is required to support WDT operation.                        is delayed until the HFINTOSC is stable. When the

The Timer1 oscillator may be operating to support a                       HFOFST           bit  is   set      the  main     system    clock   starts

real-time clock. Other features may be operating that                     immediately.          In   either     case     the   IOFS      bit  of  the

do not require a device clock source (i.e., SSP slave,                    OSCCON register can be read to determine whether

PSP, INTn pins and others). Peripherals that may add                      the HFINTOSC is operating and stable.

TABLE 2-2:             OSC1 AND OSC2 PIN STATES IN SLEEP MODE

          OSC Mode                                          OSC1 Pin                                               OSC2 Pin

RC, INTOSC                            Floating, external resistor should pull high         At logic low (clock/4 output)

RCIO                                  Floating, external resistor should pull high         Configured as PORTA, bit 6

INTOSCIO                              Configured as PORTA, bit 7                           Configured as PORTA, bit 6

ECIO                                  Floating, pulled by external clock                   Configured as PORTA, bit 6

EC                                    Floating, pulled by external clock                   At logic low (clock/4 output)

LP, XT, HS and HSPLL                  Feedback inverter disabled at quiescent              Feedback inverter disabled at             quiescent

                                      voltage level                                        voltage level

    Note:      See Table 4-2 in Section 4.0 “Reset” for time-outs due to Sleep and MCLR Reset.

 2010-2015 Microchip Technology Inc.                                                                                       DS40001303H-page 35
PIC18F2XK20/4XK20

2.9        Clock Switching                                               2.9.3         CLOCK SWITCH TIMING

The system clock source can be switched between                          When switching between one oscillator and another,

external and internal clock sources via software using                   the new oscillator may not be operating which saves

the    System    Clock     Select    (SCS<1:0>)         bits    of  the  power (see Figure 2-7). If this is the case, there is a

OSCCON register.                                                         delay after the SCS<1:0> bits of the OSCCON register

PIC18F2XK20/4XK20               devices     contain     circuitry   to   are modified before the frequency change takes place.

prevent clock “glitches” when switching between clock                    The OSTS and IOFS bits of the OSCCON register will

sources.      A  short  pause    in  the    device    clock     occurs   reflect  the  current  active  status  of  the  external  and

during the clock switch. The length of this pause is the                 HFINTOSC      oscillators.  The   timing   of   a  frequency

sum of two cycles of the old clock source and three to                   selection is as follows:

four   cycles    of   the  new  clock      source.    This    formula    1.  SCS<1:0> bits of the OSCCON register are mod-

assumes that the new clock source is stable.                                 ified.

Clock  transitions      are     discussed   in   greater    detail  in   2.  The old clock continues to operate until the new

Section 3.1.2 “Entering Power-Managed Modes”.                                clock is ready.

                                                                         3.  Clock switch circuitry waits for two consecutive

2.9.1            SYSTEM CLOCK SELECT                                         rising edges of the old clock after the new clock

                 (SCS<1:0>) BITS                                             ready signal goes true.

The    System    Clock       Select  (SCS<1:0>)         bits    of  the  4.  The system clock is held low starting at the next

OSCCON register select the system clock source that                          falling edge of the old clock.

is used for the CPU and peripherals.                                     5.  Clock switch circuitry waits for an additional two

•  When SCS<1:0> = 00, the system clock source is                            rising edges of the new clock.

   determined by configuration of the FOSC<2:0>                          6.  On the next falling edge of the new clock the low

   bits in the CONFIG1H Configuration register.                              hold on the system clock is released and new

•  When SCS<1:0> = 10, the system clock source is                            clock is switched in as the system clock.

   chosen by the internal oscillator frequency                           7.  Clock switch is complete.

   selected by the INTSRC bit of the OSCTUNE                             See Figure 2-1 for more details.

   register and the IRCF<2:0> bits of the OSCCON                         If the HFINTOSC is the source of both the old and new

   register.                                                             frequency, there is no start-up delay before the new

•  When SCS<1:0> = 01, the system clock source is                        frequency is active. This is because the old and new

   the 32.768 kHz secondary oscillator shared with                       frequencies are derived from the HFINTOSC via the

   Timer1.                                                               postscaler and multiplexer.

After  a   Reset,     the  SCS<1:0>        bits  of  the   OSCCON        Start-up      delay    specifications      are  located       in

register are always cleared.                                             Section 26.0 “Electrical Specifications”, under AC

   Note:         Any  automatic      clock  switch,     which   may      Specifications (Oscillator Module).

                 occur  from    Two-Speed        Start-up   or  Fail-

                 Safe Clock Monitor, does not update the

                 SCS<1:0> bits of the OSCCON register.

                 The user can monitor the T1RUN bit of the

                 T1CON register and the IOFS and OSTS

                 bits of the OSCCON register to determine

                 the current system clock source.

2.9.2            OSCILLATOR START-UP TIME-OUT

                 STATUS (OSTS) BIT

The Oscillator Start-up Time-out Status (OSTS) bit of

the   OSCCON         register   indicates   whether     the    system

clock  is  running      from    the  external    clock    source,   as

defined    by    the  FOSC<3:0>      bits   in   the    CONFIG1H

Configuration        register,  or   from   the      internal   clock

source. In particular, when the primary oscillator is the

source of the primary clock, OSTS indicates that the

Oscillator Start-up Timer (OST) has timed out for LP,

XT or HS modes.

DS40001303H-page 36                                                                              2010-2015 Microchip Technology Inc.
                                                                           PIC18F2XK20/4XK20

2.10       Two-Speed Clock Start-up Mode                                   2.10.2          TWO-SPEED START-UP

Two-Speed Start-up mode provides additional power                                          SEQUENCE

savings by minimizing the latency between external                         1.    Wake-up from Power-on Reset or Sleep.

oscillator start-up and code execution. In applications                    2.    Instructions  begin    executing    by  the  internal

that make heavy use of the Sleep mode, Two-Speed                                 oscillator at the frequency set in the IRCF<2:0>

Start-up   will   remove      the   external    oscillator    start-up           bits of the OSCCON register.

time from the time spent awake and can reduce the                          3.    OST  enabled       to  count  1024      external  clock

overall power consumption of the device.                                         cycles.

This  mode       allows   the  application      to    wake-up     from     4.    OST timed out. External clock is ready.

Sleep, perform a few instructions using the HFINTOSC                       5.    OSTS is set.

as  the    clock  source      and   go  back    to    Sleep   without      6.    Clock switch finishes according to FIGURE 2-7:

waiting for the primary oscillator to become stable.                             “Clock Switch Timing”

    Note:     Executing a SLEEP instruction will abort                     2.10.3          CHECKING TWO-SPEED CLOCK

              the oscillator start-up time and will cause

              the OSTS bit of the OSCCON register to                                       STATUS

              remain clear.                                                Checking the state of the OSTS bit of the OSCCON

When the oscillator module is configured for LP, XT or                     register  will  confirm  if  the  microcontroller  is   running

HS    modes,      the  Oscillator   Start-up      Timer     (OST)     is   from  the  external  clock   source,      as  defined   by  the

enabled (see Section 2.4.1 “Oscillator Start-up Timer                      FOSC<2:0> bits in CONFIG1H Configuration register,

(OST)”). The OST will suspend program execution until                      or the internal oscillator. OSTS = 0 when the external

1024     oscillations    are   counted.     Two-Speed         Start-up     oscillator is not ready, which indicates that the system

mode     minimizes       the   delay    in  code      execution       by   is running from the internal oscillator.

operating     from   the  internal    oscillator     as  the  OST     is

counting. When the OST count reaches 1024 and the

OSTS     bit  of  the    OSCCON       register    is  set,    program

execution switches to the external oscillator.

2.10.1        TWO-SPEED START-UP MODE

              CONFIGURATION

Two-Speed Start-up mode is enabled when all of the

following settings are configured as noted:

•   Two-Speed Start-up mode is enabled by setting

    the IESO of the CONFIG1H Configuration register

    is set. Fail-Safe mode (FCMEM = 1) also enables

    two-speed by default.

•   SCS<1:0> (of the OSCCON register) = 00.

•   FOSC<2:0> bits of the CONFIG1H Configuration

    register are configured for LP, XT or HS mode.

Two-Speed Start-up mode becomes active after:

•   Power-on Reset (POR) and, if enabled, after

    Power-up Timer (PWRT) has expired, or

•   Wake-up from Sleep.

If  the  external      clock   oscillator   is  configured        to  be

anything      other    than    LP,  XT      or  HS       mode,    then

Two-Speed Start-up is disabled. This is because the

external      clock    oscillator     does      not      require      any

stabilization time after POR or an exit from Sleep.

 2010-2015 Microchip Technology Inc.                                                                          DS40001303H-page 37
PIC18F2XK20/4XK20

FIGURE 2-7:          CLOCK SWITCH TIMING

High Speed           Low Speed

Old Clock

                       Start-up Time(1)              Clock Sync                                          Running

New Clock

New Clk Ready

IRCF <2:0>           Select Old  Select New

System Clock

Low Speed      High Speed

Old Clock

                       Start-up  Time(1)             Clock Sync                                          Running

New Clock

New Clk Ready

IRCF <2:0> Select Old            Select   New

System Clock

Note 1: Start-up time includes TOST (1024 TOSC) for  external clocks, plus  TPLL  (approx.  2  ms)  for  HSPLL mode.

DS40001303H-page 38                                                                        2010-2015 Microchip Technology  Inc.
                                                                                 PIC18F2XK20/4XK20

2.11       Fail-Safe Clock Monitor                                               2.11.3      FAIL-SAFE CONDITION CLEARING

The Fail-Safe Clock Monitor (FSCM) allows the device                             The Fail-Safe condition is cleared by either one of the

to continue operating should the external oscillator fail.                       following:

The FSCM can detect oscillator failure any time after                            •  Any Reset

the Oscillator Start-up Timer (OST) has expired. The                             •  By toggling the SCS1 bit of the OSCCON register

FSCM       is  enabled      by  setting   the   FCMEN            bit  in  the    Both of these conditions restart the OST. While the

CONFIG1H          Configuration      register.       The         FSCM        is  OST is running, the device continues to operate from

applicable to all external oscillator modes (LP, XT, HS,                         the  INTOSC   selected   in  OSCCON.     When    the  OST

EC, RC and RCIO).                                                                times out, the Fail-Safe condition is cleared and the

FIGURE 2-8:                     FSCM BLOCK DIAGRAM                               device automatically switches over to the external clock

                                                                                 source. The Fail-Safe condition need not be cleared

                                         Clock Monitor                           before the OSCFIF flag is cleared.

                                             Latch                               2.11.4      RESET OR WAKE-UP FROM SLEEP

        External                             S       Q

        Clock                                                                    The FSCM is designed to detect an oscillator failure

                                                                                 after the Oscillator Start-up Timer (OST) has expired.

     LFINTOSC                                                                    The OST is used after waking up from Sleep and after

     Oscillator             ÷ 64          R              Q                       any type of Reset. The OST is not used with the EC or

                                                                                 RC Clock modes so that the FSCM will be active as

        31 kHz              488 Hz                                               soon as the Reset or wake-up has completed. When

     (~32 s)             (~2 ms)                                                the FSCM is enabled, the Two-Speed Start-up is also

           Sample Clock                                                          enabled. Therefore, the device will always be executing

                                                                      Clock      code while the OST is operating.

                                                                 Failure

                                                                 Detected           Note:    Due to the wide range of oscillator start-up

                                                                                             times,  the  Fail-Safe  circuit  is  not  active

2.11.1          FAIL-SAFE DETECTION                                                          during oscillator start-up (i.e., after exiting

                                                                                             Reset   or   Sleep).  After  an      appropriate

The     FSCM      module        detects   a     failed      oscillator    by                 amount of time, the user should check the

comparing the external oscillator to the FSCM sample                                         OSTS bit of the OSCCON register to verify

clock. The sample clock is generated by dividing the                                         the oscillator start-up and that the system

LFINTOSC          by  64.   See      Figure 2-8.         Inside  the      fail               clock   switchover      has      successfully

detector block is a latch. The external clock sets the                                       completed.

latch on each falling edge of the external clock. The

sample clock clears the latch on each rising edge of the

sample clock. A failure is detected when an entire half-

cycle of the sample clock elapses before the primary

clock goes low.

2.11.2          FAIL-SAFE OPERATION

When the external clock fails, the FSCM switches the

device clock to an internal clock source and sets the bit

flag OSCFIF of the PIR2 register. The OSCFIF flag will

generate an interrupt if the OSCFIE bit of the PIE2

register is also set. The device firmware can then take

steps to mitigate the problems that may arise from a

failed  clock.       The    system   clock     will  continue         to  be

sourced from the internal clock source until the device

firmware       successfully     restarts  the     external       oscillator

and switches back to external operation. An automatic

transition back to the failed clock source will not occur.

The     internal     clock  source   chosen       by        the  FSCM        is

determined        by  the   IRCF<2:0>       bits     of  the     OSCCON

register.      This   allows    the  internal        oscillator       to  be

configured before a failure occurs.

 2010-2015 Microchip Technology Inc.                                                                                DS40001303H-page 39
PIC18F2XK20/4XK20

FIGURE 2-9:              FSCM TIMING DIAGRAM

        Sample Clock

            System                                                          Oscillator

                 Clock                                                      Failure

                 Output

Clock Monitor Output

                 (Q)

                                                                                                       Failure

                                                                                                       Detected

            OSCFIF

                                            Test                            Test                             Test

          Note:  The system clock is normally at a much higher      frequency than the sample  clock.  The relative frequencies  in

                 this example have been chosen for clarity.

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

                                                                                                       Value on           Value on

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

                                                                                                                          Resets(1)

CONFIG1H         IESO    FCMEN      —             —      FOSC3      FOSC2   FOSC1        FOSC0         —                  —

INTCON    GIE/GIEH       PEIE/GIEL  TMR0IE  INT0IE           RBIE   TMR0IF  INT0IF       RBIF          0000  000x  0000   000x

OSCCON           IDLEN   IRCF2      IRCF1   IRCF0        OSTS       IOFS          SCS1   SCS0          0011  q000  0011   q000

OSCTUNE     INTSRC       PLLEN      TUN5          TUN4       TUN3   TUN2          TUN1   TUN0          0000  0000  000u   uuuu

PIE2        OSCFIE       C1IE       C2IE          EEIE   BCLIE      HLVDIE  TMR3IE       CCP2IE        0000  0000  0000   0000

PIR2        OSCFIF       C1IF       C2IF          EEIF   BCLIF      HLVDIF  TMR3IF       CCP2IF        0000  0000  0000   0000

IPR2        OSCFIP       —          —             —          —      —             —            —       1111  1111  1111   1111

Legend:   x = unknown, u = unchanged, – = unimplemented locations read as ‘0’. Shaded cells are not used by oscillators.

Note  1:  Other (non Power-up) Resets include MCLR Reset and Watchdog Timer Reset during normal operation.

DS40001303H-page 40                                                                       2010-2015 Microchip Technology Inc.
                                                                                  PIC18F2XK20/4XK20

3.0           POWER-MANAGED MODES                                                 3.1.1           CLOCK SOURCES

PIC18F2XK20/4XK20              devices  offer       a   total  of   seven         The SCS<1:0> bits allow the selection of one of three

operating        modes        for  more             efficient       power         clock sources for power-managed modes. They are:

management.          These     modes        provide     a      variety  of        •   the primary clock, as defined by the FOSC<3:0>

options for selective power conservation in applications                              Configuration bits

where resources may be limited (i.e., battery-powered                             •   the secondary clock (the Timer1 oscillator)

devices).                                                                         •   the internal oscillator block

There are three categories of power-managed modes:

•  Run modes                                                                      3.1.2           ENTERING POWER-MANAGED

•  Idle modes                                                                                     MODES

•  Sleep mode                                                                     Switching from one power-managed mode to another

                                                                                  begins  by      loading  the       OSCCON       register.   The

These categories define which portions of the device                              SCS<1:0> bits select the clock source and determine

are clocked and sometimes, what speed. The Run and                                which Run or Idle mode is to be used. Changing these

Idle modes may use any of the three available clock                               bits    causes  an  immediate      switch   to  the  new    clock

sources       (primary,   secondary         or    internal     oscillator         source, assuming that it is running. The switch may

block); the Sleep mode does not use a clock source.                               also be subject to clock transition delays. These are

The       power-managed            modes            include        several        discussed in Section 3.1.3 “Clock Transitions and

power-saving         features      offered      on      previous    PIC®          Status Indicators” and subsequent sections.

microcontroller      devices.      One  is  the        clock   switching          Entry to the power-managed Idle or Sleep modes is

feature which allows the controller to use the Timer1                             triggered by the execution of a SLEEP instruction. The

oscillator in place of the primary oscillator. Also included                      actual mode that results depends on the status of the

is the Sleep mode, offered by all PIC® microcontroller                            IDLEN bit of the OSCCON register.

devices, where all device clocks are stopped.                                     Depending on the current mode and the mode being

3.1           Selecting Power-Managed Modes                                       switched to, a change to a power-managed mode does

                                                                                  not     always  require  setting   all  of  these    bits.  Many

Selecting     a  power-managed              mode        requires        two       transitions may be done by changing the oscillator select

decisions:                                                                        bits, or changing the IDLEN bit, prior to issuing a SLEEP

•  Whether or not the CPU is to be clocked                                        instruction.    If  the  IDLEN     bit  is  already  configured

                                                                                  correctly, it may only be necessary to perform a SLEEP

•  The selection of a clock source                                                instruction to switch to the desired mode.

The IDLEN bit of the OSCCON register controls CPU

clocking,     while  the    SCS<1:0>        bits    of  the    OSCCON

register select the clock source. The individual modes,

bit settings, clock sources and affected modules are

summarized in Table 3-1.

TABLE 3-1:               POWER-MANAGED MODES

                          OSCCON Bits                          Module Clocking

     Mode            IDLEN(1)                                                             Available Clock and Oscillator Source

                                   SCS<1:0>                    CPU           Peripherals

   Sleep                 0              N/A                    Off           Off          None – All clocks are disabled

   PRI_RUN               N/A            00                 Clocked           Clocked      Primary – LP, XT, HS, HSPLL, RC, EC          and

                                                                                          Internal Oscillator Block(2).

                                                                                          This is the normal full power execution      mode.

   SEC_RUN               N/A            01                 Clocked           Clocked      Secondary – Timer1 Oscillator

   RC_RUN                N/A            1x                 Clocked           Clocked      Internal Oscillator Block(2)

   PRI_IDLE              1              00                     Off           Clocked      Primary – LP, XT, HS, HSPLL, RC, EC

   SEC_IDLE              1              01                     Off           Clocked      Secondary – Timer1 Oscillator

   RC_IDLE               1              1x                     Off           Clocked      Internal Oscillator Block(2)

   Note   1:  IDLEN reflects its value when the SLEEP instruction is executed.

          2:  Includes HFINTOSC and HFINTOSC postscaler, as well as the LFINTOSC source.

 2010-2015 Microchip Technology Inc.                                                                                     DS40001303H-page 41
PIC18F2XK20/4XK20

3.1.3          CLOCK TRANSITIONS AND STATUS                    3.2         Run Modes

               INDICATORS                                      In  the     Run  modes,    clocks       to  both   the  core  and

The length of the transition between clock sources is          peripherals are active. The difference between these

the sum of:                                                    modes is the clock source.

•  Start-up time of the new clock                              3.2.1           PRI_RUN MODE

•  Two and one half cycles of the old clock source

•  Two and one half cycles of the new clock                    The PRI_RUN mode is the normal, full power execution

Three flag bits indicate the current clock source and its      mode of the microcontroller. This is also the default

status. They are:                                              mode upon a device Reset, unless Two-Speed Start-up

                                                               is  enabled      (see   Section 2.10        “Two-Speed      Clock

•  OSTS (of the OSCCON register)                               Start-up Mode” for details). In this mode, the OSTS bit

•  IOFS (of the OSCCON register)                               is set. The IOFS bit will be set if the HFINTOSC is the

•  T1RUN (of the T1CON register)                               primary clock source and the oscillator is stable (see

                                                               Section 2.2 “Oscillator Control”).

In general, only one of these bits will be set while in a

given     power-managed  mode.     Table 3-2  shows       the  3.2.2           SEC_RUN MODE

relationship of the flags to the active main system clock      The SEC_RUN mode is the mode compatible to the

source.                                                        “clock     switching”    feature    offered   in   other    PIC18

TABLE 3-2:              SYSTEM CLOCK INDICATORS                devices. In this mode, the CPU and peripherals are

                                                               clocked from the Timer1 oscillator. This gives users the

OSTS IOFS T1RUN          Main System Clock Source              option of lower power consumption while still using a

   1      0        0            Primary Oscillator             high accuracy clock source.

   0      1        0               HFINTOSC                    SEC_RUN mode is entered by setting the SCS<1:0>

                                                               bits to ‘01’. When SEC_RUN mode is active all of the

   0      0        1          Secondary Oscillator             following are true:

   1      1        0     HFINTOSC as primary clock             •   The main clock source is switched to the Timer1

   0      0        0               LFINTOSC or                     oscillator

                         HFINTOSC is not yet stable            •   Primary oscillator is shut down

.                                                              •   T1RUN bit of the T1CON register is set

   Note 1:     Executing a SLEEP instruction does not          •   OSTS bit is cleared.

               necessarily place the device into Sleep             Note:       The Timer1 oscillator should already be

               mode. It acts as the trigger to place the                       running    prior    to  entering    SEC_RUN

               controller into either the Sleep mode or                        mode. If the T1OSCEN bit is not set when

               one of the Idle modes, depending on the                         the SCS<1:0> bits are set to ‘01’, entry to

               setting of the IDLEN bit.                                       SEC_RUN        mode     will  not   occur     until

                                                                               T1OSCEN bit is set and Timer1 oscillator

3.1.4          MULTIPLE FUNCTIONS OF THE                                       is ready.

               SLEEP COMMAND

The   power-managed      mode   that  is  invoked   with  the  On transitions from SEC_RUN mode to PRI_RUN, the

SLEEP instruction is determined by the setting of the          peripherals and CPU continue to be clocked from the

IDLEN     bit  of  the  OSCCON  register  at  the  time   the  Timer1      oscillator  while  the  primary   clock     is  started.

instruction is executed. All clocks stop and minimum           When the primary clock becomes ready, a clock switch

power is consumed when SLEEP is executed with the              back    to  the  primary   clock    occurs    (see   Figure 2-7).

IDLEN     bit  cleared.  The  system  clock   continues    to  When the clock switch is complete, the T1RUN bit is

supply a clock to the peripherals but is disconnected          cleared, the OSTS bit is set and the primary clock is

from the CPU when SLEEP is executed with the IDLEN             providing the main system clock. The Timer1 oscillator

bit set.                                                       continues to run as long as the T1OSCEN bit is set.

DS40001303H-page 42                                                                     2010-2015 Microchip Technology Inc.
                                                                   PIC18F2XK20/4XK20

3.2.3     RC_RUN MODE                                              3.3        Sleep Mode

In   RC_RUN         mode,  the  CPU     and  peripherals  are      The Power-Managed Sleep mode in the PIC18F2XK20/

clocked from the internal oscillator block using one of            4XK20 devices is identical to the legacy Sleep mode

the selections from the HFINTOSC multiplexer. In this              offered in all other PIC® microcontroller devices. It is

mode, the primary oscillator is shut down. RC_RUN                  entered by clearing the IDLEN bit (the default state on

mode provides the best power conservation of all the               device   Reset)   and  executing    the  SLEEP     instruction.

Run modes when the LFINTOSC is the main clock                      This shuts down the selected oscillator (Figure 3-1). All

source. It works well for user applications which are not          clock source Status bits are cleared.

highly timing sensitive or do not require high-speed               Entering the Sleep mode from any other mode does not

clocks at all times.                                               require a clock switch. This is because no clocks are

If   the  primary   clock  source  is   the  internal  oscillator  needed once the controller has entered Sleep. If the

block (either LFINTOSC or HFINTOSC), there are no                  WDT is selected, the LFINTOSC source will continue to

distinguishable     differences    between   PRI_RUN      and      operate. If the Timer1 oscillator is enabled, it will also

RC_RUN modes during execution. However, a clock                    continue to run.

switch delay will occur during entry to and exit from              When a wake event occurs in Sleep mode (by interrupt,

RC_RUN mode. Therefore, if the primary clock source                Reset or WDT time-out), the device will not be clocked

is   the  internal  oscillator  block,  the  use  of   RC_RUN      until the clock source selected by the SCS<1:0> bits

mode is not recommended. See 2.9.3 “Clock Switch                   becomes ready (see Figure 3-2), or it will be clocked

Timing” for details about clock switching.                         from the internal oscillator block if either the Two-Speed

RC_RUN mode is entered by setting the SCS1 bit to                  Start-up or the Fail-Safe Clock Monitor are enabled

‘1’. The SCS0 bit can be either ‘0’ or ‘1’ but should be           (see Section 23.0 “Special Features of the CPU”). In

‘0’  to   maintain    software     compatibility  with  future     either case, the OSTS bit is set when the primary clock

devices. When the clock source is switched from the                is providing the device clocks. The IDLEN and SCS bits

primary oscillator to the HFINTOSC multiplexer, the                are not affected by the wake-up.

primary oscillator is shut down and the OSTS bit is

cleared. The IRCF bits may be modified at any time to              3.4        Idle Modes

immediately change the clock speed.

On transitions from RC_RUN mode to PRI_RUN mode,                   The  Idle  modes  allow        the  controller’s  CPU  to     be

the device continues to be clocked from the internal               selectively shut down while the peripherals continue to

oscillator block while the primary oscillator is started.          operate. Selecting a particular Idle mode allows users

When the primary oscillator becomes ready, a clock                 to further manage power consumption.

switch to the primary clock occurs. When the clock                 If the IDLEN bit is set to a ‘1’ when a SLEEP instruction is

switch is complete, the IOFS bit is cleared, the OSTS              executed, the peripherals will be clocked from the clock

bit is set and the primary oscillator is providing the main        source selected by the SCS<1:0> bits; however, the CPU

system clock. The HFINTOSC will continue to run if any             will not be clocked. The clock source Status bits are not

of the conditions noted in Section 2.5.2 “HFINTOSC”                affected. Setting IDLEN and executing a SLEEP instruc-

are met. The LFINTOSC source will continue to run if               tion provides a quick method of switching from a given

any of the conditions noted in Section 2.5.3 “LFIN-                Run mode to its corresponding Idle mode.

TOSC” are met.                                                     If  the  WDT  is  selected,    the  LFINTOSC       source  will

                                                                   continue to operate. If the Timer1 oscillator is enabled,

                                                                   it will also continue to run.

                                                                   Since the CPU is not executing instructions, the only

                                                                   exits from any of the Idle modes are by interrupt, WDT

                                                                   time-out, or a Reset. When a wake event occurs, CPU

                                                                   execution     is  delayed      by   an   interval  of  TCSD

                                                                   (parameter 38, Table ) while it becomes ready to exe-

                                                                   cute code. When the CPU begins executing code, it

                                                                   resumes with the same clock source for the current Idle

                                                                   mode.    For  example,  when        waking  from   RC_IDLE

                                                                   mode, the internal oscillator block will clock the CPU

                                                                   and peripherals (in other words, RC_RUN mode). The

                                                                   IDLEN and SCS bits are not affected by the wake-up.

                                                                   While in any Idle mode or the Sleep mode, a WDT

                                                                   time-out will result in a WDT wake-up to the Run mode

                                                                   currently specified by the SCS<1:0> bits.

 2010-2015 Microchip Technology Inc.                                                                  DS40001303H-page 43
PIC18F2XK20/4XK20

FIGURE      3-1:            TRANSITION TIMING FOR              ENTRY   TO      SLEEP                 MODE

            Q1      Q2  Q3  Q4  Q1

OSC1

CPU

Clock

Peripheral

Clock

Sleep

Program                 PC                                     PC + 2
Counter

FIGURE 3-2:                 TRANSITION TIMING FOR WAKE FROM SLEEP                                        (HSPLL)

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

            OSC1

PLL Clock                               TOST(1)  TPLL(1)

            Output

CPU Clock

Peripheral

            Clock

Program                                          PC                            PC + 2                        PC + 4           PC  +6

        Counter

                            Wake Event           OSTS bit set

Note 1:     TOST        =  1024 TOSC; TPLL = 2 ms (approx). These intervals are not shown to scale.

DS40001303H-page 44                                                                                           2010-2015  Microchip Technology  Inc.
                                                                            PIC18F2XK20/4XK20

3.4.1         PRI_IDLE MODE                                                 3.4.2           SEC_IDLE MODE

This mode is unique among the three low-power Idle                          In   SEC_IDLE        mode,   the  CPU      is  disabled    but  the

modes, in that it does not disable the primary device                       peripherals continue to be clocked from the Timer1

clock. For timing sensitive applications, this allows for                   oscillator.  This    mode    is   entered     from  SEC_RUN     by

the fastest resumption of device operation with its more                    setting    the  IDLEN        bit  and  executing    a      SLEEP

accurate primary clock source, since the clock source                       instruction. If the device is in another Run mode, set the

does not have to “warm-up” or transition from another                       IDLEN bit first, then set the SCS<1:0> bits to ‘01’ and

oscillator.                                                                 execute SLEEP. When the clock source is switched to

PRI_IDLE mode is entered from PRI_RUN mode by                               the  Timer1     oscillator,  the  primary      oscillator  is   shut

setting the IDLEN bit and executing a SLEEP instruc-                        down, the OSTS bit is cleared and the T1RUN bit is set.

tion. If the device is in another Run mode, set IDLEN                       When a wake event occurs, the peripherals continue to

first,  then  clear   the  SCS    bits   and    execute   SLEEP.            be clocked from the Timer1 oscillator. After an interval

Although the CPU is disabled, the peripherals continue                      of TCSD following the wake event, the CPU begins exe-

to be clocked from the primary clock source specified                       cuting code being clocked by the Timer1 oscillator. The

by the FOSC<3:0> Configuration bits. The OSTS bit                           IDLEN and SCS bits are not affected by the wake-up;

remains set (see Figure 3.3).                                               the Timer1 oscillator continues to run (see Figure 3-4).

When a wake event occurs, the CPU is clocked from the                           Note:       The Timer1 oscillator should already be

primary      clock  source.    A  delay     of  interval  TCSD  is                          running    prior  to   entering     SEC_IDLE

required     between  the      wake  event      and  when  code                             mode. If the T1OSCEN bit is not set when

execution starts. This is required to allow the CPU to                                      the  SLEEP       instruction   is   executed,   the

become ready to execute instructions. After the wake-                                       main system clock will continue to operate

up, the OSTS bit remains set. The IDLEN and SCS bits                                        in the previously selected mode and the

are not affected by the wake-up (see Figure 3-4).                                           corresponding IDLE mode will be entered

                                                                                            (i.e., PRI_IDLE or RC_IDLE).

FIGURE 3-3:                  TRANSITION TIMING             FOR ENTRY        TO IDLE MODE

                           Q1     Q2            Q3   Q4         Q1

              OSC1

         CPU Clock

          Peripheral

              Clock

             Program                    PC                          PC + 2

             Counter

FIGURE 3-4:                  TRANSITION         TIMING     FOR      WAKE FROM        IDLE   TO   RUN     MODE

                      Q1                                                                         Q2                Q3                  Q4

          OSC1

                                                    TCSD

        CPU Clock

        Peripheral

          Clock

        Program                                                             PC

        Counter

                                  Wake Event

 2010-2015 Microchip Technology Inc.                                                                                  DS40001303H-page 45
PIC18F2XK20/4XK20

3.4.3          RC_IDLE MODE                                              3.5.1          EXIT BY INTERRUPT

In   RC_IDLE        mode,      the   CPU   is  disabled     but     the  Any of the available interrupt sources can cause the

peripherals continue to be clocked from the internal                     device to exit from an Idle mode or the Sleep mode to

oscillator block from the HFINTOSC multiplexer output.                   a Run mode. To enable this functionality, an interrupt

This mode allows for controllable power conservation                     source must be enabled by setting its enable bit in one

during Idle periods.                                                     of the INTCON or PIE registers. The PEIE bit must also

From RC_RUN, this mode is entered by setting the                         be set If the desired interrupt enable bit is in a PIE

IDLEN bit and executing a SLEEP instruction. If the                      register.  The     exit     sequence  is  initiated  when  the

device is in another Run mode, first set IDLEN, then set                 corresponding interrupt flag bit is set.

the SCS1 bit and execute SLEEP. It is recommended                        The    instruction       immediately  following      the  SLEEP

that   SCS0    also       be   cleared,    although  its    value   is   instruction is executed on all exits by interrupt from Idle

ignored, to maintain software compatibility with future                  or Sleep modes. Code execution then branches to the

devices. The HFINTOSC multiplexer may be used to                         interrupt  vector    if  the    GIE/GIEH  bit  of   the   INTCON

select a higher clock frequency by modifying the IRCF                    register   is  set,  otherwise  code      execution      continues

bits before executing the SLEEP instruction. When the                    without branching (see Section 9.0 “Interrupts”).

clock source is switched to the HFINTOSC multiplexer,                    A fixed delay of interval TCSD following the wake event

the primary oscillator is shut down and the OSTS bit is                  is required when leaving Sleep and Idle modes. This

cleared.                                                                 delay is required for the CPU to prepare for execution.

If the IRCF bits are set to any non-zero value, or the                   Instruction execution resumes on the first clock cycle

INTSRC bit is set, the HFINTOSC output is enabled.                       following this delay.

The IOFS bit becomes set, after the HFINTOSC output

becomes        stable,        after  an    interval  of     TIOBST       3.5.2          EXIT BY WDT TIME-OUT

(parameter 39, Table ). Clocks to the peripherals con-                   A WDT time-out will cause different actions depending

tinue  while   the   HFINTOSC        source    stabilizes.      If  the  on which power-managed mode the device is in when

IRCF    bits   were  previously      at    a   non-zero   value,    or   the time-out occurs.

INTSRC was set before the SLEEP instruction was exe-                     If the device is not executing code (all Idle modes and

cuted and the HFINTOSC source was already stable,                        Sleep mode), the time-out will result in an exit from the

the   IOFS     bit  will  remain     set.  If  the  IRCF    bits    and  power-managed            mode   (see      Section 3.2     “Run

INTSRC are all clear, the HFINTOSC output will not be                    Modes” and Section 3.3 “Sleep Mode”). If the device

enabled, the IOFS bit will remain clear and there will be                is executing code (all Run modes), the time-out will

no indication of the current clock source.                               result in a WDT Reset (see Section 23.2 “Watchdog

When a wake event occurs, the peripherals continue to                    Timer (WDT)”).

be    clocked  from       the  HFINTOSC        multiplexer  output.      The WDT timer and postscaler are cleared by any one

After a delay of TCSD following the wake event, the CPU                  of the following:

begins    executing           code   being     clocked      by      the

HFINTOSC multiplexer. The IDLEN and SCS bits are                         •  executing a SLEEP instruction

not affected by the wake-up. The LFINTOSC source                         •  executing a CLRWDT instruction

will continue to run if either the WDT or the Fail-Safe                  •  the loss of the currently selected clock source

Clock Monitor is enabled.                                                   when the Fail-Safe Clock Monitor is enabled

3.5       Exiting Idle and Sleep Modes                                   •  modifying the IRCF bits in the OSCCON register

                                                                            when the internal oscillator block is the device

An exit from Sleep mode or any of the Idle modes is                         clock source

triggered by any one of the following:                                   3.5.3          EXIT BY RESET

•   an interrupt                                                         Exiting Sleep and Idle modes by Reset causes code

•   a Reset                                                              execution      to  restart  at  address   0.   See   Section 4.0

•   a watchdog time-out                                                  “Reset” for more details.

This section discusses the triggers that cause exits                     The exit delay time from Reset to the start of code

from power-managed modes. The clocking subsystem                         execution depends on both the clock sources before

actions are discussed in each of the power-managed                       and after the wake-up and the type of oscillator. Exit

modes (see Section 3.2 “Run Modes”, Section 3.3                          delays are summarized in Table 3-3.

“Sleep Mode” and Section 3.4 “Idle Modes”).

DS40001303H-page 46                                                                                2010-2015 Microchip Technology Inc.
                                                            PIC18F2XK20/4XK20

3.5.4        EXIT WITHOUT AN OSCILLATOR                     In  these  instances,  the   primary       clock  source  either

             START-UP DELAY                                 does not require an oscillator start-up delay since it is

Certain  exits  from   power-managed   modes  do       not  already    running  (PRI_IDLE),        or  normally      does   not

invoke the OST at all. There are two cases:                 require an oscillator start-up delay (RC, EC, INTOSC,

                                                            and  INTOSCIO       modes).    However,    a      fixed  delay  of

•  PRI_IDLE mode, where the primary clock source            interval TCSD following the wake event is still required

   is not stopped and                                       when leaving Sleep and Idle modes to allow the CPU

•  the primary clock source is not any of the LP, XT,       to prepare for execution. Instruction execution resumes

   HS or HSPLL modes.                                       on the first clock cycle following this delay.

TABLE 3-3:      EXIT DELAY ON WAKE-UP BY RESET FROM SLEEP MODE OR ANY IDLE MODE

                (BY CLOCK SOURCES)

             Clock Source                    Clock Source              Exit Delay                  Clock Ready Status

         before Wake-up                      after Wake-up                                             Bit (OSCCON)

                                             LP, XT, HS

         Primary Device Clock                 HSPLL                    TCSD(1)                            OSTS

         (PRI_IDLE mode)                      EC, RC

                                             HFINTOSC(2)                                                      IOFS

                                             LP, XT, HS                TOST(3)

   T1OSC or LFINTOSC(1)                       HSPLL                    TOST + tPLL(3)                     OSTS

                                              EC, RC                   TCSD(1)

                                             HFINTOSC(1)               TIOBST(4)                              IOFS

                                             LP, XT, HS                TOST(4)

             HFINTOSC(2)                      HSPLL                    TOST + tPLL(3)                     OSTS

                                              EC, RC                   TCSD(1)

                                             HFINTOSC(1)               None                                   IOFS

                                             LP, XT, HS                TOST(3)

                None                          HSPLL                    TOST + tPLL(3)                     OSTS

             (Sleep mode)                     EC, RC                   TCSD(1)

                                             HFINTOSC(1)               TIOBST(4)                              IOFS

   Note  1:  TCSD (parameter 38) is a required delay when waking from Sleep and all Idle modes and runs concurrently

             with any other required delays (see Section 3.4 “Idle Modes”). On Reset, HFINTOSC defaults to 1 MHz.

         2:  Includes both the HFINTOSC 16 MHz source and postscaler derived frequencies.

         3:  TOST is the Oscillator Start-up Timer (parameter 32). tPLL is the PLL Lock-out Timer (parameter F12).

         4:  Execution continues during the HFINTOSC stabilization period, TIOBST (parameter 39).

 2010-2015 Microchip Technology Inc.                                                              DS40001303H-page 47
PIC18F2XK20/4XK20

4.0        RESET                                                  A simplified block diagram of the On-Chip Reset Circuit

                                                                  is shown in Figure 4-1.

The  PIC18F2XK20/4XK20                devices      differentiate

between various kinds of Reset:                                   4.1        RCON Register

a)   Power-on Reset (POR)                                         Device Reset events are tracked through the RCON

b)   MCLR Reset during normal operation                           register (Register 4-1). The lower five bits of the regis-

c)   MCLR Reset during power-managed modes                        ter indicate that a specific Reset event has occurred. In

d)   Watchdog Timer (WDT) Reset (during                           most cases, these bits can only be cleared by the event

     execution)                                                   and must be set by the application after the event. The

e)   Programmable Brown-out Reset (BOR)                           state of these flag bits, taken together, can be read to

f)   RESET Instruction                                            indicate the type of Reset that just occurred. This is

g)   Stack Full Reset                                             described in more detail in Section 4.6 “Reset State

h)   Stack Underflow Reset                                        of Registers”.

This section discusses Resets generated by MCLR,                  The RCON register also has control bits for setting

POR and BOR and covers the operation of the various               interrupt  priority  (IPEN)  and      software      control  of  the

start-up   timers.  Stack     Reset   events  are  covered  in    BOR  (SBOREN).          Interrupt     priority  is  discussed    in

Section 5.1.2.4 “Stack Full and Underflow Resets”.                Section 9.0     “Interrupts”.         BOR       is  covered      in

WDT Resets are covered in Section 23.2 “Watchdog                  Section 4.4 “Brown-out Reset (BOR)”.

Timer (WDT)”.

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

               RESET

           Instruction

               Stack         Stack Full/Underflow Reset

               Pointer

                              External Reset

     MCLR                      MCLRE

                    ( )_IDLE

                      Sleep

                      WDT

                    Time-out

                        VDD          POR

                      Detect

     VDD

                    Brown-out

                      Reset

                               BOREN                                                             S

               OST/PWRT

                             OST(2)   1024 Cycles                                                                     Chip_Reset

                               10-bit Ripple Counter                                                 R            Q

    OSC1

               32 s         PWRT(2)  65.5 ms

           LFINTOSC            11-bit Ripple Counter

                                                                                                                     Enable PWRT

                                                                                                                  Enable OST(1)

     Note  1:  See Table 4-2 for time-out situations.

           2:  PWRT and OST counters are reset by POR and BOR. See Sections 4.3 and 4.4.

DS40001303H-page 48                                                                        2010-2015 Microchip Technology Inc.
                                                              PIC18F2XK20/4XK20

REGISTER 4-1:      RCON: RESET CONTROL REGISTER

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

        IPEN      SBOREN(1)            —           RI            TO             PD                POR(2)           BOR

bit 7                                                                                                                   bit 0

Legend:

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

-n = Value at POR             ‘1’ = Bit is set            ‘0’ = Bit is cleared                 x = Bit is unknown

bit 7         IPEN: Interrupt Priority Enable bit

              1 = Enable priority levels on interrupts

              0 = Disable priority levels on interrupts (PIC16CXXX Compatibility mode)

bit 6         SBOREN: BOR Software Enable bit(1)

              If BOREN<1:0> = 01:

              1 = BOR is enabled

              0 = BOR is disabled

              If BOREN<1:0> = 00, 10 or 11:

              Bit is disabled and read as ‘0’.

bit 5         Unimplemented: Read as ‘0’

bit 4         RI: RESET Instruction Flag bit

              1=   The RESET instruction was not executed (set by firmware or Power-on Reset)

              0=   The RESET instruction was executed causing a device Reset (must be set in firmware                after  a

                   code-executed Reset occurs)

bit  3        TO: Watchdog Time-out Flag bit

              1=   Set by power-up, CLRWDT instruction or SLEEP instruction

              0=   A WDT time-out occurred

bit  2        PD: Power-down Detection Flag bit

              1=   Set by power-up or by the CLRWDT instruction

              0=   Set by execution of the SLEEP instruction

bit  1        POR: Power-on Reset Status bit(2)

              1 = No Power-on Reset occurred

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

bit  0        BOR: Brown-out Reset Status bit(3)

              1=   A Brown-out Reset has not occurred (set by firmware only)

              0=   A Brown-out Reset occurred (must be set by firmware after a POR or Brown-out Reset occurs)

Note    1:    When CONFIG2L[2:1] = 01, then the SBOREN Reset state is ‘1’; otherwise, it is ‘0’.

        2:    The actual Reset value of POR is determined by the type of device Reset. See the notes following this

              register and Section 4.6 “Reset State of Registers” for additional information.

        3:    See Table 4-3.

     Note 1:  Brown-out Reset is indicated when BOR is ‘0’ and POR is ‘1’ (assuming that both POR and BOR were set

              to ‘1’ by firmware immediately after POR).

        2:    It is recommended that the POR bit be set after a Power-on Reset has been detected so that subsequent

              Power-on Resets may be detected.

 2010-2015 Microchip Technology Inc.                                                             DS40001303H-page 49
PIC18F2XK20/4XK20

4.2         Master Clear (MCLR)                                     FIGURE 4-2:            EXTERNAL POWER-ON

The   MCLR   pin  provides   a      method    for  triggering  an                          RESET CIRCUIT (FOR

external Reset of the device. A Reset is generated by                                      SLOW VDD POWER-UP)

holding the pin low. These devices have a noise filter in

the MCLR Reset path which detects and ignores small                       VDD      VDD

pulses.                                                                                                  PIC® MCU

The MCLR pin is not driven low by any internal Resets,                         D   R

including the WDT.                                                                            R1

In PIC18F2XK20/4XK20 devices, the MCLR input can                                                         MCLR

be disabled with the MCLRE Configuration bit. When                                      C

MCLR is disabled, the pin becomes a digital input. See

Section 10.6 “PORTE, TRISE and LATE Registers”

for more information.                                               Note  1:   External Power-on Reset circuit is required

4.3         Power-on Reset (POR)                                               only if the VDD power-up slope is too slow.

                                                                               The diode D helps discharge the capacitor

A    Power-on  Reset         pulse    is  generated    on-chip                 quickly when VDD powers down.

whenever VDD rises above a certain threshold. This                        2:   15 k < R < 40 k is recommended to make

allows the device to start in the initialized state when                       sure that the voltage drop across R does not

VDD is adequate for operation.                                                 violate the device’s electrical specification.

To take advantage of the POR circuitry, tie the MCLR                      3:   R1  1 k will limit any current flowing into

                                                                               MCLR from external capacitor C, in the event

pin through a resistor to VDD. This will eliminate exter-                      of  MCLR/VPP   pin  breakdown,       due        to

nal   RC    components       usually  needed       to  create  a               Electrostatic  Discharge  (ESD)  or  Electrical

Power-on Reset delay. A minimum rise rate for VDD is                           Overstress (EOS).

specified (parameter D004). For a slow rise time, see

Figure 4-2.

When the device starts normal operation (i.e., exits the

Reset     condition),   device        operating    parameters

(voltage, frequency, temperature, etc.) must be met to

ensure proper operation. If these conditions are not

met,   the   device    must  be     held  in  Reset    until   the

operating conditions are met.

POR events are captured by the POR bit of the RCON

register. The state of the bit is set to ‘0’ whenever a

POR occurs; it does not change for any other Reset

event. POR is not reset to ‘1’ by any hardware event.

To capture multiple events, the user must manually set

the bit to ‘1’ by software following any POR.

DS40001303H-page 50                                                                      2010-2015 Microchip Technology Inc.
                                                                     PIC18F2XK20/4XK20

4.4     Brown-out Reset (BOR)                                        4.4.2         SOFTWARE ENABLED BOR

PIC18F2XK20/4XK20 devices implement a BOR circuit                    When BOREN<1:0> = 01, the BOR can be enabled or

that provides the user with a number of configuration and            disabled by the user in software. This is done with the

power-saving  options.       The  BOR     is  controlled  by    the  SBOREN       control      bit  of   the  RCON          register.  Setting

BORV<1:0> and BOREN<1:0> bits of the CONFIG2L                        SBOREN enables the BOR to function as previously

Configuration register. There are a total of four BOR                described.    Clearing         SBOREN         disables        the  BOR

configurations which are summarized in Table 4-1.                    entirely. The SBOREN bit operates only in this mode;

The BOR threshold is set by the BORV<1:0> bits. If                   otherwise it is read as ‘0’.

BOR is enabled (any values of BOREN<1:0>, except                     Placing the BOR under software control gives the user

‘00’), any drop of VDD below VBOR (parameter D005)                   the additional flexibility of tailoring the application to its

for  greater  than     TBOR  (parameter 35)     will    reset   the  environment without having to reprogram the device to

device. A Reset may or may not occur if VDD falls below              change BOR configuration. It also allows the user to

VBOR    for   less  than  TBOR.     The   chip  will    remain  in   tailor  device    power        consumption         in       software      by

Brown-out Reset until VDD rises above VBOR.                          eliminating   the   incremental           current       that  the  BOR

If the Power-up Timer is enabled, it will be invoked after           consumes. While the BOR current is typically very small,

VDD rises above VBOR; it then will keep the chip in                  it may have some impact in low-power applications.

Reset   for   an        additional  time        delay,    TPWRT         Note:      Even        when      BOR       is   under      software

(parameter 33).     If  VDD  drops  below       VBOR    while   the                control, the BOR Reset voltage level is still

Power-up Timer is running, the chip will go back into a                            set by the BORV<1:0> Configuration bits.

Brown-out     Reset     and  the    Power-up    Timer     will  be                 It cannot be changed by software.

initialized. Once VDD rises above VBOR, the Power-up

Timer will execute the additional time delay.                        4.4.3         DISABLING BOR IN SLEEP MODE

BOR     and   the       Power-on    Timer       (PWRT)          are  When    BOREN<1:0>             =   10,   the  BOR       remains    under

independently configured. Enabling BOR Reset does                    hardware      control          and      operates        as    previously

not automatically enable the PWRT.                                   described. Whenever the device enters Sleep mode,

The BOR circuit has an output that feeds into the POR                however, the BOR is automatically disabled. When the

circuit and rearms the POR within the operating range                device returns to any other operating mode, BOR is

of the BOR. This early rearming of the POR ensures                   automatically re-enabled.

that the device will remain in Reset in the event that VDD           This    mode      allows  for      applications    to   recover       from

falls below the operating range of the BOR circuitry.                brown-out     situations,      while     actively      executing   code,

                                                                     when the device requires BOR protection the most. At

4.4.1         DETECTING BOR                                          the same time, it saves additional power in Sleep mode

When BOR is enabled, the BOR bit always resets to ‘0’                by eliminating the small incremental BOR current.

on any BOR or POR event. This makes it difficult to                  4.4.4         MINIMUM BOR ENABLE TIME

determine if a BOR event has occurred just by reading

the state of BOR alone. A more reliable method is to                 Enabling     the  BOR     also      enables        the  Fixed     Voltage

simultaneously check the state of both POR and BOR.                  Reference (FVR) when no other peripheral requiring the

This assumes that the POR and BOR bits are reset to                  FVR is active. The BOR becomes active only after the

‘1’ by software immediately after any POR event. If                  FVR stabilizes. Therefore, to ensure BOR protection,

BOR is ‘0’ while POR is ‘1’, it can be reliably assumed              the     FVR  settling     time      must      be   considered      when

that a BOR event has occurred.                                       enabling     the  BOR     in   software       or   when      the  BOR     is

                                                                     automatically enabled after waking from Sleep. If the

                                                                     BOR is disabled, in software or by reentering Sleep

                                                                     before the FVR stabilizes, the BOR circuit will not sense

                                                                     a  BOR    condition.      The     FVRST       bit  of   the   CVRCON2

                                                                     register can be used to determine FVR stability.

TABLE 4-1:              BOR  CONFIGURATIONS

BOR Configuration            Status of

                             SBOREN                                          BOR Operation

BOREN1        BOREN0         (RCON<6>)

     0              0        Unavailable      BOR disabled; must be enabled by reprogramming the Configuration bits.

     0              1        Available        BOR enabled by software; operation controlled by SBOREN.

     1              0        Unavailable      BOR enabled by hardware in Run and Idle modes, disabled during

                                              Sleep mode.

     1              1        Unavailable      BOR enabled by hardware; must be disabled by reprogramming the Configuration              bits.

 2010-2015 Microchip Technology Inc.                                                                              DS40001303H-page 51
PIC18F2XK20/4XK20

4.5           Device Reset Timers                                            The OST time-out is invoked only for XT, LP, HS and

                                                                             HSPLL modes and only on Power-on Reset, or on exit

PIC18F2XK20/4XK20              devices         incorporate     three         from all power-managed modes that stop the external

separate       on-chip    timers    that       help  regulate           the  oscillator.

Power-on       Reset      process.  Their   main     function       is  to

ensure that the device clock is stable before code is                        4.5.3          PLL LOCK TIME-OUT

executed. These timers are:                                                  With the PLL enabled in its PLL mode, the time-out

•  Power-up Timer (PWRT)                                                     sequence       following  a     Power-on   Reset      is  slightly

•  Oscillator Start-up Timer (OST)                                           different from other oscillator modes. A separate timer

•  PLL Lock Time-out                                                         is used to provide a fixed time-out that is sufficient for

                                                                             the PLL to lock to the main oscillator frequency. This

4.5.1          POWER-UP TIMER (PWRT)                                         PLL lock time-out (TPLL) is typically 2 ms and follows

The           Power-up           Timer            (PWRT)                of   the oscillator start-up time-out.

PIC18F2XK20/4XK20             devices      is  an    11-bit  counter         4.5.4          TIME-OUT SEQUENCE

which uses the LFINTOSC source as the clock input.

This      yields      an  approximate          time  interval           of   On power-up, the time-out sequence is as follows:

2048 x 32 s = 65.6 ms. While the PWRT is counting,                          1.   After the POR pulse has cleared, PWRT time-out

the device is held in Reset.                                                      is invoked (if enabled).

The power-up time delay depends on the LFINTOSC                              2.   Then, the OST is activated.

clock and will vary from chip-to-chip due to temperature                     The     total  time-out   will  vary   based    on    oscillator

and   process     variation.     See    DC     parameter     33         for  configuration and the status of the PWRT. Figure 4-3,

details.                                                                     Figure 4-4,     Figure 4-5,  Figure 4-6    and  Figure 4-7  all

The    PWRT       is  enabled       by  clearing     the  PWRTEN             depict  time-out  sequences        on  power-up,      with  the

Configuration bit.                                                           Power-up Timer enabled and the device operating in

                                                                             HS   Oscillator   mode.      Figures  4-3    through  4-6   also

4.5.2          OSCILLATOR START-UP TIMER                                     apply to devices operating in XT or LP modes. For

               (OST)                                                         devices in RC mode and with the PWRT disabled, on

The Oscillator Start-up Timer (OST) provides a 1024                          the other hand, there will be no time-out at all.

oscillator    cycle   (from   OSC1      input)     delay     after      the  Since the time-outs occur from the POR pulse, if MCLR

PWRT delay is over (parameter 33). This ensures that                         is kept low long enough, all time-outs will expire, after

the   crystal  oscillator    or     resonator   has  started        and      which,  bringing  MCLR          high   will  allow        program

stabilized.                                                                  execution to begin immediately (Figure 4-5). This is

                                                                             useful for testing purposes or to synchronize more than

                                                                             one PIC18FXXK20 device operating in parallel.

TABLE 4-2:                TIME-OUT IN VARIOUS SITUATIONS

          Oscillator                                      Power-up(2) and Brown-out                                     Exit from

      Configuration                            PWRTEN = 0                         PWRTEN = 1                 Power-Managed Mode

HSPLL                            66 ms(1) + 1024 TOSC + 2 ms(2)              1024 TOSC + 2 ms(2)                   1024 TOSC + 2 ms(2)

HS, XT, LP                              66 ms(1) + 1024 TOSC                        1024 TOSC                           1024 TOSC

EC, ECIO                                        66 ms(1)                                  —                                  —

RC, RCIO                                        66 ms(1)                                  —                                  —

INTIO1, INTIO2                                  66 ms(1)                                  —                                  —

Note      1:  66 ms (65.5 ms) is the nominal Power-up Timer (PWRT) delay.

          2:  2 ms is the nominal time required for the PLL to lock.

DS40001303H-page 52                                                                             2010-2015 Microchip Technology Inc.
                                                        PIC18F2XK20/4XK20

FIGURE 4-3:        TIME-OUT            SEQUENCE ON POWER-UP (MCLR TIED TO VDD, VDD RISE < TPWRT)

             VDD

             MCLR

INTERNAL POR

                                                 TPWRT

PWRT TIME-OUT                                                  TOST

OST TIME-OUT

INTERNAL RESET

FIGURE 4-4:        TIME-OUT            SEQUENCE ON POWER-UP (MCLR NOT TIED TO VDD): CASE 1

             VDD

             MCLR

INTERNAL POR

                                                        TPWRT

PWRT TIME-OUT                                                         TOST

OST TIME-OUT

INTERNAL RESET

FIGURE 4-5:        TIME-OUT            SEQUENCE  ON  POWER-UP  (MCLR  NOT TIED  TO  VDD):  CASE  2

             VDD

             MCLR

INTERNAL POR

                                                        TPWRT

PWRT TIME-OUT                                                         TOST

OST TIME-OUT

INTERNAL RESET

 2010-2015 Microchip Technology Inc.                                               DS40001303H-page 53
PIC18F2XK20/4XK20

FIGURE 4-6:          SLOW  RISE      TIME    (MCLR    TIED TO      VDD, VDD  RISE  >  TPWRT)

                                                                   5V

                     VDD                     0V

                     MCLR

       INTERNAL POR

                                                      TPWRT

       PWRT TIME-OUT

                                                                             TOST

       OST TIME-OUT

       INTERNAL RESET

FIGURE 4-7:          TIME-OUT SEQUENCE ON POR W/PLL ENABLED                        (MCLR  TIED  TO  VDD)

             VDD

             MCLR

INTERNAL POR

                                                      TPWRT

PWRT TIME-OUT                                                      TOST

OST TIME-OUT                                                                 TPLL

PLL TIME-OUT

INTERNAL RESET

Note:  TOST = 1024 clock cycles.

       TPLL  2 ms max. First three  stages  of  the  PWRT timer.

DS40001303H-page 54                                                                 2010-2015 Microchip Technology  Inc.
                                                                     PIC18F2XK20/4XK20

4.6        Reset State of Registers                                  Table 4-4  describes  the  Reset  states  for  all  of  the

                                                                     Special Function Registers. These are categorized by

Some registers are unaffected by a Reset. Their status               Power-on and Brown-out Resets, Master Clear and

is  unknown      on  POR   and    unchanged       by   all  other    WDT Resets and WDT wake-ups.

Resets. All other registers are forced to a “Reset state”

depending on the type of Reset that occurred.

Most registers are not affected by a WDT wake-up,

since  this  is  viewed    as     the  resumption     of  normal

operation. Status bits from the RCON register, RI, TO,

PD, POR and BOR, are set or cleared differently in

different  Reset     situations,  as   indicated  in  Table 4-3.

These  bits  are     used  by     software  to  determine   the

nature of the Reset.

TABLE 4-3:           STATUS BITS, THEIR SIGNIFICANCE AND THE INITIALIZATION CONDITION

                     FOR RCON REGISTER

                                            Program                  RCON Register                     STKPTR Register

             Condition                      Counter

                                                            SBOREN   RI  TO     PD     POR      BOR    STKFUL       STKUNF

Power-on Reset                              0000h                 1  1   1      1          0    0      0                 0

RESET Instruction                           0000h           u(2)     0   u      u          u    u      u                 u

Brown-out Reset                             0000h           u(2)     1   1      1          u    0      u                 u

MCLR during Power-Managed                   0000h           u(2)     u   1      u          u    u      u                 u

Run Modes

MCLR during Power-Managed                   0000h           u(2)     u   1      0          u    u      u                 u

Idle Modes and Sleep Mode

WDT Time-out during Full Power              0000h           u(2)     u   0      u          u    u      u                 u

or Power-Managed Run Mode

MCLR during Full Power                      0000h           u(2)     u   u      u          u    u      u                 u

Execution

Stack Full Reset (STVREN = 1)               0000h           u(2)     u   u      u          u    u      1                 u

Stack Underflow Reset                       0000h           u(2)     u   u      u          u    u      u                 1

(STVREN = 1)

Stack Underflow Error (not an               0000h           u(2)     u   u      u          u    u      u                 1

actual Reset, STVREN = 0)

WDT Time-out during                         PC + 2          u(2)     u   0      0          u    u      u                 u

Power-Managed Idle or Sleep

Modes

Interrupt Exit from                         PC + 2(1)       u(2)     u   u      0          u    u      u                 u

Power-Managed Modes

Legend:      u = unchanged

Note   1:    When the wake-up is due to an interrupt and the GIEH or GIEL bits are set, the PC is loaded with the

             interrupt vector (008h or 0018h).

       2:    Reset state is ‘1’ for SBOREN and unchanged for all other Resets when software BOR is enabled

             (BOREN<1:0> Configuration bits = 01). Otherwise, the Reset state is ‘0’.

 2010-2015 Microchip Technology Inc.                                                                  DS40001303H-page 55
PIC18F2XK20/4XK20

TABLE 4-4:     INITIALIZATION CONDITIONS FOR ALL REGISTERS

                                                                                     MCLR Resets,

     Register        Applicable Devices                 Power-on Reset,              WDT Reset,             Wake-up via WDT

                                                        Brown-out Reset              RESET Instruction,              or Interrupt

                                                                                     Stack Resets

TOSU           PIC18F2XK20    PIC18F4XK20               ---0      0000               ---0           0000             ---0  uuuu(3)

TOSH           PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu(3)

TOSL           PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu(3)

STKPTR         PIC18F2XK20    PIC18F4XK20               00-0      0000               uu-0           0000             uu-u  uuuu(3)

PCLATU         PIC18F2XK20    PIC18F4XK20               ---0      0000               ---0           0000             ---u  uuuu

PCLATH         PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

PCL            PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             PC + 2(2)

TBLPTRU        PIC18F2XK20    PIC18F4XK20               --00      0000               --00           0000             --uu  uuuu

TBLPTRH        PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

TBLPTRL        PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

TABLAT         PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

PRODH          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

PRODL          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

INTCON         PIC18F2XK20    PIC18F4XK20               0000      000x               0000           000u             uuuu  uuuu(1)

INTCON2        PIC18F2XK20    PIC18F4XK20               1111      -1-1               1111           -1-1             uuuu  -u-u(1)

INTCON3        PIC18F2XK20    PIC18F4XK20               11-0      0-00               11-0           0-00             uu-u  u-uu(1)

INDF0          PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

POSTINC0       PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

POSTDEC0       PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

PREINC0        PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

PLUSW0         PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

FSR0H          PIC18F2XK20    PIC18F4XK20               ----      0000               ----           0000             ----  uuuu

FSR0L          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

WREG           PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

INDF1          PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

POSTINC1       PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

POSTDEC1       PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

PREINC1        PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

PLUSW1         PIC18F2XK20    PIC18F4XK20                         N/A                N/A                                   N/A

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

           Shaded cells indicate conditions do not apply for the designated device.

Note   1:  One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

       2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector

           (0008h or 0018h).

       3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with

           the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.

       4:  See Table 4-3 for Reset value for specific condition.

       5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled as

           PORTA pins, they are disabled and read ‘0’.

       6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

DS40001303H-page 56                                                                         2010-2015 Microchip Technology Inc.
                                                                       PIC18F2XK20/4XK20

TABLE 4-4:     INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                                     MCLR Resets,

     Register  Applicable Devices                       Power-on Reset,              WDT Reset,             Wake-up via WDT

                                                        Brown-out Reset              RESET Instruction,              or Interrupt

                                                                                     Stack Resets

FSR1H          PIC18F2XK20    PIC18F4XK20               ----      0000               ----           0000             ----  uuuu

FSR1L          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

BSR            PIC18F2XK20    PIC18F4XK20               ----      0000               ----           0000             ----  uuuu

INDF2          PIC18F2XK20    PIC18F4XK20                         N/A                N/A                             N/A

POSTINC2       PIC18F2XK20    PIC18F4XK20                         N/A                N/A                             N/A

POSTDEC2       PIC18F2XK20    PIC18F4XK20                         N/A                N/A                             N/A

PREINC2        PIC18F2XK20    PIC18F4XK20                         N/A                N/A                             N/A

PLUSW2         PIC18F2XK20    PIC18F4XK20                         N/A                N/A                             N/A

FSR2H          PIC18F2XK20    PIC18F4XK20               ----      0000               ----           0000             ----  uuuu

FSR2L          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

STATUS         PIC18F2XK20    PIC18F4XK20               ---x      xxxx               ---u           uuuu             ---u  uuuu

TMR0H          PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

TMR0L          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

T0CON          PIC18F2XK20    PIC18F4XK20               1111      1111               1111           1111             uuuu  uuuu

OSCCON         PIC18F2XK20    PIC18F4XK20               0011      qq00               0011           qq00             uuuu  uuuu

HLVDCON        PIC18F2XK20    PIC18F4XK20               0-00      0101               0-00           0101             u-uu  uuuu

WDTCON         PIC18F2XK20    PIC18F4XK20               ----      ---0               ----           ---0             ----  ---u

RCON(4)        PIC18F2XK20    PIC18F4XK20               0q-1      11q0               0u-q           qquu             uu-u  qquu

TMR1H          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

TMR1L          PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

T1CON          PIC18F2XK20    PIC18F4XK20               0000      0000               u0uu           uuuu             uuuu  uuuu

TMR2           PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

PR2            PIC18F2XK20    PIC18F4XK20               1111      1111               1111           1111             1111  1111

T2CON          PIC18F2XK20    PIC18F4XK20               -000      0000               -000           0000             -uuu  uuuu

SSPBUF         PIC18F2XK20    PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

SSPADD         PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

SSPSTAT        PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

SSPCON1        PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

SSPCON2        PIC18F2XK20    PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

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

           Shaded cells indicate conditions do not apply for the designated device.

Note   1:  One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

       2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector

           (0008h or 0018h).

       3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with

           the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.

       4:  See Table 4-3 for Reset value for specific condition.

       5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled as

           PORTA pins, they are disabled and read ‘0’.

       6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

 2010-2015 Microchip Technology Inc.                                                                       DS40001303H-page 57
PIC18F2XK20/4XK20

TABLE 4-4:  INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                                     MCLR Resets,

Register             Applicable Devices                 Power-on Reset,              WDT Reset,             Wake-up via WDT

                                                        Brown-out Reset              RESET Instruction,              or Interrupt

                                                                                     Stack Resets

ADRESH      PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

ADRESL      PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

ADCON0      PIC18F2XK20       PIC18F4XK20               --00      0000               --00           0000             --uu  uuuu

ADCON1      PIC18F2XK20       PIC18F4XK20               --00      0qqq               --00           0qqq             --uu  uuuu

ADCON2      PIC18F2XK20       PIC18F4XK20               0-00      0000               0-00           0000             u-uu  uuuu

CCPR1H      PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

CCPR1L      PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

CCP1CON     PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

CCPR2H      PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

CCPR2L      PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

CCP2CON     PIC18F2XK20       PIC18F4XK20               --00      0000               --00           0000             --uu  uuuu

PSTRCON     PIC18F2XK20       PIC18F4XK20               ---0      0001               ---0           0001             ---u  uuuu

BAUDCON     PIC18F2XK20       PIC18F4XK20               0100      0-00               0100           0-00             uuuu  u-uu

PWM1CON     PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

ECCP1AS     PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

CVRCON      PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

CVRCON2     PIC18F2XK20       PIC18F4XK20               00--      ----               00--           ----             uu--  ----

TMR3H       PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

TMR3L       PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu           uuuu             uuuu  uuuu

T3CON       PIC18F2XK20       PIC18F4XK20               0000      0000               uuuu           uuuu             uuuu  uuuu

SPBRGH      PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

SPBRG       PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

RCREG       PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

TXREG       PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

TXSTA       PIC18F2XK20       PIC18F4XK20               0000      0010               0000           0010             uuuu  uuuu

RCSTA       PIC18F2XK20       PIC18F4XK20               0000      000x               0000           000x             uuuu  uuuu

EEADR       PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

EEADRH      PIC18F26K20       PIC18F46K20               ----      --00               ----           --00             ----  --uu

EEDATA      PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

EECON2      PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             0000  0000

EECON1      PIC18F2XK20       PIC18F4XK20               xx-0      x000               uu-0           u000             uu-0  u000

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

           Shaded cells indicate conditions do not apply for the designated device.

Note   1:  One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

       2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector

           (0008h or 0018h).

       3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with

           the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.

       4:  See Table 4-3 for Reset value for specific condition.

       5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled as

           PORTA pins, they are disabled and read ‘0’.

       6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

DS40001303H-page 58                                                                         2010-2015 Microchip Technology Inc.
                                                                        PIC18F2XK20/4XK20

TABLE 4-4:  INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                                     MCLR Resets,

Register    Applicable Devices                          Power-on Reset,              WDT Reset,             Wake-up via WDT

                                                        Brown-out Reset              RESET Instruction,              or Interrupt

                                                                                     Stack Resets

IPR2        PIC18F2XK20       PIC18F4XK20               1111      1111               1111  1111                      uuuu  uuuu

PIR2        PIC18F2XK20       PIC18F4XK20               0000      0000               0000  0000                      uuuu  uuuu(1)

PIE2        PIC18F2XK20       PIC18F4XK20               0000      0000               0000  0000                      uuuu  uuuu

            PIC18F2XK20       PIC18F4XK20               1111      1111               1111  1111                      uuuu  uuuu

IPR1

            PIC18F2XK20       PIC18F4XK20               -111      1111               -111  1111                      -uuu  uuuu

            PIC18F2XK20       PIC18F4XK20               0000      0000               0000  0000                      uuuu  uuuu(1)

PIR1                                                                                                                       uuuu(1)

            PIC18F2XK20       PIC18F4XK20               -000      0000               -000  0000                      -uuu

            PIC18F2XK20       PIC18F4XK20               0000      0000               0000  0000                      uuuu  uuuu

PIE1

            PIC18F2XK20       PIC18F4XK20               -000      0000               -000  0000                      -uuu  uuuu

OSCTUNE     PIC18F2XK20       PIC18F4XK20               0000      0000               0000  0000                      uuuu  uuuu

TRISE       PIC18F2XK20       PIC18F4XK20               ----      -111               ----  -111                      ----  -uuu

TRISD       PIC18F2XK20       PIC18F4XK20               1111      1111               1111  1111                      uuuu  uuuu

TRISC       PIC18F2XK20       PIC18F4XK20               1111      1111               1111  1111                      uuuu  uuuu

TRISB       PIC18F2XK20       PIC18F4XK20               1111      1111               1111  1111                      uuuu  uuuu

TRISA(5)    PIC18F2XK20       PIC18F4XK20               1111      1111(5)            1111  1111(5)                   uuuu  uuuu(5)

LATE        PIC18F2XK20       PIC18F4XK20               ----      -xxx               ----  -uuu                      ----  -uuu

LATD        PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu  uuuu                      uuuu  uuuu

LATC        PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu  uuuu                      uuuu  uuuu

LATB        PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu  uuuu                      uuuu  uuuu

LATA(5)     PIC18F2XK20       PIC18F4XK20               xxxx      xxxx(5)            uuuu  uuuu(5)                   uuuu  uuuu(5)

            PIC18F2XK20       PIC18F4XK20               ----      x000               ----  u000                      ----  uuuu

PORTE

            PIC18F2XK20       PIC18F4XK20               ----      x---               ----  u---                      ----  u---

PORTD       PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu  uuuu                      uuuu  uuuu

PORTC       PIC18F2XK20       PIC18F4XK20               xxxx      xxxx               uuuu  uuuu                      uuuu  uuuu

PORTB       PIC18F2XK20       PIC18F4XK20               xxx0      0000               uuu0  0000                      uuuu  uuuu

PORTA(5)    PIC18F2XK20       PIC18F4XK20               xx0x      0000(5)            uu0u  0000(5)                   uuuu  uuuu(5)

ANSELH(6)   PIC18F2XK20       PIC18F4XK20               ---1      1111               ---1           1111             ---u  uuuu

ANSEL       PIC18F2XK20       PIC18F4XK20               1111      1111               1111           1111             uuuu  uuuu

IOCB        PIC18F2XK20       PIC18F4XK20               0000      ----               0000           ----             uuuu  ----

WPUB        PIC18F2XK20       PIC18F4XK20               1111      1111               1111           1111             uuuu  uuuu

CM1CON0     PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

CM2CON0     PIC18F2XK20       PIC18F4XK20               0000      0000               0000           0000             uuuu  uuuu

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

           Shaded cells indicate conditions do not apply for the designated device.

Note   1:  One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

       2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector

           (0008h or 0018h).

       3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with

           the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.

       4:  See Table 4-3 for Reset value for specific condition.

       5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled as

           PORTA pins, they are disabled and read ‘0’.

       6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

 2010-2015 Microchip Technology Inc.                                                                       DS40001303H-page 59
PIC18F2XK20/4XK20

TABLE 4-4:  INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                                    MCLR Resets,

Register             Applicable Devices                Power-on Reset,              WDT Reset,             Wake-up via WDT

                                                       Brown-out Reset              RESET Instruction,              or Interrupt

                                                                                    Stack Resets

CM2CON1     PIC18F2XK20      PIC18F4XK20               0000      ----               0000           ----             uuuu  ----

SLRCON      PIC18F2XK20      PIC18F4XK20               ---1      1111               ---1           1111             ---u  uuuu

SSPMSK      PIC18F2XK20      PIC18F4XK20               1111      1111               1111           1111             uuuu  uuuu

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

          Shaded cells indicate conditions do not apply for the designated device.

Note  1:  One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

      2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector

          (0008h or 0018h).

      3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with

          the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.

      4:  See Table 4-3 for Reset value for specific condition.

      5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled as

          PORTA pins, they are disabled and read ‘0’.

      6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

DS40001303H-page 60                                                                        2010-2015 Microchip Technology Inc.
                                                                           PIC18F2XK20/4XK20

5.0     MEMORY ORGANIZATION                                             5.1       Program Memory Organization

There are three types of memory in PIC18 Enhanced                       PIC18     microcontrollers    implement  a  21-bit                program

microcontroller devices:                                                counter,  which    is  capable  of  addressing                 a  2-Mbyte

•  Program Memory                                                       program memory space. Accessing a location between

•  Data RAM                                                             the  upper  boundary      of  the   physically                 implemented

                                                                        memory and the 2-Mbyte address will return all ‘0’s (a

•  Data EEPROM                                                          NOP instruction).

As Harvard architecture devices, the data and program                   This family of devices contain the following:

memories  use    separate      busses;      this  allows     for        •   PIC18F23K20, PIC18F43K20: 8 Kbytes of Flash

concurrent access of the two memory spaces. The data                        Memory, up to 4,096 single-word instructions

EEPROM, for practical purposes, can be regarded as

a peripheral device, since it is addressed and accessed                 •   PIC18F24K20, PIC18F44K20: 16 Kbytes of Flash

through a set of control registers.                                         Memory, up to 8,192 single-word instructions

Additional detailed information on the operation of the                 •   PIC18F25K20, PIC18F45K20: 32 Kbytes of Flash

Flash   program  memory    is     provided  in    Section 6.0               Memory, up to 16,384 single-word instructions

“Flash  Program     Memory”.         Data   EEPROM           is         •   PIC18F26K20, PIC18F46K20: 64 Kbytes of Flash

discussed separately in Section 7.0 “Data EEPROM                            Memory, up to 37,768 single-word instructions

Memory”.                                                                PIC18 devices have two interrupt vectors. The Reset

                                                                        vector address is at 0000h and the interrupt vector

                                                                        addresses are at 0008h and 0018h.

                                                                        The program memory map for PIC18F2XK20/4XK20

                                                                        devices is shown in Figure 5-1. Memory block details

                                                                        are shown in Figure 23-2.

FIGURE 5-1:               PROGRAM MEMORY MAP AND STACK FOR PIC18F2XK20/4XK20 DEVICES

                                                   PC<20:0>

             CALL,RCALL,RETURN                                                      21

             RETFIE,RETLW

                                                  Stack Level 1

                                                          
                                                          
                                                          

                                                  Stack Level 31

                                                  Reset Vector                                          0000h

                                        High Priority Interrupt Vector                                  0008h

                                        Low Priority Interrupt Vector                                   0018h

                 On-Chip

          Program Memory                On-Chip

                           1FFFh     Program Memory

                           2000h

                                                  3FFFh           On-Chip

             PIC18F23K20/                         4000h      Program Memory

             43K20                                                                                                  User Memory Space

                                     PIC18F24K20/                                       On-Chip

                                     44K20                                        Program Memory

                                                                           7FFFh

                                                                           8000h

                                                             PIC18F25K20/

                                                             45K20

                                                                                                 FFFFh

                 Read ‘0’              Read ‘0’                   Read ‘0’                     10000h

                                                                                  PIC18F26K20/

                                                                                  46K20

                                                                                        Read ‘0’        1FFFFFh

                                                                                                        200000h

 2010-2015 Microchip Technology Inc.                                                                       DS40001303H-page 61
PIC18F2XK20/4XK20

5.1.1          PROGRAM COUNTER                                              The stack operates as a 31-word by 21-bit RAM and a

The Program Counter (PC) specifies the address of the                       5-bit Stack Pointer, STKPTR. The stack space is not

instruction to fetch for execution. The PC is 21 bits wide                  part of either program or data space. The Stack Pointer

and is contained in three separate 8-bit registers. The                     is readable and writable and the address on the top of

low byte, known as the PCL register, is both readable                       the stack is readable and writable through the Top-of-

and writable. The high byte, or PCH register, contains                      Stack (TOS) Special File Registers. Data can also be

the PC<15:8> bits; it is not directly readable or writable.                 pushed   to,    or  popped      from    the  stack,    using  these

Updates to the PCH register are performed through the                       registers.

PCLATH register. The upper byte is called PCU. This                         A CALL type instruction causes a push onto the stack;

register  contains       the  PC<20:16>       bits;  it  is      also  not  the Stack Pointer is first incremented and the location

directly  readable       or   writable.  Updates         to  the  PCU       pointed  to     by  the  Stack    Pointer    is    written  with    the

register are performed through the PCLATU register.                         contents of the PC (already pointing to the instruction

The contents of PCLATH and PCLATU are transferred                           following the CALL). A RETURN type instruction causes

to the program counter by any operation that writes                         a  pop   from   the     stack;  the   contents     of  the  location

PCL. Similarly, the upper two bytes of the program                          pointed to by the STKPTR are transferred to the PC

counter are transferred to PCLATH and PCLATU by an                          and then the Stack Pointer is decremented.

operation that reads PCL. This is useful for computed                       The  Stack      Pointer  is     initialized  to    ‘00000’  after   all

offsets   to  the   PC   (see     Section 5.1.4.1        “Computed          Resets. There is no RAM associated with the location

GOTO”).                                                                     corresponding to a Stack Pointer value of ‘00000’; this

The PC addresses bytes in the program memory. To                            is only a Reset value. Status bits indicate if the stack is

prevent the PC from becoming misaligned with word                           full or has overflowed or has underflowed.

instructions, the Least Significant bit of PCL is fixed to                  5.1.2.1         Top-of-Stack Access

a value of ‘0’. The PC increments by two to address

sequential instructions in the program memory.                              Only the top of the return address stack (TOS) is readable

The    CALL,       RCALL,     GOTO       and  program            branch     and writable. A set of three registers, TOSU:TOSH:TOSL,

instructions write to the program counter directly. For                     hold the contents of the stack location pointed to by the

these     instructions,      the  contents    of     PCLATH            and  STKPTR       register    (Figure 5-2).       This  allows   users   to

PCLATU are not transferred to the program counter.                          implement a software stack if necessary. After a CALL,

                                                                            RCALL or interrupt, the software can read the pushed

5.1.2          RETURN ADDRESS STACK                                         value by reading the TOSU:TOSH:TOSL registers. These

                                                                            values can be placed on a user defined software stack. At

The return address stack allows any combination of up                       return   time,  the     software  can   return     these    values  to

to 31 program calls and interrupts to occur. The PC is                      TOSU:TOSH:TOSL and do a return.

pushed    onto      the  stack     when  a    CALL           or  RCALL      The user must disable the global interrupt enable bits

instruction is executed or an interrupt is Acknowledged.                    while accessing the stack to prevent inadvertent stack

The PC value is pulled off the stack on a RETURN,                           corruption.

RETLW or a RETFIE instruction. PCLATU and PCLATH

are  not  affected       by   any  of    the  RETURN         or   CALL

instructions.

FIGURE        5-2:            RETURN ADDRESS STACK AND ASSOCIATED REGISTERS

                                                                       Return Address Stack <20:0>

                                                                                        11111

                         Top-of-Stack Registers                                         11110                 Stack Pointer

                                                                                        11101

                   TOSU            TOSH                  TOSL                                                 STKPTR<4:0>

                    00h             1Ah                  34h                                                        00010

                                                                                        00011

                                                             Top-of-Stack   001A34h     00010

                                                                            000D58h     00001

                                                                                        00000

DS40001303H-page 62                                                                                   2010-2015 Microchip Technology Inc.
                                                                        PIC18F2XK20/4XK20

5.1.2.2       Return Stack Pointer (STKPTR)                             When the stack has been popped enough times to

The STKPTR register (Register 5-1) contains the Stack                   unload the stack, the next pop will return a value of zero

Pointer value, the STKFUL (stack full) Status bit and                   to the PC and sets the STKUNF bit, while the Stack

the STKUNF (stack underflow) Status bits. The value of                  Pointer remains at zero. The STKUNF bit will remain

the   Stack   Pointer  can  be  0  through       31.   The  Stack       set until cleared by software or until a POR occurs.

Pointer increments before values are pushed onto the                        Note:    Returning a value of zero to the PC on an

stack and decrements after values are popped off the                                 underflow has the effect of vectoring the

stack. On Reset, the Stack Pointer value will be zero.                               program to the Reset vector, where the

The user may read and write the Stack Pointer value.                                 stack   conditions     can    be  verified     and

This feature can be used by a Real-Time Operating                                    appropriate actions can be taken. This is

System (RTOS) for return stack maintenance.                                          not the same as a Reset, as the contents

After the PC is pushed onto the stack 31 times (without                              of the SFRs are not affected.

popping any values off the stack), the STKFUL bit is

set. The STKFUL bit is cleared by software or by a                      5.1.2.3            PUSH and POP Instructions

POR.                                                                    Since the Top-of-Stack is readable and writable, the

The action that takes place when the stack becomes                      ability to push values onto the stack and pull values off

full depends on the state of the STVREN (Stack Over-                    the stack without disturbing normal program execution

flow   Reset  Enable)       Configuration        bit.  (Refer   to      is   a  desirable    feature.  The  PIC18      instruction  set

Section 23.1 “Configuration Bits” for a description of                  includes two instructions, PUSH and POP, that permit

the   device  Configuration     bits.)  If  STVREN          is  set     the  TOS     to  be  manipulated    under  software    control.

(default), the 31st push will push the (PC + 2) value                   TOSU, TOSH and TOSL can be modified to place data

onto   the   stack,  set  the  STKFUL       bit  and   reset    the     or a return address on the stack.

device. The STKFUL bit will remain set and the Stack                    The PUSH instruction places the current PC value onto

Pointer will be set to zero.                                            the stack. This increments the Stack Pointer and loads

If STVREN is cleared, the STKFUL bit will be set on the                 the current PC value onto the stack.

31st push and the Stack Pointer will increment to 31.                   The     POP  instruction  discards  the    current   TOS    by

Any additional pushes will not overwrite the 31st push                  decrementing the Stack Pointer. The previous value

and STKPTR will remain at 31.                                           pushed onto the stack then becomes the TOS value.

REGISTER 5-1:             STKPTR: STACK POINTER REGISTER

       R/C-0           R/C-0            U-0                 R/W-0       R/W-0              R/W-0          R/W-0            R/W-0

STKFUL(1)            STKUNF(1)              —                   SP4     SP3                SP2              SP1             SP0

bit 7                                                                                                                            bit 0

Legend:

R = Readable bit                   W = Writable bit                  U = Unimplemented                 C = Clearable only bit

-n = Value at POR                  ‘1’ = Bit is set                  ‘0’ = Bit is cleared              x = Bit is unknown

bit 7                STKFUL: Stack Full Flag bit(1)

                     1 = Stack became full or overflowed

                     0 = Stack has not become full or overflowed

bit 6                STKUNF: Stack Underflow Flag bit(1)

                     1 = Stack underflow occurred

                     0 = Stack underflow did not occur

bit 5                Unimplemented: Read as ‘0’

bit 4-0              SP<4:0>: Stack Pointer Location bits

Note     1:   Bit  7 and bit 6 are cleared by user software or by    a  POR.

 2010-2015 Microchip Technology Inc.                                                                       DS40001303H-page 63
PIC18F2XK20/4XK20

5.1.2.4          Stack Full and Underflow Resets                        5.1.4             LOOK-UP TABLES IN PROGRAM

Device Resets on stack overflow and stack underflow                                       MEMORY

conditions are enabled by setting the STVREN bit in                     There may be programming situations that require the

Configuration Register 4L. When STVREN is set, a full                   creation   of     data    structures,      or  look-up      tables,  in

or    underflow      will  set  the   appropriate     STKFUL       or   program memory. For PIC18 devices, look-up tables

STKUNF bit and then cause a device Reset. When                          can be implemented in two ways:

STVREN is cleared, a full or underflow condition will set               •   Computed GOTO

the appropriate STKFUL or STKUNF bit but not cause                      •   Table Reads

a   device   Reset.    The      STKFUL      or   STKUNF      bits  are

cleared by the user software or a Power-on Reset.                       5.1.4.1           Computed GOTO

5.1.3           FAST REGISTER STACK                                     A computed GOTO is accomplished by adding an offset

A fast register stack is provided for the Status, WREG                  to  the   program       counter.    An     example      is  shown    in

and BSR registers, to provide a “fast return” option for                Example 5-2.

interrupts. The stack for each register is only one level               A look-up table can be formed with an ADDWF                        PCL

deep and is neither readable nor writable. It is loaded                 instruction and a group of RETLW               nn instructions. The

with the current value of the corresponding register                    W register is loaded with an offset into the table before

when the processor vectors for an interrupt. All inter-                 executing a call to that table. The first instruction of the

rupt sources will push values into the stack registers.                 called routine is the ADDWF             PCL instruction. The next

The values in the registers are then loaded back into                   instruction       executed  will    be  one    of  the  RETLW        nn

their    associated        registers  if    the   RETFIE,     FAST      instructions that returns the value ‘nn’ to the calling

instruction is used to return from the interrupt.                       function.

If both low and high priority interrupts are enabled, the               The offset value (in WREG) specifies the number of

stack registers cannot be used reliably to return from                  bytes that the program counter should advance and

low priority interrupts. If a high priority interrupt occurs            should be multiples of 2 (LSb = 0).

while servicing a low priority interrupt, the stack register            In this method, only one data byte may be stored in

values       stored  by    the  low   priority    interrupt  will  be   each     instruction      location  and    room     on      the  return

overwritten. In these cases, users must save the key                    address stack is required.

registers by software during a low priority interrupt.

If interrupt priority is not used, all interrupts may use the           EXAMPLE 5-2:                COMPUTED GOTO USING

fast   register  stack     for  returns     from  interrupt.  If   no                               AN OFFSET VALUE

interrupts are used, the fast register stack can be used                               MOVF       OFFSET,       W

to restore the Status, WREG and BSR registers at the                                   CALL       TABLE

end of a subroutine call. To use the fast register stack                   ORG         nn00h

for a subroutine call, a CALL label,              FAST instruction         TABLE       ADDWF      PCL

must be executed to save the Status, WREG and BSR                                      RETLW      nnh

registers to the fast      register stack. A RETURN,          FAST                     RETLW      nnh

instruction is then executed to restore these registers                                RETLW      nnh

from the fast register stack.                                                          .

                                                                                       .

Example 5-1 shows a source code example that uses                                      .

the    fast  register  stack    during    a   subroutine     call  and

return.                                                                 5.1.4.2           Table Reads and Table Writes

EXAMPLE 5-1:                    FAST REGISTER STACK                     A better method of storing data in program memory

                                CODE EXAMPLE                            allows two bytes of data to be stored in each instruction

CALL     SUB1,       FAST       ;STATUS,      WREG,   BSR               location.

                                ;SAVED    IN    FAST  REGISTER          Look-up    table      data  may     be     stored  two      bytes    per

                                ;STACK                                  program word by using table reads and writes. The

                                                                       Table    Pointer     (TBLPTR)       register   specifies    the    byte

                                                                       address      and     the    Table   Latch      (TABLAT)          register

SUB1                                                                   contains the data that is read from or written to program

                                                                       memory.        Data   is  transferred      to  or   from    program

       RETURN,       FAST       ;RESTORE      VALUES  SAVED             memory one byte at a time.

                                ;IN   FAST    REGISTER     STACK        Table read and table write operations are discussed

                                                                        further    in     Section 6.1     “Table       Reads    and      Table

                                                                        Writes”.

DS40001303H-page 64                                                                                2010-2015 Microchip Technology Inc.
                                                                          PIC18F2XK20/4XK20

5.2        PIC18 Instruction Cycle                                        5.2.2                INSTRUCTION FLOW/PIPELINING

5.2.1         CLOCKING SCHEME                                             An “Instruction Cycle” consists of four Q cycles: Q1

                                                                          through          Q4.     The   instruction  fetch      and  execute    are

The    microcontroller    clock   input,     whether     from     an      pipelined            in  such  a  manner    that    a   fetch  takes   one

internal or external source, is internally divided by four                instruction cycle, while the decode and execute take

to  generate  four     non-overlapping       quadrature  clocks           another          instruction      cycle.    However,        due    to  the

(Q1, Q2, Q3 and Q4). Internally, the program counter is                   pipelining, each instruction effectively executes in one

incremented on every Q1; the instruction is fetched                       cycle. If an instruction causes the program counter to

from   the   program      memory   and       latched     into    the      change (e.g., GOTO), then two cycles are required to

instruction   register    during  Q4.     The       instruction   is      complete the instruction (Example 5-3).

decoded and executed during the following Q1 through                      A fetch cycle begins with the Program Counter (PC)

Q4.   The    clocks  and  instruction     execution      flow    are      incrementing in Q1.

shown in Figure 5-3.

                                                                          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 5-3:               CLOCK/INSTRUCTION CYCLE

                          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)

EXAMPLE 5-3:              INSTRUCTION PIPELINE FLOW

                                         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,      BIT3  (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.

 2010-2015 Microchip Technology Inc.                                                                                    DS40001303H-page 65
PIC18F2XK20/4XK20

5.2.3          INSTRUCTIONS IN PROGRAM                                 The   CALL    and     GOTO  instructions  have    the  absolute

               MEMORY                                                  program       memory  address        embedded          into  the

The    program       memory      is  addressed       in  bytes.        instruction. Since instructions are always stored on word

Instructions are stored as either two bytes or four bytes              boundaries, the data contained in the instruction is a

in program memory. The Least Significant Byte of an                    word address. The word address is written to PC<20:1>,

instruction word is always stored in a program memory                  which accesses the desired byte address in program

location with an even address (LSb = 0). To maintain                   memory. Instruction #2 in Figure 5-4 shows how the

alignment      with  instruction     boundaries,     the      PC       instruction GOTO      0006h is encoded in the program

increments in steps of 2 and the LSb will always read                  memory. Program branch instructions, which encode a

‘0’ (see Section 5.1.1 “Program Counter”).                             relative address offset, operate in the same manner. The

                                                                       offset value stored in a branch instruction represents the

Figure 5-4 shows an example of how instruction words                   number of single-word instructions that the PC will be

are stored in the program memory.                                      offset  by.   Section 24.0  “Instruction      Set   Summary”

                                                                       provides further details of the instruction set.

FIGURE     5-4:            INSTRUCTIONS IN PROGRAM MEMORY

                                                                                             Word Address

                                                                    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

5.2.4          TWO-WORD INSTRUCTIONS                                   and used by the instruction sequence. If the first word

The standard PIC18 instruction set has four two-word                   is skipped for some reason and the second word is

instructions:  CALL,   MOVFF,        GOTO   and  LSFR.    In  all      executed by itself, a NOP is executed instead. This is

cases, the second word of the instruction always has                   necessary for cases when the two-word instruction is

‘1111’ as its four Most Significant bits; the other 12 bits            preceded by a conditional instruction that changes the

are literal data, usually a data memory address.                       PC. Example 5-4 shows how this works.

The  use   of  ‘1111’  in  the   4   MSbs   of   an  instruction           Note:     See     Section 5.6    “PIC18       Instruction

specifies a special form of NOP. If the instruction is                               Execution     and  the  Extended         Instruc-

executed in proper sequence – immediately after the                                  tion    Set”  for  information    on  two-word

first word – the data in the second word is accessed                                 instructions in the extended instruction set.

EXAMPLE 5-4:               TWO-WORD INSTRUCTIONS

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

DS40001303H-page 66                                                                           2010-2015 Microchip Technology Inc.
                                                                       PIC18F2XK20/4XK20

5.3       Data Memory Organization                                     5.3.1          BANK SELECT REGISTER (BSR)

Note:          The operation of some aspects of data                   Large    areas       of  data       memory     require      an    efficient

               memory        are  changed       when    the  PIC18     addressing       scheme       to    make      rapid    access     to    any

               extended instruction set is enabled. See                address      possible.      Ideally,    this  means    that     an    entire

               Section 5.5        “Data       Memory    and      the   address does not need to be provided for each read or

               Extended      Instruction        Set”    for  more      write  operation.        For  PIC18     devices,       this  is   accom-

               information.                                            plished with a RAM banking scheme. This divides the

                                                                       memory space into 16 contiguous banks of 256 bytes.

The data memory in PIC18 devices is implemented as                     Depending on the instruction, each location can be

static RAM. Each register in the data memory has a                     addressed directly by its full 12-bit address, or an 8-bit

12-bit  address,    allowing      up      to  4096  bytes    of  data  low-order address and a 4-bit Bank Pointer.

memory. The memory space is divided into as many as                    Most instructions in the PIC18 instruction set make use

16 banks      that  contain  256  bytes         each.   Figures   5-5  of the Bank Pointer, known as the Bank Select Register

through 5-7 show the data memory organization for the                  (BSR). This SFR holds the four Most Significant bits of

PIC18F2XK20/4XK20 devices.                                             a location’s address; the instruction itself includes the

The data memory contains Special Function Registers                    eight Least Significant bits. Only the four lower bits of

(SFRs) and General Purpose Registers (GPRs). The                       the BSR are implemented (BSR<3:0>). The upper four

SFRs are used for control and status of the controller                 bits are unused; they will always read ‘0’ and cannot be

and peripheral functions, while GPRs are used for data                 written to. The BSR can be loaded directly by using the

storage   and       scratchpad    operations        in  the  user’s    MOVLB instruction.

application. Any read of an unimplemented location will                The    value     of  the    BSR     indicates     the   bank      in    data

read as ‘0’s.                                                          memory;        the   eight    bits  in  the   instruction    show       the

The instruction set and architecture allow operations                  location in the bank and can be thought of as an offset

across   all  banks.  The         entire  data  memory       may  be   from    the    bank’s     lower     boundary.         The    relationship

accessed      by    Direct,  Indirect     or  Indexed   Addressing     between the BSR’s value and the bank division in data

modes. Addressing modes are discussed later in this                    memory is shown in Figures 5-5 through 5-7.

subsection.                                                            Since up to 16 registers may share the same low-order

To ensure that commonly used registers (SFRs and                       address, the user must always be careful to ensure that

select GPRs) can be accessed in a single cycle, PIC18                  the proper bank is selected before performing a data

devices implement an Access Bank. This is a 256-byte                   read   or  write.    For    example,       writing    what   should     be

memory space that provides fast access to SFRs and                     program data to an 8-bit address of F9h while the BSR

the lower portion of GPR Bank 0 without using the Bank                 is 0Fh will end up resetting the program counter.

Select Register (BSR). Section 5.3.2 “Access Bank”                     While any bank can be selected, only those banks that

provides a detailed description of the Access RAM.                     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

                                                                       Figures    5-5      through    5-7      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.

 2010-2015 Microchip Technology Inc.                                                                                DS40001303H-page 67
PIC18F2XK20/4XK20

FIGURE 5-5:          DATA MEMORY MAP FOR PIC18F23K20/43K20  DEVICES

BSR<3:0>                            Data Memory Map         When ‘a’ = 0:

                                                            The BSR is ignored and the

                               00h  Access RAM       000h   Access Bank is used.

= 0000               Bank  0                         05Fh   The first 96 bytes are

                                    GPR              060h   general purpose RAM

                               FFh                   0FFh

= 0001                         00h                   100h   (from Bank 0).

                     Bank  1        GPR                     The      second  160     bytes  are

                               FFh                   1FFh   Special        Function  Registers

= 0010                         00h                   200h   (from Bank 15).

                     Bank  2

                               FFh                   2FFh   When ‘a’ = 1:

= 0011                         00h                   300h   The BSR specifies the Bank

                     Bank  3

                               FFh                   3FFh   used by the instruction.

= 0100                         00h                   400h

                     Bank  4

                               FFh                   4FFh

= 0101                         00h                   500h

                     Bank  5

                               FFh                   5FFh

= 0110                         00h                   600h

                     Bank  6

                               FFh                   6FFh            Access Bank

= 0111                         00h                   700h                                   00h

                     Bank  7                                     Access RAM Low             5Fh

                               FFh                   7FFh        Access RAM High            60h

= 1000                         00h                   800h                  (SFRs)     FFh

                     Bank  8

                               FFh                   8FFh

= 1001                         00h  Unused           900h

                     Bank  9        Read 00h

                               FFh                   9FFh

= 1010                         00h                   A00h

                     Bank  10

                               FFh                   AFFh

= 1011                         00h                   B00h

                     Bank  11

                               FFh                   BFFh

= 1100                         00h                   C00h

                     Bank  12

                               FFh                   CFFh

= 1101                         00h                   D00h

                     Bank  13

                               FFh                   DFFh

= 1110                         00h                   E00h

                     Bank  14

                               FFh                   EFFh

= 1111                         00h  Unused           F00h

                     Bank  15                        F5Fh

                               FFh  SFR              F60h

                                                     FFFh

DS40001303H-page 68                                          2010-2015 Microchip Technology     Inc.
                                                         PIC18F2XK20/4XK20

FIGURE 5-6:            DATA  MEMORY MAP FOR PIC18F24K20/44K20  DEVICES

BSR<3:0>                                Data Memory Map        When ‘a’ = 0:

                                                               The BSR is ignored and the

                                 00h    Access RAM       000h  Access Bank is used.

= 0000                 Bank  0                           05Fh  The first 96 bytes are

                                        GPR              060h  general purpose RAM

                                 FFh                     0FFh

= 0001                           00h                     100h  (from Bank 0).

                       Bank  1          GPR                    The      second  160     bytes  are

                                 FFh                     1FFh  Special        Function  Registers

= 0010                           00h                     200h  (from Bank 15).

                       Bank  2          GPR

                                 FFh                     2FFh  When ‘a’ = 1:

= 0011                           00h                     300h  The BSR specifies the Bank

                       Bank  3

                                 FFh                     3FFh  used by the instruction.

= 0100                           00h                     400h

                       Bank  4

                                 FFh                     4FFh

= 0101                           00h                     500h

                       Bank  5

                                 FFh                     5FFh

= 0110                           00h                     600h

                       Bank  6

                                 FFh                     6FFh           Access Bank

= 0111                           00h                     700h                                  00h

                       Bank  7                                      Access RAM Low             5Fh

                                 FFh                     7FFh       Access RAM High            60h

= 1000                           00h                     800h                 (SFRs)     FFh

                       Bank  8

                                 FFh                     8FFh

= 1001                           00h    Unused           900h

                       Bank  9          Read 00h

                                 FFh                     9FFh

= 1010                           00h                     A00h

                       Bank  10

                                 FFh                     AFFh

= 1011                           00h                     B00h

                       Bank  11

                                 FFh                     BFFh

= 1100                           00h                     C00h

                       Bank  12

                                 FFh                     CFFh

= 1101                           00h                     D00h

                       Bank  13

                                 FFh                     DFFh

= 1110                           00h                     E00h

                       Bank  14

                                 FFh                     EFFh

= 1111                           00h    Unused           F00h

                       Bank  15                          F5Fh

                                 FFh    SFR              F60h

                                                         FFFh

 2010-2015 Microchip  Technology Inc.                                        DS40001303H-page 69
PIC18F2XK20/4XK20

FIGURE 5-7:          DATA MEMORY MAP FOR PIC18F25K20/45K20  DEVICES

BSR<3:0>                            Data Memory Map         When ‘a’ = 0:

                                                            The BSR is ignored and the

                               00h  Access RAM       000h   Access Bank is used.

= 0000               Bank  0                         05Fh   The first 96 bytes are

                                    GPR              060h   general purpose RAM

                               FFh                   0FFh

= 0001                         00h                   100h   (from Bank 0).

                     Bank  1        GPR                     The      second  160     bytes  are

                               FFh                   1FFh   Special        Function  Registers

= 0010                         00h                   200h   (from Bank 15).

                     Bank  2        GPR

                               FFh                   2FFh   When ‘a’ = 1:

= 0011                         00h                   300h   The BSR specifies the Bank

                     Bank  3        GPR

                               FFh                   3FFh   used by the instruction.

= 0100                         00h                   400h

                     Bank  4        GPR

                               FFh                   4FFh

= 0101                         00h                   500h

                     Bank  5        GPR

                               FFh                   5FFh

= 0110                         00h                   600h

                     Bank  6

                               FFh                   6FFh            Access Bank

= 0111                         00h                   700h                                   00h

                     Bank  7                                     Access RAM Low             5Fh

                               FFh                   7FFh        Access RAM High            60h

= 1000                         00h                   800h                  (SFRs)     FFh

                     Bank  8

                               FFh                   8FFh

= 1001                         00h                   900h

                     Bank  9

                               FFh                   9FFh

= 1010                         00h  Unused           A00h

                     Bank  10       Read 00h

                               FFh                   AFFh

= 1011                         00h                   B00h

                     Bank  11

                               FFh                   BFFh

= 1100                         00h                   C00h

                     Bank  12

                               FFh                   CFFh

= 1101                         00h                   D00h

                     Bank  13

                               FFh                   DFFh

= 1110                         00h                   E00h

                     Bank  14

                               FFh                   EFFh

= 1111                         00h  Unused           F00h

                     Bank  15                        F5Fh

                               FFh  SFR              F60h

                                                     FFFh

DS40001303H-page 70                                          2010-2015 Microchip Technology     Inc.
                                                         PIC18F2XK20/4XK20

FIGURE 5-8:            DATA  MEMORY MAP FOR PIC18F26K20/46K20  DEVICES

BSR<3:0>                                Data Memory Map        When ‘a’ = 0:

                                                               The BSR is ignored and the

                                 00h    Access RAM       000h  Access Bank is used.

= 0000                 Bank  0                           05Fh  The first 96 bytes are

                                        GPR              060h  general purpose RAM

                                 FFh                     0FFh

= 0001                           00h                     100h  (from Bank 0).

                       Bank  1          GPR                    The      second  160     bytes  are

                                 FFh                     1FFh  Special        Function  Registers

= 0010                           00h                     200h  (from Bank 15).

                       Bank  2          GPR

                                 FFh                     2FFh  When ‘a’ = 1:

= 0011                           00h                     300h  The BSR specifies the Bank

                       Bank  3          GPR

                                 FFh                     3FFh  used by the instruction.

= 0100                           00h                     400h

                       Bank  4          GPR

                                 FFh                     4FFh

= 0101                           00h                     500h

                       Bank  5          GPR

                                 FFh                     5FFh

= 0110                           00h                     600h

                       Bank  6          GPR

                                 FFh                     6FFh           Access Bank

= 0111                           00h                     700h                                  00h

                       Bank  7          GPR                         Access RAM Low             5Fh

                                 FFh                     7FFh       Access RAM High            60h

= 1000                           00h                     800h                 (SFRs)     FFh

                       Bank  8          GPR

                                 FFh                     8FFh

= 1001                           00h                     900h

                       Bank  9          GPR

                                 FFh                     9FFh

= 1010                           00h                     A00h

                       Bank  10         GPR

                                 FFh                     AFFh

= 1011                           00h                     B00h

                       Bank  11         GPR

                                 FFh                     BFFh

= 1100                           00h                     C00h

                       Bank  12         GPR

                                 FFh                     CFFh

= 1101                           00h                     D00h

                       Bank  13         GPR

                                 FFh                     DFFh

= 1110                           00h                     E00h

                       Bank  14         GPR

                                 FFh                     EFFh

= 1111                           00h    GPR              F00h

                       Bank  15                          F5Fh

                                 FFh    SFR              F60h

                                                         FFFh

 2010-2015 Microchip  Technology Inc.                                        DS40001303H-page 71
PIC18F2XK20/4XK20

FIGURE 5-9:             USE  OF  THE BANK SELECT REGISTER (DIRECT ADDRESSING)

                     BSR(1)                     Data Memory                                       From Opcode(2)

7                                   0  000h                  00h  7                                                  0

0     0      0       0  0    0   1  1           Bank 0       FFh  1                            1  1  1  1  1      1  1

                                       100h                  00h

                                                Bank 1

Bank Select(2)                         200h                  FFh

                                                             00h

                                                Bank 2       FFh

                                       300h

                                                             00h

                                                Bank 3

                                                through

                                                Bank 13

                                       E00h                  FFh

                                                             00h

                                                Bank 14      FFh

                                       F00h                  00h

                                                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.

DS40001303H-page 72                                                                             2010-2015 Microchip Technology  Inc.
                                                                      PIC18F2XK20/4XK20

5.3.2         ACCESS BANK                                             5.3.3          GENERAL PURPOSE REGISTER

While   the   use  of  the  BSR    with     an  embedded     8-bit                   FILE

address allows users to address the entire range of                   PIC18 devices may have banked memory in the GPR

data memory, it also means that the user must always                  area. This is data RAM, which is available for use by all

ensure that the correct bank is selected. Otherwise,                  instructions.  GPRs      start  at   the  bottom    of     Bank    0

data may be read from or written to the wrong location.               (address 000h) and grow upwards towards the bottom of

This can be disastrous if a GPR is the intended target                the SFR area. GPRs are not initialized by a Power-on

of  an  operation,     but  an  SFR     is  written    to  instead.   Reset and are unchanged on all other Resets.

Verifying and/or changing the BSR for each read or

write to data memory can become very inefficient.                     5.3.4          SPECIAL FUNCTION REGISTERS

To streamline access for the most commonly used data                  The Special Function Registers (SFRs) are registers

memory locations, the data memory is configured with                  used by the CPU and peripheral modules for controlling

an  Access    Bank,    which    allows      users  to  access    a    the desired operation of the device. These registers are

mapped block of memory without specifying a BSR.                      implemented as static RAM. SFRs start at the top of

The Access Bank consists of the first 96 bytes of mem-                data memory (FFFh) and extend downward to occupy

ory (00h-5Fh) in Bank 0 and the last 160 bytes of mem-                the top portion of Bank 15 (F60h to FFFh). A list of

ory (60h-FFh) in Block 15. The lower half is known as                 these registers is given in Table 5-1 and Table 5-2.

the “Access RAM” and is composed of GPRs. This                        The    SFRs    can   be  classified     into   two  sets:  those

upper   half  is   also     where  the      device’s   SFRs      are  associated with the “core” device functionality (ALU,

mapped. These two areas are mapped contiguously in                    Resets    and  interrupts)      and     those  related     to      the

the Access Bank and can be addressed in a linear                      peripheral functions. The Reset and interrupt registers

fashion by an 8-bit address (Figures 5-5 through 5-7).                are described in their respective chapters, while the

The Access Bank is used by core PIC18 instructions                    ALU’s     STATUS     register   is   described      later  in  this

that include the Access RAM bit (the ‘a’ parameter in                 section.  Registers      related    to    the  operation       of  a

the instruction). When ‘a’ is equal to ‘1’, the instruction           peripheral feature are described in the chapter for that

uses the BSR and the 8-bit address included in the                    peripheral.

opcode for the data memory address. When ‘a’ is ‘0’,                  The    SFRs    are   typically      distributed     among          the

however, the instruction is forced to use the Access                  peripherals whose functions they control. Unused SFR

Bank address map; the current value of the BSR is                     locations are unimplemented and read as ‘0’s.

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.

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  Section 5.5.3      “Mapping    the      Access         Bank  in

Indexed Literal Offset Mode”.

 2010-2015 Microchip Technology Inc.                                                                           DS40001303H-page 73
PIC18F2XK20/4XK20

TABLE 5-1:  SPECIAL FUNCTION REGISTER MAP FOR PIC18F2XK20/4XK20 DEVICES

Address     Name         Address            Name     Address            Name             Address  Name

      FFFh  TOSU         FD7h               TMR0H                 FAFh  SPBRG            F87h     —(2)

      FFEh  TOSH         FD6h               TMR0L                 FAEh  RCREG            F86h     —(2)

      FFDh  TOSL         FD5h               T0CON                 FADh  TXREG            F85h     —(2)

      FFCh  STKPTR       FD4h               —(2)                  FACh  TXSTA            F84h     PORTE

      FFBh  PCLATU       FD3h               OSCCON                FABh  RCSTA            F83h     PORTD(3)

      FFAh  PCLATH       FD2h               HLVDCON               FAAh  EEADRH(4)        F82h     PORTC

      FF9h  PCL          FD1h               WDTCON                FA9h  EEADR            F81h     PORTB

      FF8h  TBLPTRU      FD0h               RCON                  FA8h  EEDATA           F80h     PORTA

      FF7h  TBLPTRH      FCFh               TMR1H                 FA7h  EECON2(1)        F7Fh     ANSELH

      FF6h  TBLPTRL      FCEh               TMR1L                 FA6h  EECON1           F7Eh     ANSEL

      FF5h  TABLAT       FCDh               T1CON                 FA5h  —(2)             F7Dh     IOCB

      FF4h  PRODH        FCCh               TMR2                  FA4h  —(2)             F7Ch     WPUB

      FF3h  PRODL        FCBh               PR2                   FA3h  —(2)             F7Bh     CM1CON0

      FF2h  INTCON       FCAh               T2CON                 FA2h  IPR2             F7Ah     CM2CON0

      FF1h  INTCON2      FC9h               SSPBUF                FA1h  PIR2             F79h     CM2CON1

      FF0h  INTCON3      FC8h               SSPADD                FA0h  PIE2             F78h     SLRCON

      FEFh  INDF0(1)     FC7h               SSPSTAT               F9Fh  IPR1             F77h     SSPMSK

      FEEh  POSTINC0(1)  FC6h               SSPCON1               F9Eh  PIR1             F76h     —(2)

      FEDh  POSTDEC0(1)  FC5h               SSPCON2               F9Dh  PIE1             F75h     —(2)

      FECh  PREINC0(1)   FC4h               ADRESH                F9Ch  —(2)             F74h     —(2)

      FEBh  PLUSW0(1)    FC3h               ADRESL                F9Bh  OSCTUNE          F73h     —(2)

      FEAh  FSR0H        FC2h               ADCON0                F9Ah  —(2)             F72h     —(2)

      FE9h  FSR0L        FC1h               ADCON1                F99h  —(2)             F71h     —(2)

      FE8h  WREG         FC0h               ADCON2                F98h  —(2)             F70h     —(2)

      FE7h  INDF1(1)     FBFh               CCPR1H                F97h  —(2)             F6Fh     —(2)

      FE6h  POSTINC1(1)  FBEh               CCPR1L                F96h  TRISE(3)         F6Eh     —(2)

      FE5h  POSTDEC1(1)  FBDh               CCP1CON               F95h  TRISD(3)         F6Dh     —(2)

      FE4h  PREINC1(1)   FBCh               CCPR2H                F94h  TRISC            F6Ch     —(2)

      FE3h  PLUSW1(1)    FBBh               CCPR2L                F93h  TRISB            F6Bh     —(2)

      FE2h  FSR1H        FBAh               CCP2CON               F92h  TRISA            F6Ah     —(2)

      FE1h  FSR1L        FB9h               PSTRCON               F91h  —(2)             F69h     —(2)

      FE0h  BSR          FB8h               BAUDCON               F90h  —(2)             F68h     —(2)

      FDFh  INDF2(1)     FB7h               PWM1CON               F8Fh  —(2)             F67h     —(2)

      FDEh  POSTINC2(1)  FB6h               ECCP1AS               F8Eh  —(2)             F66h     —(2)

      FDDh  POSTDEC2(1)  FB5h               CVRCON                F8Dh  LATE(3)          F65h     —(2)

      FDCh  PREINC2(1)   FB4h               CVRCON2               F8Ch  LATD(3)          F64h     —(2)

      FDBh  PLUSW2(1)    FB3h               TMR3H                 F8Bh  LATC             F63h     —(2)

      FDAh  FSR2H        FB2h               TMR3L                 F8Ah  LATB             F62h     —(2)

      FD9h  FSR2L        FB1h               T3CON                 F89h  LATA             F61h     —(2)

      FD8h  STATUS       FB0h               SPBRGH                F88h  —(2)             F60h     —(2)

Note  1:  This is not a physical register.

      2:  Unimplemented registers are read as ‘0’.

      3:  This register is not available on PIC18F2XK20 devices.

      4:  This register is only implemented in the PIC18F46K20 and PIC18F26K20 devices.

DS40001303H-page 74                                                      2010-2015 Microchip     Technology Inc.
                                                                                 PIC18F2XK20/4XK20

TABLE 5-2:     REGISTER FILE SUMMARY (PIC18F2XK20/4XK20)

File Name   Bit 7             Bit 6        Bit 5    Bit 4                Bit 3      Bit 2            Bit 1           Bit 0  Value on                    Details

                                                                                                                            POR, BOR              on page:

TOSU        —                 —            —        Top-of-Stack Upper Byte (TOS<20:16>)                                    ---0  0000                  56, 62

TOSH        Top-of-Stack, High Byte (TOS<15:8>)                                                                             0000  0000                  56, 62

TOSL        Top-of-Stack, Low Byte (TOS<7:0>)                                                                               0000  0000                  56, 62

STKPTR      STKFUL      STKUNF             —        SP4                  SP3        SP2              SP1             SP0    00-0  0000                  56, 63

PCLATU      —                 —            —        Holding Register for PC<20:16>                                          ---0  0000                  56, 62

PCLATH      Holding Register for PC<15:8>                                                                                   0000  0000                  56, 62

PCL         PC, Low Byte (PC<7:0>)                                                                                          0000  0000                  56, 62

TBLPTRU     —                 —            bit 21   Program Memory Table Pointer Upper Byte (TBLPTR<20:16>)                 --00  0000                  56, 87

TBLPTRH     Program Memory Table Pointer, High Byte (TBLPTR<15:8>)                                                          0000  0000                  56, 87

TBLPTRL     Program Memory Table Pointer, Low Byte (TBLPTR<7:0>)                                                            0000  0000                  56, 87

TABLAT      Program Memory Table Latch                                                                                      0000  0000                  56, 87

PRODH       Product Register, High Byte                                                                                     xxxx  xxxx                  56, 98

PRODL       Product Register, Low Byte                                                                                      xxxx  xxxx                  56, 98

INTCON      GIE/GIEH    PEIE/GIEL          TMR0IE   INT0IE               RBIE    TMR0IF              INT0IF          RBIF   0000  000x                  56, 102

INTCON2     RBPU        INTEDG0            INTEDG1  INTEDG2              —       TMR0IP              —               RBIP   1111  -1-1                  56, 103

INTCON3     INT2IP            INT1IP       —        INT2IE               INT1IE     —                INT2IF         INT1IF  11-0  0-00                  56, 104

INDF0       Uses contents of FSR0 to address data memory – value of FSR0 not changed (not a physical register)              N/A                         56, 80

POSTINC0    Uses contents of FSR0 to address data memory – value of FSR0 post-incremented (not a physical register)         N/A                         56, 80

POSTDEC0    Uses contents of FSR0 to address data memory – value of FSR0 post-decremented (not a physical register)         N/A                         56, 80

PREINC0     Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented (not a physical register)          N/A                         56, 80

PLUSW0      Uses contents of FSR0 to address data memory – value of FSR0 offset by W (not a physical register) –            N/A                         56, 80

FSR0H       —                 —            —        —                    Indirect Data Memory Address Pointer 0, High Byte  ----  0000                  56, 80

FSR0L       Indirect Data Memory Address Pointer 0, Low Byte                                                                xxxx  xxxx                  56, 80

WREG        Working Register                                                                                                xxxx  xxxx                  56

INDF1       Uses contents of FSR1 to address data memory – value of FSR1 not changed (not a physical register)              N/A                         56, 80

POSTINC1    Uses contents of FSR1 to address data memory – value of FSR1 post-incremented (not a physical register)         N/A                         56, 80

POSTDEC1    Uses contents of FSR1 to address data memory – value of FSR1 post-decremented (not a physical register)         N/A                         56, 80

PREINC1     Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented (not a physical register)          N/A                         56, 80

PLUSW1      Uses contents of FSR1 to address data memory – value of FSR1 offset by W (not a physical register) – value of   N/A                         56, 80

FSR1H       —                 —            —        —                    Indirect Data Memory Address Pointer 1, High Byte  ----  0000                  57, 80

FSR1L       Indirect Data Memory Address Pointer 1, Low Byte                                                                xxxx  xxxx                  57, 80

BSR         —                 —            —        —                    Bank Select Register                               ----  0000                  57, 67

INDF2       Uses contents of FSR2 to address data memory – value of FSR2 not changed (not a physical register)              N/A                         57, 80

POSTINC2    Uses contents of FSR2 to address data memory – value of FSR2 post-incremented (not a physical register)         N/A                         57, 80

POSTDEC2    Uses contents of FSR2 to address data memory – value of FSR2 post-decremented (not a physical register)         N/A                         57, 80

PREINC2     Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented (not a physical register)          N/A                         57, 80

PLUSW2      Uses contents of FSR2 to address data memory – value of FSR2 offset by W (not a physical register) – value of   N/A                         57, 80

FSR2H       —                 —            —        —                    Indirect Data Memory Address Pointer 2, High Byte  ----  0000                  57, 80

FSR2L       Indirect Data Memory Address Pointer 2, Low Byte                                                                xxxx  xxxx                  57, 80

STATUS      —                 —            —        N                    OV         Z                DC              C      ---x  xxxx                  57, 78

Legend:     x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note    1:  The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise it is disabled and reads as ‘0’. See

            Section 4.4 “Brown-out Reset (BOR)”.

        2:  These registers and/or bits are not implemented on 28-pin devices and are read as ‘0’. Reset values are shown for 40/44-pin devices;

            individual unimplemented bits should be interpreted as ‘-’.

        3:  The PLLEN bit is only available in specific oscillator configuration; otherwise it is disabled and reads as ‘0’. See Section 2.6.2 “PLL in

            HFINTOSC Modes”.

        4:  The RE3 bit is only available when Master Clear Reset is disabled (MCLRE Configuration bit = 0). Otherwise, RE3 reads as ‘0’. This bit is

            read-only.

        5:  RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.

            When disabled, these bits read as ‘0’.

        6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

        7:  This register is only implemented in the PIC18F46K20 and PIC18F26K20 devices.

 2010-2015 Microchip Technology Inc.                                                                                       DS40001303H-page 75
PIC18F2XK20/4XK20

TABLE 5-2:     REGISTER FILE SUMMARY (PIC18F2XK20/4XK20) (CONTINUED)

File Name   Bit 7           Bit 6          Bit 5      Bit 4             Bit 3     Bit 2             Bit 1    Bit 0    Value on                         Details

                                                                                                                      POR, BOR                   on page:

TMR0H      Timer0 Register, High Byte                                                                                 0000  0000                       57, 147

TMR0L      Timer0 Register, Low Byte                                                                                  xxxx  xxxx                       57, 147

T0CON       TMR0ON          T08BIT         T0CS       T0SE              PSA       T0PS2             T0PS1    T0PS0    1111  1111                       57, 145

OSCCON      IDLEN           IRCF2          IRCF1      IRCF0             OSTS      IOFS              SCS1     SCS0     0011  qq00                       28, 57

HLVDCON     VDIRMAG         —              IRVST      HLVDEN            HLVDL3    HLVDL2            HLVDL1   HLVDL0   0-00  0101                       57, 276

WDTCON      —               —              —          —                 —         —                 —        SWDTEN   ---   ---0                       57, 291

RCON        IPEN       SBOREN(1)           —          RI                TO        PD                POR      BOR      0q-1  11q0                       48, 55,

                                                                                                                                                       111

TMR1H      Timer1 Register, High Byte                                                                                 xxxx  xxxx                       57, 154

TMR1L      Timer1 Register, Low Bytes                                                                                 xxxx  xxxx                       57, 154

T1CON       RD16            T1RUN          T1CKPS1   T1CKPS0            T1OSCEN   T1SYNC            TMR1CS   TMR1ON   0000  0000                       57, 148

TMR2       Timer2 Register                                                                                            0000  0000                       57, 156

PR2        Timer2 Period Register                                                                                     1111  1111                       57, 156

T2CON       —          T2OUTPS3        T2OUTPS2     T2OUTPS1            T2OUTPS0  TMR2ON            T2CKPS1  T2CKPS0  -000  0000                       57, 155

SSPBUF     SSP Receive Buffer/Transmit Register                                                                       xxxx  xxxx                       57, 188,

                                                                                                                                                       189

SSPADD     SSP Address Register in I2C™ Slave Mode. SSP Baud Rate Reload Register in I2C Master Mode.                 0000  0000                       57, 189

SSPSTAT     SMP             CKE            D/A        P                 S         R/W               UA       BF       0000  0000                       57, 181,

                                                                                                                                                       191

SSPCON1     WCOL            SSPOV          SSPEN      CKP               SSPM3     SSPM2             SSPM1    SSPM0    0000  0000                       57, 182,

                                                                                                                                                       192

SSPCON2     GCEN            ACKSTAT        ACKDT      ACKEN             RCEN      PEN               RSEN     SEN      0000  0000                       57, 193

ADRESH     A/D Result Register, High Byte                                                                             xxxx  xxxx                       58, 261

ADRESL     A/D Result Register, Low Byte                                                                              xxxx  xxxx                       58, 261

ADCON0      —               —              CHS3       CHS2              CHS1      CHS0              GO/DONE  ADON     --00  0000                       58, 255

ADCON1      —               —              VCFG1      VCFG0             —         —                 —        —        --00  ----                       59, 256

ADCON2      ADFM            —              ACQT2      ACQT1             ACQT0     ADCS2             ADCS1    ADCS0    0-00  0000                       58, 257

CCPR1H     Capture/Compare/PWM Register 1, High Byte                                                                  xxxx  xxxx                       58, 135

CCPR1L     Capture/Compare/PWM Register 1, Low Byte                                                                   xxxx  xxxx                       58, 135

CCP1CON     P1M1            P1M0           DC1B1      DC1B0             CCP1M3    CCP1M2            CCP1M1   CCP1M0   0000  0000                       58, 161

CCPR2H     Capture/Compare/PWM Register 2, High Byte                                                                  xxxx  xxxx                       58, 135

CCPR2L     Capture/Compare/PWM Register 2, Low Byte                                                                   xxxx  xxxx                       58, 135

CCP2CON     —               —              DC2B1      DC2B0             CCP2M3    CCP2M2            CCP2M1   CCP2M0   --00  0000                       58, 134

PSTRCON     —               —              —        STRSYNC             STRD      STRC              STRB     STRA     ---0  0001                       58, 175

BAUDCON     ABDOVF          RCIDL          DTRXP      CKTXP             BRG16     —                 WUE      ABDEN    0100  0-00                       58, 233

PWM1CON     PRSEN           PDC6           PDC5       PDC4              PDC3      PDC2              PDC1     PDC0     0000  0000                       58, 174

ECCP1AS     ECCPASE         ECCPAS2       ECCPAS1   ECCPAS0             PSSAC1    PSSAC0            PSSBD1   PSSBD0   0000  0000                       58, 171

CVRCON      CVREN           CVROE          CVRR       CVRSS             CVR3      CVR2              CVR1     CVR0     0000  0000                       58, 274

CVRCON2     FVREN           FVRST          —          —                 —         —                 —        —        00--  ----                       58, 275

TMR3H      Timer3 Register, High Byte                                                                                 xxxx  xxxx                       58, 160

TMR3L      Timer3 Register, Low Byte                                                                                  xxxx  xxxx                       58, 160

T3CON       RD16            T3CCP2         T3CKPS1   T3CKPS0            T3CCP1    T3SYNC            TMR3CS   TMR3ON   0000  0000                       58, 157

Legend:    x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note   1:  The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise it is disabled and reads as ‘0’. See

           Section 4.4 “Brown-out Reset (BOR)”.

       2:  These registers and/or bits are not implemented on 28-pin devices and are read as ‘0’. Reset values are shown for 40/44-pin devices;

           individual unimplemented bits should be interpreted as ‘-’.

       3:  The PLLEN bit is only available in specific oscillator configuration; otherwise it is disabled and reads as ‘0’. See Section 2.6.2 “PLL in

           HFINTOSC Modes”.

       4:  The RE3 bit is only available when Master Clear Reset is disabled (MCLRE Configuration bit = 0). Otherwise, RE3 reads as ‘0’. This bit is

           read-only.

       5:  RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.

           When disabled, these bits read as ‘0’.

       6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

       7:  This register is only implemented in the PIC18F46K20 and PIC18F26K20 devices.

DS40001303H-page 76                                                                                  2010-2015 Microchip Technology Inc.
                                                                                   PIC18F2XK20/4XK20

TABLE 5-2:        REGISTER FILE SUMMARY (PIC18F2XK20/4XK20) (CONTINUED)

File Name    Bit 7       Bit 6         Bit 5         Bit 4                Bit 3    Bit 2              Bit 1        Bit 0   Value on                      Details

                                                                                                                           POR, BOR                on page:

SPBRGH       EUSART Baud Rate Generator Register, High Byte                                                                0000  0000                    58, 226

SPBRG        EUSART Baud Rate Generator Register, Low Byte                                                                 0000  0000                    58, 226

RCREG        EUSART Receive Register                                                                                       0000  0000                    58, 223

TXREG        EUSART Transmit Register                                                                                      0000  0000                    58, 222

TXSTA        CSRC        TX9           TXEN          SYNC                 SENDB    BRGH               TRMT         TX9D    0000  0010                    58, 231

RCSTA        SPEN        RX9           SREN          CREN                 ADDEN    FERR               OERR         RX9D    0000  000x                    58, 232

EEADR        EEADR7      EEADR6        EEADR5        EEADR4               EEADR3   EEADR2             EEADR1       EEADR0  0000  0000      58, 85, 93

EEADRH(7)    —           —             —             —                    —        —                  EEADR9       EEADR8  ----  --00      58, 85, 93

EEDATA       EEPROM Data Register                                                                                          0000  0000      58, 85, 93

EECON2       EEPROM Control Register 2 (not a physical register)                                                           0000  0000      58, 85, 93

EECON1       EEPGD       CFGS          —             FREE                 WRERR    WREN               WR           RD      xx-0  x000      58, 86, 93

IPR2         OSCFIP      C1IP          C2IP          EEIP                 BCLIP    HLVDIP             TMR3IP       CCP2IP  1111  1111                    59, 110

PIR2         OSCFIF      C1IF          C2IF          EEIF                 BCLIF    HLVDIF             TMR3IF       CCP2IF  0000  0000                    59, 106

PIE2         OSCFIE      C1IE          C2IE          EEIE                 BCLIE    HLVDIE             TMR3IE       CCP2IE  0000  0000                    59, 108

IPR1         PSPIP(2)    ADIP          RCIP          TXIP                 SSPIP    CCP1IP             TMR2IP       TMR1IP  1111  1111                    59, 109

PIR1         PSPIF(2)    ADIF          RCIF          TXIF                 SSPIF    CCP1IF             TMR2IF       TMR1IF  0000  0000                    59, 105

PIE1         PSPIE(2)    ADIE          RCIE          TXIE                 SSPIE    CCP1IE             TMR2IE       TMR1IE  0000  0000                    59, 107

OSCTUNE      INTSRC      PLLEN(3)      TUN5          TUN4                 TUN3     TUN2               TUN1         TUN0    0q00  0000                    32, 59

TRISE(2)     IBF         OBF           IBOV          PSPMODE              —        TRISE2             TRISE1       TRISE0  0000  -111                    59, 126

TRISD(2)     PORTD Data Direction Control Register                                                                         1111  1111                    59, 122

TRISC        PORTC Data Direction Control Register                                                                         1111  1111                    59, 119

TRISB        PORTB Data Direction Control Register                                                                         1111  1111                    59, 116

TRISA        TRISA7(5)   TRISA6(5)     Data Direction Control Register for PORTA                                           1111  1111                    59, 113

LATE(2)      —           —             —             —                    —        PORTE Data Latch Register               ----  -xxx                    59, 125

                                                                                   (Read and Write to Data Latch)

LATD(2)      PORTD Data Latch Register (Read and Write to Data Latch)                                                      xxxx  xxxx                    59, 122

LATC         PORTC Data Latch Register (Read and Write to Data Latch)                                                      xxxx  xxxx                    59, 119

LATB         PORTB Data Latch Register (Read and Write to Data Latch)                                                      xxxx  xxxx                    59, 116

LATA         LATA7(5)    LATA6(5)      PORTA Data Latch Register (Read and Write to Data Latch)                            xxxx  xxxx                    59, 113

PORTE        —           —             —             —                    RE3(4)   RE2(2)             RE1(2)       RE0(2)  ----  x000                    59, 125

PORTD(2)     RD7         RD6           RD5           RD4                  RD3      RD2                RD1          RD0     xxxx  xxxx                    59, 122

PORTC        RC7         RC6           RC5           RC4                  RC3      RC2                RC1          RC0     xxxx  xxxx                    59, 119

PORTB        RB7         RB6           RB5           RB4                  RB3      RB2                RB1          RB0     xxx0  0000                    59, 116

PORTA        RA7(5)      RA6(5)        RA5           RA4                  RA3      RA2                RA1          RA0     xx0x  0000                    59, 113

ANSELH(6)    —           —             —             ANS12                ANS11    ANS10              ANS9         ANS8    ---1  1111                    59, 129

ANSEL        ANS7(2)     ANS6(2)       ANS5(2)       ANS4                 ANS3     ANS2               ANS1         ANS0    1111  1111                    59, 128

IOCB         IOCB7       IOCB6         IOCB5         IOCB4                —        —                  —            —       0000  ----                    59, 116

WPUB         WPUB7       WPUB6         WPUB5         WPUB4                WPUB3    WPUB2              WPUB1        WPUB0   1111  1111                    59, 116

CM1CON0      C1ON        C1OUT         C1OE          C1POL                C1SP     C1R                C1CH1        C1CH0   0000  0000                    59, 267

CM2CON0      C2ON        C2OUT         C2OE          C2POL                C2SP     C2R                C2CH1        C2CH0   0000  0000                    59, 268

CM2CON1      MC1OUT      MC2OUT        C1RSEL        C2RSEL               —        —                  —            —       0000  ----                    60, 270

SLRCON       —           —             —             SLRE(2)              SLRD(2)  SLRC               SLRB         SLRA    ---1  1111                    60, 130

SSPMSK       MSK7        MSK6          MSK5          MSK4                 MSK3     MSK2               MSK1         MSK0    1111  1111                    60, 200

Legend:      x = unknown, u = unchanged, — = unimplemented, q = value depends on condition

Note     1:  The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise it is disabled and reads as ‘0’. See

             Section 4.4 “Brown-out Reset (BOR)”.

         2:  These registers and/or bits are not implemented on 28-pin devices and are read as ‘0’. Reset values are shown for 40/44-pin devices;

             individual unimplemented bits should be interpreted as ‘-’.

         3:  The PLLEN bit is only available in specific oscillator configuration; otherwise it is disabled and reads as ‘0’. See Section 2.6.2 “PLL in

             HFINTOSC Modes”.

         4:  The RE3 bit is only available when Master Clear Reset is disabled (MCLRE Configuration bit = 0). Otherwise, RE3 reads as ‘0’. This bit is

             read-only.

         5:  RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.

             When disabled, these bits read as ‘0’.

         6:  All bits of the ANSELH register initialize to ‘0’ if the PBADEN bit of CONFIG3H is ‘0’.

         7:  This register is only implemented in the PIC18F46K20 and PIC18F26K20 devices.

 2010-2015 Microchip Technology Inc.                                                                                      DS40001303H-page 77
PIC18F2XK20/4XK20

5.3.5         STATUS REGISTER                                                It is recommended that only BCF, BSF, SWAPF, MOVFF

The STATUS register, shown in Register 5-2, contains                         and MOVWF instructions are used to alter the STATUS

the arithmetic status of the ALU. As with any other SFR,                     register, because these instructions do not affect the Z,

it can be the operand for any instruction.                                   C, DC, OV or N bits in the STATUS register.

If  the  STATUS         register  is   the  destination    for  an           For other instructions that do not affect Status bits, see

instruction that affects the Z, DC, C, OV or N bits, the                     the  instruction  set    summaries  in    Table 24-2     and

results of the instruction are not written; instead, the                     Table 24-3.

STATUS        register  is      updated     according      to   the          Note:        The C and DC bits operate as the borrow

instruction   performed.        Therefore,  the    result  of   an                        and  digit    borrow  bits,  respectively,     in

instruction with the STATUS register as its destination                                   subtraction.

may be different than intended. As an example, CLRF

STATUS       will  set  the  Z    bit  and  leave  the   remaining

Status bits unchanged (‘000u           u1uu’).

REGISTER 5-2:                STATUS: STATUS REGISTER

         U-0                 U-0            U-0                R/W-x         R/W-x          R/W-x         R/W-x             R/W-x

         —                   —              —                   N            OV                Z                DC(1)       C(1)

bit 7                                                                                                                              bit 0

Legend:

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

-n = Value at POR                      ‘1’ = Bit is set               ‘0’ = Bit is cleared              x = Bit is unknown

bit 7-5            Unimplemented: Read as ‘0’

bit 4              N: Negative bit

                   This bit is used for signed arithmetic (two’s complement). It indicates whether the result was negative

                   (ALU MSB = 1).

                   1 = Result was negative

                   0 = Result was positive

bit 3              OV: Overflow bit