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

产品描述

搜索
 

PIC18F8627T-E/PTQTP

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

器件描述

8-BIT, FLASH, 25 MHz, MICROCONTROLLER, PQFP64

8位, FLASH, 25 MHz, 单片机, PQFP64

参数
PIC18F8627T-E/PTQTP功能数量 1
PIC18F8627T-E/PTQTP端子数量 64
PIC18F8627T-E/PTQTP最大工作温度 125 Cel
PIC18F8627T-E/PTQTP最小工作温度 -40 Cel
PIC18F8627T-E/PTQTP最大供电/工作电压 5.5 V
PIC18F8627T-E/PTQTP最小供电/工作电压 4.2 V
PIC18F8627T-E/PTQTP额定供电电压 5 V
PIC18F8627T-E/PTQTP外部数据总线宽度 0.0
PIC18F8627T-E/PTQTP输入输出总线数量 54
PIC18F8627T-E/PTQTP线速度 25 MHz
PIC18F8627T-E/PTQTP加工封装描述 10 X 10 MM, 1 MM HEIGHT, PLASTIC, MS-026, TQFP-64
PIC18F8627T-E/PTQTP无铅 Yes
PIC18F8627T-E/PTQTP欧盟RoHS规范 Yes
PIC18F8627T-E/PTQTP中国RoHS规范 Yes
PIC18F8627T-E/PTQTP状态 ACTIVE
PIC18F8627T-E/PTQTP包装形状 SQUARE
PIC18F8627T-E/PTQTP包装尺寸 FLATPACK, THIN PROFILE, FINE PITCH
PIC18F8627T-E/PTQTP表面贴装 Yes
PIC18F8627T-E/PTQTP端子形式 GULL WING
PIC18F8627T-E/PTQTP端子间距 0.5000 mm
PIC18F8627T-E/PTQTP端子涂层 MATTE TIN
PIC18F8627T-E/PTQTP端子位置 QUAD
PIC18F8627T-E/PTQTP包装材料 PLASTIC/EPOXY
PIC18F8627T-E/PTQTP温度等级 AUTOMOTIVE
PIC18F8627T-E/PTQTPADC通道 Yes
PIC18F8627T-E/PTQTP地址总线宽度 0.0
PIC18F8627T-E/PTQTP位数 8
PIC18F8627T-E/PTQTP最大FCLK时钟频率 25 MHz
PIC18F8627T-E/PTQTP微处理器类型 MICROCONTROLLER
PIC18F8627T-E/PTQTPPWM通道 Yes
PIC18F8627T-E/PTQTPROM编程 FLASH

文档预览

PIC18F8627T-E/PTQTP器件文档内容

               PIC18F8722 Family
                           Data Sheet

                             64/80-Pin, 1-Mbit,
           Enhanced Flash Microcontrollers
with 10-Bit A/D and nanoWatt Technology

2008 Microchip Technology Inc.  DS39646C
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, Accuron,
ensure that your application meets with your specifications.       dsPIC, KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro,
MICROCHIP MAKES NO REPRESENTATIONS OR                              PICSTART, rfPIC, SmartShunt and UNI/O are registered
WARRANTIES OF ANY KIND WHETHER EXPRESS OR                          trademarks of Microchip Technology Incorporated in the
IMPLIED, WRITTEN OR ORAL, STATUTORY OR                             U.S.A. and other countries.
OTHERWISE, RELATED TO THE INFORMATION,
INCLUDING BUT NOT LIMITED TO ITS CONDITION,                        FilterLab, Linear Active Thermistor, MXDEV, MXLAB,
QUALITY, PERFORMANCE, MERCHANTABILITY OR                           SEEVAL, SmartSensor and The Embedded Control Solutions
FITNESS FOR PURPOSE. Microchip disclaims all liability             Company are registered trademarks of Microchip Technology
arising from this information and its use. Use of Microchip        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, In-Circuit Serial
conveyed, implicitly or otherwise, under any Microchip             Programming, ICSP, ICEPIC, Mindi, MiWi, MPASM, MPLAB
intellectual property rights.                                      Certified logo, MPLIB, MPLINK, mTouch, PICkit, PICDEM,
                                                                   PICDEM.net, PICtail, PIC32 logo, PowerCal, PowerInfo,
                                                                   PowerMate, PowerTool, REAL ICE, rfLAB, Select Mode, Total
                                                                   Endurance, 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.

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

                                                                        Printed on recycled paper.

                                                                   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.

DS39646C-page ii                                                    2008 Microchip Technology Inc.
                                               PIC18F8722 FAMILY

64/80-Pin, 1-Mbit, Enhanced Flash Microcontrollers with
            10-Bit A/D and nanoWatt Technology

Power Management Features:                               Peripheral Highlights (Continued):

Run: CPU On, Peripherals On                            Up to 2 Capture/Compare/PWM (CCP) modules,
Idle: CPU Off, Peripherals On                             one with Auto-Shutdown (28-pin devices)
Sleep: CPU Off, Peripherals Off
Ultra Low 50 nA Input Leakage                           Master Synchronous Serial Port (MSSP) module
Run mode Currents Down to 25 A Typical                    Supporting 3-Wire SPI (all 4 modes) and I2CTM
Idle mode Currents Down to 6.8 A Typical                  Master and Slave modes
Sleep mode Current Down to 120 nA Typical
Timer1 Oscillator: 900 nA, 32 kHz, 2V                   Enhanced Addressable USART module:
Watchdog Timer: 1.6 A, 2V Typical                         - Supports RS-485, RS-232 and LIN/J2602
Two-Speed Oscillator Start-up                             - RS-232 operation using internal oscillator
                                                               block (no external crystal required)
Flexible Oscillator Structure:
                                                          10-Bit, up to 13-Channel Analog-to-Digital (A/D)
Four Crystal modes, up to 40 MHz                          Converter module:
4x Phase Lock Loop (PLL) Available for Crystal          - Conversion available during Sleep

   and Internal Oscillators                               Dual Analog Comparators with Input Multiplexing
Internal Oscillator Block:                              Programmable 16-Level High/Low-Voltage

   - Fast wake from Sleep and Idle, 1 s typical             Detection (HLVD) module
   - Provides a complete range of clock speeds
                                                         Special Microcontroller Features:
      from 31 kHz to 32 MHz when used with PLL
   - User-tunable to compensate for frequency drift       C Compiler Optimized Architecture
Secondary oscillator using Timer1 @ 32 kHz             100,000 Erase/Write Cycle Enhanced Flash
Fail-Safe Clock Monitor:
   - Allows for safe shutdown if peripheral clock stops     Program Memory Typical
                                                          1,000,000 Erase/Write Cycle Data EEPROM
Peripheral Highlights:
                                                            Memory Typical
High-Current Sink/Source 25 mA/25 mA                   Flash/Data EEPROM Retention: 100 Years Typical
Three Programmable External Interrupts                  Self-Programmable under Software Control
Four Input Change Interrupts                            Priority Levels for Interrupts
Enhanced Capture/Compare/PWM (ECCP)                     8 x 8 Single-Cycle Hardware Multiplier
                                                          Extended Watchdog Timer (WDT):
   module (40/44-pin devices only):
   - One, two or four PWM outputs                           - Programmable period from 4 ms to 131s
   - Programmable dead time
   - Auto-shutdown and auto-restart                      Single-Supply 5V In-Circuit Serial ProgrammingTM
                                                            (ICSPTM) via Two Pins

                                                          In-Circuit Debug (ICD) via Two Pins
                                                          Wide Operating Voltage Range: 2.0V to 5.5V
                                                          Programmable Brown-out Reset (BOR) with

                                                            Software Enable Option

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

PIC18F6527  48K   24576           3936 1024 54 12 2/3 2 Y                   Y      2  2 2/3 N
PIC18F6622  64K   32768                                                               2 2/3 N
PIC18F6627  96K   49152           3936 1024 54 12 2/3 2 Y                   Y      2  2 2/3 N
PIC18F6722  128K  65536                                                               2 2/3 N
PIC18F8527  48K   24576           3936 1024 54 12 2/3 2 Y                   Y      2  2 2/3 Y
PIC18F8622  64K   32768                                                               2 2/3 Y
PIC18F8627  96K   49152           3936 1024 54 12 2/3 2 Y                   Y      2  2 2/3 Y
PIC18F8722  128K  65536                                                               2 2/3 Y
                                  3936 1024 70 16 2/3 2 Y                   Y      2

                                  3936 1024 70 16 2/3 2 Y                   Y      2

                                  3936 1024 70 16 2/3 2 Y                   Y      2

                                  3936 1024 70 16 2/3 2 Y                   Y      2

2008 Microchip Technology Inc.                                                      DS39646C-page 1
PIC18F8722 FAMILY

Pin Diagrams

                64-Pin TQFP

                           RE2/CS/P2B
                               RE3/P3C
                                    RE4/P3B
                                         RE5/P1C
                                              RE6/P1B
                                                 RE7/ECCP2(1)/P2A(1)
                                                       RD0/PSP0
                                                            VDD
                                                                VSS
                                                                     RD1/PSP1
                                                                          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
      RE0/RD/P2D                                                                                                     RB1/INT1
RG0/ECCP3/P3A          2                                                                                         47  RB2/INT2
    RG1/TX2/CK2                                                                                                      RB3/INT3
    RG2/RX2/DT2        3                                                                                         46  RB4/KBI0
  RG3/CCP4/P3D                                                                                                       RB5/KBI1/PGM
  RG5/MCLR/VPP         4                                                                                         45  RB6/KBI2/PGC
  RG4/CCP5/P1D                                                                                                       VSS
                       5                                                                                         44  OSC2/CLKO/RA6
                  VSS                                                                                                OSC1/CLKI/RA7
                  VDD  6                                                                                         43  VDD
           RF7/SS1                                                                                                   RB7/KBI3/PGD
          RF6/AN11     7     PIC18F6527                                                                          42  RC5/SDO1
RF5/AN10/CVREF                                                                                                       RC4/SDI1/SDA1
           RF4/AN9     8     PIC18F6622                                                                          41  RC3/SCK1/SCL1
           RF3/AN8                                                                                                   RC2/ECCP1/P1A
RF2/AN7/C1OUT          9     PIC18F6627                                                                          40

                       10    PIC18F6722                                                                          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
                               RF0/AN5
                                    AVDD
                                         AVSS

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

                                                       RA1/AN1
                                                            RA0/AN0

                                                                VSS
                                                                     VDD
                                                                          RA5/AN4/HLVDIN
                                                                               RA4/T0CKI
                                                                                  RC1/T1OSI/ECCP2(1)/P2A(1)
                                                                                        RC0/T1OSO/T13CKI
                                                                                             RC6/TX1/CK1
                                                                                                 RC7/RX1/DT1

Note 1: The ECCP2/P2A pin placement is determined by the CCP2MX Configuration bit.

DS39646C-page 2                                                                                                       2008 Microchip Technology Inc.
                                              PIC18F8722 FAMILY

Pin Diagrams (Continued)

          80-Pin TQFP

                                  RH1/A17
                                      RH0/A16
                                          RE2/AD10/CS/P2B
                                              RE3/AD11/P3C(2)
                                                  RE4/AD12/P3B(2)
                                                       RE5/AD13/P1C(2)
                                                           RE6/AD14/P1B(2)
                                                                RE7/AD15/ECCP2(1)/P2A(1)
                                                                     RD0/AD0/PSP0
                                                                         VDD
                                                                              VSS
                                                                                  RD1/AD1/PSP1
                                                                                      RD2/AD2/PSP2
                                                                                           RD3/AD3/PSP3
                                                                                               RD4/AD4/PSP4/SDO2
                                                                                                    RD5/AD5/PSP5/SDI2/SDA2
                                                                                                        RD6/AD6/PSP6/SCK2/SCL2
                                                                                                             RD7/AD7/PSP7/SS2
                                                                                                                 RJ0/ALE
                                                                                                                     RJ1/OE

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

             RH2/A18     1                                                                                                      60  RJ2/WRL
             RH3/A19                                                                                                                RJ3/WRH
                         2                                                                                                      59  RB0/INT0
RE1/AD9/WR/P2C                                                                                                                      RB1/INT1
RE0/AD8/RD/P2D           3                                                                                                      58  RB2/INT2
RG0/ECCP3/P3A                                                                                                                      RB3/INT3/ECCP2(1)/P2A(1)
                         4                                                                                                      57  RB4/KBI0
     RG1/TX2/CK2                                                                                                                    RB5/KBI1/PGM
     RG2/RX2/DT2         5                                                                                                      56  RB6/KBI2/PGC
   RG3/CCP4/P3D                                                                                                                     VSS
   RG5/MCLR/VPP          6                                                                                                      55  OSC2/CLKO/RA6
   RG4/CCP5/P1D                                                                                                                     OSC1/CLKI/RA7
                         7                                                                                                      54  VDD
                    VSS                                                                                                             RB7/KBI3/PGD
                   VDD   8                                                                                                      53  RC5/SDO1
             RF7/SS1                                                                                                                RC4/SDI1/SDA1
           RF6/AN11      9        PIC18F8527                                                                                    52  RC3/SCK1/SCL1
RF5/AN10/CVREF                                                                                                                     RC2/ECCP1/P1A
            RF4/AN9      10       PIC18F8622                                                                                    51  RJ7/UB
            RF3/AN8                                                                                                                 RJ6/LB
RF2/AN7/C1OUT           11       PIC18F8627                                                                                    50
RH7/AN15/P1B(2)
RH6/AN14/P1C(2)         12       PIC18F8722                                                                                    49

                         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/AN13/P3B(2)
                                      RH4/AN12/P3C(2)
                                           RF1/AN6/C2OUT

                                                RF0/AN5
                                                    AVDD
                                                         AVSS

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

                                                                      RA1/AN1
                                                                          RA0/AN0

                                                                               VSS
                                                                                   VDD
                                                                                        RA5/AN4/HLVDIN
                                                                                            RA4/T0CKI
                                                                                               RC1/T1OSI/ECCP2(1)/P2A(1)
                                                                                                     RC0/T1OSO/T13CKI
                                                                                                         RC6/TX1/CK1
                                                                                                              RC7/RX1/DT1
                                                                                                                  RJ4/BA0
                                                                                                                      RJ5/CE

Note 1: The ECCP2/P2A pin placement is determined by the CCP2MX Configuration bit and Processor mode settings.
         2: P1B, P1C, P3B and P3C pin placement is determined by the ECCPMX Configuration bit.

2008 Microchip Technology Inc.                                                                                                    DS39646C-page 3
PIC18F8722 FAMILY

Table of Contents

1.0 Device Overview .......................................................................................................................................................................... 7
2.0 Oscillator Configurations ............................................................................................................................................................ 31
3.0 Power-Managed Modes ............................................................................................................................................................. 41
4.0 Reset .......................................................................................................................................................................................... 49
5.0 Memory Organization ................................................................................................................................................................. 63
6.0 Flash Program Memory .............................................................................................................................................................. 87
7.0 External Memory Bus ................................................................................................................................................................. 97
8.0 Data EEPROM Memory ........................................................................................................................................................... 111
9.0 8 x 8 Hardware Multiplier.......................................................................................................................................................... 117
10.0 Interrupts .................................................................................................................................................................................. 119
11.0 I/O Ports ................................................................................................................................................................................... 135
12.0 Timer0 Module ......................................................................................................................................................................... 161
13.0 Timer1 Module ......................................................................................................................................................................... 165
14.0 Timer2 Module ......................................................................................................................................................................... 171
15.0 Timer3 Module ......................................................................................................................................................................... 173
16.0 Timer4 Module ......................................................................................................................................................................... 177
17.0 Capture/Compare/PWM (CCP) Modules ................................................................................................................................. 179
18.0 Enhanced Capture/Compare/PWM (ECCP) Module................................................................................................................ 187
19.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 205
20.0 Enhanced Universal Synchronous Receiver Transmitter (EUSART) ....................................................................................... 247
21.0 10-Bit Analog-to-Digital Converter (A/D) Module ..................................................................................................................... 271
22.0 Comparator Module.................................................................................................................................................................. 281
23.0 Comparator Voltage Reference Module ................................................................................................................................... 287
24.0 High/Low-Voltage Detect (HLVD)............................................................................................................................................. 291
25.0 Special Features of the CPU .................................................................................................................................................... 297
26.0 Instruction Set Summary .......................................................................................................................................................... 321
27.0 Development Support............................................................................................................................................................... 371
28.0 Electrical Characteristics .......................................................................................................................................................... 375
29.0 Packaging Information.............................................................................................................................................................. 419
Appendix A: Revision History............................................................................................................................................................. 425
Appendix B: Device Differences......................................................................................................................................................... 425
Appendix C: Conversion Considerations ........................................................................................................................................... 426
Appendix D: Migration From Baseline to Enhanced Devices............................................................................................................. 426
Appendix E: Migration From Mid-Range to Enhanced Devices ......................................................................................................... 427
Appendix F: Migration From High-End to Enhanced Devices............................................................................................................ 427
Index .................................................................................................................................................................................................. 429
The Microchip Web Site ..................................................................................................................................................................... 441
Customer Change Notification Service .............................................................................................................................................. 441
Customer Support .............................................................................................................................................................................. 441
Reader Response .............................................................................................................................................................................. 442
PIC18F8722 Family Product Identification System............................................................................................................................ 443

DS39646C-page 4   2008 Microchip Technology Inc.
                                  PIC18F8722 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.

2008 Microchip Technology Inc.  DS39646C-page 5
PIC18F8722 FAMILY

NOTES:

DS39646C-page 6    2008 Microchip Technology Inc.
                                                         PIC18F8722 FAMILY

1.0 DEVICE OVERVIEW                                      1.1.2 EXPANDED MEMORY

This document contains device specific information for   The PIC18F8722 family provides ample room for
the following devices:                                   application code and includes members with 48, 64,
                                                         96 or 128 Kbytes of code space.
PIC18F6527   PIC18LF6527
PIC18F6622   PIC18LF6622                               Data RAM and Data EEPROM: The PIC18F8722
PIC18F6627   PIC18LF6627                                 family also provides plenty of room for application
PIC18F6722   PIC18LF6722                                 data. The devices have 3936 bytes of data RAM,
PIC18F8527   PIC18LF8527                                 as well as 1024 bytes of data EEPROM, for long
PIC18F8622   PIC18LF8622                                 term retention of nonvolatile data.
PIC18F8627   PIC18LF8627
PIC18F8722   PIC18LF8722                               Memory Endurance: The Enhanced Flash cells
                                                            for both program memory and data EEPROM are
This family offers the advantages of all PIC18 micro-       rated to last for many thousands of erase/write
controllers namely, high computational performance at     cycles, up to 100,000 for program memory and
an economical price with the addition of high-            1,000,000 for EEPROM. Data retention without
endurance, Enhanced Flash program memory. On top of         refresh is conservatively estimated to be greater
these features, the PIC18F8722 family introduces            than 40 years.
design enhancements that make these microcontrollers
a logical choice for many high-performance, power        1.1.3  MULTIPLE OSCILLATOR OPTIONS
sensitive applications.                                         AND FEATURES

1.1 New Core Features                                    All of the devices in the PIC18F8722 family offer ten
                                                         different oscillator options, allowing users a wide range
                                                         of choices in developing application hardware. These
                                                         include:

1.1.1 nanoWatt TECHNOLOGY                                 Four Crystal modes, using crystals or ceramic
                                                            resonators
All of the devices in the PIC18F8722 family incorporate
a range of features that can significantly reduce power   Two External Clock modes, offering the option of
consumption during operation. Key items include:            using two pins (oscillator input and a divide-by-4
                                                            clock output) or one pin (oscillator input, with the
Alternate Run Modes: By clocking the controller           second pin reassigned as general I/O)
   from the Timer1 source or the internal oscillator
   block, power consumption during code execution         Two External RC Oscillator modes with the same
   can be significantly reduced.                            pin options as the External Clock modes

Multiple Idle Modes: The controller can also run       An internal oscillator block which provides an
   with its CPU core disabled but the peripherals still     8 MHz clock and an INTRC source (approxi-
   active. In these states, power consumption can be        mately 31 kHz), as well as a range of 6 user
   reduced even further.                                    selectable clock frequencies, between 125 kHz to
                                                            4 MHz, for a total of 8 clock frequencies. This
On-the-fly Mode Switching: The power-                     option frees the two oscillator pins for use as
   managed modes are invoked by user code during            additional general purpose I/O.
   operation, allowing the user to incorporate power-
   saving ideas into their application's software         A Phase Lock Loop (PLL) frequency multiplier,
   design.                                                  available to both the high-speed crystal and inter-
                                                            nal oscillator modes, which allows clock speeds of
Low Consumption in Key Modules: The                       up to 40 MHz. Used with the internal oscillator, the
   power requirements for both Timer1 and the               PLL gives users a complete selection of clock
   Watchdog Timer are minimized. See                        speeds, from 31 kHz to 32 MHz all without using
   Section 28.0 "Electrical Characteristics"                an external crystal or clock circuit.
   for values.

2008 Microchip Technology Inc.                                DS39646C-page 7
PIC18F8722 FAMILY                                           1.2 Other Special Features

Besides its availability as a clock source, the internal    Communications: The PIC18F8722 family
oscillator block provides a stable reference source that       incorporates a range of serial communication
gives the family additional features for robust operation:     peripherals, including 2 independent Enhanced
                                                               USARTs and 2 Master SSP modules capable of
Fail-Safe Clock Monitor: This option constantly              both SPI and I2C (Master and Slave) modes of
   monitors the main clock source against a reference          operation. Also, one of the general purpose I/O
   signal provided by the internal oscillator. If a clock      ports can be reconfigured as an 8-bit Parallel
   failure occurs, the controller is switched to the           Slave Port for direct processor-to-processor
  internal oscillator block, allowing for continued            communications.
   low-speed operation or a safe application shutdown.
                                                             CCP Modules: All devices in the family
Two-Speed Start-up: This option allows the                   incorporate two Capture/Compare/PWM (CCP)
   internal oscillator to serve as the clock source            modules and three Enhanced CCP (ECCP)
   from Power-on Reset, or wake-up from Sleep                  modules to maximize flexibility in control
   mode, until the primary clock source is available.          applications. Up to four different time bases may
                                                               be used to perform several different operations at
1.1.4 EXTERNAL MEMORY INTERFACE                                once. Each of the three ECCP modules offer up to
                                                               four PWM outputs, allowing for a total of
In the unlikely event that 128 Kbytes of program               12 PWMs. The ECCPs also offer many beneficial
memory is inadequate for an application, the                   features, including polarity selection,
PIC18F8527/8622/8627/8722 members of the family                Programmable Dead-Time, Auto-Shutdown and
also implement an external memory interface. This              Restart and Half-Bridge and Full-Bridge
allows the controller's internal program counter to            Output modes.
address a memory space of up to 2 Mbytes,
permitting a level of data access that few 8-bit devices    Self-Programmability: These devices can write
can claim.                                                     to their own program memory spaces under
                                                               internal software control. By using a bootloader
With the addition of new operating modes, the external         routine located in the protected boot block at the
memory interface offers many new options, including:           top of program memory, it becomes possible to
                                                               create an application that can update itself in the
Operating the microcontroller entirely from                  field.
   external memory
                                                             Extended Instruction Set: The PIC18F8722
Using combinations of on-chip and external                   family introduces an optional extension to the
   memory, up to the 2-Mbyte limit                             PIC18 instruction set, which adds 8 new instruc-
                                                               tions and an Indexed Addressing mode. This
Using external Flash memory for reprogrammable               extension, enabled as a device configuration
   application code or large data tables                       option, has been specifically designed to optimize
                                                               re-entrant application code originally developed in
Using external RAM devices for storing large                 high-level languages, such as C.
   amounts of variable data
                                                             10-bit A/D Converter: This module incorporates
1.1.5 EASY MIGRATION                                           programmable acquisition time, allowing for a
                                                               channel to be selected and a conversion to be
Regardless of the memory size, all devices share the           initiated without waiting for a sampling period and
same rich set of peripherals, allowing for a smooth            thus, reduce code overhead.
migration path as applications grow and evolve.
                                                             Extended Watchdog Timer (WDT): This
The consistent pinout scheme used throughout the               enhanced version incorporates a 16-bit prescaler,
entire family also aids in migrating to the next larger        allowing an extended time-out range that is stable
device. This is true when moving between the 64-pin            across operating voltage and temperature. See
members, between the 80-pin members, or even                   Section 28.0 "Electrical Characteristics" for
jumping from 64-pin to 80-pin devices.                         time-out periods.

DS39646C-page 8                                              2008 Microchip Technology Inc.
                                                              PIC18F8722 FAMILY

1.3 Details on Individual Family                            All other features for devices in this family are identical.
         Members                                            These are summarized in Table 1-2 and Table 1-2.

Devices in the PIC18F8722 family are available in           The pinouts for all devices are listed in Table 1-3 and
64-pin and 80-pin packages. Block diagrams for the          Table 1-4.
two groups are shown in Figure 1-1 and Figure 1-2.
                                                            Like all Microchip PIC18 devices, members of the
The devices are differentiated from each other in five      PIC18F8722 family are available as both standard and
ways:                                                       low-voltage devices. Standard devices with Enhanced
                                                            Flash memory, designated with an "F" in the part
1. Flash program memory (48 Kbytes for                      number (such as PIC18F6627), accommodate an
      PIC18F6527/8527 devices, 64 Kbytes for                operating VDD range of 4.2V to 5.5V. Low-voltage
      PIC18F6622/8622 devices, 96 Kbytes for                parts, designated by "LF" (such as PIC18LF6627),
      PIC18F6627/8627 devices and 128 Kbytes for            function over an extended VDD range of 2.0V to 5.5V.
      PIC18F6722/8722).

2. A/D channels (12 for 64-pin devices, 16 for
      80-pin devices).

3. I/O ports (7 bidirectional ports on 64-pin devices,
      9 bidirectional ports on 80-pin devices).

4. External Memory Bus, configurable for 8 and
      16-bit operation, is available on PIC18F8527/
      8622/8627/8722 devices.

TABLE 1-1: DEVICE FEATURES (PIC18F6527/6622/6627/6722)

           Features               PIC18F6527            PIC18F6622               PIC18F6627               PIC18F6722

Operating Frequency               DC 40 MHz           DC 40 MHz              DC 40 MHz              DC 40 MHz

Program Memory (Bytes)            48K                   64K                      96K                      128K

Program Memory (Instructions)     24576                 32768                    49152                    65536

Data Memory (Bytes)               3936                  3936                     3936                     3936

Data EEPROM Memory (Bytes)        1024                  1024                     1024                     1024

Interrupt Sources                 28                    28                       28                       28

I/O Ports                      Ports A, B, C, D, E, F, G Ports A, B, C, D, E, F, G Ports A, B, C, D, E, F, G Ports A, B, C, D, E, F, G

Timers                            5                     5                        5                        5

Capture/Compare/PWM               2                     2                        2                        2

Modules

Enhanced Capture/Compare/         3                     3                        3                        3

PWM Modules

Enhanced USART                    2                     2                        2                        2

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

Parallel Communications (PSP)     Yes                   Yes                      Yes                      Yes

10-bit Analog-to-Digital Module 12 Input Channels       12 Input Channels        12 Input Channels        12 Input Channels

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

                                  RESET Instruction,    RESET Instruction,       RESET Instruction,       RESET Instruction,

                                  Stack Full, Stack     Stack Full, Stack        Stack Full, Stack        Stack Full, Stack

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

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

Programmable                      Yes                   Yes                      Yes                      Yes

High/Low-Voltage Detect

Programmable Brown-out            Yes                   Yes                      Yes                      Yes

Reset

Instruction Set                     75 Instructions;         75 Instructions;         75 Instructions;         75 Instructions;
                                  83 with Extended         83 with Extended         83 with Extended         83 with Extended
                               Instruction Set enabled  Instruction Set enabled  Instruction Set enabled  Instruction Set enabled

Packages                          64-pin TQFP           64-pin TQFP              64-pin TQFP              64-pin TQFP

2008 Microchip Technology Inc.                                                                          DS39646C-page 9
PIC18F8722 FAMILY

TABLE 1-2: DEVICE FEATURES (PIC18F8527/8622/8627/8722)

           Features            PIC18F8527               PIC18F8622               PIC18F8627               PIC18F8722

Operating Frequency            DC 40 MHz              DC 40 MHz              DC 40 MHz              DC 40 MHz

Program Memory (Bytes)         48K                      64K                      96K                      128K

Program Memory (Instructions)  24576                    32768                    49152                    65536

Data Memory (Bytes)            3936                     3936                     3936                     3936

Data EEPROM Memory (Bytes)     1024                     1024                     1024                     1024

Interrupt Sources              29                       29                       29                       29

I/O Ports                      Ports A, B, C, D, E,     Ports A, B, C, D, E,     Ports A, B, C, D, E,     Ports A, B, C, D, E,
                                     F, G, H, J               F, G, H, J               F, G, H, J               F, G, H, J

Timers                         5                        5                        5                        5

Capture/Compare/PWM            2                        2                        2                        2

Modules

Enhanced Capture/Compare/      3                        3                        3                        3

PWM Modules

Enhanced USART                 2                        2                        2                        2

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

Parallel Communications        Yes                      Yes                      Yes                      Yes

(PSP)

10-bit Analog-to-Digital Module 16 Input Channels       16 Input Channels        16 Input Channels        16 Input Channels

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

                               RESET Instruction,       RESET Instruction,       RESET Instruction,       RESET Instruction,

                               Stack Full, Stack        Stack Full, Stack        Stack Full, Stack        Stack Full, Stack

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

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

Programmable                   Yes                      Yes                      Yes                      Yes

High/Low-Voltage Detect

Programmable Brown-out         Yes                      Yes                      Yes                      Yes

Reset

Instruction Set                     75 Instructions;         75 Instructions;         75 Instructions;         75 Instructions;
                                  83 with Extended         83 with Extended         83 with Extended         83 with Extended
                               Instruction Set enabled  Instruction Set enabled  Instruction Set enabled  Instruction Set enabled

Packages                       80-pin TQFP              80-pin TQFP              80-pin TQFP              80-pin TQFP

DS39646C-page 10                                                                         2008 Microchip Technology Inc.
                                                                                PIC18F8722 FAMILY

FIGURE 1-1:  PIC18F6527/6622/6627/6722 (64-PIN) BLOCK DIAGRAM

             Table Pointer<21>                                 Data Bus<8>

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

                                                                                         inc/dec                      PORTF
                                                                                          logic                     RF0: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

                                                                                     3     8 x 8 Multiply
                                                                                                                 8
                                                                                BITOP
OSC1(3)                  Internal                                 Power-up            8       W                 8
OSC2(3)                Oscillator                                   Timer
T1OSI                                                                                             8
T1OSO                     Block                                   Oscillator
MCLR(2)                                                        Start-up Timer              8                    8
VDD, VSS                 INTRC
                       Oscillator                                 Power-on                 ALU<8>
                                                                    Reset
                         8 MHz                                                  Precision            8
                       Oscillator                                Watchdog
                                                                    Timer       Band Gap
                     Single-Supply
                     Programming                                 Brown-out      Reference
                                                                    Reset
                        In-Circuit
                       Debugger                                   Fail-Safe
                                                               Clock Monitor

BOR          ADC     Timer0             Timer1 Timer2                          Timer3    Timer4 Comparators
HLVD         10-bit

ECCP1        ECCP2 ECCP3                CCP4                   CCP5 EUSART1 EUSART2 MSSP1 MSSP2

Note 1: See Table 1-3 for I/O port pin descriptions.

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

         3: OSC1/CLKI and OSC2/CLKO are only available in select oscillator modes and when these pins are not being used as
                digital I/O. Refer to Section 2.0 "Oscillator Configurations" for additional information.

2008 Microchip Technology Inc.                                                                                    DS39646C-page 11
PIC18F8722 FAMILY

FIGURE 1-2:                        PIC18F8527/8622/8627/8722 (80-PIN) BLOCK DIAGRAM

                                      Data Bus<8>

                                   Table Pointer<21>                           88                   Data Latch            PORTA
                                                                                                                         RA0:RA7(1)
                                     inc/dec logic             PCLATU PCLATH                      Data Memory
                                                21 20                                              (3.9 Kbytes)            PORTB
                                                               PCU PCH PCL                        Address Latch          RB0:RB7(1)
                                                                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                                                 RD0:RD7(1)
                                                                                       BSR      FSR0     Access
                                     (48/64/96/128                 Table Latch                            Bank             PORTE
                                         Kbytes)                                                FSR1                     RE0:RE7(1)

                                      Data Latch                                                FSR2        12             PORTF
                                                                                                                         RF0:RF7(1)
                                                            8                                   inc/dec
                                                                                                logic                      PORTG
                                                                                                                         RG0:RG5(1)
                                         Instruction Bus <16>  ROM Latch                        Address
                                                                     IR                         Decode                     PORTH
                                   AD15:AD0, A19:A16                                                                     RH0:RH7(1)
                                   (Multiplexed with PORTD,                                                      8
                                   PORTE and PORTH)                                                                        PORTJ
                                                                                                                         RJ0:RJ7(1)
                                           State Machine       Instruction                      PRODH PRODL
                                           Control Signals     Decode &
                                                                                                8 x 8 Multiply
                                                                 Control                    3                         8

                                                                                       BITOP          W             8
                                                                                             8
                                                                                                         8

OSC1(3)                                        Internal                   Power-up              8                   8
OSC2(3)                                      Oscillator                     Timer
T1OSI                                                                                           ALU<8>
T1OSO                                           Block                     Oscillator
MCLR(2)                                                                Start-up Timer                    8
VDD, VSS                                       INTRC
                                             Oscillator                   Power-on     Precision
                                                                            Reset      Band Gap
                                               8 MHz                                   Reference
                                             Oscillator                  Watchdog
                                                                            Timer
                                           Single-Supply
                                           Programming                   Brown-out
                                                                            Reset
                                              In-Circuit
                                             Debugger                     Fail-Safe
                                                                       Clock Monitor

BOR                                ADC     Timer0              Timer1  Timer2          Timer3   Timer4 Comparators
HLVD                               10-bit

ECCP1                              ECCP2 ECCP3                 CCP4    CCP5 EUSART1 EUSART2 MSSP1 MSSP2

Note 1:      See Table 1-4 for I/O port pin descriptions.
         2:
         3:  RG5 is only available when MCLR functionality is disabled.

             OSC1/CLKI and OSC2/CLKO are only available in select oscillator modes and when these pins are not being used as
             digital I/O. Refer to Section 2.0 "Oscillator Configurations" for additional information.

DS39646C-page 12                                                                                                          2008 Microchip Technology Inc.
                                                 PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 PINOUT I/O DESCRIPTIONS

Pin Name               Pin Number Pin Buffer                                      Description

                       TQFP           Type Type

RG5/MCLR/VPP                      7              Master Clear (input) or programming voltage (input).
    RG5
    MCLR                              I      ST  Digital input.

    VPP                               I      ST  Master Clear (Reset) input. This pin is an active-low

                                                 Reset to the device.

                                      P          Programming voltage input.

OSC1/CLKI/RA7                     39             Oscillator crystal or external clock input.
    OSC1
                                      I      ST  Oscillator crystal input or external clock source input.
    CLKI
                                                 ST buffer when configured in RC mode, CMOS
    RA7
                                                 otherwise.

                                      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 RC mode, 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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
            I = Input                 O          = Output
            P = Power                 I2CTM      = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

2008 Microchip Technology Inc.                                                               DS39646C-page 13
PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 PINOUT I/O DESCRIPTIONS (CONTINUED)

     Pin Name          Pin Number Pin Buffer                                      Description

                       TQFP  Type Type

                                                 PORTA is a bidirectional I/O port.

RA0/AN0                24
    RA0
    AN0                      I/O TTL             Digital I/O.

                             I Analog Analog input 0.

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/HLVDIN         27
    RA5
    AN4                      I/O TTL             Digital I/O.
    HLVDIN
                             I Analog Analog input 4.

                             I Analog High/Low-Voltage Detect input.

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
            P = Power        I2CTM               = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

DS39646C-page 14                                                                   2008 Microchip Technology Inc.
                                                  PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 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                     48
    RB0
    INT0                              I/O TTL     Digital I/O.
    FLT0
                                      I      ST   External interrupt 0.

                                      I      ST   PWM Fault input for ECCPx.

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

                                      I      ST   External interrupt 1.

RB2/INT2                          46
    RB2
    INT2                              I/O TTL     Digital I/O.

                                      I      ST   External interrupt 2.

RB3/INT3                          45
    RB3
    INT3                              I/O TTL     Digital I/O.

                                      I      ST   External interrupt 3.

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

                                      I      TTL  Interrupt-on-change pin.

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

                                      I/O    ST   Low-Voltage ICSPTM Programming enable pin.

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 ICSP programming clock pin.

RB7/KBI3/PGD                      37
    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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
            I = Input                 O           = Output
            P = Power                 I2CTM       = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

2008 Microchip Technology Inc.                                                               DS39646C-page 15
PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                      Description

                       TQFP  Type Type

                                                 PORTC is a bidirectional I/O port.

RC0/T1OSO/T13CKI       30
    RC0
    T1OSO                    I/O             ST  Digital I/O.
    T13CKI
                             O               --  Timer1 oscillator output.

                             I               ST  Timer1/Timer3 external clock input.

RC1/T1OSI/ECCP2/P2A    29

RC1                          I/O             ST  Digital I/O.
                                                 Timer1 oscillator input.
T1OSI                        I CMOS              Enhanced Capture 2 input/Compare 2 output/
ECCP2(1)                                         PWM 2 output.
                             I/O             ST  ECCP2 PWM output A.

P2A(1)                       O               --

RC2/ECCP1/P1A          33
    RC2
    ECCP1                    I/O             ST  Digital I/O.

    P1A                      I/O             ST  Enhanced Capture 1 input/Compare 1 output/

                                                 PWM 1 output.

                             O               --  ECCP1 PWM output A.

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

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

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               --  EUSART1 asynchronous transmit.

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

RC7/RX1/DT1            32
    RC7
    RX1                      I/O             ST  Digital I/O.
    DT1
                             I               ST  EUSART1 asynchronous receive.

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

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
            P = Power        I2CTM               = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

DS39646C-page 16                                                                   2008 Microchip Technology Inc.
                                                   PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                      Description

                       TQFP           Type Type

                                                   PORTD is a bidirectional I/O port.

RD0/PSP0                          58
    RD0
    PSP0                              I/O    ST    Digital I/O.

                                      I/O TTL      Parallel Slave Port data.

RD1/PSP1                          55
    RD1
    PSP1                              I/O    ST    Digital I/O.

                                      I/O TTL      Parallel Slave Port data.

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

                                      I/O TTL      Parallel Slave Port data.

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

                                      I/O TTL      Parallel Slave Port data.

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

                                      O      --    SPI data out.

RD5/PSP5/SDI2/SDA2                51

RD5                                   I/O    ST    Digital I/O.

PSP5                                  I/O TTL      Parallel Slave Port data.

SDI2                                  I      ST    SPI data in.
                                                   I2CTM data I/O.
SDA2                                  I/O I2C/SMB

RD6/PSP6/SCK2/SCL2                50

RD6                                   I/O    ST    Digital I/O.

PSP6                                  I/O TTL      Parallel Slave Port data.

SCK2                                  I/O    ST    Synchronous serial clock input/output for SPI mode.
                                                   Synchronous serial clock input/output for I2C mode.
SCL2                                  I/O I2C/SMB

RD7/PSP7/SS2                      49
    RD7
    PSP7                              I/O    ST    Digital I/O.
    SS2
                                      I/O TTL      Parallel Slave Port data.

                                      I      TTL   SPI slave select input.

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
            P = Power                 I2CTM        = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

2008 Microchip Technology Inc.                                                               DS39646C-page 17
PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                      Description

                       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  Read control for Parallel Slave Port.

                             O               --   ECCP2 PWM output D.

RE1/WR/P2C             1
    RE1
    WR                       I/O             ST   Digital I/O.
    P2C
                             I               TTL  Write control for Parallel Slave Port.

                             O               --   ECCP2 PWM output C.

RE2/CS/P2B             64
    RE2
    CS                       I/O             ST   Digital I/O.
    P2B
                             I               TTL  Chip select control for Parallel Slave Port.

                             O               --   ECCP2 PWM output B.

RE3/P3C                63
    RE3
    P3C                      I/O             ST   Digital I/O.

                             O               --   ECCP3 PWM output C.

RE4/P3B                62
    RE4
    P3B                      I/O             ST   Digital I/O.

                             O               --   ECCP3 PWM output B.

RE5/P1C                61
    RE5
    P1C                      I/O             ST   Digital I/O.

                             O               --   ECCP1 PWM output C.

RE6/P1B                60
    RE6
    P1B                      I/O             ST   Digital I/O.

                             O               --   ECCP1 PWM output B.

RE7/ECCP2/P2A          59
    RE7
    ECCP2(2)                 I/O             ST   Digital I/O.

    P2A(2)                   I/O             ST   Enhanced Capture 2 input/Compare 2 output/

                                                  PWM 2 output.

                             O               --   ECCP2 PWM output A.

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
            P = Power        I2CTM                = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

DS39646C-page 18                                                                   2008 Microchip Technology Inc.
                                                  PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                      Description

                       TQFP           Type Type

                                                  PORTF is a bidirectional I/O port.

RF0/AN5                           18
    RF0
    AN5                               I/O    ST   Digital I/O.

                                      I Analog Analog input 5.

RF1/AN6/C2OUT                     17
    RF1
    AN6                               I/O    ST   Digital I/O.
    C2OUT
                                      I Analog Analog input 6.

                                      O      --   Comparator 2 output.

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

                                      O      --   Comparator 1 output.

RF3/AN8                           15
    RF3
    AN8                               I/O    ST   Digital I/O.

                                      I Analog Analog input 8.

RF4/AN9                           14
    RF4
    AN9                               I/O    ST   Digital I/O.

                                      I Analog Analog input 9.

RF5/AN10/CVREF                    13
    RF5
    AN10                              I/O    ST   Digital I/O.
    CVREF
                                      I Analog Analog input 10.

                                      O Analog Comparator reference voltage output.

RF6/AN11                          12
    RF6
    AN11                              I/O    ST   Digital I/O.

                                      I Analog Analog input 11.

RF7/SS1                           11
    RF7
    SS1                               I/O    ST   Digital I/O.

                                      I      TTL  SPI slave select input.

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
            P = Power                 I2CTM       = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

2008 Microchip Technology Inc.                                                               DS39646C-page 19
PIC18F8722 FAMILY

TABLE 1-3: PIC18F6527/6622/6627/6722 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          3
    RG0
    ECCP3                    I/O             ST  Digital I/O.

    P3A                      I/O             ST  Enhanced Capture 3 input/Compare 3 output/

                                                 PWM 3 output.

                             O               --  ECCP3 PWM output A.

RG1/TX2/CK2            4
    RG1
    TX2                      I/O             ST  Digital I/O.
    CK2
                             O               --  EUSART2 asynchronous transmit.

                             I/O             ST  EUSART2 synchronous clock (see related RX2/DT2).

RG2/RX2/DT2            5
    RG2
    RX2                      I/O             ST  Digital I/O.
    DT2
                             I               ST  EUSART2 asynchronous receive.

                             I/O             ST  EUSART2 synchronous data (see related TX2/CK2).

RG3/CCP4/P3D           6
    RG3
    CCP4                     I/O             ST  Digital I/O.
    P3D
                             I/O             ST  Capture 4 input/Compare 4 output/PWM 4 output.

                             O               --  ECCP3 PWM output D.

RG4/CCP5/P1D           8
    RG4
    CCP5                     I/O             ST  Digital I/O.
    P1D
                             I/O             ST  Capture 5 input/Compare 5 output/PWM 5 output.

                             O               --  ECCP1 PWM output D.

RG5                                              See RG5/MCLR/VPP pin.

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

VDD                    10, 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.

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
            P = Power        I2CTM               = I2C/SMBus input buffer

            Default assignment for ECCP2 when Configuration bit, CCP2MX, is set.

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

DS39646C-page 20                                                                   2008 Microchip Technology Inc.
                                                 PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS

Pin Name               Pin Number Pin Buffer                                  Description

                       TQFP           Type Type

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

    VPP                               I      ST  Master Clear (Reset) input. This pin is an active-low

                                                 Reset to the device.

                                      P          Programming voltage input.

OSC1/CLKI/RA7                     49             Oscillator crystal or external clock input.
    OSC1
                                      I      ST  Oscillator crystal input or external clock source input.
    CLKI
                                                 ST buffer when configured in RC mode, CMOS
    RA7
                                                 otherwise.

                                      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 RC mode, 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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input                 O          = Output
        4:  P = Power                 I2CTM/SMB  = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

2008 Microchip Technology Inc.                                                                DS39646C-page 21
PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

     Pin Name          Pin Number Pin Buffer                                  Description

                       TQFP         Type Type

                                                 PORTA is a bidirectional I/O port.

RA0/AN0                30
    RA0
    AN0                             I/O TTL      Digital I/O.

                                    I Analog Analog input 0.

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/OD Digital I/O. Open-drain when configured as output.

                                    I        ST  Timer0 external clock input.

RA5/AN4/HLVDIN         33
    RA5
    AN4                             I/O TTL      Digital I/O.
    HLVDIN
                                    I Analog Analog input 4.

                                    I Analog High/Low-Voltage Detect input.

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:
        3:  I = Input               O            = Output
        4:  P = Power               I2CTM/SMB    = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

DS39646C-page 22                                                                   2008 Microchip Technology Inc.
                                                  PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 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   PWM Fault input for ECCPx.

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

                                      I      ST   External interrupt 1.

RB2/INT2                          56
    RB2
    INT2                              I/O TTL     Digital I/O.

                                      I      ST   External interrupt 2.

RB3/INT3/ECCP2/P2A                55

RB3                                   I/O TTL     Digital I/O.

INT3                                  I      ST   External interrupt 3.
ECCP2(1)
                                      O      --   Enhanced Capture 2 input/Compare 2 output/

P2A(1)                                O      --   PWM 2 output.
                                                  ECCP2 PWM output A.

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

                                      I      TTL  Interrupt-on-change pin.

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

                                      I/O    ST   Low-Voltage ICSPTM Programming enable pin.

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input                 O           = Output
        4:  P = Power                 I2CTM/SMB   = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

2008 Microchip Technology Inc.                                                                DS39646C-page 23
PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                  Description

                       TQFP  Type Type

                                                 PORTC is a bidirectional I/O port.

RC0/T1OSO/T13CKI       36
    RC0
    T1OSO                    I/O             ST  Digital I/O.
    T13CKI
                             O               --  Timer1 oscillator output.

                             I               ST  Timer1/Timer3 external clock input.

RC1/T1OSI/ECCP2/P2A    35

RC1                          I/O             ST  Digital I/O.
                                                 Timer1 oscillator input.
T1OSI                        I CMOS              Enhanced Capture 2 input/Compare 2 output/
ECCP2(2)                                         PWM 2 output.
                             I/O             ST  ECCP2 PWM output A.

P2A(2)                       O               --

RC2/ECCP1/P1A          43
    RC2
    ECCP1                    I/O             ST  Digital I/O.

    P1A                      I/O             ST  Enhanced Capture 1 input/Compare 1 output/

                                                 PWM 1 output.

                             O               --  ECCP1 PWM 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.
                                                 Synchronous serial clock input/output for I2CTM mode.
                             I/O             ST

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

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               --  EUSART1 asynchronous transmit.

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

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

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

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input        O                   = Output
        4:  P = Power        I2CTM/SMB           = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except
            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

DS39646C-page 24                                                                   2008 Microchip Technology Inc.
                                                   PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                  Description

                       TQFP           Type Type

                                                   PORTD is a bidirectional I/O port.

RD0/AD0/PSP0                      72
    RD0
    AD0                               I/O    ST    Digital I/O.
    PSP0
                                      I/O TTL      External memory address/data 0.

                                      I/O TTL      Parallel Slave Port data.

RD1/AD1/PSP1                      69
    RD1
    AD1                               I/O    ST    Digital I/O.
    PSP1
                                      I/O TTL      External memory address/data 1.

                                      I/O TTL      Parallel Slave Port data.

RD2/AD2/PSP2                      68
    RD2
    AD2                               I/O    ST    Digital I/O.
    PSP2
                                      I/O TTL      External memory address/data 2.

                                      I/O TTL      Parallel Slave Port data.

RD3/AD3/PSP3                      67
    RD3
    AD3                               I/O    ST    Digital I/O.
    PSP3
                                      I/O TTL      External memory address/data 3.

                                      I/O TTL      Parallel Slave Port data.

RD4/AD4/PSP4/SDO2                 66

RD4                                   I/O    ST    Digital I/O.

AD4                                   I/O TTL      External memory address/data 4.

PSP4                                  I/O TTL      Parallel Slave Port data.

SDO2                                  O      --    SPI data out.

RD5/AD5/PSP5/                     65
SDI2/SDA2
                                      I/O    ST    Digital I/O.
    RD5
    AD5                               I/O TTL      External memory address/data 5.
    PSP5                                           Parallel Slave Port data.
    SDI2                              I/O TTL
    SDA2                                           SPI data in.
                                      I      ST    I2CTM data I/O.

                                      I/O I2C/SMB

RD6/AD6/PSP6/                     64
SCK2/SCL2
                                      I/O    ST    Digital I/O.
    RD6                                            External memory address/data 6.
    AD6                               I/O TTL
    PSP6                                           Parallel Slave Port data.
    SCK2                              I/O TTL
    SCL2                                           Synchronous serial clock input/output for SPI mode.
                                      I/O    ST    Synchronous serial clock input/output for I2C mode.

                                      I/O I2C/SMB

RD7/AD7/PSP7/SS2                  63
    RD7
    AD7                               I/O    ST    Digital I/O.
    PSP7
    SS2                               I/O TTL      External memory address/data 7.

                                      I/O TTL      Parallel Slave Port data.

                                      I      TTL   SPI slave select input.

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input                 O            = Output
        4:  P = Power                 I2CTM/SMB    = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

2008 Microchip Technology Inc.                                                                DS39646C-page 25
PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                  Description

                       TQFP  Type Type

                                                  PORTE is a bidirectional I/O port.

RE0/AD8/RD/P2D         4
    RE0
    AD8                      I/O             ST   Digital I/O.
    RD
    P2D                      I/O TTL              External memory address/data 8.

                             I               TTL  Read control for Parallel Slave Port.

                             O               --   ECCP2 PWM output D.

RE1/AD9/WR/P2C         3
    RE1
    AD9                      I/O             ST   Digital I/O.
    WR
    P2C                      I/O TTL              External memory address/data 9.

                             I               TTL  Write control for Parallel Slave Port.

                             O               --   ECCP2 PWM output C.

RE2/AD10/CS/P2B        78
    RE2
    AD10                     I/O             ST   Digital I/O.
    CS
    P2B                      I/O TTL              External memory address/data 10.

                             I               TTL  Chip select control for Parallel Slave Port.

                             O               --   ECCP2 PWM output B.

RE3/AD11/P3C           77

    RE3                      I/O             ST   Digital I/O.

    AD11                     I/O TTL              External memory address/data 11.
    P3C(4)
                             O               --   ECCP3 PWM output C.

RE4/AD12/P3B           76

    RE4                      I/O             ST   Digital I/O.

    AD12                     I/O TTL              External memory address/data 12.
    P3B(4)
                             O               --   ECCP3 PWM output B.

RE5/AD13/P1C           75

    RE5                      I/O             ST   Digital I/O.

    AD13                     I/O TTL              External memory address/data 13.
    P1C(4)
                             O               --   ECCP1 PWM output C.

RE6/AD14/P1B           74

    RE6                      I/O             ST   Digital I/O.

    AD14                     I/O TTL              External memory address/data 14.
    P1B(4)
                             O               --   ECCP1 PWM output B.

RE7/AD15/ECCP2/P2A     73

RE7                          I/O             ST   Digital I/O.
                                                  External memory address/data 15.
AD15                         I/O TTL              Enhanced Capture 2 input/Compare 2 output/
ECCP2(3)                                          PWM 2 output.
                             I/O             ST   ECCP2 PWM output A.

P2A(3)                       O               --

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input        O                    = Output
        4:  P = Power        I2CTM/SMB            = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except
            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

DS39646C-page 26                                                                   2008 Microchip Technology Inc.
                                                  PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                  Description

                       TQFP           Type Type

                                                  PORTF is a bidirectional I/O port.

RF0/AN5                           24
    RF0
    AN5                               I/O    ST   Digital I/O.

                                      I Analog Analog input 5.

RF1/AN6/C2OUT                     23
    RF1
    AN6                               I/O    ST   Digital I/O.
    C2OUT
                                      I Analog Analog input 6.

                                      O      --   Comparator 2 output.

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

                                      O      --   Comparator 1 output.

RF3/AN8                           17
    RF3
    AN8                               I/O    ST   Digital I/O.

                                      I Analog Analog input 8.

RF4/AN9                           16
    RF4
    AN9                               I/O    ST   Digital I/O.

                                      I Analog Analog input 9.

RF5/AN10/CVREF                    15
    RF5
    AN10                              I/O    ST   Digital I/O.
    CVREF
                                      I Analog Analog input 10.

                                      O Analog Comparator reference voltage output.

RF6/AN11                          14
    RF6
    AN11                              I/O    ST   Digital I/O.

                                      I Analog Analog input 11.

RF7/SS1                           13
    RF7
    SS1                               I/O    ST   Digital I/O.

                                      I      TTL  SPI slave select input.

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input                 O           = Output
        4:  P = Power                 I2CTM/SMB   = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

2008 Microchip Technology Inc.                                                                DS39646C-page 27
PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 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  Enhanced Capture 3 input/Compare 3 output/

                                                 PWM 3 output.

                                    O        --  ECCP3 PWM output A.

RG1/TX2/CK2            6
    RG1
    TX2                             I/O      ST  Digital I/O.
    CK2
                                    O        --  EUSART2 asynchronous transmit.

                                    I/O      ST  EUSART2 synchronous clock (see related RX2/DT2).

RG2/RX2/DT2            7
    RG2
    RX2                             I/O      ST  Digital I/O.
    DT2
                                    I        ST  EUSART2 asynchronous receive.

                                    I/O      ST  EUSART2 synchronous data (see related TX2/CK2).

RG3/CCP4/P3D           8
    RG3
    CCP4                            I/O      ST  Digital I/O.
    P3D
                                    I/O      ST  Capture 4 input/Compare 4 output/PWM 4 output.

                                    O        --  ECCP3 PWM output D.

RG4/CCP5/P1D           10
    RG4
    CCP5                            I/O      ST  Digital I/O.
    P1D
                                    I/O      ST  Capture 5 input/Compare 5 output/PWM 5 output.

                                    O        --  ECCP1 PWM output D.

RG5                                              See RG5/MCLR/VPP 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:
        3:  I = Input               O            = Output
        4:  P = Power               I2CTM/SMB    = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

DS39646C-page 28                                                                   2008 Microchip Technology Inc.
                                                 PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

Pin Name               Pin Number Pin Buffer                                  Description

                       TQFP           Type Type

                                                 PORTH is a bidirectional I/O port.

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

                                      I/O TTL    External memory address/data 16.

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

                                      I/O TTL    External memory address/data 17.

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

                                      I/O TTL    External memory address/data 18.

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

                                      I/O TTL    External memory address/data 19.

RH4/AN12/P3C                      22

    RH4                               I/O    ST  Digital I/O.

    AN12                              I Analog Analog input 12.
    P3C(5)
                                      O      --  ECCP3 PWM output C.

RH5/AN13/P3B                      21

    RH5                               I/O    ST  Digital I/O.

    AN13                              I Analog Analog input 13.
    P3B(5)
                                      O      --  ECCP3 PWM output B.

RH6/AN14/P1C                      20

    RH6                               I/O    ST  Digital I/O.

    AN14                              I Analog Analog input 14.
    P1C(5)
                                      O      --  ECCP1 PWM output C.

RH7/AN15/P1B                      19

    RH7                               I/O    ST  Digital I/O.

    AN15                              I Analog Analog input 15.
    P1B(5)
                                      O      --  ECCP1 PWM output B.

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input                 O          = Output
        4:  P = Power                 I2CTM/SMB  = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except
            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

2008 Microchip Technology Inc.                                                                DS39646C-page 29
PIC18F8722 FAMILY

TABLE 1-4: PIC18F8527/8622/8627/8722 PINOUT I/O DESCRIPTIONS (CONTINUED)

      Pin Name         Pin Number Pin Buffer                                  Description

                       TQFP         Type Type

                                                 PORTJ is a bidirectional I/O port.

RJ0/ALE                62
    RJ0
    ALE                             I/O      ST  Digital I/O.

                                    O        --  External memory address latch enable.

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

                                    O        --  External memory output enable.

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

                                    O        --  External memory write low control.

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

                                    O        --  External memory write high control.

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

                                    O        --  External memory byte address 0 control.

RJ5/CE                 40
    RJ4
    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                    12, 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.

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

Note 1:     ST = Schmitt Trigger input with CMOS levels Analog= Analog input
        2:
        3:  I = Input               O            = Output
        4:  P = Power               I2CTM/SMB    = I2C/SMBus input buffer
        5:
            Alternate assignment for ECCP2 when Configuration bit, CCP2MX, is cleared (all operating modes except

            Microcontroller mode).

            Default assignment for ECCP2 in all operating modes (CCP2MX is set).

            Alternate assignment for ECCP2 when CCP2MX is cleared (Microcontroller mode only).

            Default assignment for P1B/P1C/P3B/P3C (ECCPMX is set).

            Alternate assignment for P1B/P1C/P3B/P3C (ECCPMX is clear).

DS39646C-page 30                                                                   2008 Microchip Technology Inc.
                                                          PIC18F8722 FAMILY

2.0 OSCILLATOR                                            FIGURE 2-1:        CRYSTAL/CERAMIC
         CONFIGURATIONS                                                      RESONATOR OPERATION
                                                                             (XT, LP, HS OR HSPLL
2.1 Oscillator Types                                                         CONFIGURATION)

The PIC18F8722 family of devices can be operated in       C1(1)        OSC1
ten different oscillator modes. The user can program the
Configuration bits, FOSC<3:0>, in Configuration                  XTAL        RF(3)               To
Register 1H to select one of these ten modes:                                                    Internal
                                                                                                 Logic

1. LP  Low-Power Crystal                                         RS(2)               Sleep
2. XT  Crystal/Resonator
3. HS  High-Speed Crystal/Resonator                       C2(1)        OSC2         PIC18FXXXX

4. HSPLL High-Speed Crystal/Resonator                     Note 1: See Table 2-1 and Table 2-2 for initial values of
                  with PLL enabled                                      C1 and C2.

5. RC  External Resistor/Capacitor with                           2: A series resistor (RS) may be required for AT
       FOSC/4 output on RA6                                             strip cut crystals.

6. RCIO External Resistor/Capacitor with I/O                      3: RF varies with the oscillator mode chosen.
                  on RA6

7. INTIO1 Internal Oscillator with FOSC/4 output          TABLE 2-1: CAPACITOR SELECTION FOR
                  on RA6 and I/O on RA7                                        CERAMIC RESONATORS

8. INTIO2 Internal Oscillator with I/O on RA6
                  and RA7

9. EC  External Clock with FOSC/4 output                         Typical Capacitor Values Used:

10. ECIO External Clock with I/O on RA6                   Mode         Freq  OSC1                OSC2

2.2 Crystal Oscillator/Ceramic                            XT     3.58 MHz    22 pF               22 pF
         Resonators
                                                          Capacitor values are for design guidance only.

In XT, LP, HS or HSPLL Oscillator modes, a crystal or     Different capacitor values may be required to produce
ceramic resonator is connected to the OSC1 and            acceptable oscillator operation. The user should test
OSC2 pins to establish oscillation. Figure 2-1 shows      the performance of the oscillator over the expected
the pin connections.                                      VDD and temperature range for the application. Refer
                                                          to the following application notes for oscillator specific
The oscillator design requires the use of a parallel cut  information:
crystal.
                                                          AN588 PIC Microcontroller Oscillator Design
Note:  Use of a series cut crystal may give a                Guide
       frequency out of the crystal manufacturer's
       specifications.                                     AN826 Crystal Oscillator Basics and Crystal
                                                             Selection for rfPIC and PIC Devices

                                                          AN849 Basic PIC Oscillator Design
                                                          AN943 Practical PIC Oscillator Analysis and

                                                             Design

                                                          AN949 Making Your Oscillator Work

                                                          See the notes following Table 2-2 for additional
                                                          information.

                                                          Note:  When using resonators with frequencies
                                                                 above 3.5 MHz, the use of HS mode,
                                                                 rather than XT mode, is recommended.
                                                                 HS mode may be used at any VDD for
                                                                 which the controller is rated. If HS is
                                                                 selected, it is possible that the gain of the
                                                                 oscillator will overdrive the resonator.
                                                                 Therefore, a series resistor may be placed
                                                                 between the OSC2 pin and the resonator.
                                                                 As a good starting point, the
                                                                 recommended value of RS is 330.

2008 Microchip Technology Inc.                                                    DS39646C-page 31
PIC18F8722 FAMILY

TABLE 2-2: CAPACITOR SELECTION FOR                          An external clock source may also be connected to the
                     QUARTZ CRYSTALS                        OSC1 pin in the HS mode, as shown in Figure 2-2.
                                                            When operated in this mode, parameters D033 and
          Crystal  Typical Capacitor Values                 D043 apply.
           Freq                Tested:
Osc Type

                   C1     C2                                FIGURE 2-2:             EXTERNAL CLOCK INPUT
                                                                                    OPERATION (HS OSC
LP        32 kHz   22 pF  22 pF                                                     CONFIGURATION)

XT        1 MHz    22 pF  22 pF

          4 MHz    22 pF  22 pF

HS        4 MHz    22 pF  22 pF                             Clock from              OSC1
                          22 pF                             Ext. System
          10 MHz   22 pF  22 pF                                                             PIC18FXXXX
                          22 pF                                               Open
          20 MHz   22 pF                                                            OSC2 (HS Mode)

          25 MHz   22 pF

Capacitor values are for design guidance only.

Different capacitor values may be required to produce       2.3 External Clock Input
acceptable oscillator operation. The user should test
the performance of the oscillator over the expected         The EC and ECIO Oscillator modes require an external
VDD and temperature range for the application. Refer        clock source to be connected to the OSC1 pin. There is
to the following application notes for oscillator specific  no oscillator start-up time required after a Power-on
information:                                                Reset or after an exit from Sleep mode.

AN588 PIC Microcontroller Oscillator Design            In the EC Oscillator mode, the oscillator frequency
   Guide                                                    divided by 4 is available on the OSC2 pin. This signal
                                                            may be used for test purposes or to synchronize other
AN826 Crystal Oscillator Basics and Crystal             logic. Figure 2-3 shows the pin connections for the EC
   Selection for rfPIC and PIC Devices                    Oscillator mode.

AN849 Basic PIC Oscillator Design                      FIGURE 2-3:             EXTERNAL CLOCK
AN943 Practical PIC Oscillator Analysis and                                    INPUT OPERATION
                                                                                    (EC CONFIGURATION)
   Design

AN949 Making Your Oscillator Work

See the notes following this table for additional
information.

Note 1: Higher capacitance increases the stability          Clock from              OSC1/CLKI
            of the oscillator but also increases the        Ext. System
            start-up time.                                                                  PIC18FXXXX
                                                                            FOSC/4
       2: When operating below 3V VDD, or when                                      OSC2/CLKO
            using certain ceramic resonators at any
            voltage, it may be necessary to use the         The ECIO Oscillator mode functions like the EC mode,
            HS mode or switch to a crystal oscillator.      except that the OSC2 pin becomes an additional
                                                            general purpose I/O pin. The I/O pin becomes bit 6 of
       3: Since each resonator/crystal has its own          PORTA (RA6). Figure 2-4 shows the pin connections
            characteristics, the user should consult        for the ECIO Oscillator mode. When operated in this
            the resonator/crystal manufacturer for          mode, parameters D033A and D043A apply.
            appropriate values of external
            components.                                     FIGURE 2-4:             EXTERNAL CLOCK
                                                                                    INPUT OPERATION
       4: Rs may be required to avoid overdriving                                   (ECIO CONFIGURATION)
            crystals with low drive level specification.
                                                            Clock from              OSC1/CLKI
       5: Always verify oscillator performance over         Ext. System
            the VDD and temperature range that is                                           PIC18FXXXX
            expected for the application.                                     RA6
                                                                                    I/O (OSC2)

DS39646C-page 32                                                                     2008 Microchip Technology Inc.
                                                            PIC18F8722 FAMILY

2.4 RC Oscillator                                           2.5 PLL Frequency Multiplier

For timing insensitive applications, the RC and RCIO        A Phase Locked Loop (PLL) circuit is provided as an
Oscillator modes offer additional cost savings. The         option for users who wish to use a lower frequency
actual oscillator frequency is a function of several        oscillator circuit or to clock the device up to its highest
factors:                                                    rated frequency from a crystal oscillator. This may be
                                                            useful for customers who are concerned with EMI due
supply voltage                                            to high-frequency crystals or users who require higher
values of the external resistor (REXT) and                clock speeds from an internal oscillator.

   capacitor (CEXT)                                         2.5.1 HSPLL OSCILLATOR MODE
operating temperature
                                                            The HSPLL mode makes use of the HS mode oscillator
Given the same device, operating voltage and tempera-       for frequencies up to 10 MHz. A PLL then multiplies the
ture and component values, there will also be unit-to-unit  oscillator output frequency by 4 to produce an internal
frequency variations. These are due to factors such as:     clock frequency up to 40 MHz. The PLLEN bit is not
                                                            available when this mode is configured as the primary
normal manufacturing variation                            clock source.
difference in lead frame capacitance between
                                                            The PLL is only available to the crystal oscillator when
   package types (especially for low CEXT values)           the FOSC<3:0> Configuration bits are programmed for
variations within the tolerance of limits of REXT         HSPLL mode (= 0110).

   and CEXT                                                 FIGURE 2-7:         HSPLL BLOCK DIAGRAM

In the RC Oscillator mode, the oscillator frequency           HS Oscillator Enable
divided by 4 is available on the OSC2 pin. This signal                     PLL Enable
may be used for test purposes or to synchronize other
logic. Figure 2-5 shows how the R/C combination is          (from Configuration Register 1H)
connected.

FIGURE 2-5:   RC OSCILLATOR MODE

         VDD                                                OSC2

REXT                                                                   HS Mode  FIN      Phase
                                                            OSC1 Crystal        FOUT  Comparator

              OSC1                   Internal                             Osc
                                      Clock

CEXT                                 PIC18FXXXX                                       Loop
VSS                                                                                   Filter

                          OSC2/CLKO
              FOSC/4

Recommended values: 3 k  REXT  100 k                                            4    VCO              SYSCLK
                                20 pF  CEXT  300 pF
                                                                                                  MUX

The RCIO Oscillator mode (Figure 2-6) functions like        2.5.2 PLL AND INTOSC
the RC mode, except that the OSC2 pin becomes an
additional general purpose I/O pin. The I/O pin             The PLL is also available to the internal oscillator block
becomes bit 6 of PORTA (RA6).                               when the internal oscillator block is configured as the
                                                            primary clock source. In this configuration, the PLL is
FIGURE 2-6:   RCIO OSCILLATOR MODE                          enabled in software and generates a clock output of up
                                                            to 32 MHz. The operation of INTOSC with the PLL is
         VDD                                                described in Section 2.6.4 "PLL in INTOSC Modes".

REXT

              OSC1                   Internal
                                      Clock

CEXT                                 PIC18FXXXX
VSS

      RA6     I/O (OSC2)

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

2008 Microchip Technology Inc.                                                              DS39646C-page 33
PIC18F8722 FAMILY

2.6 Internal Oscillator Block                             2.6.2 INTOSC OUTPUT FREQUENCY

The PIC18F8722 family of devices includes an internal     The internal oscillator block is calibrated at the factory
oscillator block which generates two different clock      to produce an INTOSC output frequency of 8 MHz.
signals; either can be used as the microcontroller's
clock source. This may eliminate the need for external    The INTRC oscillator operates independently of the
oscillator circuits on the OSC1 and/or OSC2 pins.         INTOSC source. Any changes in INTOSC across
                                                          voltage and temperature are not necessarily reflected
The main output (INTOSC) is an 8 MHz clock source,        by changes in INTRC or vice versa.
which can be used to directly drive the device clock. It
also drives a postscaler, which can provide a range of    2.6.3 OSCTUNE REGISTER
clock frequencies from 31 kHz to 4 MHz. The INTOSC
output is enabled when a clock frequency from 125 kHz     The INTOSC output has been calibrated at the
to 8 MHz is selected. The INTOSC output can also be       factory but can be adjusted in the user's application.
enabled when 31 kHz is selected, depending on the         This is done by writing to TUN<4:0>
INTSRC bit (OSCTUNE<7>).                                  (OSCTUNE<4:0>) in the OSCTUNE register
                                                          (Register ).
The other clock source is the internal RC oscillator
(INTRC), which provides a nominal 31 kHz output.          When the OSCTUNE register is modified, the INTOSC
INTRC is enabled if it is selected as the device clock    frequency will begin shifting to the new frequency. The
source; it is also enabled automatically when any of the  INTOSC clock will stabilize within 1 ms. Code execu-
following are enabled:                                    tion continues during this shift. There is no indication
                                                          that the shift has occurred. The INTRC is not affected
Power-up Timer                                          by OSCTUNE.
Fail-Safe Clock Monitor
Watchdog Timer                                          The OSCTUNE register also implements the INTSRC
Two-Speed Start-up                                      (OSCTUNE<7>) and PLLEN (OSCTUNE<6>) bits,
                                                          which control certain features of the internal oscillator
These features are discussed in greater detail in         block. The INTSRC bit allows users to select which
Section 25.0 "Special Features of the CPU".               internal oscillator provides the clock source when the
                                                          31 kHz frequency option is selected. This is covered in
The clock source frequency (INTOSC direct, INTRC          greater detail in Section 2.7.1 "Oscillator Control
direct or INTOSC postscaler) is selected by configuring   Register".
the IRCF bits of the OSCCON register (page 39).
                                                          The PLLEN bit controls the operation of the Phase
2.6.1 INTIO MODES                                         Locked Loop (PLL) in internal oscillator modes (see
                                                          Figure 2-10).
Using the internal oscillator as the clock source elimi-
nates the need for up to two external oscillator pins,    FIGURE 2-10:  INTOSC AND PLL BLOCK
which can then be used for digital I/O. Two distinct                    DIAGRAM
configurations are available:
                                                                          8 or 4 MHz
In INTIO1 mode, the OSC2 pin outputs FOSC/4,                                  PLLEN
   while OSC1 functions as RA7 (see Figure 2-8) for
   digital input and output.                                            (OSCTUNE<6>)

In INTIO2 mode, OSC1 functions as RA7 and                             FIN      Phase
   OSC2 functions as RA6 (see Figure 2-9), both for                     FOUT  Comparator
   digital input and output.

                                                          INTOSC

FIGURE 2-8: INTIO1 OSCILLATOR MODE

    RA7           I/O (OSC1)  PIC18FXXXX                                      Loop
FOSC/4            OSC2                                                        Filter

                                                                          4  VCO                                    SYSCLK
                                                                  RA6
FIGURE 2-9: INTIO2 OSCILLATOR MODE                        CLKO   MUX
                                                           OSC2                                                 MUX
RA7               I/O (OSC1)
                              PIC18FXXXX
RA6               I/O (OSC2)

DS39646C-page 34                                                               2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

2.6.4 PLL IN INTOSC MODES                                  2.6.5 INTOSC FREQUENCY DRIFT

The 4x Phase Locked Loop (PLL) can be used with the        The factory calibrates the internal oscillator block
internal oscillator block to produce faster device clock   output (INTOSC) for 8 MHz. However, this frequency
speeds than are normally possible with the internal        may drift as VDD or temperature changes and can
oscillator sources. When enabled, the PLL produces a       affect the controller operation in a variety of ways. It is
clock speed of 16 MHz or 32 MHz.                           possible to adjust the INTOSC frequency by modifying
                                                           the value in the OSCTUNE register. Depending on the
Unlike HSPLL mode, the PLL is controlled through           device, this may have no effect on the INTRC clock
software. The control bit, PLLEN (OSCTUNE<6>), is          source frequency.
used to enable or disable its operation.
                                                           Tuning the INTOSC source requires knowing when to
The PLL is available when the device is configured to      make the adjustment, in which direction it should be
use the internal oscillator block as its primary clock     made and in some cases, how large a change is
source (FOSC<3:0> = 1001 or 1000). Additionally, the       needed. Three compensation techniques are discussed
PLL will only function when the selected output fre-       in Section 2.6.5.1 "Compensating with the
quency is either 4 MHz or 8 MHz (OSCCON<6:4> = 111         EUSART", Section 2.6.5.2 "Compensating with the
or 110). If both of these conditions are not met, the PLL  Timers" and Section 2.6.5.3 "Compensating with the
is disabled and the PLLEN bit remains clear (writes are    CCP Module in Capture Mode" but other techniques
ignored).                                                  may be used.

REGISTER 2-1: OSCTUNE: OSCILLATOR TUNING REGISTER

R/W-0              R/W-0             U-0            R/W-0  R/W-0                 R/W-0  R/W-0  R/W-0
                                                    TUN4   TUN3                  TUN2   TUN1   TUN0
INTSRC      PLLEN(1)                 --
                                                                                                      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    INTSRC: Internal Oscillator Low-Frequency Source Select bit

bit 6    1 = 31.25 kHz device clock derived from 8 MHz INTOSC source (divide-by-256 enabled)
         0 = 31 kHz device clock derived directly from INTRC internal oscillator
bit 5    PLLEN: Frequency Multiplier PLL for INTOSC Enable bit(1)
bit 4-0
         1 = PLL enabled for INTOSC (4 MHz and 8 MHz only)
         0 = PLL disabled

         Unimplemented: Read as `0'

         TUN<4:0>: Frequency Tuning bits

         01111 = Maximum frequency

                                 

                                 

         00001

         00000 = Center frequency. Oscillator module is running at the calibrated frequency.

         11111

                                 

                                 

         10000 = Minimum frequency

Note 1: Available only in certain oscillator configurations; otherwise, this bit is unavailable and reads as `0'. See
              Section 2.6.4 "PLL in INTOSC Modes" for details.

2008 Microchip Technology Inc.                                                               DS39646C-page 35
PIC18F8722 FAMILY                                          2.6.5.3  Compensating with the CCP Module
                                                                    in Capture Mode
2.6.5.1 Compensating with the EUSART
                                                           A CCP module can use free running Timer1 (or
An adjustment may be required when the EUSART              Timer3), clocked by the internal oscillator block and an
begins to generate framing errors or receives data with    external event with a known period (i.e., AC power
errors while in Asynchronous mode. Framing errors          frequency). The time of the first event is captured in the
indicate that the device clock frequency is too high. To   CCPRxH:CCPRxL registers and is recorded for use
adjust for this, decrement the value in OSCTUNE to         later. When the second event causes a capture, the
reduce the clock frequency. On the other hand, errors      time of the first event is subtracted from the time of the
in data may suggest that the clock speed is too low. To    second event. Since the period of the external event is
compensate, increment OSCTUNE to increase the              known, the time difference between events can be
clock frequency.                                           calculated.

2.6.5.2 Compensating with the Timers                       If the measured time is much greater than the
                                                           calculated time, the internal oscillator block is running
This technique compares device clock speed to some         too fast. To compensate, decrement the OSCTUNE
reference clock. Two timers may be used; one timer is      register. If the measured time is much less than the
clocked by the peripheral clock, while the other is        calculated time, the internal oscillator block is running
clocked by a fixed reference source, such as the           too slow. To compensate, increment the OSCTUNE
Timer1 oscillator.                                         register.

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.

DS39646C-page 36                                                    2008 Microchip Technology Inc.
                                                            PIC18F8722 FAMILY

2.7 Clock Sources and Oscillator                            The secondary oscillators are those external sources
         Switching                                          not connected to the OSC1 or OSC2 pins. These
                                                            sources may continue to operate even after the
The PIC18F8722 family of devices includes a feature         controller is placed in a power-managed mode.
that allows the device clock source to be switched from
the main oscillator to an alternate clock source. These     The PIC18F8722 family of devices offers the Timer1
devices also offer two alternate clock sources. When        oscillator as a secondary oscillator. This oscillator, in all
an alternate clock source is enabled, the various           power-managed modes, is often the time base for
power-managed operating modes are available.                functions such as a real-time clock.

Essentially, there are three clock sources for these        Most often, a 32.768 kHz watch crystal is connected
devices:                                                    between the RC0/T1OSO/T13CKI and RC1/T1OSI
                                                            pins. Like the LP mode oscillator circuit, loading
Primary oscillators                                       capacitors are also connected from each pin to ground.
Secondary oscillators
Internal oscillator block                                 The Timer1 oscillator is discussed in greater detail in
                                                            Section 13.3 "Timer1 Oscillator".
The primary oscillators include the External Crystal
and Resonator modes, the External RC modes, the             In addition to being a primary clock source, the internal
External Clock modes and the internal oscillator block.     oscillator block is available as a power-managed
The particular mode is defined by the FOSC<3:0>             mode clock source. The INTRC source is also used as
Configuration bits. The details of these modes are          the clock source for several special features, such as
covered earlier in this chapter.                            the WDT and Fail-Safe Clock Monitor.

                                                            The clock sources for the PIC18F8722 family of devices
                                                            are shown in Figure 2-11. See Section 25.0 "Special
                                                            Features of the CPU" for Configuration register details.

FIGURE 2-11:  PIC18F8722 FAMILY CLOCK DIAGRAM

              Primary Oscillator  PIC18F6527/6622/6627/6722/8527/8622/8627/8722
                                                                                                 LP, XT, HS, RC, EC
  OSC2
  OSC1                         Sleep                        4 x PLL HSPLL, INTOSC/PLL                                                           Peripherals
T1OSO                                                                                         T1OSC
T1OSI                                          OSCTUNE<6>
              Secondary Oscillator
                                                  Postscaler
                  T1OSCEN                                                               MUXOSCCON<6:4>Internal Oscillator
                  Enable                                                                                                            MUX
                  Oscillator                                     8 MHz                                                                          CPU
                                                                            111
              OSCCON<6:4>
                                                                 4 MHz
               Internal                                                     110                                                                 IDLEN
              Oscillator
                                                                 2 MHz                                                                 Clock
                Block                                                       101                                                        Control

                8 MHz               8 MHz                        1 MHz               FOSC<3:0> OSCCON<1:0>
                Source            (INTOSC)                                  100
                                                                                                Clock Source Option
                INTRC                                         500 kHz                           for other Modules
                Source                                                      011

                                  31 kHz (INTRC)              250 kHz
                                                                            010

                                                              125 kHz
                                                                            001

                                                            1 31 kHz 000
                                                            0

                                                                         OSCTUNE<7>

                                                                                     WDT, PWRT, FSCM
                                                                                     and Two-Speed Start-up

2008 Microchip Technology Inc.                                                                                                                DS39646C-page 37
PIC18F8722 FAMILY                                          the primary clock is providing the device clock in
                                                           primary clock modes. The IOFS bit indicates when the
2.7.1 OSCILLATOR CONTROL REGISTER                          internal oscillator block has stabilized and is providing
                                                           the device clock in RC Clock modes. The T1RUN bit
The OSCCON register (Register 2-2) controls several        (T1CON<6>) indicates when the Timer1 oscillator is
aspects of the device clock's operation, both in full      providing the device clock in secondary clock modes.
power operation and in power-managed modes.                In power-managed modes, only one of these three bits
                                                           will be set at any time. If none of these bits are set, the
The System Clock Select bits, SCS<1:0>, select the         INTRC is providing the clock or the internal oscillator
clock source. The available clock sources are the          block has just started and is not yet stable.
primary clock (defined by the FOSC<3:0> Configura-
tion bits), the secondary clock (Timer1 oscillator) and    The IDLEN bit controls whether the device goes into
the internal oscillator block. The clock source changes    Sleep mode or one of the Idle modes when the SLEEP
immediately after either of the SCS<1:0> bits are          instruction is executed.
changed, following a brief clock transition interval. The
SCS bits are reset on all forms of Reset.                  The use of the flag and control bits in the OSCCON
                                                           register is discussed in more detail in Section 3.0
The Internal Oscillator Frequency Select bits              "Power-Managed Modes".
(IRCF<2:0>) select the frequency output of the internal
oscillator block to drive the device clock. The choices        Note 1: The Timer1 oscillator must be enabled to
are the INTRC source (31 kHz), the INTOSC source                           select the secondary clock source. The
(8 MHz) or one of the frequencies derived from the                         Timer1 oscillator is enabled by setting the
INTOSC postscaler (31.25 kHz to 4 MHz). If the                             T1OSCEN bit in the Timer1 Control regis-
internal oscillator block is supplying the device clock,                   ter (T1CON<3>). If the Timer1 oscillator
changing the states of these bits will have an immedi-                     is not enabled, then any attempt to select
ate change on the internal oscillator's output. On                         a secondary clock source will be ignored.
device Resets, the default output frequency of the
internal oscillator block is set at 1 MHz.                            2: It is recommended that the Timer1
                                                                           oscillator be operating and stable before
When a nominal output frequency of 31 kHz is selected                      selecting the secondary clock source or a
(IRCF<2:0> = 000), users may choose which internal                         very long delay may occur while the
oscillator acts as the source. This is done with the                       Timer1 oscillator starts.
INTSRC bit in the OSCTUNE register (OSCTUNE<7>).
Setting this bit selects INTOSC as a 31.25 kHz clock       2.7.2 OSCILLATOR TRANSITIONS
source derived from the INTOSC postscaler. Clearing
INTSRC selects INTRC (nominally 31 kHz) as the             The PIC18F8722 family of devices contains circuitry to
clock source and disables the INTOSC to reduce             prevent clock "glitches" when switching between clock
current consumption.                                       sources. A short pause in the device clock occurs dur-
                                                           ing the clock switch. The length of this pause is the sum
This option allows users to select the tunable and more    of two cycles of the old clock source and three to four
precise INTOSC as a clock source, while maintaining        cycles of the new clock source. This formula assumes
power savings with a very low clock speed. Addition-       that the new clock source is stable.
ally, the INTOSC source will already be stable should a
switch to a higher frequency be needed quickly.            Clock transitions are discussed in greater detail in
Regardless of the setting of INTSRC, INTRC always          Section 3.1.2 "Entering Power-Managed Modes".
remains the clock source for features such as the
Watchdog Timer and the Fail-Safe Clock Monitor.

The OSTS, IOFS and T1RUN bits indicate which clock
source is currently providing the device clock. The
OSTS bit indicates that the Oscillator Start-up Timer
and PLL Start-up Timer (if enabled) have timed out and

DS39646C-page 38                                           2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

REGISTER 2-2: OSCCON: OSCILLATOR CONTROL REGISTER

     R/W-0         R/W-1          R/W-0             R/W-0   R(1)                  R-0  R/W-0          R/W-0
     IDLEN         IRCF2          IRCF1             IRCF0  OSTS                  IOFS  SCS1           SCS0
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
bit 2       IRCF<2:0>: Internal Oscillator Frequency Select bits(5)
bit 1-0
            111 = 8 MHz (INTOSC drives clock directly)
            110 = 4 MHz
            101 = 2 MHz
            100 = 1 MHz(3)
            011 = 500 kHz
            010 = 250 kHz
            001 = 125 kHz
            000 = 31 kHz (from either INTOSC/256 or INTRC directly)(2)
            OSTS: Oscillator Start-up Time-out Status bit(1)

            1 = Oscillator Start-up Timer (OST) time-out has expired; primary oscillator is running
            0 = Oscillator Start-up Timer (OST) time-out is running; primary oscillator is not ready

            IOFS: INTOSC Frequency Stable bit

            1 = INTOSC frequency is stable
            0 = INTOSC frequency is not stable
            SCS<1:0>: System Clock Select bits(4)

            1x = Internal oscillator block
            01 = Secondary (Timer1) oscillator
            00 = Primary oscillator

Note 1:     Reset state depends on state of the IESO Configuration bit.
        2:  Source selected by the INTSRC bit (OSCTUNE<7>), see text.
        3:  Default output frequency of INTOSC on Reset.
        4:  Modifying the SCS<1:0> bits will cause an immediate clock source switch.
        5:  Modifying the IRCF<3:0> bits will cause an immediate clock frequency switch if the internal oscillator is
            providing the device clocks.

2008 Microchip Technology Inc.                                                               DS39646C-page 39
PIC18F8722 FAMILY

2.8 Effects of Power-Managed Modes                         2.9 Power-up Delays
         on the Various Clock Sources
                                                           Power-up delays are controlled by two or three timers,
When PRI_IDLE mode is selected, the configured             so that no external Reset circuitry is required for most
oscillator continues to run without interruption. For all  applications. The delays ensure that the device is kept
other power-managed modes, the oscillator using the        in Reset until the device power supply is stable under
OSC1 pin is disabled. The OSC1 pin (and OSC2 pin in        normal circumstances and the primary clock is operat-
crystal oscillator modes) will stop oscillating.           ing and stable. For additional information on power-up
                                                           delays, see Section 4.5 "Device Reset Timers".
In secondary clock modes (SEC_RUN and
SEC_IDLE), the Timer1 oscillator is operating and          The first timer is the Power-up Timer (PWRT) which
providing the device clock. The Timer1 oscillator may      provides a fixed delay on power-up (parameter 33,
also run in all power-managed modes if required to         Table 28-12). It is enabled by clearing (= 0) the
clock Timer1 or Timer3.                                    PWRTEN Configuration bit (CONFIG2L<0>).

In internal oscillator modes (RC_RUN and RC_IDLE),         2.9.1  DELAYS FOR POWER-UP AND
the internal oscillator block provides the device clock           RETURN TO PRIMARY CLOCK
source. The 31 kHz INTRC output can be used directly
to provide the clock and may be enabled to support         The second timer is the Oscillator Start-up Timer
various special features, regardless of the power-         (OST), intended to delay execution until the crystal
managed mode (see Section 25.2 "Watchdog Timer             oscillator is stable (LP, XT and HS modes). The OST
(WDT)" and Section 25.4 "Fail-Safe Clock Monitor"          does this by counting 1024 oscillator cycles before
for more information). The INTOSC output at 8 MHz          allowing the oscillator to clock the device.
may be used directly to clock the device or may be
divided down by the postscaler. The INTOSC output is       When the HSPLL Oscillator mode is selected, a third
disabled if the clock is provided directly from the INTRC  timer delays execution for an additional 2 ms following
output. The INTOSC output is also enabled for Two-         the HS mode OST delay, so the PLL can lock to the
Speed Start-up at 1 MHz after Resets and when              incoming clock frequency. At the end of these delays,
configured for wake from Sleep mode.                       the OSTS bit (OSCCON<3>) is set.

If the Sleep mode is selected, all clock sources are       There is a delay of interval TCSD (parameter 38,
stopped. Since all the transistor switching currents       Table 28-12), once execution is allowed to start, when
have been stopped, Sleep mode achieves the lowest          the controller becomes ready to execute instructions.
current consumption of the device (only leakage            This delay runs concurrently with any other delays.
currents).                                                 This may be the only delay that occurs when any of the
                                                           EC, RC or INTIO modes are used as the primary clock
Enabling any on-chip feature that will operate during      source.
Sleep will increase the current consumed during Sleep.
The INTRC is required to support WDT operation. The
Timer1 oscillator may be operating to support a real-
time clock. Other features may be operating that do not
require a device clock source (i.e., SSP slave, PSP,
INTx pins and others). Peripherals that may add
significant current consumption are listed in
Section 28.2 "DC Characteristics".

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

      OSC Mode    OSC1 Pin                                        OSC2 Pin

RC, INTIO1        Floating, external resistor pulls high          At logic low (clock/4 output)

RCIO              Floating, external resistor pulls high          Configured as PORTA, bit 6

INTIO2            Configured as PORTA, bit 7                      Configured as PORTA, bit 6

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

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

LP, XT and HS     Feedback inverter disabled at quiescent         Feedback inverter disabled at quiescent
                  voltage level                                   voltage level

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

DS39646C-page 40                                                   2008 Microchip Technology Inc.
                                                                 PIC18F8722 FAMILY

3.0 POWER-MANAGED MODES                                     3.1.1 CLOCK SOURCES

The PIC18F8722 family of devices offers a total of          The SCS1:SCS0 bits allow the selection of one of three
seven operating modes for more efficient power man-         clock sources for power-managed modes. They are:
agement. These modes provide a variety of options for
selective power conservation in applications where          the primary clock, as defined by the FOSC<3:0>
resources may be limited (i.e., battery-powered                Configuration bits
devices).
                                                             the secondary clock (the Timer1 oscillator)
There are three categories of power-managed modes:          the internal oscillator block (for INTOSC modes)

Run modes                                                 3.1.2  ENTERING POWER-MANAGED
Idle modes                                                       MODES
Sleep mode
                                                            Switching from one power-managed mode to another
These categories define which portions of the device        begins by loading the OSCCON register. The
are clocked and sometimes, what speed. The Run and          SCS<1:0> bits select the clock source and determine
Idle modes may use any of the three available clock         which Run or Idle mode is to be used. Changing these
sources (primary, secondary or internal oscillator          bits causes an immediate switch to the new clock
block); the Sleep mode does not use a clock source.         source, assuming that it is running. The switch may
                                                            also be subject to clock transition delays. These are
The power-managed modes include several power-              discussed in Section 3.1.3 "Clock Transitions and
saving features offered on previous PIC devices. One       Status Indicators" and subsequent sections.
is the clock switching feature, offered in other PIC18
devices, allowing the controller to use the Timer1 oscil-   Entry to the power-managed Idle or Sleep modes is
lator in place of the primary oscillator. Also included is  triggered by the execution of a SLEEP instruction. The
the Sleep mode, offered by all PIC devices, where all       actual mode that results depends on the status of the
device clocks are stopped.                                  IDLEN bit.

3.1 Selecting Power-Managed Modes                           Depending on the current mode and the mode being
                                                            switched to, a change to a power-managed mode does
Selecting a power-managed mode requires two                 not always require setting all of these bits. Many
decisions: if the CPU is to be clocked or not and the       transitions may be done by changing the oscillator select
selection of a clock source. The IDLEN bit                  bits, or changing the IDLEN bit, prior to issuing a SLEEP
(OSCCON<7>) controls CPU clocking, while the                instruction. If the IDLEN bit is already configured
SCS<1:0> bits (OSCCON<1:0>) select the clock                correctly, it may only be necessary to perform a SLEEP
source. The individual modes, bit settings, clock sources   instruction to switch to the desired mode.
and affected modules are summarized in Table 3-1.

TABLE 3-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 LP, XT, HS, HSPLL, RC, EC and

                                                                   Internal Oscillator Block(2).

                                                                   This is the normal full power execution mode.

SEC_RUN   N/A                     01   Clocked Clocked Secondary Timer1 Oscillator

RC_RUN    N/A                     1x   Clocked Clocked Internal Oscillator Block(2)

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

SEC_IDLE  1                       01   Off                  Clocked Secondary Timer1 Oscillator

RC_IDLE   1                       1x   Off                  Clocked Internal Oscillator Block(2)

Note 1: IDLEN reflects its value when the SLEEP instruction is executed.

       2: Includes INTOSC and INTOSC postscaler, as well as the INTRC source.

2008 Microchip Technology Inc.                                                                  DS39646C-page 41
PIC18F8722 FAMILY

3.1.3  CLOCK TRANSITIONS AND STATUS                         3.2 Run Modes
       INDICATORS
                                                            In the Run modes, clocks to both the core and
The length of the transition between clock sources is       peripherals are active. The difference between these
the sum of two cycles of the old clock source and three     modes is the clock source.
to four cycles of the new clock source. This formula
assumes that the new clock source is stable.                3.2.1 PRI_RUN MODE

Three bits indicate the current clock source and its        The PRI_RUN mode is the normal, full power execution
status. They are:                                           mode of the microcontroller. This is also the default
                                                            mode upon a device Reset, unless Two-Speed Start-up
OSTS (OSCCON<3>)                                          is enabled (see Section 25.3 "Two-Speed Start-up"
IOFS (OSCCON<2>)                                          for details). In this mode, the OSTS bit is set. The IOFS
T1RUN (T1CON<6>)                                          bit may be set if the internal oscillator block is the
                                                            primary clock source (see Section 2.7.1 "Oscillator
In general, only one of these bits will be set while in a   Control Register").
given power-managed mode. When the OSTS bit is
set, the primary clock is providing the device clock.       3.2.2 SEC_RUN MODE
When the IOFS bit is set, the INTOSC output is
providing a stable 8 MHz clock source to a divider that     The SEC_RUN mode is the compatible mode to the
actually drives the device clock. When the T1RUN bit is     "clock switching" feature offered in other PIC18
set, the Timer1 oscillator is providing the clock. If none  devices. In this mode, the CPU and peripherals are
of these bits are set, then either the INTRC clock          clocked from the Timer1 oscillator. This gives users the
source is clocking the device, or the INTOSC source is      option of lower power consumption while still using a
not yet stable.                                             high accuracy clock source.

If the internal oscillator block is configured as the pri-  SEC_RUN mode is entered by setting the SCS<1:0>
mary clock source by the FOSC<3:0> Configuration            bits to `01'. The device clock source is switched to the
bits, then both the OSTS and IOFS bits may be set           Timer1 oscillator (see Figure 3-1), the primary oscilla-
when in PRI_RUN or PRI_IDLE modes. This indicates           tor is shut down, the T1RUN bit (T1CON<6>) is set and
that the primary clock (INTOSC output) is generating a      the OSTS bit is cleared.
stable 8 MHz output. Entering another INTOSC power-
managed mode at the same frequency would clear the          Note:  The Timer1 oscillator should already be
OSTS bit.                                                          running prior to entering SEC_RUN mode.
                                                                   If the T1OSCEN bit is not set when the
Note 1: Caution should be used when modifying a                    SCS<1:0> bits are set to `01', entry to
            single IRCF bit. If VDD is less than 3V, it is         SEC_RUN mode will not occur. If the
            possible to select a higher clock speed                Timer1 oscillator is enabled, but not yet
            than is supported by the low VDD.                      running, device clocks will be delayed until
            Improper device operation may result if                the oscillator has started; in such situa-
            the VDD/FOSC specifications are violated.              tions, initial oscillator operation is far from
                                                                   stable and unpredictable operation may
       2: Executing a SLEEP instruction does not                   result.
            necessarily place the device into Sleep
            mode. It acts as the trigger to place the       On transitions from SEC_RUN mode to PRI_RUN, the
            controller into either the Sleep mode or        peripherals and CPU continue to be clocked from the
            one of the Idle modes, depending on the         Timer1 oscillator while the primary clock is started.
            setting of the IDLEN bit.                       When the primary clock becomes ready, a clock switch
                                                            back to the primary clock occurs (see Figure 3-2).
3.1.4 MULTIPLE SLEEP COMMANDS                               When the clock switch is complete, the T1RUN bit is
                                                            cleared, the OSTS bit is set and the primary clock is
The power-managed mode that is invoked with the             providing the clock. The IDLEN and SCS bits are not
SLEEP instruction is determined by the setting of the       affected by the wake-up; the Timer1 oscillator
IDLEN bit at the time the instruction is executed. If       continues to run.
another SLEEP instruction is executed, the device will
enter the power-managed mode specified by IDLEN at
that time. If IDLEN has changed, the device will enter
the new power-managed mode specified by the new
setting.

DS39646C-page 42                                                    2008 Microchip Technology Inc.
                                                                       PIC18F8722 FAMILY

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

             Q1 Q2 Q3 Q4 Q1                                                   Q2 Q3 Q4 Q1 Q2 Q3

T1OSI                             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 3-2:  TRANSITION TIMING FROM SEC_RUN MODE TO PRI_RUN MODE (HSPLL)

                                  Q1           Q2     Q3       Q4 Q1                     Q2 Q3 Q4 Q1 Q2 Q3

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

CPU Clock

Peripheral
      Clock

Program                               PC                                      PC + 2     PC + 4
Counter

             SCS1:SCS0 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.

3.2.3 RC_RUN MODE                                                      This mode is entered by setting the SCS1 bit to `1'.
                                                                       Although it is ignored, it is recommended that the SCS0
In RC_RUN mode, the CPU and peripherals are                            bit also be cleared; this is to maintain software compat-
clocked from the internal oscillator block using the                   ibility with future devices. When the clock source is
INTOSC multiplexer. In this mode, the primary clock is                 switched to the INTOSC multiplexer (see Figure 3-3),
shut down. When using the INTRC source, this mode                      the primary oscillator is shut down and the OSTS bit is
provides the best power conservation of all the Run                    cleared. The IRCF bits may be modified at any time to
modes, while still executing code. It works well for user              immediately change the clock speed.
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. If VDD is less than 3V, it is
If the primary clock source is the internal oscillator                        possible to select a higher clock speed
block (either INTRC or INTOSC), there are no distin-                          than is supported by the low VDD.
guishable differences between PRI_RUN and                                     Improper device operation may result if
RC_RUN modes during execution. However, a clock                               the VDD/FOSC specifications are violated.
switch delay will occur during entry to and exit from
RC_RUN mode. Therefore, if the primary clock source
is the internal oscillator block, the use of RC_RUN
mode is not recommended.

2008 Microchip Technology Inc.                                                         DS39646C-page 43
PIC18F8722 FAMILY

If the IRCF bits and the INTSRC bit are all clear, the                 On transitions from RC_RUN mode to PRI_RUN mode,
INTOSC output is not enabled and the IOFS bit will                     the device continues to be clocked from the INTOSC
remain clear; there will be no indication of the current               multiplexer while the primary clock is started. When the
clock source. The INTRC source is providing the                        primary clock becomes ready, a clock switch to the
device clocks.                                                         primary clock occurs (see Figure 3-4). When the clock
                                                                       switch is complete, the IOFS bit is cleared, the OSTS
If the IRCF bits are changed from all clear (thus,                     bit is set and the primary clock is providing the device
enabling the INTOSC output) or if INTSRC is set, the                   clock. The IDLEN and SCS bits are not affected by the
IOFS bit becomes set after the INTOSC output                           switch. The INTRC source will continue to run if either
becomes stable. Clocks to the device continue while                    the WDT or the Fail-Safe Clock Monitor is enabled.
the INTOSC source stabilizes after an interval of
TIOBST (parameter 39, Table 28-12).

If the IRCF bits were previously at a non-zero value, or
if INTSRC was set before setting SCS1 and the
INTOSC source was already stable, the IOFS bit will
remain set.

FIGURE 3-3:       TRANSITION TIMING TO RC_RUN MODE

                  Q1 Q2 Q3 Q4 Q1                                           Q2 Q3 Q4 Q1 Q2 Q3
                                                                                                                   PC + 4
INTRC                             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 3-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

                  SCS1:SCS0 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.

DS39646C-page 44                                                                                    2008 Microchip Technology Inc.
                                                                     PIC18F8722 FAMILY

3.3 Sleep Mode                                                       3.4 Idle Modes

The power-managed Sleep mode in the PIC18F8722                       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 3-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; however, the
Entering the Sleep mode from any other mode does not                 CPU will not be clocked. The clock source status bits are
require a clock switch. This is because no clocks are                not affected. Setting IDLEN and executing a SLEEP
needed once the controller has entered Sleep. If the                 instruction provides a quick method of switching from a
WDT is selected, the INTRC source will continue to                   given Run mode to its corresponding Idle mode.
operate. If the Timer1 oscillator is enabled, it will also
continue to run.                                                     If the WDT is selected, the INTRC source will continue
                                                                     to operate. If the Timer1 oscillator is enabled, it will also
When a wake event occurs in Sleep mode (by interrupt,                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 3-6), or it will be clocked                exits from any of the Idle modes are by interrupt, WDT
from the internal oscillator block if either the Two-Speed           time-out or a Reset. When a wake event occurs, CPU
Start-up or the Fail-Safe Clock Monitor are enabled                  execution is delayed by an interval of TCSD
(see Section 25.0 "Special Features of the CPU"). In                 (parameter 38, Table 28-12) while it becomes ready to
either case, the OSTS bit is set when the primary clock              execute code. When the CPU begins executing code,
is providing the device clocks. The IDLEN and SCS bits               it resumes with the same clock source for the current
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 the Sleep mode, a WDT
                                                                     time-out will result in a WDT wake-up to the Run mode
                                                                     currently specified by the SCS<1:0> bits.

FIGURE 3-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 3-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.

2008 Microchip Technology Inc.                                                                DS39646C-page 45
PIC18F8722 FAMILY

3.4.1 PRI_IDLE MODE                                        3.4.2 SEC_IDLE MODE

This mode is unique among the three low-power Idle         In SEC_IDLE mode, the CPU is disabled but the
modes, in that it does not disable the primary device      peripherals continue to be clocked from the Timer1
clock. For timing sensitive applications, this allows for  oscillator. This mode is entered from SEC_RUN by 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
                                                           Timer1 oscillator, the primary oscillator is shut down,
PRI_IDLE mode is entered from PRI_RUN mode by              the OSTS bit is cleared and the T1RUN 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 Timer1 oscillator. After an interval
Although the CPU is disabled, the peripherals continue     of TCSD following the wake event, the CPU begins exe-
to be clocked from the primary clock source specified      cuting code being clocked by the Timer1 oscillator. The
by the FOSC<3:0> Configuration bits. The OSTS bit          IDLEN and SCS bits are not affected by the wake-up;
remains set (see Figure 3-7).                              the Timer1 oscillator continues to run (see Figure 3-8).

When a wake event occurs, the CPU is clocked from the          Note:  The Timer1 oscillator should already be
primary clock source. A delay of interval TCSD                        running prior to entering SEC_IDLE mode.
(parameter 39, Table 28-12) is required between the                   If the T1OSCEN bit is not set when the
wake event and when code execution starts. This is                    SLEEP instruction is executed, the SLEEP
required to allow the CPU to become ready to execute                  instruction will be ignored and entry to
instructions. After the wake-up, the OSTS bit remains                 SEC_IDLE mode will not occur. If the
set. The IDLEN and SCS bits are not affected by the                   Timer1 oscillator is enabled but not yet
wake-up (see Figure 3-8).                                             running, peripheral clocks will be delayed
                                                                      until the oscillator has started. In such
                                                                      situations, initial oscillator operation is far
                                                                      from stable and unpredictable operation
                                                                      may result.

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

                  Q1  Q2      Q3        Q4  Q1

OSC1

CPU Clock

Peripheral
      Clock

Program                   PC                                          PC + 2
Counter

FIGURE 3-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

DS39646C-page 46                                                                   2008 Microchip Technology Inc.
3.4.3 RC_IDLE MODE                                           PIC18F8722 FAMILY

In RC_IDLE mode, the CPU is disabled but the periph-         On all exits from Idle or Sleep modes by interrupt, code
erals continue to be clocked from the internal oscillator    execution branches to the interrupt vector if the GIE/
block using the INTOSC multiplexer. This mode allows         GIEH bit (INTCON<7>) is set. Otherwise, code execu-
for controllable power conservation during Idle periods.     tion continues or resumes without branching (see
                                                             Section 10.0 "Interrupts").
From RC_RUN, this mode is entered by setting the
IDLEN bit and executing a SLEEP instruction. If the          A fixed delay of interval TCSD following the wake event
device is in another Run mode, first set IDLEN, then set     is required when leaving Sleep and Idle modes. This
the SCS1 bit and execute SLEEP. Although its value is        delay is required for the CPU to prepare for execution.
ignored, it is recommended that SCS0 also be cleared;        Instruction execution resumes on the first clock cycle
this is to maintain software compatibility with future       following this delay.
devices. The INTOSC multiplexer may be used to
select a higher clock frequency by modifying the IRCF        3.5.2 EXIT BY WDT TIME-OUT
bits before executing the SLEEP instruction. When the
clock source is switched to the INTOSC multiplexer, the      A WDT time-out will cause different actions depending
primary oscillator is shut down and the OSTS bit is          on which power-managed mode the device is in when
cleared.                                                     the time-out occurs.

If the IRCF bits are set to any non-zero value, or the       If the device is not executing code (all Idle modes and
INTSRC bit is set, the INTOSC output is enabled. The         Sleep mode), the time-out will result in an exit from the
IOFS bit becomes set, after the INTOSC output                power-managed mode (see Section 3.2 "Run
becomes stable, after an interval of TIOBST                  Modes" and Section 3.3 "Sleep Mode"). If the device
(parameter 39, Table 28-12). Clocks to the peripherals       is executing code (all Run modes), the time-out will
continue while the INTOSC source stabilizes. If the          result in a WDT Reset (see Section 25.2 "Watchdog
IRCF bits were previously at a non-zero value, or            Timer (WDT)").
INTSRC was set before the SLEEP instruction was exe-
cuted and the INTOSC source was already stable, the          The WDT timer and postscaler are cleared by
IOFS bit will remain set. If the IRCF bits and INTSRC        executing a SLEEP or CLRWDT instruction, the loss of a
are all clear, the INTOSC output will not be enabled, the    currently selected clock source (if the Fail-Safe Clock
IOFS bit will remain clear and there will be no indication   Monitor is enabled) and modifying the IRCF bits in the
of the current clock source.                                 OSCCON register if the internal oscillator block is the
                                                             device clock source.
When a wake event occurs, the peripherals continue to
be clocked from the INTOSC multiplexer. After a delay        3.5.3 EXIT BY RESET
of TCSD (parameter 38, Table 28-12) following the wake
event, the CPU begins executing code being clocked           Normally, the device is held in Reset by the Oscillator
by the INTOSC multiplexer. The IDLEN and SCS bits            Start-up Timer (OST) until the primary clock becomes
are not affected by the wake-up. The INTRC source will       ready. At that time, the OSTS bit is set and the device
continue to run if either the WDT or the Fail-Safe Clock     begins executing code. If the internal oscillator block is
Monitor is enabled.                                          the new clock source, the IOFS bit is set instead.

3.5 Exiting Idle and Sleep Modes                             The exit delay time from Reset to the start of code
                                                             execution depends on both the clock sources before
An exit from Sleep mode or any of the Idle modes is          and after the wake-up and the type of oscillator if the
triggered by an interrupt, a Reset or a WDT time-out.        new clock source is the primary clock. Exit delays are
This section discusses the triggers that cause exits         summarized in Table 3-2.
from power-managed modes. The clocking subsystem
actions are discussed in each of the power-managed           Code execution can begin before the primary clock
modes (see Section 3.2 "Run Modes", Section 3.3              becomes ready. If either the Two-Speed Start-up (see
"Sleep Mode" and Section 3.4 "Idle Modes").                  Section 25.3 "Two-Speed Start-up") or Fail-Safe
                                                             Clock Monitor (see Section 25.4 "Fail-Safe Clock
3.5.1 EXIT BY INTERRUPT                                      Monitor") is enabled, the device may begin execution
                                                             as soon as the Reset source has cleared. Execution is
Any of the available interrupt sources can cause the         clocked by the INTOSC multiplexer driven by the inter-
device to exit from an Idle mode or the Sleep mode to        nal oscillator block. Execution is clocked by the internal
a Run mode. To enable this functionality, an interrupt       oscillator block until either the primary clock becomes
source must be enabled by setting its enable bit in one      ready or a power-managed mode is entered before the
of the INTCON or PIE registers. The exit sequence is         primary clock becomes ready; the primary clock is then
initiated when the corresponding interrupt flag bit is set.  shut down.

2008 Microchip Technology Inc.                             DS39646C-page 47
PIC18F8722 FAMILY

3.5.4  EXIT WITHOUT AN OSCILLATOR                     In these instances, the primary clock source either
       START-UP DELAY                                 does not require an oscillator start-up delay since it is
                                                      already running (PRI_IDLE), or normally does not
Certain exits from power-managed modes do not         require an oscillator start-up delay (RC, EC and INTIO
invoke the OST at all. There are two cases:           Oscillator modes). However, a fixed delay of interval
                                                      TCSD following the wake event is still required when
PRI_IDLE mode, where the primary clock source       leaving Sleep and Idle modes to allow the CPU to
   is not stopped and                                 prepare for execution. Instruction execution resumes
                                                      on the first clock cycle following this delay.
the primary clock source is not any of the LP, XT,
   HS or HSPLL modes.

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

        Clock Source         Clock Source             Exit Delay     Clock Ready Status
       before Wake-up        after Wake-up                              Bit (OSCCON)

                             LP, XT, HS

       Primary Device Clock    HSPLL                     TCSD(1)     OSTS
         (PRI_IDLE mode)       EC, RC                                IOFS
                             INTOSC(2)                   TOST(3)     OSTS
         T1OSC or INTRC      LP, XT, HS               TOST + trc(3)  IOFS
                               HSPLL                                 OSTS
              INTOSC(2)        EC, RC                    TCSD(1)     IOFS
                             INTOSC(2)                 TIOBST(4)     OSTS
                 None        LP, XT, HS                  TOST(4)     IOFS
            (Sleep mode)       HSPLL                  TOST + trc(3)
                               EC, RC                    TCSD(1)
                             INTOSC(2)
                             LP, XT, HS                   None
                               HSPLL                     TOST(3)
                               EC, RC                 TOST + trc(3)
                             INTOSC(2)                   TCSD(1)
                                                       TIOBST(4)

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

       2: Includes both the INTOSC 8 MHz source and postscaler derived frequencies. On Reset, INTOSC defaults
             to 1 MHz.

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

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

DS39646C-page 48                                                      2008 Microchip Technology Inc.
                                                     PIC18F8722 FAMILY

4.0 RESET                                            A simplified block diagram of the On-Chip Reset Circuit
                                                     is shown in Figure 4-1.
The PIC18F8722 family of devices differentiates
between various kinds of Reset:                      4.1 RCON Register

a) Power-on Reset (POR)                              Device Reset events are tracked through the RCON
b) MCLR Reset during normal operation                register (Register 4-1). The lower five bits of the regis-
c) MCLR Reset during power-managed modes             ter indicate that a specific Reset event has occurred. In
d) Watchdog Timer (WDT) Reset (during                most cases, these bits can only be cleared by the event
                                                     and must be set by the application after the event. The
      execution)                                     state of these flag bits, taken together, can be read to
e) Programmable Brown-out Reset (BOR)                indicate the type of Reset that just occurred. This is
f) RESET Instruction                                 described in more detail in Section 4.6 "Reset State
g) Stack Full Reset                                  of Registers".
h) Stack Underflow Reset
                                                     The RCON register also has control bits for setting
This section discusses Resets generated by MCLR,     interrupt priority (IPEN) and software control of the
POR and BOR and covers the operation of the various  BOR (SBOREN). Interrupt priority is discussed in
start-up timers. Stack Reset events are covered in   Section 10.0 "Interrupts". BOR is covered in
Section 5.1.3.4 "Stack Full and Underflow Resets".   Section 4.4 "Brown-out Reset (BOR)".
WDT Resets are covered in Section 25.2 "Watchdog
Timer (WDT)".

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

        RESET
      Instruction

       Stack       Stack Full/Underflow Reset
      Pointer

MCLR                   External Reset

                          MCLRE
             ( )_IDLE

               Sleep

               WDT
             Time-out

             VDD Rise POR Pulse
              Detect

VDD

             Brown-out

             Reset                                   S

                        BOREN

      OST/PWRT

                   OST 1024 Cycles                                         Chip_Reset
                                                                      Q
                        10-bit Ripple Counter        R

OSC1

        31 s       PWRT 64 ms
      INTRC(1)         11-Bit Ripple Counter

                                                                                                                                                      Enable PWRT
                                                                                                                                                     Enable OST(2)
Note 1: This is the INTRC source from the internal oscillator block and is separate from the RC oscillator of the CLKI pin.
        2: See Table 4-2 for time-out situations.

2008 Microchip Technology Inc.                                      DS39646C-page 49
PIC18F8722 FAMILY

REGISTER 4-1: RCON: RESET CONTROL REGISTER

R/W-0             R/W-1(1)  U-0               R/W-1         R-1              R-1       R/W-0(2)       R/W-0

       IPEN       SBOREN    --                    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(1)

             If BOREN<1:0> = 01:
             1 = BOR is enabled
             0 = BOR is disabled

             If BOREN<1:0> = 00, 10 or 11:
             Bit is disabled and read as `0'

bit 5        Unimplemented: Read as `0'

bit 4        RI: RESET Instruction Flag bit

             1 = The RESET instruction was not executed (set by firmware 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(2)

             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: If SBOREN is enabled, its Reset state is `1'; otherwise, it is `0'.

        2: The actual Reset value of POR is determined by the type of device Reset. See the notes following this
              register and Section 4.6 "Reset State of Registers" for additional information.

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

DS39646C-page 50                                                                   2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

4.2 Master Clear (MCLR)                                    FIGURE 4-2:        EXTERNAL POWER-ON

The MCLR pin provides a method for triggering an                              RESET CIRCUIT (FOR
external Reset of the device. A Reset is generated by                         SLOW VDD POWER-UP)(1)
holding the pin low. These devices have a noise filter in
the MCLR Reset path which detects and ignores small        VDD VDD
pulses.
                                                                    D   R(2)
The MCLR pin is not driven low by any internal Resets,
including the WDT.                                                      C     R1(3)
                                                                                         MCLR
In the PIC18F8722 family of devices, the MCLR input
can be disabled with the MCLRE Configuration bit.                                      PIC18FXXXX
When MCLR is disabled, the pin becomes a digital
input. See Section 11.5 "PORTE, TRISE and LATE             Note 1:  External Power-on Reset circuit is required
Registers" for more information.                                    only if the VDD power-up slope is too slow.
                                                                    The diode D helps discharge the capacitor
4.3 Power-on Reset (POR)                                            quickly when VDD powers down.

A Power-on Reset pulse is generated on-chip                2: R < 40 k is recommended to make sure that
whenever VDD rises above a certain threshold. This              the voltage drop across R does not violate
allows the device to start in the initialized state when        the device's electrical specification.
VDD is adequate for operation.
                                                           3: R1  1 k will limit any current flowing into
To take advantage of the POR circuitry, tie the MCLR pin        MCLR from external capacitor C, in the event
through a resistor (1 k to 10 k) to VDD. This will              of MCLR/VPP pin breakdown, due to
eliminate external RC components usually needed to              Electrostatic Discharge (ESD) or Electrical
create a Power-on Reset delay. A minimum rise rate for          Overstress (EOS).
VDD is specified (parameter D004, "Section 28.2 "DC
Characteristics: Power-Down and Supply Current").
For a slow rise time, see Figure 4-2.

When the device starts normal operation (i.e., exits the
Reset condition), device operating parameters (volt-
age, frequency, temperature, etc.) must be met to
ensure operation. If these conditions are not met, the
device must be held in Reset until the operating
conditions are met.

POR events are captured by the POR bit (RCON<1>).
The state of the bit is set to `0' whenever a POR occurs;
it does not change for any other Reset event. POR is
not reset to `1' by any hardware event. To capture
multiple events, the user manually resets the bit to `1'
in software following any POR.

2008 Microchip Technology Inc.                                              DS39646C-page 51
PIC18F8722 FAMILY

4.4 Brown-out Reset (BOR)                                   Placing the BOR under software control gives the user
                                                            the additional flexibility of tailoring the application to its
The PIC18F8722 family of devices implements a BOR           environment without having to reprogram the device to
circuit that provides the user with a number of con-        change the BOR configuration. It also allows the user
figuration and power-saving options. The BOR is             to tailor device power consumption in software by
controlled by the BORV<1:0> and BOREN<1:0>                  eliminating the incremental current that the BOR con-
Configuration bits. There are a total of four BOR           sumes. While the BOR current is typically very small, it
configurations which are summarized in Table 4-1.           may have some impact in low-power applications.

The BOR threshold is set by the BORV<1:0> bits. If          Note:  Even when BOR is under software control,
BOR is enabled (any values of BOREN<1:0>, except                   the BOR Reset voltage level is still set by
`00'), any drop of VDD below VBOR (parameter D005,                 the BORV<1:0> Configuration bits. It
Section 28.1 "DC Characteristics") for greater than                cannot be changed in software.
TBOR (parameter 35, Table 28-12) will reset the device.
A Reset may or may not occur if VDD falls below VBOR        4.4.2 DETECTING BOR
for less than TBOR. The chip will remain in Brown-out
Reset until VDD rises above VBOR.                           When BOR is enabled, the BOR bit always resets to `0'
                                                            on any BOR or POR event. This makes it difficult to
If the Power-up Timer is enabled, it will be invoked after  determine if a BOR event has occurred just by reading
VDD rises above VBOR; it then will keep the chip in         the state of BOR alone. A more reliable method is to
Reset for an additional time delay, TPWRT                   simultaneously check the state of both POR and BOR.
(parameter 33, Table 28-12). If VDD drops below VBOR        This assumes that the POR bit is reset to `1' in software
while the Power-up Timer is running, the chip will go       immediately after any POR event. If BOR is `0' while
back into a Brown-out Reset and the Power-up Timer          POR is `1', it can be reliably assumed that a BOR event
will be initialized. Once VDD rises above VBOR, the         has occurred.
Power-up Timer will execute the additional time delay.
                                                            4.4.3 DISABLING BOR IN SLEEP MODE
BOR and the Power-on Timer (PWRT) are
independently configured. Enabling BOR Reset does           When BOREN<1:0> = 10, the BOR remains under
not automatically enable the PWRT.                          hardware control and operates as previously
                                                            described. Whenever the device enters Sleep mode,
4.4.1 SOFTWARE ENABLED BOR                                  however, the BOR is automatically disabled. When the
                                                            device returns to any other operating mode, BOR is
When BOREN<1:0> = 01, the BOR can be enabled or             automatically re-enabled.
disabled by the user in software. This is done with the
control bit, SBOREN (RCON<6>). Setting SBOREN               This mode allows for applications to recover from
enables the BOR to function as previously described.        brown-out situations, while actively executing code,
Clearing SBOREN disables the BOR entirely. The              when the device requires BOR protection the most. At
SBOREN bit operates only in this mode; otherwise it is      the same time, it saves additional power in Sleep mode
read as `0'.                                                by eliminating the small incremental BOR current.

TABLE 4-1: BOR CONFIGURATIONS

BOR Configuration     Status of                                   BOR Operation
BOREN1 BOREN0         SBOREN
                     (RCON<6>)

0                 0  Unavailable BOR disabled; must be enabled by reprogramming the Configuration bits.

0                 1  Available BOR enabled in software; operation controlled by SBOREN.

1                 0  Unavailable BOR enabled in hardware in Run and Idle modes, disabled during

                                  Sleep mode.

1                 1  Unavailable BOR enabled in hardware; must be disabled by reprogramming the

                                  Configuration bits.

DS39646C-page 52                                                    2008 Microchip Technology Inc.
                                                                   PIC18F8722 FAMILY

4.5 Device Reset Timers                                            4.5.3 PLL LOCK TIME-OUT

The PIC18F8722 family of devices incorporates three                With the PLL enabled in its PLL mode, the time-out
separate on-chip timers that help regulate the Power-on            sequence following a Power-on Reset is slightly differ-
Reset process. Their main function is to ensure that the           ent from other oscillator modes. A separate timer is
device clock is stable before code is executed. These              used to provide a fixed time-out that is sufficient for the
timers are:                                                        PLL to lock to the main oscillator frequency. This PLL
                                                                   lock time-out (TPLL) is typically 2 ms and follows the
Power-up Timer (PWRT)                                            oscillator start-up time-out.
Oscillator Start-up Timer (OST)
PLL Lock Time-out                                                4.5.4 TIME-OUT SEQUENCE

4.5.1 POWER-UP TIMER (PWRT)                                        On power-up, the time-out sequence is as follows:

The Power-up Timer (PWRT) of the PIC18F8722                        1. After the POR pulse has cleared, PWRT time-out
family of devices is an 11-bit counter which uses the                    is invoked (if enabled).
INTRC source as the clock input. While the PWRT is
counting, the device is held in Reset.                             2. Then, the OST is activated.

The power-up time delay depends on the INTRC clock                 The total time-out will vary based on oscillator configu-
and will vary from chip-to-chip due to temperature and             ration and the status of the PWRT. Figure 4-3,
process variation. See DC parameter 33 in Table 28-12              Figure 4-4, Figure 4-5, Figure 4-6 and Figure 4-7 all
for details.                                                       depict time-out sequences on power-up, with the
                                                                   Power-up Timer enabled and the device operating in
The PWRT is enabled by clearing the PWRTEN                         HS Oscillator mode. Figures 4-3 through 4-6 also apply
Configuration bit.                                                 to devices operating in XT or LP modes. For devices in
                                                                   RC mode and with the PWRT disabled, on the other
4.5.2  OSCILLATOR START-UP TIMER                                   hand, there will be no time-out at all.
       (OST)
                                                                   Since the time-outs occur from the POR pulse, if MCLR
The Oscillator Start-up Timer (OST) provides a 1024                is kept low long enough, all time-outs will expire. Bring-
oscillator cycle (from OSC1 input) delay after the                 ing MCLR high will begin execution immediately
PWRT delay is over (parameter 33, Table 28-12). This               (Figure 4-5). This is useful for testing purposes or to
ensures that the crystal oscillator or resonator has               synchronize more than one PIC18F8722 family device
started and stabilized.                                            operating in parallel.

The OST time-out is invoked only for XT, LP, HS and
HSPLL modes and only on Power-on Reset, or on exit
from most power-managed modes.

TABLE 4-2: TIME-OUT IN VARIOUS SITUATIONS

  Oscillator                      Power-up(2) and Brown-out                                      Exit from
Configuration                                                                           Power-Managed Mode
                                  PWRTEN = 0                       PWRTEN = 1
                                                                                          1024 TOSC + TPLL(2)
HSPLL           TPWRT(1) + 1024 TOSC + TPLL(2)                     1024 TOSC + TPLL(2)          1024 TOSC
HS, XT, LP            TPWRT(1) + 1024 TOSC                               1024 TOSC                    --
EC, ECIO                       TPWRT(1)                                       --                      --
RC, RCIO                       TPWRT(1)                                       --                      --
INTIO1, INTIO2                 TPWRT(1)                                       --

Note 1: See parameter 33, Table 28-12.
        2: 2 ms is the nominal time required for the PLL to lock.

2008 Microchip Technology Inc.                                                        DS39646C-page 53
PIC18F8722 FAMILY

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

                    VDD  TPWRT
                 MCLR
   INTERNAL POR                        TOST

PWRT TIME-OUT
    OST TIME-OUT

INTERNAL RESET

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

                    VDD         TPWRT
                 MCLR
    INTERNAL POR                             TOST

PWRT TIME-OUT
    OST TIME-OUT

INTERNAL RESET

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

                    VDD         TPWRT
                 MCLR
   INTERNAL POR                              TOST

PWRT TIME-OUT
    OST TIME-OUT

INTERNAL RESET

DS39646C-page 54                                    2008 Microchip Technology Inc.
                                         PIC18F8722 FAMILY

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

                    VDD           TPWRT
                 MCLR
   INTERNAL POR                                                                 TOST

PWRT TIME-OUT
    OST TIME-OUT

INTERNAL RESET

FIGURE 4-7:             TIME-OUT SEQUENCE ON POR w/PLL ENABLED (MCLR TIED TO VDD)

                   VDD            TPWRT
               MCLR
  INTERNAL POR                                                            TOST

PWRT TIME-OUT                                                                   TPLL
  OST TIME-OUT

     PLL TIME-OUT

INTERNAL RESET

Note: TOST = 1024 clock cycles.
            TPLL  2 ms is the nominal time required for the PLL to lock.

2008 Microchip Technology Inc.                                                      DS39646C-page 55
PIC18F8722 FAMILY

4.6 Reset State of Registers                               Table 4-4 describes the Reset states for all of the
                                                           Special Function Registers. These are categorized by
Most registers are unaffected by a Reset. Their status     Power-on and Brown-out Resets, Master Clear and
is unknown on POR and unchanged by all other               WDT Resets and WDT wake-ups.
Resets. All other registers are forced to a "Reset state"
depending on the type of Reset that occurred.

Most registers are not affected by a WDT wake-up,
since this is viewed as the resumption of normal oper-
ation. Status bits from the RCON register, RI, TO, PD,
POR and BOR, are set or cleared differently in different
Reset situations, as indicated in Table 4-3. These bits
are used in software to determine the nature of the
Reset.

TABLE 4-3: STATUS BITS, THEIR SIGNIFICANCE AND THE INITIALIZATION CONDITION
                     FOR RCON REGISTER

                               Program                     RCON Register  STKPTR Register
                               Counter
           Condition

                                          SBOREN           RI TO PD POR BOR STKFUL STKUNF

Power-on Reset                 0000h      1                11100          0                    0
RESET Instruction
Brown-out Reset                0000h      u(2)             0uuuu          u                    u

                               0000h      u(2)             111u0          u                    u

MCLR during Power-Managed      0000h      u(2)             u1uuu          u                    u

Run Modes

MCLR during Power-Managed      0000h      u(2)             u10uu          u                    u

Idle Modes and Sleep Mode

WDT Time-out during Full Power 0000h      u(2)             u0uuu          u                    u

or Power-Managed Run Mode

MCLR during Full Power         0000h      u(2)             uuuuu          u                    u

Execution

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

Stack Underflow Reset          0000h      u(2)             uuuuu          u                    1

(STVREN = 1)

Stack Underflow Error (not an  0000h      u(2)             uuuuu          u                    1

actual Reset, STVREN = 0)

WDT Time-out during            PC + 2     u(2)             u00uu          u                    u

Power-Managed Idle or

Sleep Modes

Interrupt Exit from            PC + 2(1)  u(2)             uu0uu          u                    u

Power-Managed Modes

Legend: u = unchanged

Note 1: When the wake-up is due to an interrupt and the GIEH or GIEL bits are set, the PC is loaded with the
              interrupt vector (008h or 0018h).

2: Reset state is `1' for POR and unchanged for all other Resets when software BOR is enabled
      (BOREN<1:0> Configuration bits = 01 and SBOREN = 1). Otherwise, the Reset state is `0'.

DS39646C-page 56                                                          2008 Microchip Technology Inc.
                                                   PIC18F8722 FAMILY

TABLE 4-4: 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

TOSU         6X27  6X22           8X27  8X22  ---0 0000        ---0 0000           ---0 uuuu(3)
TOSH         6X27  6X22           8X27  8X22  0000 0000        0000 0000           uuuu uuuu(3)
TOSL         6X27  6X22           8X27  8X22  0000 0000        0000 0000           uuuu uuuu(3)
STKPTR       6X27  6X22           8X27  8X22                                       uu-u uuuu(3)
                                              00-0 0000        uu-u uuuu

PCLATU       6X27 6X22 8X27 8X22              ---0 0000        ---0 0000           ---u uuuu

PCLATH       6X27 6X22 8X27 8X22              0000 0000        0000 0000           uuuu uuuu
PCL          6X27 6X22 8X27 8X22              0000 0000        0000 0000              PC + 2(2)

TBLPTRU      6X27 6X22 8X27 8X22              --00 0000        --00 0000           --uu uuuu

TBLPTRH      6X27 6X22 8X27 8X22              0000 0000        0000 0000           uuuu uuuu

TBLPTRL      6X27 6X22 8X27 8X22              0000 0000        0000 0000           uuuu uuuu

TABLAT       6X27 6X22 8X27 8X22              0000 0000        0000 0000           uuuu uuuu

PRODH        6X27 6X22 8X27 8X22              xxxx xxxx        uuuu uuuu           uuuu uuuu

PRODL        6X27  6X22           8X27  8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu
INTCON       6X27  6X22           8X27  8X22  0000 000x        0000 000u           uuuu uuuu(1)
INTCON2      6X27  6X22           8X27  8X22  1111 1111        1111 1111           uuuu uuuu(1)
INTCON3      6X27  6X22           8X27  8X22  1100 0000        1100 0000           uuuu uuuu(1)

INDF0        6X27 6X22 8X27 8X22              N/A              N/A                 N/A

POSTINC0     6X27 6X22 8X27 8X22              N/A              N/A                 N/A

POSTDEC0     6X27 6X22 8X27 8X22              N/A              N/A                 N/A

PREINC0      6X27 6X22 8X27 8X22              N/A              N/A                 N/A

PLUSW0       6X27 6X22 8X27 8X22              N/A              N/A                 N/A

FSR0H        6X27 6X22 8X27 8X22              ---- 0000        ---- 0000           ---- uuuu

FSR0L        6X27 6X22 8X27 8X22              xxxx xxxx        uuuu uuuu           uuuu uuuu

WREG         6X27 6X22 8X27 8X22              xxxx xxxx        uuuu uuuu           uuuu uuuu

INDF1        6X27 6X22 8X27 8X22              N/A              N/A                 N/A

POSTINC1     6X27 6X22 8X27 8X22              N/A              N/A                 N/A

POSTDEC1     6X27 6X22 8X27 8X22              N/A              N/A                 N/A

PREINC1      6X27 6X22 8X27 8X22              N/A              N/A                 N/A

PLUSW1       6X27 6X22 8X27 8X22              N/A              N/A                 N/A

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
             Shaded cells indicate conditions do not apply for the designated device.
Note 1:      One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).
         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector
             (0008h or 0018h).
         3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with
             the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.
         4:  See Table 4-3 for Reset value for specific condition.
         5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled
             as PORTA pins, they are disabled and read `0'.

2008 Microchip Technology Inc.                                                   DS39646C-page 57
PIC18F8722 FAMILY

TABLE 4-4: 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

FSR1H             6X27 6X22 8X27 8X22  ---- 0000        ---- 0000           ---- uuuu

FSR1L             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

BSR               6X27 6X22 8X27 8X22  ---- 0000        ---- 0000           ---- uuuu

INDF2             6X27 6X22 8X27 8X22  N/A              N/A                 N/A

POSTINC2          6X27 6X22 8X27 8X22  N/A              N/A                 N/A

POSTDEC2          6X27 6X22 8X27 8X22  N/A              N/A                 N/A

PREINC2           6X27 6X22 8X27 8X22  N/A              N/A                 N/A

PLUSW2            6X27 6X22 8X27 8X22  N/A              N/A                 N/A

FSR2H             6X27 6X22 8X27 8X22  ---- 0000        ---- 0000           ---- uuuu

FSR2L             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

STATUS            6X27 6X22 8X27 8X22  ---x xxxx        ---u uuuu           ---u uuuu

TMR0H             6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

TMR0L             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T0CON             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

OSCCON            6X27 6X22 8X27 8X22  0100 q000        0100 q000           uuuu uuqu

HLVDCON           6X27 6X22 8X27 8X22  0-00 0101        0-00 0101           u-uu uuuu

WDTCON            6X27 6X22 8X27 8X22  ---- ---0        ---- ---0           ---- ---u
RCON(4)           6X27 6X22 8X27 8X22  0q-1 11q0        0q-q qquu           uq-u qquu

TMR1H             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

TMR1L             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T1CON             6X27 6X22 8X27 8X22  0000 0000        u0uu uuuu           uuuu uuuu

TMR2              6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

PR2               6X27 6X22 8X27 8X22  1111 1111        uuuu uuuu           uuuu uuuu

T2CON             6X27 6X22 8X27 8X22  -000 0000        -000 0000           -uuu uuuu

SSP1BUF           6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

SSP1ADD           6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP1STAT          6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP1CON1          6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP1CON2          6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
             Shaded cells indicate conditions do not apply for the designated device.
Note 1:      One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).
         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector
             (0008h or 0018h).
         3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with
             the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.
         4:  See Table 4-3 for Reset value for specific condition.
         5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled
             as PORTA pins, they are disabled and read `0'.

DS39646C-page 58                                              2008 Microchip Technology Inc.
                                  PIC18F8722 FAMILY

TABLE 4-4: 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

ADRESH       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

ADRESL       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

ADCON0       6X27 6X22 8X27 8X22  --00 0000        --00 0000           --uu uuuu

ADCON1       6X27 6X22 8X27 8X22  --00 0000        --00 0000           --uu uuuu

ADCON2       6X27 6X22 8X27 8X22  0-00 0000        0-00 0000           u-uu uuuu

CCPR1H       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR1L       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP1CON      6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

CCPR2H       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR2L       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP2CON      6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

CCPR3H       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR3L       6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP3CON      6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

ECCP1AS      6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

CVRCON       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

CMCON        6X27 6X22 8X27 8X22  0000 0111        0000 0111           uuuu uuuu

TMR3H        6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

TMR3L        6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

T3CON        6X27 6X22 8X27 8X22  0000 0000        uuuu uuuu           uuuu uuuu

PSPCON       6X27 6X22 8X27 8X22  0000 ----        0000 ----           uuuu ----

SPBRG1       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

RCREG1       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

TXREG1       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

TXSTA1       6X27 6X22 8X27 8X22  0000 0010        0000 0010           uuuu uuuu

RCSTA1       6X27 6X22 8X27 8X22  0000 000x        0000 000x           uuuu uuuu

EEADRH       6X27 6X22 8X27 8X22  ---- --00        ---- --00           ---- --uu

EEADR        6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

EEDATA       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

EECON2       6X27 6X22 8X27 8X22  0000 0000        0000 0000           0000 0000

EECON1       6X27 6X22 8X27 8X22  xx-0 x000        uu-0 u000           uu-u uuuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
             Shaded cells indicate conditions do not apply for the designated device.
Note 1:      One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).
         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector
             (0008h or 0018h).
         3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with
             the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.
         4:  See Table 4-3 for Reset value for specific condition.
         5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled
             as PORTA pins, they are disabled and read `0'.

2008 Microchip Technology Inc.                                       DS39646C-page 59
PIC18F8722 FAMILY

TABLE 4-4: 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

IPR3              6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu
PIR3              6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu(1)

PIE3              6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

IPR2              6X27 6X22 8X27 8X22  11-1 1111        11-1 1111           uu-u uuuu
PIR2              6X27 6X22 8X27 8X22  00-0 0000        00-0 0000           uu-u uuuu(1)

PIE2              6X27 6X22 8X27 8X22  00-0 0000        00-0 0000           uu-u uuuu

IPR1              6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu
PIR1              6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu(1)

PIE1              6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

MEMCON            6X27 6X22 8X27 8X22  0-00 --00        0-00 --00           u-uu --uu

OSCTUNE           6X27 6X22 8X27 8X22  00-0 0000        00-0 0000           uu-u uuuu

TRISJ             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

TRISH             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

TRISG             6X27 6X22 8X27 8X22  ---1 1111        ---1 1111           ---u uuuu

TRISF             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

TRISE             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

TRISD             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

TRISC             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu

TRISB             6X27 6X22 8X27 8X22  1111 1111        1111 1111           uuuu uuuu
TRISA(5)          6X27 6X22 8X27 8X22  1111 1111(5)     1111 1111(5)        uuuu uuuu(5)

LATJ              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

LATH              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

LATG              6X27 6X22 8X27 8X22  --xx xxxx        --uu uuuu           --uu uuuu

LATF              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

LATE              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

LATD              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

LATC              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

LATB              6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu
LATA(5)           6X27 6X22 8X27 8X22  xxxx xxxx(5)     uuuu uuuu(5)        uuuu uuuu(5)

PORTJ             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

PORTH             6X27 6X22 8X27 8X22  0000 xxxx        uuuu uuuu           uuuu uuuu

PORTG             6X27 6X22 8X27 8X22  --xx xxxx        --uu uuuu           --uu uuuu

PORTF             6X27 6X22 8X27 8X22  x000 0000        u000 0000           uuuu uuuu

PORTE             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

PORTD             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

PORTC             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

PORTB             6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
             Shaded cells indicate conditions do not apply for the designated device.
Note 1:      One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).
         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector
             (0008h or 0018h).
         3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with
             the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.
         4:  See Table 4-3 for Reset value for specific condition.
         5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled
             as PORTA pins, they are disabled and read `0'.

DS39646C-page 60                                        2008 Microchip Technology Inc.
                                    PIC18F8722 FAMILY

TABLE 4-4: 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

PORTA(5)       6X27 6X22 8X27 8X22  xx0x 0000(5)     uu0u 0000(5)        uuuu uuuu(5)

SPBRGH1        6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

BAUDCON1       6X27 6X22 8X27 8X22  01-0 0-00        01-0 0-00           uu-u u-uu

SPBRGH2        6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

BAUDCON2       6X27 6X22 8X27 8X22  01-0 0-00        01-0 0-00           uu-u u-uu

ECCP1DEL       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

TMR4           6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

PR4            6X27 6X22 8X27 8X22  1111 1111        uuuu uuuu           uuuu uuuu

T4CON          6X27 6X22 8X27 8X22  -000 0000        -000 0000           -uuu uuuu

CCPR4H         6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR4L         6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP4CON        6X27 6X22 8X27 8X22  --00 0000        --00 0000           --uu uuuu

CCPR5H         6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCPR5L         6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

CCP5CON        6X27 6X22 8X27 8X22  --00 0000        --00 0000           --uu uuuu

SPBRG2         6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

RCREG2         6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

TXREG2         6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

TXSTA2         6X27 6X22 8X27 8X22  0000 0010        0000 0010           uuuu uuuu

RCSTA2         6X27 6X22 8X27 8X22  0000 000x        0000 000x           uuuu uuuu

ECCP3AS        6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

ECCP3DEL       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

ECCP2AS        6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

ECCP2DEL       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP2BUF        6X27 6X22 8X27 8X22  xxxx xxxx        uuuu uuuu           uuuu uuuu

SSP2ADD        6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP2STAT       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP2CON1       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

SSP2CON2       6X27 6X22 8X27 8X22  0000 0000        0000 0000           uuuu uuuu

Legend:      u = unchanged, x = unknown, - = unimplemented bit, read as `0', q = value depends on condition.
             Shaded cells indicate conditions do not apply for the designated device.
Note 1:      One or more bits in the INTCONx or PIRx registers will be affected (to cause wake-up).
         2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the interrupt vector
             (0008h or 0018h).
         3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are updated with
             the current value of the PC. The STKPTR is modified to point to the next location in the hardware stack.
         4:  See Table 4-3 for Reset value for specific condition.
         5:  Bits 6 and 7 of PORTA, LATA and TRISA are enabled, depending on the oscillator mode selected. When not enabled
             as PORTA pins, they are disabled and read `0'.

2008 Microchip Technology Inc.                                         DS39646C-page 61
PIC18F8722 FAMILY

NOTES:

DS39646C-page 62    2008 Microchip Technology Inc.
                                                         PIC18F8722 FAMILY

5.0 MEMORY ORGANIZATION                                  5.1.1  PIC18F8527/8622/8627/8722
                                                                PROGRAM MEMORY MODES
There are three types of memory in PIC18 Enhanced
microcontroller devices:                                 PIC18F8527/8622/8627/8722 devices differ signifi-
                                                         cantly from their PIC18 predecessors in their utilization
Program Memory                                         of program memory. In addition to available on-chip
Data RAM                                               Flash program memory, these controllers can also
Data EEPROM                                            address up to 2 Mbytes of external program memory
                                                         through the external memory interface. There are four
As Harvard architecture devices, the data and program    distinct operating modes available to the controllers:
memories use separate busses; this allows for concur-
rent access of the two memory spaces. The data            Microprocessor (MP)
EEPROM, for practical purposes, can be regarded as       Microprocessor with Boot Block (MPBB)
a peripheral device, since it is addressed and accessed   Extended Microcontroller (EMC)
through a set of control registers.                      Microcontroller (MC)

Additional detailed information on the operation of the  The program memory mode is determined by setting
Flash program memory is provided in Section 6.0          the two Least Significant bits of the Configuration
"Flash Program Memory". Data EEPROM is                   Register 3L (CONFIG3L) as shown in Register 25-4
discussed separately in Section 8.0 "Data EEPROM         (see Section 25.1 "Configuration Bits" for additional
Memory".                                                 details on the device Configuration bits).

5.1 Program Memory Organization                          The program memory modes operate as follows:

PIC18 microcontrollers implement a 21-bit program         The Microprocessor Mode permits access only
counter, which is capable of addressing a 2-Mbyte           to external program memory; the contents of the
program memory space. Accessing a location between          on-chip Flash memory are ignored. The 21-bit
the upper boundary of the physically implemented            program counter permits access to a 2-Mbyte
memory and the 2-Mbyte address will return all `0's (a      linear program memory space.
NOP instruction).
                                                          The Microprocessor with Boot Block Mode
The PIC18F6527 and PIC18F8527 each have 48 Kbytes           accesses on-chip Flash memory from the boot
of Flash memory and can store up to 24,576 single-word      block. Above this, external program memory is
instructions.                                               accessed all the way up to the 2-Mbyte limit.
                                                            Program execution automatically switches
The PIC18F6622 and PIC18F8622 each have 64 Kbytes           between the two memories as required. The boot
of Flash memory and can store up to 32,768 single-word      block is configurable to 1, 2 or 4 Kbytes.
instructions.
                                                          The Microcontroller Mode accesses only
The PIC18F6627 and PIC18F8627 each have 96 Kbytes           on-chip Flash memory. Attempts to read above the
of Flash memory and can store up to 49,152 single-word      physical limit of the on-chip Flash (0BFFFh for the
instructions.                                               PIC18F8527, 0FFFFh for the PIC18F8622,
                                                            17FFFh for the PIC18F8627, 1FFFFh for the
The PIC18F6722 and PIC18F8722 each have                     PIC18F8722) causes a read of all `0's (a NOP
128 Kbytes of Flash memory and can store up to              instruction).
65,536 single-word instructions.
                                                            The Microcontroller mode is also the only operating
PIC18 devices have two interrupt vectors. The Reset         mode available to PIC18F6527/6622/6627/6722
vector address is at 0000h and the interrupt vector         devices.
addresses are at 0008h and 0018h.
                                                          The Extended Microcontroller Mode allows
The program memory map for the PIC18F8722 family            access to both internal and external program
of devices is shown in Figure 5-1.                          memories as a single block. The device can
                                                            access its entire on-chip Flash memory; above
                                                            this, the device accesses external program
                                                            memory up to the 2-Mbyte program space limit.
                                                            As with Boot Block mode, execution automatically
                                                            switches between the two memories as required.

                                                         In all modes, the microcontroller has complete access
                                                         to data RAM and EEPROM.

                                                         Figure 5-2 compares the memory maps of the different
                                                         program memory modes. The differences between
                                                         on-chip and external memory access limitations are
                                                         more fully explained in Table 5-1.

2008 Microchip Technology Inc.                                DS39646C-page 63
PIC18F8722 FAMILY

FIGURE 5-1:       PROGRAM MEMORY MAP AND STACK FOR PIC18F8722 FAMILY DEVICES

                  CALL,RCALL,RETURN       PC<20:0>                                     21
                  RETFIE,RETLW
                                       Stack Level 1

                                                   
                                                   
                                                   

                                       Stack Level 31

                                       Reset Vector                                    0000h

                             High-Priority Interrupt Vector                            0008h
                                                                                       0018h
                             Low-Priority Interrupt Vector

      On-Chip                      On-Chip         On-Chip                   On-Chip
Program Memory               Program Memory  Program Memory            Program Memory

PIC18FX527                   PIC18FX622             PIC18FX627         PIC18FX722

                  0BFFFh                                                                        User Memory Space
                  0C000h

                                     0FFFFh
                                     10000h

                 Read `0'    Read `0'                        017FFFh
                                                              018000h

                                                     Read `0'

                                                                                       01FFFFh
                                                                                       1FFFFFh

TABLE 5-1: MEMORY ACCESS FOR PIC18F8527/8622/8627/8722 PROGRAM MEMORY MODES

                           Internal Program Memory                     External Program Memory

Operating Mode    Execution  Table Read                         Execution  Table Read
                     From        From                              From        From
                                             Table Write To                                     Table Write To

Microprocessor    No Access  No Access       No Access              Yes        Yes                  Yes
                      Yes        Yes             Yes                Yes        Yes                  Yes
Microprocessor
w/ Boot Block         Yes        Yes             Yes            No Access  No Access            No Access
                      Yes        Yes             Yes                Yes        Yes                  Yes
Microcontroller

Extended
Microcontroller

DS39646C-page 64                                                            2008 Microchip Technology Inc.
                                                                                            PIC18F8722 FAMILY

FIGURE 5-2:                                      MEMORY MAPS FOR PIC18F8722 FAMILY PROGRAM MEMORY MODES

                         Microprocessor                            Microprocessor           Microcontroller          Extended
                                Mode                               with Boot Block               Mode(5)         Microcontroller

                                                                          Mode                                          Mode

                         000000h                 On-Chip  000000h                           000000h              000000h
                                                          0007FFh(6) or
                                      External   Program  000FFFh(6) or            On-Chip  0BFFFh(1)   On-Chip  0BFFFh(1)                 On-Chip
                                      Program             001FFFh(6)               Program  0FFFFh(2)   Program                            Program
                                       Memory    Memory   000800h(6) or            Memory   017FFFh(3)  Memory                             Memory
                                                    (No   001000h(6) or                     01FFFFh(4)
Program Space Execution                                   002000h(6)                        0C000h(1)    Reads   0FFFFh(2)
                                                 access)                                    010000h(2)     `0's
                                                                                            018000h(3)
                                                                                            020000h(4)           017FFFh(3)

                                                                                                                 01FFFFh(4)

                                                                                                                 0C000h(1)
                                                                                                                 010000h(2)

                                                                         External                                018000h(3)  External
                                                                         Program                                 020000h(4)  Program
                                                                         Memory
                                                                                                                             Memory

                         1FFFFFh                          1FFFFFh                           1FFFFFh              1FFFFFh

                                       External  On-Chip                 External On-Chip               On-Chip                  External  On-Chip
                                       Memory     Flash                  Memory Flash                    Flash                   Memory      Flash

Note 1:                  PIC18F6527 and PIC18F8527.
          2:             PIC18F6622 and PIC18F8622.
          3:             PIC18F6627 and PIC18F8627.
          4:             PIC18F6722 and PIC18F8722.
          5:             This is the only mode available on PIC18F6527/6622/6627/6722 devices.
          6:             Boot block size is determined by the BBSIZ<1:0> bits in CONFIG4L.

2008 Microchip Technology Inc.                                                                                             DS39646C-page 65
PIC18F8722 FAMILY

5.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 is contained in three separate 8-bit registers. The      the stack is readable and writable through the top-of-
low byte, known as the PCL register, is both readable        stack Special File Registers. Data can also be pushed
and writable. The high byte, or PCH register, contains       to, or popped from the stack, using these registers.
the PC<15:8> bits; it is not directly readable or writable.
Updates to the PCH register are performed through the        A CALL type instruction causes a push onto the stack;
PCLATH register. The upper byte is called PCU. This          the Stack Pointer is first incremented and the location
register contains the PC<20:16> bits; it is also not         pointed to by the Stack Pointer is written with the
directly readable or writable. Updates to the PCU            contents of the PC (already pointing to the instruction
register are performed through the PCLATU register.          following the CALL). A RETURN type instruction causes
                                                             a POP from the stack; the contents of the location
The contents of PCLATH and PCLATU are transferred            pointed to by the STKPTR are transferred to the PC
to the program counter by any operation that writes          and then the Stack Pointer is decremented.
PCL. Similarly, the upper two bytes of the program
counter are transferred to PCLATH and PCLATU by an           The Stack Pointer is initialized to `00000' after all
operation that reads PCL. This is useful for computed        Resets. There is no RAM associated with the location
offsets to the PC (see Section 5.1.5.1 "Computed             corresponding to a Stack Pointer value of `00000'; this
GOTO").                                                      is only a Reset value. Status bits indicate if the stack is
                                                             full or has overflowed or has underflowed.
The PC addresses bytes in the program memory. To
prevent the PC from becoming misaligned with word            5.1.3.1 Top-of-Stack Access
instructions, the Least Significant bit of PCL is fixed to
a value of `0'. The PC increments by 2 to address            Only the top of the return address stack (TOS) is
sequential instructions in the program memory.               readable and writable. A set of three registers,
                                                             TOSU:TOSH:TOSL, hold the contents of the stack loca-
The CALL, RCALL, GOTO and program branch                     tion pointed to by the STKPTR register (Figure 5-3). This
instructions write to the program counter directly. For      allows users to implement a software stack if necessary.
these instructions, the contents of PCLATH and               After a CALL, RCALL or interrupt, the software can read
PCLATU are not transferred to the program counter.           the pushed value by reading the TOSU:TOSH:TOSL
                                                             registers. These values can be placed on a user defined
5.1.3 RETURN ADDRESS STACK                                   software stack. At return time, the software can return
                                                             these values to TOSU:TOSH:TOSL and do a return.
The return address stack allows any combination of up
to 31 program calls and interrupts to occur. The PC is       The user must disable the global interrupt enable bits
pushed onto the stack when a CALL or RCALL instruc-          while accessing the stack to prevent inadvertent stack
tion is executed or an interrupt is Acknowledged. The        corruption.
PC value is pulled off the stack on a RETURN, RETLW
or a RETFIE instruction. PCLATU and PCLATH are not
affected by any of the RETURN or CALL instructions.

FIGURE 5-3:       RETURN ADDRESS STACK AND ASSOCIATED REGISTERS
                                                       Return Address Stack <20:0>

                  Top-of-Stack Registers                              11111  Stack Pointer
                                                                      11110
                                                                      11101  STKPTR<4:0>
                                                                                  00010
TOSU              TOSH  TOSL
00h               1Ah   34h

                                          Top-of-Stack       001A34h  00011
                                                             000D58h  00010
                                                                      00001
                                                                      00000

DS39646C-page 66                                                             2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

5.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
The STKPTR register (Register 5-1) contains the Stack      zero 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
The user may read and write the Stack Pointer value.               stack conditions can be verified and
This feature can be used by a Real-Time Operating                  appropriate actions can be taken. This is
System (RTOS) for return stack maintenance.                        not the same as a Reset, as the contents
                                                                   of the SFRs are not affected.
After the PC is pushed onto the stack 31 times (without
popping any values off the stack), the STKFUL bit is       5.1.3.3 PUSH and POP Instructions
set. The STKFUL bit is cleared by software or by a
POR.                                                       Since the Top-of-Stack is readable and writable, the
                                                           ability to push values onto the stack and pull values off
The action that takes place when the stack becomes         the stack without disturbing normal program execution
full depends on the state of the STVREN (Stack Over-       is a desirable feature. The PIC18 instruction set
flow Reset Enable) Configuration bit. (Refer to            includes two instructions, PUSH and POP, that permit
Section 25.1 "Configuration Bits" for a description of     the TOS to be manipulated under software control.
the device Configuration bits.) If STVREN is set           TOSU, TOSH and TOSL can be modified to place data
(default), the 31st PUSH will push the (PC + 2) value      or a return address on the stack.
onto the stack, set the STKFUL bit and reset the
device. The STKFUL bit will remain set and the Stack       The PUSH instruction places the current PC value onto
Pointer will be set to zero.                               the stack. This increments the Stack Pointer and loads
                                                           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 decre-
Any additional pushes will not overwrite the 31st PUSH     menting the Stack Pointer. The previous value pushed
and STKPTR will remain at 31.                              onto the stack then becomes the TOS value.

REGISTER 5-1: STKPTR: STACK POINTER REGISTER

R/C-0              R/C-0          U-0               R/W-0  R/W-0                 R/W-0  R/W-0  R/W-0
                                                     SP4    SP3                   SP2    SP1    SP0
STKFUL(1) STKUNF(1)               --
                                                                                                      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    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 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.

2008 Microchip Technology Inc.                                                               DS39646C-page 67
PIC18F8722 FAMILY

5.1.3.4 Stack Full and Underflow Resets                        EXAMPLE 5-1:        FAST REGISTER STACK
                                                                                   CODE EXAMPLE
Device Resets on stack overflow and stack underflow             CALL SUB1, FAST
conditions are enabled by setting the STVREN bit in                                 ;STATUS, WREG, BSR
Configuration Register 4L. When STVREN is set, a full                              ;SAVED IN FAST REGISTER
or underflow will set the appropriate STKFUL or                                    ;STACK
STKUNF bit and then cause a device Reset. When
STVREN is cleared, a full or underflow condition will set      SUB1               ;RESTORE VALUES SAVED
the appropriate STKFUL or STKUNF bit, but not cause                               ;IN FAST REGISTER STACK
a device Reset. The STKFUL or STKUNF bits are
cleared by the user software or a Power-on Reset.                    RETURN, FAST

5.1.4 FAST REGISTER STACK                                      5.1.5  LOOK-UP TABLES IN PROGRAM
                                                                      MEMORY
A fast register stack is provided for the STATUS,
WREG and BSR registers, to provide a "fast return"             There may be programming situations that require the
option for interrupts. The stack for each register is only     creation of data structures, or look-up tables, in
one level deep and is neither readable nor writable. It is     program memory. For PIC18 devices, look-up tables
loaded with the current value of the corresponding reg-        can be implemented in two ways:
ister when the processor vectors for an interrupt. All
interrupt sources will push values into the Stack regis-       Computed GOTO
ters. The values in the registers are then loaded back          Table Reads
into their associated registers if the RETFIE, FAST
instruction is used to return from the interrupt.              5.1.5.1 Computed GOTO

If both low and high-priority interrupts are enabled, the      A computed GOTO is accomplished by adding an offset
stack registers cannot be used reliably to return from         to the program counter. An example is shown in
low-priority interrupts. If a high-priority interrupt occurs   Example 5-2.
while servicing a low-priority interrupt, the Stack regis-
ter values stored by the low-priority interrupt will be        A look-up table can be formed with an ADDWF PCL
overwritten. In these cases, users must save the key           instruction and a group of RETLW nn instructions. The W
registers in software during a low-priority interrupt.         register is loaded with an offset into the table before exe-
                                                               cuting a call to that table. The first instruction of the called
If interrupt priority is not used, all interrupts may use the  routine is the ADDWF PCL instruction. The next instruction
fast register stack for returns from interrupt. If no inter-   executed will be one of the RETLW nn instructions that
rupts are used, the fast register stack can be used to         returns the value `nn' to the calling function.
restore the STATUS, WREG and BSR registers at the
end of a subroutine call. To use the fast register stack       The offset value (in WREG) specifies the number of
for a subroutine call, a CALL label, FAST instruction          bytes that the program counter should advance and
must be executed to save the STATUS, WREG and                  should be multiples of 2 (LSb = 0).
BSR registers to the fast register stack. A
RETURN, FAST instruction is then executed to restore           In this method, only one data byte may be stored in
these registers from the fast register stack.                  each instruction location and room on the return
                                                               address stack is required.
Example 5-1 shows a source code example that uses
the fast register stack during a subroutine call and return.   Note:  The "ADDWF PCL" instruction does not
                                                                      update the PCLATH and PCLATU registers.
                                                                      A read operation on PCL must be performed
                                                                      to update PCLATH and PCLATU.

EXAMPLE 5-2:         COMPUTED GOTO USING AN OFFSET VALUE

MAIN:  ORG        0x0000
       MOVLW      0x00
...    CALL       TABLE
TABLE
       ORG        0x8000  ; A simple read of PCL will update PCLATH, PCLATU
       MOVF       PCL, F  ; Multiply by 2 to get correct offset in table
       RLNCF      W, W    ; Add the modified offset to force jump into table
       ADDWF      PCL
       RETLW      `A'
       RETLW      `B'
       RETLW      `C'
       RETLW      `D'
       RETLW      `E'
       END

DS39646C-page 68                                                                   2008 Microchip Technology Inc.
                                                             PIC18F8722 FAMILY

5.1.5.2 Table Reads and Table Writes                         memory and latched into the instruction register during
                                                             Q4. The instruction is decoded and executed during the
A better method of storing data in program memory            following Q1 through Q4. The clocks and instruction
allows two bytes of data to be stored in each instruction    execution flow are shown in Figure 5-4.
location.
                                                             5.2.2 INSTRUCTION FLOW/PIPELINING
Look-up table data may be stored two bytes per pro-
gram word by using table reads and writes. The Table         An "Instruction Cycle" consists of four Q cycles: Q1
Pointer (TBLPTR) register specifies the byte address         through Q4. The instruction fetch and execute are
and the Table Latch (TABLAT) register contains the           pipelined in such a manner that a fetch takes one
data that is read from or written to program memory.         instruction cycle, while the decode and execute take
Data is transferred to or from program memory one            another instruction cycle. However, due to the pipe-
byte at a time.                                              lining, each instruction effectively executes in one
                                                             cycle. If an instruction causes the program counter to
Table read and table write operations are discussed          change (e.g., GOTO), then two cycles are required to
further in Section 6.1 "Table Reads and Table                complete the instruction (Example 5-3).
Writes".
                                                             A fetch cycle begins with the program counter
5.2 PIC18 Instruction Cycle                                  incrementing in Q1.

5.2.1 CLOCKING SCHEME                                        In the execution cycle, the fetched instruction is latched
                                                             into the Instruction Register (IR) in cycle Q1. This
The microcontroller clock input, whether from an internal    instruction is then decoded and executed during the
or external source, is internally divided by four to gener-  Q2, Q3 and Q4 cycles. Data memory is read during Q2
ate four non-overlapping quadrature clocks (Q1, Q2, Q3       (operand read) and written during Q4 (destination
and Q4). Internally, the program counter is incremented      write).
on every Q1; the instruction is fetched from the program

FIGURE 5-4:                 CLOCK/INSTRUCTION CYCLE                               Q1 Q2 Q3 Q4

                   OSC1     Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4                                               PC + 4
                        Q1                                                             Execute INST (PC + 2)
                        Q2                                                                                    Internal
                        Q3                                                              Fetch INST (PC + 4)   Phase
                        Q4                                                                                    Clock
                       PC
                                        PC                           PC + 2
          OSC2/CLKO
             (RC mode)      Execute INST (PC 2)            Execute INST (PC)
                               Fetch INST (PC)               Fetch INST (PC + 2)

EXAMPLE 5-3: INSTRUCTION PIPELINE FLOW

                                  TCY0             TCY1         TCY2              TCY3  TCY4                  TCY5

1. MOVLW 55h                      Fetch 1 Execute 1          Execute 2
                                                              Fetch 3
2. MOVWF PORTB                                     Fetch 2

3. BRA SUB_1                                                            Execute 3
                                                                         Fetch 4 Flush (NOP)
4. BSF PORTA, BIT3 (Forced 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.

2008 Microchip Technology Inc.                                                              DS39646C-page 69
PIC18F8722 FAMILY

5.2.3  INSTRUCTIONS IN PROGRAM                            The CALL and GOTO instructions have the absolute pro-
       MEMORY                                             gram memory address embedded into the instruction.
                                                          Since instructions are always stored on word boundar-
The program memory is addressed in bytes. Instruc-        ies, the data contained in the instruction is a word
tions are stored as two bytes or four bytes in program    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 5-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 2 and the LSb will always read `0' (see Section 5.1.2  relative address offset, operate in the same manner. The
"Program Counter").                                       offset value stored in a branch instruction represents the
                                                          number of single-word instructions that the PC will be
Figure 5-5 shows an example of how instruction words      offset by. Section 26.0 "Instruction Set Summary"
are stored in the program memory.                         provides further details of the instruction set.

FIGURE 5-5:       INSTRUCTIONS IN PROGRAM MEMORY

                                                          LSB = 1  LSB = 0  Word Address
                                                                                    
                  Program Memory
                                                                               000000h
                  Byte Locations                                               000002h
                                                                               000004h
             Instruction 1: MOVLW  055h                   0Fh      55h         000006h
                                                                               000008h
             Instruction 2: GOTO   0006h                  EFh      03h         00000Ah
                                                                               00000Ch
                                                          F0h      00h         00000Eh
                                                                               000010h
             Instruction 3: MOVFF  123h, 456h             C1h      23h         000012h
                                                                               000014h
                                                          F4h      56h

DS39646C-page 70                                                             2008 Microchip Technology Inc.
                                                               PIC18F8722 FAMILY

5.2.4 TWO-WORD INSTRUCTIONS                                    the instruction sequence. If the first word is skipped for
                                                               some reason and the second word is executed by itself,
The standard PIC18 instruction set has 8 two-word              a NOP is executed instead. This is necessary for cases
instructions: CALL, MOVFF, GOTO, LSFR, ADDULNK,                when the two-word instruction is preceded by a condi-
CALLW, MOVSS and SUBULNK. In all cases, the                    tional instruction that changes the PC. Example 5-4
second word of the instructions always has `1111' as           shows how this works.
its four Most Significant bits; the other 12 bits are literal
data, usually a data memory address.                           Note:  See Section 5.6 "PIC18 Instruction
                                                                      Execution and the Extended Instruc-
The use of `1111' in the 4 MSbs of an instruction spec-               tion Set" for information on two-word
ifies a special form of NOP. If the instruction is executed           instructions in the extended instruction set.
in proper sequence immediately after the first word
the data in the second word is accessed and used by

EXAMPLE 5-4: TWO-WORD INSTRUCTIONS

CASE 1:

Object Code                       Source Code

0110 0110 0000 0000 TSTFSZ REG1                                ; is RAM location 0?

1100 0001 0010 0011 MOVFF         REG1, REG2 ; No, skip this word

1111 0100 0101 0110                                            ; Execute this word as a NOP

0010 0100 0000 0000 ADDWF         REG3                         ; continue code

CASE 2:

Object Code                       Source Code

0110 0110 0000 0000 TSTFSZ REG1                                ; is RAM location 0?

1100 0001 0010 0011 MOVFF         REG1, REG2 ; Yes, execute this word

1111 0100 0101 0110                                            ; 2nd word of instruction

0010 0100 0000 0000 ADDWF         REG3                         ; continue code

2008 Microchip Technology Inc.                                                             DS39646C-page 71
PIC18F8722 FAMILY

5.3 Data Memory Organization                             5.3.1 BANK SELECT REGISTER (BSR)

Note:  The operation of some aspects of data             Large areas of data memory require an efficient
       memory are changed when the PIC18                 addressing scheme to make rapid access to any
       extended instruction set is enabled. See          address possible. Ideally, this means that an entire
       Section 5.5 "Data Memory and the                  address does not need to be provided for each read or
       Extended Instruction Set" for more                write operation. For PIC18 devices, this is accom-
       information.                                      plished with a RAM banking scheme. This divides the
                                                         memory space into 16 contiguous banks of 256 bytes.
The data memory in PIC18 devices is implemented as       Depending on the instruction, each location can be
static RAM. Each register in the data memory has a       addressed directly by its full 12-bit address, or an 8-bit
12-bit address, allowing up to 4096 bytes of data        low-order address and a 4-bit Bank Pointer.
memory. The memory space is divided into as many as
16 banks that contain 256 bytes each; the PIC18F8722     Most instructions in the PIC18 instruction set make use
family of devices implements all 16 banks. Figure 5-6    of the Bank Pointer, known as the Bank Select Register
shows the data memory organization for the               (BSR). This SFR holds the 4 Most Significant bits of a
PIC18F8722 family of devices.                            location's address; the instruction itself includes the
                                                         8 Least Significant bits. Only the four lower bits of the
The data memory contains Special Function Registers      BSR are implemented (BSR<3:0>). The upper four bits
(SFRs) and General Purpose Registers (GPRs). The         are unused; they will always read `0' and cannot be
SFRs are used for control and status of the controller   written to. The BSR can be loaded directly by using the
and peripheral functions, while GPRs are used for data   MOVLB instruction.
storage and scratchpad operations in the user's
application. Any read of an unimplemented location will  The value of the BSR indicates the bank in data
read as `0's.                                            memory; the 8 bits in the instruction show the location
                                                         in the bank and can be thought of as an offset from the
The instruction set and architecture allow operations    bank's lower boundary. The relationship between the
across all banks. The entire data memory may be          BSR's value and the bank division in data memory is
accessed by Direct, Indirect or Indexed Addressing       shown in Figure 5-7.
modes. Addressing modes are discussed later in this
subsection.                                              Since up to 16 registers may share the same low-order
                                                         address, the user must always be careful to ensure that
To ensure that commonly used registers (SFRs and         the proper bank is selected before performing a data
select GPRs) can be accessed in a single cycle, PIC18    read or write. For example, writing what should be
devices implement an Access Bank. This is a 256-byte     program data to an 8-bit address of F9h while the BSR
memory space that provides fast access to SFRs and       is 0Fh will end up resetting the program counter.
the lower portion of GPR Bank 0 without using the
BSR. Section 5.3.2 "Access Bank" provides a              While any bank can be selected, only those banks that
detailed description of the Access RAM.                  are actually implemented can be read or written to.
                                                         Writes to unimplemented banks are ignored, while
                                                         reads from unimplemented banks will return `0's. Even
                                                         so, the STATUS register will still be affected as if the
                                                         operation was successful. The data memory map in
                                                         Figure 5-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. This instruction ignores the
                                                         BSR completely when it executes. All other instructions
                                                         include only the low-order address as an operand and
                                                         must use either the BSR or the Access Bank to locate
                                                         their target registers.

DS39646C-page 72                                          2008 Microchip Technology Inc.
                                                       PIC18F8722 FAMILY

FIGURE 5-6:         DATA MEMORY MAP FOR THE PIC18F8722 FAMILY OF DEVICES

      BSR<3:0>                        Data Memory Map        When `a' = 0:
            = 0000                                                 The BSR is ignored and the
            = 0001               00h  Access RAM       000h        Access Bank is used.
            = 0010  Bank 0                 GPR         05Fh        The first 96 bytes are
            = 0011                         GPR         060h        general purpose RAM
            = 0100               FFh       GPR         0FFh        (from Bank 0).
            = 0101               00h       GPR         100h        The second 160 bytes are
            = 0110  Bank 1                 GPR                     Special Function Registers
            = 0111               FFh       GPR         1FFh        (from Bank 15).
            = 1000               00h       GPR         200h
            = 1001  Bank 2                 GPR               When `a' = 1:
            = 1010                         GPR         2FFh        The BSR specifies the Bank
            = 1011               FFh       GPR         300h        used by the instruction.
            = 1100               00h       GPR
            = 1101  Bank 3                 GPR         3FFh  Access Bank
            = 1110                         GPR         400h
            = 1111               FFh       GPR                                         00h
                                 00h       GPR         4FFh  Access RAM Low
                    Bank 4                 GPR         500h
                                           SFR                                         5Fh
                                 FFh                   5FFh  Access RAM High 60h
                                 00h                   600h
                    Bank 5                                   (SFRs)       FFh
                                                       6FFh
                                 FFh                   700h
                                 00h
                    Bank 6                             7FFh
                                                       800h
                                 FFh
                                 00h                   8FFh
                    Bank 7                             900h

                                 FFh                   9FFh
                                 00h                   A00h
                    Bank 8
                                                       AFFh
                                 FFh                   B00h
                                 00h
                    Bank 9                             BFFh
                                                       C00h
                                 FFh
                                 00h                   CFFh
                    Bank 10                            D00h

                                 FFh                   DFFh
                                 00h                   E00h
                    Bank 11
                                                       EFFh
                                 FFh                   F00h
                    Bank 12 00h                        F5Fh
                                                       F60h
                                 FFh                   FFFh
                    Bank 13 00h

                                 FFh
                                 00h
                    Bank 14

                                 FFh
                                 00h
                    Bank 15
                                 FFh

2008 Microchip Technology Inc.                             DS39646C-page 73
PIC18F8722 FAMILY

FIGURE 5-7:       USE OF THE BANK SELECT REGISTER (DIRECT ADDRESSING)

                  BSR(1)           Data Memory                         From Opcode(2)

7                         0  000h                            00h    7                  0

0 0 000011                         Bank 0                    FFh    1 1111 111
                                                             00h
                             100h

                                   Bank 1

Bank Select(2)               200h                            FFh
                                                             00h

                                   Bank 2                    FFh

                             300h

                                                             00h

                                   Bank 3
                                   through
                                   Bank 13

                             E00h                            FFh

                                                             00h

                                   Bank 14                   FFh
                                                             00h
                             F00h

                                   Bank 15

                             FFFh                            FFh

Note 1:      The Access RAM bit of the instruction can be used to force an override of the selected bank (BSR<3:0>) to
         2:  the registers of the Access Bank.

             The MOVFF instruction embeds the entire 12-bit address in the instruction.

5.3.2 ACCESS BANK                                            however, the instruction is forced to use the Access
                                                             Bank address map; the current value of the BSR is
While the use of the BSR with an embedded 8-bit              ignored entirely.
address allows users to address the entire range of
data memory, it also means that the user must always         Using this "forced" addressing allows the instruction to
ensure that the correct bank is selected. Otherwise,         operate on a data address in a single cycle, without
data may be read from or written to the wrong location.      updating the BSR first. For 8-bit addresses of 60h and
This can be disastrous if a GPR is the intended target       above, this means that users can evaluate and operate
of an operation, but an SFR is written to instead.           on SFRs more efficiently. The Access RAM below 60h
Verifying and/or changing the BSR for each read or           is a good place for data values that the user might need
write to data memory can become very inefficient.            to access rapidly, such as immediate computational
                                                             results or common program variables. Access RAM
To streamline access for the most commonly used data         also allows for faster and more code efficient context
memory locations, the data memory is configured with         saving and switching of variables.
an Access Bank, which allows users to access a
mapped block of memory without specifying a BSR.             The mapping of the Access Bank is slightly different
The Access Bank consists of the first 96 bytes of            when the extended instruction set is enabled (XINST
memory (00h-5Fh) in Bank 0 and the last 160 bytes of         Configuration bit = 1). This is discussed in more detail
memory (60h-FFh) in Block 15. The lower half is known        in Section 5.5.3 "Mapping the Access Bank in
as the "Access RAM" and is composed of GPRs. This            Indexed Literal Offset Mode".
upper half is also where the device's SFRs are
mapped. These two areas are mapped contiguously in           5.3.3  GENERAL PURPOSE REGISTER
the Access Bank and can be addressed in a linear                    FILE
fashion by an 8-bit address (Figure 5-6).
                                                             PIC18 devices may have banked memory in the GPR
The Access Bank is used by core PIC18 instructions           area. This is data RAM, which is available for use by all
that include the Access RAM bit (the `a' parameter in        instructions. GPRs start at the bottom of Bank 0
the instruction). When `a' is equal to `1', the instruction  (address 000h) and grow upwards towards the bottom of
uses the BSR and the 8-bit address included in the           the SFR area. GPRs are not initialized by a Power-on
opcode for the data memory address. When `a' is `0',         Reset and are unchanged on all other Resets.

DS39646C-page 74                                                       2008 Microchip Technology Inc.
                                                                PIC18F8722 FAMILY

5.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 sec-
data memory (FFFh) and extend downward to occupy                tion. Registers related to the operation of a peripheral
the top half of Bank 15 (F60h to FFFh). A list of these         feature are described in the chapter for that peripheral.
registers is given in Table 5-2 and Table 5-3.
                                                                The SFRs are typically distributed among the
                                                                peripherals whose functions they control. Unused SFR
                                                                locations are unimplemented and read as `0's.

TABLE 5-2: SPECIAL FUNCTION REGISTER MAP FOR THE PIC18F8722 FAMILY OF DEVICES

Address      Name    Address      Name      Address                Name    Address       Name    Address        Name

FFFh          TOSU   FDFh INDF2(1)          FBFh                 CCPR1H         F9Fh      IPR1       F7Fh    SPBRGH1
FFEh          TOSH   FDEh POSTINC2(1)       FBEh                 CCPR1L        F9Eh       PIR1       F7Eh   BAUDCON1
FFDh           TOSL  FDDh POSTDEC2(1)       FBDh                CCP1CON        F9Dh       PIE1       F7Dh    SPBRGH2
FFCh         STKPTR  FDCh PREINC2(1)        FBCh                 CCPR2H        F9Ch   MEMCON         F7Ch   BAUDCON2
FFBh         PCLATU  FDBh PLUSW2(1)         FBBh                 CCPR2L        F9Bh   OSCTUNE        F7Bh
                                                                CCP2CON        F9Ah    TRISJ(3)      F7Ah        --(2)
FFAh PCLATH          FDAh FSR2H             FBAh                 CCPR3H         F99h   TRISH(3)       F79h       --(2)
                                                                 CCPR3L         F98h    TRISG         F78h  ECCP1DEL
FF9h         PCL     FD9h FSR2L             FB9h                CCP3CON         F97h     TRISF        F77h      TMR4
                                                                ECCP1AS         F96h    TRISE         F76h       PR4
FF8h TBLPTRU         FD8h STATUS            FB8h                 CVRCON         F95h    TRISD         F75h     T4CON
                                                                  CMCON         F94h    TRISC         F74h    CCPR4H
FF7h TBLPTRH         FD7h TMR0H             FB7h                  TMR3H         F93h    TRISB         F73h    CCPR4L
                                                                  TMR3L         F92h    TRISA         F72h   CCP4CON
FF6h TBLPTRL         FD6h TMR0L             FB6h                  T3CON         F91h    LATJ(3)       F71h    CCPR5H
                                                                 PSPCON         F90h    LATH(3)       F70h    CCPR5L
FF5h         TABLAT  FD5h         T0CON     FB5h                 SPBRG1         F8Fh     LATG        F6Fh    CCP5CON
FF4h         PRODH   FD4h           --(2)   FB4h                 RCREG1        F8Eh      LATF        F6Eh     SPBRG2
                                                                 TXREG1        F8Dh      LATE        F6Dh     RCREG2
FF3h PRODL           FD3h OSCCON            FB3h                  TXSTA1       F8Ch      LATD        F6Ch     TXREG2
                                                                 RCSTA1        F8Bh      LATC        F6Bh     TXSTA2
FF2h INTCON          FD2h HLVDCON           FB2h                 EEADRH        F8Ah      LATB        F6Ah     RCSTA2
                                                                  EEADR         F89h     LATA         F69h   ECCP3AS
FF1h INTCON2         FD1h WDTCON            FB1h                 EEDATA         F88h  PORTJ(3)        F68h  ECCP3DEL
                                                                EECON2(1)       F87h  PORTH(3)        F67h   ECCP2AS
FF0h INTCON3         FD0h         RCON      FB0h                 EECON1         F86h    PORTG         F66h  ECCP2DEL
FEFh INDF0(1)        FCFh         TMR1H     FAFh                                F85h    PORTF         F65h   SSP2BUF
FEEh POSTINC0(1)     FCEh         TMR1L     FAEh                    IPR3        F84h    PORTE         F64h   SSP2ADD
FEDh POSTDEC0(1)     FCDh         T1CON     FADh                    PIR3        F83h    PORTD         F63h  SSP2STAT
FECh PREINC0(1)      FCCh          TMR2     FACh                    PIE3        F82h    PORTC         F62h  SSP2CON1
FEBh PLUSW0(1)       FCBh                   FABh                    IPR2        F81h    PORTB         F61h  SSP2CON2
                                    PR2                             PIR2        F80h    PORTA         F60h       --(2)
                                                                    PIE2                                         --(2)
FEAh FSR0H           FCAh T2CON             FAAh

FE9h FSR0L           FC9h SSP1BUF           FA9h

FE8h WREG            FC8h          SSP1ADD  FA8h
FE7h INDF1(1)        FC7h         SSP1STAT  FA7h
FE6h POSTINC1(1)     FC6h         SSP1CON1  FA6h
FE5h POSTDEC1(1)     FC5h         SSP1CON2  FA5h
FE4h PREINC1(1)      FC4h          ADRESH   FA4h
FE3h PLUSW1(1)       FC3h           ADRESL  FA3h

FE2h FSR1H           FC2h ADCON0            FA2h

FE1h FSR1L           FC1h ADCON1            FA1h

FE0h         BSR     FC0h ADCON2            FA0h

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.

2008 Microchip Technology Inc.                                                                 DS39646C-page 75
PIC18F8722 FAMILY

TABLE 5-3: REGISTER FILE SUMMARY

File Name     Bit 7             Bit 6        Bit 5   Bit 4     Bit 3                 Bit 2  Bit 1                 Bit 0   Value on Details
                                                                                                                         POR, BOR on page:

TOSU          --                --           --      Top-of-Stack Upper Byte (TOS<20:16>)                                ---0 0000 57, 66

TOSH          Top-of-Stack High Byte (TOS<15:8>)                                                                         0000 0000 57, 66

TOSL          Top-of-Stack Low Byte (TOS<7:0>)                                                                           0000 0000 57, 66
STKPTR
              STKFUL(6) STKUNF(6)            --      SP4       SP3                   SP2    SP1                   SP0 00-0 0000 57, 67

PCLATU        --                --           --      Holding Register for PC<20:16>                                      ---0 0000 57, 66

PCLATH        Holding Register for PC<15:8>                                                                              0000 0000 57, 66

PCL           PC Low Byte (PC<7:0>)                                                                                      0000 0000 57, 66
TBLPTRU                                                                                                                  --00 0000 57, 90
              --                --           bit 21(7) Program Memory Table Pointer Upper Byte (TBLPTR<20:16>)

TBLPTRH Program Memory Table Pointer High Byte (TBLPTR<15:8>)                                                            0000 0000 57, 90

TBLPTRL Program Memory Table Pointer Low Byte (TBLPTR<7:0>)                                                              0000 0000 57, 90

TABLAT        Program Memory Table Latch                                                                                 0000 0000 57, 90

PRODH         Product Register High Byte                                                                                 xxxx xxxx 57, 117

PRODL         Product Register Low Byte                                                                                  xxxx xxxx 57, 117

INTCON        GIE/GIEH PEIE/GIEL TMR0IE              INT0IE    RBIE    TMR0IF               INT0IF                RBIF 0000 000x 57, 121

INTCON2       RBPU    INTEDG0 INTEDG1 INTEDG2 INTEDG3 TMR0IP                                INT3IP                RBIP 1111 1111 57, 122

INTCON3       INT2IP  INT1IP                 INT3IE  INT2IE    INT1IE  INT3IF               INT2IF  INT1IF 1100 0000 57, 123

INDF0         Uses contents of FSR0 to address data memory value of FSR0 not changed (not a physical register)         N/A  57, 82

POSTINC0 Uses contents of FSR0 to address data memory value of FSR0 post-incremented (not a physical register)         N/A  57, 82

POSTDEC0 Uses contents of FSR0 to address data memory value of FSR0 post-decremented (not a physical register)         N/A  57, 82

PREINC0 Uses contents of FSR0 to address data memory value of FSR0 pre-incremented (not a physical register)           N/A  57, 82

PLUSW0        Uses contents of FSR0 to address data memory value of FSR0 pre-incremented (not a physical register)    N/A  57, 82
              value of FSR0 offset by W

FSR0H         --                --           --      --        Indirect Data Memory Address Pointer 0 High               ---- 0000 57, 82

FSR0L         Indirect Data Memory Address Pointer 0 Low Byte                                                            xxxx xxxx 57, 82

WREG          Working Register                                                                                           xxxx xxxx 57

INDF1         Uses contents of FSR1 to address data memory value of FSR1 not changed (not a physical register)         N/A  57, 82

POSTINC1 Uses contents of FSR1 to address data memory value of FSR1 post-incremented (not a physical register)         N/A  57, 82

POSTDEC1 Uses contents of FSR1 to address data memory value of FSR1 post-decremented (not a physical register)         N/A  57, 82

PREINC1 Uses contents of FSR1 to address data memory value of FSR1 pre-incremented (not a physical register)           N/A  57, 82

PLUSW1        Uses contents of FSR1 to address data memory value of FSR1 pre-incremented (not a physical register)    N/A  57, 82
              value of FSR1 offset by W

FSR1H         --                --           --      --        Indirect Data Memory Address Pointer 1 High               ---- 0000 58, 82

FSR1L         Indirect Data Memory Address Pointer 1 Low Byte                                                            xxxx xxxx 58, 82

BSR           --                --           --      --        Bank Select Register                                      ---- 0000 58, 72

INDF2         Uses contents of FSR2 to address data memory value of FSR2 not changed (not a physical register)         N/A  58, 82

POSTINC2 Uses contents of FSR2 to address data memory value of FSR2 post-incremented (not a physical register)         N/A  58, 82

POSTDEC2 Uses contents of FSR2 to address data memory value of FSR2 post-decremented (not a physical register)         N/A  58, 82

PREINC2 Uses contents of FSR2 to address data memory value of FSR2 pre-incremented (not a physical register)           N/A  58, 82

PLUSW2        Uses contents of FSR2 to address data memory value of FSR2 pre-incremented (not a physical register)    N/A  58, 82
              value of FSR2 offset by W

FSR2H         --                --           --      --        Indirect Data Memory Address Pointer 2 High               ---- 0000 58, 82

FSR2L         Indirect Data Memory Address Pointer 2 Low Byte                                                            xxxx xxxx 58, 82

Legend:       x = unknown, u = unchanged, - = unimplemented, q = value depends on condition
Note 1:       The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise, this bit reads as `0'.
              These registers and/or bits are not implemented on 64-pin devices and are read as `0'. Reset values are shown for 80-pin devices;
          2:  individual unimplemented bits should be interpreted as `-'.
              The PLLEN bit is only available in specific oscillator configuration; otherwise, it is disabled and reads as `0'. See Section 2.6.4 "PLL in
          3:  INTOSC Modes".
              RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.
          4:  When disabled, these bits read as `0'.
              RG5 and LATG5 are only available when Master Clear is disabled (MCLRE Configuration bit = 0); otherwise, RG5 and LATG5 read as `0'.
          5:  Bit 7 and Bit 6 are cleared by user software or by a POR.
          6:  Bit 21 of TBLPTRU allows access to the device Configuration bits.
          7:

DS39646C-page 76                                                                                     2008 Microchip Technology Inc.
                                                                        PIC18F8722 FAMILY

TABLE 5-3: REGISTER FILE SUMMARY (CONTINUED)

File Name     Bit 7            Bit 6         Bit 5  Bit 4        Bit 3  Bit 2   Bit 1    Bit 0            Value on Details
                                                                                                         POR, BOR on page:

STATUS        --               --            --     N            OV     Z       DC       C               ---x xxxx 58, 80

TMR0H         Timer0 Register High Byte                                                                  0000 0000 58, 163

TMR0L         Timer0 Register Low Byte                                                                   xxxx xxxx 58, 163

T0CON         TMR0ON T08BIT                  T0CS   T0SE         PSA    T0PS2   T0PS1    T0PS0 1111 1111 58, 161

OSCCON        IDLEN            IRCF2         IRCF1  IRCF0        OSTS   IOFS    SCS1     SCS0 0100 q000 39, 58

HLVDCON VDIRMAG                --            IRVST  HLVDEN HLVDL3       HLVDL2  HLVDL1   HLVDL0 0-00 0101 58, 291

WDTCON        --               --            --     --           --     --      --       SWDTEN --- ---0 58, 313

RCON          IPEN   SBOREN(1)               --     RI           TO     PD      POR      BOR 0q-1 11q0 50, 56,

                                                                                                         58, 133

TMR1H         Timer1 Register High Byte                                                                  xxxx xxxx 58, 169

TMR1L         Timer1 Register Low Byte                                                                   xxxx xxxx 58, 169

T1CON         RD16             T1RUN T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 58, 165

TMR2          Timer2 Register                                                                            0000 0000 58, 172

PR2           Timer2 Period Register                                                                     1111 1111 58, 172

T2CON         --     T2OUTPS3 T2OUTPS2 T2OUTPS1 T2OUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 58, 171

SSP1BUF MSSP1 Receive Buffer/Transmit Register                                                           xxxx xxxx 58, 169,
SSP1ADD MSSP1 Address Register in I2CTM Slave mode. MSSP1 Baud Rate Reload Register in I2C Master mode.                        170

                                                                                                         0000 0000 58, 170

SSP1STAT      SMP              CKE           D/A    P            S      R/W     UA       BF              0000 0000 58, 162,

                                                                                                         171

SSP1CON1      WCOL             SSPOV         SSPEN  CKP          SSPM3  SSPM2   SSPM1    SSPM0 0000 0000 58, 163,
                                                                                                                               172

SSP1CON2      GCEN   ACKSTAT ACKDT                  ACKEN        RCEN   PEN     RSEN     SEN 0000 0000 58, 173

ADRESH        A/D Result Register High Byte                                                              xxxx xxxx 59, 280

ADRESL        A/D Result Register Low Byte                                                               xxxx xxxx 59, 280

ADCON0        --               --            CHS3   CHS2         CHS1   CHS0    GO/DONE  ADON --00 0000 59, 271

ADCON1        --               --            VCFG1  VCFG0        PCFG3  PCFG2   PCFG1    PCFG0 --00 0000 59, 272

ADCON2        ADFM             --            ACQT2  ACQT1        ACQT0  ADCS2   ADCS1    ADCS0 0-00 0000 59, 273

CCPR1H        Enhanced Capture/Compare/PWM Register 1 High Byte                                          xxxx xxxx 59, 180

CCPR1L        Enhanced Capture/Compare/PWM Register 1 Low Byte                                           xxxx xxxx 59, 180

CCP1CON       P1M1             P1M0          DC1B1  DC1B0        CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 59, 187

CCPR2H        Enhanced Capture/Compare/PWM Register 2 High Byte                                          xxxx xxxx 59, 180

CCPR2L        Enhanced Capture/Compare/PWM Register 2 Low Byte                                           xxxx xxxx 59, 180

CCP2CON       P2M1             P2M0          DC2B1  DC2B0        CCP2M3 CCP2M2 CCP2M1 CCP2M0 0000 0000 59, 179

CCPR3H        Enhanced Capture/Compare/PWM Register 3 High Byte                                          xxxx xxxx 59, 180

CCPR3L        Enhanced Capture/Compare/PWM Register 3 Low Byte                                           xxxx xxxx 59, 180

CCP3CON       P3M1             P3M0          DC3B1  DC3B0        CCP3M3 CCP3M2 CCP3M1 CCP3M0 0000 0000 59, 179

ECCP1AS ECCP1ASE ECCP1AS2 ECCP1AS1 ECCP1AS0 PSS1AC1 PSS1AC0 PSS1BD1 PSS1BD0 0000 0000 59, 201

CVRCON        CVREN            CVROE         CVRR   CVRSS        CVR3   CVR2    CVR1     CVR0 0000 0000 59, 287

CMCON         C2OUT            C1OUT         C2INV  C1INV        CIS    CM2     CM1      CM0 0000 0111 59, 289

TMR3H         Timer3 Register High Byte                                                                  xxxx xxxx 59, 175

TMR3L         Timer3 Register Low Byte                                                                   xxxx xxxx 59, 175

T3CON         RD16             T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON 0000 0000 59, 173

Legend:       x = unknown, u = unchanged, - = unimplemented, q = value depends on condition
Note 1:       The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise, this bit reads as `0'.
              These registers and/or bits are not implemented on 64-pin devices and are read as `0'. Reset values are shown for 80-pin devices;
          2:  individual unimplemented bits should be interpreted as `-'.
              The PLLEN bit is only available in specific oscillator configuration; otherwise, it is disabled and reads as `0'. See Section 2.6.4 "PLL in
          3:  INTOSC Modes".
              RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.
          4:  When disabled, these bits read as `0'.
              RG5 and LATG5 are only available when Master Clear is disabled (MCLRE Configuration bit = 0); otherwise, RG5 and LATG5 read as `0'.
          5:  Bit 7 and Bit 6 are cleared by user software or by a POR.
          6:  Bit 21 of TBLPTRU allows access to the device Configuration bits.
          7:

2008 Microchip Technology Inc.                                                                         DS39646C-page 77
PIC18F8722 FAMILY

TABLE 5-3: REGISTER FILE SUMMARY (CONTINUED)

File Name     Bit 7      Bit 6           Bit 5     Bit 4           Bit 3   Bit 2   Bit 1   Bit 0            Value on Details
                                                                                                           POR, BOR on page:

PSPCON        IBF        OBF             IBOV      PSPMODE         --      --      --                  --  0000 ---- 59, 252

SPBRG1        EUSART1 Baud Rate Generator Register Low Byte                                                0000 0000 59, 252

RCREG1        EUSART1 Receive Register                                                                     0000 0000 59, 260

TXREG1        EUSART1 Transmit Register                                                                    0000 0000 59, 257

TXSTA1        CSRC       TX9             TXEN      SYNC            SENDB   BRGH    TRMT    TX9D 0000 0010 59, 248

RCSTA1        SPEN       RX9             SREN      CREN            ADDEN   FERR    OERR    RX9D 0000 000x 59, 249

EEADRH        --         --              --        --              --      --      EEPROM Address          ---- --00 59, 111

                                                                                   Register High Byte

EEADR         EEPROM Address Register Low Byte                                                             0000 0000 59, 111

EEDATA        EEPROM Data Register                                                                         0000 0000 59, 111

EECON2        EEPROM Control Register 2 (not a physical register)                                          0000 0000 59, 88

EECON1        EEPGD      CFGS            --        FREE            WRERR   WREN    WR                  RD  xx-0 x000 59, 89

IPR3          SSP2IP     BCL2IP          RC2IP     TX2IP           TMR4IP  CCP5IP  CCP4IP  CCP3IP 1111 1111 60, 131

PIR3          SSP2IF     BCL2IF          RC2IF     TX2IF           TMR4IF  CCP5IF  CCP4IF  CCP3IF 0000 0000 60, 125

PIE3          SSP2IE     BCL2IE          RC2IE     TX2IE           TMR4IE  CCP5IE  CCP4IE  CCP3IE 0000 0000 60, 129

IPR2          OSCFIP     CMIP            --        EEIP            BCL1IP  HLVDIP  TMR3IP  CCP2IP 11-1 1111 60, 131

PIR2          OSCFIF     CMIF            --        EEIF            BCL1IF  HLVDIF  TMR3IF  CCP2IF 00-0 0000 60, 125

PIE2          OSCFIE     CMIE            --        EEIE            BCL1IE  HLVDIE  TMR3IE  CCP2IE 00-0 0000 60, 128

IPR1          PSPIP      ADIP            RC1IP     TX1IP           SSP1IP  CCP1IP  TMR2IP  TMR1IP 1111 1111 60, 130

PIR1          PSPIF      ADIF            RC1IF     TX1IF           SSP1IF  CCP1IF  TMR2IF  TMR1IF 0000 0000 60, 124

PIE1           PSPIE       ADIE          RC1IE      TX1IE          SSP1IE  CCP1IE  TMR2IE  TMR1IE          0000 0000  60, 127
MEMCON(2)      EBDIS         --          WAIT1     WAIT0              --      --     WM1     WM0           0-00 --00  60, 96
              INTSRC                                TUN4                            TUN1    TUN0           00-0 0000  35, 60
OSCTUNE       TRISJ7     PLLEN(3)           --     TRISJ4           TUN3    TUN2                           1111 1111  60, 157
TRISJ(2)      TRISH7      TRISJ6         TRISJ5    TRISH4          TRISJ3  TRISJ2  TRISJ1  TRISJ0          1111 1111  60, 155
TRISH(2)                 TRISH6          TRISH5                    TRISH3  TRISH2  TRISH1  TRISH0

TRISG         --         --              --        TRISG4          TRISG3  TRISG2  TRISG1  TRISG0 ---1 1111 60, 153

TRISF         TRISF7     TRISF6          TRISF5    TRISF4          TRISF3  TRISF2  TRISF1  TRISF0 1111 1111 60, 150

TRISE         TRISE7     TRISE6          TRISE5    TRISE4          TRISE3  TRISE2  TRISE1  TRISE0 1111 1111 60, 148

TRISD         TRISD7     TRISD6          TRISD5    TRISD4          TRISD3  TRISD2  TRISD1  TRISD0 1111 1111 60, 143

TRISC         TRISC7     TRISC6          TRISC5    TRISC4          TRISC3  TRISC2  TRISC1  TRISC0 1111 1111 60, 140

TRISB          TRISB7     TRISB6         TRISB5    TRISB4          TRISB3  TRISB2  TRISB1  TRISB0          1111 1111  60, 137
TRISA         TRISA7(4)  TRISA6(4)       TRISA5    TRISA4          TRISA3  TRISA2  TRISA1  TRISA0          1111 1111  60, 135
LATJ(2)                                   LATJ5     LATJ4           LATJ3   LATJ2   LATJ1   LATJ0          xxxx xxxx  60, 156
LATH(2)         LATJ7      LATJ6          LATH5    LATH4           LATH3   LATH2   LATH1   LATH0           xxxx xxxx  60, 154
LATG            LATH7      LATH6         LATG5(5)  LATG4           LATG3   LATG2   LATG1   LATG0           --xx xxxx  60, 151

                   --         --

LATF          LATF7      LATF6           LATF5     LATF4           LATF3   LATF2   LATF1   LATF0 xxxx xxxx 60, 149

LATE          LATE7      LATE6           LATE5     LATE4           LATE3   LATE2   LATE1   LATE0 xxxx xxxx 60, 146

LATD          LATD7      LATD6           LATD5     LATD4           LATD3   LATD2   LATD1   LATD0 xxxx xxxx 60, 143

LATC          LATC7      LATC6           LATC5     LATC4           LATC3   LATC2   LATC1   LATC0 xxxx xxxx 60, 140

LATB           LATB7      LATB6          LATB5     LATB4           LATB3   LATB2   LATB1   LATB0           xxxx xxxx 60, 137
LATA          LATA7(4)   LATA6(4)        LATA5     LATA4           LATA3   LATA2   LATA1   LATA0           xxxx xxxx 60, 135

Legend:       x = unknown, u = unchanged, - = unimplemented, q = value depends on condition
Note 1:       The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise, this bit reads as `0'.
              These registers and/or bits are not implemented on 64-pin devices and are read as `0'. Reset values are shown for 80-pin devices;
          2:  individual unimplemented bits should be interpreted as `-'.
              The PLLEN bit is only available in specific oscillator configuration; otherwise, it is disabled and reads as `0'. See Section 2.6.4 "PLL in
          3:  INTOSC Modes".
              RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.
          4:  When disabled, these bits read as `0'.
              RG5 and LATG5 are only available when Master Clear is disabled (MCLRE Configuration bit = 0); otherwise, RG5 and LATG5 read as `0'.
          5:  Bit 7 and Bit 6 are cleared by user software or by a POR.
          6:  Bit 21 of TBLPTRU allows access to the device Configuration bits.
          7:

DS39646C-page 78                                                                            2008 Microchip Technology Inc.
                                                                      PIC18F8722 FAMILY

TABLE 5-3: REGISTER FILE SUMMARY (CONTINUED)

File Name     Bit 7            Bit 6     Bit 5          Bit 4  Bit 3  Bit 2  Bit 1  Bit 0                       Value on Details
                                                                                                               POR, BOR on page:

PORTJ(2)      RJ7              RJ6       RJ5            RJ4    RJ3    RJ2    RJ1    RJ0                        xxxx xxxx  60, 156
PORTH(2)                                                                                                       0000 xxxx  60, 154
PORTG         RH7              RH6        RH5           RH4    RH3    RH2    RH1    RH0                        --xx xxxx  60, 151
PORTF          --               --       RG5(5)         RG4    RG3    RG2    RG1    RG0                        x000 0000  60, 149
PORTE                                                                                                          xxxx xxxx  60, 146
PORTD         RF7              RF6       RF5            RF4    RF3    RF2    RF1    RF0                        xxxx xxxx  60, 143
PORTC                                                                                                          xxxx xxxx  60, 140
PORTB         RE7              RE6       RE5            RE4    RE3    RE2    RE1    RE0                        xxxx xxxx  60, 137
PORTA                                                                                                          xx0x 0000  61, 135
SPBRGH1       RD7              RD6       RD5            RD4    RD3    RD2    RD1    RD0                        0000 0000  61, 252
BAUDCON1                                                                                                       01-0 0-00  61, 250
SPBRGH2       RC7              RC6       RC5            RC4    RC3    RC2    RC1    RC0                        0000 0000  61, 252
BAUDCON2                                                                                                       01-0 0-00  61, 250
ECCP1DEL       RB7              RB6      RB5            RB4    RB3    RB2    RB1    RB0                        0000 0000  61, 200
TMR4          RA7(4)           RA6(4)    RA5            RA4    RA3    RA2    RA1    RA0                        0000 0000  61, 178
PR4                                                                                                            1111 1111  61, 178
T4CON         EUSART1 Baud Rate Generator Register High Byte                                                   -000 0000  61, 178
CCPR4H                                                                                                         xxxx xxxx  61, 180
CCPR4L        ABDOVF           RCIDL     --             SCKP   BRG16  --     WUE    ABDEN                      xxxx xxxx  61, 180
CCP4CON                                                                                                        --00 0000  61, 179
CCPR5H        EUSART2 Baud Rate Generator Register High Byte                                                   xxxx xxxx  61, 180
CCPR5L                                                                                                         xxxx xxxx  61, 180
CCP5CON       ABDOVF           RCIDL     --             SCKP   BRG16  --     WUE    ABDEN                      --00 0000  61, 179
SPBRG2                                                                                                         0000 0000  61, 252
RCREG2        P1RSEN           P1DC6     P1DC5         P1DC4   P1DC3  P1DC2  P1DC1  P1DC0                      0000 0000  61, 260
TXREG2                                                                                                         0000 0000  61, 257
TXSTA2        Timer4 Register                                                                                  0000 0010  61, 248
RCSTA2                                                                                                         0000 000x  61, 249
ECCP3AS       Timer4 Period Register                                                                           0000 0000  61, 201
ECCP3DEL                                                                                                       0000 0000  61, 200
ECCP2AS       --      T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0                               0000 0000  61, 201
ECCP2DEL                                                                                                       0000 0000  61, 200
SSP2BUF       Capture/Compare/PWM Register 4 High Byte                                                         xxxx xxxx  61, 170
SSP2ADD                                                                                                        0000 0000  61, 170
              Capture/Compare/PWM Register 4 Low Byte

              --               --        DC4B1         DC4B0   CCP4M3 CCP4M2 CCP4M1 CCP4M0

              Capture/Compare/PWM Register 5 High Byte

              Capture/Compare/PWM Register 5 Low Byte

              --               --        DC5B1         DC5B0   CCP5M3 CCP5M2 CCP5M1 CCP5M0

              EUSART2 Baud Rate Generator Register Low Byte

              EUSART2 Receive Register

              EUSART2 Transmit Register

              CSRC             TX9       TXEN           SYNC   SENDB  BRGH   TRMT   TX9D

              SPEN             RX9       SREN           CREN   ADDEN  FERR   OERR   RX9D

              ECCP3ASE ECCP3AS2 ECCP3AS1 ECCP3AS0 PSS3AC1 PSS3AC0 PSS3BD1 PSS3BD0

              P3RSEN           P3DC6     P3DC5         P3DC4   P3DC3  P3DC2  P3DC1  P3DC0

              ECCP2ASE ECCP2AS2 ECCP2AS1 ECCP2AS0 PSS2AC1 PSS2AC0 PSS2BD1 PSS2BD0

              P2RSEN           P2DC6     P2DC5         P2DC4   P2DC3  P2DC2  P2DC1  P2DC0

              MSSP2 Receive Buffer/Transmit Register
              MSSP2 Address Register in I2CTM Slave mode. MSSP2 Baud Rate Reload Register in I2C Master mode.

SSP2STAT      SMP              CKE       D/A            P      S      R/W    UA     BF                         0000 0000 61, 216

SSP2CON1      WCOL             SSPOV     SSPEN          CKP    SSPM3  SSPM2  SSPM1  SSPM0 0000 0000 61, 217

SSP2CON2      GCEN    ACKSTAT ACKDT              ACKEN         RCEN   PEN    RSEN   SEN 0000 0000 61, 218

Legend:       x = unknown, u = unchanged, - = unimplemented, q = value depends on condition
Note 1:       The SBOREN bit is only available when the BOREN<1:0> Configuration bits = 01; otherwise, this bit reads as `0'.
              These registers and/or bits are not implemented on 64-pin devices and are read as `0'. Reset values are shown for 80-pin devices;
          2:  individual unimplemented bits should be interpreted as `-'.
              The PLLEN bit is only available in specific oscillator configuration; otherwise, it is disabled and reads as `0'. See Section 2.6.4 "PLL in
          3:  INTOSC Modes".
              RA6/RA7 and their associated latch and direction bits are individually configured as port pins based on various primary oscillator modes.
          4:  When disabled, these bits read as `0'.
              RG5 and LATG5 are only available when Master Clear is disabled (MCLRE Configuration bit = 0); otherwise, RG5 and LATG5 read as `0'.
          5:  Bit 7 and Bit 6 are cleared by user software or by a POR.
          6:  Bit 21 of TBLPTRU allows access to the device Configuration bits.
          7:

2008 Microchip Technology Inc.                                                                               DS39646C-page 79
PIC18F8722 FAMILY

5.3.5 STATUS REGISTER                                         It is recommended that only BCF, BSF, SWAPF, MOVFF
                                                              and MOVWF instructions are used to alter the STATUS
The STATUS register, shown in Register 5-2, contains          register, because these instructions do not affect the Z,
the arithmetic status of the ALU. As with any other SFR,      C, DC, OV or N bits in the STATUS register.
it can be the operand for any instruction.
                                                              For other instructions that do not affect Status bits, see
If the STATUS register is the destination for an instruction  the instruction set summaries in Table 26-2 and
that affects the Z, DC, C, OV or N bits, the results of the   Table 26-3.
instruction are not written; instead, the STATUS register
is updated according to the instruction performed. There-     Note:  The C and DC bits operate as the borrow
fore, the result of an instruction with the STATUS register          and digit borrow bits, respectively, in
as its destination may be different than intended. As an             subtraction.
example, CLRF STATUS will set the Z bit and leave the
remaining Status bits unchanged (`000u u1uu').

REGISTER 5-2: STATUS: ARITHMETIC STATUS REGISTER

       U-0         U-0  U-0               R/W-x               R/W-x                 R/W-x  R/W-x            R/W-x
        --                                                                             Z   DC(1)             C(2)
bit 7              --   --                N                   OV
                                                                                                                   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-5     Unimplemented: Read as `0'
bit 4
            N: Negative bit
bit 3
            This bit is used for signed arithmetic (2's complement). It indicates whether the result was
bit 2       negative (ALU MSB = 1).
bit 1       1 = Result was negative
bit 0       0 = Result was positive

            OV: Overflow bit
            This bit is used for signed arithmetic (2's complement). It indicates an overflow of the 7-bit
            magnitude which causes the sign bit (bit 7 of the result) to change state.
            1 = Overflow occurred for signed arithmetic (in this arithmetic operation)
            0 = No overflow occurred

            Z: Zero bit

            1 = The result of an arithmetic or logic operation is zero
            0 = The result of an arithmetic or logic operation is not zero
            DC: Digit Carry/borrow bit(1)
            For ADDWF, ADDLW, SUBLW and SUBWF instructions:
            1 = A carry-out from the 4th low-order bit of the result occurred
            0 = No carry-out from the 4th low-order bit of the result

            C: Carry/borrow bit(2)
            For ADDWF, ADDLW, SUBLW and SUBWF instructions:
            1 = A carry-out from the Most Significant bit of the result occurred
            0 = No carry-out from the Most Significant bit of the result occurred

Note 1:     For borrow, the polarity is reversed. A subtraction is executed by adding the 2's complement of the second
        2:  operand. For rotate (RRF, RLF) instructions, this bit is loaded with either bit 4 or bit 3 of the source register.

            For borrow, the polarity is reversed. A subtraction is executed by adding the 2's complement of the second
            operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low-order bit of the
            source register.

DS39646C-page 80                                                                            2008 Microchip Technology Inc.
                                                             PIC18F8722 FAMILY

5.4 Data Addressing Modes                                    The Access RAM bit `a' determines how the address is
                                                             interpreted. When `a' is `1', the contents of the BSR
Note:  The execution of some instructions in the             (Section 5.3.1 "Bank Select Register (BSR)") are
       core PIC18 instruction set are changed                used with the address to determine the complete 12-bit
       when the PIC18 extended instruction set is            address of the register. When `a' is `0', the address is
       enabled. See Section 5.5 "Data Memory                 interpreted as being a register in the Access Bank.
       and the Extended Instruction Set" for                 Addressing that uses the Access RAM is sometimes
       more information.                                     also known as Direct Forced Addressing mode.

The data memory space can be addressed in several            A few instructions, such as MOVFF, include the entire
ways. For most instructions, the addressing mode is          12-bit address (either source or destination) in their
fixed. Other instructions may use up to three modes,         opcodes. In these cases, the BSR is ignored entirely.
depending on which operands are used and whether or
not the extended instruction set is enabled.                 The destination of the operation's results is determined
                                                             by the destination bit `d'. When `d' is `1', the results are
The addressing modes are:                                    stored back in the source register, overwriting its origi-
                                                             nal contents. When `d' is `0', the results are stored in
Inherent                                                   the W register. Instructions without the `d' argument
Literal                                                    have a destination that is implicit in the instruction; their
Direct                                                     destination is either the target register being operated
Indirect                                                   on or the W register.

An additional addressing mode, Indexed Literal Offset,       5.4.3 INDIRECT ADDRESSING
is available when the extended instruction set is
enabled (XINST Configuration bit = 1). Its operation is      Indirect Addressing allows the user to access a location
discussed in greater detail in Section 5.5.1 "Indexed        in data memory without giving a fixed address in the
Addressing with Literal Offset".                             instruction. This is done by using File Select Registers
                                                             (FSRs) as pointers to the locations to be read or written
5.4.1  INHERENT AND LITERAL                                  to. Since the FSRs are themselves located in RAM as
       ADDRESSING                                            Special File Registers, they can also be directly manip-
                                                             ulated under program control. This makes FSRs very
Many PIC18 control instructions do not need any argu-        useful in implementing data structures, such as tables
ment at all; they either perform an operation that globally  and arrays in data memory.
affects the device or they operate implicitly on one
register. This addressing mode is known as Inherent          The registers for Indirect Addressing are also
Addressing. Examples include SLEEP, RESET and DAW.           implemented with Indirect File Operands (INDFs) that
                                                             permit automatic manipulation of the pointer value with
Other instructions work in a similar way but require an      auto-incrementing, auto-decrementing or offsetting
additional explicit argument in the opcode. This is          with another value. This allows for efficient code, using
known as Literal Addressing mode because they                loops, such as the example of clearing an entire RAM
require some literal value as an argument. Examples          bank in Example 5-5.
include ADDLW and MOVLW, which respectively, add or
move a literal value to the W register. Other examples       EXAMPLE 5-5:        HOW TO CLEAR RAM
include CALL and GOTO, which include a 20-bit                                    (BANK 1) USING
program memory address.                                                          INDIRECT ADDRESSING

5.4.2 DIRECT ADDRESSING                                            LFSR          FSR0, 100h ;
                                                                   CLRF
Direct Addressing specifies all or part of the source        NEXT                POSTINC0 ; Clear INDF
and/or destination address of the operation within the
opcode itself. The options are specified by the                                        ; register then
arguments accompanying the instruction.
                                                                                       ; inc pointer
In the core PIC18 instruction set, bit-oriented and byte-
oriented instructions use some version of Direct                          BTFSS  FSR0H, 1 ; All done with
Addressing by default. All of these instructions include
some 8-bit literal address as their Least Significant                     BRA          ; Bank1?
Byte. This address specifies either a register address in    CONTINUE
one of the banks of data RAM (Section 5.3.3 "General                             NEXT  ; NO, clear next
Purpose Register File") or a location in the Access
Bank (Section 5.3.2 "Access Bank") as the data                                         ; YES, continue
source for the instruction.

2008 Microchip Technology Inc.                                                               DS39646C-page 81
PIC18F8722 FAMILY

5.4.3.1  FSR Registers and the                                5.4.3.2  FSR Registers and POSTINC,
         INDF Operand                                                  POSTDEC, PREINC and PLUSW

At the core of Indirect Addressing are three sets of          In addition to the INDF operand, each FSR register pair
registers: FSR0, FSR1 and FSR2. Each represents a             also has four additional indirect operands. Like INDF,
pair of 8-bit registers, FSRnH and FSRnL. The four            these are "virtual" registers that cannot be indirectly
upper bits of the FSRnH register are not used so each         read or written to. Accessing these registers actually
FSR pair holds a 12-bit value. This represents a value        accesses the associated FSR register pair, but also
that can address the entire range of the data memory          performs a specific action on its stored value. They are:
in a linear fashion. The FSR register pairs, then, serve
as pointers to data memory locations.                         POSTDEC: accesses the FSR value, then
                                                                 automatically decrements it by 1 afterwards
Indirect Addressing is accomplished with a set of
Indirect File Operands, INDF0 through INDF2. These             POSTINC: accesses the FSR value, then
can be thought of as "virtual" registers: they are               automatically increments it by 1 afterwards
mapped in the SFR space but are not physically imple-
mented. Reading or writing to a particular INDF register       PREINC: increments the FSR value by 1, then
actually accesses its corresponding FSR register pair.           uses it in the operation
A read from INDF1, for example, reads the data at the
address indicated by FSR1H:FSR1L. Instructions that            PLUSW: adds the signed value of the W register
use the INDF registers as operands actually use the              (range of -127 to 128) to that of the FSR and uses
contents of their corresponding FSR as a pointer to the          the new value in the operation.
instruction's target. The INDF operand is just a
convenient way of using the pointer.                          In this context, accessing an INDF register uses the
                                                              value in the FSR registers without changing them.
Because Indirect Addressing uses a full 12-bit address,       Similarly, accessing a PLUSW register gives the FSR
data RAM banking is not necessary. Thus, the current          value offset by the value in the W register; neither value
contents of the BSR and the Access RAM bit have no            is actually changed in the operation. Accessing the
effect on determining the target address.                     other virtual registers changes the value of the FSR
                                                              registers.

                                                              Operations on the FSRs with POSTDEC, POSTINC
                                                              and PREINC affect the entire register pair; that is, roll-
                                                              overs of the FSRnL register from FFh to 00h carry over
                                                              to the FSRnH register. On the other hand, results of
                                                              these operations do not change the value of any flags
                                                              in the STATUS register (e.g., Z, N, OV, etc.).

FIGURE 5-8:       INDIRECT ADDRESSING

Using an instruction with one of the       ADDWF, INDF1, 1                000h  Bank 0
Indirect Addressing registers as the                                      100h  Bank 1
operand....                                                               200h
                                                                          300h  Bank 2
                                           FSR1H:FSR1L
...uses the 12-bit address stored in                                            Bank 3
the FSR pair associated with that       7                 07           0        through
register....                                                                    Bank 13

                                        xxxx1110 11001100

...to determine the data memory                                           E00h       Bank 14
location to be used in that operation.                                    F00h       Bank 15
                                                                          FFFh
In this case, the FSR1 pair contains                                            Data Memory
ECCh. This means the contents of
location ECCh will be added to that
of the W register and stored back in
ECCh.

DS39646C-page 82                                                          2008 Microchip Technology Inc.
                                                            PIC18F8722 FAMILY

The PLUSW register can be used to implement a form          5.5.1  INDEXED ADDRESSING WITH
of Indexed Addressing in the data memory space. By                 LITERAL OFFSET
manipulating the value in the W register, users can
reach addresses that are fixed offsets from pointer         Enabling the PIC18 extended instruction set changes
addresses. In some applications, this can be used to        the behavior of Indirect Addressing using the FSR2
implement some powerful program control structure,          register pair within Access RAM. Under the proper
such as software stacks, inside of data memory.             conditions, instructions that use the Access Bank that
                                                            is, most bit-oriented and byte-oriented instructions
5.4.3.3 Operations by FSRs on FSRs                          can invoke a form of Indexed Addressing using an
                                                            offset specified in the instruction. This special address-
Indirect Addressing operations that target other FSRs       ing mode is known as Indexed Addressing with Literal
or virtual registers represent special cases. For exam-     Offset, or Indexed Literal Offset mode.
ple, using an FSR to point to one of the virtual registers
will not result in successful operations. As a specific     When using the extended instruction set, this
case, assume that FSR0H:FSR0L contains FE7h, the            addressing mode requires the following:
address of INDF1. Attempts to read the value of the
INDF1 using INDF0 as an operand will return 00h.             The use of the Access Bank is forced (`a' = 0) and
Attempts to write to INDF1 using INDF0 as the operand       The file address argument is less than or equal to
will result in a NOP.
                                                               5Fh.
On the other hand, using the virtual registers to write to
an FSR pair may not occur as planned. In these cases,       Under these conditions, the file address of the instruc-
the value will be written to the FSR pair but without any   tion is not interpreted as the lower byte of an address
incrementing or decrementing. Thus, writing to INDF2        (used with the BSR in Direct Addressing), or as an 8-bit
or POSTDEC2 will write the same value to the                address in the Access Bank. Instead, the value is
FSR2H:FSR2L.                                                interpreted as an offset value to an address pointer,
                                                            specified by FSR2. The offset and the contents of
Since the FSRs are physical registers mapped in the         FSR2 are added to obtain the target address of the
SFR space, they can be manipulated through all direct       operation.
operations. Users should proceed cautiously when
working on these registers, particularly if their code      5.5.2  INSTRUCTIONS AFFECTED BY
uses Indirect Addressing.                                          INDEXED LITERAL OFFSET MODE

Similarly, operations by Indirect Addressing are gener-     Any of the core PIC18 instructions that can use Direct
ally permitted on all other SFRs. Users should exercise     Addressing are potentially affected by the Indexed
the appropriate caution that they do not inadvertently      Literal Offset Addressing mode. This includes all
change settings that might affect the operation of the      byte-oriented and bit-oriented instructions, or almost
device.                                                     one-half of the standard PIC18 instruction set.
                                                            Instructions that only use Inherent or Literal Addressing
5.5 Data Memory and the Extended                            modes are unaffected.
         Instruction Set
                                                            Additionally, byte-oriented and bit-oriented instructions
Enabling the PIC18 extended instruction set (XINST          are not affected if they do not use the Access Bank
Configuration bit = 1) significantly changes certain        (Access RAM bit is `1'), or include a file address of 60h
aspects of data memory and its addressing. Specifi-         or above. Instructions meeting these criteria will
cally, the use of the Access Bank for many of the core      continue to execute as before. A comparison of the dif-
PIC18 instructions is different; this is due to the         ferent possible addressing modes when the extended
introduction of a new addressing mode for the data          instruction set is enabled in shown in Figure 5-9.
memory space.
                                                            Those who desire to use byte-oriented or bit-oriented
What does not change is just as important. The size of      instructions in the Indexed Literal Offset mode should
the data memory space is unchanged, as well as its          note the changes to assembler syntax for this mode.
linear addressing. The SFR map remains the same.            This is described in more detail in Section 26.2.1
Core PIC18 instructions can still operate in both Direct    "Extended Instruction Syntax".
and Indirect Addressing mode; inherent and literal
instructions do not change at all. Indirect Addressing
with FSR0 and FSR1 also remain unchanged.

2008 Microchip Technology Inc.                                   DS39646C-page 83
PIC18F8722 FAMILY

FIGURE 5-9:       COMPARING ADDRESSING OPTIONS FOR BIT-ORIENTED AND
                  BYTE-ORIENTED INSTRUCTIONS (EXTENDED INSTRUCTION SET ENABLED)

EXAMPLE INSTRUCTION: ADDWF, f, d, a (Opcode: 0010 01da ffff ffff)

When `a' = 0 and f  60h:            000h  Bank 0
The instruction executes in         060h
Direct Forced mode. `f' is inter-   080h  Bank 1
preted as a location in the               through
Access RAM between 060h             100h  Bank 14
and 0FFh. This is the same as
locations 060h to 07Fh              F00h      Bank 15                             00h
(Bank 0) and F80h to FFFh           F80h        SFRs                              60h
(Bank 15) of data memory.           FFFh                                          80h
                                          Data Memory
Locations below 60h are not                                                                Valid range
available in this addressing        000h  Bank 0                                                for `f'
mode.                               080h
                                    100h  Bank 1                                  FFh
When `a' = 0 and f  5Fh:                  through           Access RAM
The instruction executes in               Bank 14
Indexed Literal Offset mode. `f'                          001001da ffffffff
is interpreted as an offset to the  F00h      Bank 15        FSR2H FSR2L
address value in FSR2. The          F80h        SFRs
two are added together to           FFFh                   BSR
obtain the address of the target          Data Memory  00000000
register for the instruction. The
address can be anywhere in          000h  Bank 0       001001da ffffffff
the data memory space.              080h
                                    100h  Bank 1
Note that in this mode, the               through
correct syntax is now:                    Bank 14
ADDWF [k], d
where `k' is the same as `f'.       F00h      Bank 15
                                    F80h        SFRs
When `a' = 1 (all values of f):     FFFh
The instruction executes in               Data Memory
Direct mode (also known as
Direct Long mode). `f' is inter-
preted as a location in one of
the 16 banks of the data
memory space. The bank is
designated by the Bank Select
Register (BSR). The address
can be in any implemented
bank in the data memory
space.

DS39646C-page 84                                        2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

5.5.3  MAPPING THE ACCESS BANK IN                          Remapping of the Access Bank applies only to opera-
       INDEXED LITERAL OFFSET MODE                         tions using the Indexed Literal Offset mode. Operations
                                                           that use the BSR (Access RAM bit is `1') will continue
The use of Indexed Literal Offset Addressing mode          to use Direct Addressing as before.
effectively changes how the first 96 locations of Access
RAM (00h to 5Fh) are mapped. Rather than containing        5.6 PIC18 Instruction Execution and
just the contents of the bottom half of Bank 0, this mode            the Extended Instruction Set
maps the contents from Bank 0 and a user defined
"window" that can be located anywhere in the data          Enabling the extended instruction set adds eight
memory space. The value of FSR2 establishes the            additional commands to the existing PIC18 instruction
lower boundary of the addresses mapped into the            set. These instructions are executed as described in
window, while the upper boundary is defined by FSR2        Section 26.2 "Extended Instruction Set".
plus 95 (5Fh). Addresses in the Access RAM above
5Fh are mapped as previously described (see
Section 5.3.2 "Access Bank"). An example of Access
Bank remapping in this addressing mode is shown in
Figure 5-10.

FIGURE 5-10:  REMAPPING THE ACCESS BANK WITH INDEXED LITERAL
              OFFSET ADDRESSING

Example Situation:                000h       Bank 0                                       00h
                                  05Fh                        Bank 1 "Window"
ADDWF f, d, a                    07Fh       Bank 0
                                  100h       Bank 1                   5Fh
  FSR2H:FSR2L = 120h              120h      Window
                                  17Fh       Bank 1           Bank 0  7Fh
Locations in the region          200h
from the FSR2 Pointer                       Bank 2                   80h
(120h) to the pointer plus       F00h       through
05Fh (17Fh) are mapped           F80h      Bank 14           SFRs
to the bottom of the             FFFh
Access RAM (000h-05Fh).                    Bank 15                                     FFh
                                              SFRs
Locations in Bank 0 from                                     Access Bank
060h to 07Fh are mapped,               Data Memory
as usual, to the middle half
of the Access Bank.

Special File Registers at
F80h through FFFh are
mapped to 80h through
FFh, as usual.

Bank 0 addresses below
5Fh can still be addressed
by using the BSR.

2008 Microchip Technology Inc.                              DS39646C-page 85
PIC18F8722 FAMILY

NOTES:

DS39646C-page 86    2008 Microchip Technology Inc.
                                                          PIC18F8722 FAMILY

6.0 FLASH PROGRAM MEMORY                                  6.1 Table Reads and Table Writes

The Flash program memory is readable, writable and        In order to read and write program memory, there are
erasable during normal operation over the entire VDD      two operations that allow the processor to move bytes
range.                                                    between the program memory space and the data RAM:

A read from program memory is executed on one byte         Table Read (TBLRD)
at a time. A write to program memory is executed on       Table Write (TBLWT)
blocks of 64 bytes at a time. Program memory is
erased in blocks of 64 bytes at a time. A bulk erase      The program memory space is 16 bits wide, while the
operation may not be issued from user code.               data RAM space is 8 bits wide. Table reads and table
                                                          writes move data between these two memory spaces
Writing or erasing program memory will cease              through an 8-bit register (TABLAT).
instruction fetches until the operation is complete. The
program memory cannot be accessed during the write        Table read operations retrieve data from program
or erase, therefore, code cannot execute. An internal     memory and place it into the data RAM space.
programming timer terminates program memory writes        Figure 6-1 shows the operation of a table read with
and erases.                                               program memory and data RAM.

A value written to program memory does not need to be     Table write operations store data from the data memory
a valid instruction. Executing a program memory           space into holding registers in program memory. The
location that forms an invalid instruction results in a   procedure to write the contents of the holding registers
NOP.                                                      into program memory is detailed in Section 6.5 "Writing
                                                          to Flash Program Memory". Figure 6-2 shows the
                                                          operation of a table write with program memory and data
                                                          RAM.

                                                          Table operations work with byte entities. A table block
                                                          containing data, rather than program instructions, is not
                                                          required to be word aligned. Therefore, a table block can
                                                          start and end at any byte address. If a table write is being
                                                          used to write executable code into program memory,
                                                          program instructions will need to be word aligned.

FIGURE 6-1:  TABLE READ OPERATION
                                                         Instruction: TBLRD*

             Table Pointer(1)                             Program Memory
TBLPTRU TBLPTRH TBLPTRL
                                                                              Table Latch (8-bit)
                                                                                     TABLAT

                                  Program Memory
                                  (TBLPTR)

Note 1:Table Pointer register points to a byte in program memory.

2008 Microchip Technology Inc.                                              DS39646C-page 87
PIC18F8722 FAMILY

FIGURE 6-2:       TABLE WRITE OPERATION
                                                           Instruction: TBLWT*

                                                          Program Memory
                                                          Holding Registers

             Table Pointer(1)                                                   Table Latch (8-bit)
TBLPTRU TBLPTRH TBLPTRL                                                               TABLAT

                  Program Memory
                  (TBLPTR)

Note1:       Table Pointer actually points to one of 64 holding registers, the address of which is determined by
             TBLPTRL<5:0>. The process for physically writing data to the program memory array is discussed in
             Section 6.5 "Writing to Flash Program Memory".

6.2 Control Registers                                     registers regardless of EEPGD (see Section 25.0
                                                          "Special Features of the CPU"). When clear, memory
Several control registers are used in conjunction with    selection access is determined by EEPGD.
the TBLRD and TBLWT instructions. These include the:
                                                          The FREE bit, when set, will allow a program memory
EECON1 register                                         erase operation. When FREE is set, the erase
EECON2 register                                         operation is initiated on the next WR command. When
TABLAT register                                         FREE is clear, only writes are enabled.
TBLPTR registers
                                                          The WREN bit, when set, will allow a write operation.
6.2.1 EECON1 AND EECON2 REGISTERS                         On power-up, the WREN bit is clear. The WRERR bit is
                                                          set in hardware when the WR bit is set and cleared
The EECON1 register (Register 6-1) is the control         when the internal programming timer expires and the
register for memory accesses. The EECON2 register is      write operation is complete.
not a physical register; it is used exclusively in the
memory write and erase sequences. Reading                 Note:                 During normal operation, the WRERR is
EECON2 will read all `0's.                                                      read as `1'. This can indicate that a write
                                                                                operation was prematurely terminated by
The EEPGD control bit determines if the access will be                          a Reset, or a write operation was
a program or data EEPROM memory access. When                                    attempted improperly.
clear, any subsequent operations will operate on the
data EEPROM memory. When set, any subsequent              The WR control bit initiates write operations. The bit
operations will operate on the program memory.            cannot be cleared, only set, in software; it is cleared in
                                                          hardware at the completion of the write operation.
The CFGS control bit determines if the access will be
to the Configuration/Calibration registers or to program  Note:                 The EEIF interrupt flag bit (PIR2<4>) is set
memory/data EEPROM memory. When set,                                            when the write is complete. It must be
subsequent operations will operate on Configuration                             cleared in software.

DS39646C-page 88                                                                2008 Microchip Technology Inc.
                                                               PIC18F8722 FAMILY

REGISTER 6-1: EECON1: EEPROM CONTROL REGISTER 1

R/W-x              R/W-x          U-0               R/W-0  R/W-x                 R/W-0  R/S-0  R/S-0
                                                                                         WR     RD
EEPGD              CFGS           --                FREE   WRERR(1)  WREN                            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  EEPGD: Flash Program or Data EEPROM Memory Select bit

       1 = Access Flash program memory
       0 = Access data EEPROM memory

bit 6  CFGS: Flash Program/Data EEPROM or Configuration Select bit

       1 = Access Configuration registers
       0 = Access Flash program or data EEPROM memory

bit 5  Unimplemented: Read as `0'

bit 4  FREE: Flash Row Erase Enable bit

       1 = Erase the program memory row addressed by TBLPTR on the next WR command

                   (cleared by completion of erase operation)

       0 = Perform write only

bit 3  WRERR: Flash Program/Data EEPROM Error Flag bit(1)

       1 = A write operation is prematurely terminated (any Reset during self-timed programming in normal
             operation, or an improper write attempt)

       0 = The write operation completed

bit 2  WREN: Flash Program/Data EEPROM Write Enable bit

       1 = Allows write cycles to Flash program/data EEPROM
       0 = Inhibits write cycles to Flash program/data EEPROM

bit 1  WR: Write Control bit

       1 = Initiates a data EEPROM erase/write cycle or a program memory erase cycle or write cycle.
             (The operation is self-timed and the bit is cleared by hardware once write is complete.
             The WR bit can only be set (not cleared) in software.)

       0 = Write cycle to the EEPROM is complete

bit 0  RD: Read Control bit

       1 = Initiates an EEPROM read (Read takes one cycle. RD is cleared in hardware. The RD bit can only
             be set (not cleared) in software. RD bit cannot be set when EEPGD = 1 or CFGS = 1.)

       0 = Does not initiate an EEPROM read

Note 1: When a WRERR occurs, the EEPGD and CFGS bits are not cleared.
              This allows tracing of the error condition.

2008 Microchip Technology Inc.                                                               DS39646C-page 89
PIC18F8722 FAMILY

6.2.2 TABLAT TABLE LATCH REGISTER                      6.2.4 TABLE POINTER BOUNDARIES

The Table Latch (TABLAT) is an 8-bit register mapped     TBLPTR is used in reads, writes and erases of the
into the SFR space. The Table Latch register is used to  Flash program memory.
hold 8-bit data during data transfers between program
memory and data RAM.                                     When a TBLRD is executed, all 22 bits of the TBLPTR
                                                         determine which byte is read from program memory
6.2.3      TBLPTR TABLE POINTER                        into TABLAT.
           REGISTER
                                                         When a TBLWT is executed, the six LSbs of the Table
The Table Pointer (TBLPTR) register addresses a byte     Pointer register (TBLPTR<5:0>) determine which of
within the program memory. The TBLPTR is comprised       the 64 program memory holding registers is written to.
of three SFR registers: Table Pointer Upper Byte, Table  When the timed write to program memory begins (via
Pointer High Byte and Table Pointer Low Byte             the WR bit), the 16 MSbs of the TBLPTR
(TBLPTRU:TBLPTRH:TBLPTRL). These three regis-            (TBLPTR<21:6>) determine which program memory
ters join to form a 22-bit wide pointer. The low-order   block of 64 bytes is written to. For more detail, see
21 bits allow the device to address up to 2 Mbytes of    Section 6.5 "Writing to Flash Program Memory".
program memory space. The 22nd bit allows access to
the device ID, the user ID and the Configuration bits.   When an erase of program memory is executed, the
                                                         16 MSbs of the Table Pointer register (TBLPTR<21:6>)
The Table Pointer register, TBLPTR, is used by the       point to the 64-byte block that will be erased. The Least
TBLRD and TBLWT instructions. These instructions can     Significant bits (TBLPTR<5:0>) are ignored.
update the TBLPTR in one of four ways based on the
table operation. These operations are shown in           Figure 6-3 describes the relevant boundaries of
Table 6-1. These operations on the TBLPTR only affect    TBLPTR based on Flash program memory operations.
the low-order 21 bits.

TABLE 6-1:        TABLE POINTER OPERATIONS WITH TBLRD AND TBLWT INSTRUCTIONS
                                                               Operation on Table Pointer
    Example                                                        TBLPTR is not modified

TBLRD*                                              TBLPTR is incremented after the read/write
TBLWT*                                              TBLPTR is decremented after the read/write
TBLRD*+                                            TBLPTR is incremented before the read/write
TBLWT*+
TBLRD*-
TBLWT*-
TBLRD+*
TBLWT+*

FIGURE 6-3:       TABLE POINTER BOUNDARIES BASED ON OPERATION

       21         TBLPTRU 16 15    TBLPTRH               87  TBLPTRL                             0

                  TABLE ERASE/WRITE                            TABLE WRITE
                       TBLPTR<21:6>                            TBLPTR<5:0>

                              TABLE READ TBLPTR<21:0>

DS39646C-page 90                                              2008 Microchip Technology Inc.
                                                     PIC18F8722 FAMILY

6.3 Reading the Flash Program                        TBLPTR points to a byte address in program space.
         Memory                                      Executing TBLRD places the byte pointed to into
                                                     TABLAT. In addition, TBLPTR can be modified
The TBLRD instruction is used to retrieve data from  automatically for the next table read operation.
program memory and places it into data RAM. Table
reads from program memory are performed one byte at  The internal program memory is typically organized by
a time.                                              words. The Least Significant bit of the address selects
                                                     between the high and low bytes of the word. Figure 6-4
                                                     shows the interface between the internal program
                                                     memory and the TABLAT.

FIGURE 6-4:         READS FROM FLASH PROGRAM MEMORY

                                                 Program Memory

                                  (Even Byte Address) (Odd Byte Address)

                                                     TBLPTR = xxxxx1       TBLPTR = xxxxx0

Instruction Register              FETCH              TBLRD                    TABLAT
         (IR)                                                             Read Register

EXAMPLE 6-1: READING A FLASH PROGRAM MEMORY WORD

             MOVLW  CODE_ADDR_UPPER      ; Load TBLPTR with the base
             MOVWF  TBLPTRU              ; address of the word
             MOVLW  CODE_ADDR_HIGH
             MOVWF  TBLPTRH              ; read into TABLAT and increment
             MOVLW  CODE_ADDR_LOW        ; get data
             MOVWF  TBLPTRL              ; read into TABLAT and increment
                                         ; get data
READ_WORD

             TBLRD*+
             MOVF TABLAT, W
             MOVWF WORD_EVEN
             TBLRD*+
             MOVF TABLAT, W
             MOVF WORD_ODD

2008 Microchip Technology Inc.                                           DS39646C-page 91
PIC18F8722 FAMILY

6.4 Erasing Flash Program Memory                           6.4.1  FLASH PROGRAM MEMORY
                                                                  ERASE SEQUENCE
The minimum erase block is 32 words or 64 bytes. Only
through the use of an external programmer, or through      The sequence of events for erasing a block of internal
ICSP control, can larger blocks of program memory be       program memory location is:
bulk erased. Word erase in the Flash array is not
supported.                                                 1. Load Table Pointer register with address of row
                                                                 being erased.
When initiating an erase sequence from the micro-
controller itself, a block of 64 bytes of program memory   2. Set the EECON1 register for the erase operation:
is erased. The Most Significant 16 bits of the                   set EEPGD bit to point to program memory;
TBLPTR<21:6> point to the block being erased.                     clear the CFGS bit to access program memory;
TBLPTR<5:0> are ignored.                                          set WREN bit to enable writes;
                                                                  set FREE bit to enable the erase.
The EECON1 register commands the erase operation.
The EEPGD bit must be set to point to the Flash            3. Disable interrupts.
program memory. The WREN bit must be set to enable         4. Write 55h to EECON2.
write operations. The FREE bit is set to select an erase   5. Write 0AAh to EECON2.
operation.                                                 6. Set the WR bit. This will begin the row erase

For protection, the write initiate sequence for EECON2           cycle.
must be used.                                              7. The CPU will stall for duration of the erase for

A long write is necessary for erasing the internal Flash.        TIW (see parameter D133A).
Instruction execution is halted while in a long write      8. Re-enable interrupts.
cycle. The long write will be terminated by the internal
programming timer.

EXAMPLE 6-2: ERASING A FLASH PROGRAM MEMORY ROW

      ERASE_ROW   MOVLW  CODE_ADDR_UPPER                   ; load TBLPTR with the base
                  MOVWF  TBLPTRU                           ; address of the memory block
Required          MOVLW  CODE_ADDR_HIGH
Sequence          MOVWF  TBLPTRH                           ; point to Flash program memory
                  MOVLW  CODE_ADDR_LOW                     ; access Flash program memory
                  MOVWF  TBLPTRL                           ; enable write to memory
                                                           ; enable Row Erase operation
                  BSF    EECON1, EEPGD                     ; disable interrupts
                  BCF    EECON1, CFGS
                  BSF    EECON1, WREN                      ; write 55h
                  BSF    EECON1, FREE
                  BCF    INTCON, GIE                       ; write 0AAh
                  MOVLW  55h                               ; start erase (CPU stall)
                  MOVWF  EECON2                            ; re-enable interrupts
                  MOVLW  0AAh
                  MOVWF  EECON2
                  BSF    EECON1, WR
                  BSF    INTCON, GIE

DS39646C-page 92                                                   2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

6.5 Writing to Flash Program Memory                        The long write is necessary for programming the inter-
                                                           nal Flash. Instruction execution is halted while in a long
The minimum programming block is 32 words or               write cycle. The long write will be terminated by the
64 bytes. Word or byte programming is not supported.       internal programming timer.

Table writes are used internally to load the holding       The EEPROM on-chip timer controls the write time.
registers needed to program the Flash memory. There        The write/erase voltages are generated by an on-chip
are 64 holding registers used by the table writes for      charge pump, rated to operate over the voltage range
programming.                                               of the device.

Since the Table Latch (TABLAT) is only a single byte, the  Note:  The default value of the holding registers on
TBLWT instruction may need to be executed 64 times for            device Resets and after write operations is
each programming operation. All of the table write oper-          FFh. A write of FFh to a holding register
ations will essentially be short writes because only the          does not modify that byte. This means that
holding registers are written. At the end of updating the         individual bytes of program memory may be
64 holding registers, the EECON1 register must be                 modified, provided that the change does not
written to in order to start the programming operation            attempt to change any bit from a `0' to a `1'.
with a long write.                                                When modifying individual bytes, it is not
                                                                  necessary to load all 64 holding registers
                                                                  before executing a write operation.

FIGURE 6-5:      TABLE WRITES TO FLASH PROGRAM MEMORY

                                           TABLAT
                                        Write Register

                 8                   8                            8                                     8

TBLPTR = xxxxx0     TBLPTR = xxxxx1     TBLPTR = xxxxx2                      TBLPTR = xxxx3F
                                                                                              Holding Register
       Holding Register           Holding Register         Holding Register

                                        Program Memory

6.5.1  FLASH PROGRAM MEMORY WRITE                          8. Disable interrupts.
       SEQUENCE                                            9. Write 55h to EECON2.
                                                           10. Write 0AAh to EECON2.
The sequence of events for programming an internal         11. Set the WR bit. This will begin the write cycle.
program memory location should be:                         12. The CPU will stall for duration of the write for TIW

1. Read 64 bytes into RAM.                                       (see parameter D133A).
2. Update data values in RAM as necessary.                 13. Re-enable interrupts.
3. Load Table Pointer register with address being          14. Verify the memory (table read).

      erased.                                              An example of the required code is shown in
4. Execute the row erase procedure.                        Example 6-3 on the following page.
5. Load Table Pointer register with address of first
                                                           Note:  Before setting the WR bit, the Table
      byte being written.                                         Pointer address needs to be within the
6. Write the 64 bytes into the holding registers with             intended address range of the 64 bytes in
                                                                  the holding register.
      auto-increment.
7. Set the EECON1 register for the write operation:

       set EEPGD bit to point to program memory;
       clear the CFGS bit to access program memory;
       set WREN to enable byte writes.

2008 Microchip Technology Inc.                                             DS39646C-page 93
PIC18F8722 FAMILY

EXAMPLE 6-3: WRITING TO FLASH PROGRAM MEMORY

                  MOVLW D'64'                   ; number of bytes in erase block
                                                ; point to buffer
                  MOVWF COUNTER
                                                ; Load TBLPTR with the base
                  MOVLW BUFFER_ADDR_HIGH        ; address of the memory block

                  MOVWF FSR0H                   ; read into TABLAT, and inc
                                                ; get data
                  MOVLW BUFFER_ADDR_LOW         ; store data
                                                ; done?
                  MOVWF FSR0L                   ; repeat
                                                ; point to buffer
                  MOVLW CODE_ADDR_UPPER
                                                ; update buffer word
                  MOVWF TBLPTRU
                                                ; load TBLPTR with the base
                  MOVLW CODE_ADDR_HIGH          ; address of the memory block

                  MOVWF TBLPTRH                 ; point to Flash program memory
                                                ; access Flash program memory
                  MOVLW CODE_ADDR_LOW           ; enable write to memory
                                                ; enable Row Erase operation
                  MOVWF TBLPTRL                 ; disable interrupts
                                                ; write 55h
READ_BLOCK                                      ; write 0AAh
                                                ; start erase (CPU stall)
                  TBLRD*+                       ; re-enable interrupts
                                                ; dummy read decrement
                  MOVF TABLAT, W                ; point to buffer

                  MOVWF POSTINC0                ; number of bytes in holding register

                  DECFSZ COUNTER                ; get low byte of buffer data
                                                ; present data to table latch
                  BRA      READ_BLOCK           ; write data, perform a short write
                                                ; to internal TBLWT holding register.
MODIFY_WORD                                     ; loop until buffers are full

                  MOVLWD ATA_ADDR_HIGH

                  MOVWF FSR0H

                  MOVLW DATA_ADDR_LOW

                  MOVWF FSR0L

                  MOVLW NEW_DATA_LOW

                  MOVWF POSTINC0

                  MOVLW NEW_DATA_HIGH

                  MOVWF INDF0

ERASE_BLOCK

                  MOVLW CODE_ADDR_UPPER

                  MOVWF TBLPTRU

                  MOVLW CODE_ADDR_HIGH

                  MOVWF TBLPTRH

                  MOVLW CODE_ADDR_LOW

                  MOVWF TBLPTRL

                  BSF      EECON1, EEPGD

                  BCF      EECON1, CFGS

                  BSF      EECON1, WREN

                  BSF      EECON1, FREE

                  BCF      INTCON, GIE

                  MOVLW 55h

Required          MOVWF EECON2

Sequence          MOVLW 0AAh

                  MOVWF EECON2

                  BSF      EECON1, WR

                  BSF      INTCON, GIE

                  TBLRD*-

                  MOVLW BUFFER_ADDR_HIGH

                  MOVWF FSR0H

                  MOVLW BUFFER_ADDR_LOW

                  MOVWF FSR0L

WRITE_BUFFER_BACK

                  MOVLW D'64'

                  MOVWF COUNTER

WRITE_BYTE_TO_HREGS

                  MOVFF POSTINC0, WREG

                  MOVWF TABLAT

                  TBLWT+*

                  DECFSZ COUNTER

                  BRA      WRITE_WORD_TO_HREGS

DS39646C-page 94                                 2008 Microchip Technology Inc.
                                                          PIC18F8722 FAMILY

EXAMPLE 6-3: WRITING TO FLASH PROGRAM MEMORY (CONTINUED)

PROGRAM_MEMORY                    EECON1, EEPGD  ; point to Flash program memory
                           BSF    EECON1, CFGS   ; access Flash program memory
                           BCF    EECON1, WREN   ; enable write to memory
                           BSF    INTCON, GIE    ; disable interrupts
                           BCF    55h
                           MOVLW  EECON2         ; write 55h
                                  0AAh
      Required MOVWF              EECON2         ; write 0AAh
      Sequence MOVLW              EECON1, WR     ; start program (CPU stall)
                                  INTCON, GIE    ; re-enable interrupts
                           MOVWF  EECON1, WREN   ; disable write to memory
                           BSF
                           BSF
                           BCF

6.5.2 WRITE VERIFY                                        6.5.4  PROTECTION AGAINST
                                                                 SPURIOUS WRITES
Depending on the application, good programming
practice may dictate that the value written to the        To protect against spurious writes to Flash program
memory should be verified against the original value.     memory, the write initiate sequence must also be
This should be used in applications where excessive       followed. See Section 25.0 "Special Features of the
writes can stress bits near the specification limit.      CPU" for more detail.

6.5.3    UNEXPECTED TERMINATION OF                        6.6 Flash Program Operation During
         WRITE OPERATION                                           Code Protection

If a write is terminated by an unplanned event, such as   See Section 25.5 "Program Verification and Code
loss of power or an unexpected Reset, the memory          Protection" for details on code protection of Flash
location just programmed should be verified and repro-    program memory.
grammed if needed. If the write operation is interrupted
by a MCLR Reset or a WDT Time-out Reset during
normal operation, the user can check the WRERR bit
and rewrite the location(s) as needed.

TABLE 6-2: REGISTERS ASSOCIATED WITH PROGRAM FLASH MEMORY

Name     Bit 7                    Bit 6  Bit 5   Bit 4    Bit 3  Bit 2            Bit 1  Bit 0    Reset
                                                                                                Values on

                                                                                                   page

TBLPTRU  --                       --     bit 21(1) Program Memory Table Pointer Upper Byte (TBLPTR<20:16>) 57

TBPLTRH Program Memory Table Pointer High Byte (TBLPTR<15:8>)                                   57

TBLPTRL Program Memory Table Pointer Low Byte (TBLPTR<7:0>)                                     57

TABLAT Program Memory Table Latch                                                               57

INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE                   RBIE TMR0IF INT0IF             RBIF   57

EECON2 EEPROM Control Register 2 (not a physical register)                                      59

EECON1 EEPGD CFGS                        --      FREE WRERR WREN                  WR     RD     59

IPR2     OSCFIP CMIP                     --      EEIP BCL1IP HLVDIP TMR3IP CCP2IP               60

PIR2     OSCFIF CMIF                     --      EEIF BCL1IF HLVDIF TMR3IF CCP2IF               60

PIE2     OSCFIE CMIE                     --      EEIE BCL1IE HLVDIE TMR3IE CCP2IE               60

Legend: -- = unimplemented, read as `0'. Shaded cells are not used during Flash/EEPROM access.

Note 1: Bit 21 of TBLPTRU allows access to the device Configuration bits.

2008 Microchip Technology Inc.                                                         DS39646C-page 95
PIC18F8722 FAMILY

NOTES:

DS39646C-page 96    2008 Microchip Technology Inc.
                                                     PIC18F8722 FAMILY

7.0 EXTERNAL MEMORY BUS                              The bus is implemented with 28 pins, multiplexed
                                                     across four I/O ports. Three ports (PORTD, PORTE
Note:  The External Memory Bus is not imple-         and PORTH) are multiplexed with the address/data bus
       mented on PIC18F6527/6622/6627/6722           for a total of 20 available lines, while PORTJ is
       (64-pin) devices.                             multiplexed with the bus control signals.

The External Memory Bus (EMB) allows the device to   A list of the pins and their functions is provided in
access external memory devices (such as Flash,       Table 7-1.
EPROM, SRAM, etc.) as program or data memory. It
supports both 8-bit and 16-bit Data Width modes and
four address widths from 8 to 20 bits.

TABLE 7-1: PIC18F8527/8622/8627/8722 EXTERNAL BUS I/O PORT FUNCTIONS

       Name  Port                 Bit                External Memory Bus Function

RD0/AD0      PORTD                0 Address bit 0 or Data bit 0
RD1/AD1      PORTD                1 Address bit 1 or Data bit 1
RD2/AD2      PORTD                2 Address bit 2 or Data bit 2
RD3/AD3      PORTD                3 Address bit 3 or Data bit 3
RD4/AD4      PORTD                4 Address bit 4 or Data bit 4
RD5/AD5      PORTD                5 Address bit 5 or Data bit 5
RD6/AD6      PORTD                6 Address bit 6 or Data bit 6
RD7/AD7      PORTD                7 Address bit 7 or Data bit 7
RE0/AD8      PORTE                0 Address bit 8 or Data bit 8
RE1/AD9      PORTE                1 Address bit 9 or Data bit 9
RE2/AD10     PORTE                2 Address bit 10 or Data bit 10
RE3/AD11     PORTE                3 Address bit 11 or Data bit 11
RE4/AD12     PORTE                4 Address bit 12 or Data bit 12
RE5/AD13     PORTE                5 Address bit 13 or Data bit 13
RE6/AD14     PORTE                6 Address bit 14 or Data bit 14
RE7/AD15     PORTE                7 Address bit 15 or Data bit 15
RH0/A16     PORTH                0 Address bit 16
RH1/A17     PORTH                1 Address bit 17
RH2/A18     PORTH                2 Address bit 18
RH3/A19     PORTH                3 Address bit 19
RJ0/ALE     PORTJ                0 Address Latch Enable (ALE) Control pin

RJ1/OE      PORTJ                1 Output Enable (OE) Control pin
RJ2/WRL      PORTJ                2 Write Low (WRL) Control pin
RJ3/WRH      PORTJ                3 Write High (WRH) Control pin
RJ4/BA0      PORTJ                4 Byte Address bit 0 (BA0)
RJ5/CE      PORTJ                5 Chip Enable (CE) Control pin

RJ6/LB       PORTJ                6 Lower Byte Enable (LB) Control pin

RJ7/UB       PORTJ                7 Upper Byte Enable (UB) Control pin

Note: For the sake of clarity, only I/O port and external bus assignments are shown here. One or more additional
            multiplexed features may be available on some pins.

2008 Microchip Technology Inc.                                            DS39646C-page 97
PIC18F8722 FAMILY

7.1 External Memory Bus Control                           The operation of the EBDIS bit is also influenced by the
                                                          program memory mode being used. This is discussed
The operation of the interface is controlled by the       in more detail in Section 7.4 "Program Memory
MEMCON register (Register 7-1). This register is          Modes and the External Memory Bus".
available in all program memory operating modes
except Microcontroller mode. In this mode, the register   The WAIT bits allow for the addition of wait states to
is disabled and cannot be written to.                     external memory operations. The use of these bits is
                                                          discussed in Section 7.3 "Wait States".
The EBDIS bit (MEMCON<7>) controls the operation
of the bus and related port functions. Clearing EBDIS     The WM bits select the particular operating mode used
enables the interface and disables the I/O functions of   when the bus is operating in 16-bit Data Width mode.
the ports, as well as any other functions multiplexed to  These are discussed in more detail in Section 7.5
those pins. Setting the bit enables the I/O ports and     "16-Bit Data Width Modes". These bits have no effect
other functions but allows the interface to override      when an 8-bit Data Width mode is selected.
everything else on the pins when an external memory
operation is required. By default, the external bus is    WM<1:0>: TBLWT Operation with 16-Bit Data Bus
always enabled and disables all other I/O.                Width Select bits

                                                          1x = Word Write mode: TABLAT0 and TABLAT1 word
                                                                  output, WRH active when TABLAT1 written

                                                          01 = Byte Select mode: TABLAT data copied on both
                                                                  MSB and LSB; WRH and (UB or LB) will activate

REGISTER 7-1: MEMCON: EXTERNAL MEMORY BUS CONTROL REGISTER

     R/W-0         U-0  R/W-0             R/W-0           U-0                   U-0  R/W-0    R/W-0
     EBDIS                                                                                    WM0
bit 7              --   WAIT1             WAIT0           --                    --   WM1
                                                                                                     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       EBDIS: External Bus Disable bit
            1 = External bus enabled when microcontroller accesses external memory;
bit 6
bit 5-4           otherwise, all external bus drivers are mapped as I/O ports
            0 = External bus always enabled, I/O ports are disabled
bit 3-2
bit 1-0     Unimplemented: Read as `0'

            WAIT<1:0>: Table Reads and Writes Bus Cycle Wait Count bits
            11 = Table reads and writes will wait 0 TCY
            10 = Table reads and writes will wait 1 TCY
            01 = Table reads and writes will wait 2 TCY
            00 = Table reads and writes will wait 3 TCY

            Unimplemented: Read as `0'

            WM<1:0>: TBLWT Operation with 16-Bit Data Bus Width Select bits
            1 = Result was negative
            0 = Result was positive

DS39646C-page 98                                                                      2008 Microchip Technology Inc.
                                                             PIC18F8722 FAMILY

7.2 Address and Data Width                                   7.2.1 21-BIT ADDRESSING

PIC18F8527/8622/8627/8722 devices can be indepen-            As an extension of 20-bit address width operation, the
dently configured for different address and data widths      External Memory Bus can also fully address a 2 Mbyte
on the same memory bus. Both address and data width          memory space. This is done by using the Bus Address
are set by Configuration bits in the CONFIG3L register.      bit 0 (BA0) control line as the Least Significant bit of the
As Configuration bits, this means that these options         address. The UB and LB control signals may also be
can only be configured by programming the device and         used with certain memory devices to select the upper
are not controllable in software.                            and lower bytes within a 16-bit wide data word.

The BW bit selects an 8-bit or 16-bit data bus width.        This addressing mode is available in both 8-bit and
Setting this bit (default) selects a data width of 16 bits.  certain 16-bit Data Width modes. Additional details are
                                                             provided in Section 7.5.3 "16-bit Byte Select Mode"
The ADW<1:0> bits determine the address bus width.           and Section 7.6 "8-Bit Data Width Modes".
The available options are 20-bit (default), 16-bit, 12-bit
and 8-bit. Selecting any of the options other than 20-bit    7.3 Wait States
width makes a corresponding number of high-order
lines available for I/O functions; these pins are no         While it may be assumed that external memory devices
longer affected by the setting of the EBDIS bit. For         will operate at the microcontroller clock rate, this is
example, selecting a 16-bit Address mode                     often not the case. In fact, many devices require longer
(ADW<1:0> = 10) disables A<19:16> and allows                 times to write or retrieve data than the time allowed by
PORTH<3:0> to function without interruptions from the        the execution of table read or table write operations.
bus. Using smaller address widths allows users to tailor
the memory bus to the size of the external memory            To compensate for this, the External Memory Bus can
space for a particular design while freeing up pins for      be configured to add a fixed delay to each table opera-
dedicated I/O operation.                                     tion using the bus. Wait states are enabled by setting
                                                             the WAITx bit. When enabled, the amount of delay is
Because the ADW bits have the effect of disabling pins       set by the WAIT<1:0> bits (MEMCON<5:4>). The delay
for memory bus operations, it is important to always         is based on multiples of microcontroller instruction
select an address width at least equal to the data width.    cycle time and are added following the instruction cycle
If 8-bit or 12-bit address widths are used with a 16-bit     when the table operation is executed. The range is
data width, the upper bits of data will not be available     from no delay to 3 TCY (default value).
on the bus.

All combinations of address and data widths require
multiplexing of address and data information on the
same lines. The address and data multiplexing, as well
as I/O ports made available by the use of smaller
address widths, are summarized in Table 7-2.

TABLE 7-2: ADDRESS AND DATA LINES FOR DIFFERENT ADDRESS AND DATA WIDTHS

                                  Multiplexed Data and       Address-Only        Ports Available
                                                                                       for I/O
Data Width  Address Width         Address Lines (and         Lines (and

                                  Corresponding Ports) Corresponding Ports)

8-bit       8-bit                     AD<7:0>                            --      All of PORTE and
16-bit      12-bit                (PORTD<7:0>)                                         PORTH
            16-bit                                                  AD<11:8>
                                     AD<15:0>                    (PORTE<3:0>)      PORTE<7:4>,
            20-bit                (PORTD<7:0>,                                     All of PORTH
            16-bit                PORTE<7:0>)                       AD<15:8>       All of PORTH
            20-bit                                               (PORTE<7:0>)
                                                             A<19:16>, AD<15:8>            --
                                                                 (PORTH<3:0>,
                                                                 PORTE<7:0>)       All of PORTH
                                                                                           --
                                                                         --
                                                                    A<19:16>
                                                                 (PORTH<3:0>)

2008 Microchip Technology Inc.                                                 DS39646C-page 99
PIC18F8722 FAMILY                                           7.5 16-Bit Data Width Modes

7.4 Program Memory Modes and the                            In 16-Bit Data Width mode, the External Memory Bus
         External Memory Bus                                can be connected to external memories in three
                                                            different configurations:
PIC18F8527/8622/8627/8722 devices are capable of
operating in any one of four program memory modes,          16-bit Byte Write
using combinations of on-chip and external program          16-bit Word Write
memory. The functions of the multiplexed port pins          16-bit Byte Select
depends on the program memory mode selected, as
well as the setting of the EBDIS bit.                       The configuration to be used is determined by the
                                                            WM1:WM0 bits in the MEMCON register
In Microcontroller Mode, the bus is not active and the      (MEMCON<1:0>). These three different configurations
pins have their port functions only. Writes to the          allow the designer maximum flexibility in using both
MEMCOM register are not permitted. The Reset value          8-bit and 16-bit devices with 16-bit data.
of EBDIS (`0') is ignored and EMB pins behave as I/O
ports.                                                      For all 16-bit modes, the Address Latch Enable (ALE)
                                                            pin indicates that the address bits AD<15:0> are
In Microprocessor Mode, the external bus is always          available on the external memory interface bus.
active and the port pins have only the external bus         Following the address latch, the Output Enable signal
function. The value of EBDIS is ignored.                    (OE) will enable both bytes of program memory at once
                                                            to form a 16-bit instruction word. The Chip Enable
In Microprocessor with Boot Block or Extended               signal (CE) is active at any time that the microcontroller
Microcontroller Mode, the external program memory           accesses external memory, whether reading or writing;
bus shares I/O port functions on the pins. When the         it is inactive (asserted high) whenever the device is in
device is fetching or doing table read/table write opera-   Sleep mode.
tions on the external program memory space, the pins
will have the external bus function. If the device is       In Byte Select mode, JEDEC standard Flash memories
fetching and accessing internal program memory loca-        will require BA0 for the byte address line and one I/O
tions only, the EBDIS control bit will change the pins      line to select between Byte and Word mode. The other
from external memory to I/O port functions. When            16-bit modes do not need BA0. JEDEC standard static
EBDIS = 0, the pins function as the external bus. When      RAM memories will use the UB or LB signals for byte
EBDIS = 1, the pins function as I/O ports.                  selection.

If the device fetches or accesses external memory
while EBDIS = 1, the pins will switch from I/O to exter-
nal bus. If the EBDIS bit is set by a program executing
from external memory, the action of setting the bit will
be delayed until the program branches into the internal
memory. At that time, the pins will change from external
bus to I/O ports.

If the device is executing out of internal memory when
EBDIS = 0, the memory bus address/data and control
pins will not be active. They will go to a state where the
active address/data pins are tri-state; the CE, OE,
WRH, WRL, UB and LB signals are `1'; and ALE and
BA0 are `0'. Note that only those pins associated with
the current address width are forced to tri-state; the
other pins continue to function as I/O. In the case of
16-bit address width, for example, only AD<15:0>
(PORTD and PORTE) are affected; A<19:16>
(PORTH<3:0>) continue to function as I/O.

In all external memory modes, the bus takes priority
over any other peripherals that may share pins with it.
This includes the Parallel Slave Port and serial commu-
nications modules which would otherwise take priority
over the I/O port.

DS39646C-page 100                                           2008 Microchip Technology Inc.
                                                       PIC18F8722 FAMILY

7.5.1 16-BIT BYTE WRITE MODE                           During a TBLWT instruction cycle, the TABLAT data is
                                                       presented on the upper and lower bytes of the
Figure 7-1 shows an example of 16-bit Byte Write       AD<15:0> bus. The appropriate WRH or WRL control
mode for PIC18F8527/8622/8627/8722 devices. This       line is strobed on the LSb of the TBLPTR.
mode is used for two separate 8-bit memories con-
nected for 16-bit operation. This generally includes
basic EPROM and Flash devices. It allows table writes
to byte-wide external memories.

FIGURE 7-1:  16-BIT BYTE WRITE MODE EXAMPLE

                                                                D<7:0>

PIC18F8X27/8X22                   373                  A<19:0>             (MSB)                 (LSB)
              AD<7:0>                                                   A
                                                       D<15:8>                               A
            AD<15:8>                                                    D<7:0>    D<7:0>
                    ALE           373                                   CE
                                                                        OE WR(2)             D<7:0>
          A<19:16>(1)                                                                        CE
                                                                                             OE WR(2)

               CE
               OE
             WRH
             WRL

                                                                        Address Bus
                                                                        Data Bus
                                                                        Control Lines

Note 1: Upper-order address lines are used only for 20-bit address widths.
         2: This signal only applies to table writes. See Section 6.1 "Table Reads and Table Writes".

2008 Microchip Technology Inc.                                                                       DS39646C-page 101
PIC18F8722 FAMILY                                                      During a TBLWT cycle to an odd address
                                                                       (TBLPTR<0> = 1), the TABLAT data is presented on
7.5.2 16-BIT WORD WRITE MODE                                           the upper byte of the AD15:AD0 bus. The contents of
                                                                       the holding latch are presented on the lower byte of the
Figure 7-2 shows an example of 16-bit Word Write                       AD<15:0> bus.
mode for PIC18F8527/8622/8627/8722 devices. This
mode is used for word-wide memories which includes                     The WRH signal is strobed for each write cycle; the
some of the EPROM and Flash-type memories. This                        WRL pin is unused. The signal on the BA0 pin indicates
mode allows opcode fetches and table reads from all                    the Least Significant bit of TBLPTR but it is left
forms of 16-bit memory and table writes to any type of                 unconnected. Instead, the UB and LB signals are
word-wide external memories. This method makes a                       active to select both bytes. The obvious limitation to
distinction between TBLWT cycles to even or odd                        this method is that the table write must be done in pairs
addresses.                                                             on a specific word boundary to correctly write a word
                                                                       location.
During a TBLWT cycle to an even address
(TBLPTR<0> = 0), the TABLAT data is transferred to a
holding latch and the external address data bus is
tri-stated for the data portion of the bus cycle. No write
signals are activated.

FIGURE 7-2:        16-BIT WORD WRITE MODE EXAMPLE

PIC18F8X27/8X22         373                                            A<20:1>  A JEDEC Word
               AD<7:0>

                                                                                         EPROM Memory

                                                                       D<15:0>  D<15:0>

               AD<15:8>                                                             CE OE WR(2)
                                                                  373
                                                                                Address Bus
                       ALE                                                      Data Bus
             A<19:16>(1)                                                        Control Lines

                        CE
                        OE

                     WRH

Note 1: Upper-order address lines are used only for 20-bit address widths.
         2: This signal only applies to table writes. See Section 6.1 "Table Reads and Table Writes".

DS39646C-page 102                                                                2008 Microchip Technology Inc.
                                                                PIC18F8722 FAMILY

7.5.3 16-BIT BYTE SELECT MODE                          Flash and SRAM devices use different control signal
                                                       combinations to implement Byte Select mode. JEDEC
Figure 7-3 shows an example of 16-bit Byte Select      standard Flash memories require that a controller I/O
mode. This mode allows table write operations to       port pin be connected to the memory's BYTE/WORD
word-wide external memories with byte selection        pin to provide the select signal. They also use the BA0
capability. This generally includes both word-wide     signal from the controller as a byte address. JEDEC
Flash and SRAM devices.                                standard static RAM memories, on the other hand, use
                                                       the UB or LB signals to select the byte.
During a TBLWT cycle, the TABLAT data is presented
on the upper and lower byte of the AD<15:0> bus. The
WRH signal is strobed for each write cycle; the WRL
pin is not used. The BA0 or UB/LB signals are used to
select the byte to be written, based on the Least
Significant bit of the TBLPTR register.

FIGURE 7-3:                 16-BIT BYTE SELECT MODE EXAMPLE

PIC18F8X27/8X22                   373                  A<20:1>           JEDEC Word
               AD<7:0>                                                  Flash Memory
                                                                A
             AD<15:8>                                                                          D<15:0>
                     ALE                                                        D<15:0>

          A<19:16>(2)                                  138(3)   CE
                      OE          373                           A0
                                                                BYTE/WORD
                   WRH                                                     OE WR(1)
                    WRL
                     BA0                               A<20:1>  A  JEDEC Word

                       I/O                                              SRAM Memory

                       LB                                                                               D<15:0>
                      UB
                                                                CE         D<15:0>

                                                                LB
                                                                UB OE WR(1)

                                                                        Address Bus
                                                                        Data Bus
                                                                        Control Lines

Note 1:      This signal only applies to table writes. See Section 6.1 "Table Reads and Table Writes".
         2:  Upper-order address lines are used only for 20-bit address width.
         3:  Demultiplexing is only required when multiple memory devices are accessed.

2008 Microchip Technology Inc.                                                                        DS39646C-page 103
PIC18F8722 FAMILY

7.5.4 16-BIT MODE TIMING

The presentation of control signals on the External
Memory Bus is different for the various operating
modes. Typical signal timing diagrams are shown in
Figure 7-4 through Figure 7-6. All examples assume
either 20-bit or 21-bit address widths.

FIGURE 7-4:        EXTERNAL MEMORY BUS TIMING FOR TBLRD WITH A 1 TCY WAIT STATE
                   (MICROPROCESSOR MODE)

Apparent Q Q1 Q2 Q3 Q4                  Q1 Q2               Q3 Q4       Q4 Q4 Q4 Q4
   Actual Q Q1 Q2 Q3 Q4                 Q1 Q2               Q3 Q4       Q1 Q2 Q3 Q4

A<19:16>                  00h                                      0Ch

AD<15:0>           3AABh         0E55h               CF33h              9256h

        BA0        Opcode Fetch                                                                                       `1'
        ALE          MOVLW 55h
         OE                                                                                                           `1'
                   from 007556h                                                                                       `0'
      WRH `1'                                                                          1 TCY Wait
       WRL `1'     TBLRD Cycle 1                             Table Read
                                                                 of 92h
         CE `0'                                             from 199E67h

   Memory                                                   TBLRD Cycle 2
      Cycle

Instruction
Execution

FIGURE 7-5:           EXTERNAL MEMORY BUS TIMING FOR TBLRD
                      (EXTENDED MICROCONTROLLER MODE)

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

A<19:16>                                                           0Ch

AD<15:0>                                                    CF33h       9256h
         CE
                   Opcode Fetch   Opcode Fetch                TBLRD 92h        Opcode Fetch
        ALE           TBLRD *       MOVLW 55h               from 199E67h         ADDLW 55h
         OE
                   from 000100h   from 000102h              TBLRD Cycle 2      from 000104h
   Memory
      Cycle        INST(PC 2)   TBLRD Cycle 1                                     MOVLW

Instruction
Execution

DS39646C-page 104                                                               2008 Microchip Technology Inc.
                                                            PIC18F8722 FAMILY

FIGURE 7-6:     EXTERNAL MEMORY BUS TIMING FOR SLEEP (MICROPROCESSOR MODE)

             Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1

A<19:16>            00h                         00h

AD<15:0>     3AAAh                0003h  3AABh       0E55h
         CE
       ALE
         OE

   Memory    Opcode Fetch                Opcode Fetch       Sleep Mode, Bus Inactive(1)
      Cycle       SLEEP                    MOVLW 55h

Instruction  from 007554h                from 007556h
Execution
             INST(PC 2)                     SLEEP

Note 1: Bus becomes inactive regardless of power-managed mode entered when SLEEP is executed.

2008 Microchip Technology Inc.                                                               DS39646C-page 105
PIC18F8722 FAMILY

7.6 8-Bit Data Width Modes                                 The Address Latch Enable (ALE) pin indicates that the
                                                           address bits A<15:0> are available on the External
In 8-Bit Data Width mode, the External Memory Bus          Memory Interface bus. The Output Enable signal (OE)
operates only in Multiplexed mode; that is, data shares    will enable one byte of program memory for a portion of
the 8 least significant bits of the address bus.           the instruction cycle, then BA0 will change and the sec-
                                                           ond byte will be enabled to form the 16-bit instruction
Figure 7-7 shows an example of 8-bit Multiplexed           word. The least significant bit of the address, BA0,
mode for PIC18F8527/8622/8627/8722 devices. This           must be connected to the memory devices in this
mode is used for a single 8-bit memory connected for       mode. The Chip Enable signal (CE) is active at any
16-bit operation. The instructions will be fetched as two  time that the microcontroller accesses external
8-bit bytes on a shared data/address bus. The two          memory, whether reading or writing; it is inactive
bytes are sequentially fetched within one instruction      (asserted high) whenever the device is in Sleep mode.
cycle (TCY). Therefore, the designer must choose
external memory devices according to timing calcula-       This generally includes basic EPROM and Flash
tions based on 1/2 TCY (2 times the instruction rate).     devices. It allows table writes to byte-wide external
For proper memory speed selection, glue logic              memories.
propagation delay times must be considered along with
setup and hold times.                                      The appropriate level of BA0 control line is strobed on
                                                           the LSb of the TBLPTR.

FIGURE 7-7:        8-BIT MULTIPLEXED MODE EXAMPLE

                                                                                     D<7:0>

PIC18F8X27/8X22                                                         A<19:0>                             A
              AD<7:0>                                      373                                              A0
                    ALE                                                                                     D<7:0>
                                                                        D<15:8>                             CE
         AD<15:8>(1)                                                                                        OE WR(2)
          A<19:16>(1)

                    BA0
                     CE
                     OE
                   WRL

                                                                                             Address Bus
                                                                                             Data Bus
                                                                                             Control Lines

Note 1:            Upper-order address bits are used only for 20-bit address width. The upper AD byte is used
         2:        for all address widths except 8-bit.

                   This signal only applies to table writes. See Section 6.1 "Table Reads and Table Writes".

DS39646C-page 106                                                                            2008 Microchip Technology Inc.
                                                     PIC18F8722 FAMILY

7.6.1 8-BIT MODE TIMING

The presentation of control signals on the External
Memory Bus is different for the various operating
modes. Typical signal timing diagrams are shown in
Figure 7-8 through Figure 7-11.

FIGURE 7-8:     EXTERNAL BUS TIMING FOR TBLRD (MICROPROCESSOR MODE)

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

AD<15:8>,      03Ah              03Ah                    CCFh               03Ah
A<19:16>(1)                                                          ACh 55h 0Fh
                AAh 08h 00h       ABh 55h 0Eh        33h        92h
    AD<7:0>

BA0

ALE
OE

WRH `1'                                                                            `1'

      WRL `1'   Opcode Fetch      Opcode Fetch       Table Read 92h                           `1'
                   TBLRD *          MOVLW 55h         from 199E67h
   Memory                                                            Opcode Fetch
      Cycle     from 007554h      from 007556h        TBLRD Cycle 2    ADDLW 55h

Instruction     INST(PC 2)      TBLRD Cycle 1                      from 007558h
Execution
                                                                          MOVLW

Note 1: The address lines actually used depends on the address width selected. This example assumes 20-bit addressing.

FIGURE 7-9:       EXTERNAL BUS TIMING FOR TBLRD (EXTENDED MICROCONTROLLER MODE)

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

A<19:16>(1)                                               0Ch
AD<15:8>(1)
                                                          CFh
    AD<7:0>
            CE                                       33h        92h

ALE

OE

   Memory       Opcode Fetch      Opcode Fetch         TBLRD 92h     Opcode Fetch
      Cycle        TBLRD *          MOVLW 55h        from 199E67h      ADDLW 55h

Instruction     from 000100h      from 000102h       TBLRD Cycle 2   from 000104h
Execution
                INST(PC 2)      TBLRD Cycle 1                           MOVLW

Note 1: The address lines actually used depends on the address width selected. This example assumes 20-bit addressing.

2008 Microchip Technology Inc.                                     DS39646C-page 107
PIC18F8722 FAMILY

FIGURE 7-10:         EXTERNAL MEMORY BUS TIMING FOR SLEEP (MICROPROCESSOR MODE)

                   Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1

A<19:16>(1)           00h                 00h
AD<15:8>(1)
                                 3Ah               3Ah
    AD<7:0>           AAh 00h 03h         ABh 0Eh 55h

BA0
CE

ALE

         OE           Opcode Fetch        Opcode Fetch       Sleep Mode, Bus Inactive(2)
                           SLEEP            MOVLW 55h
   Memory
      Cycle           from 007554h        from 007556h

Instruction           INST(PC 2)             SLEEP
Execution

Note 1: The address lines actually used depends on the address width selected. This example assumes 20-bit addressing.

       2: Bus becomes inactive regardless of power-managed mode entered when SLEEP is executed.

FIGURE 7-11:       TYPICAL OPCODE FETCH, 8-BIT MODE

                                      Q1       Q2       Q3   Q4

AD<15:8>(1)                                    03Ah

             AD<7:0>                      55h           0Eh  55h

              BA0

              ALE

                   OE                                                                                             `1'

                             `1'          Opcode Fetch MOVLW 55h from 007556h

                 WRL

             Memory
                Cycle

Note 1: The address lines actually used depends on the address width selected. This example assumes 16-bit addressing.

DS39646C-page 108                                             2008 Microchip Technology Inc.
                                                             PIC18F8722 FAMILY

7.7 Operation in Power-Managed                               In Sleep and Idle modes, the microcontroller core does
         Modes                                               not need to access data; bus operations are sus-
                                                             pended. The state of the external bus is frozen with the
In alternate power-managed Run modes, the external           address/data pins and most of the control pins holding
bus continues to operate normally. If a clock source         at the same state they were in when the mode was
with a lower speed is selected, bus operations will run      invoked. The only potential changes are the CE, LB
at that speed. In these cases, excessive access times        and UB pins which are held at logic high.
for the external memory may result if wait states have
been enabled and added to external memory opera-
tions. If operations in a lower power Run mode are
anticipated, users should provide in their applications
for adjusting memory access times at the lower clock
speeds.

TABLE 7-3: SUMMARY OF REGISTERS ASSOCIATED WITH POWER-MANAGED MODES

Name  Bit 7       Bit 6           Bit 5  Bit 4               Bit 3  Bit 2  Bit 1  Bit 0          Reset
                                                                                                Values
                                                                                                on page

MEMCON(1) EBDIS   --              WAIT1  WAIT0               --     --     WM1    WM0           60
                                  ABW1   ABW0
CONFIG3L(2) WAIT  BW                                         --     --     PM1    PM0           302
                                     --     --
CONFIG3H MCLRE    --                                         -- LPT1OSC ECCPMX(2) CCP2MX 303

Legend: -- = unimplemented, read as `0'. Shaded cells are not used by the External Memory Bus.

Note 1: This register is not implemented on 64-pin devices.

2: Unimplemented in PIC18F6527/6622/6627/6722 devices.

2008 Microchip Technology Inc.                                                  DS39646C-page 109
PIC18F8722 FAMILY

NOTES:

DS39646C-page 110   2008 Microchip Technology Inc.
                                                           PIC18F8722 FAMILY

8.0 DATA EEPROM MEMORY                                     8.2 EECON1 and EECON2 Registers

The data EEPROM is a nonvolatile memory array,             Access to the data EEPROM is controlled by two
separate from the data RAM and program memory, that        registers: EECON1 and EECON2. These are the same
is used for long-term storage of program data. It is not   registers which control access to the program memory
directly mapped in either the register file or program     and are used in a similar manner for the data
memory space, but is indirectly addressed through the      EEPROM.
Special Function Registers (SFRs). The EEPROM is
readable and writable during normal operation over the     The EECON1 register (Register ) is the control register
entire VDD range.                                          for data and program memory access. Control bit
                                                           EEPGD determines if the access will be to program or
Five SFRs are used to read and write to the data           data EEPROM memory. When clear, operations will
EEPROM, as well as the program memory. They are:           access the data EEPROM memory. When set, program
                                                           memory is accessed.
EECON1
EECON2                                                   Control bit CFGS determines if the access will be to the
EEDATA                                                   Configuration registers or to program memory/data
EEADR                                                    EEPROM memory. When set, subsequent operations
EEADRH                                                   access Configuration registers. When CFGS is clear,
                                                           the EEPGD bit selects either program Flash or data
The data EEPROM allows byte read and write. When           EEPROM memory.
interfacing to the data memory block, EEDATA holds
the 8-bit data for read/write and the EEADRH:EEADR         The WREN bit, when set, will allow a write operation.
register pair holds the address of the EEPROM location     On power-up, the WREN bit is clear. The WRERR bit is
being accessed.                                            set in hardware when the WREN bit is set and cleared
                                                           when the internal programming timer expires and the
The EEPROM data memory is rated for high erase/write       write operation is complete.
cycle endurance. A byte write automatically erases the
location and writes the new data (erase-before-write).     Note:  During normal operation, the WRERR is
The write time is controlled by an on-chip timer; it will         read as `1'. This can indicate that a write
vary with voltage and temperature, as well as from chip-          operation was prematurely terminated by
to-chip. Please refer to parameter D122 (Table 28-1 in            a Reset, or a write operation was
Section 28.0 "Electrical Characteristics") for exact              attempted improperly.
limits.
                                                           The WR control bit initiates write operations. The bit
8.1 EEADR and EEADRH Registers                             cannot be cleared, only set, in software; it is cleared in
                                                           hardware at the completion of the write operation.
The EEADRH:EEADR register pair is used to address
the data EEPROM for read and write operations.             Note:  The EEIF interrupt flag bit (PIR2<4>) is set
EEADRH holds the two MSbs of the address; the upper               when the write is complete. It must be
6 bits are ignored. The 10-bit range of the pair can              cleared in software.
address a memory range of 1024 bytes (00h to 3FFh).
                                                           Control bits, RD and WR, start read and erase/write
                                                           operations, respectively. These bits are set by firmware