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

型号

产品描述

搜索
 

PIC18F67K22

器件型号:PIC18F67K22
器件类别:微处理器
文件大小:4582.02KB,共0页
厂商名称:MICROCHIP [Microchip Technology]
厂商官网:http://www.microchip.com/
下载文档

器件描述

32-BIT, FLASH, 48 MHz, MICROCONTROLLER,

32位, FLASH, 48 MHz, 单片机,

参数

PIC18F67K22功能数量 1
PIC18F67K22端子数量 64
PIC18F67K22最大工作温度 125 Cel
PIC18F67K22最小工作温度 -40 Cel
PIC18F67K22最大供电/工作电压 5.5 V
PIC18F67K22最小供电/工作电压 3 V
PIC18F67K22额定供电电压 3.3 V
PIC18F67K22外部数据总线宽度 0.0
PIC18F67K22输入输出总线数量 53
PIC18F67K22线速度 48 MHz
PIC18F67K22加工封装描述 9 X 9 MM, 0.90 MM HEIGHT, LEAD FREE, PLASTIC, QFN-64
PIC18F67K22状态 ACTIVE
PIC18F67K22包装形状 SQUARE
PIC18F67K22包装尺寸 CHIP CARRIER, HEAT SINK/SLUG, VERY THIN PROFILE
PIC18F67K22表面贴装 Yes
PIC18F67K22端子形式 NO LEAD
PIC18F67K22端子间距 0.5000 mm
PIC18F67K22端子涂层 MATTE TIN
PIC18F67K22端子位置 QUAD
PIC18F67K22包装材料 PLASTIC/EPOXY
PIC18F67K22温度等级 AUTOMOTIVE
PIC18F67K22ADC通道 Yes
PIC18F67K22地址总线宽度 0.0
PIC18F67K22位数 32
PIC18F67K22最大FCLK时钟频率 48 MHz
PIC18F67K22微处理器类型 MICROCONTROLLER
PIC18F67K22PWM通道 Yes
PIC18F67K22ROM编程 FLASH

文档预览

PIC18F67K22器件文档内容

           PIC18F87K22 Family
                         Data Sheet

            64/80-Pin, High-Performance,
1-Mbit Enhanced Flash Microcontrollers

                        with 12-Bit A/D and
                nanoWatt XLP Technology

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

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

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

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

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

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

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

                                                                   SQTP is a service mark of Microchip Technology Incorporated
                                                                   in the U.S.A.

                                                                   All other trademarks mentioned herein are property of their
                                                                   respective companies.

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

                                                                        Printed on recycled paper.

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

DS39960B-page 2  Preliminary                                        2010 Microchip Technology Inc.
                   PIC18F87K22 FAMILY

64/80-Pin, High-Performance, 1-Mbit Enhanced Flash MCUs
        with 12-Bit A/D and nanoWatt XLP Technology

Low-Power Features:                             Special Microcontroller Features:

Power-Managed modes:                           Operating Voltage Range: 1.8V to 5.5V
   - Run: CPU on, peripherals on                On-Chip 3.3V Regulator
   - Idle: CPU off, peripherals on               Operating Speed up to 64 MHz
   - Sleep: CPU off, peripherals off             Up to 128 Kbytes On-Chip Flash Program

Two-Speed Oscillator Start-up                    Memory
Fail-Safe Clock Monitor                        Data EEPROM of 1,024 Bytes
Power-Saving Peripheral Module Disable (PMD)   4K x 8 General Purpose Registers (SRAM)
Ultra Low-Power Wake-up                        10,000 Erase/Write Cycle Flash Program

Fast Wake-up, 2 s Typical                        Memory, Typical
Low-Power WDT, 300 nA Typical                  1,000,000 Erase/write Cycle Data EEPROM
Ultra Low 50 nA Input Leakage
                                                   Memory, Typical
Run mode Currents Down to Very Low 5.5 mA,    Flash Retention 40 Years, Minimum
   Typical                                       Three Internal Oscillators: LF-INTRC (31 kHz),

Idle mode Currents Down to Very Low 2.2 mA,      MF-INTOSC (500 kHz) and HF-INTOSC
   Typical                                         (16 MHz)
                                                 Self-Programmable under Software Control
Sleep mode Currents Down to Very Low 20 nA,    Priority Levels for Interrupts
   Typical                                       8 x 8 Single-Cycle Hardware Multiplier
                                                 Extended Watchdog Timer (WDT):
RTCC Current Downs to Very Low 700 nA,           - Programmable period from 4 ms to 4,194s
   Typical
                                                      (about 70 minutes)
                                                 In-Circuit Serial ProgrammingTM (ICSPTM) via

                                                   Two Pins
                                                 In-Circuit Debug via Two Pins
                                                 Programmable:

                                                   - BOR
                                                   - LVD

        Program Memory           Data Memory    12-Bit CCP/  MSSP         EUSART
                                                                                Comparators
Device  Flash # Single-Word SRAM EEPROM I/O A/D ECCP         SPI  Master
                                                                   I2CTM               Timers
        (bytes) Instructions (bytes) (bytes)    (ch) (PWM)                                8/16-Bit
                                                                                                External Bus
                                                                                                        CTMU
                                                                                                               RTCC

PIC18F65K22 32K   16,383         2K  1K         53 16 5/3 2 Y      Y 2 3 4/4 N Y Y

PIC18F66K22 64K   32,768         4K  1K         53 16 7/3 2 Y      Y 2 3 6/5 N Y Y

PIC18F67K22 128K  65,536         4K  1K         53 16 7/3 2 Y      Y 2 3 6/5 N Y Y

PIC18F85K22 32K   16,383         2K  1K         69 24 5/3 2 Y      Y 2 3 4/4 Y Y Y

PIC18F86K22 64K   32,768         4K  1K         69 24 7/3 2 Y      Y 2 3 6/5 Y Y Y

PIC18F87K22 128K  65,536         4K  1K         69 24 7/3 2 Y      Y 2 3 6/5 Y Y Y

2010 Microchip Technology Inc.                 Preliminary               DS39960B-page 3
PIC18F87K22 FAMILY

Peripheral Highlights:                               Charge Time Measurement Unit (CTMU):

Up to Ten CCP/ECCP modules:                          - Capacitance measurement for mTouchTM
   - Up to seven Capture/Compare/PWM (CCP)                sensing solution
      modules
   - Three Enhanced Capture/Compare/PWM                - Time measurement with 1 ns typical
      (ECCP) modules                                      resolution

Up to Eleven 8/16-Bit Timer/Counter modules:         - Integrated temperature sensor
   - Timer0 8/16-bit timer/counter with 8-bit
      programmable prescaler                         High-Current Sink/Source 25 mA/25 mA (PORTB
   - Timer1,3 16-bit timer/counter                   and PORTC)
   - Timer2,4,6,8 8-bit timer/counter
   - Timer5,7 16-bit timer/counter for 64k and    Up to Four External Interrupts
      128k parts                                     Two Master Synchronous Serial Port (MSSP)
   - Timer10,12 8-bit timer/counter for 64k and
      128k parts                                       modules:
                                                       - 3/4-wire SPI (supports all four SPI modes)
Three Analog Comparators                             - I2CTM Master and Slave modes
Configurable Reference Clock Output                Two Enhanced Addressable USART modules:
Hardware Real-Time Clock and Calendar (RTCC)         - LIN/J2602 support
                                                       - Auto-Baud Detect (ABD)
   module with Clock, Calendar and Alarm Functions   12-Bit A/D Converter with up to 24 Channels:
                                                       - Auto-acquisition and Sleep operation

                                                       - Differential input mode of operation

                                                    Integrated Voltage Reference

DS39960B-page 4  Preliminary                         2010 Microchip Technology Inc.
                                                                   PIC18F87K22 FAMILY

Pin Diagrams PIC18F6XK22

                64-Pin TQFP, QFN

                                                                   RE2/CS/P2B/CCP10
                                                                       RE3/P3C/CCP9/REF0
                                                                            RE4/P3B/CCP8
                                                                                 RE5/P1C/CCP7
                                                                                      RE6/P1B/CCP6
                                                                                           RE7/ECCP2/P2A
                                                                                                RD0/PSP0/CTPLS
                                                                                                    VDD
                                                                                                         VSS
                                                                                                              RD1/PSP1/T5CKI/T7G
                                                                                                                   RD2/PSP2
                                                                                                                        RD3/PSP3
                                                                                                                             RD4/PSP4/SDO2
                                                                                                                                  RD5/PSP5/SDI2/SDA2
                                                                                                                                       RD6/PSP6/SCK2/SCL2
                                                                                                                                           RD7/PSP7/SS2

                                                                   64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49

                                            RE1/WR/P2C         1                48                                                                         RB0/INT0/FLT0
                                             RE0/RD/P2D                                                                                                    RB1/INT1
                                       RG0/ECCP3/P3A           2                47                                                                         RB2/INT2/CTED1
                        RG1/TX2/CK2/AN19/C3OUT                                                                                                             RB3/INT3/CTED2/ECCP2(1)/PA2
                         RG2/RX2/DT2/AN18/C3INA                3                46                                                                         RB4/KBI0
                       RG3/CCP4/AN17/P3D/C3INB                                                                                                             RB5/KBI1/T3CKI/T1G
                                                               4                45
                                               MCLR/RG5                                                                                                    RB6/KBI2/PGC
RG4/RTCC/T7CKI/T5G/CCP5/AN16/P1D/C3INC                         5                44                                                                         VSS
                                                                                                                                                           OSC2/CLKO/RA6
                                                          VSS  6                43                                                                         OSC1/CLKI/RA7
                                          VDDCORE/VCAP                                                                                                     VDD
                                            RF7/AN5/SS1        7   PIC18F65K22  42                                                                         RB7/KBI3/PGD
                                       RF6/AN11/C1INA                                                                                                      RC5/SDO1
                             RF5/AN10/CVREF/C1INB              8   PIC18F66K22  41                                                                         RC4/SDI1/SDA1
                                         RF4/AN9/C2INA                                                                                                     RC3/SCK1/SCL1
                              RF3/AN8/C2INB/CTMUI              9   PIC18F67K22  40                                                                         RC2/ECCP1/P1A
                                       RF2/AN7/C1OUT
                                                               10               39

                                                               11               38

                                                               12               37

                                                               13               36

                                                               14               35

                                                               15               34

                                                               16               33

                                                                   17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

                                                                   RF1/AN6/C2OUT/CTDIN
                                                                       ENVREG
                                                                            AVDD
                                                                                 AVSS

                                                                                      RA3/AN3/VREF+
                                                                                           RA2/AN2/VREF-

                                                                                                RA1/AN1
                                                                                                     RA0/AN0/ULPWU

                                                                                                         VSS
                                                                                                              VDD
                                                                                                                   RA5/AN4/T1CKI/T3G/HLVDIN
                                                                                                                        RA4/T0CKI
                                                                                                                            RC1/SOSCI/ECCP2(1)/P2A
                                                                                                                                  RC0/SOSCO/SCLKI
                                                                                                                                      RC6/TX1/CK1
                                                                                                                                           RC7/RX1/DT1

Note 1: The ECCP2 pin placement depends on the CCP2MX Configuration bit setting and whether the device is
              in Microcontroller or Extended Microcontroller mode.

        2: Not available on the PIC18F65K22 and PIC18F85K22 devices.

2010 Microchip Technology Inc.                                    Preliminary                                                                             DS39960B-page 5
PIC18F87K22 FAMILY

Pin Diagrams PIC18F8XK22

          80-Pin TQFP

                                                                  RH1/AN22
                                                                      RH0/AN23
                                                                          RE2/P2B/CCP10/CS/AD10
                                                                             RE3/P3C/CCP9(3)/REF0/AD11
                                                                                 RE4/P3B/CCP8(3)/AD12
                                                                                      RE5/P1C/CCP7(3)/AD13
                                                                                          RE6/P1B/CCP6(3)/AD14
                                                                                               RE7/ECCP2/P2A/AD15
                                                                                                   RD0/CTPLS
                                                                                                       VDD
                                                                                                           VSS
                                                                                                               RD1/T5CKI/T7G
                                                                                                                   RD2/PSP2/AD2
                                                                                                                        RD3/PSP3/AD3
                                                                                                                            RD4/SDO2/PSP4/AD4
                                                                                                                                RD5/SDI2/SDA2/PSP5/AD5
                                                                                                                                    RD6/SCK2/SCL2/PSP6/AD6
                                                                                                                                        RD7/SS2/PSP7/AD7
                                                                                                                                             RJ0
                                                                                                                                                 RJ1/ALE

                                                                  80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61

                                                RH2/AN21       1                                                                                      60    RJ2/OE
                                                RH3/AN20                                                                                                    RJ3/WRL
                                                               2                                                                                      59    RB0/INT0/FLT0
                                      RE1/P2C/WR/AD9                                                                                                        RB1/INT1
                                      RE0/P2D/RD/AD8           3                                                                                      58
                                       RG0/ECCP3/P3A                                                                                                        RB2/INT2/CTED1
                        RG1/TX2/CK2/AN19/C3OUT                 4                                                                                      57    RB3/INT3/CTED2/ECCP2(1)/P2A
                         RG2/RX2/DT2/AN18/C3INA                                                                                                             RB4/KBI0
                       RG3/CCP4/AN17/P3D/C3INB                 5                                                                                      56    RB5/KBI1/T3CKI/T1G
                                                                                                                                                            RB6/KBI2/PGC
                                               MCLR/RG5        6                                                                                      55    VSS
RG4/RTCC/T7CKI/T5G/CCP5/AN16/P1D/C3INC                                                                                                                      OSC2/CLKO/RA6
                                                               7                                                                                      54    OSC1/CLKI/RA7
                                                          VSS                                                                                               VDD
                                          VDDCORE/VCAP         8   PIC18F85K22                                                                        53    RB7/KBI3/PGD
                                            RF7/AN5/SS1        9                                                                                      52    RC5/SDO1
                                       RF6/AN11/C1INA                                                                                                       RC4/SDI1/SDA1
                                       RF5/AN10/C1INB          10  PIC18F86K22                                                                        51    RC3/SCK1/SCL1
                                         RF4/AN9/C2INA                                                                                                      RC2/ECCP1/P1A
                              RF3/AN8/C2INB/CTMUI              11  PIC18F87K22                                                                        50
                                       RF2/AN7/C1OUT           12                                                                                     49    RJ7/UB
                              RH7/CCP6(3)/P1B/AN15                                                                                                          RJ6/LB
                    RH6/CCP7(3)/P1C/AN14/C1INC                 13                                                                                     48

                                                               14                                                                                     47

                                                               15                                                                                     46

                                                               16                                                                                     45

                                                               17                                                                                     44

                                                               18                                                                                     43

                                                               19                                                                                     42

                                                               20                                                                                     41

                                                               21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

                                                               RH5/CCP8(3)/P3B/AN13/C2IND
                                                                   RH4/CCP9(3)/P3C/AN12/C2INC

                                                                        RF1/AN6/C2OUT/CTDIN
                                                                            ENVREG
                                                                                AVDD
                                                                                    AVSS

                                                                                        RA3/AN3/VREF+
                                                                                            RA2/AN2/VREF-

                                                                                                 RA1/AN1
                                                                                                     RA0/AN0/ULPWU

                                                                                                         VSS
                                                                                                             VDD
                                                                                                                  RA5/AN4/T1CKI/T3G/HLVDIN
                                                                                                                      RA4/T0CKI
                                                                                                                          RC1/SOSC/ECCP2/P2A
                                                                                                                              RC0/SOSCO/SCKLI
                                                                                                                                  RC6/TX1/CK1
                                                                                                                                      RC7/RX1/DT1
                                                                                                                                          RJ4/WRH
                                                                                                                                              RJ5/CE

Note 1:          The ECCP2 pin placement depends on the CCP2MX Configuration bit setting and whether the device is
                 in Microcontroller or Extended Microcontroller mode.
        2:
        3:       Not available on the PIC18F65K22 and PIC18F85K22 devices.

                 The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration
                 bit (CONFIG3H<1>).

DS39960B-page 6                                                    Preliminary                                                                         2010 Microchip Technology Inc.
                                 PIC18F87K22 FAMILY

Table of Contents

1.0 Device Overview .......................................................................................................................................................................... 9
2.0 Guidelines for Getting Started with PIC18FXXKXX Microcontrollers ......................................................................................... 37
3.0 Oscillator Configurations ............................................................................................................................................................ 41
4.0 Power-Managed Modes ............................................................................................................................................................. 55
5.0 Reset .......................................................................................................................................................................................... 71
6.0 Memory Organization ................................................................................................................................................................. 85
7.0 Flash Program Memory............................................................................................................................................................ 109
8.0 External Memory Bus ............................................................................................................................................................... 119
9.0 Data EEPROM Memory ........................................................................................................................................................... 131
10.0 8 x 8 Hardware Multiplier.......................................................................................................................................................... 137
11.0 Interrupts .................................................................................................................................................................................. 139
12.0 I/O Ports ................................................................................................................................................................................... 163
13.0 Timer0 Module ......................................................................................................................................................................... 191
14.0 Timer1 Module ......................................................................................................................................................................... 195
15.0 Timer2 Module ......................................................................................................................................................................... 207
16.0 Timer3/5/7 Modules.................................................................................................................................................................. 209
17.0 Timer4/6/8/10/12 Modules........................................................................................................................................................ 221
18.0 Real-Time Clock and Calendar (RTCC)................................................................................................................................... 225
19.0 Capture/Compare/PWM (CCP) Modules ................................................................................................................................. 243
20.0 Enhanced Capture/Compare/PWM (ECCP) Module................................................................................................................ 257
21.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 279
22.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ............................................................... 325
23.0 12-Bit Analog-to-Digital Converter (A/D) Module ..................................................................................................................... 349
24.0 Comparator Module.................................................................................................................................................................. 365
25.0 Comparator Voltage Reference Module................................................................................................................................... 373
26.0 High/Low-Voltage Detect (HLVD)............................................................................................................................................. 377
27.0 Charge Time Measurement Unit (CTMU) ................................................................................................................................ 383
28.0 Special Features of the CPU.................................................................................................................................................... 401
29.0 Instruction Set Summary .......................................................................................................................................................... 429
30.0 Development Support............................................................................................................................................................... 479
31.0 Electrical Characteristics .......................................................................................................................................................... 483
32.0 Packaging Information.............................................................................................................................................................. 523
Appendix A: Revision History............................................................................................................................................................. 531
Appendix B: Migration From PIC18F87J11 and PIC18F8722 to PIC18F87K22................................................................................ 531
Index .................................................................................................................................................................................................. 533
The Microchip Web Site ..................................................................................................................................................................... 545
Customer Change Notification Service .............................................................................................................................................. 545
Customer Support .............................................................................................................................................................................. 545
Reader Response .............................................................................................................................................................................. 546
Product Identification System ............................................................................................................................................................ 547

2010 Microchip Technology Inc.  Preliminary  DS39960B-page 7
PIC18F87K22 FAMILY

                                    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 or fax the Reader Response Form in the back of this data sheet to (480) 792-4150. We
  welcome your feedback.

Most Current Data Sheet

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

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

Errata

  An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current
  devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision
  of silicon and revision of document to which it applies.
  To determine if an errata sheet exists for a particular device, please check with one of the following:
   Microchip's Worldwide Web site; http://www.microchip.com
   Your local Microchip sales office (see last page)
  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.

DS39960B-page 8  Preliminary   2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

1.0 DEVICE OVERVIEW                                       An internal oscillator block that provides a 16 MHz
                                                            clock (2% accuracy) and an INTRC source
This document contains device-specific information for      (approximately 31 kHz, stable over temperature
the following devices:                                      and VDD)

PIC18F65K22       PIC18F85K22                            - Operates as HF-INTOSC or MF-INTOSC
PIC18F66K22       PIC18F86K22                               when block selected for 16 MHz or 500 kHz
PIC18F67K22       PIC18F87K22
                                                            - Frees the two oscillator pins for use as
This family combines the traditional advantages of all         additional general purpose I/O
PIC18 microcontrollers namely, high computational
performance and a rich feature set with an extremely   The internal oscillator block provides a stable reference
competitive price point. These features make the         source that gives the family additional features for
PIC18F87K22 family a logical choice for many             robust operation:
high-performance applications where price is a primary
consideration.                                           Fail-Safe Clock Monitor: This option constantly
                                                            monitors the main clock source against a reference
1.1 Core Features                                           signal provided by the internal oscillator. If a clock
                                                            failure occurs, the controller is switched to the
1.1.1 nanoWatt TECHNOLOGY                                   internal oscillator, allowing for continued low-speed
                                                            operation or a safe application shutdown.
All of the devices in the PIC18F87K22 family incorpo-
rate a range of features that can significantly reduce    Two-Speed Start-up: This option allows the
power consumption during operation. Key items include:      internal oscillator to serve as the clock source
                                                            from Power-on Reset, or wake-up from Sleep
Alternate Run Modes: By clocking the controller           mode, until the primary clock source is available.
   from the Timer1 source or the Internal RC oscilla-
   tor, power consumption during code execution          1.1.3 MEMORY OPTIONS
   can be reduced.
                                                         The PIC18F87K22 family provides ample room for
Multiple Idle Modes: The controller can also run       application code, from 32 Kbytes to 128 Kbytes of code
   with its CPU core disabled but the peripherals still  space. The Flash cells for program memory are rated
   active. In these states, power consumption can be     to last up to 10,000 erase/write cycles. Data retention
   reduced even further.                                 without refresh is conservatively estimated to be
                                                         greater than 40 years.
On-the-Fly Mode Switching: The power-managed
   modes are invoked by user code during operation,      The Flash program memory is readable and writable.
   allowing the user to incorporate power-saving ideas   During normal operation, the PIC18F87K22 family also
   into their application's software design.             provides plenty of room for dynamic application data
                                                         with up to 3,862 bytes of data RAM.
nanoWatt XLP: An extra low-power Sleep, BOR,
   RTCC and Watchdog Timer                               1.1.4 EXTERNAL MEMORY BUS

1.1.2  OSCILLATOR OPTIONS AND                            Should 128 Kbytes of memory be inadequate for an
       FEATURES                                          application, the 80-pin members of the PIC18F87K22
                                                         family have an External Memory Bus (EMB) enabling
All of the devices in the PIC18F87K22 family offer       the controller's internal program counter to address a
different oscillator options, allowing users a range of  memory space of up to 2 Mbytes. This is a level of data
choices in developing application hardware. These        access that few 8-bit devices can claim and enables:
include:
                                                          Using combinations of on-chip and external
External Resistor/Capacitor (RC); RA6 available           memory of up to 2 Mbytes

External Resistor/Capacitor with Clock Out             Using external Flash memory for reprogrammable
   (RCIO)                                                   application code or large data tables

Three External Clock modes:                            Using external RAM devices for storing large
                                                            amounts of variable data
   - External Clock (EC); RA6 available
                                                         1.1.5 EXTENDED INSTRUCTION SET
   - External Clock with Clock Out (ECIO)
                                                         The PIC18F87K22 family implements the optional
   - External Crystal (XT, HS, LP)                       extension to the PIC18 instruction set, adding eight
                                                         new instructions and an Indexed Addressing mode.
A Phase Lock Loop (PLL) frequency multiplier,          Enabled as a device configuration option, the extension
   available to the external oscillator modes which      has been specifically designed to optimize re-entrant
   allows clock speeds of up to 64 MHz. PLL can          application code originally developed in high-level
   also be used with the internal oscillator.            languages, such as `C'.

2010 Microchip Technology Inc.                      Preliminary  DS39960B-page 9
PIC18F87K22 FAMILY

1.1.6 EASY MIGRATION                                       12-Bit A/D Converter: The PIC18F87K22 family
                                                             has differential ADC. It incorporates programma-
All devices share the same rich set of peripherals           ble acquisition time, allowing for a channel to be
except that the devices with 32 Kbytes of program            selected and a conversion to be initiated without
memory (PIC18F65K22 and PIC18F85K22) have two                waiting for a sampling period, and thus, reducing
less CCPs and three less timers. This provides a             code overhead.
smooth migration path within the device family as
applications evolve and grow.                              Charge Time Measurement Unit (CTMU): The
                                                             CTMU is a flexible analog module that provides
The consistent pinout scheme, used throughout the            accurate differential time measurement between
entire family, also aids in migrating to the next larger     pulse sources, as well as asynchronous pulse
device. This is true when moving between the 64-pin          generation.
members, between the 80-pin members, or even
jumping from 64-pin to 80-pin devices.                     Together with other on-chip analog modules, the
                                                             CTMU can precisely measure time, measure
All of the devices in the family share the same rich set     capacitance or relative changes in capacitance, or
of peripherals, except for those with 32 Kbytes of           generate output pulses that are independent of
program memory (PIC18F65K22 and PIC18F85K22).                the system clock.
Those devices have two less CCPs and three less
timers.                                                    LP Watchdog Timer (WDT): This enhanced
                                                             version incorporates a 22-bit prescaler, allowing
The PIC18F87K22 family is also largely pin compatible        an extended time-out range that is stable across
with other PIC18 families, such as the PIC18F8720 and        operating voltage and temperature. See
PIC18F8722 and the PIC18F85J11. This allows a new            Section 31.0 "Electrical Characteristics" for
dimension to the evolution of applications, allowing         time-out periods.
developers to select different price points within
Microchip's PIC18 portfolio, while maintaining a similar   Real-Time Clock and Calendar Module
feature set.                                                 (RTCC): The RTCC module is intended for appli-
                                                             cations requiring that accurate time be maintained
1.2 Other Special Features                                   for extended periods of time with minimum to no
                                                             intervention from the CPU.
Communications: The PIC18F87K22 family
   incorporates a range of serial communication            The module is a 100-year clock and calendar with
   peripherals including two Enhanced USART, that            automatic leap year detection. The range of the
   support LIN/J2602, and two Master SSP modules             clock is from 00:00:00 (midnight) on January 1,
   capable of both SPI and I2CTM (Master and Slave)          2000 to 23:59:59 on December 31, 2099.
   modes of operation.

CCP Modules: PIC18F87K22 family devices
   incorporate up to seven Capture/Compare/PWM
   (CCP) modules. Up to six different time bases can
   be used to perform several different operations at
   once.

ECCP Modules: The PIC18F87K22 family has
   three Enhanced CCP (ECCP) modules to
   maximize flexibility in control applications:

   - Up to eight different time bases for
      performing several different operations
      at once

   - Up to four PWM outputs for each module
      for a total of 12 PWMs

   - Other beneficial features, such as polarity
      selection, programmable dead time,
      auto-shutdown and restart, and Half-Bridge
      and Full-Bridge Output modes

DS39960B-page 10  Preliminary                              2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

1.3 Details on Individual Family                         CCP modules:
         Members                                            - PIC18FX5K22 (PIC18F65K22 and
                                                               PIC18F85K22) five CCP modules
Devices in the PIC18F87K22 family are available in          - PIC18FX6K22 and PIC18FX7K22
64-pin and 80-pin packages. Block diagrams for the             (PIC18F66K22, PIC18F86K22,
two groups are shown in Figure 1-1 and Figure 1-2.             PIC18F67K22, and PIC18F87K22)
                                                               seven CCP modules
The devices are differentiated from each other in these
ways:                                                    Timer modules:
                                                            - PIC18FX5K22 (PIC18F65K22 and
Flash Program Memory:                                        PIC18F85K22) Four 8-bit timer/counters
   - PIC18FX5K22 (PIC18F65K22 and                              and four 16-bit timer/counters
      PIC18F85K22) 32 Kbytes                              - PIC18FX6K22 and PIC18FX7K22
   - PIC18FX6K22 (PIC18F66K22 and                              (PIC18F66K22, PIC18F86K22,
      PIC18F86K22) 64 Kbytes                                 PIC18F67K22, and PIC18F87K22) six 8-bit
   - PIC18FX7K22 (PIC18F67K22 and                              timer/counters and five 16-bit timer/counters
      PIC18F87K22) 128 Kbytes
                                                          A/D Channels:
Data RAM:                                                 - PIC18F6XK22 (64-pin devices) 24 channels
   - All devices except PIC18FX5K22 4 Kbytes              - PIC18F8XK22 (80-pin devices) 16 channels
   - PIC18FX5K22 2 Kbytes
                                                         All other features for devices in this family are identical.
I/O Ports:                                             These are summarized in Table 1-1 and Table 1-2.
   - PIC18F6XK22 (64-pin devices)
      seven bidirectional ports                          The pinouts for all devices are listed in Table 1-3 and
   - PIC18F8XK22 (80-pin devices)                       Table 1-4.
      nine bidirectional ports

2010 Microchip Technology Inc.  Preliminary             DS39960B-page 11
PIC18F87K22 FAMILY

TABLE 1-1: DEVICE FEATURES FOR THE PIC18F6XK22 (64-PIN DEVICES)

Features                           PIC18F65K22       PIC18F66K22                 PIC18F67K22

Operating Frequency                                  DC 64 MHz
Program Memory (Bytes)
Program Memory (Instructions)      32K               64K                          128K
Data Memory (Bytes)
Interrupt Sources                  16,384            32,768                       65,536
I/O Ports
Parallel Communications            2K                4K                           4K
Timers
Comparators                        42                                   48
CTMU
RTCC                                            Ports A, B, C, D, E, F, G
Capture/Compare/PWM (CCP) Modules
Enhanced CCP (ECCP) Modules                     Parallel Slave Port (PSP)
Serial Communications
12-Bit Analog-to-Digital Module    8                                    11
Resets (and Delays)
                                                     3
Instruction Set
Packages                                             Yes

                                                     Yes

                                   5                 7                            7

                                                     3

                                   Two MSSPs and two Enhanced USARTs (EUSART)

                                                     16 Input Channels

                                   POR, BOR, RESET Instruction, Stack Full, Stack Underflow, MCLR, WDT
                                                                         (PWRT, OST)

                                   75 Instructions, 83 with Extended Instruction Set Enabled

                                                64-Pin QFN, 64-Pin TQFP

TABLE 1-2: DEVICE FEATURES FOR THE PIC18F8XK22 (80-PIN DEVICES)

Features                           PIC18F85K22       PIC18F86K22                 PIC18F87K22

Operating Frequency                                  DC 64 MHz

Program Memory (Bytes)             32 K              64K                          128K

Program Memory (Instructions)              (Up to 2 Mbytes with Extended Memory)
Data Memory (Bytes)
Interrupt Sources                  16,384            32,768                       65,536
I/O Ports
Parallel Communications            2K                4K                           4K
Timers
Comparators                        42                                   48
CTMU
RTCC                                            Ports A, B, C, D, E, F, G, H, J
Capture/Compare/PWM (CCP) Modules
Enhanced CCP (ECCP) Modules                     Parallel Slave Port (PSP)
Serial Communications
12-Bit Analog-to-Digital Module    8                                    11
Resets (and Delays)
                                                     3
Instruction Set
Packages                                        Yes

                                                Yes

                                   5                 7                            7

                                                     3

                                   Two MSSPs and two Enhanced USARTs (EUSART)

                                                     24 Input Channels

                                   POR, BOR, RESET Instruction, Stack Full, Stack Underflow, MCLR, WDT
                                                                         (PWRT, OST)

                                   75 Instructions, 83 with Extended Instruction Set Enabled

                                                     80-Pin TQFP

DS39960B-page 12                   Preliminary                     2010 Microchip Technology Inc.
                                                                                  PIC18F87K22 FAMILY

FIGURE 1-1:           PIC18F6XK22 (64-PIN) BLOCK DIAGRAM

                      Table Pointer<21>                                 Data Bus<8>
                         inc/dec logic
                               21                                    88                              Data Latch                  PORTA
                                              20                                                   Data Memory                RA0:RA7(1,2)
                                                      PCLATU PCLATH                                 (2/4 Kbytes)
                       Address Latch                                                                                             PORTB
                      Program Memory                 PCU PCH PCL                                   Address Latch              RB0:RB7(1)
                                                      Program Counter
                         Data Latch                                                                           12                 PORTC
                                              8         31-Level Stack                          Data Address<12>              RC0:RC7(1)
                                                            STKPTR
                                                                                             4         12          4             PORTD
                                                  Table Latch                            BSR                  Access          RD0:RD7(1)
                                                                                                  FSR0         Bank
                                                                                                  FSR1                           PORTE
                                                                                                  FSR2               12       RE0: RE7(1)

                                                                                                  inc/dec                        PORTF
                                                                                                   logic                      RF1:RF7(1)

                                                             ROM Latch                            Address                        PORTG
                      Instruction Bus <16>                                                        Decode                      RG0:RG5(1)

                                                            IR

                                                   Instruction          State Machine                                8
                                                  Decode and            Control Signals           PRODH PRODL

                                                     Control

OSC2/CLKO               Timing                      Power-up                                  3   8 x 8 Multiply
OSC1/CLKI             Generation                       Timer                                                            8
                                                                                         BITOP
                        INTRC                       Oscillator                                 8     W                   8
                      Oscillator                  Start-up Timer
                       16 MHz                                                                              8
                       Oscillator                   Power-on
                                                       Reset                                      8                      8

                      Precision                     Watchdog                                      ALU<8>
                      Band Gap                         Timer
             ENVREG   Reference                                                                               8
                                                    BOR and
                       Voltage                          LVD
                      Regulator

                      VDDCORE/VCAP VDD,VSS              MCLR

Timer0                Timer1              Timer                          Timer    CTMU            ADC             Comparator
                                   2/4/6/8/10(3)/12(3)                  3/5/7(3)                  12-Bit              1/2/3

        CCP           ECCP         EUSART1                              EUSART2   RTCC          MSSP1/2
4/5/6/7/8/9(3)/10(3)  1/2/3

Note 1:      See Table 1-3 for I/O port pin descriptions.
         2:
             RA6 and RA7 are only available as digital I/O in select oscillator modes. For more information, see Section 3.0 "Oscillator
         3:  Configurations".

             Unimplemented on the PIC18F65K22.

2010 Microchip Technology Inc.                                         Preliminary                                           DS39960B-page 13
PIC18F87K22 FAMILY

FIGURE 1-2:           PIC18F8XK22 (80-PIN) BLOCK DIAGRAM

                                                                Data Bus<8>

                      Table Pointer<21>                           88                          Data Latch                    PORTA
                                                                                            Data Memory                  RA0:RA7(1,2)
                         inc/dec logic            PCLATU PCLATH                              (2/4 Kbytes)
                                                                                                                            PORTB
                               21                 PCU PCH PCL                               Address Latch                 RB0:RB7(1)
                                             20    Program Counter
                                                                                                       12                   PORTC
                                                                                         Data Address<12>                 RC0:RC7(1)

System Bus Interface  Address Latch               31-Level Stack                      4          12            4            PORTD
                      Program Memory                 STKPTR                        BSR                    Access         RD0:RD7(1)
                                                                                            FSR0           Bank
                         Data Latch                                                         FSR1                            PORTE
                                                                                            FSR2                 12       RE0:RE7(1)

                                      8                                                     inc/dec                         PORTF
                                                Table Latch                                  logic                        RF1:RF7(1)

                            Instruction Bus <16>    ROM Latch                               Address                         PORTG
                                                                                            Decode                       RG0:RG5(1)
                      AD15:0, A19:16                     IR
                      (Multiplexed with PORTD,                    State Machine                                8            PORTH
                      PORTE and PORTH)              Instruction   Control Signals           PRODH PRODL                  RH0:RH7(1)
                                                   Decode and
OSC2/CLKO               Timing                                                          3   8 x 8 Multiply                   PORTJ
OSC1/CLKI             Generation                      Control                                                     8       RJ0:RJ7(1)
                                                                                   BITOP
                        INTRC                       Power-up                             8          W                8
                       Oscillator                      Timer
                        16 MHz                                                                         8
                       Oscillator                   Oscillator
                                                  Start-up Timer                            8                        8

                      Precision                     Power-on                                ALU<8>
                      Band Gap                         Reset
ENVREG                Reference                                                                           8
                                                    Watchdog
                       Voltage                         Timer
                      Regulator
                                                    BOR and
                                                        LVD

                      VDDCORE/VCAP VDD,VSS        MCLR

Timer0                                     Timer              Timer    CTMU                 ADC              Comparator
                      Timer1 2/4/6/8/10(3)/12(3)             3/5/7(3)                       12-Bit               1/2/3

        CCP           ECCP            EUSART1                EUSART2 RTCC                MSSP1/2
4/5/6/7/8/9(3)/10(3)  1/2/3

Note 1:               See Table 1-3 for I/O port pin descriptions.
         2:
                      RA6 and RA7 are only available as digital I/O in select oscillator modes. See Section 3.0 "Oscillator Configurations" for
         3:           more information.

                      Unimplemented on the PIC18F85K22.

DS39960B-page 14                                                  Preliminary                                            2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

TABLE 1-3: PIC18F6XK22 PINOUT I/O DESCRIPTIONS

Pin Name       Pin Number Pin Buffer                                       Description
               QFN/TQFP Type Type

MCLR/RG5                         7
    MCLR
                                     I  ST               Master Clear (input) or programming voltage (input).
    RG5
                                                         This pin is an active-low Reset to the device.

                                     I  ST               General purpose, input only pin.

OSC1/CLKI/RA7                    39           Oscillator crystal or external clock input.
    OSC1
    CLKI                             I CMOS Oscillator crystal input.

    RA7                              I CMOS External clock source input. Always associated

                                                         with pin function, OSC1. (See related OSC1/CLKI,

                                                         OSC2/CLKO pins.)

                                     I/O TTL             General purpose I/O pin.

OSC2/CLKO/RA6                    40           Oscillator crystal or clock output.
    OSC2
    CLKO                             O  --               Oscillator crystal output. Connects to crystal or

    RA6                                                  resonator in Crystal Oscillator mode.

                                     O  --               In certain oscillator modes, OSC2 pin outputs CLKO,

                                                         which has 1/4 the frequency of OSC1 and denotes the

                                                         instruction cycle rate.

                                     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  Analog  = Analog input
            I = Input                                    O       = Output
            P = Power                                    OD      = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

2010 Microchip Technology Inc.         Preliminary                                             DS39960B-page 15
PIC18F87K22 FAMILY

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

     Pin Name       Pin Number Pin Buffer                              Description
                    QFN/TQFP Type Type

                                           PORTA is a bidirectional I/O port.

RA0/AN0/ULPWU       24
    RA0
    AN0                 I/O TTL                          Digital I/O.
    ULPWU
                        I Analog Analog Input 0.

                        I Analog Ultra low-power wake-up input.

RA1/AN1             23
    RA1
    AN1                 I/O TTL                          Digital I/O.

                        I Analog Analog Input 1.

RA2/AN2/VREF-       22
    RA2
    AN2                 I/O TTL                          Digital I/O.
    VREF-
                        I Analog Analog Input 2.

                        I Analog A/D reference voltage (low) input.

RA3/AN3/VREF+       21
    RA3
    AN3                 I/O TTL                          Digital I/O.
    VREF+
                        I Analog Analog Input 3.

                        I Analog A/D reference voltage (high) input.

RA4/T0CKI           28
    RA4
    T0CKI               I/O ST                           Digital I/O.

                        I  ST                            Timer0 external clock input.

RA5/AN4/T1CKI/T3G/  27
HLVDIN
                        I/O TTL                          Digital I/O.
    RA5                                                  Analog Input 4.
    AN4                 I Analog                         Timer1 clock input.
    T1CKI                                                Timer3 external clock gate input.
    T3G                 I  ST                            High/Low-Voltage Detect input.
    HLVDIN
                        I  ST

                        I Analog

RA6                                                      See the OSC2/CLKO/RA6 pin.

RA7                                                      See the OSC1/CLKI/RA7 pin.
Legend:
            TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
            I = Input                                    O             = Output
            P = Power                                    OD            = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

DS39960B-page 16           Preliminary                                  2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

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

Pin Name            Pin Number Pin Buffer                                       Description
                    QFN/TQFP Type Type

                                              PORTB is a bidirectional I/O port. PORTB can be software
                                              programmed for internal weak pull-ups on all inputs.

RB0/INT0/FLTO                    48
    RB0
    INT0                             I/O TTL             Digital I/O.
    FLT0
                                     I  ST               External Interrupt 0.

                                     I  ST               Enhanced PWM Fault input for ECCP1/2/3.

RB1/INT1                         47
    RB1
    INT1                             I/O TTL             Digital I/O.

                                     I  ST               External Interrupt 1.

RB2/INT2/CTED1                   46
    RB2
    INT2                             I/O TTL             Digital I/O.
    CTED1
                                     I  ST               External Interrupt 2.

                                     I  ST               CTMU Edge 1 input.

RB3/INT3/CTED2/                  45
ECCP2/P2A
                                     I/O TTL             Digital I/O.
    RB3                                                  External Interrupt 3.
    INT3                             I  ST               CTMU Edge 2 input.
    CTED2                                                Capture 2 input/Compare 2 output/PWM2.
    ECCP2                            I  ST               Enhanced PWM2 Output A.
    P2A
                                     I/O ST

                                     O  --

RB4/KBI0                         44
    RB4
    KBI0                             I/O TTL             Digital I/O.

                                     I  TTL              Interrupt-on-change pin.

RB5/KBI1/T3CKI/T1G               43
    RB5
    KBI1                             I/O TTL             Digital I/O.
    T3CKI
    T1G                              I  TTL              Interrupt-on-change pin.

                                     I  ST               Timer3 clock input.

                                     I  ST               Timer1 external clock gate input.

RB6/KBI2/PGC                     42
    RB6
    KBI2                             I/O TTL             Digital I/O.
    PGC
                                     I  TTL              Interrupt-on-change pin.

                                     I/O ST              In-Circuit Debugger and ICSPTM programming clock pin.

RB7/KBI3/PGD                     37
    RB7
    KBI3                             I/O TTL             Digital I/O.
    PGD                                                  Interrupt-on-change pin.
                                     I  TTL              In-Circuit Debugger and ICSP programming data pin.

                                     I/O ST

Legend:     TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
            I = Input                                    O             = Output
            P = Power                                    OD            = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

2010 Microchip Technology Inc.         Preliminary                                          DS39960B-page 17
PIC18F87K22 FAMILY

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

Pin Name             Pin Number Pin Buffer                                    Description
                     QFN/TQFP Type Type

                                            PORTC is a bidirectional I/O port.

RC0/SOSCO/SCLKI      30
    RC0
    SOSCO                I/O ST                          Digital I/O.
    SCLKI
                         O  --                           SOSC oscillator output.

                         I  ST                           Digital SOSC input.

RC1/SOSCI/ECCP2/P2A  29
    RC1
    SOSCI                I/O ST                          Digital I/O.
    ECCP2(1)
    P2A                  I CMOS SOSC oscillator input.

                         I/O ST                          Capture 2 input/Compare2 output/PWM2 output.

                         O  --                           Enhanced PWM2 Output A.

RC2/ECCP1/P1A        33
    RC2
    ECCP1                I/O ST                          Digital I/O.
    P1A
                         I/O ST                          Capture 1 input/Compare 1 output/PWM1 output.

                         O  --                           Enhanced PWM1 Output A.

RC3/SCK1/SCL1        34
    RC3
    SCK1                 I/O ST                          Digital I/O.
    SCL1(4)
                         I/O ST                          Synchronous serial clock input/output for SPI mode.
                         I/O I2C                         Synchronous serial clock input/output for I2CTM mode.

RC4/SDI1/SDA1        35
    RC4
    SDI1                 I/O ST                          Digital I/O.
    SDA1(4)
                         I  ST                           SPI data in.
                         I/O I2C                         I2C data I/O.

RC5/SDO1             36
    RC5
    SDO1                 I/O ST                          Digital I/O.

                         O  --                           SPI data out.

RC6/TX1/CK1          31
    RC6
    TX1                  I/O ST                          Digital I/O.
    CK1
                         O  --                           EUSART asynchronous transmit.

                         I/O ST                          EUSART synchronous clock (see related RX1/DT1).

RC7/RX1/DT1          32
    RC7
    RX1                  I/O ST                          Digital I/O.
    DT1                                                  EUSART asynchronous receive.
                         I  ST                           EUSART synchronous data (see related TX1/CK1).

                         I/O ST

Legend:     TTL = TTL compatible input                   CMOS           = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog         = Analog input
            I = Input                                    O              = Output
            P = Power                                    OD             = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

DS39960B-page 18            Preliminary                                            2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

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

Pin Name            Pin Number Pin Buffer                                      Description
                    QFN/TQFP Type Type

                                              PORTD is a bidirectional I/O port.

RD0/PSP0/CTPLS                   58
    RD0
    PSP0                             I/O ST              Digital I/O.
    CTPLS
                                     I/O TTL             Parallel Slave Port data.

                                     O  --               CTMU pulse generator output.

RD1/PSP1/T5CKI/T7G               55
    RD1
    PSP1                             I/O ST              Digital I/O.
    T5CKI
    T7G                              I/O TTL             Parallel Slave Port.

                                     I  ST               Timer5 clock input.

                                     I  ST               Timer7 external clock gate input.

RD2/PSP2                         54
    RD2
    PSP2                             I/O ST              Digital I/O.

                                     O TTL               Parallel Slave Port.

RD3/PSP3                         53
    RD3
    PSP3                             I/O ST              Digital I/O.

                                     I/O TTL             Parallel Slave Port.

RD4/PSP4/SDO2                    52
    RD4
    PSP4                             I/O ST              Digital I/O.
    SDO2
                                     I/O TTL             Parallel Slave Port.

                                     O  --               SPI data out.

RD5/PSP5/SDI2/SDA2               51
    RD5
    PSP5                             I/O ST              Digital I/O.
    SDI2
    SDA2                             I/O TTL             Parallel Slave Port.

                                     I  ST               SPI data in.
                                     I/O I2C             I2CTM data I/O.

RD6/PSP6/SCK2/SCL2               50
    RD6
    PSP6                             I/O ST              Digital I/O.
    SCK2
    SCL2(4)                          I/O TTL             Parallel Slave Port.

                                     I/O ST              Synchronous serial clock.
                                     I/O I2C             Synchronous serial clock I/O for I2C mode.

RD7/PSP7/SS2                     49
    RD7
    PSP7                             I/O ST              Digital I/O.
    SS2                                                  Parallel Slave Port.
                                     I/O TTL             SPI slave select input.

                                     I  TTL

Legend:     TTL = TTL compatible input                   CMOS           = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog         = Analog input
            I = Input                                    O              = Output
            P = Power                                    OD             = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

2010 Microchip Technology Inc.         Preliminary                                         DS39960B-page 19
PIC18F87K22 FAMILY

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

Pin Name           Pin Number Pin Buffer                               Description
                   QFN/TQFP Type Type

                                          PORTE is a bidirectional I/O port.

RE0/RD/P2D         2
    RE0
    RD                 I/O ST                            Digital I/O.
    P2D
                       I  TTL                            Parallel Slave Port read strobe.

                       O  --                             EECP2 PWM Output D.

RE1/WR/P2C         1
    RE1
    WR                 I/O ST                            Digital I/O.
    P2C
                       I  TTL                            Parallel Slave Port write strobe.

                       O  --                             ECCP2 PWM Output C.

RE2/CS/P2B/CCP10   64
    RE2
    CS                 I/O ST                            Digital I/O.
    P2B
    CCP10(3)           I  TTL                            Parallel Slave Port chip select.

                       O  --                             ECCP2 PWM Output B.

                       I/O S/T                           Capture 10 input/Compare 10 output/PWM10 output.

RE3/P3C/CCP9/REFO  63
    RE3
    P3C                I/O ST                            Digital I/O.
    CCP9(3)
    REFO               O  --                             ECCP3 PWM Output C.

                       I/O S/T                           Capture 9 input/Compare 9 output/PWM9 output.

                       O  --                             Reference clock out.

RE4/P3B/CCP8       62
    RE4
    P3B                I/O ST                            Digital I/O.
    CCP8
                       O  --                             ECCP3 PWM Output B.

                       I/O S/T                           Capture 8 input/Compare 8 output/PWM8 output.

RE5/P1C/CCP7       61
    RE5
    P1C                I/O ST                            Digital I/O.
    CCP7
                       O  --                             ECCP1 PWM Output C.

                       I/O S/T                           Capture 7 input/Compare 7 output/PWM7 output.

RE6/P1B/CCP6       60
    RE6
    P1B                I/O ST                            Digital I/O.
    CCP6
                       O  --                             ECCP1 PWM Output B.

                       I/O S/T                           Capture 6 input/Compare 6 output/PWM6 output.

RE7/ECCP2/P2A      59
    RE7
    ECCP2(2)           I/O ST                            Digital I/O.
    P2A                                                  Capture 2 input/Compare 2 output/PWM2 output.
                       I/O ST                            ECCP2 PWM Output A.

                       O  --

Legend:     TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
            I = Input                                    O             = Output
            P = Power                                    OD            = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

DS39960B-page 20          Preliminary                                           2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

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

Pin Name              Pin Number Pin Buffer                                 Description
                      QFN/TQFP Type Type

                                               PORTF is a bidirectional I/O port.

RF1/AN6/C2OUT/CTDIN              17

RF1                                  I/O ST              Digital I/O.

AN6                                  I Analog Analog Input 6.

C2OUT                                O  --               Comparator 2 output.

CTDIN                                I  ST               CTMU pulse delay input.

RF2/AN7/C1OUT                    16
    RF2
    AN7                              I/O ST              Digital I/O.
    C1OUT
                                     I Analog Analog Input 7.

                                     O  --               Comparator 1 output.

RF3/AN8/C2INB/CTMUI              15
    RF3
    AN8                              I/O ST              Digital I/O.
    C2INB
    CTMUI                            I Analog Analog Input 8.

                                     I Analog Comparator 2 Input B.

                                     O  --               CTMU pulse generator charger for the C2INB

                                                         comparator input.

RF4/AN9/C2INA                    14
    RF4
    AN9                              I/O ST              Digital I/O.
    C2INA
                                     I Analog Analog Input 9.

                                     I Analog Comparator 2 Input A.

RF5/AN10/CVREF/C1INB             13

RF5                                  I/O ST              Digital I/O.

AN10                                 I Analog Analog Input 10.

CVREF                                O Analog Comparator reference voltage output.

C1INB                                I Analog Comparator 1 Input B.

RF6/AN11/C1INA                   12
    RF6
    AN11                             I/O ST              Digital I/O.
    C1INA
                                     I Analog Analog Input 11.

                                     I Analog Comparator 1 Input A.

RF7/AN5/SS1                      11
    RF7
    AN5                              I/O ST              Digital I/O.
    SS1                                                  Analog Input 5.
                                     O Analog            SPI1 slave select input.

                                     I  TTL

Legend:     TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
            I = Input                                    O             = Output
            P = Power                                    OD            = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

2010 Microchip Technology Inc.         Preliminary                                       DS39960B-page 21
PIC18F87K22 FAMILY

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

Pin Name             Pin Number Pin Buffer                                    Description
                     QFN/TQFP Type Type

                                            PORTG is a bidirectional I/O port.

RG0/ECCP3/P3A        3
    RG0
    ECCP3               I/O ST                           Digital I/O.
    P3A
                        I/O ST                           Capture 3 input/Compare 3 output/PWM3 output.

                        O  --                            ECCP3 PWM Output A.

RG1/TX2/CK2/AN19/    4
C3OUT
                        I/O ST                           Digital I/O.
    RG1                                                  EUSART asynchronous transmit.
    TX2                 O  --                            EUSART synchronous clock (see related RX2/DT2).
    CK2                                                  Analog Input 19.
    AN19                I/O ST                           Comparator 3 output.
    C3OUT
                        I Analog

                        O  --

RG2/RX2/DT2/AN18/    5
C3INA
                        I/O ST                           Digital I/O.
    RG2                                                  EUSART asynchronous receive.
    RX2                 I  ST                            EUSART synchronous data (see related TX2/CK2).
    DT2                                                  Analog Input 18.
    AN18                I/O ST                           Comparator 3 Input A.
    C3INA
                        I Analog

                        I Analog

RG3/CCP4/AN17/P3D/   6
C3INB
                        I/O ST                           Digital I/O.
    RG3                                                  Capture 4 input/Compare 4 output/PWM4 output.
    CCP4                I/O S/T                          Analog Input 18.
    AN17                                                 ECCP3 PWM Output D.
    P3D                 I Analog                         Comparator 3 Input B.
    C3INB
                        O  --

                        I Analog

RG4/RTCC/T7CKI/T5G/  8

CCP5/AN16/P1D/C3INC

RG4                     I/O ST                           Digital I/O.

RTCC                    O  --                            RTCC output
T7CKI(3)                                                 Timer7 clock input.
                        I  ST

T5G                     I  ST                            Timer5 external clock gate input.

CCP5                    I/O ST                           Capture 5 input/Compare 5 output/PWM5 output.

AN16                    I Analog Analog Input 16.

P1D                     O  --                            ECCP1 PWM Output D.

C3INC                   I Analog Comparator 3 Input C.

RG5                  7                      See the MCLR/RG5 pin.
Legend:
            TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
            I = Input                                    O             = Output
            P = Power                                    OD            = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

DS39960B-page 22           Preliminary                                         2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

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

      Pin Name  Pin Number Pin Buffer                            Description
                QFN/TQFP Type Type

VSS             9, 25, 41, 56 P         -- Ground reference for logic and I/O pins.

VDD             26, 38, 57 P            -- Positive supply for logic and I/O pins.

AVSS                             20  P  -- Ground reference for analog modules.

AVDD                             19  P  -- Positive supply for analog modules.

ENVREG                           18  I  ST Enable for on-chip voltage regulator.

VDDCORE/VCAP                     10         Core logic power or external filter capacitor connection.
    VDDCORE
    VCAP                             P  --               External filter capacitor connection (regulator
                                                         enabled/disabled).

Legend:     TTL = TTL compatible input                   CMOS    = CMOS compatible input or output
            ST = Schmitt Trigger input with CMOS levels  Analog  = Analog input
            I = Input                                    O       = Output
            P = Power                                    OD      = Open-Drain (no P diode to VDD)
            I2C = I2CTM/SMBus

Note 1:     Default assignment for ECCP2 when the CCP2MX Configuration bit is set.
        2:  Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.
        3:  Not available on PIC18F65K22 and PIC18F85K22 devices.

2010 Microchip Technology Inc.         Preliminary                                       DS39960B-page 23
PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS

Pin Name          Pin Number Pin Buffer                                 Description
                      TQFP Type Type

MCLR/RG5          9
RG5
                      I  ST                           Master Clear (input) or programming voltage (input).

                                                      This pin is an active-low Reset to the device.

                      I  ST                           General purpose, input only pin.

OSC1/CLKI/RA7     49                               Oscillator crystal or external clock input.
    OSC1
    CLKI              I CMOS Oscillator crystal input.

    RA7               I CMOS External clock source input. Always associated

                                                      with pin function OSC1. (See related OSC1/CLKI,

                                                      OSC2/CLKO pins.)

                      I/O TTL                         General purpose I/O pin.

OSC2/CLKO/RA6     50                               Oscillator crystal or clock output.
    OSC2
    CLKO              O  --                           Oscillator crystal output. Connects to crystal or

    RA6                                               resonator in Crystal Oscillator mode.

                      O  --                           In certain oscillator modes, OSC2 pin outputs CLKO,

                                                      which has 1/4 the frequency of OSC1 and denotes the

                                                      instruction cycle rate.

                      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  Analog  = Analog input
         I = Input                                    O       = Output
         P = Power                                    OD      = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

DS39960B-page 24         Preliminary                                             2010 Microchip Technology Inc.
                                                            PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

     Pin Name   Pin Number Pin Buffer                                     Description
                    TQFP Type Type

                                                            PORTA is a bidirectional I/O port.

RA0/AN0/ULPWU                    30
    RA0
    AN0                              I/O TTL                Digital I/O.
    ULPWU
                                     I Analog Analog Input 0.

                                     I Analog Ultra low-power wake-up input.

RA1/AN1                          29
    RA1
    AN1                              I/O TTL                Digital I/O.

                                     I Analog Analog Input 1.

RA2/AN2/VREF-                    28
    RA2
    AN2                              I/O TTL                Digital I/O.
    VREF-
                                     I Analog Analog Input 2.

                                     I Analog A/D reference voltage (low) input.

RA3/AN3/VREF+                    27
    RA3
    AN3                              I/O TTL                Digital I/O.
    VREF+
                                     I Analog Analog Input 3.

                                     I Analog A/D reference voltage (high) input.

RA4/T0CKI                        34
    RA4
    T0CKI                            I/O ST                 Digital I/O.

                                     I  ST                  Timer0 external clock input.

RA5/AN4/T1CKI/                   33
T3G/HLVDIN
                                     I/O TTL                Digital I/O.
    RA5                                                     Analog Input 4.
    AN4                              I Analog               Timer1 clock input.
    T1CKI                                                   Timer3 external clock gate input.
    T3G                              I  ST                  High/Low-Voltage Detect input.
    HLVDIN
                                     I  ST

                                     I Analog

RA6                                                         See the OSC2/CLKO/RA6 pin.

RA7                                                         See the OSC1/CLKI/RA7 pin.
Legend:
            TTL = TTL compatible input                      CMOS          = CMOS compatible input or output
Note 1:     ST = Schmitt Trigger input with CMOS levels     Analog        = Analog input
        2:  I = Input                                       O             = Output
        3:  P = Power                                       OD            = Open-Drain (no P diode to VDD)
        4:  I2C = I2CTM/SMBus
        5:
            Default assignment for ECCP2 when the CCP2MX Configuration bit is set.

            Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.

            Not available on PIC18F65K22 and PIC18F85K22 devices.

            PSP is available only in Microcontroller mode.

            The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
            (CONFIG3H<1>).

2010 Microchip Technology Inc.         Preliminary                                             DS39960B-page 25
PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name            Pin Number Pin Buffer                                     Description
                        TQFP Type Type

                                                   PORTB is a bidirectional I/O port. PORTB can be software
                                                   programmed for internal weak pull-ups on all inputs.

RB0/INT0/FLT0       58
    RB0
    INT0                I/O TTL                        Digital I/O.
    FLT0
                        I  ST                          External Interrupt 0.

                        I  ST                          Enhanced PWM Fault input for ECCP1/2/3.

RB1/INT1            57
    RB1
    INT1                I/O TTL                        Digital I/O.

                        I  ST                          External Interrupt 1.

RB2/INT2/CTED1      56
    RB2
    INT2                I/O TTL                        Digital I/O.
    CTED1
                        I  ST                          External Interrupt 2.

                        I  ST                          CTMU Edge 1 input.

RB3/INT3/CTED2/     55
ECCP2/P2A
                        I/O TTL                        Digital I/O.
    RB3                                                External Interrupt 3.
    INT3                I  ST                          CTMU Edge 2 input.
    CTED2                                              Capture 2 input/Compare 2 output/PWM2 output.
    ECCP2               I  ST                          Enhanced PWM 2 Output A.
    P2A
                        I/O ST

                        O ST

RB4/KBI0            54
    RB4
    KBI0                I/O TTL                        Digital I/O.

                        I TTL                          Interrupt-on-change pin.

RB5/KBI1/T3CKI/T1G  53
    RB5
    KBI1                I/O TTL                        Digital I/O.
    T3CKI
    T1G                 I TTL                          Interrupt-on-change pin.

                        I  ST                          Timer3 clock input.

                        I  ST                          Timer1 external clock gate input.

RB6/KBI2/PGC        52
    RB6
    KBI2                I/O TTL                        Digital I/O.
    PGC
                        I TTL                          Interrupt-on-change pin.

                        I/O ST                         In-Circuit Debugger and ICSPTM programming clock pin.

RB7/KBI3/PGD        47
    RB7
    KBI3                I/O TTL                        Digital I/O.
    PGD
                        I TTL                          Interrupt-on-change pin.

                        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  Analog        = Analog input
          I = Input                                    O             = Output
          P = Power                                    OD            = Open-Drain (no P diode to VDD)
          I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

DS39960B-page 26           Preliminary                                            2010 Microchip Technology Inc.
                                                      PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name             Pin Number Pin Buffer                                 Description
                         TQFP Type Type

                                                   PORTC is a bidirectional I/O port.

RC0/SOSCO/SCKLI                  36
    RC0
    SOSCO                            I/O ST           Digital I/O.
    SCKLI
                                     O  --            SOSC oscillator output.

                                     I  ST            Digital SOSC input.

RC1/SOSCI/ECCP2/P2A              35

RC1                                  I/O ST           Digital I/O.

SOSCI                                 I CMOS          SOSC oscillator input.
ECCP2(1)                             I/O ST           Capture 2 input/Compare 2 output/PWM2 output.

P2A                                  O  --            Enhanced PWM2 Output A.

RC2/ECCP1/P1A                    43
    RC2
    ECCP1                            I/O ST           Digital I/O.
    P1A
                                     I/O ST           Capture 1 input/Compare 1 output/PWM1 output.

                                     O  --            Enhanced PWM1 Output A.

RC3/SCK1/SCL1                    44
    RC3
    SCK1                             I/O ST           Digital I/O.
    SCL1
                                     I/O ST           Synchronous serial clock input/output for SPI mode.
                                     I/O I2C          Synchronous serial clock input/output for I2CTM mode.

RC4/SDI1/SDA1                    45
    RC4
    SDI1                             I/O ST           Digital I/O.
    SDA1
                                     I  ST            SPI data in.
                                     I/O I2C          I2C data I/O.

RC5/SDO1                         46
    RC5
    SDO1                             I/O ST           Digital I/O.

                                     O  --            SPI data out.

RC6/TX1/CK1                      37
    RC6
    TX1                              I/O ST           Digital I/O.
    CK1
                                     O  --            EUSART asynchronous transmit.

                                     I/O ST           EUSART synchronous clock (see related RX1/DT1).

RC7/RX1/DT1                      38
    RC7
    RX1                              I/O ST           Digital I/O.
    DT1
                                     I  ST            EUSART asynchronous receive.

                                     I/O ST           EUSART synchronous data (see related TX1/CK1).

Legend:  TTL = TTL compatible input                   CMOS           = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels  Analog         = Analog input
         I = Input                                    O              = Output
         P = Power                                    OD             = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

2010 Microchip Technology Inc.         Preliminary                                     DS39960B-page 27
PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name             Pin Number Pin Buffer                                 Description
                         TQFP Type Type

                                                   PORTD is a bidirectional I/O port.

RD0/CTPLS            72
    RD0
    CTPLS                I/O ST                       Digital I/O.

                         O ST                         CTMU pulse generator output.

RD1/T5CKI/T7G        69
    RD1
    T5CKI                I/O ST                       Digital I/O.
    T7G
                         I  ST                        Timer5 clock input.

                         I  ST                        Timer7 external clock gate input.

RD2/PSP2/AD2         68
    RD2
    PSP2(4)              I/O ST                       Digital I/O.
    AD2
                         I/O TTL                      Parallel Slave Port data.

                         I/O TTL                      External Memory Address Data 2.

RD3/PSP3/AD3         67
    RD3
    PSP3(4)              I/O ST                       Digital I/O.
    AD3
                         I/O TTL                      Parallel Slave Port data.

                         I/O TTL                      External Memory Address Data 3.

RD4/SDO2/PSP4/AD4    66
    RD4
    SDO2                 I/O ST                       Digital I/O.
    PSP4(4)
    AD4                  O  --                        SPI data out.

                         I/O TTL                      Parallel Slave Port data.

                         I/O TTL                      External Memory Address Data 4.

RD5/SDI2/SDA2/PSP5/  65
AD5
                         I/O ST                       Digital I/O.
    RD5                                               SPI data in.
    SDI2                 I  ST                        I2CTM data I/O.
    SDA2                 I/O I2C                      Parallel Slave Port data.
    PSP5(4)                                           External Memory Address Data 5.
    AD5                  I/O TTL

                         I/O TTL

Legend:  TTL = TTL compatible input                   CMOS           = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels  Analog         = Analog input
         I = Input                                    O              = Output
         P = Power                                    OD             = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

DS39960B-page 28            Preliminary                                           2010 Microchip Technology Inc.
                                                        PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

     Pin Name        Pin Number Pin Buffer                            Description
                         TQFP Type Type

RD6/SCK2/SCL2/PSP6/              64

AD6

RD6                                  I/O ST             Digital I/O.

SCK2                                 I/O ST             Synchronous serial clock input/output for SPI mode.
SCL2                                 I/O I2C            Synchronous serial clock input/output for I2CTM mode.
PSP6(4)                              I/O TTL            Parallel Slave Port data.

AD6                                  I/O TTL            External Memory Address Data 6.

RD7/SS2/PSP7/AD7                 63
    RD7
    SS2                              I/O ST             Digital I/O.
    PSP7(4)
    AD7                              I TTL              SPI slave select input.

                                     I/O TTL            Parallel Slave Port data.

                                     I/O TTL            External Memory Address Data 7.

Legend:  TTL = TTL compatible input                     CMOS          = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels    Analog        = Analog input
         I = Input                                      O             = Output
         P = Power                                      OD            = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

     3: Not available on PIC18F65K22 and PIC18F85K22 devices.

     4: PSP is available only in Microcontroller mode.

     5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
           (CONFIG3H<1>).

2010 Microchip Technology Inc.      Preliminary                                         DS39960B-page 29
PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name           Pin Number Pin Buffer                            Description
                       TQFP Type Type

                                                   PORTE is a bidirectional I/O port.

RE0/P2D/RD/AD8     4
    RE0
    P2D                I/O ST                         Digital I/O.
    RD(4)
    AD8                O  --                          ECCP2 PWM Output D.

                       I TTL                          Parallel Slave Port read strobe.

                       I/O TTL                        External Memory Address/Data 8.

RE1/P2C/WR/AD9     3
    RE1
    P2C                I/O ST                         Digital I/O.
    WR(4)
    AD9                O  --                          ECCP2 PWM Output C.

                       I TTL                          Parallel Slave Port write strobe.

                       I/O TTL                        External Memory Address/Data 9.

RE2/P2B/CCP10/CS/  78
AD10
                       I/O ST                         Digital I/O.
    RE2                O ST                           ECCP2 PWM Output B.
    P2B                I/O ST                         Capture 10 input/Compare 10 output/PWM10 output.
    CCP10(3)            I TTL                         Parallel Slave Port chip select.
    CS(4)              I/O TTL                        External Memory Address/Data 10.
    AD10

RE3/P3C/CCP9/REFO  77
AD11
                       I/O ST                         Digital I/O.
    RE3                                               ECCP3 PWM Output C.
    P3C                O  --                          Capture 9 input/Compare 9 output/PWM9 output.
    CCP9(3,5)                                         Reference clock out.
    REFO               I/O S/T                        External Memory Address/Data 11.
    AD11
                       O  --

                       I/O TTL

RE4/P3B/CCP8/AD12  76
    RE4
    P3B                I/O ST                         Digital I/O.
    CCP8(5)
    AD12               O  --                          ECCP4 PWM Output B.

                       I/O ST                         Capture 8 input/Compare 8 output/PWM8 output.

                       I/O TTL                        External Memory Address/Data 12.

RE5/P1C/CCP7/AD13  75
    RE5
    P1C                I/O ST                         Digital I/O.
    CCP7(5)
    AD13               O  --                          ECCP1 PWM Output C.

                       I/O ST                         Capture 7 input/Compare 7 output/PWM7 output.

                       I/O TTL                        External Memory Address/Data 13.

Legend:  TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
         I = Input                                    O             = Output
         P = Power                                    OD            = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

DS39960B-page 30          Preliminary                                            2010 Microchip Technology Inc.
                                                      PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name            Pin Number Pin Buffer                           Description
                        TQFP Type Type

RE6/P1B/CCP6/AD14                74
    RE6
    P1B                              I/O ST           Digital I/O.
    CCP6(5)
    AD14                             O  --            ECCP1 PWM Output B.

                                     I/O ST           Capture 6 input/Compare 6 output/PWM6 output.

                                     I/O ST           External Memory Address/Data 14.

RE7/ECCP2/P2A/AD15               73
    RE7
    ECCP2(2)                         I/O ST           Digital I/O.
    P2A
    AD15                             I/O ST           Capture 2 input/Compare 2 output/PWM2 output.

                                     O  --            ECCP2 PWM Output A.

                                     I/O ST           External Memory Address/Data 15.

Legend:  TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
         I = Input                                    O             = Output
         P = Power                                    OD            = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

2010 Microchip Technology Inc.         Preliminary                                     DS39960B-page 31
PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name             Pin Number Pin Buffer                               Description
                         TQFP Type Type

                                                   PORTF is a bidirectional I/O port.

RF1/AN6/C2OUT/CTDIN  23

RF1                      I/O ST                       Digital I/O.

AN6                      I Analog Analog Input 6.

C2OUT                    O  --                        Comparator 2 output.

CTDIN                    I  ST                        CTMU pulse delay input.

RF2/AN7/C1OUT        18
    RF2
    AN7                  I/O ST                       Digital I/O.
    C1OUT
                         I Analog Analog Input 7.

                         O  --                        Comparator 1 output.

RF3/AN8/C2INB/CTMUI  17

RF3                      I/O ST                       Digital I/O.

AN8                      I Analog Analog Input 8.

C2INB                    I Analog Comparator 2 Input B.

CTMUI                    O  --                        CTMU pulse generator charger for the C2INB

                                                      comparator input.

RF4/AN9/C2INA        16
    RF4
    AN9                  I/O ST                       Digital I/O.
    C2INA
                         I Analog Analog Input 9.

                         I Analog Comparator 2 Input A.

RF5/AN10/C1INB       15
    RF5
    AN10                 I/O ST                       Digital I/O.
    C1INB
                         I Analog Analog Input 10.

                         I Analog Comparator 1 Input B.

RF6/AN11/C1INA       14
    RF6
    AN11                 I/O ST                       Digital I/O.
    C1INA
                         I Analog Analog Input 11.

                         I Analog Comparator 1 Input A.

RF7/AN5/SS1          13
    RF7
    AN5                  I/O ST                       Digital I/O.
    SS1
                         O Analog Analog Input 5.

                         I  ST                        SPI slave select input.

Legend:  TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
         I = Input                                    O             = Output
         P = Power                                    OD            = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

DS39960B-page 32            Preliminary                                          2010 Microchip Technology Inc.
                                                            PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name             Pin Number Pin Buffer                                       Description
                         TQFP Type Type

                                                            PORTG is a bidirectional I/O port.

RG0/ECCP3/P3A                    5
    RG0
    ECCP3                            I/O ST                 Digital I/O.
    P3A
                                     I/O ST                 Capture 3 input/Compare 3 output/PWM3 output.

                                     O  --                  ECCP3 PWM Output A.

RG1/TX2/CK2/AN19/                6
C3OUT
                                     I/O ST                 Digital I/O.
    RG1                                                     EUSART asynchronous transmit.
    TX2                              O  --                  EUSART synchronous clock (see related RX2/DT2).
    CK2                                                     Analog Input 19.
    AN19                             I/O ST                 Comparator 3 output.
    C3OUT
                                     I Analog

                                     O  --

RG2/RX2/DT2/AN18/                7
C3INA
                                     I/O ST                 Digital I/O.
    RG2                                                     EUSART asynchronous receive.
    RX2                              I  ST                  EUSART synchronous data (see related TX2/CK2).
    DT2                                                     Analog Input 18.
    AN18                             I/O ST                 Comparator 3 Input A.
    C3INA
                                     I Analog

                                     I Analog

RG3/CCP4/AN17/P3D/               8
C3INB
                                     I/O ST                 Digital I/O.
    RG3                                                     Capture 4 input/Compare 4 output/PWM4 output.
    CCP4                             I/O ST                 Analog Input 17.
    AN17                                                    ECCP3 PWM Output D.
    P3D                              I Analog               Comparator 3 Input B.
    C3INB
                                     O  --

                                     I Analog

RG4/RTCC/T7CKI/T5G/              10

CCP5/AN16/P1D/C3INC

RG4                                  I/O ST                 Digital I/O.

RTCC                                 O  --                  RTCC output.
T7CKI(3)                                                    Timer7 clock input.
                                     I  ST

T5G                                  I  ST                  Timer5 external clock gate input.

CCP5                                 I/O ST                 Capture 5 input/Compare 5 output/PWM5 output.

AN16                                 I Analog Analog Input 16.

P1D                                  O  --                  ECCP1 PWM Output D.

C3INC                                I Analog Comparator 3 Input C.

RG5                              9                          See the MCLR/RG5 pin.
Legend:
            TTL = TTL compatible input                      CMOS          = CMOS compatible input or output
Note 1:     ST = Schmitt Trigger input with CMOS levels     Analog        = Analog input
        2:  I = Input                                       O             = Output
        3:  P = Power                                       OD            = Open-Drain (no P diode to VDD)
        4:  I2C = I2CTM/SMBus
        5:
            Default assignment for ECCP2 when the CCP2MX Configuration bit is set.

            Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared.

            Not available on PIC18F65K22 and PIC18F85K22 devices.

            PSP is available only in Microcontroller mode.

            The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
            (CONFIG3H<1>).

2010 Microchip Technology Inc.         Preliminary                                             DS39960B-page 33
PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name            Pin Number Pin Buffer                            Description
                        TQFP Type Type

                                                   PORTH is a bidirectional I/O port.

RH0/AN23            79
    RH0
    AN23                I/O ST                         Digital I/O.

                        I Analog Analog Input 23.

RH1/AN22            80
    RH1
    AN22                I/O ST                         Digital I/O.

                        I Analog Analog Input 22.

RH2/AN21            1
    RH2
    AN21                I/O ST                         Digital I/O.

                        I Analog Analog Input 21.

RH3/AN20            2
    RH3
    AN20                I/O ST                         Digital I/O.

                        I Analog Analog Input 20.

RH4/CCP9/P3C/AN12/  22
C2INC
                        I/O ST                         Digital I/O.
    RH4                                                Capture 9 input/Compare 9 output/PWM9 output.
    CCP9(5)             I/O ST                         ECCP3 PWM Output C.
    P3C                                                Analog Input 12.
    AN12                O  --                          Comparator 2 Input C.
    C2INC
                        I Analog

                        I Analog

RH5/CCP8/P3B/AN13/  21
C2IND
                        I/O ST                         Digital I/O.
    RH5                                                Capture 8 input/Compare 8 output/PWM8 output.
    CCP8(5)             I/O ST                         ECCP3 PWM Output B.
    P3B                                                Analog Input 13.
    AN13                O  --                          Comparator 1 Input D.
    C2IND
                        I Analog

                        I Analog

RH6/CCP7/P1C/AN14/  20
C1INC
                        I/O ST                         Digital I/O.
    RH6                                                Capture 7 input/Compare 7 output/PWM7 output.
    CCP7(5)             I/O ST                         ECCP1 PWM Output C.
    P1C                                                Analog Input 14.
    AN14                O  --                          Comparator 1 Input C.
    C1INC
                        I Analog

                        I Analog

RH7/CCP6/P1B/AN15   19
    RH7
    CCP6(5)             I/O ST                         Digital I/O.
    P1B
    AN15                I/O ST                         Capture 6 input/Compare 6 output/PWM6 output.

                        O  --                          ECCP1 PWM Output B.

                        I Analog Analog Input 15.

Legend:   TTL = TTL compatible input                   CMOS          = CMOS compatible input or output
          ST = Schmitt Trigger input with CMOS levels  Analog        = Analog input
          I = Input                                    O             = Output
          P = Power                                    OD            = Open-Drain (no P diode to VDD)
          I2C = I2CTM/SMBus

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

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

3: Not available on PIC18F65K22 and PIC18F85K22 devices.

4: PSP is available only in Microcontroller mode.

5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
      (CONFIG3H<1>).

DS39960B-page 34           Preliminary                                           2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

TABLE 1-4: PIC18F8XK22 PINOUT I/O DESCRIPTIONS (CONTINUED)

         Pin Name  Pin Number Pin Buffer                               Description
                       TQFP Type Type

                                                         PORTJ is a bidirectional I/O port.

RJ0                              62  I/O ST              Digital I/O.

RJ1/ALE                          61
    RJ1
    ALE                              I/O ST              Digital I/O.

                                     O  --               External memory address latch enable.

RJ2/OE                           60
    RJ2
    OE                               I/O ST              Digital I/O.

                                     O  --               External memory output enable.

RJ3/WRL                          59
    RJ3
    WRL                              I/O ST              Digital I/O.

                                     O  --               External memory low control.

RJ4/WRH                          39
    RJ4
    WRH                              I/O ST              Digital I/O.

                                     O  --               External Memory Byte Address 0 control.

RJ5/CE                           40
    RJ5
    CE                               I/O ST              Digital I/O

                                     O  --               External memory chip enable control.

RJ6/LB                           41
    RJ6
    LB                               I/O ST              Digital I/O.

                                     O  --               External memory low byte control.

RJ7/UB                           42
    RJ7
    UB                               I/O ST              Digital I/O.

                                     O  --               External memory high byte control.

VSS                11, 31, 51, 70 P     -- Ground reference for logic and I/O pins.

VDD                32, 48, 71 P         -- Positive supply for logic and I/O pins.

AVSS                             26  P  -- Ground reference for analog modules.

AVDD                             25  P  -- Positive supply for analog modules.

ENVREG                           24  I  ST Enable for on-chip voltage regulator.

VDDCORE/VCAP                     12                      Core logic power or external filter capacitor connection.
    VDDCORE
    VCAP                             P  --               External filter capacitor connection (regulator
                                                         enabled/disabled).

Legend:  TTL = TTL compatible input                      CMOS          = CMOS compatible input or output
         ST = Schmitt Trigger input with CMOS levels     Analog        = Analog input
         I = Input                                       O             = Output
         P = Power                                       OD            = Open-Drain (no P diode to VDD)
         I2C = I2CTM/SMBus

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

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

      3: Not available on PIC18F65K22 and PIC18F85K22 devices.

      4: PSP is available only in Microcontroller mode.

      5: The CC6, CCP7, CCP8 and CCP9 pin placement depends on the setting of the ECCPMX Configuration bit
            (CONFIG3H<1>).

2010 Microchip Technology Inc.         Preliminary                                            DS39960B-page 35
PIC18F87K22 FAMILY

NOTES:

DS39960B-page 36  Preliminary   2010 Microchip Technology Inc.
                                                        PIC18F87K22 FAMILY

2.0 GUIDELINES FOR GETTING                              FIGURE 2-1:        RECOMMENDED
         STARTED WITH PIC18FXXKXX                                          MINIMUM CONNECTIONS
         MICROCONTROLLERS
                                                                                           C2(2)

2.1 Basic Connection Requirements                       VDD

Getting started with the PIC18F87K22 family family of    R1                       VDD                             (1) (1)
8-bit microcontrollers requires attention to a minimal       R2                           VSS
set of device pin connections before proceeding with
development.                                              C1         MCLR         ENVREG
                                                                                  VCAP/VDDCORE
                                                        C6(2)        VSS
The following pins must always be connected:                         VDD   PIC18FXXKXX                            C7(2)

All VDD and VSS pins                                                                            VDD             C3(2)
   (see Section 2.2 "Power Supply Pins")                                                          VSS

All AVDD and AVSS pins, regardless of whether or                         AVDD
   not the analog device features are used                                         AVSS
   (see Section 2.2 "Power Supply Pins")                                                            VDD
                                                                                                             VSS
MCLR pin
   (see Section 2.3 "Master Clear (MCLR) Pin")                             C5(2)           C4(2)

ENVREG (if implemented) and VCAP/VDDCORE pins         Key (all values are recommendations):
   (see Section 2.4 "Voltage Regulator Pins
   (ENVREG and VCAP/VDDCORE)")

These pins must also be connected if they are being     C1 through C6: 0.1 F, 20V ceramic
used in the end application:
                                                        R1: 10 k

PGC/PGD pins used for In-Circuit Serial               R2: 100 to 470
   ProgrammingTM (ICSPTM) and debugging purposes
   (see Section 2.5 "ICSP Pins")                        Note 1:      See Section 2.4 "Voltage Regulator Pins
                                                                 2:  (ENVREG and VCAP/VDDCORE)" for
OSCI and OSCO pins when an external oscillator                     explanation of ENVREG pin connections.
   source is used
   (see Section 2.6 "External Oscillator Pins")                      The example shown is for a PIC18F device
                                                                     with five VDD/VSS and AVDD/AVSS pairs.
Additionally, the following pins may be required:                    Other devices may have more or less pairs;
                                                                     adjust the number of decoupling capacitors
VREF+/VREF- pins are used when external voltage                    appropriately.
   reference for analog modules is implemented

Note:  The AVDD and AVSS pins must always be
       connected, regardless of whether any of
       the analog modules are being used.

The minimum mandatory connections are shown in
Figure 2-1.

2010 Microchip Technology Inc.                    Preliminary                             DS39960B-page 37
PIC18F87K22 FAMILY

2.2 Power Supply Pins                                         2.3 Master Clear (MCLR) Pin

2.2.1 DECOUPLING CAPACITORS                                   The MCLR pin provides two specific device
                                                              functions: Device Reset, and Device Programming
The use of decoupling capacitors on every pair of             and Debugging. If programming and debugging are
power supply pins, such as VDD, VSS, AVDD and                 not required in the end application, a direct
AVSS, is required.                                            connection to VDD may be all that is required. The
                                                              addition of other components, to help increase the
Consider the following criteria when using decoupling         application's resistance to spurious Resets from
capacitors:                                                   voltage sags, may be beneficial. A typical
                                                              configuration is shown in Figure 2-1. Other circuit
Value and type of capacitor: A 0.1 F (100 nF),              designs may be implemented, depending on the
   10-20V capacitor is recommended. The capacitor             application's requirements.
   should be a low-ESR device, with a resonance
   frequency in the range of 200 MHz and higher.              During programming and debugging, the resistance
   Ceramic capacitors are recommended.                        and capacitance that can be added to the pin must
                                                              be considered. Device programmers and debuggers
Placement on the printed circuit board: The                 drive the MCLR pin. Consequently, specific voltage
   decoupling capacitors should be placed as close            levels (VIH and VIL) and fast signal transitions must
   to the pins as possible. It is recommended to              not be adversely affected. Therefore, specific values
   place the capacitors on the same side of the               of R1 and C1 will need to be adjusted based on the
   board as the device. If space is constricted, the          application and PCB requirements. For example, it is
   capacitor can be placed on another layer on the            recommended that the capacitor, C1, be isolated
   PCB using a via; however, ensure that the trace            from the MCLR pin during programming and
   length from the pin to the capacitor is no greater         debugging operations by using a jumper (Figure 2-2).
   than 0.25 inch (6 mm).                                     The jumper is replaced for normal run-time
                                                              operations.
Handling high-frequency noise: If the board is
   experiencing high-frequency noise (upward of               Any components associated with the MCLR pin
   tens of MHz), add a second ceramic type capaci-            should be placed within 0.25 inch (6 mm) of the pin.
   tor in parallel to the above described decoupling
   capacitor. The value of the second capacitor can           FIGURE 2-2:            EXAMPLE OF MCLR PIN
   be in the range of 0.01 F to 0.001 F. Place this                                  CONNECTIONS
   second capacitor next to each primary decoupling                             VDD
   capacitor. In high-speed circuit designs, consider
   implementing a decade pair of capacitances as                          R1
   close to the power and ground pins as possible                                     R2
   (e.g., 0.1 F in parallel with 0.001 F).                                                      MCLR

Maximizing performance: On the board layout                             JP         PIC18FXXKXX
   from the power supply circuit, run the power and
   return traces to the decoupling capacitors first,                      C1
   and then to the device pins. This ensures that the
   decoupling capacitors are first in the power chain.        Note 1:     R1  10 k is recommended. A suggested
   Equally important is to keep the trace length                      2:  starting value is 10 k. Ensure that the
   between the capacitor and the power pins to a                          MCLR pin VIH and VIL specifications are met.
   minimum, thereby reducing PCB trace
   inductance.                                                            R2  470 will limit any current flowing into
                                                                          MCLR from the external capacitor, C, in the
2.2.2 TANK CAPACITORS                                                     event of MCLR pin breakdown, due to
                                                                          Electrostatic Discharge (ESD) or Electrical
On boards with power traces running longer than                           Overstress (EOS). Ensure that the MCLR pin
six inches in length, it is suggested to use a tank capac-                VIH and VIL specifications are met.
itor for integrated circuits, including microcontrollers, to
supply a local power source. The value of the tank
capacitor should be determined based on the trace
resistance that connects the power supply source to
the device, and the maximum current drawn by the
device in the application. In other words, select the tank
capacitor so that it meets the acceptable voltage sag at
the device. Typical values range from 4.7 F to 47 F.

DS39960B-page 38  Preliminary                                                         2010 Microchip Technology Inc.
                                                          PIC18F87K22 FAMILY

2.4 Voltage Regulator Pins (ENVREG                        FIGURE 2-3:        FREQUENCY vs. ESR
         and VCAP/VDDCORE)                                                   PERFORMANCE FOR
                                                                   10        SUGGESTED VCAP
The on-chip voltage regulator enable pin, ENVREG,
must always be connected directly to either a supply              1
voltage or to ground. Tying ENVREG to VDD enables
the regulator, while tying it to ground disables the      ESR ()  0.1
regulator. Refer to Section 28.3 "On-Chip Voltage
Regulator" for details on connecting and using the                0.01
on-chip regulator.
                                                          0.001         0.1  1  10            100  1000 10,000
When the regulator is enabled, a low-ESR (< 5)                    0.01
capacitor is required on the VCAP/VDDCORE pin to
stabilize the voltage regulator output voltage. The                          Frequency (MHz)
VCAP/VDDCORE pin must not be connected to VDD and
must use a capacitor of 10 F connected to ground. The     Note:         Data for Murata GRM21BF50J106ZE01 shown.
type can be ceramic or tantalum. A suitable example is                  Measurements at 25C, 0V DC bias.
the Murata GRM21BF50J106ZE01 (10 F, 6.3V) or
equivalent. Designers may use Figure 2-3 to evaluate      2.5 ICSP Pins
ESR equivalence of candidate devices.
                                                          The PGC and PGD pins are used for In-Circuit Serial
It is recommended that the trace length not exceed        ProgrammingTM (ICSPTM) and debugging purposes. It
0.25 inch (6 mm). Refer to Section 31.0 "Electrical       is recommended to keep the trace length between the
Characteristics" for additional information.              ICSP connector and the ICSP pins on the device as
                                                          short as possible. If the ICSP connector is expected to
When the regulator is disabled, a 0.1 F capacitor         experience an ESD event, a series resistor is recom-
should be connected from the VCAP/VDDCORE pin to          mended, with the value in the range of a few tens of
ground. This capacitor's characteristics must be similar  ohms, not to exceed 100.
to those of the "decoupling" capacitors explained in
Section 2.2.1 "Decoupling Capacitors". For details        Pull-up resistors, series diodes and capacitors on the
on the VDD requirement, when the regulator is             PGC and PGD pins are not recommended as they will
disabled, see parameter D001 in Section 31.0              interfere with the programmer/debugger communica-
"Electrical Characteristics".                             tions to the device. If such discrete components are an
                                                          application requirement, they should be removed from
Some PIC18FXXKXX families or some devices within          the circuit during programming and debugging. Alter-
a family do not provide the option of enabling or         natively, refer to the AC/DC characteristics and timing
disabling the on-chip voltage regulator:                  requirements information in the respective device
                                                          Flash programming specification for information on
Some devices (with the name, PIC18LFXXKXX)              capacitive loading limits, and pin input voltage high
   permanently disable the voltage regulator.             (VIH) and input low (VIL) requirements.

   These devices' do not have the ENVREG pin and          For device emulation, ensure that the "Communication
   require a 0.1 F capacitor on the VCAP/VDDCORE          Channel Select" (i.e., PGCx/PGDx pins) programmed
   pin. The VDD level of these devices must comply        into the device matches the physical connections for
   with the "voltage regulator disabled" specification    the ICSP to the Microchip debugger/emulator tool.
   for parameter D001, in Section 31.0 "Electrical
   Characteristics".                                      For more information on available Microchip
                                                          development tools connection requirements, refer to
Some devices permanently enable the voltage             Section 30.0 "Development Support".
   regulator.

   These devices also do not have the ENVREG pin.
   The 10F capacitor is still required on the
   VCAP/VDDCORE pin.

For details on all members of the PIC18F87K22 family,
see Section 28.3 "On-Chip Voltage Regulator".

2010 Microchip Technology Inc.  Preliminary                                                  DS39960B-page 39
PIC18F87K22 FAMILY

2.6 External Oscillator Pins                                 FIGURE 2-4:        SUGGESTED PLACEMENT
                                                                                OF THE OSCILLATOR
Many microcontrollers have options for at least two                             CIRCUIT
oscillators: a high-frequency primary oscillator and a
low-frequency secondary oscillator (refer to                          Single-Sided and In-Line Layouts:
Section 3.0 "Oscillator Configurations" for details).
                                                                               Copper Pour Primary Oscillator
The oscillator circuit should be placed on the same                      (tied to ground)     Crystal
side of the board as the device. Place the oscillator
circuit close to the respective oscillator pins with no                                       DEVICE PINS
more than 0.5 inch (12 mm) between the circuit
components and the pins. The load capacitors should           Primary                                            OSC1
be placed next to the oscillator itself, on the same side    Oscillator                                          OSC2
of the board.                                                                                                    GND
                                                             C1                 `
Use a grounded copper pour around the oscillator cir-                                                            T1OSO
cuit to isolate it from surrounding circuits. The            C2                                                  T1OS I
grounded copper pour should be routed directly to the                                `
MCU ground. Do not run any signal traces or power
traces inside the ground pour. Also, if using a two-sided    Timer1 Oscillator
board, avoid any traces on the other side of the board       Crystal
where the crystal is placed.                                                               `

Layout suggestions are shown in Figure 2-4. In-line                 T1 Oscillator: C1         T1 Oscillator: C2
packages may be handled with a single-sided layout
that completely encompasses the oscillator pins. With                    Fine-Pitch (Dual-Sided) Layouts:
fine-pitch packages, it is not always possible to com-
pletely surround the pins and components. A suitable                                  Top Layer Copper Pour
solution is to tie the broken guard sections to a mirrored                                  (tied to ground)
ground layer. In all cases, the guard trace(s) must be
returned to ground.                                           Bottom Layer
                                                              Copper Pour
In planning the application's routing and I/O assign-        (tied to ground)
ments, ensure that adjacent port pins and other signals
in close proximity to the oscillator are benign (i.e., free  OSCO
of high frequencies, short rise and fall times, and other
similar noise).                                              GND                                                 C2
                                                              OSCI                                                  Oscillator
For additional information and design guidance on                                                                    Crystal
oscillator circuits, please refer to these Microchip
Application Notes, available at the corporate web site                                                           C1
(www.microchip.com):
                                                                    DEVICE PINS
AN826, "Crystal Oscillator Basics and Crystal
   Selection for rfPICTM and PICmicro Devices"

AN849, "Basic PICmicro Oscillator Design"
AN943, "Practical PICmicro Oscillator Analysis

   and Design"

AN949, "Making Your Oscillator Work"

2.7 Unused I/Os

Unused I/O pins should be configured as outputs and
driven to a logic low state. Alternatively, connect a 1 k
to 10 k resistor to VSS on unused pins and drive the
output to logic low.

DS39960B-page 40  Preliminary                                                            2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

3.0 OSCILLATOR                                           To optimize power consumption when using EC/HS/
         CONFIGURATIONS                                  XT/LP/RC as the primary oscillator, the frequency input
                                                         range can be configured to yield an optimized power
3.1 Oscillator Types                                     bias:

The PIC18F87K22 family of devices can be operated in      Low-Power Bias External frequency less than
the following oscillator modes:                             160 kHz

EC  External clock, RA6 available                      Medium Power Bias External frequency
                                                            between 160 kHz and 16 MHz
ECIO External clock, clock out RA6 (FOSC/4 on
                   RA6)                                  High-Power Bias External frequency greater
                                                            than 16 MHz
HS  High-Speed Crystal/Resonator
                                                         All of these modes are selected by the user by
XT  Crystal/Resonator                                  programming the FOSC<3:0> Configuration bits
                                                         (CONFIG1H<3:0>). In addition, PIC18F87K22 family
LP  Low-Power Crystal                                  devices can switch between different clock sources,
                                                         either under software control or, under certain condi-
RC  External Resistor/Capacitor, RA6                   tions, automatically. This allows for additional power
      available                                          savings by managing device clock speed in real time
                                                         without resetting the application. The clock sources for
RCIO External Resistor/Capacitor, clock out            the PIC18F87K22 family of devices are shown in
              RA6 (FOSC/4 on RA6)                        Figure 3-1.

INTIO2 Internal Oscillator with I/O on RA6 and         For the HS and EC mode, there are additional power
              RA7                                        modes of operation depending on the frequency of
                                                         operation.
INTIO1 Internal Oscillator with FOSC/4 output on
              RA6 and I/O on RA7                         HS1 is the Medium power mode with a frequency range
                                                         of 4 MHz to 16 MHz. HS2 is the High-Power mode,
There is also an option for running the 4xPLL on any of  where the oscillator frequency can go from 16 MHz to
the clock sources in the input frequency range of 4 to   25 MHz. HS1 and HS2 are achieved by setting the
16 MHz.                                                  CONFIG1H<3:0> correctly. (For details, see
                                                         Register 28-2 on page 404.)
The PLL is enabled by setting the PLLCFG bit
(CONFIG1H<4>) or the PLLEN bit (OSCTUNE<6>).             EC mode has these modes of operation:

For the EC and HS mode, the PLLEN (software) or          EC1 For low power with a frequency range up to
PLLCFG (CONFIG) bit can be used to enable the PLL.          160 kHz

For the INTIOx modes (HF-INTOSC):                         EC2 Medium power with a frequency range of
                                                            160 kHz to 16 MHz
Only the PLLEN can enable the PLL (PLLCFG is
   ignored).                                              EC3 High power with a frequency range of
                                                            16 MHz to 64 MHz
When the oscillator is configured for the internal
   oscillator (FOSC<3:0> = 100x), the PLL can be         EC1, EC2 and EC3 are achieved by setting the
   enabled only when the HF-INTOSC frequency is          CONFIG1H<3:0> correctly. (For details, see
   8 or 16 MHz.                                          Register 28-2 on page 404.)

When the RA6 and RA7 pins are not used for an oscil-     Table 3-1 shows the HS and EC modes' frequency
lator function or CLKOUT function, they are available    range and FOSC<3:0> settings.
as general purpose I/Os.

2010 Microchip Technology Inc.                   Preliminary  DS39960B-page 41
PIC18F87K22 FAMILY

TABLE 3-1: HS, EC, XT, LP AND RC MODES: RANGES AND SETTINGS

             Mode                          Frequency Range                                       FOSC<3:0> Setting

   EC1 (low power)                            DC-160 kHz                                                            1101
   (EC1 & EC1IO)                                                                                                    1100
EC2 (medium power)                         160 kHz-16 MHz                                                           1011
   (EC2 & EC2IO)                                                                                                    1010
  EC3 (high power)                         16 MHz-64 MHz                                                            0101
   (EC3 & EC3IO)                            4 MHz-16 MHz                                                            0100
HS1 (medium power)                         16 MHz-25 MHz                                                            0011
  HS2 (high power)                         100 kHz-4 MHz                                                            0010
                                                                                                                    0001
            XT                                 31.25 kHz                                                            0000
            LP                                 0 - 4 MHz                                                            001x
     RC (External)

             INTIO                                  32 KHz-16 MHz                                        100x
                                                                                          (and OSCCON, OSCCON2)

FIGURE 3-1:         PIC18F87K22 FAMILY CLOCK DIAGRAM

SOSCO                                                              4x PLL                                                          Peripherals
SOSCI                                              MUX                                                                              CPU
  OSC2                                                                         MUX
  OSC1                                                                                                         Mux

                                                    FOSC<3:0>                        PLLEN
                                                                                     and PLLCFG

                                                                                                                          IDLEN

                                           16 MHz                   16 MHz 111                                      Clock Control  SCS<1:0>
                                           8 MHz
                  HF INTOSC    Postscaler  4 MHz    MUX               8 MHz                                               FOSC<3:0>
                   16 MHz to               2 MHz                     MUX        110
                                           1 MHz
                     31 kHz                                                          MUX4 MHz
                                           500 kHz                              101
                                           250 kHz
                                           31 kHz                     2 MHz
                                                                                100

                                                                      1 MHz 011
                                                                   500 kHz
                                                                   250 kHz 010

                                                                                001
                                                                     31 kHz

                                                                                000

                  MF INTOSC    Postscaler  500 kHz                                        IRCF<2:0>
                   500 kHz to              250 kHz
                                           31 kHz
                     31 kHz

                                           MFIOSEL                 INTSRC

                  LF INTOSC    31 kHz
                     31 kHz

DS39960B-page 42                                    Preliminary                                   2010 Microchip Technology Inc.
                                                            PIC18F87K22 FAMILY

3.2 Control Registers                                       The OSCTUNE register (Register 3-3) controls the
                                                            tuning and operation of the internal oscillator block. It also
The OSCCON register (Register 3-1) controls the main        implements the PLLEN bit which controls the operation of
aspects of the device clock's operation. It selects the     the Phase Locked Loop (PLL) (see Section 3.5.3 "PLL
oscillator type to be used, which of the power-managed      Frequency Multiplier").
modes to invoke and the output frequency of the
INTOSC source. It also provides status on the oscillators.

REGISTER 3-1: OSCCON: OSCILLATOR CONTROL REGISTER(1)

    R/W-0    R/W-1                R/W-1     R/W-0            R(1)     R-0          R/W-0         R/W-0
    IDLEN   IRCF2(2)             IRCF1(2)  IRCF0(2)         OSTS   HFIOFS         SCS1(4)       SCS0(4)
bit 7
                                                                                                        bit 0

Legend:               W = Writable bit                      U = Unimplemented bit, read as `0'
R = Readable bit      `1' = Bit is set
-n = Value at POR                                           `0' = Bit is cleared  x = Bit is unknown

bit 7       IDLEN: Idle Enable bit
bit 6-4
            1 = Device enters an Idle mode when a SLEEP instruction is executed
bit 3       0 = Device enters Sleep mode when a SLEEP instruction is executed

            IRCF<2:0>: Internal Oscillator Frequency Select bits(2)

            111 = HF-INTOSC output frequency used (16 MHz)
            110 = HF-INTOSC/2 output frequency used (8 MHz, default)
            101 = HF-INTOSC/4 output frequency used (4 MHz)
            100 = HF-INTOSC/8 output frequency used (2 MHz)
            011 = HF-INTOSC/16 output frequency used (1 MHz)
            If INTSRC = 0 and MFIOSEL = 0:(3,5)
            010 = HF-INTOSC/32 output frequency used (500 kHz)
            001 = HF-INTOSC/64 output frequency used (250 kHz)
            000 = LF-INTOSC output frequency used (31.25 kHz)
            If INTSRC = 1 and MFIOSEL = 0:(3,5)
            010 = HF-INTOSC/32 output frequency used (500 kHz)
            001 = HF-INTOSC/64 output frequency used (250 kHz)
            000 = HF-INTOSC/512 output frequency used (31.25 kHz)
            If INTSRC = 0 and MFIOSEL = 1:(3,5)
            010 = MF-INTOSC output frequency used (500 kHz)
            001 = MF-INTOSC/2 output frequency used (250 kHz)
            000 = LF-INTOSC output frequency used (31.25 kHz)(6)
            If INTSRC = 1 and MFIOSEL = 1:(3,5)
            010 = MF-INTOSC output frequency used (500 kHz)
            001 = MF-INTOSC/2 output frequency used (250 kHz)
            000 = MF-INTOSC/16 output frequency used (31.25 kHz)

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

            1 = Oscillator Start-up Timer (OST) time-out has expired; primary oscillator is running, as defined by
                  FOSC<3:0>

            0 = Oscillator Start-up Timer (OST) time-out is running; primary oscillator is not ready device is
                  running from internal oscillator (HF-INTOSC, MF-INTOSC or LF-INTOSC)

Note 1:     The Reset state depends on the state of the IESO Configuration bit (CONFIG1H<7>).
        2:  Modifying these bits will cause an immediate clock frequency switch if the internal oscillator is providing
            the device clocks.
        3:  Source selected by the INTSRC bit (OSCTUNE<7>).
        4:  Modifying these bits will cause an immediate clock source switch.
        5:  INTSRC = OSCTUNE<7> and MFIOSEL = OSCCON2<0>.
        6:  Lowest power option for an internal source.

2010 Microchip Technology Inc.            Preliminary                                          DS39960B-page 43
PIC18F87K22 FAMILY

REGISTER 3-1: OSCCON: OSCILLATOR CONTROL REGISTER(1) (CONTINUED)

bit 2       HFIOFS: INTOSC Frequency Stable bit
bit 1-0
            1 = HF-INTOSC oscillator frequency is stable
            0 = HF-INTOSC oscillator frequency is not stable
            SCS<1:0>: System Clock Select bits(4)

            1x = Internal oscillator block (LF-INTOSC, MF-INTOSC or HF-INTOSC)
            01 = SOSC oscillator
            00 = Default primary oscillator (OSC1/OSC2 or HF-INTOSC with or without PLL. Defined by the

                   FOSC<3:0> Configuration bits, CONFIG1H<3:0>.)

Note 1:     The Reset state depends on the state of the IESO Configuration bit (CONFIG1H<7>).
        2:  Modifying these bits will cause an immediate clock frequency switch if the internal oscillator is providing
            the device clocks.
        3:  Source selected by the INTSRC bit (OSCTUNE<7>).
        4:  Modifying these bits will cause an immediate clock source switch.
        5:  INTSRC = OSCTUNE<7> and MFIOSEL = OSCCON2<0>.
        6:  Lowest power option for an internal source.

REGISTER 3-2: OSCCON2: OSCILLATOR CONTROL REGISTER 2

       U-0         R-0  U-0               U-0  R/W-0                 U-0     R-x     R/W-0
                                                                          MFIOFS   MFIOSEL
       --   SOSCRUN     --                --   SOSCGO                --
                                                                                            bit 0
bit 7

Legend:                 W = Writable bit       U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared       x = Bit is unknown

bit 7       Unimplemented: Read as `0'
bit 6
            SOSCRUN: SOSC Run Status bit
bit 5-4     1 = System clock comes from a secondary SOSC
bit 3       0 = System clock comes from an oscillator other than SOSC

bit 2       Unimplemented: Read as `0'
bit 1
            SOSCGO: Oscillator Start Control bit
bit 0       1 = Oscillator is running, even if no other sources are requesting it
            0 = Oscillator is shut off if no other sources are requesting it (When the SOSC is selected to run from

                  a digital clock input, rather than an external crystal, this bit has no effect.)

            Unimplemented: Read as `0'

            MFIOFS: MF-INTOSC Frequency Stable bit
            1 = MF-INTOSC is stable
            0 = MF-INTOSC is not stable

            MFIOSEL: MF-INTOSC Select bit
            1 = MF-INTOSC is used in place of HF-INTOSC frequencies of 500 kHz, 250 kHz and 31.25 kHz
            0 = MF-INTOSC is not used

DS39960B-page 44                          Preliminary                      2010 Microchip Technology Inc.
                                               PIC18F87K22 FAMILY

REGISTER 3-3: 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              TUN5   TUN4   TUN3                  TUN2   TUN1                  TUN0
bit 7
                                                                                                         bit 0

Legend:              W = Writable bit          U = Unimplemented bit, read as `0'
R = Readable bit     `1' = Bit is set
-n = Value at POR                              `0' = Bit is cleared         x = Bit is unknown

bit 7      INTSRC: Internal Oscillator Low-Frequency Source Select bit
bit 6      1 = 31.25 kHz device clock derived from 16 MHz INTOSC source (divide-by-512 enabled, HF-INTOSC)
bit 5-0    0 = 31 kHz device clock derived from INTRC 31 kHz oscillator (LF-INTOSC)

           PLLEN: Frequency Multiplier PLL Enable bit
           1 = PLL is enabled
           0 = PLL is disabled

           TUN<5:0>: Fast RC Oscillator (INTOSC) Frequency Tuning bits

           011111 = Maximum frequency

                                

                                

           000001
           000000 = Center frequency. Fast RC oscillator is running at the calibrated frequency.

           111111

                                

                                

           100000 = Minimum frequency

2010 Microchip Technology Inc.         Preliminary                                DS39960B-page 45
PIC18F87K22 FAMILY

3.3 Clock Sources and                                        In addition to being a primary clock source in some
         Oscillator Switching                                circumstances, the internal oscillator is available as a
                                                             power-managed mode clock source. The LF-INTOSC
Essentially, PIC18F87K22 family devices have these           source is also used as the clock source for several
independent clock sources:                                   special features, such as the WDT and Fail-Safe Clock
                                                             Monitor. The internal oscillator block is discussed in
Primary oscillators                                        more detail in Section 3.6 "Internal Oscillator
Secondary oscillators                                      Block".
Internal oscillator
                                                             The PIC18F87K22 family includes features that allow
The primary oscillators can be thought of as the main        the device clock source to be switched from the main
device oscillators. These are any external oscillators       oscillator, chosen by device configuration, to one of the
connected to the OSC1 and OSC2 pins, and include             alternate clock sources. When an alternate clock
the External Crystal and Resonator modes and the             source is enabled, various power-managed operating
External Clock modes. If selected by the FOSC<3:0>           modes are available.
Configuration bits (CONFIG1H<3:0>), the internal
oscillator block may be considered a primary oscillator.     3.3.1 OSC1/OSC2 OSCILLATOR
The internal oscillator block can be one of the following:
                                                             The OSC1/OSC2 oscillator block is used to provide the
31 kHz LF-INTRC source                                     oscillator modes and frequency ranges:

31 kHz to 500 kHz MF-INTOSC source                         Mode   Design Operating Frequency

31 kHz to 16 MHz HF-INTOSC source                             LP           31.25-100 kHz
                                                                XT        100 kHz to 4 MHz
The particular mode is defined by the FOSC                      HS         4 MHz to 25 MHz
Configuration bits. The details of these modes are              EC  0 to 64 MHz (external clock)
covered in Section 3.5 "External Oscillator Modes".          EXTRC    0 to 4 MHz (external RC)

The secondary oscillators are external clock                 The crystal-based oscillators (XT, HS and LP) have a
sources that are not connected to the OSC1 or OSC2           built-in start-up time. The operation of the EC and
pin. These sources may continue to operate, even             EXTRC clocks is immediate.
after the controller is placed in a power-managed
mode. PIC18F87K22 family devices offer the SOSC              3.3.2 CLOCK SOURCE SELECTION
(Timer1/3/5/7) oscillator as a secondary oscillator
source. This oscillator, in all power-managed modes, is      The System Clock Select bits, SCS<1:0>
often the time base for functions, such as a Real-Time       (OSCCON2<1:0>), select the clock source. The avail-
Clock (RTC).                                                 able clock sources are the primary clock defined by the
                                                             FOSC<3:0> Configuration bits, the secondary clock
The SOSC can be enabled from any peripheral that             (SOSC oscillator) and the internal oscillator. The clock
requests it. There are eight ways the SOSC can be            source changes after one or more of the bits is written
enabled: if the SOSC is selected as the source by any        to, following a brief clock transition interval.
of the odd timers, which is done by each respective
SOSCEN bit (TxCON<3>), if the SOSC is selected as            The OSTS (OSCCON<3>) and SOSCRUN
the RTCC source by the RTCOSC Configuration bit              (OSCCON<6>) bits indicate which clock source is
(CONFIG3L<1>), if the SOSC is selected as the CPU            currently providing the device clock. The OSTS bit
clock source by the SCS bits (OSCCON<1:0>) or if the         indicates that the Oscillator Start-up Timer (OST) has
SOSCGO bit is set (OSCCON2<3>). The SOSCGO bit               timed out and the primary clock is providing the device
is used to warm up the SOSC so that it is ready before       clock in primary clock modes. The SOSCRUN bit indi-
any peripheral requests it.                                  cates when the SOSC oscillator (from Timer1/3/5/7) is
                                                             providing the device clock in secondary clock modes.
The secondary oscillator has three Run modes. The            In power-managed modes, only one of these bits will
SOSCSEL<1:0> bits (CONFIG1L<4:3>) decide the                 be set at any time. If neither of these bits is set, the
SOSC mode of operation:                                      INTRC is providing the clock, or the internal oscillator
                                                             has just started and is not yet stable.
11 = High-power SOSC circuit
                                                             The IDLEN bit (OSCCON<7>) determines if the device
10 = Digital (SCLKI) mode                                  goes into Sleep mode or one of the Idle modes when
                                                             the SLEEP instruction is executed.
01 = Low-power SOSC circuit

If a secondary oscillator is not desired and digital I/O on
port pins, RC0 and RC1, is needed, the SOSCSEL bits
must be set to Digital mode.

DS39960B-page 46  Preliminary                                        2010 Microchip Technology Inc.
                                                               PIC18F87K22 FAMILY

The use of the flag and control bits in the OSCCON             3.4 RC Oscillator
register is discussed in more detail in Section 4.0
"Power-Managed Modes".                                         For timing-insensitive applications, the RC and RCIO
                                                               Oscillator modes offer additional cost savings. The
    Note 1: The Timer1/3/5/7 oscillator must be                actual oscillator frequency is a function of several
                enabled to select the secondary clock          factors:
                source. The Timerx oscillator is enabled by
                setting the TxOSCEN bit in the Timerx          Supply voltage
                Control register (TxCON<3>). If the Timerx
                oscillator is not enabled, then any attempt    Values of the external resistor (REXT) and capacitor
                to select a secondary clock source when           (CEXT)
                executing a SLEEP instruction will be
                ignored.                                        Operating temperature

           2: It is recommended that the Timerx                Given the same device, operating voltage and temper-
                oscillator be operating and stable before      ature, and component values, there will also be unit to
                executing the SLEEP instruction or a very      unit frequency variations. These are due to factors,
                long delay may occur while the Timerx          such as:
                oscillator starts.
                                                                Normal manufacturing variation
3.3.2.1  System Clock Selection and Device
         Resets                                                 Difference in lead frame capacitance between
                                                                  package types (especially for low CEXT values)
Since the SCS bits are cleared on all forms of Reset,
this means the primary oscillator, defined by the               Variations within the tolerance of limits of REXT
FOSC<3:0> Configuration bits, is used as the primary              and CEXT
clock source on device Resets. This could either be the
internal oscillator block by itself, or one of the other       In the RC Oscillator mode, the oscillator frequency,
primary clock source (HS, EC, XT, LP, External RC and          divided by 4, is available on the OSC2 pin. This signal
PLL-enabled modes).                                            may be used for test purposes or to synchronize other
                                                               logic. Figure 3-2 shows how the R/C combination is
                                                               connected.

                                                               FIGURE 3-2:   RC OSCILLATOR MODE

In those cases when the internal oscillator block, with-                VDD
out PLL, is the default clock on Reset, the Fast RC
oscillator (INTOSC) will be used as the device clock           REXT                                 Internal
source. It will initially start at 8 MHz; the postscaler                                             Clock
selection that corresponds to the Reset value of the                         OSC1
IRCF<2:0> bits (`110').
                                                               CEXT                                 PIC18FXXXX
                                                               VSS
Regardless of which primary oscillator is selected,
INTRC will always be enabled on device power-up. It                                      OSC2/CLKO
serves as the clock source until the device has loaded                       FOSC/4
its configuration values from memory. It is at this point
that the FOSC Configuration bits are read and the              Recommended values: 3 k  REXT  100 k
oscillator selection of the operational mode is made.                                          20 pF CEXT  300 pF

Note that either the primary clock source or the internal      The RCIO Oscillator mode (Figure 3-3) functions like
oscillator will have two bit setting options for the possible  the RC mode, except that the OSC2 pin becomes an
values of the SCS<1:0> bits, at any given time.                additional general purpose I/O pin. The I/O pin
                                                               becomes bit 6 of PORTA (RA6).

3.3.3 OSCILLATOR TRANSITIONS                                   FIGURE 3-3:   RCIO OSCILLATOR MODE

PIC18F87K22 family devices contain circuitry to                         VDD
prevent clock "glitches" when switching between clock
sources. A short pause in the device clock occurs              REXT                                 Internal
during the clock switch. The length of this pause is the                                             Clock
sum of two cycles of the old clock source and three to                       OSC1
four cycles of the new clock source. This formula
assumes that the new clock source is stable.                   CEXT                                 PIC18FXXXX
                                                               VSS
Clock transitions are discussed in greater detail in
Section 4.1.2 "Entering Power-Managed Modes".                        RA6     I/O (OSC2)

                                                               Recommended values: 3 k  REXT  100 k
                                                                                               20 pF CEXT  300 pF

2010 Microchip Technology Inc.  Preliminary                                                        DS39960B-page 47
PIC18F87K22 FAMILY

3.5 External Oscillator Modes                               TABLE 3-3:   CAPACITOR SELECTION FOR
                                                                         CRYSTAL OSCILLATOR
3.5.1  CRYSTAL OSCILLATOR/CERAMIC
       RESONATORS (HS MODES)                                                         Typical Capacitor Values
                                                            Osc Type     Crystal                 Tested:
                                                                          Freq.
In HS or HSPLL Oscillator modes, a crystal or ceramic                                C1            C2
resonator is connected to the OSC1 and OSC2 pins to
establish oscillation. Figure 3-4 shows the pin                HS        4 MHz       27 pF  27 pF
connections.
                                                                         8 MHz       22 pF  22 pF
The oscillator design requires the use of a crystal rated
for parallel resonant operation.                                         20 MHz      15 pF  15 pF

Note:  Use of a crystal rated for series resonant           Capacitor values are for design guidance only.
       operation may give a frequency out of the
       crystal manufacturer's specifications.               Different capacitor values may be required to produce
                                                            acceptable oscillator operation. The user should test
                                                            the performance of the oscillator over the expected
                                                            VDD and temperature range for the application.

TABLE 3-2:        CAPACITOR SELECTION FOR                   Refer to the Microchip application notes cited in
                  CERAMIC RESONATORS                        Table 3-2 for oscillator-specific information. Also see
                                                            the notes following this table for additional
       Typical Capacitor Values Used:                       information.

Mode        Freq.     OSC1             OSC2

HS          8.0 MHz   27 pF            27 pF                Note 1: Higher capacitance increases the stability
                      22 pF            22 pF                            of oscillator but also increases the start-up
            16.0 MHz                                                    time.

Capacitor values are for design guidance only.                     2: Since each resonator/crystal has its own
                                                                        characteristics, the user should consult
Different capacitor values may be required to produce                   the resonator/crystal manufacturer for
acceptable oscillator operation. The user should test                   appropriate values of external
the performance of the oscillator over the expected                     components.
VDD and temperature range for the application. Refer
to the following application notes for oscillator-specific         3: Rs may be required to avoid overdriving
information:                                                            crystals with low drive level specification.

AN588, "PIC Microcontroller Oscillator Design                   4: Always verify oscillator performance over
   Guide"                                                               the VDD and temperature range that is
                                                                        expected for the application.
AN826, "Crystal Oscillator Basics and Crystal
   Selection for rfPIC and PIC Devices"                   FIGURE 3-4:           CRYSTAL/CERAMIC
                                                                                  RESONATOR OPERATION
AN849, "Basic PIC Oscillator Design"                                           (HS OR HSPLL
AN943, "Practical PIC Oscillator Analysis and                                  CONFIGURATION)

   Design"

AN949, "Making Your Oscillator Work"

See the notes following Table 3-3 for additional               C1(1)           OSC1
information.

                                                                         XTAL        RF(3)  To
                                                                                            Internal
                                                                                            Logic

                                                                               OSC2         Sleep
                                                                         RS(2)
                                                               C2(1)                 PIC18F87K22

                                                            Note 1:     See Table 3-2 and Table 3-3 for initial values of
                                                                    2:  C1 and C2.
                                                                    3:
                                                                        A series resistor (RS) may be required for AT
                                                                        strip cut crystals.

                                                                        RF varies with the oscillator mode chosen.

DS39960B-page 48                                  Preliminary                      2010 Microchip Technology Inc.
                                                              PIC18F87K22 FAMILY

3.5.2  EXTERNAL CLOCK INPUT                                   3.5.3.1 HSPLL and ECPLL Modes
       (EC MODES)
                                                              The HSPLL and ECPLL modes provide the ability to
The EC and ECPLL Oscillator modes require an                  selectively run the device at four times the external
external clock source to be connected to the OSC1 pin.        oscillating source to produce frequencies up to
There is no oscillator start-up time required after a         64 MHz.
Power-on Reset or after an exit from Sleep mode.
                                                              The PLL is enabled by setting the PLLEN bit
In the EC Oscillator mode, the oscillator frequency           (OSCTUNE<6>) or the PLLCFG bit (CONFIG1H<4>).
divided by 4 is available on the OSC2 pin. This signal        For the HF-INTOSC as primary, the PLL must be
may be used for test purposes or to synchronize other         enabled with the PLLEN. This provides a software con-
logic. Figure 3-5 shows the pin connections for the EC        trol for the PLL, enabling even if PLLCFG is set to `1',
Oscillator mode.                                              so that the PLL is enabled only when the HF-INTOSC
                                                              frequency is within the 4 MHz to16 MHz input range.
FIGURE 3-5:             EXTERNAL CLOCK
                        INPUT OPERATION                       This also enables additional flexibility for controlling the
                        (EC CONFIGURATION)                    application's clock speed in software. The PLLEN
                                                              should be enabled in HF-INTOSC mode only if the
                                                              input frequency is in the range of 4 MHz-16 MHz.

Clock from              OSC1/CLKI                             FIGURE 3-7:         PLL BLOCK DIAGRAM
Ext. System
                             PIC18F87K22                      PLLCFG (CONFIG1H<4>)
                FOSC/4                                          PLL Enable (OSCTUNE)
                        OSC2/CLKO

An external clock source may also be connected to the         OSC2                FIN      Phase
OSC1 pin in the HS mode, as shown in Figure 3-6. In                               FOUT  Comparator
this configuration, the divide-by-4 output on OSC2 is                   HS or EC
not available. Current consumption in this configuration      OSC1 Mode
will be somewhat higher than EC mode, as the internal
oscillator's feedback circuitry will be enabled (in EC                                  Loop
mode, the feedback circuit is disabled).                                                Filter

FIGURE 3-6:             EXTERNAL CLOCK INPUT
                        OPERATION (HS OSC
                        CONFIGURATION)                                            4     VCO              SYSCLK

                                                                                                    MUX

Clock from              OSC1                                  3.5.3.2 PLL and HF-INTOSC
Ext. System
                            PIC18F87K22                       The PLL is available to the internal oscillator block
                  Open                                        when the internal oscillator block is configured as the
                                 (HS Mode)                    primary clock source. In this configuration, the PLL is
                                                              enabled in software and generates a clock output of up
                        OSC2                                  to 64 MHz.

3.5.3 PLL FREQUENCY MULTIPLIER                                The operation of INTOSC with the PLL is described in
                                                              Section 3.6.2 "INTPLL Modes". Care should be taken
A Phase Locked Loop (PLL) circuit is provided as an           that the PLL is enabled only if the HF-INTOSC
option for users who want to use a lower frequency            postscaler is configured for 4 MHz, 8 MHz or 16 MHz.
oscillator circuit, or to clock the device up to its highest
rated frequency from a crystal oscillator. This may be
useful for customers who are concerned with EMI due
to high-frequency crystals, or users who require higher
clock speeds from an internal oscillator.

2010 Microchip Technology Inc.             Preliminary                                         DS39960B-page 49
PIC18F87K22 FAMILY

3.6 Internal Oscillator Block                               FIGURE 3-8: INTIO1 OSCILLATOR MODE

The PIC18F87K22 family of devices includes an internal         RA7  I/O (OSC1)
oscillator block which generates two different clock        FOSC/4
signals. Either clock can be used as the microcontroller's                   PIC18F87K22
clock source, which may eliminate the need for an
external oscillator circuit on the OSC1 and/or OSC2 pins.           OSC2

The internal oscillator consists of three blocks,           FIGURE 3-9: INTIO2 OSCILLATOR MODE
depending on the frequency of operation. They are
HF-INTOSC, MF-INTOSC and LF-INTRC.                          RA7     I/O (OSC1)

In HF-INTOSC mode, the internal oscillator can provide              PIC18F87K22
a frequency ranging from 31 KHz to 16 MHz, with the
postscaler deciding the selected frequency                  RA6     I/O (OSC2)
(IRCF<2:0>).
                                                            3.6.2 INTPLL MODES
The INTSRC bit (OSCTUNE<7>) and MFIOSEL bit
(OSCCON2<0>) also decide which INTOSC provides              The 4x Phase Lock Loop (PLL) can be used with the
the lower frequency (500 kHz to 31 KHz). For the            HF-INTOSC to produce faster device clock speeds
HF-INTOSC to provide these frequencies, INTSRC = 1          than are normally possible with the internal oscillator
and MFIOSEL = 0.                                            sources. When enabled, the PLL produces a clock
                                                            speed of 16 MHz or 64 MHz.
In HF-INTOSC, the postscaler (IRCF<2:0>) provides
the frequency range of 31 kHz to 16 MHz. If                 PLL operation is controlled through software. The
HF-INTOSC is used with the PLL, the input frequency         control bits, PLLEN (OSCTUNE<6>) and PLLCFG
to the PLL should be 4 MHz to 16 MHz                        (CONFIG1H<4>), are used to enable or disable its
(IRCF<2:0> = 111, 110 or 101).                              operation. The PLL is available only to HF-INTOSC.
                                                            The other oscillator is set with HS and EC modes. Addi-
For MF-INTOSC mode to provide a frequency range of          tionally, the PLL will only function when the selected
500 kHz to 31 kHz, INTSRC = 1 and MFIOSEL = 1.              output frequency is either 4 MHz or 16 MHz
The postscaler (IRCF<2:0>), in this mode, provides the      (OSCCON<6:4> = 111, 110 or 101).
frequency range of 31 kHz to 500 kHz.
                                                            Like the INTIO modes, there are two distinct INTPLL
The LF-INTRC can provide only 31 kHz if INTSRC = 0.         modes available:

The LF-INTRC provides 31 kHz and is enabled if it is         In INTPLL1 mode, the OSC2 pin outputs FOSC/4,
selected as the device clock source. The mode is               while OSC1 functions as RA7 for digital input and
enabled automatically when any of the following are            output. Externally, this is identical in appearance
enabled:                                                       to INTIO1 (Figure 3-8).
Power-up Timer
                                                             In INTPLL2 mode, OSC1 functions as RA7 and
Fail-Safe Clock Monitor                                      OSC2 functions as RA6, both for digital input and
                                                               output. Externally, this is identical to INTIO2
Watchdog Timer                                               (Figure 3-9).

Two-Speed Start-up

These features are discussed in greater detail in
Section 28.0 "Special Features of the CPU".

The clock source frequency (HF-INTOSC, MF-INTOSC
or LF-INTRC direct) is selected by configuring the IRCF
bits of the OSCCON register, as well the INTSRC and
MFIOSEL bits. The default frequency on device Resets
is 8 MHz.

3.6.1 INTIO MODES

Using the internal oscillator as the clock source elimi-
nates the need for up to two external oscillator pins,
which can then be used for digital I/O. Two distinct
oscillator configurations, which are determined by the
FOSC Configuration bits, are available:
In INTIO1 mode, the OSC2 pin (RA6) outputs

   FOSC/4, while OSC1 functions as RA7 (see
   Figure 3-8) for digital input and output.

In INTIO2 mode, OSC1 functions as RA7 and
   OSC2 functions as RA6 (see Figure 3-9). Both
   are available as digital input and output ports.

DS39960B-page 50  Preliminary                                        2010 Microchip Technology Inc.
                                                             PIC18F87K22 FAMILY

3.6.3  INTERNAL OSCILLATOR OUTPUT                            3.6.4.3  Compensating with the CCP Module
       FREQUENCY AND TUNING                                           in Capture Mode

The internal oscillator block is calibrated at the factory   A CCP module can use free-running Timer1 (or
to produce an INTOSC output frequency of 16 MHz. It          Timer3), clocked by the internal oscillator block and an
can be adjusted in the user's application by writing to      external event with a known period (i.e., AC power
TUN<5:0> (OSCTUNE<5:0>) in the OSCTUNE                       frequency). The time of the first event is captured in the
register (Register 3-3).                                     CCPRxH:CCPRxL registers and is recorded for use
                                                             later. When the second event causes a capture, the
When the OSCTUNE register is modified, the INTOSC            time of the first event is subtracted from the time of the
(HF-INTOSC and MF-INTOSC) frequency will begin               second event. Since the period of the external event is
shifting to the new frequency. The oscillator will require   known, the time difference between events can be
some time to stabilize. Code execution continues             calculated.
during this shift and there is no indication that the shift
has occurred.                                                If the measured time is much greater than the
                                                             calculated time, the internal oscillator block is running
The LF-INTOSC oscillator operates independently of           too fast. To compensate, decrement the OSCTUNE
the HF-INTOSC or the MF-INTOSC source. Any                   register. If the measured time is much less than the
changes in the HF-INTOSC or the MF-INTOSC source,            calculated time, the internal oscillator block is running
across voltage and temperature, are not necessarily          too slow. To compensate, increment the OSCTUNE
reflected by changes in LF-INTOSC or vice versa. The         register.
frequency of LF-INTOSC is not affected by OSCTUNE.

3.6.4 INTOSC FREQUENCY DRIFT                                 3.7 Reference Clock Output

The INTOSC frequency may drift as VDD or tempera-            In addition to the FOSC/4 clock output, in certain
ture changes, and can affect the controller operation in     oscillator modes, the device clock in the PIC18F87K22
a variety of ways. It is possible to adjust the INTOSC       family can also be configured to provide a reference
frequency by modifying the value in the OSCTUNE              clock output signal to a port pin. This feature is avail-
register. Depending on the device, this may have no          able in all oscillator configurations and allows the user
effect on the LF-INTOSC clock source frequency.              to select a greater range of clock submultiples to drive
                                                             external devices in the application.
Tuning INTOSC requires knowing when to make the
adjustment, in which direction it should be made, and in     This reference clock output is controlled by the
some cases, how large a change is needed. Three              REFOCON register (Register 3-4). Setting the ROON
compensation techniques are shown here.                      bit (REFOCON<7>) makes the clock signal available
                                                             on the REFO (RE3) pin. The RODIV<3:0> bits enable
3.6.4.1 Compensating with the EUSART                         the selection of 16 different clock divider options.

An adjustment may be required when the EUSART                The ROSSLP and ROSEL bits (REFOCON<5:4>) con-
begins to generate framing errors or receives data with      trol the availability of the reference output during Sleep
errors while in Asynchronous mode. Framing errors indi-      mode. The ROSEL bit determines if the oscillator on
cate that the device clock frequency is too high. To adjust  OSC1 and OSC2, or the current system clock source,
for this, decrement the value in OSCTUNE to reduce the       is used for the reference clock output. The ROSSLP bit
clock frequency. On the other hand, errors in data may       determines if the reference source is available on RE3
suggest that the clock speed is too low. To compensate,      when the device is in Sleep mode.
increment OSCTUNE to increase the clock frequency.
                                                             To use the reference clock output in Sleep mode, both
3.6.4.2 Compensating with the Timers                         the ROSSLP and ROSEL bits must be set. The device
                                                             clock must also be configured for an EC or HS mode. If
This technique compares device clock speed to some           not, the oscillator on OSC1 and OSC2 will be powered
reference clock. Two timers may be used; one timer is        down when the device enters Sleep mode. Clearing the
clocked by the peripheral clock, while the other is clocked  ROSEL bit allows the reference output frequency to
by a fixed reference source, such as the SOSC oscillator.    change as the system clock changes during any clock
                                                             switches.
Both timers are cleared, but the timer clocked by the
reference generates interrupts. When an interrupt
occurs, the internally clocked timer is read and both
timers are cleared. If the internally clocked timer value
is much greater than expected, then the internal
oscillator block is running too fast. To adjust for this,
decrement the OSCTUNE register.

2010 Microchip Technology Inc.  Preliminary                          DS39960B-page 51
PIC18F87K22 FAMILY

REGISTER 3-4: REFOCON: REFERENCE OSCILLATOR CONTROL REGISTER

     R/W-0         U-0  R/W-0             R/W-0  R/W-0                 R/W-0  R/W-0    R/W-0
     ROON                                                                             RODIV0
bit 7              --   ROSSLP ROSEL(1) RODIV3          RODIV2                RODIV1
                                                                                              bit 0

Legend:                 W = Writable bit         U = Unimplemented bit, read as `0'
R = Readable bit        `1' = Bit is set
-n = Value at POR                                `0' = Bit is cleared         x = Bit is unknown

bit 7       ROON: Reference Oscillator Output Enable bit

bit 6       1 = Reference oscillator output is available on REFO pin
bit 5       0 = Reference oscillator output is disabled

bit 4       Unimplemented: Read as `0'

bit 3-0     ROSSLP: Reference Oscillator Output Stop in Sleep bit

            1 = Reference oscillator continues to run in Sleep
            0 = Reference oscillator is disabled in Sleep
            ROSEL: Reference Oscillator Source Select bit(1)

            1 = Primary oscillator (EC or HS) used as the base clock
            0 = System clock used as the base clock; base clock reflects any clock switching of the device

            RODIV<3:0>: Reference Oscillator Divisor Select bits

            1111 = Base clock value divided by 32,768
            1110 = Base clock value divided by 16,384
            1101 = Base clock value divided by 8,192
            1100 = Base clock value divided by 4,096
            1011 = Base clock value divided by 2,048
            1010 = Base clock value divided by 1,024
            1001 = Base clock value divided by 512
            1000 = Base clock value divided by 256
            0111 = Base clock value divided by 128
            0110 = Base clock value divided by 64
            0101 = Base clock value divided by 32
            0100 = Base clock value divided by 16
            0011 = Base clock value divided by 8
            0010 = Base clock value divided by 4
            0001 = Base clock value divided by 2
            0000 = Base clock value

Note 1: For ROSEL (REVOCON<4>), the primary oscillator is available only when configured as the default via the
              FOSC settings. This is regardless of whether the device is in Sleep mode.

DS39960B-page 52                          Preliminary                          2010 Microchip Technology Inc.
                                                            PIC18F87K22 FAMILY

3.8 Effects of Power-Managed Modes                          The SOSC oscillator may be operating to support a
         on the Various Clock Sources                       Real-Time Clock (RTC). Other features may be operat-
                                                            ing that do not require a device clock source (i.e.,
When PRI_IDLE mode is selected, the designated pri-         MSSP slave, INTx pins and others). Peripherals that
mary oscillator continues to run without interruption.      may add significant current consumption are listed in
For all other power-managed modes, the oscillator           Section 31.2 "DC Characteristics: Power-Down and
using the OSC1 pin is disabled. The OSC1 pin (and           Supply Current PIC18F87K22 Family (Industrial)".
OSC2 pin if used by the oscillator) will stop oscillating.
                                                            3.9 Power-up Delays
In secondary clock modes (SEC_RUN and
SEC_IDLE), the SOSC oscillator is operating and             Power-up delays are controlled by two timers, so that
providing the device clock. The SOSC oscillator may         no external Reset circuitry is required for most applica-
also run in all power-managed modes if required to          tions. The delays ensure that the device is kept in
clock SOSC.                                                 Reset until the device power supply is stable under nor-
                                                            mal circumstances and the primary clock is operating
In RC_RUN and RC_IDLE modes, the internal                   and stable. For additional information on power-up
oscillator provides the device clock source. The 31 kHz     delays, see Section 5.6 "Power-up Timer (PWRT)".
LF-INTOSC output can be used directly to provide the
clock and may be enabled to support various special         The first timer is the Power-up Timer (PWRT), which
features, regardless of the power-managed mode (see         provides a fixed delay on power-up time of about 64 ms
Section 28.2 "Watchdog Timer (WDT)" through                 (parameter 33, Table 31-12); it is always enabled.
Section 28.5 "Fail-Safe Clock Monitor" for more
information on WDT, Fail-Safe Clock Monitor and             The second timer is the Oscillator Start-up Timer
Two-Speed Start-up).                                        (OST), intended to keep the chip in Reset until the
                                                            crystal oscillator is stable (HS, XT or LP modes). The
If the Sleep mode is selected, all clock sources are        OST does this by counting 1,024 oscillator cycles
stopped. Since all the transistor switching currents        before allowing the oscillator to clock the device.
have been stopped, Sleep mode achieves the lowest
current consumption of the device (only leakage             There is a delay of interval, TCSD (parameter 38,
currents).                                                  Table 31-12), following POR, while the controller
                                                            becomes ready to execute instructions.
Enabling any on-chip feature that will operate during
Sleep will increase the current consumed during Sleep.
The INTOSC is required to support WDT operation.

TABLE 3-4: OSC1 AND OSC2 PIN STATES IN SLEEP MODE

Oscillator Mode                  OSC1 Pin                                 OSC2 Pin

EC, ECPLL          Floating, pulled by external clock       At logic low (clock/4 output)
HS, HSPLL
                   Feedback inverter disabled at quiescent  Feedback inverter disabled at quiescent
INTOSC, INTPLL1/2  voltage level                            voltage level

                   I/O pin, RA6, direction controlled by    I/O pin, RA6, direction controlled by
                   TRISA<6>                                 TRISA<7>

Note: See Section 5.0 "Reset" for time-outs due to Sleep and MCLR Reset.

2010 Microchip Technology Inc.  Preliminary                              DS39960B-page 53
PIC18F87K22 FAMILY

NOTES:

DS39960B-page 54  Preliminary   2010 Microchip Technology Inc.
                                                          PIC18F87K22 FAMILY

4.0 POWER-MANAGED MODES                                   The IDLEN bit (OSCCON<7>) controls CPU clocking,
                                                          while the SCS<1:0> bits (OSCCON<1:0>) select the
The PIC18F87K22 family of devices offers a total of       clock source. The individual modes, bit settings, clock
seven operating modes for more efficient power man-       sources and affected modules are summarized in
agement. These modes provide a variety of options for     Table 4-1.
selective power conservation in applications where
resources may be limited (such as battery-powered         4.1.1 CLOCK SOURCES
devices).
                                                          The SCS<1:0> bits select one of three clock sources
There are three categories of power-managed mode:         for power-managed modes. Those sources are:

Run modes                                                The primary clock as defined by the FOSC<3:0>
Idle modes                                                 Configuration bits
Sleep mode
                                                          The secondary clock (the SOSC oscillator)
There is an Ultra Low-Power Wake-up (ULPWU) for            The internal oscillator block (for LF-INTOSC
waking from the Sleep mode.
                                                             modes)
These categories define which portions of the device
are clocked, and sometimes, at what speed. The Run        4.1.2    ENTERING POWER-MANAGED
and Idle modes may use any of the three available                  MODES
clock sources (primary, secondary or internal oscillator
block). The Sleep mode does not use a clock source.       Switching from one power-managed mode to another
                                                          begins by loading the OSCCON register. The
The ULPWU mode, on the RA0 pin, enables a slow fall-      SCS<1:0> bits select the clock source and determine
ing voltage to generate a wake-up, even from Sleep,       which Run or Idle mode is used. Changing these bits
without excess current consumption. (See Section 4.7      causes an immediate switch to the new clock source,
"Ultra Low-Power Wake-up".)                               assuming that it is running. The switch may also be
                                                          subject to clock transition delays. These considerations
The power-managed modes include several power-            are discussed in Section 4.1.3 "Clock Transitions
saving features offered on previous PIC devices. One     and Status Indicators" and subsequent sections.
is the clock switching feature, offered in other PIC18
devices. This feature allows the controller to use the    Entering the power-managed Idle or Sleep modes is
SOSC oscillator instead of the primary one. Another       triggered by the execution of a SLEEP instruction. The
power-saving feature is Sleep mode, offered by all PIC    actual mode that results depends on the status of the
devices, where all device clocks are stopped.             IDLEN bit.

4.1 Selecting Power-Managed Modes                         Depending on the current and impending mode, a
                                                          change to a power-managed mode does not always
Selecting a power-managed mode requires two               require setting all of the previously discussed bits. Many
decisions:                                                transitions can be done by changing the oscillator select
                                                          bits, or changing the IDLEN bit, prior to issuing a SLEEP
Will the CPU be clocked or not                          instruction. If the IDLEN bit is already configured as
What will be the clock source                           desired, it may only be necessary to perform a SLEEP
                                                          instruction to switch to the desired mode.

TABLE 4-1: POWER-MANAGED MODES

Mode              OSCCON Bits         Module Clocking              Available Clock and Oscillator Source
          IDLEN<7>(1) SCS<1:0>        CPU Peripherals

Sleep     0                      N/A  Off                 Off      None All clocks are disabled

PRI_RUN   N/A                    00   Clocked             Clocked  Primary XT, LP, HS, EC, RC and PLL modes.
                                                                   This is the normal, full-power execution mode.

SEC_RUN   N/A                    01   Clocked Clocked Secondary SOSC Oscillator

RC_RUN    N/A                    1x   Clocked             Clocked Internal oscillator block(2)

PRI_IDLE  1                      00   Off                 Clocked Primary LP, XT, HS, RC, EC

SEC_IDLE  1                      01   Off                 Clocked Secondary SOSC 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 INTOSC (HF-INTOSC and MG-INTOSC) and INTOSC postscaler, as well as the LF-INTOSC
             source.

2010 Microchip Technology Inc.       Preliminary                                               DS39960B-page 55
PIC18F87K22 FAMILY

4.1.3   CLOCK TRANSITIONS AND STATUS                          4.1.4 MULTIPLE SLEEP COMMANDS
        INDICATORS
                                                              The power-managed mode that is invoked with the
The length of the transition between clock sources is         SLEEP instruction is determined by the setting of the
the sum of two cycles of the old clock source and three       IDLEN bit at the time the instruction is executed. If
to four cycles of the new clock source. This formula          another SLEEP instruction is executed, the device will
assumes that the new clock source is stable. The HF-          enter the power-managed mode specified by IDLEN at
INTOSC and MF-INTOSC are termed as INTOSC in                  that time. If IDLEN has changed, the device will enter
this chapter.                                                 the new power-managed mode specified by the new
                                                              setting.
Three bits indicate the current clock source and its
status, as shown in Table 4-2. The three bits are:            4.2 Run Modes

OSTS (OSCCON<3>)                                            In the Run modes, clocks to both the core and
HFIOFS (OSCCON<2>)                                          peripherals are active. The difference between these
SOSCRUN (OSCCON2<6>)                                        modes is the clock source.

TABLE 4-2: SYSTEM CLOCK INDICATOR                             4.2.1 PRI_RUN MODE

Main Clock Source     OSTS  HFIOFS or  SOSCRUN                The PRI_RUN mode is the normal, full-power execu-
                             MFIOFS                           tion mode of the microcontroller. This is also the default
                                                              mode upon a device Reset, unless Two-Speed Start-up
Primary oscillator    1     0          0                      is enabled. (For details, see Section 28.4 "Two-Speed
                                                              Start-up".) In this mode, the OSTS bit is set. The
INTOSC (HF-INTOSC     0     1          0                      HFIOFS or MFIOFS bit may be set if the internal
                                                              oscillator block is the primary clock source. (See
or MF-INTOSC)                                                 Section 3.2 "Control Registers".)

Secondary Oscillator  0     0          1                      4.2.2 SEC_RUN MODE

MF-INTOSC or                                                  The SEC_RUN mode is the compatible mode to the
                                                              "clock-switching" feature offered in other PIC18
HF-INTOSC as primary 1      1          0                      devices. In this mode, the CPU and peripherals are
                                                              clocked from the SOSC oscillator. This enables lower
clock source                                                  power consumption while retaining a high-accuracy
                                                              clock source.
LF-INTOSC is running
                                                              SEC_RUN mode is entered by setting the SCS<1:0>
or INTOSC is not yet  0     0          0                      bits to `01'. The device clock source is switched to the
                                                              SOSC oscillator (see Figure 4-1), the primary oscillator
stable                                                        is shut down, the SOSCRUN bit (OSCCON2<6>) is set
                                                              and the OSTS bit is cleared.
When the OSTS bit is set, the primary clock is providing
the device clock. When the HFIOFS or MFIOFS bit is            Note:  The SOSC oscillator can be enabled by
set, the INTOSC output is providing a stable 16 MHz                  setting the SOSCGO bit (OSCCON2<3>).
clock source to a divider that actually drives the device            If this bit is set, the clock switch to the
clock. When the SOSCRUN bit is set, the SOSC oscil-                  SEC_RUN mode can switch immediately
lator is providing the clock. If none of these bits are set,         once SCS<1:0> are set to `01'.
either the LF-INTOSC clock source is clocking the
device or the INTOSC source is not yet stable.                On transitions from SEC_RUN mode to PRI_RUN
                                                              mode, the peripherals and CPU continue to be clocked
If the internal oscillator block is configured as the         from the SOSC oscillator while the primary clock is
primary clock source by the FOSC<3:0> Configuration           started. When the primary clock becomes ready, a
bits (CONFIG1H<3:0>), then the OSTS and HFIOFS or             clock switch back to the primary clock occurs (see
MFIOFS bits can be set when in PRI_RUN or                     Figure 4-2). When the clock switch is complete, the
PRI_IDLE modes. This indicates that the primary clock         SOSCRUN bit is cleared, the OSTS bit is set and the
(INTOSC output) is generating a stable 16 MHz output.         primary clock is providing the clock. The IDLEN and
Entering another INTOSC power-managed mode at                 SCS bits are not affected by the wake-up and the
the same frequency would clear the OSTS bit.                  SOSC oscillator continues to run.

Note 1: Caution should be used when modifying a
            single IRCF bit. At a lower VDD, it is
            possible to select a higher clock speed
            than is supportable by that VDD. Improper
            device operation may result if the VDD/
            FOSC specifications are violated.

       2: Executing a SLEEP instruction does not
            necessarily place the device into Sleep
            mode. It acts as the trigger to place the
            controller into either the Sleep mode or
            one of the Idle modes, depending on the
            setting of the IDLEN bit.

DS39960B-page 56                          Preliminary                 2010 Microchip Technology Inc.
                                                                   PIC18F87K22 FAMILY

FIGURE 4-1:  TRANSITION TIMING FOR ENTRY TO SEC_RUN MODE

             Q1 Q2 Q3 Q4 Q1                                                  Q2 Q3 Q4 Q1 Q2 Q3

SOSCI                            1   2            3           n-1 n
OSC1
                                              Clock Transition(1)

CPU
Clock

Peripheral
      Clock

Program      PC                                               PC + 2                     PC + 4
Counter

Note 1: Clock transition typically occurs within 2-4 TOSC.

FIGURE 4-2:  TRANSITION TIMING FROM SEC_RUN MODE TO PRI_RUN MODE (HSPLL)

                                 Q1           Q2     Q3       Q4      Q1                 Q2 Q3 Q4 Q1 Q2 Q3

     SOSC                            TOST(1)         TPLL(1)
     OSC1
                                                                      1 2 n-1 n
PLL Clock                                                                    Clock
    Output
                                                                         Transition(2)
CPU Clock

Peripheral
      Clock

Program                              PC                                      PC + 2      PC + 4
Counter

             SCS<1:0> bits Changed                   OSTS bit Set

Note 1: TOST = 1024 TOSC; TPLL = 2 ms (approx). These intervals are not shown to scale.
       2: Clock transition typically occurs within 2-4 TOSC.

4.2.3 RC_RUN MODE                                                     This mode is entered by setting the SCS1 bit to `1'. To
                                                                      maintain software compatibility with future devices, it is
In RC_RUN mode, the CPU and peripherals are                           recommended that the SCS0 bit also be cleared, even
clocked from the internal oscillator block using the                  though the bit is ignored. When the clock source is
INTOSC multiplexer. In this mode, the primary clock is                switched to the INTOSC multiplexer (see Figure 4-3),
shut down. When using the LF-INTOSC source, this                      the primary oscillator is shut down and the OSTS bit is
mode provides the best power conservation of all the                  cleared. The IRCF bits may be modified at any time to
Run modes, while still executing code. It works well for              immediately change the clock speed.
user applications which are not highly timing-sensitive
or do not require high-speed clocks at all times.                     Note:  Caution should be used when modifying a
                                                                             single IRCF bit. At a lower VDD, it is
If the primary clock source is the internal oscillator                       possible to select a higher clock speed
block either LF-INTOSC or INTOSC (MF-INTOSC or                             than is supportable by that VDD. Improper
HF-INTOSC) there are no distinguishable differences                        device operation may result if the VDD/
between the PRI_RUN and RC_RUN modes during                                  FOSC specifications are violated.
execution. Entering or exiting RC_RUN mode, how-
ever, causes a clock switch delay. Therefore, if the
primary clock source is the internal oscillator block,
using RC_RUN mode is not recommended.

2010 Microchip Technology Inc.                      Preliminary                         DS39960B-page 57
PIC18F87K22 FAMILY

If the IRCF bits and the INTSRC bit are all clear, the    If the IRCF bits are changed from all clear (thus,
INTOSC output (HF-INTOSC/MF-INTOSC) is not                enabling the INTOSC output) or if INTSRC or
enabled and the HFIOFS and MFIOFS bits will remain        MFIOSEL is set, the HFIOFS or MFIOFS bit is set after
clear. There will be no indication of the current clock   the INTOSC output becomes stable. For details, see
source. The LF-INTOSC source is providing the device      Table 4-3.
clocks.

TABLE 4-3:        INTERNAL OSCILLATOR FREQUENCY STABILITY BITS
     IRCF<2:0>
                  INTSRC  MFIOSEL                         Status of MFIOFS or HFIOFS when INTOSC is Stable
          000
          000     0       x        MFIOFS = 0, HFIOFS = 0 and clock source is LF-INTOSC
          000
      Non-Zero    1       0        MFIOFS = 0, HFIOFS = 1 and clock source is HF-INTOSC
      Non-Zero
                  1       1        MFIOFS = 1, HFIOFS = 0 and clock source is MF-INTOSC

                  x       0        MFIOFS = 0, HFIOFS = 1 and clock source is HF-INTOSC

                  x       1        MFIOFS = 1, HFIOFS = 0 and clock source is MF-INTOSC

Clocks to the device continue while the INTOSC source     On transitions from RC_RUN mode to PRI_RUN mode,
stabilizes after an interval of TIOBST (parameter 39,     the device continues to be clocked from the INTOSC
Table 31-12).                                             multiplexer while the primary clock is started. When the
                                                          primary clock becomes ready, a clock switch to the
If the IRCF bits were previously at a non-zero value, or  primary clock occurs (see Figure 4-4). When the clock
if INTSRC was set before setting SCS1 and the             switch is complete, the HFIOFS or MFIOFS bit is
INTOSC source was already stable, the HFIOFS or           cleared, the OSTS bit is set and the primary clock is
MFIOFS bit will remain set.                               providing the device clock. The IDLEN and SCS bits
                                                          are not affected by the switch. The LF-INTOSC source
                                                          will continue to run if either the WDT or the Fail-Safe
                                                          Clock Monitor is enabled.

DS39960B-page 58                   Preliminary                   2010 Microchip Technology Inc.
                                                                   PIC18F87K22 FAMILY

FIGURE 4-3:  TRANSITION TIMING TO RC_RUN MODE

             Q1 Q2 Q3 Q4 Q1                                               Q2 Q3 Q4 Q1 Q2 Q3
                                                                                                                  PC + 4
LF-INTOSC                        1   2            3           n-1 n
       OSC1
                                              Clock Transition(1)

CPU
Clock

Peripheral
      Clock

Program      PC                                               PC + 2
Counter

Note 1: Clock transition typically occurs within 2-4 TOSC.

FIGURE 4-4:  TRANSITION TIMING FROM RC_RUN MODE TO PRI_RUN MODE

                                 Q1           Q2     Q3       Q4      Q1                          Q2 Q3 Q4 Q1 Q2 Q3

   INTOSC                            TOST(1)         TPLL(1)
Multiplexer
                                                                      1 2 n-1 n
      OSC1                                                                   Clock

PLL Clock                                                                Transition(2)
     Output
                                                                                          PC + 2
CPU Clock

Peripheral
      Clock

Program                              PC                                                           PC + 4
Counter

             SCS<1:0> bits Changed                   OSTS bit Set

Note 1: TOST = 1024 TOSC; TPLL = 2 ms (approx). These intervals are not shown to scale.
       2: Clock transition typically occurs within 2-4 TOSC.

2010 Microchip Technology Inc.                      Preliminary                                  DS39960B-page 59
PIC18F87K22 FAMILY

4.3 Sleep Mode                                                        4.4 Idle Modes

The power-managed Sleep mode in the PIC18F87K22                       The Idle modes allow the controller's CPU to be
family of devices is identical to the legacy Sleep mode               selectively shut down while the peripherals continue to
offered in all other PIC devices. It is entered by clearing           operate. Selecting a particular Idle mode allows users
the IDLEN bit (the default state on device Reset) and                 to further manage power consumption.
executing the SLEEP instruction. This shuts down the
selected oscillator (Figure 4-5). All clock source status             If the IDLEN bit is set to a `1' when a SLEEP instruction is
bits are cleared.                                                     executed, the peripherals will be clocked from the clock
                                                                      source selected using the SCS<1:0> bits. The CPU,
Entering Sleep mode from any other mode does not                      however, will not be clocked. The clock source status bits
require a clock switch. This is because no clocks are                 are not affected. This approach is a quick method to
needed once the controller has entered Sleep. If the                  switch from a given Run mode to its corresponding Idle
WDT is selected, the LF-INTOSC source will continue                   mode.
to operate. If the SOSC oscillator is enabled, it will also
continue to run.                                                      If the WDT is selected, the LF-INTOSC source will
                                                                      continue to operate. If the SOSC oscillator is enabled,
When a wake event occurs in Sleep mode (by interrupt,                 it will also continue to run.
Reset or WDT time-out), the device will not be clocked
until the clock source selected by the SCS<1:0> bits                  Since the CPU is not executing instructions, the only
becomes ready (see Figure 4-6). Alternately, the device               exits from any of the Idle modes are by interrupt, WDT
will be clocked from the internal oscillator block if either          time-out or a Reset. When a wake event occurs, CPU
the Two-Speed Start-up or the Fail-Safe Clock Monitor is              execution is delayed by an interval of TCSD
enabled (see Section 28.0 "Special Features of the                    (parameter 38, Table 31-12) while it becomes ready to
CPU"). In either case, the OSTS bit is set when the                   execute code. When the CPU begins executing code,
primary clock is providing the device clocks. The IDLEN               it resumes with the same clock source for the current
and SCS bits are not affected by the wake-up.                         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 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.

FIGURE 4-5:       TRANSITION TIMING FOR ENTRY TO SLEEP MODE

             Q1 Q2 Q3 Q4 Q1

OSC1

       CPU
      Clock
Peripheral
      Clock

Sleep

Program      PC                                               PC + 2
Counter

FIGURE 4-6:       TRANSITION TIMING FOR WAKE FROM SLEEP (HSPLL)

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

     OSC1                        TOST(1)  TPLL(1)
PLL Clock

    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.

DS39960B-page 60                                   Preliminary                           2010 Microchip Technology Inc.
                                                           PIC18F87K22 FAMILY

4.4.1 PRI_IDLE MODE                                        4.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 SOSC
clock. For timing-sensitive applications, this allows for  oscillator. This mode is entered from SEC_RUN by set-
the fastest resumption of device operation with its more   ting the IDLEN bit and executing a SLEEP instruction. If
accurate, primary clock source, since the clock source     the device is in another Run mode, set the IDLEN bit
does not have to "warm-up" or transition from another      first, then set the SCS<1:0> bits to `01' and execute
oscillator.                                                SLEEP. When the clock source is switched to the SOSC
                                                           oscillator, the primary oscillator is shut down, the OSTS
PRI_IDLE mode is entered from PRI_RUN mode by              bit is cleared and the SOSCRUN bit is set.
setting the IDLEN bit and executing a SLEEP instruc-
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 SOSC oscillator. After an interval
Although the CPU is disabled, the peripherals continue     of TCSD following the wake event, the CPU begins
to be clocked from the primary clock source specified      executing code being clocked by the SOSC oscillator.
by the FOSC<3:0> Configuration bits. The OSTS bit          The IDLEN and SCS bits are not affected by the wake-
remains set (see Figure 4-7).                              up and the SOSC oscillator continues to run (see
                                                           Figure 4-8).
When a wake event occurs, the CPU is clocked from the
primary clock source. A delay of interval, TCSD
(parameter 39, Table 31-12), is required between the
wake event and the start of code execution. This is
required to allow the CPU to become ready to execute
instructions. After the wake-up, the OSTS bit remains
set. The IDLEN and SCS bits are not affected by the
wake-up (see Figure 4-8).

FIGURE 4-7:      TRANSITION TIMING FOR ENTRY TO IDLE MODE

             Q1  Q2                  Q3        Q4  Q1

OSC1

CPU Clock

Peripheral
      Clock

Program                          PC                             PC + 2
Counter

FIGURE 4-8:      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 Microchip Technology Inc.                    Preliminary                  DS39960B-page 61
PIC18F87K22 FAMILY

4.4.3 RC_IDLE MODE                                         4.5 Selective Peripheral Module
                                                                     Control
In RC_IDLE mode, the CPU is disabled but the periph-
erals continue to be clocked from the internal oscillator  Idle mode allows users to substantially reduce power
block using the INTOSC multiplexer. This mode              consumption by stopping the CPU clock. Even so,
provides controllable power conservation during Idle       peripheral modules still remain clocked, and thus, con-
periods.                                                   sume power. There may be cases where the applica-
                                                           tion needs what this mode does not provide: the
From RC_RUN, this mode is entered by setting the           allocation of power resources to the CPU processing
IDLEN bit and executing a SLEEP instruction. If the        with minimal power consumption from the peripherals.
device is in another Run mode, first set IDLEN, then set
the SCS1 bit and execute SLEEP. To maintain software       PIC18F87K22 family devices address this requirement
compatibility with future devices, it is recommended       by allowing peripheral modules to be selectively
that SCS0 also be cleared, though its value is ignored.    disabled, reducing or eliminating their power
The INTOSC multiplexer may be used to select a             consumption. This can be done with two control bits:
higher clock frequency by modifying the IRCF bits
before executing the SLEEP instruction. When the            Peripheral Enable bit, generically named XXXEN
clock source is switched to the INTOSC multiplexer, the       Located in the respective module's main control
primary oscillator is shut down and the OSTS bit is           register
cleared.
                                                            Peripheral Module Disable (PMD) bit, generically
If the IRCF bits are set to any non-zero value, or the        named, XXXMD Located in one of the PMDx
INTSRC/MFIOSEL bit is set, the INTOSC output is               Control registers (PMD0, PMD1, PMD2 or PMD3)
enabled. The HFIOFS/MFIOFS bits become set, after
the INTOSC output becomes stable, after an interval of     Disabling a module by clearing its XXXEN bit disables
TIOBST (parameter 38, Table 31-12). (For information       the module's functionality, but leaves its registers
on the HFIOFS/MFIOFS bits, see Table 4-3.)                 available to be read and written to. This reduces power
                                                           consumption, but not by as much as the second
Clocks to the peripherals continue while the INTOSC        approach.
source stabilizes. The HFIOFS/MFIOFS bits will
remain set if the IRCF bits were previously at a non-      Most peripheral modules have an enable bit.
zero value or if INTSRC was set before the SLEEP
instruction was executed and the INTOSC source was         In contrast, setting the PMD bit for a module disables
already stable. If the IRCF bits and INTSRC are all        all clock sources to that module, reducing its power
clear, the INTOSC output will not be enabled, the          consumption to an absolute minimum. In this state, the
HFIOFS/MFIOFS bits will remain clear and there will be     control and status registers associated with the periph-
no indication of the current clock source.                 eral are also disabled, so writes to those registers have
                                                           no effect and read values are invalid. Many peripheral
When a wake event occurs, the peripherals continue to      modules have a corresponding PMD bit.
be clocked from the INTOSC multiplexer. After a delay
of TCSD (parameter 38, Table 31-12) following the wake     There are four PMD registers in the PIC18F87K22 family
event, the CPU begins executing code clocked by the        devices: PMD0, PMD1, PMD2 and PMD3. These
INTOSC multiplexer. The IDLEN and SCS bits are not         registers have bits associated with each module for
affected by the wake-up. The INTRC source will             disabling or enabling a particular peripheral.
continue to run if either the WDT or the Fail-Safe Clock
Monitor is enabled.

DS39960B-page 62  Preliminary                               2010 Microchip Technology Inc.
                                                            PIC18F87K22 FAMILY

REGISTER 4-1: PMD3: PERIPHERAL MODULE DISABLE REGISTER 3(2)

R/W-0              R/W-0         R/W-0               R/W-0    R/W-0    R/W-0        R/W-0           R/W-0
                                                   CCP7MD   CCP6MD   CCP5MD       CCP4MD        TMR12MD(1)
CCP10MD(1,3) CCP9MD(1,3) CCP8MD(1,3)
                                                                                                           bit 0
bit 7

Legend:                          W = Writable bit           U = Unimplemented bit, read as `0'
R = Readable bit                 `1' = Bit is set
-n = Value at POR                                           `0' = Bit is cleared  x = Bit is unknown

bit 7       CCP10MD: PMD CCP10 Enable/Disable bit(1,3)

            1 = Peripheral Module Disable (PMD) is enabled for CCP10, disabling all of its clock sources

            0 = PMD is disabled for CCP10

bit 6       CCP9MD: PMD CCP9 Enable/Disable bit(1,3)

            1 = Peripheral Module Disable (PMD) is enabled for CCP9, disabling all of its clock sources

            0 = PMD is disabled for CCP9

bit 5       CCP8MD: PMD CCP8 Enable/Disable bit(1,3)

            1 = Peripheral Module Disable (PMD) is enabled for CCP8, disabling all of its clock sources
            0 = PMD is disabled for CCP8

bit 4       CCP7MD: PMD CCP7 Enable/Disable bit

            1 = Peripheral Module Disable (PMD) is enabled for CCP7, disabling all of its clock sources
            0 = PMD is disabled for CCP7

bit 3       CCP6MD: PMD CCP6 Enable/Disable bit

            1 = Peripheral Module Disable (PMD) is enabled for CCP6, disabling all of its clock sources
            0 = PMD is disabled for CCP6

bit 2       CCP5MD: PMD CCP5 Enable/Disable bit

            1 = Peripheral Module Disable (PMD) is enabled for CCP5, disabling all of its clock sources
            0 = PMD is disabled for CCP5

bit 1       CCP4MD: PMD CCP4 Enable/Disable bit

            1 = Peripheral Module Disable (PMD) is enabled for CCP4, disabling all of its clock sources

            0 = PMD is disabled for CCP4

bit 0       TMR12MD(1): TMR12MD Disable bit

            1 = PMD is enabled and all TMR12MD clock sources are disabled
            0 = PMD is disabled and TMR12MD is enabled

Note 1:     Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).
        2:
            RTCCMD can only be set to `1' after an EECON2 unlock sequence. Refer to Section 18.0 "Real-Time
        3:  Clock and Calendar (RTCC)" for the unlock sequence (Example 18-1).

            Unimplemented on devices with 64 pins (PIC18F6XK22).

2010 Microchip Technology Inc.                    Preliminary                                  DS39960B-page 63
PIC18F87K22 FAMILY

REGISTER 4-2: PMD2: PERIPHERAL MODULE DISABLE REGISTER 2(2)

     R/W-0          R/W-0  R/W-0             R/W-0    R/W-0    R/W-0                     R/W-0    R/W-0
TMR10MD(1,3)      TMR8MD                            TMR5MD   CMP3MD                    CMP2MD   CMP1MD
                           TMR7MD(1) TMR6MD
bit 7                                                                                                    bit 0

Legend:                    W = Writable bit         U = Unimplemented bit, read as `0'
R = Readable bit           `1' = Bit is set
-n = Value at POR                                   `0' = Bit is cleared               x = Bit is unknown

bit 7         TMR10MD: TMR10MD Disable bit(1,3)

              1 = Peripheral Module Disable (PMD) is enabled and all TMR10MD clock sources are disabled

              0 = PMD is disabled and TMR10MD is enabled

bit 6         TMR8MD: TMR8MD Disable bit(1,3)

              1 = PMD is enabled and all TMR8MD clock sources are disabled

              0 = PMD is disabled and TMR8MD is enabled

bit 5         TMR7MD: TMR7MD Disable bit(1)

              1 = PMD is enabled and all TMR7MD clock sources are disabled
              0 = PMD is disabled and TMR7MD is enabled

bit 4         TMR6MD: TMR6MD Disable bit

              1 = PMD is enabled and all TMR6MD clock sources are disabled
              0 = PMD is disabled and TMR6MD is enabled

bit 3         TMR5MD: TMR5MD Disable bit

              1 = PMD is enabled and all TMR5MD clock sources are disabled
              0 = PMD is disabled and TMR5MD is enabled

bit 2         CMP3MD: PMD Comparator 3 Enable/Disable bit

              1 = PMD is enabled for Comparator 3, disabling all of its clock sources
              0 = PMD is disabled for Comparator 3

bit 1         CMP2MD: PMD Comparator 3 Enable/Disable bit

              1 = PMD is enabled for Comparator 2, disabling all of its clock sources
              0 = PMD is disabled for Comparator 2

bit 0         CMP1MD: PMD Comparator 3 Enable/Disable bit

              1 = PMD is enabled for Comparator 1, disabling all of its clock sources
              0 = PMD is disabled for Comparator 1

Note 1:     Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).
        2:
            RTCCMD can only be set to `1' after an EECON2 unlock sequence. Refer to Section 18.0 "Real-Time
        3:  Clock and Calendar (RTCC)" for the unlock sequence (Example 18-1).

            Unimplemented on devices with 64 pins (PIC18F6XK22).

DS39960B-page 64                             Preliminary                     2010 Microchip Technology Inc.
                                                          PIC18F87K22 FAMILY

REGISTER 4-3: PMD1: PERIPHERAL MODULE DISABLE REGISTER 1

     R/W-0         R/W-0         R/W-0             R/W-0    R/W-0    R/W-0        R/W-0         R/W-0
    PSPMD                                                 TMR3MD   TMR2MD       TMR1MD        EMBMD(3)
bit 7       CTMUMD RTCCMD(1,2) TMR4MD
                                                                                                       bit 0

Legend:                          W = Writable bit         U = Unimplemented bit, read as `0'
R = Readable bit                 `1' = Bit is set
-n = Value at POR                                         `0' = Bit is cleared  x = Bit is unknown

bit 7       PSPMD: Peripheral Module Disable (PMD) PSP Enable/Disable bit

            1 = PMD is enabled for PSP
            0 = PMD is disabled for PSP

bit 6       CTMUMD: PMD CTMU Enable/Disable bit

            1 = PMD is enabled for CTMU, disabling all of its clock sources

            0 = PMD is disabled for CTMU

bit 5       RTCCMD: PMD RTCC Enable/Disable bit(1,2)

            1 = PMD is enabled for RTCC, disabling all of its clock sources
            0 = PMD is disabled for RTCC

bit 4       TMR4MD: TMR4MD Disable bit

            1 = PMD is enabled and all TMR4MD clock sources disabled
            0 = PMD is disabled and TMR4MD

bit 3       TMR3MD: TMR3MD Disable bit

            1 = PMD is enabled and all TMR3MD clock sources disabled
            0 = PMD is disabled and TMR3MD

bit 2       TMR2MD: TMR2MD Disable bit

            1 = PMD is enabled and all TMR2MD clock sources disabled
            0 = PMD is disabled and TMR2MD

bit 1       TMR1MD: TMR1MD Disable bit

            1 = PMD is enabled and all TMR1MD clock sources disabled

            0 = PMD is disabled and TMR1MD

bit 0       EMBMD: PMD EMB Enable/Disable bit(3)

            1 = PMD is enabled for EMB

            0 = PMD is disabled for EMB

Note 1:     Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).
        2:
            RTCCMD can only be set to `1' after an EECON2 unlock sequence. Refer to Section 18.0 "Real-Time
        3:  Clock and Calendar (RTCC)" for the unlock sequence (Example 18-1).

            Unimplemented on devices with 64 pins (PIC18F6XK22).

2010 Microchip Technology Inc.                    Preliminary                                DS39960B-page 65
PIC18F87K22 FAMILY

REGISTER 4-4: PMD0: PERIPHERAL MODULE DISABLE REGISTER 0(1,2,3)

     R/W-0          R/W-0    R/W-0           R/W-0  R/W-0   R/W-0              R/W-0                  R/W-0
   CCP3MD         CCP2MD   CCP1MD                          SSP2MD             SSP1MD                 ADCMD
bit 7                               UART2MD UART1MD
                                                                                                             bit 0

Legend:                    W = Writable bit         U = Unimplemented bit, read as `0'
R = Readable bit           `1' = Bit is set
-n = Value at POR                                   `0' = Bit is cleared      x = Bit is unknown

bit 7       CCP3MD: PMD ECCP3 Enable/Disable bit

            1 = Peripheral Module Disable (PMD) is enabled for ECCP3, disabling all of its clock sources
            0 = PMD is disabled for ECCP3

bit 6       CCP2MD: PMD ECCP2 Enable/Disable bit

            1 = PMD is enabled for ECCP2, disabling all of its clock sources
            0 = PMD is disabled for ECCP2

bit 5       CCP1MD: PMD ECCP1 Enable/Disable bit

            1 = PMD is enabled for ECCP1, disabling all of its clock sources
            0 = PMD is disabled for ECCP1

bit 4       UART2MD: PMD UART2 Enable/Disable bit

            1 = PMD is enabled for UART2, disabling all of its clock sources
            0 = PMD is disabled for UART2

bit 3       UART1MD: PMD UART1 Enable/Disable bit

            1 = PMD is enabled for UART1, disabling all of its clock sources
            0 = PMD is disabled for UART1

bit 2       SSP2MD: PMD MSSP2 Enable/Disable bit

            1 = PMD is enabled for MSSP2, disabling all of its clock sources
            0 = PMD is disabled for MSSP2

bit 1       SSP1MD: PMD MSSP1 Enable/Disable bit

            1 = PMD is enabled for MSSP1, disabling all of its clock sources
            0 = PMD is disabled for MSSP1

bit 0       ADCMD: PMD Analog/Digital Converter PMD Enable/Disable bit

            1 = PMD is enabled for the Analog/Digital Converter, disabling all of its clock sources
            0 = PMD is disabled for the Analog/Digital Converter

Note 1:     Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).
        2:
            RTCCMD can only be set to `1' after an EECON2 unlock sequence. Refer to Section 18.0 "Real-Time
        3:  Clock and Calendar (RTCC)" for the unlock sequence (Example 18-1).

            Unimplemented on devices with 64 pins (PIC18F6XK22).

DS39960B-page 66                             Preliminary                       2010 Microchip Technology Inc.
                                                             PIC18F87K22 FAMILY

4.6 Exiting Idle and Sleep Modes                             4.6.3 EXIT BY RESET

An exit from Sleep mode or any of the Idle modes is          Normally, the device is held in Reset by the Oscillator
triggered by an interrupt, a Reset or a WDT time-out.        Start-up Timer (OST) until the primary clock becomes
This section discusses the triggers that cause exits         ready. At that time, the OSTS bit is set and the device
from power-managed modes. The clocking subsystem             begins executing code. If the internal oscillator block is
actions are discussed in each of the power-managed           the new clock source, the HFIOFS/MFIOFS bits are set
modes (see Section 4.2 "Run Modes", Section 4.3              instead.
"Sleep Mode" and Section 4.4 "Idle Modes").
                                                             The exit delay time from Reset to the start of code
4.6.1 EXIT BY INTERRUPT                                      execution depends on both the clock sources before
                                                             and after the wake-up, and the type of oscillator, if the
Any of the available interrupt sources can cause the         new clock source is the primary clock. Exit delays are
device to exit from an Idle mode or Sleep mode to a          summarized in Table 4-4.
Run mode. To enable this functionality, an interrupt
source must be enabled by setting its enable bit in one      Code execution can begin before the primary clock
of the INTCONx or PIEx registers. The exit sequence is       becomes ready. If either the Two-Speed Start-up (see
initiated when the corresponding interrupt flag bit is set.  Section 28.4 "Two-Speed Start-up") or Fail-Safe
                                                             Clock Monitor (see Section 28.5 "Fail-Safe Clock
On all exits from Idle or Sleep modes by interrupt, code     Monitor") is enabled, the device may begin execution
execution branches to the interrupt vector if the GIE/       as soon as the Reset source has cleared. Execution is
GIEH bit (INTCON<7>) is set. Otherwise, code execu-          clocked by the INTOSC multiplexer driven by the inter-
tion continues or resumes without branching (see             nal oscillator block. Execution is clocked by the internal
Section 11.0 "Interrupts").                                  oscillator block until either the primary clock becomes
                                                             ready or a power-managed mode is entered before the
4.6.2 EXIT BY WDT TIME-OUT                                   primary clock becomes ready; the primary clock is then
                                                             shut down.
A WDT time-out will cause different actions depending
on which power-managed mode the device is in when            4.6.4  EXIT WITHOUT AN OSCILLATOR
the time-out occurs.                                                START-UP DELAY

If the device is not executing code (all Idle modes and      Certain exits from power-managed modes do not
Sleep mode), the time-out will result in an exit from the    invoke the OST at all. The two cases are:
power-managed mode (see Section 4.2 "Run
Modes" and Section 4.3 "Sleep Mode"). If the device          When in PRI_IDLE mode, where the primary
is executing code (all Run modes), the time-out will            clock source is not stopped
result in a WDT Reset (see Section 28.2 "Watchdog
Timer (WDT)").                                                When the primary clock source is not any of the
                                                                LP, XT, HS or HSPLL modes
Executing a SLEEP or CLRWDT instruction clears the
WDT timer and postscaler, loses the currently selected       In these instances, the primary clock source either
clock source (if the Fail-Safe Clock Monitor is enabled)     does not require an oscillator start-up delay, since it is
and modifies the IRCF bits in the OSCCON register (if        already running (PRI_IDLE), or normally, does not
the internal oscillator block is the device clock source).   require an oscillator start-up delay (RC, EC and INTIO
                                                             Oscillator modes). However, a fixed delay of interval,
                                                             TCSD, following the wake event is still required when
                                                             leaving Sleep and Idle modes to allow the CPU to
                                                             prepare for execution. Instruction execution resumes
                                                             on the first clock cycle following this delay.

2010 Microchip Technology Inc.  Preliminary                        DS39960B-page 67
PIC18F87K22 FAMILY

4.7 Ultra Low-Power Wake-up                             A series resistor, between RA0 and the external capac-
                                                        itor, provides overcurrent protection for the RA0/AN0/
The Ultra Low-Power Wake-up (ULPWU) on pin RA0          ULPWU pin and enables software calibration of the
allows a slow falling voltage to generate an interrupt  time-out (see Figure 4-9).
without excess current consumption.
                                                        FIGURE 4-9:    ULTRA LOW-POWER
To use this feature:                                                   WAKE-UP INITIALIZATION

1. Charge the capacitor on RA0 by configuring the       RA0/AN0/ULPWU
      RA0 pin to an output and setting it to `1'.
                                                        A timer can be used to measure the charge time and
2. Stop charging the capacitor by configuring RA0       discharge time of the capacitor. The charge time can
      as an input.                                      then be adjusted to provide the desired delay in Sleep.
                                                        This technique compensates for the affects of temper-
3. Discharge the capacitor by setting the ULPEN         ature, voltage and component accuracy. The peripheral
      and ULPSINK bits in the WDTCON register.          can also be configured as a simple Programmable
                                                        Low-Voltage Detect (LVD) or temperature sensor.
4. Configure Sleep mode.
5. Enter Sleep mode.

When the voltage on RA0 drops below VIL, the device
wakes up and executes the next instruction.

This feature provides a low-power technique for
periodically waking up the device from Sleep mode.

The time-out is dependent on the discharge time of the
RC circuit on RA0.

When the ULPWU module wakes the device from
Sleep mode, the ULPLVL bit (WDTCON<5>) is set.
Software can check this bit upon wake-up to determine
the wake-up source.

See Example 4-1 for initializing the ULPWU module.

EXAMPLE 4-1:      ULTRA LOW-POWER                       Note:  For more information, see AN879, "Using
                  WAKE-UP INITIALIZATION                       the Microchip Ultra Low-Power Wake-up
                                                               Module" (DS00879).

                    //***************************
                    //Charge the capacitor on RA0
                    //***************************
TRISAbits.TRISA0 = 0;
PORTAbits.RA0 = 1;
for(i = 0; i < 10000; i++) Nop();
                    //*****************************
                    //Stop Charging the capacitor
                    //on RA0
                    //*****************************
TRISAbits.TRISA0 = 1;
                    //*****************************
                    //Enable the Ultra Low Power
                    //Wakeup module and allow
                    //capacitor discharge
                    //*****************************
WDTCONbits.ULPEN = 1;
WDTCONbits.ULPSINK = 1;
                    //For Sleep
OSCCONbits.IDLEN = 0;
                    //Enter Sleep Mode
                    //
Sleep();
                    //for sleep, execution will
                    //resume here

DS39960B-page 68  Preliminary                                           2010 Microchip Technology Inc.
                                                  PIC18F87K22 FAMILY

TABLE 4-4:  EXIT DELAY ON WAKE-UP BY RESET FROM SLEEP MODE OR ANY IDLE MODE
            (BY CLOCK SOURCES)

Power-Managed                    Clock Source(5)  Exit Delay     Clock Ready
       Mode                                                       Status Bits

                                 LP, XT, HS

                                 HSPLL                           OSTS

PRI_IDLE mode                        EC, RC       TCSD(1)        HFIOFS
                                 HF-INTOSC(2)                    MFIOFS
                                 MF-INTOSC(2)

SEC_IDLE mode                     LF-INTOSC       TCSD(1)           None
RC_IDLE mode                                      TCSD(1)        SOSCRUN
                                      SOSC
                                 HF-INTOSC(2)                      HFIOFS
                                 MF-INTOSC(2)                     MFIOFS

Sleep mode                        LF-INTOSC          TOST(3)       None
                                                  TOST + trc(3)
                                   LP, XT, HS                     OSTS
                                      HSPLL          TCSD(1)
                                                                 HFIOFS
                                     EC, RC        TIOBST(4)     MFIOFS
                                 HF-INTOSC(2)
                                 MF-INTOSC(2)

                                 LF-INTOSC                       None

Note 1: TCSD (parameter 38, Table 31-12) is a required delay when waking from Sleep and all Idle modes, and
              runs concurrently with any other required delays (see Section 4.4 "Idle Modes").

2: Includes postscaler derived frequencies. On Reset, INTOSC defaults to HF-INTOSC at 8 MHz.

3: TOST is the Oscillator Start-up Timer (parameter 32, Table 31-12). TRC is the PLL Lock-out Timer
      (parameter F12, Table 31-7); it is also designated as TPLL.

4: Execution continues during TIOBST (parameter 39, Table 31-12), the INTOSC stabilization period.

5: The clock source is dependent upon the settings of the SCS (OSCCON<1:0>), IRCF (OSCCON<6:4>)
      and FOSC (CONFIG1H<3:0>) bits.

2010 Microchip Technology Inc.  Preliminary                     DS39960B-page 69
PIC18F87K22 FAMILY

NOTES:

DS39960B-page 70  Preliminary   2010 Microchip Technology Inc.
                                                         PIC18F87K22 FAMILY

5.0 RESET                                                5.1 RCON Register

The PIC18F87K22 family of devices differentiates         Device Reset events are tracked through the RCON
between various kinds of Reset:                          register (Register 5-1). The lower five bits of the
                                                         register indicate that a specific Reset event has
a) Power-on Reset (POR)                                  occurred. In most cases, these bits can only be set by
b) MCLR Reset during normal operation                    the event and must be cleared by the application after
c) MCLR Reset during power-managed modes                 the event.
d) Watchdog Timer (WDT) Reset (during
                                                         The state of these flag bits, taken together, can be read
      execution)                                         to indicate the type of Reset that just occurred. This is
e) Configuration Mismatch (CM) Reset                     described in more detail in Section 5.7 "Reset State
f) Brown-out Reset (BOR)                                 of Registers".
g) RESET Instruction
h) Stack Full Reset                                      The RCON register also has a control bit for setting
i) Stack Underflow Reset                                 interrupt priority (IPEN). Interrupt priority is discussed
                                                         in Section 11.0 "Interrupts".
This section discusses Resets generated by MCLR,
POR and BOR, and covers the operation of the various
start-up timers. Stack Reset events are covered in
Section 6.1.3.4 "Stack Full and Underflow Resets".
WDT Resets are covered in Section 28.2 "Watchdog
Timer (WDT)".

A simplified block diagram of the on-chip Reset circuit
is shown in Figure 5-1.

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

                      RESET Instruction
      Configuration Word Mismatch

       Stack Stack Full/Underflow Reset
      Pointer

                   External Reset

MCLR         ( )_IDLE
VDD            Sleep
                WDT

             Time-out

             VDD Rise POR Pulse
               Detect

             Brown-out
                Reset

                                                                     S

      PWRT

             32 s       PWRT 66 ms                                   R  Q  Chip_Reset

             LF-INTOSC           11-Bit Ripple Counter

2010 Microchip Technology Inc.                         Preliminary     DS39960B-page 71
PIC18F87K22 FAMILY

REGISTER 5-1: RCON: RESET CONTROL REGISTER

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

       IPEN       SBOREN  CM                      RI  TO                    PD         POR            BOR

bit 7                                                                                                 bit 0

Legend:                   W = Writable bit            U = Unimplemented bit, read as `0'
R = Readable bit          `1' = Bit is set
-n = Value at POR                                     `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

             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        CM: Configuration Mismatch Flag bit

             1 = A Configuration Mismatch Reset has not occurred
             0 = A Configuration Mismatch Reset has occurred (must be set in software after a Configuration

                   Mismatch Reset occurs)

bit 4        RI: RESET Instruction Flag bit

             1 = The RESET instruction was not executed (set by firmware only)
             0 = The RESET instruction was executed causing a device Reset (must be set in software after a

                   Brown-out 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

             1 = A Power-on Reset has not occurred (set by firmware only)
             0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

bit 0        BOR: Brown-out Reset Status bit

             1 = A Brown-out Reset has not occurred (set by firmware only)
             0 = A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs)

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

       2: Brown-out Reset is said to have occurred when BOR is `0' and POR is `1' (assuming that POR was set to
            `1' by software immediately after a Power-on Reset).

DS39960B-page 72                                  Preliminary                     2010 Microchip Technology Inc.
                                                          PIC18F87K22 FAMILY

5.2 Master Clear (MCLR)                                   In Zero-Power BOR (ZPBORMV), the module monitors
                                                          the VDD voltage and re-arms the POR at about 2V.
The MCLR pin provides a method for triggering a hard      ZPBORMV does not cause a Reset, but re-arms the
external Reset of the device. A Reset is generated by     POR.
holding the pin low. PIC18 extended microcontroller
devices have a noise filter in the MCLR Reset path        The BOR accuracy varies with its power level. The lower
which detects and ignores small pulses.                   the power setting, the less accurate the BOR trip levels
                                                          are. Therefore, the high-power BOR has the highest
The MCLR pin is not driven low by any internal Resets,    accuracy and the low-power BOR has the lowest
including the WDT.                                        accuracy. The trip levels (BVDD, parameter D005), cur-
                                                          rent consumption (Section 31.2 "DC Characteristics:
5.3 Power-on Reset (POR)                                  Power-Down and Supply Current PIC18F87K22
                                                          Family (Industrial)") and time required below BVDD
A Power-on Reset condition is generated on-chip           (TBOR, parameter 35) can all be found in Section 31.0
whenever VDD rises above a certain threshold. This        "Electrical Characteristics".
allows the device to start in the initialized state when
VDD is adequate for operation.                            FIGURE 5-2:       EXTERNAL POWER-ON
                                                                            RESET CIRCUIT (FOR
To take advantage of the POR circuitry, tie the MCLR                        SLOW VDD POWER-UP)
pin through a resistor (1 k to 10 k) to VDD. This will
eliminate external RC components usually needed to        VDD VDD
create a Power-on Reset delay. A minimum rise rate for
VDD is specified (parameter D004). For a slow rise                    D  R
time, see Figure 5-2.
                                                                         C  R1
When the device starts normal operation (exiting the                                 MCLR
Reset condition), device operating parameters (such
as voltage, frequency and temperature) must be met to                               PIC18F87K22
ensure operation. If these conditions are not met, the
device must be held in Reset until the operating          Note 1:     External Power-on Reset circuit is required
conditions are met.                                               2:  only if the VDD power-up slope is too slow.
                                                                  3:  The diode, D, helps discharge the capacitor
Power-on Reset events are captured by the POR bit                     quickly when VDD powers down.
(RCON<1>). The state of the bit is set to `0' whenever
a Power-on Reset occurs and does not change for any                   R < 40 k is recommended to make sure that
other Reset event. POR is not reset to `1' by any                     the voltage drop across R does not violate
hardware event. To capture multiple events, the user                  the device's electrical specification.
manually resets the bit to `1' in software following any
Power-on Reset.                                                       R1  1 k will limit any current flowing into
                                                                      MCLR from external capacitor, C, in the event
5.4 Brown-out Reset (BOR)                                             of MCLR/VPP pin breakdown, due to
                                                                      Electrostatic Discharge (ESD) or Electrical
The PIC18F87K22 family has four BOR power modes:                      Overstress (EOS).

High-Power BOR                                          5.4.1 DETECTING BOR
Medium Power BOR
Low-Power BOR                                           The BOR bit always resets to `0' on any Brown-out
Zero-Power BOR                                          Reset or Power-on Reset event. This makes it difficult
                                                          to determine if a Brown-out Reset event has occurred
Each power mode is selected by the BORPWR<1:0>            just by reading the state of BOR alone. A more reliable
setting (CONFIG2L<6:5>). For low, medium and high-        method is to simultaneously check the state of both
power BOR, the module monitors the VDD depending          POR and BOR. This assumes that the POR bit is reset
on the BORV<1:0> setting (CONFIG1L<3:2>). A BOR           to `1' in software immediately after any Power-on Reset
event re-arms the Power-on Reset. It also causes a        event. If BOR is `0' while POR is `1', it can be reliably
Reset, depending on which of the trip levels has been     assumed that a Brown-out Reset event has occurred.
set: 1.8V, 2V, 2.7V or 3V.
                                                          LP-BOR cannot be detected with the BOR bit in the
BOR is enabled by BOREN<1:0> (CONFIG2L<2:1>)              RCON register. LP-BOR can rearm the POR and can
and the SBOREN bit (RCON<6>). The typical current         cause a Power-on Reset.
draw (IBOR) for zero, low and medium power BOR is
200 nA, 750 nA and 3 A, respectively.

2010 Microchip Technology Inc.  Preliminary                                DS39960B-page 73
PIC18F87K22 FAMILY

5.5 Configuration Mismatch (CM)                           5.6 Power-up Timer (PWRT)

The Configuration Mismatch (CM) Reset is designed to      PIC18F87K22 family devices incorporate an on-chip
detect, and attempt to recover from, random, memory       Power-up Timer (PWRT) to help regulate the Power-on
corrupting events. These include Electrostatic Discharge  Reset process. The PWRT is enabled by setting the
(ESD) events that can cause widespread, single bit        PWRTEN bit (CONFIG2L<0>). The main function is to
changes throughout the device and result in catastrophic  ensure that the device voltage is stable before code is
failure.                                                  executed.

In PIC18F87K22 family Flash devices, the device           The Power-up Timer (PWRT) of the PIC18F87K22
Configuration registers (located in the configuration     family devices is a 13-bit counter that uses the
memory space) are continuously monitored during           LF-INTOSC source as the clock input. This yields an
operation by comparing their values to complimentary      approximate time interval of 2,048 x 32 s = 66 ms.
shadow registers. If a mismatch is detected between       While the PWRT is counting, the device is held in
the two sets of registers, a CM Reset automatically       Reset.
occurs. These events are captured by the CM bit
(RCON<5>). The state of the bit is set to `0' whenever    The power-up time delay depends on the LF-INTOSC
a CM event occurs and does not change for any other       clock and will vary from chip-to-chip due to temperature
Reset event.                                              and process variation. See DC parameter 33 for
                                                          details.
A CM Reset behaves similarly to a Master Clear Reset,
RESET instruction, WDT time-out or Stack Event Reset.     5.6.1 TIME-OUT SEQUENCE
As with all hard and power Reset events, the device
Configuration Words are reloaded from the Flash           If enabled, the PWRT time-out is invoked after the POR
Configuration Words in program memory as the device       pulse has cleared. The total time-out will vary based on
restarts.                                                 the status of the PWRT. Figure 5-3, Figure 5-4,
                                                          Figure 5-5 and Figure 5-6 all depict time-out
                                                          sequences on power-up with the Power-up Timer
                                                          enabled.

                                                          Since the time-outs occur from the POR pulse, if
                                                          MCLR is kept low long enough, the PWRT will expire.
                                                          Bringing MCLR high will begin execution immediately
                                                          (Figure 5-5). This is useful for testing purposes, or for
                                                          synchronizing more than one PIC18 device operating
                                                          in parallel.

FIGURE 5-3:              TIME-OUT SEQUENCE ON POWER-UP (MCLR TIED TO VDD, VDD RISE < TPWRT)

                    VDD  TPWRT
                 MCLR
   INTERNAL POR

PWRT TIME-OUT
INTERNAL RESET

DS39960B-page 74         Preliminary                       2010 Microchip Technology Inc.
                                                PIC18F87K22 FAMILY

FIGURE 5-4:              TIME-OUT SEQUENCE ON POWER-UP (MCLR NOT TIED TO VDD): CASE 1

                    VDD                         TPWRT
                 MCLR
    INTERNAL POR
PWRT TIME-OUT
INTERNAL RESET

FIGURE 5-5:              TIME-OUT SEQUENCE ON POWER-UP (MCLR NOT TIED TO VDD): CASE 2

                    VDD                     TPWRT
                 MCLR
   INTERNAL POR

PWRT TIME-OUT
INTERNAL RESET

FIGURE 5-6:              SLOW RISE TIME (MCLR TIED TO VDD, VDD RISE > TPWRT)

                                                       3.3V

                         VDD     0V         1V

             MCLR

   INTERNAL POR                      TPWRT
PWRT TIME-OUT
INTERNAL RESET

2010 Microchip Technology Inc.      Preliminary                              DS39960B-page 75
PIC18F87K22 FAMILY

5.7 Reset State of Registers                               different Reset situations, as indicated in Table 5-1.
                                                           These bits are used in software to determine the nature
Most registers are unaffected by a Reset. Their status     of the Reset.
is unknown on POR and unchanged by all other
Resets. The other registers are forced to a "Reset         Table 5-2 describes the Reset states for all of the
state" depending on the type of Reset that occurred.       Special Function Registers. These are categorized by
                                                           Power-on and Brown-out Resets, Master Clear and
Most registers are not affected by a WDT wake-up,          WDT Resets, and WDT wake-ups.
since this is viewed as the resumption of normal
operation. Status bits from the RCON register (CM, RI,
TO, PD, POR and BOR) are set or cleared differently in

TABLE 5-1:        STATUS BITS, THEIR SIGNIFICANCE AND THE INITIALIZATION CONDITION FOR
                  RCON REGISTER

           Condition            Program                    RCON Register        STKPTR Register
                               Counter(1) CM
                                                        RI TO PD POR BOR STKFUL STKUNF

Power-on Reset                 0000h   1                1  1  1           0  0  0  0

RESET instruction              0000h   u                0  u  u           u  u  u  u

Brown-out Reset                0000h   1                1  1  1           u  0  u  u

Configuration Mismatch Reset 0000h     0                u  u  u           u  u  u  u

MCLR Reset during              0000h   u                u  1  u           u  u  u  u

power-managed Run modes

MCLR Reset during power-       0000h   u                u  1  0           u  u  u  u

managed Idle modes and

Sleep mode

MCLR Reset during full-power 0000h     u                u  u  u           u  u  u  u

execution

Stack Full Reset (STVREN = 1) 0000h    u                u  u  u           u  u  1  u

Stack Underflow Reset          0000h   u                u  u  u           u  u  u  1
(STVREN = 1)

Stack Underflow Error (not an  0000h   u                u  u  u           u  u  u  1

actual Reset, STVREN = 0)

WDT time-out during full-power 0000h   u                u  0  u           u  u  u  u

or power-managed Run modes

WDT time-out during            PC + 2  u                u  0  0           u  u  u  u

power-managed Idle or Sleep

modes

Interrupt exit from            PC + 2  u                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 bit is set, the PC is loaded with the interrupt
              vector (0008h or 0018h).

DS39960B-page 76                          Preliminary                         2010 Microchip Technology Inc.
                                                                    PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS

Register     Applicable Devices               Power-on Reset,          MCLR Resets,                  Wake-up via WDT
                                              Brown-out Reset           WDT Reset,                       or Interrupt

                                                                    RESET Instruction,
                                                                       Stack Resets,
                                                                         CM Resets

TOSU         PIC18F6XK22         PIC18F8XK22  ---0 0000             ---0 0000                        ---0 uuuu(1)
TOSH         PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000                        uuuu uuuu(1)
TOSL         PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000                        uuuu uuuu(1)
STKPTR       PIC18F6XK22         PIC18F8XK22  00-0 0000             uu-0 0000                        uu-u uuuu(1)
PCLATU       PIC18F6XK22         PIC18F8XK22  ---0 0000             ---0 0000
PCLATH       PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000                        ---u uuuu
PCL          PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000
TBLPTRU      PIC18F6XK22         PIC18F8XK22  --00 0000             --00 0000                        uuuu uuuu
TBLPTRH      PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000                            PC + 2(2)
TBLPTRL      PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000
TABLAT       PIC18F6XK22         PIC18F8XK22  0000 0000             0000 0000                        --uu uuuu
PRODH        PIC18F6XK22         PIC18F8XK22  xxxx xxxx             uuuu uuuu
PRODL        PIC18F6XK22         PIC18F8XK22  xxxx xxxx             uuuu uuuu                        uuuu uuuu
INTCON       PIC18F6XK22         PIC18F8XK22  0000 000x             0000 000u
INTCON2      PIC18F6XK22         PIC18F8XK22  1111 1111             1111 1111                        uuuu uuuu
INTCON3      PIC18F6XK22         PIC18F8XK22  1100 0000             1100 0000
INDF0        PIC18F6XK22         PIC18F8XK22                                                         uuuu uuuu
                                                   N/A                   N/A
                                                                                                     uuuu uuuu

                                                                                                     uuuu uuuu
                                                                                                     uuuu uuuu(3)
                                                                                                     uuuu uuuu(3)
                                                                                                     uuuu uuuu(3)

                                                                                                            N/A

POSTINC0     PIC18F6XK22 PIC18F8XK22          N/A                   N/A                              N/A

POSTDEC0 PIC18F6XK22 PIC18F8XK22              N/A                   N/A                              N/A

PREINC0      PIC18F6XK22 PIC18F8XK22          N/A                   N/A                              N/A

PLUSW0       PIC18F6XK22 PIC18F8XK22          N/A                   N/A                              N/A

FSR0H        PIC18F6XK22         PIC18F8XK22  ---- xxxx             ---- uuuu                        ---- uuuu
FSR0L        PIC18F6XK22         PIC18F8XK22  xxxx xxxx             uuuu uuuu                        uuuu uuuu
WREG         PIC18F6XK22         PIC18F8XK22  xxxx xxxx             uuuu uuuu                        uuuu uuuu
INDF1        PIC18F6XK22         PIC18F8XK22
                                                    N/A                  N/A                                N/A

POSTINC1     PIC18F6XK22 PIC18F8XK22          N/A                   N/A                              N/A

POSTDEC1 PIC18F6XK22 PIC18F8XK22              N/A                   N/A                              N/A

PREINC1      PIC18F6XK22 PIC18F8XK22          N/A                   N/A                              N/A

PLUSW1       PIC18F6XK22 PIC18F8XK22          N/A                   N/A                              N/A

FSR1H        PIC18F6XK22 PIC18F8XK22          ---- xxxx             ---- uuuu                        ---- uuuu
FSR1L
BSR          PIC18F6XK22 PIC18F8XK22          xxxx xxxx             uuuu uuuu                        uuuu uuuu
Legend:
             PIC18F6XK22 PIC18F8XK22          ---- 0000             ---- 0000                        ---- uuuu
Note 1:
             u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
         2:  Shaded cells indicate conditions do not apply for the designated device.

         3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         4:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
             stack.

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

             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

             See Table 5-1 for Reset value for specific condition.

2010 Microchip Technology Inc.               Preliminary                                            DS39960B-page 77
PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register          Applicable Devices  Power-on Reset,     MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset      WDT Reset,          or Interrupt

                                                       RESET Instruction,
                                                          Stack Resets,
                                                            CM Resets

INDF2        PIC18F6XK22 PIC18F8XK22  N/A              N/A                 N/A

POSTINC2     PIC18F6XK22 PIC18F8XK22  N/A              N/A                 N/A

POSTDEC2     PIC18F6XK22 PIC18F8XK22  N/A              N/A                 N/A

PREINC2      PIC18F6XK22 PIC18F8XK22  N/A              N/A                 N/A

PLUSW2       PIC18F6XK22 PIC18F8XK22  N/A              N/A                 N/A

FSR2H        PIC18F6XK22 PIC18F8XK22  ---- xxxx        - - - -uuuu         ---- uuuu

FSR2L        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

STATUS       PIC18F6XK22 PIC18F8XK22  ---x xxxx        ---u uuuu           ---u uuuu

TMR0H        PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

TMR0L        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T0CON        PIC18F6XK22 PIC18F8XK22  1111 1111        1111 1111           uuuu uuuu

SPBRGH1      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

OSCCON       PIC18F6XK22 PIC18F8XK22  0110 q000        0110 q000           uuuu quuu

IPR5         PIC18F65K22 PIC18F85K22  ---1 -111        ---1 -111           ---u -uuu

IPR5         PIC18F66K22 PIC18F86K22  1111 1111        1111 1111           uuuu uuuu
             PIC18F67K22 PIC18F87K22

WDTCON       PIC18F6XK22 PIC18F8XK22  0-x0 ---0        0-x0 ---0           u-uu ---u

RCON         PIC18F6XK22 PIC18F8XK22  0111 11qq        0uqq qquu           uuuu qquu

TMR1H        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

TMR1L        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T1CON        PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

TMR2         PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PR2          PIC18F6XK22 PIC18F8XK22  1111 1111        1111 1111           uuuu uuuu

T2CON        PIC18F6XK22 PIC18F8XK22  -000 0000        -000 0000           -uuu uuuu

SSP1BUF      PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

SSP1ADD      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SSP1STAT     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SSP1CON1     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SSP1CON2     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

ADRESH       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

ADRESL       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

ADCON0       PIC18F6XK22 PIC18F8XK22  -000 0000        -000 0000           -uuu uuuu

ADCON1       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

ADCON2       PIC18F6XK22 PIC18F8XK22  0-00 0000        0-00 0000           u-uu uuuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
Note 1:      Shaded cells indicate conditions do not apply for the designated device.
             When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         2:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
         3:  stack.
         4:
             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).

             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).
             See Table 5-1 for Reset value for specific condition.

DS39960B-page 78                      Preliminary                    2010 Microchip Technology Inc.
                                      PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register     Applicable Devices       Power-on Reset,     MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset      WDT Reset,          or Interrupt

                                                       RESET Instruction,
                                                          Stack Resets,
                                                            CM Resets

ECCP1AS      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

ECCP1DEL     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

CCPR1H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR1L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP1CON      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PIR5         PIC18F65K22 PIC18F85K22  ---0 -000        ---0 -000           ---u -uuu

PIR5         PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu
PIE5         PIC18F67K22 PIC18F87K22  ---0 0000        ---0 0000           ---u uuuu(1)

             PIC18F65K22 PIC18F85K22

PIE5         PIC18F66K22 PIC18F86K22  0000 000         0000 0000           uuuu uuuu(1)
             PIC18F67K22 PIC18F87K22

IPR4         PIC18F65K22 PIC18F85K22  --11 1111        --11 1111           --uu uuuu

IPR4         PIC18F66K22 PIC18F86K22  1111 1111        1111 1111           uuuu uuuu
PIR4         PIC18F67K22 PIC18F87K22  --00 0000        --00 0000           --uu uuuu(1)

             PIC18F65K22 PIC18F85K22

PIR4         PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu(1)
             PIC18F67K22 PIC18F87K22

PIE4         PIC18F65K22 PIC18F85K22  --00 0000        --00 0000           --uu uuuu

PIE4         PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu
             PIC18F67K22 PIC18F87K22

CVRCON       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

CMSTAT       PIC18F6XK22 PIC18F8XK22  111- ----        111- ----           uuu- ----

TMR3H        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

TMR3L        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T3CON        PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0x00           uuuu uuuu

T3GCON       PIC18F6XK22 PIC18F8XK22  0000 0x00        0000 0000           uuuu uuuu

SPBRG1       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

RCREG1       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

TXREG1       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

TXSTA1       PIC18F6XK22 PIC18F8XK22  0000 0010        0000 0010           uuuu uuuu

RCSTA1       PIC18F6XK22 PIC18F8XK22  0000 000x        0000 000x           uuuu uuuu

T1GCON       PIC18F6XK22 PIC18F8XK22  0000 0x00        0000 0x00           uuuu -uuu

IPR6         PIC18F6XK22 PIC18F8XK22  ---1 -111        ---1 -111           ---u -uuu

HLVDCON      PIC18F6XK22 PIC18F8XK22  0000 0101        0000 0101           uuuu uuuu

PSPCON       PIC18F6XK22 PIC18F8XK22  0000 ----        0000 ----           uuuu ----

PIR6         PIC18F6XK22 PIC18F8XK22  ---0 -000        ---0 -000           ---u -uuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
Note 1:      Shaded cells indicate conditions do not apply for the designated device.

         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         3:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
         4:  stack.

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

             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

             See Table 5-1 for Reset value for specific condition.

2010 Microchip Technology Inc.       Preliminary                          DS39960B-page 79
PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register          Applicable Devices  Power-on Reset,               MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset                WDT Reset,          or Interrupt

                                                                 RESET Instruction,
                                                                    Stack Resets,
                                                                      CM Resets

IPR3      PIC18F6XK22 PIC18F8XK22     1-11 1111                  1-11 1111           u-uu uuuu

PIR3      PIC18F6XK22 PIC18F8XK22     0-00 0000                  0-00 0000           u-uu uuuu

PIE3      PIC18F6XK22 PIC18F8XK22     0-00 0000                  0-00 0000           u-uu uuuu

IPR2      PIC18F6XK22 PIC18F8XK22     1-11 1111                  1-11 1111           u-uu uuuu

PIR2      PIC18F6XK22 PIC18F8XK22     0-00 0000                  0-00 0000           u-uu uuuu

PIE2      PIC18F6XK22 PIC18F8XK22     0-00 0000                  0-00 0000           u-uu uuuu

IPR1      PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

PIR1      PIC18F6XK22 PIC18F8XK22     0000 0000                  0000 0000           uuuu uuuu

PIE1      PIC18F6XK22 PIC18F8XK22     0000 0000                  0000 0000           uuuu uuuu

PSTR1CON PIC18F6XK22 PIC18F8XK22      00-0 0001                  00-0 0001           uu-u uuuu

OSCTUNE   PIC18F6XK22 PIC18F8XK22     0000 0000                  0000 0000           uuuu uuuu

TRISJ     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

TRISH     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

TRISG     PIC18F6XK22 PIC18F8XK22     ---1 1111                  ---1 1111           ---u uuuu

TRISF     PIC18F6XK22 PIC18F8XK22     1111 111-                  1111 111-           ---u uuuu

TRISE     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

TRISD     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

TRISC     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

TRISB     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

TRISA     PIC18F6XK22 PIC18F8XK22     1111 1111                  1111 1111           uuuu uuuu

LATJ      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

LATH      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

LATG      PIC18F6XK22 PIC18F8XK22     ---x xxxx                  ---u uuuu           ---u uuuu

LATF      PIC18F6XK22 PIC18F8XK22     xxxx xxx-                  uuuu uuu-           uuuu uuu-

LATE      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

LATD      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

LATC      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

LATB      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

LATA      PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  uuuu uuuu           uuuu uuuu

PORTJ     PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  xxxx xxxx           uuuu uuuu

PORTH     PIC18F6XK22 PIC18F8XK22     0000 0000                  0000 0000           uuuu uuuu

PORTG     PIC18F6XK22 PIC18F8XK22     --x0 000x                  --x0 000x           --uu uuuu

PORTF     PIC18F6XK22 PIC18F8XK22     0000 000-                  0000 000-           uuuu uuu-

PORTE     PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  xxxx xxxx           uuuu uuuu

PORTD     PIC18F6XK22 PIC18F8XK22     xxxx xxxx                  xxxx xxxx           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:  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.

       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: One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

       4: See Table 5-1 for Reset value for specific condition.

DS39960B-page 80                      Preliminary                            2010 Microchip Technology Inc.
                                      PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register     Applicable Devices       Power-on Reset,     MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset      WDT Reset,          or Interrupt

                                                       RESET Instruction,
                                                          Stack Resets,
                                                            CM Resets

PORTC        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

PORTB        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

PORTA        PIC18F6XK22 PIC18F8XK22  xx0x 0000        uu0u 0000           uuuu uuuu

EECON1       PIC18F6XK22 PIC18F8XK22  xx-0 x000        uu-0 u000           uu-u uuuu

EECON2       PIC18F6XK22 PIC18F8XK22  ---- ----        ---- ----           ---- ----

TMR5H        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

TMR5L        PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T5CON        PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

T5GCON       PIC18F6XK22 PIC18F8XK22  0000 0x00        uuuu uuuu           uuuu uuuu

CCPR4H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR4L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP4CON      PIC18F6XK22 PIC18F8XK22  --00 0000        --00 0000           --uu uuuu

CCPR5H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR5L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP5CON      PIC18F6XK22 PIC18F8XK22  --00 0000        --00 0000           --uu uuuu

CCPR6H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR6L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP6CON      PIC18F6XK22 PIC18F8XK22  --00 0000        --00 0000           --uu uuuu

CCPR7H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR7L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP7CON      PIC18F6XK22 PIC18F8XK22  --00 0000        --00 0000           --uu uuuu

TMR4         PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PR4          PIC18F6XK22 PIC18F8XK22  1111 1111        1111 1111           1111 1111

T4CON        PIC18F6XK22 PIC18F8XK22  -000 0000        -000 0000           -uuu uuuu

SSP2BUF      PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

SSP2ADD      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SSP2STAT     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SSP2CON1     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SSP2CON2     PIC18F6XK22 PIC18F8XK22  0100 0000        0000 0000           uuuu uuuu

BAUDCON1 PIC18F6XK22 PIC18F8XK22      0100 0-00        0100 0-00           uuuu u-uu

OSCCON2      PIC18F6XK22 PIC18F8XK22  -0-- 0-x0        -0-- 0-u0           -u-- u-uu

EEADRH       PIC18F6XK22 PIC18F8XK22  ---- --00        ---- --00           ---- --uu

EEADR        PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

EEDATA       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PIE6         PIC18F6XK22 PIC18F8XK22  ---0 -000        ---0 -000           ---u -uuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
Note 1:      Shaded cells indicate conditions do not apply for the designated device.

         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         3:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
         4:  stack.

             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).
             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

             See Table 5-1 for Reset value for specific condition.

2010 Microchip Technology Inc.       Preliminary                          DS39960B-page 81
PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register          Applicable Devices  Power-on Reset,     MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset      WDT Reset,          or Interrupt

                                                       RESET Instruction,
                                                          Stack Resets,
                                                            CM Resets

RTCCFG       PIC18F6XK22 PIC18F8XK22  0-00 0000        u-uu uuuu           u-uu uuuu

RTCCAL       PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

RTCVALH      PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

RTCVALL      PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

ALRMCFG      PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

ALRMRPT      PIC18F6XK22 PIC18F8XK22  0000 0000        uuuu uuuu           uuuu uuuu

ALRMVALH     PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

ALRMVALL     PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CTMUCONH PIC18F6XK22 PIC18F8XK22      0-00 0000        0-00 0000           u-uu uuuu

CTMUCONL PIC18F6XK22 PIC18F8XK22      0000 00xx        0000 00xx           uuuu uuuu

CTMUICONH PIC18F6XK22 PIC18F8XK22     0000 0000        0000 0000           uuuu uuuu

CM1CON       PIC18F6XK22 PIC18F8XK22  0001 1111        0001 1111           uuuu uuuu

PADCFG1      PIC18F6XK22 PIC18F8XK22  --0- -00-        --u- -uu-           --u- -uu-

PADCFG1      PIC18F6XK22 PIC18F8XK22  000- -00-        uuu- -uu-           uuu- -uu-

ECCP2AS      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

ECCP2DEL     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

CCPR2H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR2L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP2CON      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

ECCP3AS      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

ECCP3DEL     PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

CCPR3H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR3L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP3CON      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

CCPR8H       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR8L       PIC18F6XK22 PIC18F8XK22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP8CON      PIC18F6XK22 PIC18F8XK22  --00 0000        --00 0000           --uu uuuu

CCPR9H       PIC18F66K22 PIC18F86K22  xxxx xxxx        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

CCPR9L       PIC18F66K22 PIC18F86K22  xxxx xxxx        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

CCP9CON      PIC18F66K22 PIC18F86K22  --00 0000        --00 0000           --uu uuuu
             PIC18F67K22 PIC18F87K22

CCPR10H      PIC18F66K22 PIC18F86K22  xxxx xxxx        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

CCPR10L      PIC18F66K22 PIC18F86K22  xxxx xxxx        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
Note 1:      Shaded cells indicate conditions do not apply for the designated device.

         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         3:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
         4:  stack.

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

             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

             See Table 5-1 for Reset value for specific condition.

DS39960B-page 82                      Preliminary                  2010 Microchip Technology Inc.
                                      PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register     Applicable Devices       Power-on Reset,     MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset      WDT Reset,          or Interrupt

                                                       RESET Instruction,
                                                          Stack Resets,
                                                            CM Resets

CCP10CON     PIC18F66K22 PIC18F86K22  --00 0000        --00 0000           --uu uuuu
             PIC18F67K22 PIC18F87K22

TMR7H        PIC18F66K22 PIC18F86K22  xxxx xxxx        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

TMR7L        PIC18F66K22 PIC18F86K22  xxxx xxxx        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

T7CON        PIC18F66K22 PIC18F86K22  0000 0000        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

T7GCON       PIC18F66K22 PIC18F86K22  0000 0x00        0000 0x00           uuuu uuuu
             PIC18F67K22 PIC18F87K22

TMR6         PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PR6          PIC18F6XK22 PIC18F8XK22  1111 1111        1111 1111           uuuu uuuu

T6CON        PIC18F6XK22 PIC18F8XK22  -000 0000        -000 0000           -uuu uuuu

TMR8         PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PR8          PIC18F6XK22 PIC18F8XK22  1111 1111        1111 1111           uuuu uuuu

T8CON        PIC18F6XK22 PIC18F8XK22  -000 0000        -000 0000           -uuu uuuu

TMR10        PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu
             PIC18F67K22 PIC18F87K22

PR10         PIC18F66K22 PIC18F86K22  1111 1111        1111 1111           uuuu uuuu
             PIC18F67K22 PIC18F87K22

T10CON       PIC18F66K22 PIC18F86K22  -000 0000        -000 0000           -uuu uuuu
             PIC18F67K22 PIC18F87K22

TMR12        PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu
             PIC18F67K22 PIC18F87K22

PR12         PIC18F66K22 PIC18F86K22  1111 1111        1111 1111           uuuu uuuu
             PIC18F67K22 PIC18F87K22

T12CON       PIC18F66K22 PIC18F86K22  -000 0000        -000 0000           -uuu uuuu
             PIC18F67K22 PIC18F87K22

CM2CON       PIC18F6XK22 PIC18F8XK22  0001 1111        0001 1111           uuuu uuuu

CM3CON       PIC18F6XK22 PIC18F8XK22  0001 1111        0001 1111           uuuu uuuu

CCPTMRS0 PIC18F6XK22 PIC18F8XK22      0000 0000        uuuu uuuu           uuuu uuuu

CCPTMRS1 PIC18F6XK22 PIC18F8XK22      00-0 -000        uu-u -uuu           uu-u -uuu

CCPTMRS2     PIC18F66K22 PIC18F86K22  ---0 -000        ---u -uuu           ---u -uuu
             PIC18F67K22 PIC18F87K22

CCPTMRS2 PIC18F65K22 PIC18F85K22      ---- --00        ---- --uu           ---- --uu

REFOCON      PIC18F6XK22 PIC18F8XK22  0-00 0000        u-uu uuuu           u-uu uuuu

ODCON1       PIC18F6XK22 PIC18F8XK22  000- ---0        uuu- ---u           uuu- ---u

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
Note 1:      Shaded cells indicate conditions do not apply for the designated device.

         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         3:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
         4:  stack.

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

             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

             See Table 5-1 for Reset value for specific condition.

2010 Microchip Technology Inc.       Preliminary                          DS39960B-page 83
PIC18F87K22 FAMILY

TABLE 5-2: INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

Register          Applicable Devices  Power-on Reset,     MCLR Resets,     Wake-up via WDT
                                      Brown-out Reset      WDT Reset,          or Interrupt

                                                       RESET Instruction,
                                                          Stack Resets,
                                                            CM Resets

ODCON2       PIC18F66K22 PIC18F86K22  0000 0000        uuuu uuuu           uuuu uuuu
             PIC18F67K22 PIC18F87K22

ODCON2       PIC18F65K22 PIC18F85K22  --00 0000        --uu uuuu           --uu uuuu

ODCON3       PIC18F6XK22 PIC18F8XK22  00-- ---0        uu-- ---u           uu-- ---u

MEMCON       PIC18F6XK22 PIC18F8XK22  0-00 --00        0-00 --00           u-uu --uu

ANCON0       PIC18F6XK22 PIC18F8XK22  1111 1111        uuuu uuuu           uuuu uuuu

ANCON1       PIC18F6XK22 PIC18F8XK22  1111 1111        uuuu uuuu           uuuu uuuu

ANCON2       PIC18F6XK22 PIC18F8XK22  1111 1111        uuuu uuuu           uuuu uuuu

RCSTA2       PIC18F6XK22 PIC18F8XK22  0000 000x        0000 000x           uuuu uuuu

TXSTA2       PIC18F6XK22 PIC18F8XK22  0000 0010        0000 0010           uuuu uuuu

BAUDCON2 PIC18F6XK22 PIC18F8XK22      0100 0-00        0100 0-00           uuuu u-uu

SPBRGH2      PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

SPBRG2       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

RCREG2       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

TXREG2       PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PSTR2CON PIC18F6XK22 PIC18F8XK22      00-0 0001        00-0 0001           uu-u uuuu

PSTR3CON PIC18F6XK22 PIC18F8XK22      00-0 0001        00-0 0001           uu-u uuuu

PMD0         PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PMD1         PIC18F6XK22 PIC18F8XK22  0000 0000        0000 0000           uuuu uuuu

PMD2         PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu
             PIC18F67K22 PIC18F87K22

PMD2         PIC18F65K22 PIC18F85K22  -0-0 0000        -0-0 0000           -u-u uuuu

PMD3         PIC18F66K22 PIC18F86K22  0000 0000        0000 0000           uuuu uuuu
             PIC18F67K22 PIC18F87K22

PMD3         PIC18F65K22 PIC18F85K22  --00 000-        --00 000-           --uu uuu-

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
Note 1:      Shaded cells indicate conditions do not apply for the designated device.

         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are
         3:  updated with the current value of the PC. The STKPTR is modified to point to the next location in the hardware
         4:  stack.

             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).
             One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).

             See Table 5-1 for Reset value for specific condition.

DS39960B-page 84                      Preliminary                  2010 Microchip Technology Inc.
                                                       PIC18F87K22 FAMILY

6.0 MEMORY ORGANIZATION                                The data EEPROM, for practical purposes, can be
                                                       regarded as a peripheral device because it is
PIC18F87K22 family devices have these types of         addressed and accessed through a set of control
memory:                                                registers.

Program Memory                                       Additional detailed information on the operation of the
Data RAM                                             Flash program memory is provided in Section 7.0
Data EEPROM                                          "Flash Program Memory". The data EEPROM is
                                                       discussed separately in Section 9.0 "Data EEPROM
As Harvard architecture devices, the data and program  Memory".
memories use separate busses. This enables
concurrent access of the two memory spaces.

FIGURE 6-1:    MEMORY MAPS FOR PIC18F87K22 FAMILY DEVICES

                                 PC<20:0>              21

CALL, CALLW, RCALL,

RETURN, RETFIE, RETLW,

ADDULNK, SUBULNK                 Stack Level 1

                                 

                                 Stack Level 31

PIC18FX5K22                      PIC18FX6K22               PIC18FX7K22  000000h

    On-Chip                          On-Chip                   On-Chip
    Memory                           Memory                    Memory

                                                                        007FFFh

                                                                        00FFFFh

                                                                                                 01FFFFh                                        User Memory Space

Unimplemented                    Unimplemented             Unimplemented
  Read as `0'                      Read as `0'               Read as `0'

Note:                                                                                                                                  1FFFFFh
             Sizes of memory areas are not to scale. Sizes of program memory areas are enhanced to show detail.

2010 Microchip Technology Inc.    Preliminary                          DS39960B-page 85
PIC18F87K22 FAMILY

6.1 Program Memory Organization                               FIGURE 6-2:            HARD VECTOR FOR
                                                                                     PIC18F87K22 FAMILY
PIC18 microcontrollers implement a 21-bit program                                    DEVICES
counter that is capable of addressing a 2-Mbyte
program memory space. Accessing a location between                     Reset Vector    0000h
the upper boundary of the physically implemented
memory and the 2-Mbyte address will return all `0's (a        High-Priority Interrupt Vector 0008h
NOP instruction).
                                                              Low-Priority Interrupt Vector 0018h
The entire PIC18F87K22 family offers a range of
on-chip Flash program memory sizes, from 32 Kbytes                           On-Chip
(up to 16,384 single-word instructions) to 128 Kbytes                  Program Memory
(65,536 single-word instructions).
                                                                           Read `0'
PIC18F65K22 and PIC18F85K22 32 Kbytes of
   Flash memory, storing up to 16,384 single-word                                      1FFFFFh
   instructions
                                                              Legend:  (Top of Memory) represents upper boundary
PIC18F66K22 and PIC18F86K22 64 Kbytes of                           of on-chip program memory space (see
   Flash memory, storing up to 32,768 single-word                      Figure 6-1 for device-specific values).
   instructions                                                        Shaded area represents unimplemented
                                                                       memory. Areas are not shown to scale.
PIC18F67K22 and PIC18F87K22 128 Kbytes of
   Flash memory, storing up to 65,536 single-word
   instructions

The program memory maps for individual family
members are shown in Figure 6-1.

6.1.1 HARD MEMORY VECTORS

All PIC18 devices have a total of three hard-coded
return vectors in their program memory space. The
Reset vector address is the default value to which the
program counter returns on all device Resets. It is
located at 0000h.

PIC18 devices also have two interrupt vector
addresses for handling high-priority and low-priority
interrupts. The high-priority interrupt vector is located at
0008h and the low-priority interrupt vector is at 0018h.
The locations of these vectors are shown, in relation to
the program memory map, in Figure 6-2.

DS39960B-page 86  Preliminary                                                         2010 Microchip Technology Inc.
                                                            PIC18F87K22 FAMILY

6.1.2 PROGRAM COUNTER                                       The stack operates as a 31-word by 21-bit RAM and a
                                                            5-bit Stack Pointer, STKPTR. The stack space is not
The Program Counter (PC) specifies the address of the       part of either program or data space. The Stack Pointer
instruction to fetch for execution. The PC is 21 bits wide  is readable and writable and the address on the top of
and contained in three separate 8-bit registers.            the stack is readable and writable through the
                                                            Top-of-Stack Special Function Registers. Data can also
The low byte, known as the PCL register, is both            be pushed to, or popped from, the stack using these
readable and writable. The high byte, or PCH register,      registers.
contains the PC<15:8> bits and is not directly readable
or writable. Updates to the PCH register are performed      A CALL type instruction causes a push onto the stack.
through the PCLATH register. The upper byte is called       The Stack Pointer is first incremented and the location
PCU. This register contains the PC<20:16> bits; it is       pointed to by the Stack Pointer is written with the
also not directly readable or writable. Updates to the      contents of the PC (already pointing to the instruction
PCU register are performed through the PCLATU               following the CALL). A RETURN type instruction causes
register.                                                   a pop from the stack. The contents of the location
                                                            pointed to by the STKPTR are transferred to the PC
The contents of PCLATH and PCLATU are transferred           and then the Stack Pointer is decremented.
to the program counter by any operation that writes
PCL. Similarly, the upper two bytes of the program          The Stack Pointer is initialized to `00000' after all
counter are transferred to PCLATH and PCLATU by an          Resets. There is no RAM associated with the location
operation that reads PCL. This is useful for computed       corresponding to a Stack Pointer value of `00000'; this
offsets to the PC (see Section 6.1.5.1 "Computed            is only a Reset value. Status bits indicate if the stack is
GOTO").                                                     full, has overflowed or has underflowed.

The PC addresses bytes in the program memory. To            6.1.3.1 Top-of-Stack Access
prevent the PC from becoming misaligned with word
instructions, the Least Significant bit of PCL is fixed to  Only the top of the return address stack (TOS) is
a value of `0'. The PC increments by two to address         readable and writable. A set of three registers,
sequential instructions in the program memory.              TOSU:TOSH:TOSL, holds the contents of the stack
                                                            location pointed to by the STKPTR register
The CALL, RCALL, GOTO and program branch                    (Figure 6-3). This allows users to implement a software
instructions write to the program counter directly. For     stack, if necessary. After a CALL, RCALL or interrupt (or
these instructions, the contents of PCLATH and              ADDULNK and SUBULNK instructions, if the extended
PCLATU are not transferred to the program counter.          instruction set is enabled), the software can read the
                                                            pushed value by reading the TOSU:TOSH:TOSL regis-
6.1.3 RETURN ADDRESS STACK                                  ters. These values can be placed on a user-defined
                                                            software stack. At return time, the software can return
The return address stack enables execution of any           these values to TOSU:TOSH:TOSL and do a return.
combination of up to 31 program calls and interrupts.
The PC is pushed onto the stack when a CALL or              While accessing the stack, users must disable the
RCALL instruction is executed or an interrupt is            global interrupt enable bits to prevent inadvertent stack
Acknowledged. The PC value is pulled off the stack on       corruption.
a RETURN, RETLW or a RETFIE instruction. The value
also is pulled off the stack on ADDULNK and SUBULNK
instructions, if the extended instruction set is enabled.
PCLATU and PCLATH are not affected by any of the
RETURN or CALL instructions.

FIGURE 6-3:  RETURN ADDRESS STACK AND ASSOCIATED REGISTERS

             Top-of-Stack Registers  Return Address Stack <20:0>            Stack Pointer
             TOSU TOSH TOSL
              00h 1Ah 34h                                           11111   STKPTR<4:0>
                                                                    11110        00010
                                                                    11101

                                 Top-of-Stack               001A34h  00011
                                                            000D58h  00010
                                                                     00001
                                                                     00000

2010 Microchip Technology Inc.      Preliminary                            DS39960B-page 87
PIC18F87K22 FAMILY

6.1.3.2 Return Stack Pointer (STKPTR)                     When the stack has been popped enough times to
                                                          unload the stack, the next pop will return a value of zero
The STKPTR register (Register 6-1) contains the Stack     to the PC and set the STKUNF bit, while the Stack
Pointer value, the STKFUL (Stack Full) status bit and     Pointer remains at zero. The STKUNF bit will remain
the STKUNF (Stack Underflow) status bits. The value       set until cleared by software or until a POR occurs.
of the Stack Pointer can be 0 through 31. The Stack
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
                                                                   stack conditions can be verified and
The user may read and write the Stack Pointer value.               appropriate actions can be taken. This is
This feature can be used by a Real-Time Operating                  not the same as a Reset, as the contents
System (RTOS) for return-stack maintenance.                        of the SFRs are not affected.

After the PC is pushed onto the stack 31 times (without   6.1.3.3 PUSH and POP Instructions
popping any values off the stack), the STKFUL bit is
set. The STKFUL bit is cleared by software or by a        Since the Top-of-Stack is readable and writable, the
POR.                                                      ability to push values onto the stack and pull values off
                                                          the stack, without disturbing normal program execu-
What happens when the stack becomes full depends          tion, is a desirable feature. The PIC18 instruction set
on the state of the STVREN (Stack Overflow Reset          includes two instructions, PUSH and POP, that permit
Enable) Configuration bit. (For a description of the      the TOS to be manipulated under software control.
device Configuration bits, see Section 28.1 "Configu-     TOSU, TOSH and TOSL can be modified to place data
ration Bits".) If STVREN is set (default), the 31st push  or a return address on the stack.
will push the (PC + 2) value onto the stack, set the
STKFUL bit and reset the device. The STKFUL bit will      The PUSH instruction places the current PC value onto
remain set and the Stack Pointer will be set to zero.     the stack. This increments the Stack Pointer and loads
                                                          the current PC value onto the stack.
If STVREN is cleared, the STKFUL bit will be set on the
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 the STKPTR will remain at 31.                         pushed onto the stack then becomes the TOS value.

REGISTER 6-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
                                              SP4          SP3                   SP2    SP1    SP0
STKFUL(1) STKUNF(1)       --
                                                                                                     bit 0
bit 7

Legend:                   C = Clearable bit               U = Unimplemented bit, read as `0'
R = Readable bit          W = Writable 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
bit 6    0 = Stack has not become full or overflowed
         STKUNF: Stack Underflow Flag bit(1)
bit 5    1 = Stack underflow has occurred
bit 4-0  0 = Stack underflow did not occur

         Unimplemented: Read as `0'

         SP<4:0>: Stack Pointer Location bits

Note 1: Bit 7 and bit 6 are cleared by user software or by a POR.

DS39960B-page 88                             Preliminary                                2010 Microchip Technology Inc.
                                                               PIC18F87K22 FAMILY

6.1.3.4 Stack Full and Underflow Resets                        6.1.5  LOOK-UP TABLES IN PROGRAM
                                                                      MEMORY
Device Resets on stack overflow and stack underflow
conditions are enabled by setting the STVREN bit               There may be programming situations that require the
(CONFIG4L<0>). When STVREN is set, a full or under-            creation of data structures, or look-up tables, in
flow condition 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
the appropriate STKFUL or STKUNF bit, but not cause             Computed GOTO
a device Reset. The STKFUL or STKUNF bits are                   Table Reads
cleared by the user software or a Power-on Reset.
                                                               6.1.5.1 Computed GOTO
6.1.4 FAST REGISTER STACK
                                                               A computed GOTO is accomplished by adding an offset
A Fast Register Stack is provided for the STATUS,              to the program counter. An example is shown in
WREG and BSR registers to provide a "fast return"              Example 6-2.
option for interrupts. This stack is only one level deep
and is neither readable nor writable. It is loaded with the    A look-up table can be formed with an ADDWF PCL
current value of the corresponding register when the           instruction and a group of RETLW nn instructions. The
processor vectors for an interrupt. All interrupt sources      W register is loaded with an offset into the table before
will push values into the Stack registers. The values in       executing a call to that table. The first instruction of the
the registers are then loaded back into the working            called routine is the ADDWF PCL instruction. The next
registers if the RETFIE, FAST instruction is used to           instruction executed will be one of the RETLW nn
return from the interrupt.                                     instructions that returns the value `nn' to the calling
                                                               function.
If both low and high-priority interrupts are enabled, the
Stack registers cannot be used reliably to return from         The offset value (in WREG) specifies the number of
low-priority interrupts. If a high-priority interrupt occurs   bytes that the program counter should advance and
while servicing a low-priority interrupt, the Stack            should be multiples of two (LSb = 0).
register values stored by the low-priority interrupt will
be overwritten. In these cases, users must save the key        In this method, only one data byte may be stored in
registers in software during a low-priority interrupt.         each instruction location and room on the return
                                                               address stack is required.
If interrupt priority is not used, all interrupts may use the
Fast Register Stack for returns from interrupt. If no          EXAMPLE 6-2:         COMPUTED GOTO USING
interrupts are used, the Fast Register Stack can be                                 AN OFFSET VALUE
used to restore the STATUS, WREG and BSR registers             ORG    MOVF
at the end of a subroutine call. To use the Fast Register      TABLE  CALL      OFFSET, W
Stack for a subroutine call, a CALL label, FAST                       nn00h     TABLE
instruction must be executed to save the STATUS,                      ADDWF
WREG and BSR registers to the Fast Register Stack. A                  RETLW     PCL
RETURN, FAST instruction is then executed to restore                  RETLW     nnh
these registers from the Fast Register Stack.                         RETLW     nnh
                                                                      .         nnh
Example 6-1 shows a source code example that uses                     .
the Fast Register Stack during a subroutine call and                  .
return.
                                                               6.1.5.2 Table Reads
EXAMPLE 6-1:       FAST REGISTER STACK
                   CODE EXAMPLE                                A better method of storing data in program memory
CALL SUB1, FAST                                               allows two bytes of data to be stored in each instruction
                    ;STATUS, WREG, BSR                         location.
                    ;SAVED IN FAST REGISTER
                    ;STACK                                     Look-up table data may be stored two bytes per
                                                               program word while programming. The Table Pointer
SUB1               ;RESTORE VALUES SAVED                       (TBLPTR) specifies the byte address and the Table
                   ;IN FAST REGISTER STACK                     Latch (TABLAT) contains the data that is read from the
                                                               program memory. Data is transferred from program
      RETURN FAST                                              memory one byte at a time.

                                                               The table read operation is discussed further in
                                                               Section 7.1 "Table Reads and Table Writes".

2010 Microchip Technology Inc.  Preliminary                                    DS39960B-page 89
PIC18F87K22 FAMILY

6.2 PIC18 Instruction Cycle                                 6.2.2 INSTRUCTION FLOW/PIPELINING

6.2.1 CLOCKING SCHEME                                       An "Instruction Cycle" consists of four Q cycles, Q1
                                                            through Q4. The instruction fetch and execute are pipe-
The microcontroller clock input, whether from an            lined in such a manner that a fetch takes one instruction
internal or external source, is internally divided by four  cycle, while the decode and execute take another
to generate four non-overlapping quadrature clocks          instruction cycle. However, due to the pipelining, each
(Q1, Q2, Q3 and Q4). Internally, the program counter is     instruction effectively executes in one cycle. If an
incremented on every Q1, with the instruction fetched       instruction (such as GOTO) causes the program counter
from the program memory and latched into the                to change, two cycles are required to complete the
Instruction Register (IR) during Q4.                        instruction. (See Example 6-3.)

The instruction is decoded and executed during the          A fetch cycle begins with the Program Counter (PC)
following Q1 through Q4. The clocks and instruction         incrementing in Q1.
execution flow are shown in Figure 6-4.
                                                            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 6-4:       CLOCK/INSTRUCTION CYCLE

         OSC1     Q1 Q2 Q3 Q4                 Q1 Q2 Q3 Q4                 Q1 Q2 Q3 Q4                Internal
             Q1                                                                                      Phase
             Q2                     PC                        PC + 2                   PC + 4        Clock
             Q3        Execute INST (PC 2)          Execute INST (PC)       Execute INST (PC + 2)
             Q4                                      Fetch INST (PC + 2)
             PC            Fetch INST (PC)                                      Fetch INST (PC + 4)

OSC2/CLKO
  (RC mode)

EXAMPLE 6-3: INSTRUCTION PIPELINE FLOW

                   TCY0             TCY1                       TCY2       TCY3    TCY4               TCY5
                  Fetch 1        Execute 1
1. MOVLW 55h                                                Execute 2
2. MOVWF PORTB                    Fetch 2                    Fetch 3

3. BRA SUB_1                                                           Execute 3
                                                                        Fetch 4
4. BSF PORTA, BIT3 (Forced NOP)                                                    Flush (NOP)
                                                                                  Fetch SUB_1 Execute SUB_1
5. Instruction @ address 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.

DS39960B-page 90                              Preliminary                          2010 Microchip Technology Inc.
                                                             PIC18F87K22 FAMILY

6.2.3  INSTRUCTIONS IN PROGRAM                               The CALL and GOTO instructions have the absolute
       MEMORY                                                program memory address embedded into the instruc-
                                                             tion. Since instructions are always stored on word
The program memory is addressed in bytes. Instruc-           boundaries, the data contained in the instruction is a
tions are stored as two or four bytes in program             word address. The word address is written to PC<20:1>
memory. The Least Significant Byte of an instruction         which accesses the desired byte address in program
word is always stored in a program memory location           memory. Instruction #2 in Figure 6-5 shows how the
with an even address (LSB = 0). To maintain alignment        instruction, GOTO 0006h, is encoded in the program
with instruction boundaries, the PC increments in steps      memory. Program branch instructions, which encode a
of two and the LSB will always read `0' (see                 relative address offset, operate in the same manner. The
Section 6.1.2 "Program Counter").                            offset value stored in a branch instruction represents the
                                                             number of single-word instructions that the PC will be
Figure 6-5 shows an example of how instruction words         offset by. For more details on the instruction set, see
are stored in the program memory.                            Section 29.0 "Instruction Set Summary".

FIGURE 6-5:    INSTRUCTIONS IN PROGRAM MEMORY

                                                             LSB = 1     LSB = 0  Word Address
                                                                                          
                     Program Memory                                         55h
                                                                            03h      000000h
                     Byte Locations                                         00h      000002h
                                                                            23h      000004h
             Instruction 1: MOVLW       055h                 0Fh            56h      000006h
                                                                                     000008h
             Instruction 2: GOTO        0006h                EFh                     00000Ah
                                                                                     00000Ch
                                                             F0h                     00000Eh
                                                                                     000010h
             Instruction 3: MOVFF       123h, 456h           C1h                     000012h
                                                                                     000014h
                                                             F4h

6.2.4 TWO-WORD INSTRUCTIONS                                  used by the instruction sequence. If the first word is
                                                             skipped, for some reason, and the second word is
The standard PIC18 instruction set has four, two-word        executed by itself, a NOP is executed instead. This is
instructions: CALL, MOVFF, GOTO and LSFR. In all             necessary for cases when the two-word instruction is
cases, the second word of the instructions always has        preceded by a conditional instruction that changes the
`1111' as its four Most Significant bits. The other 12 bits  PC. Example 6-4 shows how this works.
are literal data, usually a data memory address.
                                                                  Note:  For information on two-word instructions in
The use of `1111' in the 4 MSbs of an instruction                        the extended instruction set, see
specifies a special form of NOP. If the instruction is                   Section 6.5 "Program Memory and the
executed in proper sequence, immediately after the                       Extended Instruction Set".
first word, the data in the second word is accessed and

EXAMPLE 6-4:   TWO-WORD INSTRUCTIONS

  CASE 1:                 Source Code
  Object 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

2010 Microchip Technology Inc.                     Preliminary                                 DS39960B-page 91
PIC18F87K22 FAMILY

6.3 Data Memory Organization                             6.3.1 BANK SELECT REGISTER

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 it possible for rapid access
       extended instruction set is enabled. See          to any address. Ideally, this means that an entire
       Section 6.6 "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
12-bit address, allowing up to 4,096 bytes of data       eight-bit, low-order address and a four-bit Bank Pointer.
memory. The memory space is divided into as many as
16 banks that contain 256 bytes each. PIC18FX6K22        Most instructions in the PIC18 instruction set make use
and PIC18FX7K22 devices implement all 16 complete        of the Bank Pointer, known as the Bank Select Register
banks, for a total of 4 Kbytes. PIC18FX5K22 devices      (BSR). This SFR holds the four Most Significant bits of
implement only the first eight complete banks, for a     a location's address. The instruction itself includes the
total of 2 Kbytes.                                       eight Least Significant bits. Only the four lower bits of
                                                         the BSR are implemented (BSR<3:0>). The upper four
Figure 6-6 and Figure 6-7 show the data memory           bits are unused, always read as `0' and cannot be
organization for the devices.                            written to. The BSR can be loaded directly by using the
                                                         MOVLB instruction.
The data memory contains Special Function Registers
(SFRs) and General Purpose Registers (GPRs). The         The value of the BSR indicates the bank in data
SFRs are used for control and status of the controller   memory. The eight bits in the instruction show the loca-
and peripheral functions, while GPRs are used for data   tion in the bank and can be thought of as an offset from
storage and scratchpad operations in the user's          the bank's lower boundary. The relationship between
application. Any read of an unimplemented location will  the BSR's value and the bank division in data memory
read as `0's.                                            is shown in Figure 6-7.

The instruction set and architecture allow operations    Since up to 16 registers may share the same low-order
across all banks. The entire data memory may be          address, the user must always be careful to ensure that
accessed by Direct, Indirect or Indexed Addressing       the proper bank is selected before performing a data
modes. Addressing modes are discussed later in this      read or write. For example, writing what should be
section.                                                 program data to an eight-bit address of F9h, while the
                                                         BSR is 0Fh, will end up resetting the program counter.
To ensure that commonly used registers (select SFRs
and select GPRs) can be accessed in a single cycle,      While any bank can be selected, only those banks that
PIC18 devices implement an Access Bank. This is a        are actually implemented can be read or written to.
256-byte memory space that provides fast access to       Writes to unimplemented banks are ignored, while
select SFRs and the lower portion of GPR Bank 0 with-    reads from unimplemented banks will return `0's. Even
out using the Bank Select Register. For details on the   so, the STATUS register will still be affected as if the
Access RAM, see Section 6.3.2 "Access Bank".             operation was successful. The data memory map in
                                                         Figure 6-6 indicates 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. When this instruction
                                                         executes, it ignores the BSR completely. 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.

DS39960B-page 92              Preliminary                 2010 Microchip Technology Inc.
                                                       PIC18F87K22 FAMILY

FIGURE 6-6:       DATA MEMORY MAP FOR PIC18FX5K22 AND PIC18FX7K22 DEVICES
   BSR<3:0>
          = 0000                      Data Memory Map
          = 0001
          = 0010                 00h  Access RAM       000h
          = 0011                                       05Fh
          = 0100    Bank 0                             060h  When a = 0:
          = 0101    Bank 1       FFh  GPR              0FFh        The BSR is ignored and the
          = 0110    Bank 2                                         Access Bank is used.
          = 0111    Bank 3       00h                   100h        The first 96 bytes are general
                    Bank 4                                         purpose RAM (from Bank 0).
          = 1000    Bank 5            GPR                          The second 160 bytes are
          = 1001    Bank 6                                         Special Function Registers
          = 1010    Bank 7       FFh                   1FFh        (from Bank 15).
          = 1011                                       200h
          = 1100  Bank 8         00h                         When a = 1:
          = 1101  Bank 9                                           The BSR specifies the bank
          = 1110  Bank 10             GPR                          used by the instruction.
          = 1111  Bank 11
                  Bank 12        FFh                   2FFh
                  Bank 13                              300h
                                 00h
                    Bank 14
                    Bank 15           GPR              3FFh

                                 FFh
                                 00h                   400h

                                      GPR

                                 FFh                   4FFh

                                 00h                   500h

                                      GPR

                                 FFh                   5FFh

                                 00h                   600h

                                      GPR

                                 FFh                   6FFh

                                 00h                   700h  Access Bank

                                      GPR                                             00h
                                                             Access RAM Low 5Fh
                                 FFh                   7FFh

                                 00h                   800h  Access RAM High 60h

                                      GPR(2)                 (SFRs)        FFh

                                 FFh                   8FFh
                                                       900h
                                 00h
                                                       9FFh
                                      GPR(2)           A00h

                                 FFh                   AFFh
                                                       B00h
                                 00h
                                               GPR(2)  BFFh
                                                       C00h
                                 FFh
                                                       CFFh
                                 00h                   D00h

                                               GPR(2)  DFFh
                                 FFh                   E00h

                                 00h                   EFFh
                                                       F00h
                                 FFh  GPR(2)           F5Fh
                                                       F60h
                                 00h                   FFFh
                                              GPR(2)

                                 FFh

                                 00h
                                              GPR(2)

                                 FFh  GPR(1,2)
                                 00h

                                 FFh  SFR

Note 1:           Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM. Users must
        2:        always use the complete address, or load the proper BSR value, to access these registers.

                  These addresses are unused for devices with 32 Kbytes of program memory (PIC18FX5K22). For those
                  devices, read these addresses at 00h.

2010 Microchip Technology Inc.       Preliminary            DS39960B-page 93
PIC18F87K22 FAMILY

FIGURE 6-7:       USE OF THE BANK SELECT REGISTER (DIRECT ADDRESSING)

7                 BSR(1)  0  000h Data Memory 00h                   7  From Opcode(2)  0

0 0 000 010                        Bank 0                    FFh    1 1 11 1 11 1 11 11
                                                             00h
                             100h

Bank Select(2)                     Bank 1                    FFh
                                                             00h
                             200h

                             300h  Bank 2                    FFh

                                                             00h

                                   Bank 3
                                   through
                                   Bank 13

                             E00h                            FFh
                                                             00h
                                   Bank 14
                                                             FFh
                             F00h                            00h

                             FFFh  Bank 15                   FFh

Note 1:           The Access RAM bit of the instruction can be used to force an override of the selected bank (BSR<3:0>)
         2:       to the registers of the Access Bank.

                  The MOVFF instruction embeds the entire 12-bit address in the instruction.

6.3.2 ACCESS BANK                                            however, the instruction is forced to use the Access
                                                             Bank address map. In that case, the current value of
While the use of the BSR, with an embedded 8-bit             the BSR is ignored entirely.
address, allows users to address the entire range of data
memory, it also means that the user must ensure that the     Using this "forced" addressing allows the instruction to
correct bank is selected. If not, data may be read from,     operate on a data address in a single cycle without
or written to, the wrong location. This can be disastrous    updating the BSR first. For 8-bit addresses of 60h and
if a GPR is the intended target of an operation, but an      above, this means that users can evaluate and operate
SFR is written to instead. Verifying and/or changing the     on SFRs more efficiently. The Access RAM below 60h
BSR for each read or write to data memory can become         is a good place for data values that the user might need
very inefficient.                                            to access rapidly, such as immediate computational
                                                             results or common program variables.
To streamline access for the most commonly used data
memory locations, the data memory is configured with         Access RAM also allows for faster and more code
an Access Bank, which allows users to access a               efficient context saving and switching of variables.
mapped block of memory without specifying a BSR.
The Access Bank consists of the first 96 bytes of            The mapping of the Access Bank is slightly different
memory (00h-5Fh) in Bank 0 and the last 160 bytes of         when the extended instruction set is enabled (XINST
memory (60h-FFh) in Bank 15. The lower half is known         Configuration bit = 1). This is discussed in more detail
as the "Access RAM" and is composed of GPRs. The             in Section 6.6.3 "Mapping the Access Bank in
upper half is where the device's SFRs are mapped.            Indexed Literal Offset Mode".
These two areas are mapped contiguously in the
Access Bank and can be addressed in a linear fashion         6.3.3  GENERAL PURPOSE
by an eight-bit address (Figure 6-6).                               REGISTER FILE

The Access Bank is used by core PIC18 instructions           PIC18 devices may have banked memory in the GPR
that include the Access RAM bit (the `a' parameter in        area. This is data RAM which is available for use by all
the instruction). When `a' is equal to `1', the instruction  instructions. GPRs start at the bottom of Bank 0
uses the BSR and the 8-bit address included in the           (address 000h) and grow upwards towards the bottom of
opcode for the data memory address. When `a' is `0',         the SFR area. GPRs are not initialized by a Power-on
                                                             Reset and are unchanged on all other Resets.

DS39960B-page 94                   Preliminary                          2010 Microchip Technology Inc.
                                                          PIC18F87K22 FAMILY

6.3.4 SPECIAL FUNCTION REGISTERS                          The SFRs can be classified into two sets: those
                                                          associated with the "core" device functionality (ALU,
The Special Function Registers (SFRs) are registers       Resets and interrupts) and those related to the
used by the CPU and peripheral modules for controlling    peripheral functions. The Reset and Interrupt registers
the desired operation of the device. These registers are  are described in their respective chapters, while the
implemented as static RAM. SFRs start at the top of       ALU's STATUS register is described later in this section.
data memory (FFFh) and extend downward to occupy          Registers related to the operation of the peripheral
all of Bank 15 (F00h to FFFh) and the top part of         features are described in the chapter for that peripheral.
Bank 14 (EF4h to EFFh).
                                                          The SFRs are typically distributed among the
A list of these registers is given in Table 6-1 and       peripherals whose functions they control. Unused SFR
Table 6-2.                                                locations are unimplemented and read as `0's.

TABLE 6-1: SPECIAL FUNCTION REGISTER MAP FOR PIC18F87K22 FAMILY

Addr.        Name    Addr.  Name   Addr.  Name            Addr. Name Addr.         Name   Addr.  Name

FFFh          TOSU   FDFh INDF2(1) FBFh ECCP1AS           F9Fh IPR1 F7Fh         EECON1   F5Fh RTCCFG
FFEh          TOSH   FDEh POSTINC2(1) FBEh ECCP1DEL                              EECON2   F5Eh RTCCAL
FFDh           TOSL  FDDh POSTDEC2(1) FBDh CCPR1H         F9Eh PIR1 F7Eh          TMR5H   F5Dh RTCVALH
FFCh         STKPTR  FDCh PREINC2(1) FBCh CCPR1L                                  TMR5L   F5Ch RTCVALL
FFBh         PCLATU  FDBh PLUSW2(1) FBBh CCP1CON          F9Dh PIE1 F7Dh          T5CON   F5Bh ALRMCFG
                                                                                 T5GCON   F5Ah ALRMRPT
                                                          F9Ch PSTR1CON F7Ch     CCPR4H   F59h ALRMVALH
                                                                                 CCPR4L   F58h ALRMVALL
FFAh PCLATH FDAh FSR2H FBAh PIR5                          F9Bh OSCTUNE   F7Bh   CCP4CON   F57h CTMUCONH
                                                          F9Ah TRISJ(3)  F7Ah    CCPR5H   F56h CTMUCONL
FF9h         PCL     FD9h FSR2L FB9h PIE5                 F99h TRISH(3)  F79h    CCPR5L   F55h CTMUICONH
                                                                                CCP5CON   F54h CM1CON
FF8h TBLPTRU FD8h STATUS FB8h IPR4                        F98h TRISG F78h        CCPR6H   F53h PADCFG1
                                                                                 CCPR6L   F52h ECCP2AS
FF7h TBLPTRH FD7h TMR0H FB7h PIR4                         F97h TRISF F77h       CCP6CON   F51h ECCP2DEL
                                                                                 CCPR7H   F50h CCPR2H
FF6h TBLPTRL FD6h TMR0L FB6h PIE4                         F96h TRISE F76h        CCPR7L   F4Fh CCPR2L
                                                                                CCP7CON   F4Eh CCP2CON
FF5h TABLAT FD5h T0CON FB5h CVRCON                        F95h TRISD F75h                 F4Dh ECCP3AS
                                                                                   TMR4   F4Ch ECCP3DEL
FF4h PRODH FD4h SPBRGH1 FB4h CMSTAT                       F94h TRISC F74h           PR4   F4Bh CCPR3H
                                                                                  T4CON   F4Ah CCPR3L
FF3h PRODL FD3h OSCCON FB3h TMR3H                         F93h TRISB F73h       SSP2BUF   F49h CCP3CON
                                                                                SSP2ADD   F48h CCPR8H
FF2h INTCON FD2h IPR5              FB2h TMR3L             F92h  TRISA    F72h  SSP2STAT   F47h CCPR8L
                                                          F91h  LATJ(3)  F71h  SSP2CON1   F46h CCP8CON
FF1h INTCON2 FD1h WDTCON FB1h T3CON                       F90h  LATH(3)  F70h  SSP2CON2   F45h CCPR9H(4)
                                                                               BAUDCON1   F44h CCPR9L(4)
FF0h INTCON3 FD0h           RCON   FB0h   T3GCON          F8Fh LATG F6Fh       OSCCON2    F43h CCP9CON(4)
FEFh INDF0(1) FCFh          TMR1H  FAFh   SPBRG1                                 EEADRH   F42h CCPR10H(4)
FEEh POSTINC0(1) FCEh       TMR1L  FAEh   RCREG1          F8Eh LATF F6Eh          EEADR   F41h CCPR10L(4)
FEDh POSTDEC0(1) FCDh       T1CON  FADh   TXREG1                                 EEDATA   F40h CCP10CON(4)
FECh PREINC0(1) FCCh         TMR2  FACh   TXSTA1          F8Dh LATE F6Dh            PIE6
FEBh PLUSW0(1) FCBh                FABh   RCSTA1
                              PR2                         F8Ch LATD F6Ch

                                                          F8Bh LATC F6Bh

FEAh FSR0H FCAh T2CON FAAh T1GCON                         F8Ah LATB F6Ah

FE9h FSR0L FC9h SSP1BUF FA9h IPR6                         F89h LATA      F69h
                                                          F88h PORTJ(3)  F68h
FE8h WREG FC8h SSP1ADD             FA8h   HLVDCON         F87h PORTH(3)  F67h
FE7h INDF1(1) FC7h SSP1STAT        FA7h   PSPCON
FE6h POSTINC1(1) FC6h SSP1CON1     FA6h                   F86h PORTG F66h
FE5h POSTDEC1(1) FC5h SSP1CON2     FA5h      PIR6
FE4h PREINC1(1) FC4h ADRESH        FA4h      IPR3         F85h PORTF F65h
FE3h PLUSW1(1) FC3h ADRESL         FA3h      PIR3
                                              PIE3        F84h PORTE F64h

                                                          F83h PORTD F63h

FE2h FSR1H FC2h ADCON0 FA2h IPR2                          F82h PORTC F62h

FE1h FSR1L FC1h ADCON1 FA1h PIR2                          F81h PORTB F61h

FE0h         BSR     FC0h ADCON2 FA0h PIE2                F80h PORTA F60h

Note 1:      This is not a physical register.
         2:  Unimplemented registers are read as `0'.
         3:  This register is not available on 64-pin devices (PIC18F6XK22).

         4:  This register is not available on devices with a program memory of 32 Kbytes (PIC18FX5K22).

         5:  Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM. To access these registers,
             users must always load the proper BSR value.

2010 Microchip Technology Inc.           Preliminary                                     DS39960B-page 95
PIC18F87K22 FAMILY

TABLE 6-1: SPECIAL FUNCTION REGISTER MAP FOR PIC18F87K22 FAMILY (CONTINUED)

Addr.     Name     Addr.      Name           Addr.      Name        Addr.  Name    Addr.            Name                    Addr.   Name

F3Fh    TMR7H(4)   F32h        TMR12(4)      F25h ANCON0            F18h   PMD1
F3Eh    TMR7L(4)   F31h         PR12(4)      F24h ANCON1            F17h   PMD2
F3Dh    T7CON(4)   F30h       T12CON(4)      F23h ANCON2            F16h   PMD3
F3Ch   T7GCON(4)                             F22h RCSTA2
F3Bh               F2Fh CM2CON               F21h TXSTA2
F3Ah      TMR6                               F20h BAUDCON2
F39H               F2Eh CM3CON               F1Fh SPBRGH2
F38h       PR6                               F1Eh SPBRG2
F37h               F2Dh CCPTMRS0             F1Dh RCREG2
F36h     T6CON                               F1Ch TXREG2
F35h               F2Ch CCPTMRS1             F1Bh PSTR2CON
F34h      TMR8                               F1Ah PSTR3CON
F33h               F2Bh CCPTMRS2             F19h PMD0
           PR8
                   F2Ah REFOCON
         T8CON
        TMR10(4)   F29H ODCON1
         PR10(4)
       T10CON(4)   F28h ODCON2

                   F27h ODCON3

                   F26h MEMCON

Note 1:       This is not a physical register.
         2:   Unimplemented registers are read as `0'.
         3:   This register is not available on 64-pin devices (PIC18F6XK22).

         4:   This register is not available on devices with a program memory of 32 Kbytes (PIC18FX5K22).

         5:   Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM. To access these registers,
              users must always load the proper BSR value.

TABLE 6-2: PIC18F87K22 FAMILY REGISTER FILE SUMMARY

Address File Name  Bit 7             Bit 6          Bit 5     Bit 4        Bit 3            Bit 2   Bit 1                   Bit 0    Value on
                                                                                                                                    POR, BOR
FFFh TOSU                 --         --             --      Top-of-Stack Upper Byte (TOS<20:16>)
                                                                                                                                    ---0 0000
FFEh TOSH          Top-of-Stack High Byte (TOS<15:8>)                                                                               0000 0000
                                                                                                                                    0000 0000
FFDh TOSL          Top-of-Stack Low Byte (TOS<7:0>)                                                                                 uu-0 0000
                                                                                                                                    ---0 0000
FFCh STKPTR        STKFUL STKUNF                    --      Return Stack Pointer                                                    0000 0000
                                                                                                                                    0000 0000
FFBh PCLATU               --         --             --      Holding Register for PC<20:16>                                          --00 0000
                                                                                                                                    0000 0000
FFAh PCLATH        Holding Register for PC<15:8>                                                                                    0000 0000
                                                                                                                                    0000 0000
FF9h PCL           PC Low Byte (PC<7:0>)                                                                                            xxxx xxxx
                                                                                                                                    xxxx xxxx
FF8h TBLPTRU              --         --             bit 21 Program Memory Table Pointer Upper Byte (TBLPTR<20:16>)                  0000 000x
                                                                                                                                    1111 1111
FF7h TBLPTRH       Program Memory Table Pointer High Byte (TBLPTR<15:8>)                                                            1100 0000
                                                                                                                                    ---- ----
FF6h TBLPTRL       Program Memory Table Pointer Low Byte (TBLPTR<7:0>)                                                              ---- ----
                                                                                                                                    ---- ----
FF5h TABLAT        Program Memory Table Latch                                                                                       ---- ----

FF4h PRODH         Product Register High Byte                                                                                       ---- ----

FF3h PRODL         Product Register Low Byte                                                                                        ---- xxxx
                                                                                                                                    xxxx xxxx
FF2h INTCON        GIE/GIEH PEIE/GIEL TMR0IE                  INT0IE       RBIE    TMR0IF           INT0IF                  RBIF    xxxx xxxx
                                                                                                                                    ---- ----
FF1h INTCON2       RBPU       INTEDG0 INTEDG1 INTEDG2 INTEDG3 TMR0IP                                INT3IP                  RBIP

FF0h INTCON3       INT2IP            INT1IP         INT3IE    INT2IE       INT1IE           INT3IF  INT2IF                  INT1IF

FEFh INDF0         Uses contents of FSR0 to address data memory value of FSR0 not changed (not a physical register)

FEEh POSTINC0 Uses contents of FSR0 to address data memory value of FSR0 post-incremented (not a physical register)

FEDh POSTDEC0 Uses contents of FSR0 to address data memory value of FSR0 post-decremented (not a physical register)

FECh PREINC0       Uses contents of FSR0 to address data memory value of FSR0 pre-incremented (not a physical register)

FEBh PLUSW0        Uses contents of FSR0 to address data memory value of FSR0 pre-incremented (not a physical register) value
                   of FSR0 offset by W

FEAh FSR0H                --         --             --        --        Indirect Data Memory Address Pointer 0 High

FE9h FSR0L         Indirect Data Memory Address Pointer 0 Low Byte

FE8h WREG          Working Register

FE7h INDF1         Uses contents of FSR1 to address data memory value of FSR1 not changed (not a physical register)

Note 1:       The bit is available when Master Clear is disabled (MCLRE = 0). When MCLRE is set, the bit is unimplemented.

          2:  Unimplemented on 64-pin devices (PIC18F6XK22).
          3:  Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).

DS39960B-page 96                                            Preliminary                              2010 Microchip Technology Inc.
                                                                        PIC18F87K22 FAMILY

TABLE 6-2: PIC18F87K22 FAMILY REGISTER FILE SUMMARY (CONTINUED)

Address File Name      Bit 7            Bit 6         Bit 5      Bit 4    Bit 3     Bit 2      Bit 1                        Bit 0       Value on
                                                                                                                                       POR, BOR

FE6h POSTINC1 Uses contents of FSR1 to address data memory value of FSR1 post-incremented (not a physical register)                  ---- ----
                                                                                                                                       ---- ----
FE5h POSTDEC1 Uses contents of FSR1 to address data memory value of FSR1 post-decremented (not a physical register)                  ---- ----

FE4h PREINC1           Uses contents of FSR1 to address data memory value of FSR1 pre-incremented (not a physical register)          ---- ----

FE3h PLUSW1            Uses contents of FSR1 to address data memory value of FSR1 pre-incremented (not a physical register) value  ---- xxxx
                       of FSR1 offset by W                                                                                             xxxx xxxx
                                                                                                                                       ---- 0000
FE2h FSR1H             --               --            --         --      Indirect Data Memory Address Pointer 1 High                   ---- ----
                                                                                                                                       ---- ----
FE1h FSR1L             Indirect Data Memory Address Pointer 1 Low Byte                                                                 ---- ----
                                                                                                                                       ---- ----
FE0h BSR               --               --            --         --      Bank Select Register
                                                                                                                                       ---- ----
FDFh INDF2             Uses contents of FSR2 to address data memory value of FSR2 not changed (not a physical register)
                                                                                                                                       ---- xxxx
FDEh POSTINC2 Uses contents of FSR2 to address data memory value of FSR2 post-incremented (not a physical register)                  xxxx xxxx
                                                                                                                                       ---x xxxx
FDDh POSTDEC2 Uses contents of FSR2 to address data memory value of FSR2 post-decremented (not a physical register)                  0000 0000
                                                                                                                                       xxxx xxxx
FDCh PREINC2           Uses contents of FSR2 to address data memory value of FSR2 pre-incremented (not a physical register)          1111 1111
                                                                                                                                       0000 0000
FDBh PLUSW2            Uses contents of FSR2 to address data memory value of FSR2 pre-incremented (not a physical register) value  0110 q000
                       of FSR2 offset by W                                                                                             1000 0000
                                                                                                                                       0-x0 -000
FDAh FSR2H             --               --            --         --      Indirect Data Memory Address Pointer 2 High                   0111 11qq
                                                                                                                                       xxxx xxxx
FD9h FSR2L             Indirect Data Memory Address Pointer 2 Low Byte                                                                 xxxx xxxx
                                                                                                                                       0000 0000
FD8h STATUS            --               --            --         N        OV        Z          DC                              C       0000 0000
                                                                                                                                       1111 1111
FD7h TMR0H             Timer0 Register High Byte                                                                                       -000 0000
                                                                                                                                       xxxx xxxx
FD6h TMR0L             Timer0 Register Low Byte                                                                                        0000 0000
                                                                                                                                       0000 0000
FD5h T0CON             TMR0ON           T08BIT        T0CS       T0SE     PSA       TOPS2      TOPS1                        TOPS0      0000 0000
                                                                                                                                       0000 0000
FD4h SPBRGH1 USART1 Baud Rate Generator High Byte                                                                                      xxxx xxxx
                                                                                                                                       xxxx xxxx
FD3h          OSCCON   IDLEN            IRCF2         IRCF1       IRCF0    OSTS     HFIOFS      SCS1                         SCS0      -000 0000
FD2h          IPR5                                               TMR8IP  TMR7IP(3)  TMR6IP     TMR5IP                       TMR4IP     0000 0000
                       TMR7GIP(3) TMR12IP(3) TMR10IP(3)                                                                                0-00 0000
                                                                                                                                       0000 0000
FD1h WDTCON            REGSLP           --            ULPLVL SRETEN       --        ULPEN      ULPSINK SWDTEN                          0000 0000
                                                                                                                                       xxxx xxxx
FD0h RCON              IPEN             SBOREN        CM         RI       TO        PD         POR                          BOR        xxxx xxxx
                                                                                                                                       0000 0000
FCFh TMR1H             Timer1 Register High Byte                                                                                       0000 0000
                                                                                                                                       1000 0000
FCEh TMR1L             Timer1 Register Low Byte                                                                                        1111 1111
                                                                                                                                       0000 0000
FCDh T1CON             TMR1CS1 TMR1CS0 T1CKPS1 T1CKPS0 SOSCEN T1SYNC                           RD16                         TMR1ON

FCCh TMR2              Timer2 Register

FCBh PR2               Timer2 Period Register

FCAh T2CON             --          T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0

FC9h          SSP1BUF  MSSP Receive Buffer/Transmit Register
FC8h          SSP1ADD  MSSP Address Register in I2CTM Slave Mode. SSP1 Baud Rate Reload Register in I2C Master Mode.

FC7h SSP1STAT          SMP              CKE           D/A        P        S         R/W        UA                              BF

FC6h SSP1CON1          WCOL             SSPOV         SSPEN      CKP     SSPM3      SSPM2      SSPM1                        SSPM0

FC5h SSP1CON2          GCEN             ACKSTAT ACKDT            ACKEN   RCEN       PEN        RSEN                         SEN

FC4h ADRESH            A/D Result Register High Byte

FC3h ADRESL            A/D Result Register Low Byte

FC2h ADCON0            --               CHS4          CHS3       CHS2    CHS1       CHS0       GO/DONE                      ADON

FC1h ADCON1            TRIGSEL1 TRIGSEL0 VCFG1                   VCFG0   VNCFG      CHSN2      CHSN1                        CHSN0

FC0h ADCON2            ADFM             --            ACQT2      ACQT1   ACQT0      ADCS2      ADCS1                        ADCS0

FBFh ECCP1AS           ECCP1ASE ECCP1AS2 ECCP1AS1 ECCP1AS0 PSS1AC1 PSS1AC0 PSS1BD1 PSS1BD0

FBEh ECCP1DEL          P1RSEN           P1DC6         P1DC5      P1DC4   P1DC3      P1DC2      P1DC1                        P1DC0

FBDh CCPR1H            Capture/Compare/PWM Register1 High Byte

FBCh CCPR1L            Capture/Compare/PWM Register1 Low Byte

FBBh          CCP1CON      P1M1       P1M0             DC1B1     DC1B0   CCP1M3     CCP1M2     CCP1M1                       CCP1M0
FBAh          PIR5     TMR7GIF(3)  TMR12IF(3)        TMR10IF(3)  TMR8IF  TMR7IF(3)  TMR6IF     TMR5IF                       TMR4IF
FB9h          PIE5     TMR7GIE(3)  TMR12IE(3)         TMR10IE    TMR8IE  TMR7IE(3)  TMR6IE     TMR5IE                       TMR4IE
FB8h          IPR4     CCP10IP(3)  CCP9IP(3)                     CCP7IP   CCP6IP    CCP5IP     CCP4IP                       CCP3IP
FB7h          PIR4     CCP10IF(3)  CCP9IF(3)           CCP8IP    CCP7IF   CCP6IF    CCP5IF     CCP4IF                       CCP3IF
                                                       CCP8IF

Note 1:       The bit is available when Master Clear is disabled (MCLRE = 0). When MCLRE is set, the bit is unimplemented.
          2:  Unimplemented on 64-pin devices (PIC18F6XK22).

          3:  Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).

2010 Microchip Technology Inc.                              Preliminary                                                    DS39960B-page 97
PIC18F87K22 FAMILY

TABLE 6-2: PIC18F87K22 FAMILY REGISTER FILE SUMMARY (CONTINUED)

Address File Name       Bit 7    Bit 6              Bit 5   Bit 4        Bit 3  Bit 2   Bit 1                                  Bit 0   Value on
                                                                                                                                      POR, BOR
FB6h PIE4               CCP10IE(3) CCP9IE(3) CCP8IE         CCP7IE   CCP6IE     CCP5IE  CCP4IE                               CCP3IE
                                                                                                                              CVR0    0000 0000
FB5h CVRCON             CVREN    CVROE              CVRSS   CVR4     CVR3       CVR2    CVR1                                          0000 0000
                                                                                                                                 --   xxx- ----
FB4h CMSTAT             CMP3OUT CMP2OUT CMP1OUT             --           --     --      --                                            xxxx xxxx
                                                                                                                            TMR3ON    xxxx xxxx
FB3h TMR3H              Timer3 Register High Byte                                                                           T3GSS0    0000 0000

FB2h TMR3L              Timer3 Register Low Byte                                                                              TX9D    0000 0x00
                                                                                                                              RX9D
FB1h T3CON              TMR3CS1 TMR3CS0 T3CKPS1 T3CKPS0 SOSCEN T3SYNC                   RD16                                T1GSS0    0000 0000
                                                                                                                                      0000 0000
FB0h T3GCON             TMR3GE T3GPOL               T3GTM   T3GSPM   T3GGO/     T3GVAL  T3GSS1                               CMP1IP   xxxx xxxx
                                                                     T3DONE                                                  HLVDL0   0000 0010
                                                                                                                                      0000 000x
FAFh SPBRG1             USART1 Baud Rate Generator                                                                               --
                                                                                                                             CMP1IF   0000 0x00
FAEh RCREG1             USART1 Receive Register                                                                              RTCCIP
                                                                                                                             RTCCIF   ---0 -000
FADh TXREG1             USART1 Transmit Register                                                                             RTCCIE   0000 0000
                                                                                                                            TMR3GIP   0000 ----
FACh TXSTA1             CSRC     TX9                TXEN    SYNC     SENDB      BRGH    TRMT                                TMR3GIF   ---0 -000
                                                                                                                            TMR3GIE   1-11 1111
FABh RCSTA1             SPEN     RX9                SREN    CREN     ADDEN      FERR    OERR                                 TMR1IP   0-00 0000
                                                                                                                             TMR1IF   0-00 0000
FAAh T1GCON             TMR1GE T1GPOL               T1GTM   T1GSPM   T1GGO/     T1GVAL  T1GSS1                               TMR1IE   1-11 1110
                                                                     T1DONE                                                   STRA    0-10 0000
                                                                                                                                      0-10 0000
FA9h IPR6               --       --                 --      EEIP         --     CMP3IP  CMP2IP                                TUN0    1111 1111
                                                                                                                             TRISJ0   0000 0000
FA8h HLVDCON            VDIRMAG BGVST               IRVST   HLVDEN   HLVDL3     HLVDL2  HLVDL1                               TRISH0   0000 0000
                                                                                                                             TRISG0   00-0 0001
FA7h PSPCON             IBF      OBF                IBOV    PSPMODE      --     --      --                                            0000 0000
                                                                                                                                 --   1111 1111
FA6h PIR6               --       --                 --      EEIF         --     CMP3IF  CMP2IF                                   --   1111 1111
                                                                                                                             TRISD0   ---1 1111
FA5h IPR3               TMR5GIP  --                 RC2IP   TX2IP    CTMUIP     CCP2IP  CCP1IP                               TRISC0   1111 111-
                                                                                                                             TRISB0   1111 111-
FA4h PIR3               TMR5GiF  --                 RC2IF   TX2IF    CTMUIF     CCP2IF  CCP1IF                               TRISA0   1111 1111
                                                                                                                              LATJ0   1111 1111
FA3h PIE3               TMR5GIE  --                 RC2IE   TX2IE    CTMUIE     CCP2IE  CCP1IE                                LATH0   1111 1111
                                                                                                                             LATG0    1111 1111
FA2h IPR2               OSCFIP   --                 SSP2IP  BCL2IP   BCL1IP     HLVDIP  TMR3IP                                   --   xxxx xxxx
                                                                                                                              LATE0   xxxx xxxx
FA1h PIR2               OSCFIF   --                 SSP2IF  BCL2IF   BCL1IF     HLVDIF  TMR3IF                                LATD0   ---x xxxx
                                                                                                                              LATC0   xxxx xxx-
FA0h PIE2               OSCFIE   --                 SSP2IE  BCL2IE   BCL1IE     HLVDIE  TMR3IE                                LATB0   xxxx xxxx
                                                                                                                              LATA0   xxxx xxxx
F9Fh IPR1               PSPIP    ADIP               RC1IP   TX1IP    SSP1IP TMR1GIP TMR2IP                                     RJ0    xxxx xxxx
                                                                                                                               RH0    xxxx xxxx
F9Eh PIR1               PSPIF    ADIF               RC1IF   TX1IF    SSP1IF TMR1GIF TMR2IF                                            xxxx xxxx
                                                                                                                                      xxxx xxxx
F9Dh PIE1               PSPIE    ADIE               RC1IE   TX1IE    SSP1IE TMR1GIE TMR2IE                                            xxxx xxxx

F9Ch PSTR1CON           CMPL1    CMPL0              --      STRSYNC STRD        STRC    STRB

F9Bh          OSCTUNE   INTSRC   PLLEN               TUN5    TUN4     TUN3       TUN2    TUN1
F9Ah          TRISJ(2)  TRISJ7   TRISJ6             TRISJ5  TRISJ4   TRISJ3     TRISJ2  TRISJ1
F99h          TRISH(2)  TRISH7   TRISH6             TRISH5  TRISH4   TRISH3     TRISH2  TRISH1

F98h TRISG              --       --                 --      TRISG4   TRISG3     TRISG2  TRISG1

F97h TRISF              TRISF7   TRISF6             TRISF5  TRISF4   TRISF3     TRISF2  TRISF1

F96h TRISE              TRISE7   TRISE6             TRISE5  TRISE4   TRISE3     TRISE2  TRISE1

F95h TRISD              TRISD7   TRISD6             TRISD5  TRISD4   TRISD3     TRISD2  TRISD1

F94h TRISC              TRISC7   TRISC6             TRISC5  TRISC4   TRISC3     TRISC2  TRISC1

F93h TRISB              TRISB7   TRISB6             TRISB5  TRISB4   TRISB3     TRISB2  TRISB1

F92h          TRISA     TRISA7   TRISA6             TRISA5  TRISA4   TRISA3     TRISA2  TRISA1
F91h          LATJ(2)    LATJ7    LATJ6             LATJ5    LATJ4    LATJ3     LATJ2    LATJ1
F90h          LATH(2)   LATH7    LATH6              LATH5   LATH4    LATH3      LATH2   LATH1

F8Fh LATG               --       --                 --      LATG4    LATG3      LATG2   LATG1

F8Eh LATF               LATF7    LATF6              LATF5   LATF4    LATF3      LATF2   LATF1

F8Dh LATE               LATE7    LATE6              LATE5   LATE4    LATE3      LATE2   LATE1

F8Ch LATD               LATD7    LATD6              LATD5   LATD4    LATD3      LATD2   LATD1

F8Bh LATC               LATC7    LATC6              LATC5   LATC4    LATC3      LATC2   LATC1

F8Ah LATB               LATB7    LATB6              LATB5   LATB4    LATB3      LATB2   LATB1

F89h          LATA      LATA7    LATA6              LATA5   LATA4    LATA3      LATA2   LATA1
F88h          PORTJ(2)   RJ7      RJ6                RJ5     RJ4      RJ3        RJ2     RJ1
F87h          PORTH(2)   RH7      RH6                RH5     RH4      RH3        RH2     RH1

Note 1:       The bit is available when Master Clear is disabled (MCLRE = 0). When MCLRE is set, the bit is unimplemented.

          2:  Unimplemented on 64-pin devices (PIC18F6XK22).
          3:  Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).

DS39960B-page 98                                            Preliminary                  2010 Microchip Technology Inc.
                                                                        PIC18F87K22 FAMILY

TABLE 6-2: PIC18F87K22 FAMILY REGISTER FILE SUMMARY (CONTINUED)

Address File Name  Bit 7            Bit 6     Bit 5          Bit 4       Bit 3  Bit 2   Bit 1                          Bit 0    Value on
                                                                                                                               POR, BOR
F86h  PORTG        --               --        RG5            RG4         RG3    RG2     RG1                            RG0
F85h                                                                                                                           --xx xxxx
F84h  PORTF        RF7              RF6       RF5            RF4         RF3    RF2     RF1                            --      xxxx xxx-
F83h                                                                                                                           xxxx xxxx
F82h  PORTE        RE7              RE6       RE5            RE4         RE3    RE2     RE1                            RE0     xxxx xxxx
F81h                                                                                                                           xxxx xxxx
F80h  PORTD        RD7              RD6       RD5            RD4         RD3    RD2     RD1                            RD0     xxxx xxxx
F7Fh                                                                                                                           xxxx xxxx
F7Eh  PORTC        RC7              RC6       RC5            RC4         RC3    RC2     RC1                            RC0     xx-0 x000
F7Dh                                                                                                                           ---- ----
F7Ch  PORTB        RB7              RB6       RB5            RB4         RB3    RB2     RB1                            RB0     xxxx xxxx
F7Bh                                                                                                                           xxxx xxxx
F7Ah  PORTA        RA7              RA6       RA5            RA4         RA3    RA2     RA1                            RA0     0000 0000

F79h  EECON1       EEPGD            CFGS      --             FREE       WRERR   WREN    WR                             RD      0000 0x00
F78h
F77h  EECON2       EEPROM Control Register 2 (not a physical register)                                                         xxxx xxxx
F76h                                                                                                                           xxxx xxxx
F75h  TMR5H        Timer5 Register High Byte                                                                                   --00 0000
F74h                                                                                                                           xxxx xxxx
F73h  TMR5L        Timer5 Register Low Byte                                                                                    xxxx xxxx
F72h                                                                                                                           --00 0000
F71h  T5CON        TMR5CS1 TMR5CS0 T5CKPS1 T5CKPS0 SOSCEN T5SYNC                        RD16                           TMR5ON  xxxx xxxx
F70h                                                                                                                           xxxx xxxx
F6Fh  T5GCON       TMR5GE T5GPOL              T5GTM         T5GSPM      T5GGO/  T5GVAL  T5GSS1                         T5GSS0  --00 0000
F6Eh                                                                    T5DONE                                                 xxxx xxxx
F6Dh                                                                                                                           xxxx xxxx
F6Ch  CCPR4H       Capture/Compare/PWM Register 4 High Byte                                                                    --00 0000
F6Bh                                                                                                                           xxxx xxxx
F6Ah  CCPR4L       Capture/Compare/PWM Register 4 Low Byte                                                                     1111 1111
F69h                                                                                                                           -111 1111
F68h  CCP4CON      --               --        DC4B1          DC4B0      CCP4M3 CCP4M2 CCP4M1 CCP4M0                            xxxx xxxx
F67h                                                                                                                           0000 0000
F66h  CCPR5H       Capture/Compare/PWM Register 5 High Byte                                                                    0000 0000
F65h                                                                                                                           0000 0000
F64h  CCPR5L       Capture/Compare/PWM Register 5 Low Byte                                                                     0100 0000
F63h                                                                                                                           0100 0-00
F62h  CCP5CON      --               --        DC5B1          DC5B0      CCP5M3 CCP5M2 CCP5M1 CCP5M0                            -0-- 0-x0
F61h                                                                                                                           0000 0000
F60h  CCPR6H       Capture/Compare/PWM Register 6 High Byte                                                                    0000 0000
F5Fh                                                                                                                           0000 0000
F5Eh  CCPR6L       Capture/Compare/PWM Register 6 Low Byte                                                                     ---0 -000
F5Dh                                                                                                                           0000 0000
Note  CCP6CON      --               --        DC6B1          DC6B0      CCP6M3 CCP6M2 CCP6M1 CCP6M0                            xxxx xxxx
                                                                                                                               xxxx xxxx
      CCPR7H       Capture/Compare/PWM Register 7 High Byte

      CCPR7L       Capture/Compare/PWM Register 7 Low Byte

      CCP7CON      --               --        DC7B1          DC7B0      CCP7M3 CCP7M2 CCP7M1 CCP7M0

      TMR4         Timer4 Register

      PR4          Timer4 Period Register

      T4CON        --            T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0

      SSP2BUF      MSSP Receive Buffer/Transmit Register
      SSP2ADD      MSSP Address Register in I2CTM Slave Mode. MSSP1 Baud Rate Reload Register in I2C Master Mode.

      SSP2STAT     SMP              CKE       D/A            P           S      R/W     UA                             BF

      SSP2CON1     WCOL             SSPOV     SSPEN          CKP        SSPM3   SSPM2   SSPM1                          SSPM0

      SSP2CON2     GCEN             ACKSTAT ACKDT            ACKEN      RCEN    PEN     RSEN                           SEN

      BAUDCON1 ABDOVF               RCIDL     RXDTP          TXCKP      BRG16   --      WUE                            ABDEN

      OSCCON2      --            SOSCRUN      --             --         SOSCGO  --      MFIOFS MFIOSEL

      EEADRH       EEPROM Address Register High Byte

      EEADR        EEPROM Address Register Low Byte

      EEDATA       EEPROM Data Register

      PIE6         --               --        --             EEIE        --     CMP3IE  CMP2IE                         CMP1IE

      RTCCFG       RTCEN            --        RTCWREN RTCSYNC HALFSEC RTCOE RTCPTR1 RTCPTR0

      RTCCAL       CAL7             CAL6      CAL5           CAL4        CAL3   CAL2    CAL1                           CAL0

      RTCVALH      RTCC Value High Register Window Based on RTCPTR<1:0>

      1: The bit is available when Master Clear is disabled (MCLRE = 0). When MCLRE is set, the bit is unimplemented.
      2: Unimplemented on 64-pin devices (PIC18F6XK22).
      3: Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).

2010 Microchip Technology Inc.                       Preliminary                                                      DS39960B-page 99
PIC18F87K22 FAMILY

TABLE 6-2: PIC18F87K22 FAMILY REGISTER FILE SUMMARY (CONTINUED)

Address File Name  Bit 7            Bit 6     Bit 5          Bit 4      Bit 3  Bit 2    Bit 1                          Bit 0      Value on
                                                                                                                                 POR, BOR

F5Ch  RTCVALL      RTCC Value Low Register Window Based on RTCPTR<1:0>                                                           0000 0000
F5Bh                                                                                                                             0000 0000
F5Ah  ALRMCFG      ALRMEN           CHIME     AMASK3 AMASK2 AMASK1 AMASK0 ALRMPTR1 ALRMPTR0                                      0000 0000
F59h                                                                                                                             xxxx xxxx
F58h  ALRMRPT      ARPT7            ARPT6     ARPT5          ARPT4   ARPT3     ARPT2    ARPT1                          ARPT0     0000 0000
F57h                                                                                                                             0-00 0000
F56h  ALRMVALH Alarm Value High Register Window Based on APTR<1:0>                                                               0000 0000
F55h                                                                                                                             0000 0000
F54h  ALRMVALL Alarm Value Low Register Window Based on APTR<1:0>                                                                0000 0000
F53h                                                                                                                             000- -00-
F52h  CTMUCONH CTMUEN               --        CTMUSIDL TGEN          EDGEN EDGSEQEN IDISSEN                            CTTRIG    0000 0000
F51h                                                                                                                             0000 0000
F50h  CTMUCONL EDG2POL EDG2SEL1 EDG2SEL0 EDG1POL EDG1SEL1 EDG1SEL0 EDG2STAT EDG1STAT                                             xxxx xxxx
F4Fh                                                                                                                             xxxx xxxx
F4Eh  CTMUICONH ITRIM5              ITRIM4    ITRIM3         ITRIM2  ITRIM1    ITRIM0   IRNG1                          IRNG0     0000 0000
F4Dh                                                                                                                             0000 0000
F4Ch  CM1CON       CON              COE        CPOL          EVPOL1  EVPOL0    CREF     CCH1                           CCH0      0000 0000
F4Bh  PADCFG1      RDPU             REPU      RJPU(2)            --                                                      --      xxxx xxxx
F4Ah                                                                    --     RTSECSEL1 RTSECSEL0                               xxxx xxxx
F49h                                                                                                                             0000 0000
F48h  ECCP2AS      ECCP2ASE ECCP2AS2 ECCP2AS1 ECCP2AS0 PSS2AC1 PSS2AC0 PSS2BD1 PSS2BD0                                           xxxx xxxx
F47h                                                                                                                             xxxx xxxx
F46h  ECCP2DEL     P2RSEN           P2DC6     P2DC5          P2DC4   P2DC3     P2DC2    P2DC1                          P2DC0     --00 0000
F45h                                                                                                                             xxxx xxxx
F44h  CCPR2H       Capture/Compare/PWM Register 2 High Byte                                                                      xxxx xxxx
F43h                                                                                                                             --00 0000
F42h  CCPR2L       Capture/Compare/PWM Register 2 Low Byte                                                                       xxxx xxxx
F41h                                                                                                                             xxxx xxxx
F40h  CCP2CON      P2M1             P2M0      DC2B1          DC2B0   CCP2M3 CCP2M2 CCP2M1 CCP2M0                                 --00 0000
F3Fh                                                                                                                             xxxx xxxx
F3Eh  ECCP3AS      ECCP3ASE ECCP3AS2 ECCP3AS1 ECCP3AS0 PSS3AC1 PSS3AC0 PSS3BD1 PSS3BD0                                           0000 0000
F3Dh                                                                                                                             0000 0000
F3Ch  ECCP3DEL     P3RSEN           P3DC6     P3DC5          P3DC4   P3DC3     P3DC2    P3DC1                          P3DC0
                                                                                                                                 0000 0000
F3Bh  CCPR3H       Capture/Compare/PWM Register 3 High Byte
F3Ah                                                                                                                             0000 0000
F39h  CCPR3L       Capture/Compare/PWM Register 3 Low Byte                                                                       1111 1111
F38h                                                                                                                             -000 0000
F37h  CCP3CON      P3M1             P3M0      DC3B1          DC3B0   CCP3M3 CCP3M2 CCP3M1 CCP3M0                                 0000 0000
F36h                                                                                                                             1111 1111
F35h  CCPR8H       Capture/Compare/PWM Register 8 High Byte                                                                      -000 0000
F34h                                                                                                                             0000 0000
F33h  CCPR8L       Capture/Compare/PWM Register 8 Low Byte                                                                       1111 1111
F32h                                                                                                                             -000 0000
F31h  CCP8CON      --               --        DC8B1          DC8B0   CCP8M3 CCP8M2 CCP8M1 CCP8M0                                 0000 0000
F30h                                                                 CCP9M3 CCP9M2 CCP9M1 CCP9M0                                 1111 1111
F2Fh  CCPR9H(3) Capture/Compare/PWM Register 9 High Byte             CCP10M3 CCP10M2 CCP10M1 CCP10M0                             -000 0000
F2Eh                                                                                                                             0001 1111
F2Dh  CCPR9L(3) Capture/Compare/PWM Register 9 Low Byte                                                                          0001 1111
Note                                                                                                                             0000 0000
      CCP9CON(3)   --               --        DC9B1          DC9B0

      CCPR10H(3) Capture/Compare/PWM Register 10 High Byte

      CCPR10L(3) Capture/Compare/PWM Register 10 Low Byte

      CCP10CON(3)  --               --        DC10B1 DC10B0

      TMR7H(3)     Timer7 Register High Byte

      TMR7L(3)     Timer7 Register Low Byte

      T7CON(3)     TMR7CS1          TMR7CS0   T7CKPS1  T7CKPS0       SOSCEN    T7SYNC    RD16                          TMR7ON
      T7GCON(3)    TMR7GE            T7GPOL    T7GTM   T7GSPM                  T7GVAL   T7GSS1                         T7GSS0
                                                                     T7GGO/
                                                                     T7DONE

      TMR6         Timer6 Register

      PR6          Timer6 Period Register

      T6CON        --       T6OUTPS3 T6OUTPS2 T6OUTPS1 T6OUTPS0 TMR6ON T6CKPS1 T6CKPS0

      TMR8         Timer8 Register

      PR8          Timer8 Period Register

      T8CON        --       T8OUTPS3 T8OUTPS2 T8OUTPS1 T8OUTPS0                TMR8ON   T8CKPS1                        T8CKPS0
      TMR1(3)0                                                                 TMR10ON  T10CKPS1                       T10CKPS0
      PR10(3)      TMR10 Register                                              TMR12ON  T12CKPS1                       T12CKPS0
      T10CON(3)
      TMR12(3)     Timer10 Period Register
      PR12(3)
      T12CON(3)    --       T10OUTPS3 T10OUTPS2 T10OUTPS1 T10OUTPS0

                   TMR12 Register

                   Timer12 Period Register

                   --       T12OUTPS3 T12OUTPS2 T12OUTPS1 T12OUTPS0

      CM2CON       CON              COE       CPOL           EVPOL1 EVPOL0     CREF     CCH1                           CCH0

      CM3CON       CON              COE       CPOL           EVPOL1 EVPOL0     CREF     CCH1                           CCH0

      CCPTMRS0 C3TSEL1 C3TSEL0 C2TSEL2 C2TSEL1 C2TSEL0 C1TSEL2 C1TSEL1 C1TSEL0

      1: The bit is available when Master Clear is disabled (MCLRE = 0). When MCLRE is set, the bit is unimplemented.

      2: Unimplemented on 64-pin devices (PIC18F6XK22).
      3: Unimplemented on devices with a program memory of 32 Kbytes (PIC18FX5K22).

DS39960B-page 100                                      Preliminary                       2010 Microchip Technology Inc.
                                                              PIC18F87K22 FAMILY

TABLE 6-2: PIC18F87K22 FAMILY REGISTER FILE SUMMARY (CONTINUED)

Address File Name  Bit 7         Bit 6         Bit 5   Bit 4        Bit 3   Bit 2   Bit 1                              Bit 0        Value on
                                                                                                                                   POR, BOR

F2Ch  CCPTMRS1     C7TSEL1       C7TSEL0       --      C6TSEL0      --       C5TSEL0 C4TSEL1                           C4TSEL0     00-0 -000
F2Bh  CCPTMRS2         --            --                                     C9TSEL0(3) C8TSEL1                         C8TSEL0     ---0 -000
F2Ah                                           --      C10TSEL0(3)  --                                                  RODIV0     0-00 0000
F29h                                                                                                                   SSP2OD      000- ---0
F28h  REFOCON      ROON                --   ROSSLP     ROSEL        RODIV3  RODIV2  RODIV1                             CCP3OD      0000 0000
F27h                                                                                                                   CTMUDS      00-- ---0
F26h  ODCON1         SSP1OD CCP2OD CCP1OD                  --           --      --      --                                         0-00 --00
F25h  ODCON2       CCP10OD(3) CCP9OD(3) CCP8OD         CCP7OD       CCP6OD  CCP5OD  CCP4OD                               WM0       1111 1111
F24h                                                                                                                   ANSEL0      1111 1111
F23h  ODCON3       U2OD          U1OD          --      --           --      --      --                                 ANSEL8      1111 1111
F22h                                                                                                                   ANSEL16     0000 000x
F21h  MEMCON       EBDIS               --      WAIT1   WAIT0        --      --      WM1                                            0000 0010
F20h                                                                                                                     RX9D      0100 0-00
F1Fh  ANCON0       ANSEL7        ANSEL6        ANSEL5  ANSEL4       ANSEL3  ANSEL2  ANSEL1                               TX9D
F1Eh                                                                                                                    ABDEN
F1Dh  ANCON1       ANSEL15 ANSEL14 ANSEL13 ANSEL12 ANSEL11 ANSEL10 ANSEL9
F1Ch
F1Bh  ANCON2       ANSEL