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

产品描述

搜索

PIC18F8620-I/PT

器件型号:PIC18F8620-I/PT
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Microchip
厂商官网:
标准:
下载文档

器件描述

8-bit Microcontrollers - MCU 64KB 3840 RAM 68I/O

参数
产品属性属性值
Product AttributeAttribute Value
制造商:
Manufacturer:
Microchip
产品种类:
Product Category:
8-bit Microcontrollers - MCU
RoHS:YES
安装风格:
Mounting Style:
SMD/SMT
封装 / 箱体:
Package / Case:
TQFP-80
系列:
Series:
PIC18(L)Fx620
Core:PIC18
Data Bus Width:8 bit
Maximum Clock Frequency:40 MHz
Program Memory Size:64 kB
Data RAM Size:3.8 kB
ADC Resolution:10 bit
Number of I/Os:68 I/O
工作电源电压:
Operating Supply Voltage:
2 V to 5.5 V
最小工作温度:
Minimum Operating Temperature:
- 40 C
最大工作温度:
Maximum Operating Temperature:
+ 85 C
接口类型:
Interface Type:
I2C, SPI, USART
封装:
Packaging:
Tray
高度:
Height:
1 mm
长度:
Length:
12 mm
产品:
Product:
MCU
Program Memory Type:Flash
宽度:
Width:
12 mm
商标:
Brand:
Microchip Technology
Data ROM Size:1024 B
Data ROM Type:EEPROM
Moisture Sensitive:Yes
Number of ADC Channels:16
Number of Timers/Counters:5 Timer
Processor Series:PIC18
产品类型:
Product Type:
8-bit Microcontrollers - MCU
工厂包装数量:
Factory Pack Quantity:
119
子类别:
Subcategory:
Microcontrollers - MCU
电源电压-最大:
Supply Voltage - Max:
5.5 V, 5.8 V
电源电压-最小:
Supply Voltage - Min:
3.9 V, 4.2 V
商标名:
Tradename:
PIC
单位重量:
Unit Weight:
0.018117 oz

PIC18F8620-I/PT器件文档内容

                                                   PIC18F6520/8520/6620/

                                                                                  8620/6720/8720

               64/80-Pin High-Performance, 256 Kbit to 1 Mbit

                     Enhanced Flash Microcontrollers with A/D

High-Performance RISC CPU:                                              Analog Features:

•  C compiler optimized architecture/instruction set:                   •  10-bit, up to 16-channel Analog-to-Digital

   -  Source code compatible with the PIC16 and                            Converter (A/D):

      PIC17 instruction sets                                               -  Conversion available during Sleep

•  Linear program memory addressing to 128 Kbytes                       •  Programmable 16-level Low-Voltage Detection

•  Linear data memory addressing to 3840 bytes                             (LVD) module:

•  1 Kbyte of data EEPROM                                                  -  Supports interrupt on Low-Voltage Detection

•  Up to 10 MIPs operation:                                             •  Programmable Brown-out Reset (PBOR)

   -  DC – 40 MHz osc./clock input                                      •  Dual analog comparators:

   -  4 MHz – 10 MHz osc./clock input with PLL active                      -  Programmable input/output configuration

•  16-bit wide instructions, 8-bit wide data path                       Special Microcontroller Features:

•  Priority levels for interrupts                                       •  100,000 erase/write cycle Enhanced Flash

•  31-level, software accessible hardware stack                            program memory typical

•  8 x 8 Single Cycle Hardware Multiplier                               •  1,000,000 erase/write cycle Data EEPROM

External Memory Interface                                                  memory typical

(PIC18F8X20 Devices Only):                                              •  1 second programming time

•  Address capability of up to 2 Mbytes                                 •  Flash/Data EEPROM Retention: > 40 years

•  16-bit interface                                                     •  Self-reprogrammable under software control

Peripheral Features:                                                    •  Power-on Reset (POR), Power-up Timer (PWRT)

                                                                           and Oscillator Start-up Timer (OST)

•  High current sink/source 25 mA/25 mA                                 •  Watchdog Timer (WDT) with its own On-Chip

•  Four external interrupt pins                                            RC Oscillator for reliable operation

•  Timer0 module: 8-bit/16-bit timer/counter                            •  Programmable code protection

•  Timer1 module: 16-bit timer/counter                                  •  Power saving Sleep mode

•  Timer2 module: 8-bit timer/counter                                   •  Selectable oscillator options including:

•  Timer3 module: 16-bit timer/counter                                     -  4X Phase Lock Loop (of primary oscillator)

•  Timer4 module: 8-bit timer/counter                                      -  Secondary Oscillator (32 kHz) clock input

•  Secondary oscillator clock option – Timer1/Timer3                    •  In-Circuit Serial Programming™ (ICSP™) via

•  Five Capture/Compare/PWM (CCP) modules:                                 two pins

   -  Capture is 16-bit, max. resolution 6.25 ns (TCY/16)               •  MPLAB® In-Circuit Debug (ICD) via two pins

   -  Compare is 16-bit, max. resolution 100 ns (TCY)                   CMOS Technology:

   -  PWM output: PWM resolution is 1 to 10-bit                         •  Low-power, high-speed Flash technology

•  Master Synchronous Serial Port (MSSP) module                         •  Fully static design

   with two modes of operation:

   -  3-wire SPI (supports all 4 SPI modes)                             •  Wide operating voltage range (2.0V to 5.5V)

   -  I2C™ Master and Slave mode                                        •  Industrial and Extended temperature ranges

•  Two Addressable USART modules:

   -  Supports RS-485 and RS-232

•  Parallel Slave Port (PSP) module

               Program Memory            Data Memory            10-bit                  MSSP                                Max

      Device                                               I/O  A/D        CCP                  USART    Timers        Ext  FOSC

               Bytes  # Single-Word    SRAM     EEPROM                     (PWM)  SPI   Master         8-bit/16-bit    Bus

                      Instructions     (bytes)  (bytes)         (ch)                       I2C                              (MHz)

   PIC18F6520  32K    16384            2048        1024    52   12            5      Y     Y       2     2/3             N  40

   PIC18F6620  64K    32768            3840        1024    52   12            5      Y     Y       2     2/3             N  25

   PIC18F6720  128K   65536            3840        1024    52   12            5      Y     Y       2     2/3             N  25

   PIC18F8520  32K    16384            2048        1024    68   16            5      Y     Y       2     2/3             Y  40

   PIC18F8620  64K    32768            3840        1024    68   16            5      Y     Y       2     2/3             Y  25

   PIC18F8720  128K   65536            3840        1024    68   16            5      Y     Y       2     2/3             Y  25

 2003-2013 Microchip Technology Inc.                                                                            DS39609C-page 1
PIC18F6520/8520/6620/8620/6720/8720

Pin Diagrams

64-Pin TQFP

                                         RE2/CS         RE3      RE4   RE5   RE6            RE7/CCP2(1)    RD0/PSP0  VDD      VSS  RD1/PSP1  RD2/PSP2       RD3/PSP3   RD4/PSP4           RD5/PSP5          RD6/PSP6     RD7/PSP7

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

          RE1/WR      1                                                                                                                                                                                                               48  RB0/INT0

          RE0/RD      2                                                                                                                                                                                                               47  RB1/INT1

      RG0/CCP3        3                                                                                                                                                                                                               46  RB2/INT2

RG1/TX2/CK2           4                                                                                                                                                                                                               45  RB3/INT3

RG2/RX2/DT2           5                                                                                                                                                                                                               44  RB4/KBI0

      RG3/CCP4        6                                                                                                                                                                                                               43  RB5/KBI1/PGM

      MCLR/VPP        7                                                                     PIC18F6520                                                                                                                                42  RB6/KBI2/PGC

      RG4/CCP5        8                                                                     PIC18F6620                                                                                                                                41  VSS

                 VSS  9                                                                     PIC18F6720                                                                                                                                40  OSC2/CLKO/RA6

                 VDD  10                                                                                                                                                                                                              39  OSC1/CLKI

          RF7/SS      11                                                                                                                                                                                                              38  VDD

      RF6/AN11        12                                                                                                                                                                                                              37  RB7/KBI3/PGD

RF5/AN10/CVREF        13                                                                                                                                                                                                              36  RC5/SDO

          RF4/AN9     14                                                                                                                                                                                                              35  RC4/SDI/SDA

          RF3/AN8     15                                                                                                                                                                                                              34  RC3/SCK/SCL

RF2/AN7/C1OUT         16                                                                                                                                                                                                              33  RC2/CCP1

                                   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/LVDIN  RA4/T0CKI  RC1/T1OSI/CCP2(1)  RC0/T1OSO/T13CKI  RC6/TX1/CK1  RC7/RX1/DT1

Note  1:  CCP2   is   multiplexed  with  RC1                     when  CCP2MX                              is        set.

DS39609C-page 2                                                                                                                                                                                                           2003-2013 Microchip Technology  Inc.
                  PIC18F6520/8520/6620/8620/6720/8720

Pin Diagrams (Continued)

   80-Pin TQFP

                              RH1/A17    RH0/A16   RE2/CS/AD10(3)  RE3/AD11  RE4/AD12  RE5/AD13  RE6/AD14       RE7/CCP2/AD15(2)  RD0/PSP0/AD0(3)  VDD      VSS  RD1/PSP1/AD1(3)  RD2/PSP2/AD2(3)  RD3/PSP3/AD3(3)  RD4/PSP4/AD4(3)    RD5/PSP5/AD5(3)   RD6/PSP6/AD6(3)  RD7/PSP7/AD7(3)  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     2                                                                                                                                                                                                                                                                                 59  RJ3/WRH

   RE1/WR/AD9(3)          3                                                                                                                                                                                                                                                                                 58  RB0/INT0

   RE0/RD/AD8(3)          4                                                                                                                                                                                                                                                                                 57  RB1/INT1

              RG0/CCP3    5                                                                                                                                                                                                                                                                                 56  RB2/INT2

   RG1/TX2/CK2            6                                                                                                                                                                                                                                                                                 55  RB3/INT3/CCP2(1)

   RG2/RX2/DT2            7                                                                                                                                                                                                                                                                                 54  RB4/KBI0

              RG3/CCP4    8                                                                                                                                                                                                                                                                                 53  RB5/KBI1/PGM

              MCLR/VPP    9                                                                                     PIC18F8520                                                                                                                                                                                  52  RB6/KBI2/PGC

              RG4/CCP5    10                                                                                    PIC18F8620                                                                                                                                                                                  51  VSS

                  VSS     11                                                                                                                                                                                                                                                                                50  OSC2/CLKO/RA6

                  VDD     12                                                                                    PIC18F8720                                                                                                                                                                                  49  OSC1/CLKI

                  RF7/SS  13                                                                                                                                                                                                                                                                                48  VDD

              RF6/AN11    14                                                                                                                                                                                                                                                                                47  RB7/KBI3/PGD

   RF5/AN10/CVREF         15                                                                                                                                                                                                                                                                                46  RC5/SDO

              RF4/AN9     16                                                                                                                                                                                                                                                                                45  RC4/SDI/SDA

              RF3/AN8     17                                                                                                                                                                                                                                                                                44  RC3/SCK/SCL

   RF2/AN7/C1OUT          18                                                                                                                                                                                                                                                                                43  RC2/CCP1

              RH7/AN15    19                                                                                                                                                                                                                                                                                42  RJ7/UB

              RH6/AN14    20                                                                                                                                                                                                                                                                                41  RJ6/LB

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

                              RH5/AN13   RH4/AN12  RF1/AN6/C2OUT   RF0/AN5   AVDD      AVSS      RA3/AN3/VREF+  RA2/AN2/VREF-     RA1/AN1          RA0/AN0  VSS  VDD              RA5/AN4/LVDIN    RA4/T0CKI        RC1/T1OSI/CCP2(1)  RC0/T1OSO/T13CKI  RC6/TX1/CK1      RC7/RX1/DT1      RJ4/BA0  RJ5/CE

   Note       1:  CCP2 is multiplexed with RC1 when CCP2MX                                                                                                  is set.

              2:  CCP2 is multiplexed by default with RE7 when                                                                                              the device                             is               configured                                            in               Microcontroller      mode.

              3:  PSP is available only in Microcontroller mode.

  2003-2013  Microchip Technology Inc.                                                                                                                                                                                                                                                                              DS39609C-page  3
PIC18F6520/8520/6620/8620/6720/8720

Table of Contents

1.0   Device Overview .......................................................................................................................................................................... 7

2.0   Oscillator Configurations ............................................................................................................................................................ 21

3.0   Reset .......................................................................................................................................................................................... 29

4.0   Memory Organization ................................................................................................................................................................. 39

5.0   Flash Program Memory .............................................................................................................................................................. 61

6.0   External Memory Interface ......................................................................................................................................................... 71

7.0   Data EEPROM Memory ............................................................................................................................................................. 79

8.0   8 X 8 Hardware Multiplier ........................................................................................................................................................... 85

9.0   Interrupts .................................................................................................................................................................................... 87

10.0  I/O Ports ................................................................................................................................................................................... 103

11.0  Timer0 Module ......................................................................................................................................................................... 131

12.0  Timer1 Module ......................................................................................................................................................................... 135

13.0  Timer2 Module ......................................................................................................................................................................... 141

14.0  Timer3 Module ......................................................................................................................................................................... 143

15.0  Timer4 Module ......................................................................................................................................................................... 147

16.0  Capture/Compare/PWM (CCP) Modules ................................................................................................................................. 149

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

18.0  Addressable Universal Synchronous Asynchronous Receiver Transmitter (USART).............................................................. 197

19.0  10-Bit Analog-to-Digital Converter (A/D) Module ..................................................................................................................... 213

20.0  Comparator Module.................................................................................................................................................................. 223

21.0  Comparator Voltage Reference Module ................................................................................................................................... 229

22.0  Low-Voltage Detect .................................................................................................................................................................. 233

23.0  Special Features of the CPU .................................................................................................................................................... 239

24.0  Instruction Set Summary .......................................................................................................................................................... 259

25.0  Development Support............................................................................................................................................................... 301

26.0  Electrical Characteristics .......................................................................................................................................................... 305

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

28.0  Packaging Information.............................................................................................................................................................. 355

Appendix A: Revision History............................................................................................................................................................. 361

Appendix B: Device Differences......................................................................................................................................................... 361

Appendix C: Conversion Considerations ........................................................................................................................................... 362

Appendix D: Migration from Mid-range to Enhanced Devices ........................................................................................................... 362

Appendix E: Migration from High-end to Enhanced Devices ............................................................................................................. 363

The Microchip Web Site ..................................................................................................................................................................... 375

Customer Change Notification Service .............................................................................................................................................. 375

Customer Support .............................................................................................................................................................................. 375

Reader Response .............................................................................................................................................................................. 376

PIC18F6520/8520/6620/8620/6720/8720 Product Identification System .......................................................................................... 377

DS39609C-page 4     2003-2013 Microchip Technology Inc.
        PIC18F6520/8520/6620/8620/6720/8720

                                       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.

 2003-2013 Microchip Technology Inc.                                                                          DS39609C-page 5
PIC18F6520/8520/6620/8620/6720/8720

NOTES:

DS39609C-page 6   2003-2013 Microchip Technology Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

1.0          DEVICE OVERVIEW                                     With the addition of new operating modes, the External

                                                                 Memory Interface offers many new options, including:

This document contains device specific information for           •  Operating the microcontroller entirely from external

the following devices:                                              memory

   •  PIC18F6520                 •     PIC18F8520                •  Using   combinations      of  on-chip   and    external

   •  PIC18F6620                 •     PIC18F8620                   memory, up to the 2-Mbyte limit

   •  PIC18F6720                 •     PIC18F8720                •  Using external Flash memory for reprogrammable

                                                                    application code, or large data tables

This family offers the same advantages of all PIC18              •  Using  external  RAM      devices  for  storing      large

microcontrollers      –     namely,       high    computational     amounts of variable data

performance at an economical price – with the addition of

high endurance Enhanced Flash program memory. The                1.1.3      EASY MIGRATION

PIC18FXX20 family also provides an enhanced range of             Regardless of the memory size, all devices share the

program memory options and versatile analog features             same rich set of peripherals, allowing for a smooth

that   make      it  ideal  for  complex,  high-performance      migration path as applications grow and evolve.

applications.

                                                                 The  consistent  pinout  scheme      used  throughout   the

1.1          Key Features                                        entire family also aids in migrating to the next larger

                                                                 device. This is true when moving between the 64-pin

1.1.1          EXPANDED MEMORY                                   members,   between  the      80-pin   members,    or    even

The PIC18FXX20 family introduces the widest range of             jumping from 64-pin to 80-pin devices.

on-chip, Enhanced Flash program memory available                 1.1.4      OTHER SPECIAL FEATURES

on PIC® microcontrollers – up to 128 Kbyte (or 65,536

words), the largest ever offered by Microchip. For users         •  Communications: The PIC18FXX20 family

with more modest code requirements, the family also                 incorporates a range of serial communications

includes members with 32 Kbyte or 64 Kbyte.                         peripherals, including 2 independent USARTs and

Other memory features are:                                          a Master SSP module, capable of both SPI and

                                                                    I2C (Master and Slave) modes of operation. For

•     Data RAM and Data EEPROM: The                                 PIC18F8X20 devices, one of the general purpose

      PIC18FXX20 family also provides plenty of room                I/O ports can be reconfigured as an 8-bit Parallel

      for application data. Depending on the device,                Slave Port for direct processor-to-processor

      either 2048 or 3840 bytes of data RAM are                     communications.

      available. All devices have 1024 bytes of data             •  CCP Modules: All devices in the family

      EEPROM for long-term retention of nonvolatile                 incorporate five Capture/Compare/PWM modules

      data.                                                         to maximize flexibility in control applications. Up

•     Memory Endurance: The Enhanced Flash cells                    to four different time bases may be used to

      for both program memory and data EEPROM are                   perform several different operations at once.

      rated to last for many thousands of erase/write            •  Analog Features: All devices in the family

      cycles – up to 100,000 for program memory and                 feature 10-bit A/D converters, with up to 16 input

      1,000,000 for EEPROM. Data retention without                  channels, as well as the ability to perform

      refresh is conservatively estimated to be greater             conversions during Sleep mode. Also included

      than 40 years.                                                are dual analog comparators with programmable

1.1.2          EXTERNAL MEMORY INTERFACE                            input and output configuration, a programmable

                                                                    Low-Voltage Detect module and a programmable

In the event that 128 Kbytes of program memory is                   Brown-out Reset module.

inadequate       for  an    application,   the    PIC18F8X20     •  Self-programmability: These devices can write

members      of  the  family     also  implement   an  External     to their own program memory spaces under inter-

Memory Interface. This allows the controller’s internal             nal software control. By using a bootloader routine

program counter to address a memory space of up to                  located in the protected Boot Block at the top of

2 Mbytes, permitting a level of data access that few                program memory, it becomes possible to create

8-bit devices can claim.                                            an application that can update itself in the field.

 2003-2013 Microchip Technology Inc.                                                                       DS39609C-page 7
PIC18F6520/8520/6620/8620/6720/8720

1.2        Details on Individual Family                             3.            A/D channels (12 for PIC18F6X20 devices,

           Members                                                                16 for PIC18F8X20)

                                                                    4.            I/O  pins  (52    on   PIC18F6X20        devices,  68   on

The PIC18FXX20 devices are available in 64-pin and                                PIC18F8X20)

80-pin   packages.   They   are  differentiated  from         each  5.            External   program     memory     interface   (present

other in five ways:                                                               only on PIC18F8X20 devices)

1.   Flash       program    memory            (32 Kbytes      for   All other features for devices in the PIC18FXX20 family

     PIC18FX520           devices,         64 Kbytes          for   are identical. These are summarized in Table 1-1.

     PIC18FX620        devices   and          128 Kbytes      for

     PIC18FX720 devices)                                            Block diagrams of the PIC18F6X20 and PIC18F8X20

2.   Data   RAM      (2048  bytes       for   PIC18FX520            devices            are   provided    in  Figure 1-1    and  Figure 1-2,

     devices,    3840     bytes  for    PIC18FX620            and   respectively. The pinouts for these device families are

     PIC18FX720 devices)                                            listed in Table 1-2.

TABLE 1-1:           PIC18FXX20 DEVICE FEATURES

         Features           PIC18F6520        PIC18F6620            PIC18F6720         PIC18F8520            PIC18F8620    PIC18F8720

Operating Frequency         DC – 40 MHz       DC – 25 MHz           DC – 25 MHz        DC – 40 MHz       DC – 25 MHz       DC – 25 MHz

Program Memory                   32K                  64K           128K                     32K             64K                128K

(Bytes)

Program Memory                   16384           32768              65536                    16384           32768              65536

(Instructions)

Data Memory                      2048                 3840          3840                     2048            3840               3840

(Bytes)

Data EEPROM                      1024                 1024          1024                     1024            1024               1024

Memory (Bytes)

External Memory                     No                No            No                       Yes             Yes                     Yes

Interface

Interrupt Sources                   17                    17        17                       18              18                      18

I/O Ports                   Ports A, B, C,    Ports A, B, C, D,     Ports A, B, C, D,  Ports A, B, C,    Ports A, B, C,    Ports A, B, C,

                                 D, E, F, G      E, F, G            E, F, G            D, E, F, G, H, J  D, E, F, G, H, J  D, E, F, G, H, J

Timers                              5                     5         5                        5               5                       5

Capture/Compare/                    5                     5         5                        5               5                       5

PWM Modules

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

                            Addressable       Addressable           Addressable        Addressable           Addressable   Addressable

                            USART (2)            USART (2)          USART (2)          USART (2)             USART (2)     USART (2)

Parallel Communications          PSP                  PSP           PSP                      PSP             PSP                     PSP

10-bit Analog-to-Digital         12 input        12 input           12 input                16 input         16 input           16 input

Module                           channels        channels           channels           channels              channels           channels

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

                                 RESET           RESET              RESET                    RESET           RESET              RESET

                            Instruction,         Instruction,       Instruction,       Instruction,          Instruction,  Instruction,

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

                            Stack Underflow   Stack Underflow       Stack Underflow    Stack Underflow   Stack Underflow   Stack Underflow

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

Programmable                     Yes                  Yes           Yes                      Yes             Yes                     Yes

Low-Voltage Detect

Programmable                     Yes                  Yes           Yes                      Yes             Yes                     Yes

Brown-out Reset

Instruction Set             77 Instructions   77 Instructions       77 Instructions    77 Instructions   77 Instructions   77 Instructions

Package                     64-pin TQFP       64-pin TQFP           64-pin TQFP        80-pin TQFP           80-pin TQFP   80-pin TQFP

DS39609C-page 8                                                                                      2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

FIGURE 1-1:        PIC18F6X20 BLOCK DIAGRAM

                                                                                      Data Bus<8>             PORTA

                                                                                                                     RA0/AN0

                               Table Pointer<21>                            Data Latch                               RA1/AN1

                   21                                                                                                RA2/AN2/VREF-

                                                         8       8                                                   RA3/AN3/VREF+

               21               inc/dec logic                                  Data RAM                              RA4/T0CKI

                                                                                                                     RA5/AN4/LVDIN

                                                                            Address Latch                            RA6

                           21          PCLATU     PCLATH                              12                      PORTB

                                                                            Address<12>                              RB0/INT0

                                       PCU        PCH       PCL                                                      RB1/INT1

                                       Program Counter              4       12           4                           RB2/INT2

Address Latch                                                       BSR     FSR0         Bank0, F                    RB3/INT3

                                                                                                                     RB4/KBI0

Program Memory                               31 Level Stack                 FSR1                                     RB5/KBI1/PGM

                                                                            FSR2              12                     RB6/KBI2/PGC

Data Latch                                                                                                           RB7/KBI3/PGD

                                                                    Decode  inc/dec

                                Table Latch                                    logic                          PORTC

                                                                                                                     RC0/T1OSO/T13CKI

                                   8                                                                                 RC1/T1OSI/CCP2

                           16                                                                                        RC2/CCP1

                                                  ROM Latch                                                          RC3/SCK/SCL

                                                                                                                     RC4/SDI/SDA

                                                    IR                                                               RC5/SDO

                                                                                                                     RC6/TX1/CK1

                                                                                                                     RC7/RX1/DT1

                                                                                              8

                                                                                                              PORTD

                                                                            PRODH        PRODL                       RD7/PSP7:RD0/PSP0

                   Instruction                                                 8 x 8 Multiply

                   Decode &                                                                        8

                   Control                                             3                                      PORTE

                                                                                                                     RE0/RD

                                                                    BITOP   WREG                   8                 RE1/WR

OSC2/CLKO                                    Power-up                  8        8                                    RE2/CS

OSC1/CLKI                                    Timer                                                                   RE3

                   Timing                    Oscillator                     8                                        RE4

                Generation            Start-up Timer                                                                 RE5

                                             Power-on                           ALU<8>                               RE6

                                             Reset                                                                   RE7/CCP2

                                       Watchdog                                       8                       PORTF

                   Precision                 Timer                                                                   RF0/AN5

                   Band Gap            Brown-out                                                                     RF1/AN6/C2OUT

                   Reference                 Reset                                                                   RF2/AN7/C1OUT

                                                                                                                     RF3/AN8

                                                                                                                     RF4/AN9

                                                                                                                     RF5/AN10/CVREF

                                MCLR/VPP          VDD, VSS                                                           RF6/AN11

                                                                                                                     RF7/SS

                                                                                                              PORTG

Synchronous                USART1                   USART2                  Data                                     RG0/CCP3

Serial Port                                                                 EEPROM                                   RG1/TX2/CK2

                                                                                                                     RG2/RX2/DT2

                                                                                                                     RG3/CCP4

                                                                                                                     RG4/CCP5

BOR                Timer0          Timer1                Timer2     Timer3            Timer4

LVD

Comparator         CCP1            CCP2                  CCP3       CCP4              CCP5            10-bit

                                                                                                      A/D

 2003-2013 Microchip Technology Inc.                                                                                     DS39609C-page 9
PIC18F6520/8520/6620/8620/6720/8720

FIGURE 1-2:                            PIC18F8X20 BLOCK DIAGRAM

                                                                                                          Data Bus<8>             PORTA

                                                                                                                                              RA0/AN0

                                                                                                                                              RA1/AN1

                                            21    Table Pointer<21>                             Data Latch                                    RA2/AN2/VREF-

                                                                                                                                              RA3/AN3/VREF+

                                                                             8       8             Data RAM                                   RA4/T0CKI

                                   21               inc/dec logic                                                                             RA5/AN4/LVDIN

                                                                                                                                              RA6

                                                                                                Address Latch                     PORTB

System Bus Interface                           21         PCLATU     PCLATH                               12                                  RB0/INT0

                                                                                                Address<12>                                   RB1/INT1

                                                          PCU        PCH        PCL                                                           RB2/INT2

                                                          Program Counter               4       12           4                                RB3/INT3/CCP2

                      Address Latch                                                     BSR     FSR0         Bank0, F                         RB4/KBI0

                                                                                                                                              RB5/KBI1/PGM

                                                                 31 Level Stack                 FSR1                                          RB6/KBI2/PGC

                      Program Memory                                                            FSR2                                          RB7/KBI3/PGD

                                                                                                                  12

                          Data Latch                                                                                              PORTC

                                                                                        Decode  inc/dec                                       RC0/T1OSO/T13CKI

                                                    Table Latch                                    logic                                      RC1/T1OSI/CCP2

                                                                                                                                              RC2/CCP1

                                                       8                                                                                      RC3/SCK/SCL

                                               16                                                                                             RC4/SDI/SDA

                                                                     ROM Latch                                                                RC5/SDO

                                                                                                                                              RC6/TX1/CK1

                                                                        IR                                                                    RC7/RX1/DT1

                      AD15:AD0, A19:A16(1)                                                                                        PORTD

                                                                                                                  8                           RD7/PSP7/AD7:

                                                                                                                                              RD0/PSP0/AD0

                                                                                                PRODH PRODL                       PORTE

                                                                                                                                              RE0/RD/AD8

                                       Instruction                                                 8 x 8 Multiply                             RE1/WR/AD9

                                       Decode &                                                                        8                      RE2/CS/AD10

                                       Control                                             3                                                  RE3/AD11

                                                                                        BITOP   WREG                                          RE4/AD12

                                                                 Power-up                  8        8                  8                      RE5/AD13

                      OSC2/CLKO                                  Timer                                                                        RE6/AD14

                      OSC1/CLKI        Timing                    Oscillator                                                                   RE7/CCP2/AD15

                                      Generation          Start-up Timer                        8                                 PORTF

                                                                 Power-on                           ALU<8>                                    RF0/AN5

                                                                 Reset                                                                        RF1/AN6/C2OUT

                                                                 Watchdog                                 8                                   RF2/AN7/C1OUT

                                                                 Timer                                                                        RF3/AN8

                                       Precision          Brown-out                                                                           RF4/AN9

                                       Band Gap                  Reset                                                                        RF5/AN10/CVREF

                                       Reference                                                                                              RF6/AN11

                                                                                                                                              RF7/SS

                                                                                                                                  PORTG

                                                    MCLR/VPP         VDD, VSS                                                                 RG0/CCP3

                                                                                                                                              RG1/TX2/CK2

                                                                                                                                              RG2/RX2/DT2

                                                                                                                                              RG3/CCP4

                                                                                                                                              RG4/CCP5

                                                                                                                                  PORTH

                      Synchronous                                                               Data                                          RH3/AD19:RH0/AD16

                      Serial Port              USART1                   USART2                  EEPROM                                        RH7/AN15:RH4/AN12

                                                                                                                                  PORTJ

                                                                                                                                              RJ0/ALE

                                                                                                                                              RJ1/OE

                          BOR                                                                                                                 RJ2/WRL

                          LVD          Timer0          Timer1                Timer2     Timer3            Timer4                              RJ3/WRH

                                                                                                                                              RJ4/BA0

                                                                                                                                              RJ5/CE

                                                                                                                                              RJ6/LB

                                                                                                                                              RJ7/UB

                      Comparator       CCP1            CCP2                  CCP3       CCP4              CCP5            10-bit

                                                                                                                          A/D

Note                  1:  External memory interface pins are physically multiplexed with PORTD (AD7:AD0), PORTE (AD15:AD8)               and  PORTH (A19:A16).

DS39609C-page 10                                                                                                           2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

TABLE 1-2:         PIC18FXX20 PINOUT I/O DESCRIPTIONS

                                Pin Number           Pin      Buffer

      Pin Name                                       Type     Type                           Description

                          PIC18F6X20     PIC18F8X20

MCLR/VPP                     7              9                             Master Clear (input) or programming

                                                                          voltage (output).

MCLR                                                       I     ST       Master Clear (Reset) input. This pin is

                                                                          an active-low Reset to the device.

VPP                                                  P                    Programming voltage input.

OSC1/CLKI                    39             49                            Oscillator crystal or external clock input.

OSC1                                                       I  CMOS/ST     Oscillator crystal input or external clock

                                                                          source input. ST buffer when configured

                                                                          in RC mode; otherwise CMOS.

CLKI                                                       I  CMOS        External clock source input. Always

                                                                          associated with pin function OSC1

                                                                          (see OSC1/CLKI, OSC2/CLKO pins).

OSC2/CLKO/RA6                40             50                            Oscillator crystal or clock output.

OSC2                                                 O           —        Oscillator crystal output.

                                                                          Connects to crystal or resonator in

                                                                          Crystal Oscillator mode.

CLKO                                                 O           —        In RC mode, OSC2 pin outputs CLKO,

                                                                          which has 1/4 the frequency of OSC1

                                                                          and denotes the instruction cycle rate.

RA6                                                  I/O         TTL      General purpose I/O pin.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog   =  Analog input

          I     =  Input                                      O        =  Output

          P     =  Power                                      OD       =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

 2003-2013 Microchip Technology Inc.                                                            DS39609C-page 11
PIC18F6520/8520/6620/8620/6720/8720

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

                             Pin Number              Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTA is a bidirectional I/O port.

RA0/AN0                      24          30

RA0                                                  I/O         TTL     Digital I/O.

AN0                                                        I  Analog     Analog input 0.

RA1/AN1                      23          29

RA1                                                  I/O         TTL     Digital I/O.

AN1                                                        I  Analog     Analog input 1.

RA2/AN2/VREF-                22          28

RA2                                                  I/O         TTL     Digital I/O.

AN2                                                        I  Analog     Analog input 2.

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

RA3/AN3/VREF+                21          27

RA3                                                  I/O         TTL     Digital I/O.

AN3                                                        I  Analog     Analog input 3.

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

RA4/T0CKI                    28          34

RA4                                                  I/O      ST/OD      Digital I/O – Open-drain when

                                                                         configured as output.

T0CKI                                                      I     ST      Timer0 external clock input.

RA5/AN4/LVDIN                27          33

RA5                                                  I/O         TTL     Digital I/O.

AN4                                                        I  Analog     Analog input 4.

LVDIN                                                      I  Analog     Low-Voltage Detect input.

RA6                                                                      See the OSC2/CLKO/RA6 pin.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

DS39609C-page 12                                                                  2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

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

                             Pin Number              Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTB is a bidirectional I/O port. PORTB

                                                                         can be software programmed for internal

                                                                         weak pull-ups on all inputs.

RB0/INT0                     48          58

RB0                                                  I/O         TTL     Digital I/O.

INT0                                                       I     ST      External interrupt 0.

RB1/INT1                     47          57

RB1                                                  I/O         TTL     Digital I/O.

INT1                                                       I     ST      External interrupt 1.

RB2/INT2                     46          56

RB2                                                  I/O         TTL     Digital I/O.

INT2                                                       I     ST      External interrupt 2.

RB3/INT3/CCP2                45          55

RB3                                                  I/O         TTL     Digital I/O.

INT3                                                 I/O         ST      External interrupt 3.

CCP2(1)                                              I/O         ST      Capture2 input, Compare2 output,

                                                                         PWM2 output.

RB4/KBI0                     44          54

RB4                                                  I/O         TTL     Digital I/O.

KBI0                                                       I     ST      Interrupt-on-change pin.

RB5/KBI1/PGM                 43          53

RB5                                                  I/O         TTL     Digital I/O.

KBI1                                                       I     ST      Interrupt-on-change pin.

PGM                                                  I/O         ST      Low-Voltage ICSP Programming enable

                                                                         pin.

RB6/KBI2/PGC                 42          52

RB6                                                  I/O         TTL     Digital I/O.

KBI2                                                       I     ST      Interrupt-on-change pin.

PGC                                                  I/O         ST      In-Circuit Debugger and

                                                                         ICSP programming clock.

RB7/KBI3/PGD                 37          47

RB7                                                  I/O         TTL     Digital I/O.

KBI3                                                 I/O         ST      Interrupt-on-change pin.

PGD                                                                      In-Circuit Debugger and

                                                                         ICSP programming data.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

 2003-2013 Microchip Technology Inc.                                                                  DS39609C-page 13
PIC18F6520/8520/6620/8620/6720/8720

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

                             Pin Number              Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTC is a bidirectional I/O port.

RC0/T1OSO/T13CKI             30          36

RC0                                                  I/O         ST      Digital I/O.

T1OSO                                                O           —       Timer1 oscillator output.

T13CKI                                                     I     ST      Timer1/Timer3 external clock input.

RC1/T1OSI/CCP2               29          35

RC1                                                  I/O         ST      Digital I/O.

T1OSI                                                      I  CMOS       Timer1 oscillator input.

CCP2(2)                                              I/O         ST      Capture2 input/Compare2 output/

                                                                         PWM2 output.

RC2/CCP1                     33          43

RC2                                                  I/O         ST      Digital I/O.

CCP1                                                 I/O         ST      Capture1 input/Compare1 output/

                                                                         PWM1 output.

RC3/SCK/SCL                  34          44

RC3                                                  I/O         ST      Digital I/O.

SCK                                                  I/O         ST      Synchronous serial clock input/output

                                                                         for SPI mode.

SCL                                                  I/O         ST      Synchronous serial clock input/output

                                                                         for I2C mode.

RC4/SDI/SDA                  35          45

RC4                                                  I/O         ST      Digital I/O.

SDI                                                        I     ST      SPI data in.

SDA                                                  I/O         ST      I2C data I/O.

RC5/SDO                      36          46

RC5                                                  I/O         ST      Digital I/O.

SDO                                                  O           —       SPI data out.

RC6/TX1/CK1                  31          37

RC6                                                  I/O         ST      Digital I/O.

TX1                                                  O           —       USART 1 asynchronous transmit.

CK1                                                  I/O         ST      USART 1 synchronous clock

                                                                         (see RX1/DT1).

RC7/RX1/DT1                  32          38

RC7                                                  I/O         ST      Digital I/O.

RX1                                                        I     ST      USART 1 asynchronous receive.

DT1                                                  I/O         ST      USART 1 synchronous data

                                                                         (see TX1/CK1).

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

DS39609C-page 14                                                                  2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

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

                             Pin Number              Pin   Buffer

      Pin Name                                       Type  Type                          Description

                          PIC18F6X20     PIC18F8X20

                                                                      PORTD is a bidirectional I/O port. These

                                                                      pins have TTL input buffers when external

                                                                      memory is enabled.

RD0/PSP0/AD0                 58          72

RD0                                                  I/O      ST      Digital I/O.

PSP0                                                 I/O      TTL     Parallel Slave Port data.

AD0(3)                                               I/O      TTL     External memory address/data 0.

RD1/PSP1/AD1                 55          69

RD1                                                  I/O      ST      Digital I/O.

PSP1                                                 I/O      TTL     Parallel Slave Port data.

AD1(3)                                               I/O      TTL     External memory address/data 1.

RD2/PSP2/AD2                 54          68

RD2                                                  I/O      ST      Digital I/O.

PSP2                                                 I/O      TTL     Parallel Slave Port data.

AD2(3)                                               I/O      TTL     External memory address/data 2.

RD3/PSP3/AD3                 53          67

RD3                                                  I/O      ST      Digital I/O.

PSP3                                                 I/O      TTL     Parallel Slave Port data.

AD3(3)                                               I/O      TTL     External memory address/data 3.

RD4/PSP4/AD4                 52          66

RD4                                                  I/O      ST      Digital I/O.

PSP4                                                 I/O      TTL     Parallel Slave Port data.

AD4(3)                                               I/O      TTL     External memory address/data 4.

RD5/PSP5/AD5                 51          65

RD5                                                  I/O      ST      Digital I/O.

PSP5                                                 I/O      TTL     Parallel Slave Port data.

AD5(3)                                               I/O      TTL     External memory address/data 5.

RD6/PSP6/AD6                 50          64

RD6                                                  I/O      ST      Digital I/O.

PSP6                                                 I/O      TTL     Parallel Slave Port data.

AD6(3)                                               I/O      TTL     External memory address/data 6.

RD7/PSP7/AD7                 49          63

RD7                                                  I/O      ST      Digital I/O.

PSP7                                                 I/O      TTL     Parallel Slave Port data.

AD7(3)                                               I/O      TTL     External memory address/data 7.

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

          ST    =  Schmitt Trigger input with CMOS levels  Analog  =  Analog input

          I     =  Input                                   O       =  Output

          P     =  Power                                   OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

 2003-2013 Microchip Technology Inc.                                                            DS39609C-page 15
PIC18F6520/8520/6620/8620/6720/8720

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

                                Pin Number           Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTE is a bidirectional I/O port.

RE0/RD/AD8                   2              4

RE0                                                  I/O         ST      Digital I/O.

RD                                                         I     TTL     Read control for Parallel Slave Port

                                                                         (see WR and CS pins).

AD8(3)                                               I/O         TTL     External memory address/data 8.

RE1/WR/AD9                   1              3

RE1                                                  I/O         ST      Digital I/O.

WR                                                         I     TTL     Write control for Parallel Slave Port

                                                                         (see CS and RD pins).

AD9(3)                                               I/O         TTL     External memory address/data 9.

RE2/CS/AD10                  64             78

RE2                                                  I/O         ST      Digital I/O.

CS                                                         I     TTL     Chip select control for Parallel Slave

                                                                         Port (see RD and WR).

AD10(3)                                              I/O         TTL     External memory address/data 10.

RE3/AD11                     63             77

RE3                                                  I/O         ST      Digital I/O.

AD11(3)                                              I/O         TTL     External memory address/data 11.

RE4/AD12                     62             76

RE4                                                  I/O         ST      Digital I/O.

AD12                                                 I/O         TTL     External memory address/data 12.

RE5/AD13                     61             75

RE5                                                  I/O         ST      Digital I/O.

AD13(3)                                              I/O         TTL     External memory address/data 13.

RE6/AD14                     60             74

RE6                                                  I/O         ST      Digital I/O.

AD14(3)                                              I/O         TTL     External memory address/data 14.

RE7/CCP2/AD15                59             73

RE7                                                  I/O         ST      Digital I/O.

CCP2(1,4)                                            I/O         ST      Capture2 input/Compare2 output/

                                                                         PWM2 output.

AD15(3)                                              I/O         TTL     External memory address/data 15.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

DS39609C-page 16                                                                  2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

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

                                 Pin Number          Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTF is a bidirectional I/O port.

RF0/AN5                      18              24

RF0                                                  I/O         ST      Digital I/O.

AN5                                                        I  Analog     Analog input 5.

RF1/AN6/C2OUT                17              23

RF1                                                  I/O         ST      Digital I/O.

AN6                                                        I  Analog     Analog input 6.

C2OUT                                                O           ST      Comparator 2 output.

RF2/AN7/C1OUT                16              18

RF2                                                  I/O         ST      Digital I/O.

AN7                                                        I  Analog     Analog input 7.

C1OUT                                                O           ST      Comparator 1 output.

RF3/AN8                      15              17

RF1                                                  I/O         ST      Digital I/O.

AN8                                                        I  Analog     Analog input 8.

RF4/AN9                      14              16

RF1                                                  I/O         ST      Digital I/O.

AN9                                                        I  Analog     Analog input 9.

RF5/AN10/CVREF               13              15

RF1                                                  I/O         ST      Digital I/O.

AN10                                                       I  Analog     Analog input 10.

CVREF                                                O        Analog     Comparator VREF output.

RF6/AN11                     12              14

RF6                                                  I/O         ST      Digital I/O.

AN11                                                       I  Analog     Analog input 11.

RF7/SS                       11              13

RF7                                                  I/O         ST      Digital I/O.

SS                                                         I     TTL     SPI slave select input.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

 2003-2013 Microchip Technology Inc.                                                             DS39609C-page 17
PIC18F6520/8520/6620/8620/6720/8720

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

                                Pin Number           Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTG is a bidirectional I/O port.

RG0/CCP3                     3              5

RG0                                                  I/O         ST      Digital I/O.

CCP3                                                 I/O         ST      Capture3 input/Compare3 output/

                                                                         PWM3 output.

RG1/TX2/CK2                  4              6

RG1                                                  I/O         ST      Digital I/O.

TX2                                                  O           —       USART 2 asynchronous transmit.

CK2                                                  I/O         ST      USART 2 synchronous clock

                                                                         (see RX2/DT2).

RG2/RX2/DT2                  5              7

RG2                                                  I/O         ST      Digital I/O.

RX2                                                        I     ST      USART 2 asynchronous receive.

DT2                                                  I/O         ST      USART 2 synchronous data

                                                                         (see TX2/CK2).

RG3/CCP4                     6              8

RG3                                                  I/O         ST      Digital I/O.

CCP4                                                 I/O         ST      Capture4 input/Compare4 output/

                                                                         PWM4 output.

RG4/CCP5                     8              10

RG4                                                  I/O         ST      Digital I/O.

CCP5                                                 I/O         ST      Capture5 input/Compare5 output/

                                                                         PWM5 output.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

DS39609C-page 18                                                                  2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

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

                                Pin Number           Pin      Buffer

      Pin Name                                       Type     Type                       Description

                          PIC18F6X20     PIC18F8X20

                                                                         PORTH is a bidirectional I/O port(5).

RH0/A16                      —              79

RH0                                                  I/O         ST      Digital I/O.

A16                                                  O           TTL     External memory address 16.

RH1/A17                      —              80

RH1                                                  I/O         ST      Digital I/O.

A17                                                  O           TTL     External memory address 17.

RH2/A18                      —              1

RH2                                                  I/O         ST      Digital I/O.

A18                                                  O           TTL     External memory address 18.

RH3/A19                      —              2

RH3                                                  I/O         ST      Digital I/O.

A19                                                  O           TTL     External memory address 19.

RH4/AN12                     —              22

RH4                                                  I/O         ST      Digital I/O.

AN12                                                       I  Analog     Analog input 12.

RH5/AN13                     —              21

RH5                                                  I/O         ST      Digital I/O.

AN13                                                       I  Analog     Analog input 13.

RH6/AN14                     —              20

RH6                                                  I/O         ST      Digital I/O.

AN14                                                       I  Analog     Analog input 14.

RH7/AN15                     —              19

RH7                                                  I/O         ST      Digital I/O.

AN15                                                       I  Analog     Analog input 15.

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

          ST    =  Schmitt Trigger input with CMOS levels     Analog  =  Analog input

          I     =  Input                                      O       =  Output

          P     =  Power                                      OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

 2003-2013 Microchip Technology Inc.                                                            DS39609C-page 19
PIC18F6520/8520/6620/8620/6720/8720

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

                                Pin Number           Pin   Buffer

      Pin Name                                       Type  Type                          Description

                          PIC18F6X20     PIC18F8X20

                                                                      PORTJ is a bidirectional I/O port(5).

RJ0/ALE                      —              62

RJ0                                                  I/O      ST      Digital I/O.

ALE                                                  O        TTL     External memory address latch enable.

RJ1/OE                       —              61

RJ1                                                  I/O      ST      Digital I/O.

OE                                                   O        TTL     External memory output enable.

RJ2/WRL                      —              60

RJ2                                                  I/O      ST      Digital I/O.

WRL                                                  O        TTL     External memory write low control.

RJ3/WRH                      —              59

RJ3                                                  I/O      ST      Digital I/O.

WRH                                                  O        TTL     External memory write high control.

RJ4/BA0                      —              39

RJ4                                                  I/O      ST      Digital I/O.

BA0                                                  O        TTL     External memory Byte Address 0 control.

RJ5/CE                       —              40

RJ5                                                  I/O      ST      Digital I/O.

CE                                                   O        TTL     External memory chip enable control.

RJ6/LB                       —              41

RJ6                                                  I/O      ST      Digital I/O.

LB                                                   O        TTL     External memory low byte select.

RJ7/UB                       —              42

RJ7                                                  I/O      ST      Digital I/O.

UB                                                   O        TTL     External memory high byte select.

VSS                          9, 25,      11, 31,     P        —       Ground reference for logic and I/O pins.

                             41, 56      51, 70

VDD                          10, 26,     12, 32,     P        —       Positive supply for logic and I/O pins.

                             38, 57      48, 71

AVSS(6)                      20             26       P        —       Ground reference for analog modules.

AVDD(6)                      19             25       P        —       Positive supply for analog modules.

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

          ST    =  Schmitt Trigger input with CMOS levels  Analog  =  Analog input

          I     =  Input                                   O       =  Output

          P     =  Power                                   OD      =  Open-Drain (no P diode to VDD)

Note  1:  Alternate assignment for CCP2 when CCP2MX is not selected (all operating modes except

          Microcontroller).

      2:  Default assignment when CCP2MX is set.

      3:  External memory interface functions are only available on PIC18F8X20 devices.

      4:  CCP2 is multiplexed with this pin by default when configured in Microcontroller mode. Otherwise, it is

          multiplexed with either RB3 or RC1.

      5:  PORTH and PORTJ are only available on PIC18F8X20 (80-pin) devices.

      6:  AVDD must be connected to a positive supply and AVSS must be connected to a ground reference for

          proper operation of the part in user or ICSP modes. See parameter D001A for details.

DS39609C-page 20                                                               2003-2013 Microchip Technology Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

2.0        OSCILLATOR                                                 TABLE 2-1:      CAPACITOR SELECTION FOR

           CONFIGURATIONS                                                             CERAMIC RESONATORS

                                                                                      Ranges Tested:

2.1        Oscillator Types                                           Mode           Freq                  C1             C2

The PIC18FXX20 devices can be operated in eight                       XT          455 kHz         68-100 pF            68-100 pF

different oscillator modes. The user can program three                            2.0 MHz         15-68 pF             15-68 pF

configuration   bits   (FOSC2,       FOSC1       and  FOSC0)      to              4.0 MHz         15-68 pF             15-68 pF

select one of these eight modes:                                      HS          8.0 MHz         10-68 pF             10-68 pF

1.   LP               Low-Power Crystal                                           16.0 MHz        10-22 pF             10-22 pF

2.   XT               Crystal/Resonator                               These values are for design guidance only.

3.   HS               High-Speed Crystal/Resonator                    See notes following this table.

4.   HS+PLL           High-Speed Crystal/Resonator                                    Resonators Used:

                      with PLL enabled                                2.0 MHz   Murata Erie CSA2.00MG                   0.5%

5.   RC               External Resistor/Capacitor                     4.0 MHz   Murata Erie CSA4.00MG                   0.5%

6.   RCIO             External Resistor/Capacitor with                8.0 MHz   Murata Erie CSA8.00MT                   0.5%

                      I/O pin enabled                                 16.0 MHz  Murata Erie CSA16.00MX                  0.5%

7.   EC               External Clock                                  All resonators used did not have built-in capacitors.

8.   ECIO             External Clock with I/O pin

                      enabled

                                                                      Note 1:   Higher capacitance increases the stability

2.2        Crystal Oscillator/Ceramic                                           of the oscillator, but also increases the

           Resonators                                                           start-up time.

In XT, LP, HS or HS+PLL Oscillator modes, a crystal or                      2:  When operating below 3V VDD, or when

ceramic    resonator     is  connected       to  the  OSC1     and              using certain ceramic resonators at any

OSC2 pins to establish oscillation. Figure 2-1 shows                            voltage, it may be necessary to use high

the pin connections.                                                            gain  HS   mode,       try  a  lower   frequency

                                                                                resonator, or switch to a crystal oscillator.

The PIC18FXX20 oscillator design requires the use of                        3:  Since each resonator/crystal has its own

a parallel cut crystal.                                                         characteristics,  the       user  should  consult

    Note:       Use of a series cut crystal may give a fre-                     the   resonator/crystal        manufacturer   for

                quency out of the crystal manufacturer’s                        appropriate       values          of      external

                specifications.                                                 components,            or      verify  oscillator

                                                                                performance.

FIGURE 2-1:                  CRYSTAL/CERAMIC

                             RESONATOR OPERATION

                             (HS, XT OR LP

                             CONFIGURATION)

         C1(1)        OSC1

                                                        To

                                                        Internal

                XTAL                  RF(3)             Logic

                RS(2)                            Sleep

         C2(1)        OSC2              PIC18FXX20

    Note   1:   See Table 2-1 and Table 2-2 for recommended

                values of C1 and C2.

           2:   A series resistor (RS) may be required for AT

                strip cut crystals.

           3:   RF varies with the oscillator mode chosen.

 2003-2013 Microchip Technology Inc.                                                                          DS39609C-page 21
PIC18F6520/8520/6620/8620/6720/8720

TABLE 2-2:           CAPACITOR SELECTION FOR                      FIGURE 2-2:                   EXTERNAL CLOCK INPUT

                     CRYSTAL OSCILLATOR                                                         OPERATION (HS, XT OR

                     Ranges Tested:                                                             LP OSC CONFIGURATION)

Mode                Freq            C1                C2              Clock from                        OSC1

     LP            32 kHz                                             Ext. System                             PIC18FXX20

              200 kHz           15-22 pF           15-22 pF

                                                                                        Open            OSC2

     XT            1 MHz        15-22 pF           15-22 pF

                   4 MHz

     HS            4 MHz                                          2.3       RC Oscillator

                   8 MHz        15-22 pF           15-22 pF       For     timing  insensitive   applications,    the      “RC”      and

              20 MHz                                              “RCIO” device options offer additional cost savings.

Capacitor values are for design guidance only.                    The RC oscillator frequency is a function of the supply

These capacitors were tested with the above crystal               voltage, the resistor (REXT) and capacitor (CEXT) val-

frequencies for basic start-up and operation. These               ues and the operating temperature. In addition to this,

values are not optimized.                                         the oscillator frequency will vary from unit to unit, due

                                                                  to normal process parameter variation. Furthermore,

Different capacitor values may be required to produce             the difference in lead frame capacitance between pack-

acceptable oscillator operation. The user should test             age     types   will  also    affect  the  oscillation  frequency,

the performance of the oscillator over the expected               especially for low CEXT values. The user also needs to

VDD and temperature range for the application.                    take into account variation due to tolerance of external

See  the     notes   following  this  table  for   additional     R and C components used. Figure 2-3 shows how the

information.                                                      R/C combination is connected.

                                                                  In  the   RC    Oscillator    mode,   the   oscillator  frequency

Note 1:       Higher capacitance increases the stability          divided by 4 is available on the OSC2 pin. This signal

              of the oscillator, but also increases the           may be used for test purposes or to synchronize other

              start-up time.                                      logic.

         2:   When operating below 3V VDD, or when                FIGURE 2-3:                   RC OSCILLATOR MODE

              using certain ceramic resonators at any

              voltage, it may be necessary to use the                      VDD

              HS mode or switch to a crystal oscillator.

         3:   Since    each     resonator/crystal     has   its       REXT

              own characteristics,      the  user     should                                    OSC1                      Internal

              consult    the   resonator/crystal      manufac-                                                            Clock

              turer  for appropriate    values    of  external    CEXT

              components,       or      verify        oscillator                                               PIC18FXX20

              performance.                                            VSS

                                                                                                OSC2/CLKO

         4:   RS may be required to avoid overdriving                                   FOSC/4

              crystals with low drive level specification.            Recommended values:       3 k  REXT   100 k

         5:   Always verify oscillator performance over                                         CEXT > 20 pF

              the   VDD   and   temperature  range    that  is

              expected for the application.                       The RCIO Oscillator mode functions like the RC mode,

An external clock source may also be connected to the             except    that   the  OSC2    pin     becomes  an       additional

OSC1 pin in the HS, XT and LP modes, as shown in                  general purpose I/O pin. The I/O pin becomes bit 6 of

Figure 2-2.                                                       PORTA (RA6).

DS39609C-page 22                                                                         2003-2013 Microchip Technology Inc.
                   PIC18F6520/8520/6620/8620/6720/8720

2.4      External Clock Input                                 FIGURE 2-5:                     EXTERNAL CLOCK INPUT

The EC and ECIO Oscillator modes require an external                                          OPERATION

clock source to be connected to the OSC1 pin. The                                             (ECIO CONFIGURATION)

feedback device between OSC1 and OSC2 is turned

off in these modes to save current. There is a maximum                Clock from                     OSC1

1.5 s start-up required after a Power-on Reset, or                   Ext. System                           PIC18FXX20

wake-up from Sleep mode.                                                           RA6               I/O (OSC2)

In  the  EC  Oscillator  mode,    the  oscillator  frequency

divided by 4 is available on the OSC2 pin. This signal

may be used for test purposes or to synchronize other         2.5        HS/PLL

logic. Figure 2-4 shows the pin connections for the EC

Oscillator mode.                                              A Phase Locked Loop circuit (PLL) is provided as a

                                                              programmable option for users that want to multiply the

FIGURE 2-4:              EXTERNAL CLOCK INPUT                 frequency of the incoming crystal oscillator signal by 4.

                         OPERATION                            For an input clock frequency of 10 MHz, the internal

                         (EC CONFIGURATION)                   clock frequency will be multiplied to 40 MHz. This is

                                                              useful for customers who are concerned with EMI due

                                                              to high-frequency crystals.

    Clock from                  OSC1                          The PLL is one of the modes of the FOSC<2:0> config-

    Ext. System                        PIC18FXX20             uration    bits.     The  oscillator  mode    is   specified   during

                 FOSC/4         OSC2                          device programming.

                                                              The PLL can only be enabled when the oscillator con-

The ECIO Oscillator mode functions like the EC mode,          figuration bits are programmed for HS mode. If they are

except that the OSC2 pin becomes an additional gen-           programmed           for  any   other  mode,       the  PLL    is  not

eral purpose I/O pin. The I/O pin becomes bit 6 of            enabled and the system clock will come directly from

PORTA (RA6). Figure 2-5 shows the pin connections             OSC1. Also, PLL operation cannot be changed                        “on-

for the ECIO Oscillator mode.                                 the-fly”.  To       enable  or  disable  it,  the  controller  must

                                                              either cycle through a Power-on Reset, or switch the

                                                              clock source from the main oscillator to the Timer1

                                                              oscillator and back again. See Section 2.6 “Oscillator

                                                              Switching Feature” for details on oscillator switching.

                                                              A PLL lock timer is used to ensure that the PLL has

                                                              locked before device execution starts. The PLL lock

                                                              timer has a time-out that is called TPLL.

FIGURE 2-6:              PLL BLOCK DIAGRAM

    (from Configuration         HS Osc

     bit Register)

                         PLL Enable

             OSC2                       Phase

                                        Comparator

                                        FIN                   Loop

                         Crystal        FOUT                  Filter                    VCO

                         Osc

                                                                                                                      SYSCLK

             OSC1                                             Divide by 4                                       MUX

 2003-2013 Microchip Technology Inc.                                                                       DS39609C-page 23
PIC18F6520/8520/6620/8620/6720/8720

2.6       Oscillator Switching Feature                                  execution mode. Figure 2-7 shows a block diagram of

                                                                        the system clock sources. The clock switching feature

The PIC18FXX20 devices include a feature that allows                    is enabled by programming the Oscillator Switching

the system clock source to be switched from the main                    Enable (OSCSEN) bit in Configuration Register 1H to a

oscillator to an alternate low-frequency clock source.                  ‘0’. Clock switching is disabled in an erased device.

For  the  PIC18FXX20       devices,     this     alternate   clock      See Section 12.0 “Timer1 Module” for further details

source    is  the  Timer1  oscillator.  If    a  low-frequency          of the Timer1 oscillator. See Section 23.0 “Special

crystal (32 kHz, for example) has been attached to the                  Features         of  the  CPU”   for  Configuration  register

Timer1 oscillator pins and the Timer1 oscillator has                    details.

been enabled, the device can switch to a low-power

FIGURE 2-7:                DEVICE CLOCK SOURCES

                                              PIC18FXX20

                                            Main Oscillator

                   OSC2

                                                                        4 x PLL          TOSC/4

                                                             Sleep

                   OSC1                                                 TOSC                      MUX         TSCLK

                                            Timer1 Oscillator           TT1P

                   T1OSO

                                                            T1OSCEN                               Clock

                                                            Enable                                Source

                   T1OSI                                    Oscillator

                                                                    Clock Source Option

                                                                    for other Modules

DS39609C-page 24                                                                                   2003-2013 Microchip Technology Inc.
                    PIC18F6520/8520/6620/8620/6720/8720

2.6.1     SYSTEM CLOCK SWITCH BIT                                            Note:  The  Timer1  oscillator    must      be   enabled

The system clock source switching is performed under                                and operating to switch the system clock

software  control.  The  system   clock  switch  bit,  SCS                          source. The Timer1 oscillator is enabled

(OSCCON<0>), controls the clock switching. When the                                 by setting the T1OSCEN bit in the Timer1

SCS bit is ‘0’, the system clock source comes from the                              Control   register    (T1CON).   If  the  Timer1

main oscillator that is selected by the FOSC configura-                             oscillator is not enabled, then any write to

tion bits in Configuration Register 1H. When the SCS                                the SCS bit will be ignored (SCS bit forced

bit is set, the system clock source will come from the                              cleared)  and         the  main  oscillator    will

Timer1 oscillator. The SCS bit is cleared on all forms of                           continue to be the system clock source.

Reset.

REGISTER 2-1:            OSCCON REGISTER

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

                         —                 —               —                 —      —            —             —              SCS

                         bit 7                                                                                                   bit 0

          bit       7-1  Unimplemented: Read as ‘0’

          bit       0    SCS: System Clock Switch bit

                         When OSCSEN Configuration bit = 0 and T1OSCEN bit is set:

                         1 = Switch to Timer1 oscillator/clock pin

                         0 = Use primary oscillator/clock input pin

                         When OSCSEN and T1OSCEN are in other states:

                         Bit is forced clear.

                         Legend:

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

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

 2003-2013 Microchip Technology Inc.                                                                          DS39609C-page 25
PIC18F6520/8520/6620/8620/6720/8720

2.6.2     OSCILLATOR TRANSITIONS                                                  A timing diagram indicating the transition from the main

PIC18FXX20        devices         contain  circuitry     to  prevent              oscillator to the Timer1 oscillator is shown in Figure 2-8.

“glitches” when switching between oscillator sources.                             The Timer1 oscillator is assumed to be running all the

Essentially, the circuitry waits for eight rising edges of                        time. After the SCS bit is set, the processor is frozen at

the clock source that the processor is switching to. This                         the next occurring Q1 cycle. After eight synchronization

ensures that the new clock source is stable and that its                          cycles are counted from the Timer1 oscillator, operation

pulse width will not be less than the shortest pulse                              resumes. No additional delays are required after the

width of the two clock sources.                                                   synchronization cycles.

FIGURE 2-8:                   TIMING DIAGRAM FOR TRANSITION FROM OSC1 TO TIMER1 OSCILLATOR

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

                                               TT1P

T1OSI                                   1      2      3      4           5     6  7             8

                                                                   TSCS

OSC1

Internal          TOSC

System

Clock                             TDLY

SCS

(OSCCON<0>)

Program               PC                                           PC    +  2                                                           PC      +  4

Counter

Note 1: Delay on internal system clock is eight oscillator cycles for synchronization.

The sequence of events that takes place when switch-                              If       the     main   oscillator   is  configured              for  an  external

ing from the Timer1 oscillator to the main oscillator will                        crystal (HS, XT, LP), then the transition will take place

depend on the mode of the main oscillator. In addition                            after an oscillator start-up time (TOST) has occurred. A

to eight clock cycles of the main oscillator, additional                          timing           diagram,         indicating     the  transition          from    the

delays may take place.                                                            Timer1 oscillator to the main oscillator for HS, XT and

                                                                                  LP modes, is shown in Figure 2-9.

FIGURE 2-9:                   TIMING FOR TRANSITION BETWEEN TIMER1 AND OSC1 (HS, XT, LP)

                      Q3          Q4       Q1                                                                 TT1P              Q1  Q2      Q3     Q4   Q1  Q2      Q3

       T1OSI

          OSC1                                                                          1  2           3  4   5     6  7        8

                                                             TOST                                             TSCS

          OSC2

       Internal                                                          TOSC

System Clock

          SCS

(OSCCON<0>)

       Program            PC                                                      PC + 2                                                                    PC + 6

       Counter

Note 1: TOST = 1024 TOSC (drawing not to scale).

DS39609C-page 26                                                                                                     2003-2013 Microchip Technology Inc.
                     PIC18F6520/8520/6620/8620/6720/8720

If the main oscillator is configured for HS-PLL mode, an                      frequency. A timing diagram, indicating the transition

oscillator start-up time (TOST), plus an additional PLL                       from  the      Timer1      oscillator         to  the     main    oscillator    for

time-out (TPLL), will occur. The PLL time-out is typically                    HS-PLL mode, is shown in Figure 2-10.

2 ms and allows the PLL to lock to the main oscillator

FIGURE 2-10:               TIMING FOR TRANSITION BETWEEN TIMER1 AND OSC1 (HS WITH PLL)

                       Q4  Q1                                                                TT1P                 Q1    Q2      Q3  Q4      Q1  Q2  Q3    Q4

            T1OSI

            OSC1

                               TOST               TPLL

            OSC2

                                                                  TOSC                    TSCS

PLL Clock                                                                  1     2     3     4     5     6     7     8

            Input

Internal System

            Clock

            SCS
(OSCCON<0>)

Program Counter        PC                                         PC +  2                                                                       PC + 4

Note 1: TOST = 1024 TOSC (drawing not to scale).

If the main oscillator is configured in the RC, RCIO, EC                      indicating the transition from the Timer1 oscillator to the

or ECIO modes, there is no oscillator start-up time-out.                      main oscillator for RC, RCIO, EC and ECIO modes, is

Operation will resume after eight cycles of the main                          shown in Figure 2-11.

oscillator  have     been  counted.    A      timing    diagram,

FIGURE 2-11:               TIMING FOR TRANSITION                  BETWEEN           TIMER1         AND OSC1 (RC, EC)

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

            T1OSI                                                          TOSC

            OSC1                                                           1     2  3     4     5     6     7     8

            OSC2

Internal System

            Clock

            SCS

(OSCCON<0>)

                                                                                             TSCS

Program                               PC                                               PC + 2                                                   PC +  4

            Counter

Note 1: RC Oscillator  mode assumed.

 2003-2013 Microchip Technology Inc.                                                                                                   DS39609C-page 27
PIC18F6520/8520/6620/8620/6720/8720

2.7      Effects of Sleep Mode on the                              2.8         Power-up Delays

         On-Chip Oscillator                                        Power up delays are controlled by two timers so that no

When the device executes a SLEEP instruction, the on-              external    Reset  circuitry  is  required     for         most

chip clocks and oscillator are turned off and the device           applications. The delays ensure that the device is kept

is held at the beginning of an instruction cycle (Q1               in Reset until the device power supply and clock are

state).  With  the   oscillator  off,  the  OSC1  and  OSC2        stable. For additional information on Reset operation,

signals  will  stop    oscillating.  Since   all  the  transistor  see Section 3.0 “Reset”.

switching currents have been removed, Sleep mode                   The first timer is the Power-up Timer (PWRT), which

achieves the lowest current consumption of the device              optionally provides a fixed delay of 72 ms (nominal) on

(only leakage currents). Enabling any on-chip feature              power-up only (POR and BOR). The second timer is

that will operate during Sleep will increase the current           the Oscillator Start-up Timer (OST), intended to keep

consumed       during  Sleep.    The   user  can  wake  from       the chip in Reset until the crystal oscillator is stable.

Sleep through external Reset, Watchdog Timer Reset                 With the PLL enabled (HS/PLL Oscillator mode), the

or through an interrupt.                                           time-out sequence following a Power-on Reset is differ-

                                                                   ent from other oscillator modes. The time-out sequence

                                                                   is as follows: First, the PWRT time-out is invoked after

                                                                   a POR time delay has expired. Then, the Oscillator

                                                                   Start-up Timer (OST) is invoked. However, this is still

                                                                   not a sufficient amount of time to allow the PLL to lock

                                                                   at high frequencies. The PWRT timer is used to provide

                                                                   an additional fixed 2 ms (nominal) time-out to allow the

                                                                   PLL ample time to lock to the incoming clock frequency.

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

         OSC Mode                                 OSC1 Pin                                   OSC2 Pin

RC                               Floating, external resistor should pull high                At logic low

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

ECIO                                              Floating                            Configured as PORTA, bit 6

EC                                                Floating                                   At logic low

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

                                                  voltage level                              voltage level

Note:          See Table 3-1 in Section 3.0 “Reset” for time-outs due to Sleep and MCLR Reset.

DS39609C-page 28                                                                       2003-2013 Microchip Technology Inc.
                    PIC18F6520/8520/6620/8620/6720/8720

3.0        RESET                                                     Most registers are not affected by a WDT wake-up,

                                                                     since             this  is  viewed  as     the     resumption     of  normal

The  PIC18FXX20          devices    differentiate       between      operation. Status bits from the RCON register, RI, TO,

various kinds of Reset:                                              PD, POR and BOR, are set or cleared differently in

a)   Power-on Reset (POR)                                            different         Reset     situations,    as   indicated     in  Table 3-2.

b)   MCLR Reset during normal operation                              These bits are used in software to determine the nature

c)   MCLR Reset during Sleep                                         of the Reset. See Table 3-3 for a full description of the

                                                                     Reset states of all registers.

d)   Watchdog Timer (WDT) Reset (during normal                       A simplified block diagram of the On-Chip Reset Circuit

     operation)                                                      is shown in Figure 3-1.

e)   Programmable Brown-out Reset (PBOR)

f)   RESET Instruction                                               The Enhanced MCU devices have a MCLR noise filter

g)   Stack Full Reset                                                in  the           MCLR      Reset   path.  The     filter  will   detect  and

                                                                     ignore small pulses. The MCLR pin is not driven low by

h)   Stack Underflow Reset                                           any internal Resets, including the WDT.

Most registers are unaffected by a Reset. Their status

is   unknown    on  POR  and        unchanged      by   all  other

Resets.    The  other    registers  are    forced  to   a    “Reset

state” on Power-on Reset, MCLR, WDT Reset, Brown-

out  Reset,    MCLR      Reset  during     Sleep   and     by  the

RESET instruction.

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

                         RESET Instruction

                 Stack   Stack Full/Underflow Reset

                Pointer

                         External Reset

    MCLR                        WDT

                                Time-out

                        WDT     Reset

                        Module

                                    Sleep

                    VDD Rise Power-on Reset

                        Detect

     VDD

                    Brown-out

                        Reset                                                                                   S

                                    BOREN

               OST/PWRT

                         OST                                                                                                          Chip_Reset

                                10-bit Ripple Counter                                                                R          Q

    OSC1

                         PWRT

               On-chip          10-bit Ripple Counter

             RC OSC(1)

                                                                                                                        Enable PWRT

                                                                                                                        Enable OST(2)

     Note  1:   This is a separate oscillator from the RC oscillator of the CLKI pin.

           2:   See Table 3-1 for time-out situations.

 2003-2013 Microchip Technology Inc.                                                                                   DS39609C-page 29
PIC18F6520/8520/6620/8620/6720/8720

3.1        Power-on Reset (POR)                                       3.3         Oscillator Start-up Timer (OST)

A Power-on Reset pulse is generated on-chip when                      The  Oscillator      Start-up      Timer   (OST)      provides      1024

VDD rise is detected. To take advantage of the POR                    oscillator   cycles  (from     OSC1        input)     delay  after        the

circuitry, tie the MCLR pin through a 1 k to 10 k                   PWRT delay is over (parameter #32). This ensures that

resistor   to    VDD.  This     will    eliminate   external      RC  the  crystal    oscillator     or  resonator          has  started        and

components       usually  needed        to  create   a   Power-on     stabilized.

Reset delay. A minimum rise rate for VDD is specified                 The OST time-out is invoked only for XT, LP and HS

(parameter D004). For a slow rise time, see Figure 3-2.               modes and only on Power-on Reset, or wake-up from

When the device starts normal operation (i.e., exits the              Sleep.

Reset condition), device operating parameters (volt-

age,  frequency,       temperature,     etc.)  must      be  met  to  3.4         PLL Lock Time-out

ensure operation. If these conditions are not met, the

device     must   be   held     in  Reset   until   the  operating    With the PLL enabled, the time-out sequence following

conditions are met.                                                   a  Power-on       Reset    is  different      from    other  oscillator

                                                                      modes. A portion of the Power-up Timer is used to

FIGURE 3-2:                  EXTERNAL POWER-ON                        provide a fixed time-out that is sufficient for the PLL to

                             RESET CIRCUIT (FOR                       lock to the main oscillator frequency. This PLL lock

                             SLOW VDD POWER-UP)                       time-out     (TPLL)  is    typically    2     ms      and  follows        the

                                                                      oscillator start-up time-out.

                  VDD                                                 3.5         Brown-out Reset (BOR)

               D       R                                              A   configuration    bit,   BOREN,         can     disable     (if  clear/

                                    R1                                programmed), or enable (if set) the Brown-out Reset

                                            MCLR                      circuitry. If VDD falls below parameter D005 for greater

                       C                    PIC18FXX20                than parameter #35, the brown-out situation will reset

                                                                      the  chip.   A  Reset     may      not  occur     if  VDD  falls    below

                                                                      parameter D005 for less than parameter #35. The chip

                                                                      will remain in Brown-out Reset until VDD rises above

                                                                      BVDD.   If   the  Power-up         Timer   is  enabled,      it     will  be

                                                                      invoked after VDD rises above BVDD; it then will keep

     Note  1:    External Power-on Reset circuit is required          the chip in Reset for an additional time delay (parame-

                 only if the VDD power-up slope is too slow.          ter #33). If VDD drops below BVDD while the Power-up

                 The diode D helps discharge the capacitor            Timer is running, the chip will go back into a Brown-out

                 quickly when VDD powers down.                        Reset and the Power-up Timer will be initialized. Once

           2:    R < 40 k is recommended to make sure that           VDD    rises    above     BVDD,     the       Power-up       Timer        will

                 the voltage drop across R does not violate           execute the additional time delay.

                 the device’s electrical specification.

           3:    R1 = 1 k to 10 k will limit any current flow-      3.6         Time-out Sequence

                 ing into MCLR from external capacitor C, in

                 the event of MCLR/VPP pin breakdown due to           On   power-up,       the  time-out      sequence      is   as    follows:

                 Electrostatic  Discharge   (ESD)   or   Electrical   First, PWRT time-out is invoked after the POR time

                 Overstress (EOS).                                    delay has expired. Then, OST is activated. The total

                                                                      time-out will vary based on oscillator configuration and

3.2        Power-up Timer (PWRT)                                      the status of the PWRT. For example, in RC mode with

                                                                      the PWRT disabled, there will be no time-out at all.

The Power-up Timer provides a fixed nominal time-out                  Figures 3-3 through 3-7 depict time-out sequences on

(parameter #33) only on power-up from the POR. The                    power-up.

Power-up Timer operates on an internal RC oscillator.                 Since   the   time-outs     occur       from  the     POR    pulse,       the

The chip is kept in Reset as long as the PWRT is active.              time-outs will expire if MCLR is kept low long enough.

The PWRT’s time delay allows VDD to rise to an accept-                Bringing MCLR high will begin execution immediately

able level. A configuration bit is provided to enable/                (Figure 3-5). This is useful for testing purposes, or to

disable the PWRT.                                                     synchronize       more     than    one        PIC18FXX20            device

The power-up time delay will vary from chip-to-chip due               operating in parallel.

to VDD, temperature and process variation. See DC                     Table 3-2 shows the Reset conditions for some Special

parameter #33 for details.                                            Function Registers, while Table 3-3 shows the Reset

                                                                      conditions for all of the registers.

DS39609C-page 30                                                                                 2003-2013 Microchip Technology Inc.
                  PIC18F6520/8520/6620/8620/6720/8720

TABLE 3-1:         TIME-OUT IN VARIOUS SITUATIONS

      Oscillator                              Power-up(2)                                                  Wake-up from

Configuration                                                                 Brown-out                         Sleep or

                                PWRTE = 0                  PWRTE = 1                                       Oscillator Switch

HS with PLL enabled(1)         72 ms + 1024 TOSC           1024 TOSC       72 ms(2) + 1024 TOSC            1024 TOSC + 2 ms

                                       + 2ms               + 2 ms               + 2 ms

      HS, XT, LP               72 ms + 1024 TOSC           1024 TOSC       72 ms(2) + 1024 TOSC               1024 TOSC

           EC                          72 ms               1.5 s               72 ms(2)                        1.5 s(3)

      External RC                      72 ms               —                    72 ms(2)                           —

Note  1:   2 ms is the nominal time required for the 4xPLL to lock.

      2:   72 ms is the nominal power-up timer delay, if implemented.

      3:   1.5 s is the recovery time from Sleep. There is no recovery time from oscillator switch.

REGISTER 3-1:         RCON REGISTER BITS AND POSITIONS

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

                        IPEN           —          —                RI       TO            PD               POR           BOR

                        bit 7                                                                                              bit 0

                        Note 1:        Refer to Section 4.14 “RCON Register” for bit definitions.

TABLE 3-2:         STATUS BITS, THEIR SIGNIFICANCE AND THE INITIALIZATION CONDITION FOR

                   RCON REGISTER

           Condition                   Program    RCON             RI   TO  PD     POR       BOR       STKFUL      STKUNF

                                       Counter    Register

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

MCLR Reset during normal               0000h      0--u     uuuu      u  u   u      u          u            u               u

operation

Software Reset during normal           0000h      0--0     uuuu      0  u   u      u          u            u               u

operation

Stack Full Reset during normal         0000h      0--u     uu11      u  u   u      u          u            u               1

operation

Stack Underflow Reset during           0000h      0--u     uu11      u  u   u      u          u            1               u

normal operation

MCLR Reset during Sleep                0000h      0--u     10uu      u  1   0      u          u            u               u

WDT Reset                              0000h      0--u     01uu      1  0   1      u          u            u               u

WDT Wake-up                            PC + 2     u--u     00uu      u  0   0      u          u            u               u

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

Interrupt wake-up from Sleep           PC + 2(1)  u--u     00uu      u  1   0      u          u            u               u

Legend:    u = unchanged, x = unknown, – = unimplemented bit, read as ‘0’

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 (0x000008h or 0x000018h).

 2003-2013 Microchip Technology Inc.                                                                      DS39609C-page 31
PIC18F6520/8520/6620/8620/6720/8720

TABLE 3-3:        INITIALIZATION CONDITIONS FOR ALL REGISTERS

                                                                  MCLR Resets

Register          Applicable Devices           Power-on Reset,    WDT Reset                        Wake-up via WDT

                                               Brown-out Reset    RESET Instruction                or Interrupt

                                                                  Stack Resets

TOSU        PIC18F6X20      PIC18F8X20         ---0  0000         ---0               0000          ---0        uuuu(3)

TOSH        PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu(3)

TOSL        PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu(3)

STKPTR      PIC18F6X20      PIC18F8X20         00-0  0000         uu-0               0000          uu-u        uuuu(3)

PCLATU      PIC18F6X20      PIC18F8X20         ---0  0000         ---0               0000          ---u        uuuu

PCLATH      PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

PCL         PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          PC + 2(2)

TBLPTRU     PIC18F6X20      PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

TBLPTRH     PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TBLPTRL     PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TABLAT      PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

PRODH       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

PRODL       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

INTCON      PIC18F6X20      PIC18F8X20         0000  000x         0000               000u          uuuu        uuuu(1)

INTCON2     PIC18F6X20      PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu(1)

INTCON3     PIC18F6X20      PIC18F8X20         1100  0000         1100               0000          uuuu        uuuu(1)

INDF0       PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

POSTINC0    PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

POSTDEC0    PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

PREINC0     PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

PLUSW0      PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

FSR0H       PIC18F6X20      PIC18F8X20         ----  xxxx         ----               uuuu          ----        uuuu

FSR0L       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

WREG        PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

INDF1       PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

POSTINC1    PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

POSTDEC1    PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

PREINC1     PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

PLUSW1      PIC18F6X20      PIC18F8X20         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 3-2 for Reset value for specific condition.

       5:  Bit 6 of PORTA, LATA and TRISA are enabled in ECIO and RCIO Oscillator modes only. In all other

           oscillator modes, they are disabled and read ‘0’.

       6:  Bit 6 of PORTA, LATA and TRISA are not available on all devices. When unimplemented, they are read ‘0’.

DS39609C-page 32                                                                      2003-2013 Microchip Technology Inc.
            PIC18F6520/8520/6620/8620/6720/8720

TABLE 3-3:  INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                  MCLR Resets

Register    Applicable Devices                 Power-on Reset,    WDT Reset                        Wake-up via WDT

                                               Brown-out Reset    RESET Instruction                or Interrupt

                                                                  Stack Resets

FSR1H       PIC18F6X20      PIC18F8X20         ----  xxxx         ----               uuuu          ----        uuuu

FSR1L       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

BSR         PIC18F6X20      PIC18F8X20         ----  0000         ----               0000          ----        uuuu

INDF2       PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

POSTINC2    PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

POSTDEC2    PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

PREINC2     PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

PLUSW2      PIC18F6X20      PIC18F8X20         N/A                N/A                              N/A

FSR2H       PIC18F6X20      PIC18F8X20         ----  xxxx         ----               uuuu          ----        uuuu

FSR2L       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

STATUS      PIC18F6X20      PIC18F8X20         ---x  xxxx         ---u               uuuu          ---u        uuuu

TMR0H       PIC18F6X20      PIC18F8X20         0000  0000         uuuu               uuuu          uuuu        uuuu

TMR0L       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

T0CON       PIC18F6X20      PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

OSCCON      PIC18F6X20      PIC18F8X20         ----  ---0         ----               ---0          ----        ---u

LVDCON      PIC18F6X20      PIC18F8X20         --00  0101         --00               0101          --uu        uuuu

WDTCON      PIC18F6X20      PIC18F8X20         ----  ---0         ----               ---0          ----        ---u

RCON(4)     PIC18F6X20      PIC18F8X20         0--q  11qq         0--q               qquu          u--u        qquu

TMR1H       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

TMR1L       PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

T1CON       PIC18F6X20      PIC18F8X20         0-00  0000         u-uu               uuuu          u-uu        uuuu

TMR2        PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

PR2         PIC18F6X20      PIC18F8X20         1111  1111         1111               1111          1111        1111

T2CON       PIC18F6X20      PIC18F8X20         -000  0000         -000               0000          -uuu        uuuu

SSPBUF      PIC18F6X20      PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

SSPADD      PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

SSPSTAT     PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

SSPCON1     PIC18F6X20      PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

SSPCON2     PIC18F6X20      PIC18F8X20         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 3-2 for Reset value for specific condition.

       5:  Bit 6 of PORTA, LATA and TRISA are enabled in ECIO and RCIO Oscillator modes only. In all other

           oscillator modes, they are disabled and read ‘0’.

       6:  Bit 6 of PORTA, LATA and TRISA are not available on all devices. When unimplemented, they are read ‘0’.

 2003-2013 Microchip Technology Inc.                                                              DS39609C-page 33
PIC18F6520/8520/6620/8620/6720/8720

TABLE 3-3:        INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                 MCLR Resets

Register          Applicable Devices          Power-on Reset,    WDT Reset                        Wake-up via WDT

                                              Brown-out Reset    RESET Instruction                or Interrupt

                                                                 Stack Resets

ADRESH      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

ADRESL      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

ADCON0      PIC18F6X20     PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

ADCON1      PIC18F6X20     PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

ADCON2      PIC18F6X20     PIC18F8X20         0---  -000         0---               -000          u---        -uuu

CCPR1H      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCPR1L      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCP1CON     PIC18F6X20     PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

CCPR2H      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCPR2L      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCP2CON     PIC18F6X20     PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

CCPR3H      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCPR3L      PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCP3CON     PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

CVRCON      PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

CMCON       PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TMR3H       PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

TMR3L       PIC18F6X20     PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

T3CON       PIC18F6X20     PIC18F8X20         0000  0000         uuuu               uuuu          uuuu        uuuu

PSPCON      PIC18F6X20     PIC18F8X20         0000  ----         0000               ----          uuuu        ----

SPBRG1      PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

RCREG1      PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TXREG1      PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TXSTA1      PIC18F6X20     PIC18F8X20         0000  -010         0000               -010          uuuu        -uuu

RCSTA1      PIC18F6X20     PIC18F8X20         0000  000x         0000               000x          uuuu        uuuu

EEADRH      PIC18F6X20     PIC18F8X20         ----  --00         ----               --00          ----        --uu

EEADR       PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

EEDATA      PIC18F6X20     PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

EECON2      PIC18F6X20     PIC18F8X20         ----  ----         ----               ----          ----        ----

EECON1      PIC18F6X20     PIC18F8X20         xx-0  x000         uu-0               u000          uu-0        u000

Legend:   u = unchanged, x = unknown, - = unimplemented bit, read as ‘0’, q = value depends on condition.

          Shaded cells indicate conditions do not apply for the designated device.

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

      2:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the PC is loaded with the

          interrupt vector (0008h or 0018h).

      3:  When the wake-up is due to an interrupt and the GIEL or GIEH bit is set, the TOSU, TOSH and TOSL are

          updated with the current value of the PC. The STKPTR is modified to point to the next location in the

          hardware stack.

      4:  See Table 3-2 for Reset value for specific condition.

      5:  Bit 6 of PORTA, LATA and TRISA are enabled in ECIO and RCIO Oscillator modes only. In all other

          oscillator modes, they are disabled and read ‘0’.

      6:  Bit 6 of PORTA, LATA and TRISA are not available on all devices. When unimplemented, they are read ‘0’.

DS39609C-page 34                                                                     2003-2013 Microchip Technology Inc.
            PIC18F6520/8520/6620/8620/6720/8720

TABLE 3-3:  INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                   MCLR Resets

Register    Applicable Devices                  Power-on Reset,    WDT Reset                        Wake-up via WDT

                                                Brown-out Reset    RESET Instruction                or Interrupt

                                                                   Stack Resets

IPR3        PIC18F6X20       PIC18F8X20         --11  1111         --11               1111          --uu        uuuu

PIR3        PIC18F6X20       PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

PIE3        PIC18F6X20       PIC18F8X20         --00  0000         --00               0000          --uu        uuuu

IPR2        PIC18F6X20       PIC18F8X20         -1-1  1111         -1-1               1111          -u-u        uuuu

PIR2        PIC18F6X20       PIC18F8X20         -0-0  0000         -0-0               0000          -u-u        uuuu(1)

PIE2        PIC18F6X20       PIC18F8X20         -0-0  0000         -0-0               0000          -u-u        uuuu

IPR1        PIC18F6X20       PIC18F8X20         0111  1111         0111               1111          uuuu        uuuu

PIR1        PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu(1)

PIE1        PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

MEMCON      PIC18F6X20       PIC18F8X20         0-00  --00         0-00               --00          u-uu        --uu

TRISJ       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISH       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISG       PIC18F6X20       PIC18F8X20         ---1  1111         ---1               1111          ---u        uuuu

TRISF       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISE       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISD       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISC       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISB       PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

TRISA(5,6)  PIC18F6X20       PIC18F8X20         -111  1111(5)      -111               1111(5)       -uuu        uuuu(5)

LATJ        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATH        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATG        PIC18F6X20       PIC18F8X20         ---x  xxxx         ---u               uuuu          ---u        uuuu

LATF        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATE        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATD        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATC        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATB        PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

LATA(5,6)   PIC18F6X20       PIC18F8X20         -xxx  xxxx(5)      -uuu               uuuu(5)       -uuu        uuuu(5)

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 3-2 for Reset value for specific condition.

       5:   Bit 6 of PORTA, LATA and TRISA are enabled in ECIO and RCIO Oscillator modes only. In all other

            oscillator modes, they are disabled and read ‘0’.

       6:   Bit 6 of PORTA, LATA and TRISA are not available on all devices. When unimplemented, they are read ‘0’.

 2003-2013 Microchip Technology Inc.                                                               DS39609C-page 35
PIC18F6520/8520/6620/8620/6720/8720

TABLE 3-3:        INITIALIZATION CONDITIONS FOR ALL REGISTERS (CONTINUED)

                                                                   MCLR Resets

Register          Applicable Devices            Power-on Reset,    WDT Reset                        Wake-up via WDT

                                                Brown-out Reset    RESET Instruction                or Interrupt

                                                                   Stack Resets

PORTJ       PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

PORTH       PIC18F6X20       PIC18F8X20         0000  xxxx         0000               uuuu          uuuu        uuuu

PORTG       PIC18F6X20       PIC18F8X20         ---x  xxxx         uuuu               uuuu          ---u        uuuu

PORTF       PIC18F6X20       PIC18F8X20         x000  0000         u000               0000          u000        0000

PORTE       PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

PORTD       PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

PORTC       PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

PORTB       PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

PORTA(5,6)  PIC18F6X20       PIC18F8X20         -x0x  0000(5)      -u0u               0000(5)       -uuu        uuuu(5)

TMR4        PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

PR4         PIC18F6X20       PIC18F8X20         1111  1111         1111               1111          uuuu        uuuu

T4CON       PIC18F6X20       PIC18F8X20         -000  0000         -000               0000          -uuu        uuuu

CCPR4H      PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCPR4L      PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCP4CON     PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

CCPR5H      PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCPR5L      PIC18F6X20       PIC18F8X20         xxxx  xxxx         uuuu               uuuu          uuuu        uuuu

CCP5CON     PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

SPBRG2      PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

RCREG2      PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TXREG2      PIC18F6X20       PIC18F8X20         0000  0000         0000               0000          uuuu        uuuu

TXSTA2      PIC18F6X20       PIC18F8X20         0000  -010         0000               -010          uuuu        -uuu

RCSTA2      PIC18F6X20       PIC18F8X20         0000  000x         0000               000x          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 3-2 for Reset value for specific condition.

      5:    Bit 6 of PORTA, LATA and TRISA are enabled in ECIO and RCIO Oscillator modes only. In all other

            oscillator modes, they are disabled and read ‘0’.

      6:    Bit 6 of PORTA, LATA and TRISA are not available on all devices. When unimplemented, they are read ‘0’.

DS39609C-page 36                                                                       2003-2013 Microchip Technology Inc.
             PIC18F6520/8520/6620/8620/6720/8720

FIGURE 3-3:        TIME-OUT            SEQUENCE  ON POWER-UP (MCLR    TIED  TO  VDD  VIA  1  k  RESISTOR)

             VDD

             MCLR

INTERNAL POR

                                                 TPWRT

PWRT TIME-OUT                                                  TOST

OST TIME-OUT

INTERNAL RESET

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

             VDD

             MCLR

INTERNAL POR

                                                        TPWRT

PWRT TIME-OUT                                                         TOST

OST TIME-OUT

INTERNAL RESET

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

             VDD

             MCLR

INTERNAL POR

                                                        TPWRT

PWRT TIME-OUT                                                         TOST

OST TIME-OUT

INTERNAL RESET

 2003-2013 Microchip Technology Inc.                                                        DS39609C-page 37
PIC18F6520/8520/6620/8620/6720/8720

FIGURE 3-6:            SLOW     RISE  TIME  (MCLR TIED        TO  VDD  VIA   1 kRESISTOR)

                                                                       5V

                       VDD                  0V

                  MCLR

INTERNAL POR

                                                    TPWRT

PWRT TIME-OUT

                                                                             TOST

OST TIME-OUT

INTERNAL RESET

FIGURE 3-7:            TIME-OUT SEQUENCE ON POR W/PLL ENABLED

                       (MCLR TIED TO VDD VIA 1 kRESISTOR)

                  VDD

             MCLR

IINTERNAL POR

                                                       TPWRT

PWRT TIME-OUT                                                          TOST

OST TIME-OUT                                                                 TPLL

PLL TIME-OUT

INTERNAL RESET

Note:                  TOST  =  1024 clock cycles.

                       TPLL    2 ms max. First three  stages of  the  PWRT  timer.

DS39609C-page 38                                                                      2003-2013 Microchip Technology Inc.
                   PIC18F6520/8520/6620/8620/6720/8720

4.0      MEMORY ORGANIZATION                                         4.1.1         PIC18F8X20 PROGRAM MEMORY

There    are   three     memory    blocks       in  PIC18FXX20                     MODES

devices. They are:                                                   PIC18F8X20       devices   differ     significantly  from     their

•  Program Memory                                                    PIC18    predecessors      in  their  utilization    of    program

                                                                     memory. In addition to available on-chip Flash program

•  Data RAM                                                          memory,   these  controllers       can  also   address     up  to

•  Data EEPROM                                                       2 Mbytes  of     external  program      memory       through   the

Data   and     program   memory    use     separate     busses,      External  Memory     Interface.    There  are        four  distinct

which allows for concurrent access of these blocks.                  operating modes available to the controllers:

Additional     detailed  information       for  Flash  program       •  Microprocessor (MP)

memory and data EEPROM is provided in Section 5.0                    •  Microprocessor with Boot Block (MPBB)

“Flash   Program      Memory”      and     Section 7.0        “Data  •  Extended Microcontroller (EMC)

EEPROM Memory”, respectively.                                        •  Microcontroller (MC)

In addition to on-chip Flash, the PIC18F8X20 devices                 The Program Memory mode is determined by setting

are also capable of accessing external program mem-                  the two Least Significant bits of the CONFIG3L config-

ory through an external memory bus. Depending on the                 uration   byte,  as  shown     in  Register 4-1.     (See     also

selected operating mode (discussed in Section 4.1.1                  Section 23.1     “Configuration         Bits”  for       additional

“PIC18F8X20 Program Memory Modes”), the con-                         details on the device configuration bits.)

trollers may access either internal or external program

memory exclusively, or both internal and external mem-               The Program Memory modes operate as follows:

ory in selected blocks. Additional information on the                •  The Microprocessor Mode permits access only

External Memory Interface is provided in Section 6.0                    to external program memory; the contents of the

“External Memory Interface”.                                            on-chip Flash memory are ignored. The 21-bit

                                                                        program counter permits access to a 2-Mbyte

4.1      Program Memory Organization                                    linear program memory space.

A 21-bit program counter is capable of addressing the                •  The Microprocessor with Boot Block Mode

2-Mbyte program memory space. Accessing a location                      accesses on-chip Flash memory from addresses

between the physically implemented memory and the                       000000h to 0007FFh for PIC18F8520 devices

2-Mbyte address will cause a read of all ‘0’s (a NOP                    and from 000000h to 0001FFh for PIC18F8620

instruction).                                                           and PIC18F8720 devices. Above this, external

                                                                        program memory is accessed all the way up to

Devices in the PIC18FXX20 family can be divided into                    the 2-Mbyte limit. Program execution automati-

three groups, based on program memory size. The                         cally switches between the two memories, as

PIC18FX520 devices (PIC18F6520 and PIC18F8520)                          required.

have 32 Kbytes of on-chip Flash memory, equivalent to                •  The Microcontroller Mode accesses only on-

16,384   single-word        instructions.  The      PIC18FX620          chip Flash memory. Attempts to read above the

devices     (PIC18F6620     and       PIC18F8620)             have      physical limit of the on-chip Flash (7FFFh for the

64 Kbytes      of  on-chip  Flash  memory,          equivalent  to      PIC18F8520, 0FFFFh for the PIC18F8620,

32,768      single-word     instructions.           Finally,    the     1FFFFh for the PIC18F8720) causes a read of all

PIC18FX720 devices (PIC18F6720 and PIC18F8720)                          ‘0’s (a NOP instruction). The Microcontroller mode

have 128 Kbytes of on-chip Flash memory, equivalent                     is also the only operating mode available to

to 65,536 single-word instructions.                                     PIC18F6X20 devices.

For all devices, the Reset vector address is at 0000h                •  The Extended Microcontroller Mode allows

and the interrupt vector addresses are at 0008h and                     access to both internal and external program

0018h.                                                                  memories as a single block. The device can

The program memory maps for all of the PIC18FXX20                       access its entire on-chip Flash memory; above

devices are compared in Figure 4-1.                                     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 4-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 4-1.

 2003-2013 Microchip Technology Inc.                                                                          DS39609C-page 39
PIC18F6520/8520/6620/8620/6720/8720

FIGURE 4-1:            INTERNAL PROGRAM                  MEMORY   MAP AND STACK FOR             PIC18FXX20 DEVICES

                                     PC<20:0>

                       CALL,RCALL,RETURN                              21

                       RETFIE,RETLW

                                     Stack Level 1

                                          
                                          
                                          

                                     Stack Level 31

                       000000h                           000000h                       000000h  Reset Vector

                       000008h                           000008h                       000008h  High Priority

                                                                                                Interrupt Vector

                       000018h                           000018h                       000018h       Low Priority

                                                                                                Interrupt Vector

On-Chip Flash

Program Memory                       On-Chip Flash

                       007FFFh       Program Memory

                       008000h

                                                                      On-Chip Flash                                User Memory Space

                                                         00FFFFh      Program Memory

                                                         010000h

                                                                                       01FFFFh

                                                                                       020000h

Read ‘0’                             Read ‘0’                             Read ‘0’

                       1FFFFFh                           1FFFFFh                       1FFFFFh

                       200000h                           200000h                       200000h

PIC18FX520                           PIC18FX620                           PIC18FX720

(32 Kbyte)                           (64 Kbyte)                           (128 Kbyte)

Note:            Size  of memory  regions not to scale.

TABLE 4-1:             MEMORY ACCESS FOR PIC18F8X20 PROGRAM MEMORY MODES

                                  Internal Program Memory                              External Program Memory

Operating Mode         Execution     Table Read                           Execution    Table Read

                       From               From           Table Write To   From                  From  Table Write To

Microprocessor         No Access     No Access             No Access      Yes                   Yes                Yes

Microprocessor         Yes                Yes              Yes            Yes                   Yes                Yes

with Boot Block

Microcontroller        Yes                Yes              Yes            No Access    No Access                   No Access

Extended               Yes                Yes              Yes            Yes                   Yes                Yes

Microcontroller

DS39609C-page 40                                                                        2003-2013 Microchip Technology Inc.
                                     PIC18F6520/8520/6620/8620/6720/8720

REGISTER 4-1:                               CONFIG3L CONFIGURATION BYTE

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

                                             WAIT              —              —                 —         —           —           PM1                   PM0

                                            bit 7                                                                                                         bit 0

                         bit 7              WAIT: External Bus Data Wait Enable bit

                                            1 = Wait selections unavailable, device will not wait

                                            0 = Wait programmed by WAIT1 and WAIT0 bits of MEMCOM register (MEMCOM<5:4>)

                         bit 6-2            Unimplemented: Read as ‘0’

                         bit 1-0            PM1:PM0: Processor Data Memory Mode Select bits

                                            11 = Microcontroller mode

                                            10 = Microprocessor mode

                                            01 = Microcontroller with Boot Block mode

                                            00 = Extended Microcontroller mode

                                            Legend:

                                            R = Readable bit                  P = Programmable bit        U = Unimplemented bit, read as ‘0’

                                            - n = Value after erase           ‘1’ = Bit is set            ‘0’ = Bit is cleared    x = Bit is unknown

FIGURE 4-2:                                 MEMORY       MAPS FOR PIC18F8X20 PROGRAM MEMORY MODES

                         Microprocessor                          Microprocessor                      Microcontroller              Extended

                                  Mode (MP)                      with Boot Block                     Mode (MC)                    Microcontroller

                                                                  Mode (MPBB)                                                     Mode (EMC)

                         000000h             On-Chip     000000h                        000000h                       000000h

                                             Program                          On-Chip                     On-Chip                             On-Chip

                                             Memory                           Program                     Program                             Program

                                             (No                               Memory                     Memory                              Memory

                                             access)     Boot                                                         Boundary

Program Space Execution                                                                 Boundary

                                                         Boot+1                         Boundary+1                    Boundary+1

                                  External

                                  Program                                                                    Reads

                                  Memory                            External                                    ‘0’s              External

                                                                    Program                                                       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

Boundary Values for Microprocessor with Boot Block, Microcontroller and Extended Microcontroller modes(1)

                         Device                    Boot              Boot+1                     Boundary              Boundary+1  Available

                                                                                                                                  Memory Mode(s)

                         PIC18F6520          0007FFh                 000800h                    007FFFh               008000h            MC

                         PIC18F6620          0001FFh                 000200h                    00FFFFh               010000h            MC

                         PIC18F6720          0001FFh                 000200h                    01FFFFh               020000h            MC

                         PIC18F8520          0007FFh                 000800h                    007FFFh               008000h     MP, MPBB, MC, EMC

                         PIC18F8620          0001FFh                 000200h                    00FFFFh               010000h     MP, MPBB, MC, EMC

                         PIC18F8720          0001FFh                 000200h                    01FFFFh               020000h     MP, MPBB, MC, EMC

Note 1:                  PIC18F6X20 devices are included here for completeness, to show the boundaries of their Boot Blocks and program memory spaces.

 2003-2013 Microchip Technology Inc.                                                                                             DS39609C-page 41
PIC18F6520/8520/6620/8620/6720/8720

4.2       Return Address Stack                              4.2.2      RETURN STACK POINTER

The return address stack allows any combination of up                  (STKPTR)

to 31 program calls and interrupts to occur. The PC         The STKPTR register contains the stack pointer value,

(Program Counter) is pushed onto the stack when a           the STKFUL (Stack Full) status bit and the STKUNF

CALL or RCALL instruction is executed, or an interrupt      (Stack Underflow) status bits. Register 4-2 shows the

is Acknowledged. The PC value is pulled off the stack       STKPTR register. The value of the stack pointer can be

on a RETURN, RETLW or a RETFIE instruction. PCLATU          0 through 31. The stack pointer increments when val-

and PCLATH are not affected by any of the RETURN or         ues are pushed onto the stack and decrements when

CALL instructions.                                          values are popped off the stack. At Reset, the stack

The stack operates as a 31-word by 21-bit RAM and a         pointer value will be ‘0’. The user may read and write

5-bit stack pointer, with the stack pointer initialized to  the stack pointer value. This feature can be used by a

00000b after all Resets. There is no RAM associated         Real-Time     Operating      System  for    return    stack

with stack pointer 00000b. This is only a Reset value.      maintenance.

During a CALL type instruction, causing a push onto the     After the PC is pushed onto the stack 31 times (without

stack, the stack pointer is first incremented and the       popping any values off the stack), the STKFUL bit is

RAM location pointed to by the stack pointer is written     set. The STKFUL bit can only be cleared in software or

with the contents of the PC. During a RETURN type           by a POR.

instruction, causing a pop from the stack, the contents     The action that takes place when the stack becomes

of the RAM location pointed to by the STKPTR are            full, depends on the state of the STVREN (Stack Over-

transferred to the PC and then the stack pointer is         flow   Reset  Enable)        configuration  bit.  Refer     to

decremented.                                                Section 24.0  “Instruction     Set   Summary”         for   a

The stack space is not part of either program or data       description of the device configuration bits. If STVREN

space. The stack pointer is readable and writable and       is set (default), the 31st push will push the (PC + 2)

the address on the top of the stack is readable and writ-   value onto the stack, set the STKFUL bit and reset the

able through SFR registers. Data can also be pushed         device. The STKFUL bit will remain set and the stack

to, or popped from the stack using the top-of-stack         pointer will be set to ‘0’.

SFRs. Status bits indicate if the stack pointer is at, or   If STVREN is cleared, the STKFUL bit will be set on the

beyond the 31 levels provided.                              31st push and the stack pointer will increment to 31.

4.2.1        TOP-OF-STACK ACCESS                            Any additional pushes will not overwrite the 31st push

                                                            and STKPTR will remain at 31.

The top of the stack is readable and writable. Three        When the stack has been popped enough times to

register locations, TOSU, TOSH and TOSL, hold the           unload the stack, the next pop will return a value of zero

contents  of    the  stack  location  pointed  to  by  the  to the PC and sets the STKUNF bit, while the stack

STKPTR register. This allows users to implement a           pointer remains at ‘0’. The STKUNF bit will remain set

software stack if necessary. After a CALL, RCALL or         until cleared in software or a POR occurs.

interrupt, the software can read the pushed value by

reading the TOSU, TOSH and TOSL registers. These            Note:      Returning a value of zero to the PC on an

values can be placed on a user defined software stack.                 underflow has the effect of vectoring the

At return time, the software can replace the TOSU,                     program to the Reset vector, where the

TOSH and TOSL and do a return.                                         stack  conditions   can   be     verified  and

The user must disable the global interrupt enable bits                 appropriate actions can be taken.

during    this  time  to    prevent   inadvertent  stack

operations.

DS39609C-page 42                                                               2003-2013 Microchip Technology Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

REGISTER 4-2:         STKPTR REGISTER

                                 R/C-0     R/C-0             U-0           R/W-0           R/W-0      R/W-0          R/W-0         R/W-0

                              STKFUL(1)    STKUNF(1)         —                 SP4         SP3        SP2            SP1           SP0

                              bit 7                                                                                                  bit  0

             bit 7            STKFUL: Stack Full Flag bit

                              1 = Stack became full or overflowed

                              0 = Stack has not become full or overflowed

             bit 6            STKUNF: Stack Underflow Flag bit

                              1 = Stack underflow occurred

                              0 = Stack underflow did not occur

             bit 5            Unimplemented: Read as ‘0’

             bit 4-0          SP4:SP0: Stack Pointer Location bits

                              Note 1:      Bit 7 and bit 6 can only be cleared      in  user software or by a    POR.

                              Legend:

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

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

FIGURE 4-3:           RETURN               ADDRESS      STACK AND ASSOCIATED REGISTERS

                                                                   Return Address Stack

                                                                                           11111

                                                                                           11110

                                                                                           11101

                      TOSU                 TOSH              TOSL                                     STKPTR<4:0>

                      0x00                 0x1A              0x34                                     00010

                                                                                           00011

                                                             Top-of-Stack  0x001A34        00010

                                                                           0x000D58        00001

                                                                                           00000

4.2.3        PUSH AND POP INSTRUCTIONS                                     4.2.4           STACK FULL/UNDERFLOW RESETS

Since the Top-of-Stack (TOS) is readable and writable,                     These    Resets       are  enabled    by    programming      the

the ability to push values onto the stack and pull values                  STVREN configuration bit. When the STVREN bit is

off  the  stack,    without   disturbing   normal       program            disabled,    a  full  or   underflow  condition  will   set  the

execution, is a desirable option. To push the current PC                   appropriate STKFUL or STKUNF bit, but not cause a

value  onto    the    stack,  a      PUSH  instruction  can  be            device Reset. When the STVREN bit is enabled, a full

executed. This will increment the stack pointer and load                   or underflow condition will set the appropriate STKFUL

the current PC value onto the stack. TOSU, TOSH and                        or STKUNF bit and then cause a device Reset. The

TOSL can then be modified to place a return address                        STKFUL or STKUNF bits are only cleared by the user

on the stack.                                                              software or a POR Reset.

The ability to pull the TOS value off of the stack and

replace it with the value that was previously pushed

onto the stack, without disturbing normal execution, is

achieved  by   using  the        POP    instruction.    The  POP

instruction discards the current TOS by decrementing

the stack pointer. The previous value pushed onto the

stack then becomes the TOS value.

 2003-2013 Microchip Technology Inc.                                                                                  DS39609C-page 43
PIC18F6520/8520/6620/8620/6720/8720

4.3       Fast Register Stack                                             4.4              PCL, PCLATH and PCLATU

A “fast interrupt return” option is available for interrupts.             The program counter (PC) specifies the address of the

A Fast Register Stack is provided for the Status, WREG                    instruction to fetch for execution. The PC is 21 bits

and BSR registers and is only one in depth. The stack                     wide. The low byte is called the PCL register; this reg-

is  not   readable   or  writable  and     is  loaded    with  the        ister is readable and writable. The high byte is called

current value of the corresponding register when the                      the PCH register. This register contains the PC<15:8>

processor vectors for an interrupt. The values in the                     bits and is not directly readable or writable; updates to

registers are then loaded back into the working regis-                    the   PCH        register      may     be    performed    through       the

ters, if the FAST    RETURN instruction is used to return                 PCLATH register. The upper byte is called PCU. This

from the interrupt.                                                       register contains the PC<20:16> bits and is not directly

A low or high priority interrupt source will push values                  readable or writable; updates to the PCU register may

into the stack registers. If both low and high priority                   be performed through the PCLATU register.

interrupts are enabled, the stack registers cannot be                     The PC addresses bytes in the program memory. To

used reliably for low priority interrupts. If a high priority             prevent the PC from becoming misaligned with word

interrupt occurs while servicing a low priority interrupt,                instructions, the LSB of the PCL is fixed to a value of

the  stack  register     values  stored    by  the   low  priority        ‘0’.  The        PC   increments       by   2  to   address  sequential

interrupt will be overwritten.                                            instructions in the program memory.

If high priority interrupts are not disabled during low                   The          CALL,    RCALL,       GOTO        and     program      branch

priority interrupts, users must save the key registers in                 instructions write to the program counter directly. For

software during a low priority interrupt.                                 these        instructions,     the     contents     of    PCLATH        and

If no interrupts are used, the fast register stack can be                 PCLATU are not transferred to the program counter.

used to restore the Status, WREG and BSR registers at                     The contents of PCLATH and PCLATU will be trans-

the end of a subroutine call. To use the fast register                    ferred       to  the  program      counter     by   an    operation     that

stack for a subroutine call, a FAST CALL instruction                      writes       PCL.     Similarly,    the    upper    two   bytes     of  the

must be executed.                                                         program counter will be transferred to PCLATH and

Example 4-1 shows a source code example that uses                         PCLATU by an operation that reads PCL. This is useful

the fast register stack.                                                  for   computed           offsets  to   the   PC     (see  Section 4.8.1

                                                                          “Computed GOTO”).

EXAMPLE 4-1:              FAST REGISTER STACK                             4.5              Clocking Scheme/Instruction

                          CODE EXAMPLE                                                     Cycle

    CALL  SUB1,  FAST         ;STATUS,     WREG,     BSR

                              ;SAVED   IN      FAST  REGISTER             The clock input (from OSC1) is internally divided by

                              ;STACK                                      four         to  generate   four       non-overlapping       quadrature

                                                                         clocks,          namely   Q1,     Q2,  Q3    and    Q4.   Internally,   the

                                                                         program counter (PC) is incremented every Q1, the

    SUB1                                                                 instruction is fetched from the program memory and

                                                                         latched into the instruction register in Q4. The instruc-

                                                                         tion is decoded and executed during the following Q1

         RETURN  FAST         ;RESTORE     VALUES    SAVED                through Q4. The clocks and instruction execution flow

                              ;IN  FAST    REGISTER       STACK           are shown in Figure 4-4.

FIGURE 4-4:               CLOCK/INSTRUCTION CYCLE

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

                 OSC1

                    Q1

                    Q2                                                                                                              Internal

                    Q3                                                                                                              Phase
                                                                                                                                    Clock

                    Q4

                    PC                 PC                           PC+2                                     PC+4

          OSC2/CLKO

          (RC mode)           Execute INST (PC-2)

                                 Fetch INST (PC)                    Execute INST (PC)

                                                                    Fetch INST (PC+2)               Execute INST (PC+2)

                                                                                                     Fetch INST (PC+4)

DS39609C-page 44                                                                                      2003-2013 Microchip Technology Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

4.6        Instruction Flow/Pipelining                               A fetch cycle begins with the program counter (PC)

                                                                     incrementing in Q1.

An “Instruction Cycle” consists of four Q cycles (Q1,                In the execution cycle, the fetched instruction is latched

Q2, Q3 and Q4). The instruction fetch and execute are                into the “Instruction Register” (IR) in cycle Q1. This

pipelined, such that fetch takes one instruction cycle,              instruction is then decoded and executed during the

while decode and execute takes another instruction                   Q2, Q3 and Q4 cycles. Data memory is read during Q2

cycle. However, due to the pipelining, each instruction              (operand          read)  and  written     during  Q4  (destination

effectively   executes     in  one    cycle.  If  an  instruction    write).

causes the program counter to change (e.g., GOTO),

then two cycles are required to complete the instruction

(Example 4-2).

EXAMPLE 4-2:               INSTRUCTION PIPELINE FLOW

                                      TCY0              TCY1         TCY2         TCY3             TCY4                TCY5

1.   MOVLW    55h                     Fetch 1         Execute 1

2.   MOVWF    PORTB                                     Fetch 2      Execute 2

3.   BRA      SUB_1                                                  Fetch 3      Execute 3

4.   BSF      PORTA,     BIT3  (Forced        NOP)                                Fetch 4        Flush (NOP)

5.   Instruction      @  address      SUB_1                                                     Fetch SUB_1      Execute SUB_1

All instructions are single cycle, except for any program branches. These take two cycles since the fetch instruction is “flushed”

from the pipeline, while the new instruction is being fetched and then executed.

4.7        Instructions in Program Memory                            word boundaries, the data contained in the instruction

                                                                     is       a  word  address.    The  word   address     is  written  to

The program memory is addressed in bytes. Instruc-                   PC<20:1>, which accesses the desired byte address in

tions are stored as two bytes or four bytes in program               program memory. Instruction #2 in Figure 4-5 shows

memory. The Least Significant Byte of an instruction                 how the instruction “GOTO          000006h” is encoded in the

word is always stored in a program memory location                   program memory. Program branch instructions, which

with an even address (LSB = 0). Figure 4-5 shows an                  encode a relative address offset, operate in the same

example of how instruction words are stored in the pro-              manner. The offset value stored in a branch instruction

gram memory. To maintain alignment with instruction                  represents the number of single-word instructions that

boundaries, the PC increments in steps of 2 and the                  the PC will be offset by. Section 24.0 “Instruction Set

LSB  will     always  read     ‘0’  (see  Section 4.4   “PCL,        Summary” provides further details of the instruction

PCLATH and PCLATU”).                                                 set.

The  CALL     and    GOTO   instructions      have  an  absolute

program       memory     address      embedded          into  the

instruction.  Since   instructions    are     always  stored     on

FIGURE 4-5:                INSTRUCTIONS IN PROGRAM                   MEMORY

                                                                                                   Word Address

                                                                     LSB = 1           LSB = 0              

                                      Program Memory                                                    000000h

                                      Byte Locations                                                  000002h

                                                                                                        000004h

                                                                                                        000006h

                      Instruction 1:  MOVLW           055h           0Fh               55h              000008h

                      Instruction 2:  GOTO            000006h        EFh               03h              00000Ah

                                                                     F0h               00h              00000Ch

                      Instruction 3:  MOVFF           123h,   456h   C1h               23h              00000Eh

                                                                     F4h               56h              000010h

                                                                                                        000012h

                                                                                                        000014h

 2003-2013 Microchip Technology Inc.                                                                            DS39609C-page 45
PIC18F6520/8520/6620/8620/6720/8720

4.7.1       TWO-WORD INSTRUCTIONS                                      word of the instruction is executed by itself (first word

The PIC18FXX20 devices have four two-word instruc-                     was skipped), it will execute as a NOP. This action is

tions: MOVFF, CALL, GOTO and LFSR. The second word                     necessary when the two-word instruction is preceded

of these instructions has the 4 MSBs set to ‘1’s and is                by a conditional instruction that changes the PC. A pro-

a special kind of NOP instruction. The lower 12 bits of                gram example that demonstrates this concept is shown

the second word contain data to be used by the instruc-                in  Example 4-3.  Refer  to  Section 24.0  “Instruction

tion. If the first word of the instruction is executed, the            Set Summary” for further details of the instruction set.

data in the second word is accessed. If the second

EXAMPLE 4-3:           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,  execute  2-word     instruction

   1111    0100  0101  0110                                         ;  2nd  operand  holds      address  of  REG2

   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

   1111    0100  0101  0110                                         ;  2nd  operand  becomes        NOP

   0010    0100  0000  0000    ADDWF          REG3                  ;  continue   code

4.8        Look-up Tables                                              4.8.2      TABLE READS/TABLE WRITES

Look-up tables are implemented two ways. These are:                    A better method of storing data in program memory

•  Computed GOTO                                                       allows 2 bytes of data to be stored in each instruction

                                                                       location.

•  Table Reads                                                         Look-up table data may be stored 2 bytes per program

4.8.1       COMPUTED GOTO                                              word by using table reads and writes. The Table Pointer

                                                                       (TBLPTR) specifies the byte address and the Table

A computed GOTO is accomplished by adding an offset                    Latch (TABLAT) contains the data that is read from, or

to the program counter (ADDWF      PCL).                               written to program memory. Data is transferred to/from

A look-up table can be formed with an ADDWF         PCL                program memory, one byte at a time.

instruction and a group of RETLW   0xnn instructions.                  A description of the table read/table write operation is

WREG is loaded with an offset into the table before                    shown in Section 5.0 “Flash Program Memory”.

executing a call to that table. The first instruction of the

called routine is the ADDWF   PCL instruction. The next

instruction executed will be one of the RETLW      0xnn

instructions, that returns the value 0xnn to the calling

function.

The offset value (value in WREG) specifies the number

of bytes that the program counter should advance.

In this method, only one data byte may be stored in

each   instruction  location  and  room   on  the  return

address stack is required.

DS39609C-page 46                                                                          2003-2013 Microchip Technology Inc.
                          PIC18F6520/8520/6620/8620/6720/8720

4.9          Data Memory Organization                                      4.9.1        GENERAL PURPOSE

The data memory is implemented as static RAM. Each                                      REGISTER FILE

register     in  the  data    memory        has   a   12-bit   address,    The register file can be accessed either directly or indi-

allowing up to 4096 bytes of data memory. The data                         rectly. Indirect addressing operates using a File Select

memory       map      is  in  turn    divided    into    16    banks  of   Register and corresponding Indirect File Operand. The

256 bytes each. The lower 4 bits of the Bank Select                        operation    of  indirect  addressing        is  shown      in

Register     (BSR<3:0>)            select    which       bank  will   be   Section 4.12 “Indirect Addressing, INDF and FSR

accessed.        The      upper    4  bits   of  the     BSR   are    not  Registers”.

implemented.                                                               Enhanced MCU devices may have banked memory in

The data memory space contains both Special Func-                          the GPR area. GPRs are not initialized by a Power-on

tion Registers (SFR) and General Purpose Registers                         Reset and are unchanged on all other Resets.

(GPR). The SFRs are used for control and status of the                     Data RAM is available for use as General Purpose

controller       and  peripheral      functions,     while   GPRs     are  Registers by all instructions. The top section of Bank 15

used for data storage and scratch pad operations in the                    (F60h to FFFh) contains SFRs. All other banks of data

user’s application. The SFRs start at the last location of                 memory contain GPR registers, starting with Bank 0.

Bank 15 (0FFFh) and extend downwards. Any remain-

ing space beyond the SFRs in the Bank may be imple-                        4.9.2        SPECIAL FUNCTION REGISTERS

mented as GPRs. GPRs start at the first location of                        The Special Function Registers (SFRs) are registers

Bank      0      and  grow        upwards.       Any     read    of   an   used by the CPU and peripheral modules for controlling

unimplemented location will read as ‘0’s.                                  the desired operation of the device. These registers are

PIC18FX520 devices have 2048 bytes of data RAM,                            implemented as static RAM. A list of these registers is

extending from Bank 0 to Bank 7 (000h through 7FFh).                       given in Table 4-2 and Table 4-3.

PIC18FX620            and        PIC18FX720           devices    have      The SFRs can be classified into two sets: those asso-

3840 bytes of data RAM, extending from Bank 0 to                           ciated with the “core” function and those related to the

Bank 14 (000h through EFFh). The organization of the                       peripheral  functions.    Those  registers   related  to  the

data    memory        space   for     these  devices     is    shown  in   “core” are described in this section, while those related

Figure 4-6 and Figure 4-7.                                                 to   the  operation   of   the   peripheral  features     are

The entire data memory may be accessed directly or                         described in the section of that peripheral feature. The

indirectly. Direct addressing may require the use of the                   SFRs are typically distributed among the peripherals

BSR register. Indirect addressing requires the use of a                    whose functions they control.

File Select Register (FSRn) and a corresponding Indi-                      The  unused      SFR  locations  are  unimplemented       and

rect File Operand (INDFn). Each FSR holds a 12-bit                         read as ‘0’s. The addresses for the SFRs are listed in

address value that can be used to access any location                      Table 4-2.

in the data memory map without banking.

The instruction set and architecture allow operations

across all banks. This may be accomplished by indirect

addressing, or by the use of the MOVFF instruction. The

MOVFF instruction is a two-word/two-cycle instruction

that moves a value from one register to another.

To ensure that commonly used registers (SFRs and

select    GPRs)       can     be   accessed      in   a  single  cycle,

regardless of the current BSR values, an Access Bank

is implemented. A segment of Bank 0 and a segment of

Bank    15   comprise         the  Access        RAM.    Section 4.10

“Access Bank” provides a detailed description of the

Access RAM.

 2003-2013 Microchip Technology Inc.                                                                            DS39609C-page 47
PIC18F6520/8520/6620/8620/6720/8720

FIGURE 4-6:       DATA MEMORY MAP FOR PIC18FX520           DEVICES

BSR<3:0>                            Data Memory Map

                            00h     Access RAM       000h

       = 0000      Bank  0                           05Fh

                                    GPRs             060h

                            FFh                      0FFh

                            00h                      100h

       =  0001     Bank  1          GPRs

                            FFh                      1FFh

       =  0010              00h                      200h

                   Bank  2          GPRs

                            FFh                      2FFh

       =  0011              00h                      300h

                  Bank  3

                  to               GPRs

                  Bank  6

       =  0110                                                      Access Bank

                            FFh                      6FFh                                       00h

       =  0111              00h                      700h           Access RAM Low              5Fh

                   Bank  7          GPRs                            Access RAM High             60h

                            FFh                      7FFh                        (SFRs)

                                                     800h                                       FFh

       = 1000

                  Bank 8           Unused,                         When a = 0,

                  to               Read as ‘0’                     the BSR is ignored and the

                  Bank 14                                          Access Bank is used.

                                                                    The first 96 bytes are General

                                                                    Purpose RAM (from Bank 0).

       = 1110                                                       The second 160 bytes are

                                                                    Special Function Registers

                                                     EFFh           (from Bank 15).

       = 1111               00h     Unused           F00h

                   Bank 15                           F5Fh
                                                     F60h
                                    SFRs
                            FFh                      FFFh

When a = 1,

the BSR is used    to specify the

RAM location that  the instruction

uses.

DS39609C-page 48                                                     2003-2013 Microchip Technology Inc.
                PIC18F6520/8520/6620/8620/6720/8720

FIGURE 4-7:      DATA MEMORY MAP FOR PIC18FX620                    AND  PIC18FX720 DEVICES

BSR<3:0>                                    Data Memory Map

                                       00h  Access RAM       000h

       = 0000      Bank  0                                   05Fh

                                            GPRs             060h

                                       FFh                   0FFh

                                       00h                   100h

       = 0001      Bank  1                  GPRs

                                       FFh                   1FFh

       = 0010                          00h                   200h

                   Bank  2                  GPRs

                                       FFh                   2FFh

       = 0011                          00h                   300h

                   Bank  3                  GPRs

                                       FFh                   3FFh

       = 0100                                                400h

                   Bank  4                  GPRs                        Access Bank

                                                             4FFh                                   00h
                                                             500h
       = 0101                                                           Access RAM Low              5Fh

                                                                        Access RAM High             60h

                                                                                     (SFRs)         FFh

                  Bank 5

                  to

                  Bank 13                  GPRs

                                                                        When a = 0,

                                                                        the BSR is ignored and the

       = 1101                                                           Access Bank is used.

                                                                        The first 96 bytes are General

                                                             DFFh       Purpose RAM (from Bank 0).

       = 1110                          00h                   E00h       The second 160 bytes are

                   Bank 14                  GPRs                        Special Function Registers

                                       FFh                   EFFh       (from Bank 15).

       = 1111                          00h  Unused           F00h

                   Bank 15                                   F5Fh
                                                             F60h
                                            SFRs
                                       FFh                   FFFh

When a = 1,

the BSR is used    to specify the

RAM location that  the instruction

uses.

 2003-2013 Microchip Technology Inc.                                                    DS39609C-page 49
PIC18F6520/8520/6620/8620/6720/8720

TABLE 4-2:        SPECIAL FUNCTION REGISTER MAP

Address           Name      Address         Name          Address  Name                  Address       Name

      FFFh        TOSU      FDFh            INDF2(3)      FBFh     CCPR1H                        F9Fh  IPR1

      FFEh        TOSH      FDEh            POSTINC2(3)   FBEh     CCPR1L                        F9Eh  PIR1

      FFDh        TOSL      FDDh            POSTDEC2(3)   FBDh     CCP1CON                       F9Dh  PIE1

      FFCh        STKPTR    FDCh            PREINC2(3)    FBCh     CCPR2H                        F9Ch  MEMCON(2)

      FFBh        PCLATU    FDBh            PLUSW2(3)     FBBh     CCPR2L                        F9Bh  —(1)

      FFAh        PCLATH    FDAh            FSR2H         FBAh     CCP2CON                       F9Ah  TRISJ

      FF9h        PCL       FD9h            FSR2L         FB9h     CCPR3H                        F99h  TRISH

      FF8h  TBLPTRU         FD8h            STATUS        FB8h     CCPR3L                        F98h  TRISG

      FF7h  TBLPTRH         FD7h            TMR0H         FB7h     CCP3CON                       F97h  TRISF

      FF6h  TBLPTRL         FD6h            TMR0L         FB6h     —(1)                          F96h  TRISE

      FF5h        TABLAT    FD5h            T0CON         FB5h     CVRCON                        F95h  TRISD

      FF4h        PRODH     FD4h            —(1)          FB4h     CMCON                         F94h  TRISC

      FF3h        PRODL     FD3h            OSCCON        FB3h     TMR3H                         F93h  TRISB

      FF2h        INTCON    FD2h            LVDCON        FB2h     TMR3L                         F92h  TRISA

      FF1h  INTCON2         FD1h            WDTCON        FB1h     T3CON                         F91h  LATJ

      FF0h  INTCON3         FD0h            RCON          FB0h     PSPCON                        F90h  LATH

      FEFh        INDF0(3)  FCFh            TMR1H         FAFh     SPBRG1                        F8Fh  LATG

      FEEh  POSTINC0(3)     FCEh            TMR1L         FAEh     RCREG1                        F8Eh  LATF

      FEDh  POSTDEC0(3)     FCDh            T1CON         FADh     TXREG1                        F8Dh  LATE

      FECh  PREINC0(3)      FCCh            TMR2          FACh     TXSTA1                        F8Ch  LATD

      FEBh  PLUSW0(3)       FCBh            PR2           FABh     RCSTA1                        F8Bh  LATC

      FEAh        FSR0H     FCAh            T2CON         FAAh     EEADRH                        F8Ah  LATB

      FE9h        FSR0L     FC9h            SSPBUF        FA9h     EEADR                         F89h  LATA

      FE8h        WREG      FC8h            SSPADD        FA8h     EEDATA                        F88h  PORTJ

      FE7h        INDF1(3)  FC7h            SSPSTAT       FA7h     EECON2                        F87h  PORTH

      FE6h  POSTINC1(3)     FC6h            SSPCON1       FA6h     EECON1                        F86h  PORTG

      FE5h  POSTDEC1(3)     FC5h            SSPCON2       FA5h     IPR3                          F85h  PORTF

      FE4h  PREINC1(3)      FC4h            ADRESH        FA4h     PIR3                          F84h  PORTE

      FE3h  PLUSW1(3)       FC3h            ADRESL        FA3h     PIE3                          F83h  PORTD

      FE2h        FSR1H     FC2h            ADCON0        FA2h     IPR2                          F82h  PORTC

      FE1h        FSR1L     FC1h            ADCON1        FA1h     PIR2                          F81h  PORTB

      FE0h        BSR       FC0h            ADCON2        FA0h     PIE2                          F80h  PORTA

Note  1:  Unimplemented registers are read as ‘0’.

      2:  This register is unused on PIC18F6X20 devices.  Always maintain this register  clear.

      3:  This is not a physical register.

DS39609C-page 50                                                    2003-2013 Microchip Technology Inc.
            PIC18F6520/8520/6620/8620/6720/8720

TABLE 4-2:  SPECIAL FUNCTION REGISTER                   MAP (CONTINUED)

Address     Name     Address                 Name       Address         Name   Address  Name

      F7Fh  —(1)                       F5Fh  —(1)                 F3Fh   —(1)  F1Fh     —(1)

      F7Eh  —(1)                       F5Eh  —(1)                 F3Eh   —(1)  F1Eh     —(1)

      F7Dh  —(1)                       F5Dh  —(1)                 F3Dh   —(1)  F1Dh     —(1)

      F7Ch  —(1)                       F5Ch  —(1)                 F3Ch   —(1)  F1Ch     —(1)

      F7Bh  —(1)                       F5Bh  —(1)                 F3Bh   —(1)  F1Bh     —(1)

      F7Ah  —(1)                       F5Ah  —(1)                 F3Ah   —(1)  F1Ah     —(1)

      F79h  —(1)                       F59h  —(1)                 F39h   —(1)  F19h     —(1)

      F78h  TMR4                       F58h  —(1)                 F38h   —(1)  F18h     —(1)

      F77h  PR4                        F57h  —(1)                 F37h   —(1)  F17h     —(1)

      F76h  T4CON                      F56h  —(1)                 F36h   —(1)  F16h     —(1)

      F75h  CCPR4H                     F55h  —(1)                 F35h   —(1)  F15h     —(1)

      F74h  CCPR4L                     F54h  —(1)                 F34h   —(1)  F14h     —(1)

      F73h  CCP4CON                    F53h  —(1)                 F33h   —(1)  F13h     —(1)

      F72h  CCPR5H                     F52h  —(1)                 F32h   —(1)  F12h     —(1)

      F71h  CCPR5L                     F51h  —(1)                 F31h   —(1)  F11h     —(1)

      F70h  CCP5CON                    F50h  —(1)                 F30h   —(1)  F10h     —(1)

      F6Fh  SPBRG2                     F4Fh  —(1)                 F2Fh   —(1)  F0Fh     —(1)

      F6Eh  RCREG2                     F4Eh  —(1)                 F2Eh   —(1)  F0Eh     —(1)

      F6Dh  TXREG2                     F4Dh  —(1)                 F2Dh   —(1)  F0Dh     —(1)

      F6Ch  TXSTA2                     F4Ch  —(1)                 F2Ch   —(1)  F0Ch     —(1)

      F6Bh  RCSTA2                     F4Bh  —(1)                 F2Bh   —(1)  F0Bh     —(1)

      F6Ah  —(1)                       F4Ah  —(1)                 F2Ah   —(1)  F0Ah     —(1)

      F69h  —(1)                       F49h  —(1)                 F29h   —(1)  F09h     —(1)

      F68h  —(1)                       F48h  —(1)                 F28h   —(1)  F08h     —(1)

      F67h  —(1)                       F47h  —(1)                 F27h   —(1)  F07h     —(1)

      F66h  —(1)                       F46h  —(1)                 F26h   —(1)  F06h     —(1)

      F65h  —(1)                       F45h  —(1)                 F25h   —(1)  F05h     —(1)

      F64h  —(1)                       F44h  —(1)                 F24h   —(1)  F04h     —(1)

      F63h  —(1)                       F43h  —(1)                 F23h   —(1)  F03h     —(1)

      F62h  —(1)                       F42h  —(1)                 F22h   —(1)  F02h     —(1)

      F61h  —(1)                       F41h  —(1)                 F21h   —(1)  F01h     —(1)

      F60h  —(1)                       F40h  —(1)                 F20h   —(1)  F00h     —(1)

Note  1:  Unimplemented registers are read as ‘0’.

      2:  This register is not available on PIC18F6X20  devices.

      3:  This is not a physical register.

 2003-2013 Microchip Technology Inc.                                          DS39609C-page 51
PIC18F6520/8520/6620/8620/6720/8720

TABLE 4-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  32, 42

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

TOSL       Top-of-Stack Low Byte (TOS<7:0>)                                                                                0000  0000  32, 42

STKPTR      STKFUL   STKUNF               —          Return Stack Pointer                                                  00-0  0000  32, 43

PCLATU      —                —            bit 21     Holding Register for PC<20:16>                                        --10  0000  32, 44

PCLATH     Holding Register for PC<15:8>                                                                                   0000  0000  32, 44

PCL        PC Low Byte (PC<7:0>)                                                                                           0000  0000  32, 44

TBLPTRU     —                —            bit 21(2)  Program Memory Table Pointer Upper Byte (TBLPTR<20:16>)               --00  0000  32, 64

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

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

TABLAT     Program Memory Table Latch                                                                                      0000  0000  32, 64

PRODH      Product Register High Byte                                                                                      xxxx  xxxx  32, 85

PRODL      Product Register Low Byte                                                                                       xxxx  xxxx  32, 85

INTCON     GIE/GIEH  PEIE/GIEL         TMR0IE        INT0IE       RBIE            TMR0IF     INT0IF                RBIF    0000  0000  32, 89

INTCON2     RBPU     INTEDG0           INTEDG1       INTEDG2    INTEDG3           TMR0IP     INT3IP                RBIP    1111  1111  32, 90

INTCON3     INT2IP   INT1IP               INT3IE     INT2IE       INT1IE             INT3IF  INT2IF                INT1IF  1100  0000  32, 91

INDF0      Uses contents of FSR0 to address data memory – value of FSR0 not changed (not a physical register)              n/a         57

POSTINC0   Uses contents of FSR0 to address data memory – value of FSR0 post-incremented                                   n/a         57

           (not a physical register)

POSTDEC0   Uses contents of FSR0 to address data memory – value of FSR0 post-decremented                                   n/a         57

           (not a physical register)

PREINC0    Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented (not a physical register)          n/a         57

PLUSW0     Uses contents of FSR0 to address data memory – value of FSR0 pre-incremented                                    n/a         57

           (not a physical register) – value of FSR0 offset by value in WREG

FSR0H       —                —            —          —        Indirect Data Memory Address Pointer 0 High Byte             ----  0000  32, 57

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

WREG       Working Register                                                                                                xxxx  xxxx  32

INDF1      Uses contents of FSR1 to address data memory – value of FSR1 not changed (not a physical register)              n/a         57

POSTINC1   Uses contents of FSR1 to address data memory – value of FSR1 post-incremented                                   n/a         57

           (not a physical register)

POSTDEC1   Uses contents of FSR1 to address data memory – value of FSR1 post-decremented                                   n/a         57

           (not a physical register)

PREINC1    Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented                                    n/a         57

           (not a physical register)

PLUSW1     Uses contents of FSR1 to address data memory – value of FSR1 pre-incremented                                    n/a         57

           (not a physical register) – value of FSR1 offset by value in WREG

FSR1H       —                —            —          —        Indirect Data Memory Address Pointer 1 High Byte             ----  0000  33, 57

FSR1L      Indirect Data Memory Address Pointer 1 Low Byte                                                                 xxxx  xxxx  33, 57

BSR         —                —            —          —        Bank Select Register                                         ----  0000  33, 56

INDF2      Uses contents of FSR2 to address data memory – value of FSR2 not changed (not a physical register)              n/a         57

POSTINC2   Uses contents of FSR2 to address data memory – value of FSR2 post-incremented                                   n/a         57

           (not a physical register)

POSTDEC2   Uses contents of FSR2 to address data memory – value of FSR2 post-decremented                                   n/a         57

           (not a physical register)

Legend:    x = unknown, u = unchanged, – = unimplemented, q = value depends on condition

Note   1:  RA6 and associated bits are configured as port pins in RCIO and ECIO Oscillator modes only and read ‘0’         in all other oscillator

           modes.

       2:  Bit 21 of the TBLPTRU allows access to the device configuration bits.

       3:  These registers are unused on PIC18F6X20 devices; always maintain these clear.

DS39609C-page 52                                                                              2003-2013 Microchip Technology Inc.
                   PIC18F6520/8520/6620/8620/6720/8720

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

PREINC2    Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented                           n/a                       57

           (not a physical register)

PLUSW2     Uses contents of FSR2 to address data memory – value of FSR2 pre-incremented                           n/a                       57

           (not a physical register) – value of FSR2 offset by value in WREG

FSR2H       —               —             —          —       Indirect Data Memory Address Pointer 2 High Byte     ----  0000                33, 57

FSR2L      Indirect Data Memory Address Pointer 2 Low Byte                                                        xxxx  xxxx                33, 57

STATUS      —               —             —          N       OV                   Z        DC            C        ---x  xxxx                33, 59

TMR0H      Timer0 Register High Byte                                                                              0000  0000                33, 133

TMR0L      Timer0 Register Low Byte                                                                               xxxx  xxxx                33, 133

T0CON      TMR0ON           T08BIT        T0CS       T0SE    PSA                  T0PS2    T0PS1         T0PS0    1111  1111                33, 131

OSCCON      —               —             —          —       —                    —        —             SCS      ----  ---0                25, 33

LVDCON      —               —             IRVST     LVDEN    LVDL3                LVDL2    LVDL1         LVDL0    --00  0101                33, 235

WDTCON      —               —             —          —       —                    —        —             SWDTE    ----  ---0                33, 250

RCON        IPEN            —             —          RI      TO                   PD       POR           BOR      0--1  11qq                33, 60,

                                                                                                                                            101

TMR1H      Timer1 Register High Byte                                                                              xxxx  xxxx                33, 135

TMR1L      Timer1 Register Low Byte                                                                               xxxx  xxxx                33, 135

T1CON       RD16            —          T1CKPS1   T1CKPS0     T1OSCEN              T1SYNC   TMR1CS        TMR1ON   0-00  0000                33,  135

TMR2       Timer2 Register                                                                                        0000  0000                33,  141

PR2        Timer2 Period Register                                                                                 1111  1111                33,  142

T2CON       —      T2OUTPS3            T2OUTPS2  T2OUTPS1    T2OUTPS0             TMR2ON   T2CKPS1       T2CKPS0  -000  0000                33,  141

SSPBUF     SSP Receive Buffer/Transmit Register                                                                   xxxx  xxxx                33,  157

SSPADD     SSP Address Register in I2C Slave mode. SSP Baud  Rate Reload Register in I2C   Master mode.           0000  0000                33,  166

SSPSTAT     SMP             CKE           D/A        P       S                    R/W      UA            BF       0000  0000                33,  158

SSPCON1     WCOL            SSPOV         SSPEN      CKP     SSPM3                SSPM2    SSPM1         SSPM0    0000  0000                33,  168

SSPCON2     GCEN   ACKSTAT                ACKDT     ACKEN    RCEN                 PEN      RSEN          SEN      0000  0000                33,  169

ADRESH     A/D Result Register High Byte                                                                          xxxx  xxxx                34,  215

ADRESL     A/D Result Register Low Byte                                                                           xxxx  xxxx                34,  215

ADCON0      —               —             CHS3       CHS2    CHS1                 CHS0     GO/DONE       ADON     --00  0000                34, 213

ADCON1      —               —             VCFG1     VCFG0    PCFG3                PCFG2    PCFG1         PCFG0    --00  0000                34, 214

ADCON2      ADFM            —             —          —       —                    ADCS2    ADCS1         ADCS0    0---  -000                34, 215

CCPR1H     Capture/Compare/PWM Register 1 High Byte                                                               xxxx  xxxx                34, 151,

                                                                                                                                            152

CCPR1L     Capture/Compare/PWM Register 1 Low Byte                                                                xxxx  xxxx                34, 151,

                                                                                                                                            152

CCP1CON     —               —             DC1B1      DC1B0   CCP1M3               CCP1M2   CCP1M1        CCP1M0   --00  0000                34, 149

CCPR2H     Capture/Compare/PWM Register 2 High Byte                                                               xxxx  xxxx                34, 151,

                                                                                                                                            152

CCPR2L     Capture/Compare/PWM Register 2 Low Byte                                                                xxxx  xxxx                34, 151,

                                                                                                                                            152

CCP2CON     —               —             DC2B1      DC2B0   CCP2M3               CCP2M2   CCP2M1        CCP2M0   --00  0000                34, 149

Legend:    x = unknown, u = unchanged, – = unimplemented, q = value depends on condition

Note  1:   RA6 and associated bits are configured as port pins in RCIO and ECIO Oscillator modes only and read ‘0’ in all other oscillator

           modes.

      2:   Bit 21 of the TBLPTRU allows access to the device configuration bits.

      3:   These registers are unused on PIC18F6X20 devices; always maintain these clear.

 2003-2013 Microchip Technology Inc.                                                                             DS39609C-page 53
PIC18F6520/8520/6620/8620/6720/8720

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

CCPR3H     Capture/Compare/PWM Register 3 High Byte                                                                    xxxx  xxxx           34, 151,

                                                                                                                                            152

CCPR3L     Capture/Compare/PWM Register 3 Low Byte                                                                     xxxx  xxxx           34, 151,

                                                                                                                                            152

CCP3CON     —      —                   DC3B1          DC3B0          CCP3M3       CCP3M2         CCP3M1  CCP3M0        --00  0000           34, 149

CVRCON      CVREN  CVROE               CVRR           CVRSS          CVR3         CVR2           CVR1    CVR0          0000  0000           34, 229

CMCON       C2OUT  C1OUT               C2INV          C1INV          CIS          CM2            CM1     CM0           0000  0000           34, 223

TMR3H      Timer3 Register High Byte                                                                                   xxxx  xxxx           34, 143

TMR3L      Timer3 Register Low Byte                                                                                    xxxx  xxxx           34, 143

T3CON       RD16   T3CCP2             T3CKPS1         T3CKPS0        T3CCP1       T3SYNC         TMR3CS  TMR3ON        0000  0000           34, 143

PSPCON      IBF    OBF                 IBOV           PSPMODE        —            —              —       —             0000  ----           34, 129

SPBRG1     USART1 Baud Rate Generator                                                                                  0000  0000           34, 205

RCREG1     USART1 Receive Register                                                                                     0000  0000           34, 206

TXREG1     USART1 Transmit Register                                                                                    0000  0000           34, 204

TXSTA1      CSRC   TX9                 TXEN           SYNC           —            BRGH           TRMT    TX9D          0000  -010           34, 198

RCSTA1      SPEN   RX9                 SREN           CREN           ADDEN        FERR           OERR    RX9D          0000  000x           34, 199

EEADRH      —      —                     —            —              —            —              EE Adr Register High  ----  --00           34, 79

EEADR      Data EEPROM Address Register                                                                                0000  0000           34, 79

EEDATA     Data EEPROM Data Register                                                                                   0000  0000           34, 79

EECON2     Data EEPROM Control Register 2 (not a physical register)                                                    ----  ----           34, 79

EECON1      EEPGD  CFGS                  —            FREE           WRERR        WREN           WR      RD            xx-0  x000           34, 80

IPR3        —      —                   RC2IP          TX2IP          TMR4IP       CCP5IP         CCP4IP  CCP3IP        --11  1111           35, 100

PIR3        —      —                   RC2IF          TX2IF          TMR4IF       CCP5IF         CCP4IF  CCP3IF        --00  0000           35, 94

PIE3        —      —                   RC2IE          TX2IE          TMR4IE       CCP5IE         CCP4IE  CCP3IE        --00  0000           35, 97

IPR2        —      CMIP                  —            EEIP           BCLIP        LVDIP          TMR3IP  CCP2IP        -1-1  1111           35, 99

PIR2        —      CMIF                  —            EEIF           BCLIF        LVDIF          TMR3IF  CCP2IF        -0-0  0000           35, 93

PIE2        —      CMIE                  —            EEIE           BCLIE        LVDIE          TMR3IE  CCP2IE        -0-0  0000           35, 96

IPR1        PSPIP  ADIP                RCIP           TXIP           SSPIP        CCP1IP         TMR2IP  TMR1IP        0111  1111           35, 98

PIR1        PSPIF  ADIF                RCIF           TXIF           SSPIF        CCP1IF         TMR2IF  TMR1IF        0000  0000           35, 92

PIE1        PSPIE  ADIE                RCIE           TXIE           SSPIE        CCP1IE         TMR2IE  TMR1IE        0000  0000           35, 95

MEMCON(3)   EBDIS  —                   WAIT1          WAIT0          —            —              WM1     WM0           0-00  --00           35, 71

TRISJ(3)   Data Direction Control Register for PORTJ                                                                   1111  1111           35, 125

TRISH(3)   Data Direction Control Register for PORTH                                                                   1111  1111           35, 122

TRISG       —      —                     —            Data Direction Control Register for PORTG                        ---1  1111           35, 120

TRISF      Data Direction Control Register for PORTF                                                                   1111  1111           35, 117

TRISE      Data Direction Control Register for PORTE                                                                   1111  1111           35, 114

TRISD      Data Direction Control Register for PORTD                                                                   1111  1111           35, 111

TRISC      Data Direction Control Register for PORTC                                                                   1111  1111           35, 109

TRISB      Data Direction Control Register for PORTB                                                                   1111  1111           35, 106

TRISA       —      TRISA6(1)          Data Direction Control Register for PORTA                                        -111  1111           35, 103

Legend:    x = unknown, u = unchanged, – = unimplemented, q = value depends on condition

Note   1:  RA6 and associated bits are configured as port pins in RCIO and ECIO Oscillator modes only and read ‘0’ in all other oscillator

           modes.

       2:  Bit 21 of the TBLPTRU allows access to the device configuration bits.

       3:  These registers are unused on PIC18F6X20 devices; always maintain these clear.

DS39609C-page 54                                                                                  2003-2013 Microchip Technology Inc.
                   PIC18F6520/8520/6620/8620/6720/8720

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

LATJ(3)    Read PORTJ Data Latch, Write PORTJ Data Latch                                                        xxxx  xxxx  35, 125

LATH(3)    Read PORTH Data Latch, Write PORTH Data Latch                                                        xxxx  xxxx  35, 122

LATG        —               —          —         Read PORTG Data Latch, Write PORTG Data Latch                  ---x  xxxx  35, 120

LATF       Read PORTF Data Latch, Write PORTF Data Latch                                                        xxxx  xxxx  35, 117

LATE       Read PORTE Data Latch, Write PORTE Data Latch                                                        xxxx  xxxx  35, 114

LATD       Read PORTD Data Latch, Write PORTD Data Latch                                                        xxxx  xxxx  35, 111

LATC       Read PORTC Data Latch, Write PORTC Data Latch                                                        xxxx  xxxx  35, 109

LATB       Read PORTB Data Latch, Write PORTB Data Latch                                                        xxxx  xxxx  35, 106

LATA        —      LATA6(1)          Read PORTA Data Latch, Write PORTA Data Latch(1)                           -xxx  xxxx  35, 103

PORTJ(3)   Read PORTJ pins, Write PORTJ Data Latch                                                              xxxx  xxxx  36, 125

PORTH(3)   Read PORTH pins, Write PORTH Data Latch                                                              xxxx  xxxx  36, 122

PORTG       —               —          —         Read PORTG pins, Write PORTG Data Latch                        ---x  xxxx  36, 120

PORTF      Read PORTF pins, Write PORTF Data Latch                                                              xxxx  xxxx  36, 117

PORTE      Read PORTE pins, Write PORTE Data Latch                                                              xxxx  xxxx  36, 114

PORTD      Read PORTD pins, Write PORTD Data Latch                                                              xxxx  xxxx  36, 111

PORTC      Read PORTC pins, Write PORTC Data Latch                                                              xxxx  xxxx  36, 109

PORTB      Read PORTB pins, Write PORTB Data Latch                                                              xxxx  xxxx  36, 106

PORTA       —               RA6(1)   Read PORTA pins, Write PORTA Data Latch(1)                                 -x0x  0000  36, 103

TMR4       Timer4 Register                                                                                      0000  0000  36, 148

PR4        Timer4 Period Register                                                                               1111  1111  36, 148

T4CON       —      T4OUTPS3            T4OUTPS2  T4OUTPS1   T4OUTPS0              TMR4ON   T4CKPS1     T4CKPS0  -000  0000  36, 147

CCPR4H     Capture/Compare/PWM Register 4 High Byte                                                             xxxx  xxxx  36, 151,

                                                                                                                            152

CCPR4L     Capture/Compare/PWM Register 4 Low Byte                                                              xxxx  xxxx  36, 151,

                                                                                                                            152

CCP4CON     —               —          DC4B1         DC4B0  CCP4M3                CCP4M2   CCP4M1      CCP4M0   0000  0000  36, 149

CCPR5H     Capture/Compare/PWM Register 5 High Byte                                                             xxxx  xxxx  36, 151,

                                                                                                                            152

CCPR5L     Capture/Compare/PWM Register 5 Low Byte                                                              xxxx  xxxx  36, 151,

                                                                                                                            152

CCP5CON     —               —          DC5B1         DC5B0  CCP5M3                CCP5M2   CCP5M1      CCP5M0   0000  0000  36, 149

SPBRG2     USART2 Baud Rate Generator                                                                           0000  0000  36, 205

RCREG2     USART2 Receive Register                                                                              0000  0000  36, 206

TXREG2     USART2 Transmit Register                                                                             0000  0000  36, 204

TXSTA2      CSRC            TX9        TXEN          SYNC   —                     BRGH     TRMT        TX9D     0000  -010  36, 198

RCSTA2      SPEN            RX9        SREN          CREN   ADDEN                 FERR     OERR        RX9D     0000  000x  36, 199

Legend:    x = unknown, u = unchanged, – = unimplemented, q = value depends on condition

Note  1:   RA6 and associated bits are configured as port pins in RCIO and ECIO Oscillator modes only  and read ‘0’ in all other oscillator

           modes.

      2:   Bit 21 of the TBLPTRU allows access to the device configuration bits.

      3:   These registers are unused on PIC18F6X20 devices; always maintain these clear.

 2003-2013 Microchip Technology Inc.                                                                           DS39609C-page 55
PIC18F6520/8520/6620/8620/6720/8720

4.10  Access Bank                                                      4.11      Bank Select Register (BSR)

The   Access  Bank  is  an  architectural  enhancement,                The need for a large general purpose memory space

which is very useful for C compiler code optimization.                 dictates a RAM banking scheme. The data memory is

The techniques used by the C compiler may also be                      partitioned     into  sixteen  banks.     When    using   direct

useful for programs written in assembly.                               addressing,     the   BSR     should  be    configured    for  the

This data memory region can be used for:                               desired bank.

•  Intermediate computational values                                   BSR<3:0> holds the upper 4 bits of the 12-bit RAM

•  Local variables of subroutines                                      address. The BSR<7:4> bits will always read ‘0’s and

                                                                       writes will have no effect.

•  Faster context saving/switching of variables                        A               instruction    has    been  provided      in   the

•  Common variables                                                             MOVLB

                                                                       instruction set to assist in selecting banks.

•  Faster evaluation/control of SFRs (no banking)                      If the currently selected bank is not implemented, any

The Access Bank is comprised of the upper 160 bytes                    read will return all ‘0’s and all writes are ignored. The

in Bank 15 (SFRs) and the lower 96 bytes in Bank 0.                    Status register bits will be set/cleared as appropriate for

These two sections will be referred to as Access RAM                   the instruction performed.

High and Access RAM Low, respectively. Figure 4-7                      Each Bank extends up to FFh (256 bytes). All data

indicates the Access RAM areas.                                        memory is implemented as static RAM.

A bit in the instruction word specifies if the operation is            A MOVFF instruction ignores the BSR, since the 12-bit

to occur in the bank specified by the BSR register or in               addresses are embedded into the instruction word.

the Access Bank. This bit is denoted by the ‘a’ bit (for

access bit).                                                           Section 4.12 “Indirect Addressing, INDF and FSR

When  forced  in  the   Access  Bank  (a   =  0),  the  last           Registers” provides a description of indirect address-

address in Access RAM Low is followed by the first                     ing, which allows linear addressing of the entire RAM

address in Access RAM High. Access RAM High maps                       space.

the Special Function Registers, so that these registers

can be accessed without any software overhead. This is

useful for testing status flags and modifying control bits.

FIGURE 4-8:             DIRECT ADDRESSING

                                                             Direct  Addressing

                    BSR<3:0>          7       From Opcode(3)           0

      Bank Select(2)               Location Select(3)

                                                                     00h         01h                       0Eh     0Fh

                                                                 000h           100h                  E00h         F00h

                                           Data
                                           Memory(1)

                                                                 0FFh           1FFh                  EFFh         FFFh

                                                                     Bank 0     Bank 1                Bank 14      Bank 15

      Note    1:  For register  file map detail, see Table 4-2.

              2:  The access    bit of the instruction can be used to force an  override of the selected bank (BSR<3:0>) to the

                  registers of  the Access Bank.

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

DS39609C-page 56                                                                              2003-2013 Microchip Technology         Inc.
                       PIC18F6520/8520/6620/8620/6720/8720

4.12      Indirect Addressing, INDF and                               the   data        from     the    address             pointed       to   by

          FSR Registers                                               FSR1H:FSR1L. INDFn can be used in code anywhere

                                                                      an operand can be used.

Indirect addressing is a mode of addressing data mem-                 If INDF0, INDF1 or INDF2 are read indirectly via an

ory, where the data memory address in the instruction                 FSR,  all   ‘0’s  are   read     (zero   bit  is      set).  Similarly,  if

is not fixed. An FSR register is used as a pointer to the             INDF0, INDF1 or INDF2 are written to indirectly, the

data memory location that is to be read or written. Since             operation will be equivalent to a NOP instruction and the

this pointer is in RAM, the contents can be modified by               Status bits are not affected.

the program. This can be useful for data tables in the

data   memory    and      for  software       stacks.  Figure 4-9     4.12.1        INDIRECT ADDRESSING

shows the operation of indirect addressing. This shows                              OPERATION

the moving of the value to the data memory address,

specified by the value of the FSR register.                           Each FSR register has an INDF register associated

Indirect  addressing      is   possible   by  using    one  of  the   with it, plus four additional register addresses. Perform-

INDF registers. Any instruction using the INDF register               ing  an     operation      on    one    of  these     five       registers

actually accesses the register pointed to by the File                 determines        how   the    FSR    will    be      modified      during

Select Register, FSR. Reading the INDF register itself,               indirect addressing.

indirectly (FSR = 0), will read 00h. Writing to the INDF              When data access is done to one of the five INDFn

register indirectly, results in a no operation. The FSR               locations, the address selected will configure the FSRn

register contains a 12-bit address, which is shown in                 register to:

Figure 4-10.                                                          •  Do nothing to FSRn after an indirect access

The INDFn register is not a physical register. Address-                  (no change) – INDFn.

ing   INDFn     actually  addresses         the  register   whose     •  Auto-decrement FSRn after an indirect access

address is contained in the FSRn register (FSRn is a                     (post-decrement) – POSTDECn.

pointer). This is indirect addressing.                                •  Auto-increment FSRn after an indirect access

Example 4-4 shows a simple use of indirect addressing                    (post-increment) – POSTINCn.

to clear the RAM in Bank 1 (locations 100h-1FFh) in a                 •  Auto-increment FSRn before an indirect access

minimum number of instructions.                                          (pre-increment) – PREINCn.

                                                                      •  Use the value in the WREG register as an offset

EXAMPLE 4-4:                  HOW TO CLEAR RAM                           to FSRn. Do not modify the value of the WREG or

                              (BANK 1) USING                             the FSRn register after an indirect access

                              INDIRECT ADDRESSING                        (no change) – PLUSWn.

          LFSR   FSR0         ,0x100     ;                            When     using    the   auto-increment            or  auto-decrement

NEXT      CLRF   POSTINC0                ;  Clear    INDF             features, the effect on the FSR is not reflected in the

                                         ;  register     and          Status register. For example, if the indirect address

                                         ;  inc   pointer             causes the FSR to equal ‘0’, the Z bit will not be set.

          BTFSS  FSR0H,        1         ;  All   done   with

                                         ;  Bank   1?                 Incrementing or decrementing an FSR affects all 12

          GOTO   NEXT                    ;  NO,   clear     next      bits. That is, when FSRnL overflows from an increment,

CONTINUE                                 ;  YES,   continue           FSRnH will be incremented automatically.

There     are   three  indirect   addressing       registers.     To  Adding these features allows the FSRn to be used as a

address the entire data memory space (4096 bytes),                    stack pointer, in addition to its uses for table operations

these registers are 12 bits wide. To store the 12 bits of             in data memory.

addressing      information,      two     8-bit   registers     are   Each  FSR     has      an   address      associated          with   it  that

required. These indirect addressing registers are:                    performs      an  indexed      indirect     access.   When          a   data

1.    FSR0: composed of FSR0H:FSR0L                                   access to this INDFn location (PLUSWn) occurs, the

                                                                      FSRn    is  configured       to  add  the     signed         value  in  the

2.    FSR1: composed of FSR1H:FSR1L                                   WREG     register      and   the  value       in  FSR        to  form   the

3.    FSR2: composed of FSR2H:FSR2L                                   address before an indirect access. The FSR value is

In   addition,  there  are     registers    INDF0,     INDF1    and   not changed.

INDF2, which are not physically implemented. Reading                  If an FSR register contains a value that points to one of

or writing to these registers activates indirect address-             the INDFn, an indirect read will read 00h (zero bit is

ing, with the value in the corresponding FSR register                 set), while an indirect write will be equivalent to a NOP

being the address of the data. If an instruction writes a             (Status bits are not affected).

value to INDF0, the value will be written to the address              If an indirect addressing operation is done where the tar-

pointed to by FSR0H:FSR0L. A read from INDF1 reads                    get address is an FSRnH or FSRnL register, the write

                                                                      operation will dominate over the pre- or post-increment/

                                                                      decrement functions.

 2003-2013 Microchip Technology Inc.                                                                                   DS39609C-page 57
PIC18F6520/8520/6620/8620/6720/8720

FIGURE 4-9:       INDIRECT         ADDRESSING             OPERATION

                                                                        RAM      0h

                  Instruction

                  Executed

                           Opcode          Address

                                                                                 FFFh

                                           12

                                                    File  Address = Access   of  an Indirect  Addressing  Register

                               BSR<3:0>    12             12

                  Instruction          4   8

                  Fetched

                           Opcode          File               FSR

FIGURE 4-10:      INDIRECT ADDRESSING

                                              Indirect Addressing

                                   11                     FSR Register                   0

                                           Location Select

                                                                                       0000h

                                                              Data
                                                              Memory(1)

                                                                                       0FFFh

                               Note    1:  For register file map detail, see Table 4-2.

DS39609C-page 58                                                                               2003-2013 Microchip Technology Inc.
                        PIC18F6520/8520/6620/8620/6720/8720

4.13        Status Register                                                    For example, CLRF STATUS will clear the upper three

                                                                               bits and set the Z bit. This leaves the Status register as

The Status register, shown in Register 4-3, contains the                       000u    u1uu (where u = unchanged).

arithmetic status of the ALU. The Status register can be                       It  is  recommended,     therefore,  that    only  BCF,     BSF,

the destination for any instruction, as with any other reg-                    SWAPF, MOVFF and MOVWF instructions are used to alter

ister.  If  the  Status   register  is  the  destination   for   an            the Status register, because these instructions do not

instruction that affects the Z, DC, C, OV or N bits, then                      affect the Z, C, DC, OV or N bits from the Status regis-

the write to these five bits is disabled. These bits are set                   ter. For other instructions not affecting any status bits,

or cleared according to the device logic. Therefore, the                       see Table 24-1.

result  of  an   instruction  with      the  Status    register  as

destination may be different than intended.                                        Note:  The C and DC bits operate as a borrow

                                                                                          and    digit     borrow   bit     respectively,  in

                                                                                          subtraction.

REGISTER 4-3:             STATUS REGISTER

                              U-0                 U-0            U-0       R/W-x          R/W-x      R/W-x          R/W-x         R/W-x

                                    —             —              —             N          OV               Z        DC            C

                          bit 7                                                                                                            bit 0

                 bit 7-5  Unimplemented: Read as ‘0’

                 bit 4    N: Negative bit

                          This bit is used for signed arithmetic (2’s complement). It indicates whether the result was

                          negative (ALU MSB = 1).

                          1 = Result was negative

                          0 = Result was positive

                 bit 3    OV: Overflow bit

                          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) to change state.

                          1 = Overflow occurred for signed arithmetic (in this arithmetic operation)

                          0 = No overflow occurred

                 bit 2    Z: Zero bit

                          1 = The result of an arithmetic or logic operation is zero

                          0 = The result of an arithmetic or logic operation is not zero

                 bit 1    DC: Digit carry/borrow bit

                          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

                              Note:          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 bit 4 or bit 3 of the source register.

                 bit 0    C: Carry/borrow bit

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

                              Legend:

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

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

 2003-2013 Microchip Technology Inc.                                                                                    DS39609C-page 59
PIC18F6520/8520/6620/8620/6720/8720

4.14  RCON Register                                                         Note  1:  If  the  BOREN     configuration  bit  is  set

The Reset Control (RCON) register contains flag bits                                  (Brown-out Reset enabled), the BOR bit

that  allow  differentiation  between  the  sources  of   a                           is ‘1’ on a Power-on Reset. After a Brown-

device Reset. These flags include the TO, PD, POR,                                    out Reset has occurred, the BOR bit will

BOR and RI bits. This register is readable and writable.                              be cleared and must be set by firmware to

                                                                                      indicate    the   occurrence  of  the      next

                                                                                      Brown-out Reset.

                                                                                  2:  It is recommended that the POR bit be set

                                                                                      after    a  Power-on  Reset       has  been

                                                                                      detected, so that subsequent Power-on

                                                                                      Resets may be detected.

REGISTER 4-4:          RCON REGISTER

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

                              IPEN          —             —                 RI        TO          PD        POR         BOR

                       bit 7                                                                                                     bit 0

             bit  7    IPEN: Interrupt Priority Enable bit

                       1=     Enable priority levels on interrupts

                       0=     Disable priority levels on interrupts (PIC16CXXX Compatibility mode)

             bit  6-5  Unimplemented: Read as ‘0’

             bit  4    RI: RESET Instruction Flag bit

                       1=     The RESET instruction was not executed

                       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=     After power-up, CLRWDT instruction, or SLEEP instruction

                       0=     A WDT time-out occurred

             bit  2    PD: Power-down Detection Flag bit

                       1=     After power-up or by the CLRWDT instruction

                       0=     By execution of the SLEEP instruction

             bit  1    POR: Power-on Reset Status bit

                       1=     A Power-on Reset has not occurred

                       0=     A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

             bit  0    BOR: Brown-out Reset Status bit

                       1=     A Brown-out Reset has not occurred

                       0=     A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs)

                       Legend:

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

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

DS39609C-page 60                                                                                2003-2013 Microchip Technology Inc.
                 PIC18F6520/8520/6620/8620/6720/8720

5.0       FLASH PROGRAM MEMORY                                      The program memory space is 16 bits wide, while the

                                                                    data RAM space is 8 bits wide. Table reads and table

The Flash program memory is readable, writable and                  writes move data between these two memory spaces

erasable, during normal operation over the entire VDD               through an 8-bit register (TABLAT).

range.                                                              Table read operations retrieve data from program mem-

A read from program memory is executed on one byte                  ory and place it into the data RAM space. Figure 5-1

at a time. A write to program memory is executed on                 shows      the  operation  of  a   table  read   with   program

blocks of 8 bytes at a time. Program memory is erased               memory and data RAM.

in blocks of 64 bytes at a time. A bulk erase operation             Table write operations store data from the data memory

may not be issued from user code.                                   space into holding registers in program memory. The

Writing   or     erasing  program    memory  will  cease            procedure to write the contents of the holding registers

instruction fetches until the operation is complete. The            into   program      memory     is  detailed  in   Section 5.5

program memory cannot be accessed during the write                  “Writing   to   Flash      Program   Memory”.     Figure    5-2

or erase, therefore, code cannot execute. An internal               shows      the  operation  of  a   table  write  with   program

programming timer terminates program memory writes                  memory and data RAM.

and erases.                                                         Table operations work with byte entities. A table block

A value written to program memory does not need to be               containing data, rather than program instructions, is not

a  valid  instruction.    Executing  a  program    memory           required to be word aligned. Therefore, a table block

location that forms an invalid instruction results in a             can start and end at any byte address. If a table write is

NOP.                                                                being    used   to  write  executable     code    into  program

                                                                    memory,    program     instructions  will  need   to    be  word

5.1       Table Reads and Table Writes                              aligned.

In order to read and write program memory, there are

two operations that allow the processor to move bytes

between     the  program  memory     space  and   the  data

RAM:

•  Table Read (TBLRD)

•  Table Write (TBLWT)

FIGURE 5-1:               TABLE READ OPERATION

                                                          Instruction: TBLRD*

                 Table Pointer(1)                            Program Memory

                                                                                                       Table Latch (8-bit)

        TBLPTRU  TBLPTRH           TBLPTRL

                                                                                                              TABLAT

                                        Program Memory

                                        (TBLPTR)

      Note  1:   Table Pointer points to a byte in program memory.

 2003-2013 Microchip Technology Inc.                                                                          DS39609C-page 61
PIC18F6520/8520/6620/8620/6720/8720

FIGURE      5-2:         TABLE WRITE OPERATION

                                                              Instruction: TBLWT*

                                                                    Program Memory

                                                                    Holding Registers

                         Table Pointer(1)                                                                  Table Latch (8-bit)

            TBLPTRU      TBLPTRH           TBLPTRL                                                              TABLAT

                                           Program Memory

                                           (TBLPTR)

      Note  1:   Table Pointer actually points to one of eight holding registers, the address of which is determined by

                 TBLPTRL<2:0>. The process for physically writing data to the Program Memory Array is discussed in

                 Section 5.5 “Writing to Flash Program Memory”.

5.2         Control Registers                                       The FREE bit, when set, will allow a program memory

                                                                    erase operation. When the FREE bit is set, the erase

Several control registers are used in conjunction with              operation is initiated on the next WR command. When

the TBLRD and TBLWT instructions. These include the:                FREE is clear, only writes are enabled.

•  EECON1 register                                                  The WREN bit, when set, will allow a write operation.

•  EECON2 register                                                  On power-up, the WREN bit is clear. The WRERR bit is

•  TABLAT register                                                  set when a write operation is interrupted by a MCLR

•  TBLPTR registers                                                 Reset, or a WDT Time-out Reset during normal opera-

                                                                    tion.  In          these  situations,  the  user     can    check  the

5.2.1           EECON1 AND EECON2 REGISTERS                         WRERR bit and rewrite the location. It is necessary to

EECON1 is the control register for memory accesses.                 reload the data and address registers (EEDATA and

                                                                    EEADR), due to Reset values of zero.

EECON2 is not a physical register. Reading EECON2                   The WR control bit, initiates write operations. The bit

will  read  all   ‘0’s.  The  EECON2       register       is  used  cannot be cleared, only set, in software; it is cleared in

exclusively in the memory write and erase sequences.                hardware at the completion of the write operation. The

Control bit EEPGD determines if the access will be a                inability to clear the WR bit in software prevents the

program     or   data    EEPROM  memory    access.            When  accidental         or     premature    termination        of  a    write

clear, any subsequent operations will operate on the                operation.

data EEPROM memory. When set, any subsequent

operations will operate on the program memory.                      Note:              Interrupt flag bit, EEIF in the PIR2 register,

Control bit CFGS determines if the access will be to the                               is set when the write is complete. It must

configuration/calibration     registers,   or    to  program                           be cleared in software.

memory/data      EEPROM       memory.      When     set,  subse-

quent operations will operate on configuration regis-

ters, regardless of EEPGD (see Section 23.0 “Special

Features of the CPU”). When clear, memory selection

access is determined by EEPGD.

DS39609C-page 62                                                                               2003-2013 Microchip Technology Inc.
               PIC18F6520/8520/6620/8620/6720/8720

REGISTER 5-1:  EECON1 REGISTER (ADDRESS FA6h)

               R/W-x                   R/W-x            U-0  R/W-0                  R/W-x    R/W-0        R/S-0            R/S-0

               EEPGD                   CFGS             —    FREE              WRERR         WREN         WR               RD

               bit 7                                                                                                          bit 0

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=     A write operation is prematurely terminated

                      (any Reset during self-timed programming in normal operation)

               0=     The write operation completed

               Note:                   When a WRERR occurs, the EEPGD and CFGS bits are not cleared. This allows

                                       tracing of the error condition.

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

               0=     Does not initiate an EEPROM read

               Legend:

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

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

 2003-2013 Microchip Technology Inc.                                                                     DS39609C-page 63
PIC18F6520/8520/6620/8620/6720/8720

5.2.2         TABLAT – TABLE LATCH REGISTER                      5.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 is used to hold              Flash program memory.

8-bit  data   during  data  transfers     between  program       When a TBLRD is executed, all 22 bits of the Table

memory and data RAM.                                             Pointer determine which byte is read from program

5.2.3         TBLPTR – TABLE POINTER                             memory into TABLAT.

              REGISTER                                           When a TBLWT is executed, the three LSbs of the Table

The Table Pointer (TBLPTR) addresses a byte within               Pointer (TBLPTR<2:0>) determine which of the eight

the program memory. The TBLPTR is comprised of                   program memory holding registers is written to. When

three SFR registers: Table Pointer Upper Byte, Table             the timed write to program memory (long write) begins,

Pointer   High  Byte  and      Table   Pointer  Low  Byte        the     19  MSbs  of        the    Table   Pointer,     TBLPTR

(TBLPTRU:TBLPTRH:TBLPTRL). These three regis-                    (TBLPTR<21:3>), will determine which program mem-

ters join to form a 22-bit wide pointer. The low-order 21        ory block of 8 bytes is written to. For more detail, see

bits allow the device to address up to 2 Mbytes of               Section 5.5 “Writing to Flash Program Memory”.

program memory space. The 22nd bit allows access to              When an erase of program memory is executed, the

the Device ID, the User ID and the configuration bits.           16 MSbs of the Table Pointer (TBLPTR<21:6>) point to

The Table Pointer, TBLPTR, is used by the TBLRD and              the  64-byte     block  that     will  be  erased.   The  Least

TBLWT instructions. These instructions can update the            Significant bits (TBLPTR<5:0>) are ignored.

TBLPTR in one of four ways, based on the table oper-             Figure      5-3  describes    the      relevant  boundaries  of

ation. These operations are shown in Table 5-1. These            TBLPTR based on Flash program memory operations.

operations on the TBLPTR only affect the low-order

21 bits.

TABLE     5-1:        TABLE  POINTER OPERATIONS WITH TBLRD AND TBLWT INSTRUCTIONS

             Example                                             Operation on Table Pointer

             TBLRD*            TBLPTR is not modified

             TBLWT*

             TBLRD*+           TBLPTR is incremented after the read/write

             TBLWT*+

             TBLRD*-           TBLPTR is decremented after the read/write

             TBLWT*-

             TBLRD+*           TBLPTR is incremented before the read/write

             TBLWT+*

FIGURE 5-3:           TABLE POINTER BOUNDARIES BASED ON OPERATION

          21          TBLPTRU         16  15            TBLPTRH          8   7           TBLPTRL                      0

                                          ERASE – TBLPTR<20:6>

                                                   WRITE – TBLPTR<21:3>

                                                           READ – TBLPTR<21:0>

DS39609C-page 64                                                                    2003-2013 Microchip Technology Inc.
                   PIC18F6520/8520/6620/8620/6720/8720

5.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                     The internal program memory is typically organized by

reads from program memory are performed one byte at                   words. The Least Significant bit of the address selects

a time.                                                               between the high and low bytes of the word. Figure 5-4

                                                                      shows     the  interface     between  the   internal  program

                                                                      memory and the TABLAT.

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

             MOVLW             CODE_ADDR_LOW

             MOVWF             TBLPTRL

READ_WORD

             TBLRD*+                                         ;  read  into      TABLAT  and  increment

             MOVF              TABLAT,   W                   ;  get   data

             MOVWF             WORD_EVEN

             TBLRD*+                                         ;  read  into      TABLAT  and  increment

             MOVFW             TABLAT,   W                   ;  get   data

             MOVWF             WORD_ODD

 2003-2013 Microchip Technology Inc.                                                                            DS39609C-page 65
PIC18F6520/8520/6620/8620/6720/8720

5.4   Erasing Flash Program Memory                                        5.4.1            FLASH PROGRAM MEMORY

The minimum erase block is 32 words or 64 bytes. Only                                      ERASE SEQUENCE

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      1.    Load Table Pointer with address of row being

supported.                                                                      erased.

When  initiating  an  erase        sequence    from    the  micro-        2.    Set the EECON1 register for the erase

controller itself, a block of 64 bytes of program memory                        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

TBLPTR<5:0> are ignored.                                                           memory;

The EECON1 register commands the erase operation.                               •  set WREN bit to enable writes;

The EEPGD bit must be set to point to the Flash pro-                            •  set FREE bit to enable the erase.

gram memory. The WREN bit must be set to enable                           3.    Disable interrupts.

write operations. The FREE bit is set to select an erase

operation.                                                                4.    Write 55h to EECON2.

For protection, the write initiate sequence for EECON2                    5.    Write AAh to EECON2.

must be used.                                                             6.    Set the WR bit. This will begin the row erase

A long write is necessary for erasing the internal Flash.                       cycle.

Instruction  execution     is  halted   while  in   a  long     write     7.    The CPU will stall for duration of the erase

cycle. The long write will be terminated by the internal                        (about 2 ms using internal timer).

programming timer.                                                        8.    Execute a NOP.

                                                                          9.    Re-enable interrupts.

EXAMPLE 5-2:               ERASING A FLASH PROGRAM                     MEMORY ROW

                           MOVLW        CODE_ADDR_UPPER                ;  load   TBLPTR    with   the   base

                           MOVWF        TBLPTRU                        ;  address      of  the  memory    block

                           MOVLW        CODE_ADDR_HIGH

                           MOVWF        TBLPTRH

                           MOVLW        CODE_ADDR_LOW

                           MOVWF        TBLPTRL

             ERASE_ROW

                           BSF          EECON1,      EEPGD             ;  point    to   Flash   program   memory

                           BCF          EECON1,      CFGS              ;  access   Flash    program     memory

                           BSF          EECON1,      WREN              ;  enable   write    to    memory

                           BSF          EECON1,      FREE              ;  enable   Row     Erase  operation

                           BCF          INTCON,      GIE               ;  disable      interrupts

                           MOVLW        55h

                           MOVWF        EECON2                         ;  write    55H

      Required             MOVLW        AAh

      Sequence             MOVWF        EECON2                         ;  write    AAH

                           BSF          EECON1,      WR                ;  start    erase   (CPU   stall)

                           NOP

                           BSF          INTCON,      GIE               ;  re-enable        interrupts

DS39609C-page 66                                                                                   2003-2013 Microchip Technology Inc.
                     PIC18F6520/8520/6620/8620/6720/8720

5.5     Writing to Flash Program Memory                                  the holding registers are written. At the end of updating

                                                                         8 registers, the EECON1 register must be written to, to

The minimum programming block is 4 words or 8 bytes.                     start the programming operation with a long write.

Word or byte programming is not supported.                               The long write is necessary for programming the inter-

Table writes are used internally to load the holding reg-                nal Flash. Instruction execution is halted while in a long

isters needed to program the Flash memory. There are                     write cycle. The long write will be terminated by the

8   holding  registers    used  by  the  table    writes    for          internal programming timer.

programming.                                                             The EEPROM on-chip timer controls the write time.

Since the Table Latch (TABLAT) is only a single byte,                    The write/erase voltages are generated by an on-chip

the TBLWT instruction has to be executed 8 times for                     charge pump, rated to operate over the voltage range

each    programming     operation.  All  of  the  table  write           of the device for byte or word operations.

operations will essentially be short writes, because only

FIGURE 5-5:               TABLE WRITES TO FLASH PROGRAM MEMORY

                                                                 TABLAT

                                                               Write Register

                          8                              8                          8                                        8

    TBLPTR = xxxxx0             TBLPTR = xxxxx1                TBLPTR = xxxxx2                   TBLPTR = xxxxx7

              Holding Register               Holding Register                Holding Register                      Holding Register

                                                               Program  Memory

5.5.1        FLASH PROGRAM MEMORY                                        9.    Write 55h to EECON2.

             WRITE SEQUENCE                                              10.   Write AAh 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 (about

1.   Read 64 bytes into RAM.                                                   2 ms using internal timer).

2.   Update data values in RAM as necessary.                             13.   Execute a NOP.

3.   Load Table Pointer with address being erased.                       14.   Re-enable interrupts.

4.   Do the row erase procedure.                                         15.   Repeat     steps  6-14     seven    times,    to   write

5.   Load Table Pointer      with   address  of   first  byte                  64 bytes.

     being written.                                                      16.   Verify the memory (table read).

6.   Write the first 8 bytes into the holding registers                  This procedure will require about 18 ms to update one

     with auto-increment.                                                row of 64 bytes of memory. An example of the required

7.   Set the EECON1 register for the write operation:                    code is given in Example 5-3.

     •  set EEPGD bit to point to program memory                             Note:     Before    setting  the    WR    bit,  the  Table

     •  clear the CFGS bit to access program                                           Pointer   address    needs  to  be    within  the

        memory                                                                         intended address range of the eight bytes

     •  set WREN to enable byte writes                                                 in the holding register.

8.   Disable interrupts.

 2003-2013 Microchip Technology Inc.                                                                              DS39609C-page 67
PIC18F6520/8520/6620/8620/6720/8720

EXAMPLE 5-3:       WRITING TO FLASH PROGRAM MEMORY

                  MOVLW    D’64                 ;  number     of   bytes   in  erase      block

                  MOVWF    COUNTER

                  MOVLW    BUFFER_ADDR_HIGH     ;  point   to     buffer

                  MOVWF    FSR0H

                  MOVLW    BUFFER_ADDR_LOW

                  MOVWF    FSR0L

                  MOVLW    CODE_ADDR_UPPER      ;  Load   TBLPTR     with   the     base

                  MOVWF    TBLPTRU              ;  address     of  the    memory    block

                  MOVLW    CODE_ADDR_HIGH

                  MOVWF    TBLPTRH

                  MOVLW    CODE_ADDR_LOW

                  MOVWF    TBLPTRL

READ_BLOCK

                  TBLRD*+                       ;  read   into     TABLAT,     and  inc

                  MOVF     TABLAT,   W          ;  get   data

                  MOVWF    POSTINC0             ;  store   data

                  DECFSZ   COUNTER              ;  done?

                  BRA      READ_BLOCK           ;  repeat

MODIFY_WORD

                  MOVLW    DATA_ADDR_HIGH       ;  point   to     buffer

                  MOVWF    FSR0H

                  MOVLW    DATA_ADDR_LOW

                  MOVWF    FSR0L

                  MOVLW    NEW_DATA_LOW         ;  update     buffer     word

                  MOVWF    POSTINC0

                  MOVLW    NEW_DATA_HIGH

                  MOVWF    INDF0

ERASE_BLOCK

                  MOVLW    CODE_ADDR_UPPER      ;  load   TBLPTR     with   the     base

                  MOVWF    TBLPTRU              ;  address     of  the    memory    block

                  MOVLW    CODE_ADDR_HIGH

                  MOVWF    TBLPTRH

                  MOVLW    CODE_ADDR_LOW

                  MOVWF    TBLPTRL

                  BSF      EECON1,   EEPGD      ;  point   to     Flash   program   memory

                  BCF      EECON1,   CFGS       ;  access     Flash   program       memory

                  BSF      EECON1,   WREN       ;  enable     write   to   memory

                  BSF      EECON1,   FREE       ;  enable     Row  Erase    operation

                  BCF      INTCON,   GIE        ;  disable     interrupts

                  MOVLW    55h

                  MOVWF    EECON2               ;  write   55H

Required          MOVLW    AAh

Sequence          MOVWF    EECON2               ;  write   AAH

                  BSF      EECON1,   WR         ;  start   erase     (CPU   stall)

                  NOP

                  BSF      INTCON,   GIE        ;  re-enable       interrupts

                  TBLRD*-                       ;  dummy   read    decrement

WRITE_BUFFER_BACK

                  MOVLW    8                    ;  number     of   write   buffer   groups       of  8  bytes

                  MOVWF    COUNTER_HI

                  MOVLW    BUFFER_ADDR_HIGH     ;  point   to     buffer

                  MOVWF    FSR0H

                  MOVLW    BUFFER_ADDR_LOW

                  MOVWF    FSR0L

PROGRAM_LOOP

                  MOVLW    8                    ;  number     of   bytes   in  holding      register

                  MOVWF    COUNTER

WRITE_WORD_TO_HREGS

                  MOVFF    POSTINC0,     WREG   ;  get   low   byte   of   buffer   data

                                                ;  present     data   to   table    latch

                  TBLWT+*                       ;  write   data,     perform     a  short   write

                                                ;  to   internal     TBLWT     holding    register.

                  DECFSZ   COUNTER              ;  loop   until    buffers     are  full

                  BRA      WRITE_WORD_TO_HREGS

DS39609C-page 68                                                            2003-2013 Microchip Technology    Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

EXAMPLE 5-3:             WRITING TO FLASH         PROGRAM MEMORY (CONTINUED)

PROGRAM_MEMORY

                      BSF       EECON1,    EEPGD            ;       point   to   Flash      program  memory

                      BCF       EECON1,    CFGS             ;       access   Flash      program    memory

                      BSF       EECON1,    WREN             ;       enable   write      to  memory

                      BCF       INTCON,    GIE              ;       disable      interrupts

                      MOVLW     55h

                      MOVWF     EECON2                      ;       write   55H

       Required       MOVLW     AAh

       Sequence       MOVWF     EECON2                      ;       write   AAH

                      BSF       EECON1,    WR               ;       start   program     (CPU  stall)

                      NOP

                      BSF       INTCON,    GIE              ;       re-enable     interrupts

                      DECFSZ    COUNTER_HI                  ;       loop   until  done

                      BRA       PROGRAM_LOOP

                      BCF       EECON1,    WREN             ;       disable      write  to  memory

5.5.2          WRITE VERIFY                                               5.5.4         PROTECTION AGAINST

Depending      on  the   application,  good    programming                              SPURIOUS WRITES

practice may dictate that the value written to the mem-                   To protect against spurious writes to Flash program

ory should be verified against the original value. This                   memory,    the    write  initiate  sequence  must  also    be

should be used in applications where excessive writes                     followed. See Section 23.0 “Special Features of the

can stress bits near the specification limit.                             CPU” for more detail.

5.5.3          UNEXPECTED TERMINATION OF                                  5.6       Flash Program Operation During

               WRITE OPERATION                                                      Code Protection

If a write is terminated by an unplanned event, such as

loss of power or an unexpected Reset, the memory                          See Section 23.0 “Special Features of the CPU” for

location just programmed should be verified and repro-                    details on code protection of Flash program memory.

grammed if needed. The WRERR bit is set when a

write operation is interrupted by a MCLR Reset, or a

WDT Time-out Reset during normal operation. In these

situations, users can check the WRERR bit and rewrite

the location.

TABLE 5-2:            REGISTERS ASSOCIATED WITH PROGRAM FLASH MEMORY

                                                                                                             Value on    Value on

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

                                                                                                                             Resets

TBLPTRU            —         —         bit 21   Program Memory Table Pointer Upper Byte                      --00  0000  --00  0000

                                                (TBLPTR<20:16>)

TBPLTRH        Program Memory Table Pointer High Byte (TBLPTR<15:8>)                                         0000  0000  0000  0000

TBLPTRL        Program Memory Table Pointer High Byte (TBLPTR<7:0>)                                          0000  0000  0000  0000

TABLAT         Program Memory Table Latch                                                                    0000  0000  0000  0000

INTCON         GIE/GIEH  PEIE/GIEL     TMR0IE    INTE    RBIE        TMR0IF          INTF          RBIF      0000  0000  0000  0000

EECON2         EEPROM Control Register 2 (not a physical register)                                           —               —

EECON1         EEPGD       CFGS         —        FREE    WRERR        WREN              WR           RD      xx-0  x000  uu-0  u000

IPR2               —       CMIP         —        EEIP    BCLIP            LVDIP    TMR3IP          CCP2IP    ---1  1111  ---1  1111

PIR2               —       CMIF         —        EEIF    BCLIF            LVDIF    TMR3IF          CCP2IF    ---0  0000  ---0  0000

PIE2               —       CMIE         —        EEIE    BCLIE            LVDIE    TMR3IE          CCP2IE    ---0  0000  ---0  0000

Legend:    x = unknown, u = unchanged, r = reserved, - = unimplemented, read as ‘0’.

           Shaded cells are not used during Flash/EEPROM access.

 2003-2013 Microchip Technology Inc.                                                                              DS39609C-page 69
PIC18F6520/8520/6620/8620/6720/8720

NOTES:

DS39609C-page 70   2003-2013 Microchip Technology Inc.
                    PIC18F6520/8520/6620/8620/6720/8720

6.0        EXTERNAL MEMORY                                            6.1               Program Memory Modes and the

           INTERFACE                                                                    External Memory Interface

Note:      The     External       Memory   Interface       is  not    As         previously        noted,  PIC18F8X20         controllers     are

           implemented         on  PIC18F6X20          (64-pin)       capable           of    operating    in     any   one   of   four  program

           devices.                                                   memory            modes,      using  combinations       of   on-chip   and

                                                                      external program memory. The functions of the multi-

The   External  Memory      Interface  is  a     feature   of  the    plexed            port  pins    depend      on   the    program    memory

PIC18F8X20      devices     that   allows  the   controller    to     mode selected, as well as the setting of the EBDIS bit.

access   external   memory        devices  (such       as  Flash,     In Microprocessor Mode, the external bus is always

EPROM, SRAM, etc.) as program or data memory.                         active and the port pins have only the external bus

The physical implementation of the interface uses 27                  function.

pins. These pins are reserved for external address/data               In Microcontroller Mode, the bus is not active and

bus functions; they are multiplexed with I/O port pins on             the pins have their port functions only. Writes to the

four ports. Three I/O ports are multiplexed with the                  MEMCOM register are not permitted.

address/data bus, while the fourth port is multiplexed                In         Microprocessor          with     Boot  Block      or    Extended

with the bus control signals. The I/O port functions are              Microcontroller Mode, the external program memory

enabled when the EBDIS bit in the MEMCON register                     bus shares I/O port functions on the pins. When the

is set (see Register 6-1). A list of the multiplexed pins             device            is  fetching  or   doing       table  read/table     write

and their functions is provided in Table 6-1.                         operations on the external program memory space, the

As    implemented     in  the  PIC18F8X20        devices,      the    pins will have the external bus function. If the device is

interface operates in a similar manner to the external                fetching and accessing internal program memory loca-

memory     interface      introduced   on  PIC18C601/801              tions only, the EBDIS control bit will change the pins

microcontrollers. The most notable difference is that                 from       external        memory    to     I/O   port  functions.     When

the interface on PIC18F8X20 devices only operates in                  EBDIS = 0,              the  pins    function     as    the  external  bus.

16-bit modes. The 8-bit mode is not supported.                        When       EBDIS = 1, the pins function                 as I/O ports.

For a more complete discussion of the operating modes                            Note:        Maximum      FOSC   for   the   PIC18FX520        is

that  use  the    external     memory      interface,  refer   to                             limited to 25 MHz when using the external

Section 4.1.1      “PIC18F8X20         Program         Memory                                 memory interface.

Modes”.

REGISTER 6-1:             MEMCON REGISTER

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

                               EBDIS          —                WAIT1  WAIT0                 —              —            WM1              WM0

                            bit7                                                                                                             bit0

           bit 7          EBDIS: External Bus Disable bit

                          1 = External system bus disabled, all external bus drivers are mapped as I/O ports

                          0 = External system bus enabled and I/O ports are disabled

           bit 6          Unimplemented: Read as ‘0’

           bit 5-4        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

           bit 3-2        Unimplemented: Read as ‘0’

           bit 1-0        WM<1:0>: TBLWRT Operation with 16-bit Bus bits

                          1x = Word Write mode: TABLAT<0> and TABLAT<1> word output, WRH active when

                                  TABLAT<1> written

                          01 = Byte Select mode: TABLAT data copied on both MSB and LSB, WRH and (UB or LB)

                                  will activate

                          00 = Byte Write mode: TABLAT data copied on both MSB and LSB, WRH or WRL will activate

                            Legend:

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

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

 2003-2013 Microchip Technology Inc.                                                                                         DS39609C-page 71
PIC18F6520/8520/6620/8620/6720/8720

If  the  device  fetches     or  accesses    external  memory                When the device is executing out of internal memory

while EBDIS = 1, the pins will switch to external bus. If                    (EBDIS = 0) in Microprocessor with Boot Block mode,

the  EBDIS     bit  is  set  by  a    program  executing   from              or Extended Microcontroller mode, the control signals

external memory, the action of setting the bit will be                       will NOT be active. They will go to a state where the

delayed until the program branches into the internal                         AD<15:0>      and  A<19:16>  are     tri-state;  the  CE,  OE,

memory.    At    that   time,    the  pins   will  change  from              WRH, WRL, UB and LB signals are ‘1’ and ALE and

external bus to I/O ports.                                                   BA0 are ‘0’.

TABLE 6-1:              PIC18F8X20 EXTERNAL BUS – I/O PORT FUNCTIONS

     Name               Port          Bit                                              Function

RD0/AD0             PORTD             bit 0        Input/Output or System Bus Address bit 0 or Data bit 0.

RD1/AD1             PORTD             bit 1        Input/Output or System Bus Address bit 1 or Data bit 1.

RD2/AD2             PORTD             bit 2        Input/Output or System Bus Address bit 2 or Data bit 2.

RD3/AD3             PORTD             bit 3        Input/Output or System Bus Address bit 3 or Data bit 3.

RD4/AD4             PORTD             bit 4        Input/Output or System Bus Address bit 4 or Data bit 4.

RD5/AD5             PORTD             bit 5        Input/Output or System Bus Address bit 5 or Data bit 5.

RD6/AD6             PORTD             bit 6        Input/Output or System Bus Address bit 6 or Data bit 6.

RD7/AD7             PORTD             bit 7        Input/Output or System Bus Address bit 7 or Data bit 7.

RE0/AD8             PORTE             bit 0        Input/Output  or  System  Bus  Address  bit  8 or Data bit 8.

RE1/AD9             PORTE             bit 1        Input/Output  or  System  Bus  Address  bit  9 or Data bit 9.

RE2/AD10            PORTE             bit 2        Input/Output  or  System  Bus  Address  bit  10 or Data bit 10.

RE3/AD11            PORTE             bit 3        Input/Output  or  System  Bus  Address  bit  11 or Data bit 11.

RE4/AD12            PORTE             bit 4        Input/Output  or  System  Bus  Address  bit  12 or Data bit 12.

RE5/AD13            PORTE             bit 5        Input/Output  or  System  Bus  Address  bit  13 or Data bit 13.

RE6/AD14            PORTE             bit 6        Input/Output  or  System  Bus  Address  bit  14 or Data bit 14.

RE7/AD15            PORTE             bit 7        Input/Output  or  System  Bus  Address  bit  15 or Data bit 15.

RH0/A16             PORTH             bit 0        Input/Output  or  System  Bus  Address  bit  16.

RH1/A17             PORTH             bit 1        Input/Output or System Bus Address bit 17.

RH2/A18             PORTH             bit 2        Input/Output or System Bus Address bit 18.

RH3/A19             PORTH             bit 3        Input/Output or System Bus Address bit 19.

RJ0/ALE             PORTJ             bit 0        Input/Output or System Bus Address Latch Enable (ALE) Control pin.

RJ1/OE              PORTJ             bit 1        Input/Output or System Bus Output Enable (OE) Control pin.

RJ2/WRL             PORTJ             bit 2        Input/Output or System Bus Write Low (WRL) Control pin.

RJ3/WRH             PORTJ             bit 3        Input/Output or System Bus Write High (WRH) Control pin.

RJ4/BA0             PORTJ             bit 4        Input/Output or System Bus Byte Address bit 0.

RJ5/CE              PORTJ             bit 5        Input/Output or System Bus Chip Enable (CE) Control pin.

RJ6/LB              PORTJ             bit 6        Input/Output or System Bus Lower Byte Enable (LB) Control pin.

RJ7/UB              PORTJ             bit 7        Input/Output or System Bus Upper Byte Enable (UB) Control pin.

DS39609C-page 72                                                                                 2003-2013 Microchip Technology Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

6.2        16-bit Mode                                                            In Byte Select mode, JEDEC standard Flash memories

                                                                                  will require BA0 for the byte address line and one I/O

The  External     Memory       Interface          implemented         in          line to select between Byte and Word mode. The other

PIC18F8X20        devices    operates  only       in  16-bit   mode.              16-bit modes do not need BA0. JEDEC standard static

The mode selection is not software configurable, but is                           RAM memories will use the UB or LB signals for byte

programmed via the configuration bits.                                            selection.

The WM<1:0> bits in the MEMCON register determine

three types of connections in 16-bit mode. They are                               6.2.1           16-BIT BYTE WRITE MODE

referred to as:                                                                   Figure 6-1      shows    an  example      of   16-bit  Byte  Write

•   16-bit Byte Write                                                             mode for PIC18F8X20 devices. This mode is used for

•   16-bit Word Write                                                             two separate 8-bit memories connected for 16-bit oper-

•   16-bit Byte Select                                                            ation. This generally includes basic EPROM and Flash

                                                                                  devices.    It  allows   table  writes    to  byte-wide  external

These three different configurations allow the designer                           memories.

maximum flexibility in using 8-bit and 16-bit memory                              During a TBLWT instruction cycle, the TABLAT data is

devices.                                                                          presented       on  the    upper  and     lower  bytes       of  the

For all 16-bit modes, the Address Latch Enable (ALE)                              AD15:AD0 bus. The appropriate WRH or WRL control

pin  indicates    that  the    address        bits    A<15:0>  are                line is strobed on the LSb of the TBLPTR.

available     on  the   External     Memory         Interface  bus.

Following the address latch, the Output Enable signal

(OE) will enable both bytes of program memory at once

to   form  a  16-bit   instruction   word.    The     Chip    Enable

signal (CE) is active at any time that the microcontroller

accesses external memory, whether reading or writing;

it is inactive (asserted high) whenever the device is in

Sleep mode.

FIGURE 6-1:                 16-BIT BYTE WRITE MODE                        EXAMPLE

                                                                          D<7:0>

     PIC18F8X20                                                                                       (MSB)                        (LSB)

                  AD<7:0>                                      373        A<19:0>

                                                                                                  A                           A

                                                                          D<15:8>                 D<7:0>                  D<7:0>

                                                                                                                                   D<7:0>

                                                                                                  CE                               CE

                  AD<15:8>                                     373                                OE  WR(1)                        OE    WR(1)

                        ALE

                  A<19:16>

                        CE

                        OE

                       WRH

                       WRL

                                                                                                                  Address Bus

                                                                                                                  Data Bus

                                                                                                                  Control Lines

     Note     1:  This signal  only  applies  to  table  writes. See  Section 5.1 “Table    Reads and Table       Writes”.

 2003-2013 Microchip Technology Inc.                                                                                            DS39609C-page 73
PIC18F6520/8520/6620/8620/6720/8720

6.2.2       16-BIT WORD WRITE MODE                                         During   a        TBLWT    cycle     to        an  odd  address

Figure 6-2  shows      an   example       of  16-bit   Word   Write        (TBLPTR<0> = 1), the TABLAT data is presented on

mode for PIC18F8X20 devices. This mode is used for                         the upper byte of the AD15:AD0 bus. The contents of

word-wide   memories,       which     includes      some      of  the      the holding latch are presented on the lower byte of the

EPROM and Flash type memories. This mode allows                            AD15:AD0 bus.

opcode fetches and table reads from all forms of 16-bit                    The WRH signal is strobed for each write cycle; the

memory   and    table   writes    to  any     type     of  word-wide       WRL pin is unused. The signal on the BA0 pin indicates

external memories. This method makes a distinction                         the LSb of TBLPTR, but it is left unconnected. Instead,

between TBLWT cycles to even or odd addresses.                             the UB and LB signals are active to select both bytes.

During   a     TBLWT       cycle      to  an       even       address      The obvious limitation to this method is that the table

(TBLPTR<0> = 0), the TABLAT data is transferred to a                       write must be done in pairs on a specific word boundary

holding  latch  and    the  external      address      data   bus  is      to correctly write a word location.

tri-stated for the data portion of the bus cycle. No write

signals are activated.

FIGURE 6-2:                 16-BIT WORD WRITE MODE                         EXAMPLE

         PIC18F8X20

                       AD<7:0>                                     373              A<20:1>           A         JEDEC Word

                                                                                                                EPROM Memory

                                                                                    D<15:0>

                                                                                                      D<15:0>

                                                                                                      CE           OE     WR(1)

                     AD<15:8>

                                                                   373

                            ALE

                       A<19:16>

                            CE

                            OE

                            WRH

                                                                                                      Address Bus

                                                                                                      Data Bus

                                                                                                      Control Lines

         Note   1:  This signal   only    applies  to  table  writes. See  Section  5.1 “Table Reads  and Table Writes”.

DS39609C-page 74                                                                                       2003-2013 Microchip Technology Inc.
                    PIC18F6520/8520/6620/8620/6720/8720

6.2.3         16-BIT BYTE SELECT MODE                            Flash and SRAM devices use different control signal

Figure 6-3    shows  an     example    of  16-bit  Byte  Select  combinations to implement Byte Select mode. JEDEC

mode for PIC18F8X20 devices. This mode allows table              standard Flash memories require that a controller I/O

write operations to word-wide external memories with             port pin be connected to the memory’s BYTE/WORD

byte selection capability. This generally includes both          pin to provide the select signal. They also use the BA0

word-wide Flash and SRAM devices.                                signal from the controller as a byte address. JEDEC

                                                                 standard static RAM memories, on the other hand, use

During a TBLWT cycle, the TABLAT data is presented               the UB or LB signals to select the byte.

on the upper and lower byte of the AD15:AD0 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 6-3:              16-BIT BYTE SELECT MODE                 EXAMPLE

       PIC18F8X20                                                A<20:1>

                  AD<7:0>                                373              A  JEDEC Word

                                                                                  Flash Memory

                                                                                                                        D<15:0>

                                                                                                             D<15:0>

                  AD<15:8>                                       138      CE

                                                         373              A0

                        ALE                                               BYTE/WORD                          OE  WR(1)

                  A<19:16>

                        OE

                     WRH

                     WRL                                         A<20:1>  A  JEDEC Word

                        BA0                                                       SRAM Memory

                        I/O                                                                                             D<15:0>

                                                                          CE                                 D<15:0>

                        LB                                                LB

                        UB                                                UB  OE  WR(1)

                                                                                  Address Bus

                                                                                  Data Bus

                                                                                  Control Lines

        Note  1:  This signal only applies to table writes. See Section 5.1 “Table Reads and Table Writes”.

 2003-2013 Microchip Technology Inc.                                                                            DS39609C-page 75
PIC18F6520/8520/6620/8620/6720/8720

6.2.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 6-4 through Figure 6-6.

FIGURE 6-4:                 EXTERNAL MEMORY BUS TIMING                             FOR TBLRD (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

               ALE

               OE

        WRH                 ‘1’                                                                                                 ‘1’

        WRL                 ‘1’                                                                                                 ‘1’

               CE           ‘0’                                                                                                 ‘0’

                                                                                                          1 TCY Wait

        Memory                          Opcode Fetch                                   Table Read

               Cycle                    MOVLW 55h                                      of 92h

                                        from 007556h                                   from 199E67h

        Instruction

        Execution                       TBLRD Cycle 1                                  TBLRD Cycle 2

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

        ALE

        OE

       Memory                    Opcode Fetch                Opcode Fetch              TBLRD 92h                  Opcode Fetch

        Cycle                    TBLRD  *                    MOVLW 55h                 from 199E67h               ADDLW 55h

                                 from 000100h                from 000102h                                         from 000104h

       Instruction               INST(PC-2)                  TBLRD Cycle 1             TBLRD Cycle 2

       Execution                                                                                                  MOVLW

DS39609C-page 76                                                                                       2003-2013 Microchip Technology  Inc.
             PIC18F6520/8520/6620/8620/6720/8720

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

Cycle               SLEEP                      MOVLW 55h

                 from 007554h                  from 007556h

Instruction      INST(PC-2)

Execution                                      SLEEP

 2003-2013 Microchip Technology Inc.                                             DS39609C-page 77
PIC18F6520/8520/6620/8620/6720/8720

NOTES:

DS39609C-page 78   2003-2013 Microchip Technology Inc.
                     PIC18F6520/8520/6620/8620/6720/8720

7.0      DATA EEPROM MEMORY                                        7.1            EEADR and EEADRH

The data EEPROM is readable and writable during                    The address register pair can address up to a maxi-

normal operation over the entire VDD range. The data               mum of 1024 bytes of data EEPROM. The two Most

memory   is   not    directly  mapped    in  the  register   file  Significant bits of the address are stored in EEADRH,

space. Instead, it is indirectly addressed through the             while   the    remaining   eight  Least    Significant  bits  are

Special Function Registers (SFR).                                  stored     in  EEADR.      The  six  Most  Significant  bits   of

There    are  five   SFRs      used  to  read    and  write  the   EEADRH are unused and are read as ‘0’.

program and data EEPROM memory. These registers                    7.2        EECON1 and EECON2 Registers

are:

•  EECON1                                                          EECON1 is the control register for EEPROM memory

•  EECON2                                                          accesses.

•  EEDATA                                                          EECON2 is not a physical register. Reading EECON2

•  EEADRH                                                          will   read    all  ‘0’s.  The   EECON2      register   is  used

•  EEADR                                                           exclusively in the EEPROM write sequence.

The EEPROM data memory allows byte read and write.                 Control bits, RD and WR, initiate read and write opera-

When interfacing to the data memory block, EEDATA                  tions, respectively. These bits cannot be cleared, only

holds    the  8-bit  data      for  read/write.  EEADR       and   set, in software. They are cleared in hardware at the

EEADRH hold the address of the EEPROM location                     completion of the read or write operation. The inability

being accessed. These devices have 1024 bytes of                   to clear the WR bit in software prevents the accidental

data     EEPROM      with  an  address   range    from  00h  to    or premature termination of a write operation.

3FFh.                                                              The WREN bit, when set, will allow a write operation.

The EEPROM data memory is rated for high erase/                    On power-up, the WREN bit is clear. The WRERR bit is

write cycles. A byte write automatically erases the loca-          set when a write operation is interrupted by a MCLR

tion and writes the new data (erase-before-write). The             Reset or a WDT Time-out Reset during normal opera-

write time is controlled by an on-chip timer. The write            tion.  In    these  situations,   the  user  can  check       the

time will vary with voltage and temperature, as well as            WRERR bit and rewrite the location. It is necessary to

from chip to chip. Please refer to parameter D122 (see             reload the data and address registers (EEDATA and

Section 26.0 “Electrical Characteristics”) for exact               EEADR)         due  to     the  Reset  condition  forcing     the

limits.                                                            contents of the registers to zero.

                                                                   Note:          Interrupt flag bit, EEIF in the PIR2 register,

                                                                                  is set when write is complete. It must be

                                                                                  cleared in software.

 2003-2013 Microchip Technology Inc.                                                                         DS39609C-page 79
PIC18F6520/8520/6620/8620/6720/8720

REGISTER 7-1:     EECON1 REGISTER (ADDRESS FA6h)

                  R/W-x    R/W-x             U-0        R/W-0           R/W-x  R/W-0          R/S-0         R/S-0

                  EEPGD    CFGS              —             FREE         WRERR  WREN           WR            RD

                  bit 7                                                                                               bit 0

bit  7            EEPGD: Flash Program/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 or calibration 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=     A write operation is prematurely terminated

                         (any MCLR or any WDT Reset during self-timed programming in normal operation)

                  0=     The write operation completed

                  Note:    When a WRERR occurs, the EEPGD or FREE bits are not cleared. This allows

                           tracing of the error condition.

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

                  0=     Does not initiate an EEPROM read

                  Legend:

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

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

DS39609C-page 80                                                                2003-2013 Microchip Technology Inc.
                     PIC18F6520/8520/6620/8620/6720/8720

7.3       Reading the Data EEPROM                                             control bit (EECON1<6>) and then set the RD control

          Memory                                                              bit (EECON1<0>). The data is available for the very

                                                                              next instruction cycle; therefore, the EEDATA register

To read a data memory location, the user must write the                       can be read by the next instruction. EEDATA will hold

address to the EEADRH:EEADR register pair, clear the                          this value until another read operation, or until it is

EEPGD       control  bit   (EECON1<7>),    clear   the   CFGS                 written to by the user (during a write operation).

EXAMPLE     7-1:           DATA   EEPROM READ

     MOVLW        DATA_EE_ADDRH      ;

     MOVWF        EEADRH             ;  Upper   bits     of  Data     Memory      Address      to  read

     MOVLW        DATA_EE_ADDR       ;

     MOVWF        EEADR              ;  Lower   bits     of  Data     Memory      Address      to  read

     BCF          EECON1,  EEPGD     ;  Point   to  DATA     memory

     BCF          EECON1,  CFGS      ;  Access     EEPROM

     BSF          EECON1,  RD        ;  EEPROM     Read

     MOVF         EEDATA,  W         ;  W  =  EEDATA

7.4       Writing to the Data EEPROM                                          should be kept clear at all times, except when updating

          Memory                                                              the      EEPROM.       The     WREN           bit  is    not  cleared

                                                                              by hardware

To write an EEPROM data location, the address must                            After a write sequence has been initiated, EECON1,

first be written to the EEADRH:EEADR register pair                            EEADRH, EEADR and EEDATA cannot be modified.

and the data written to the EEDATA register. Then the                         The WR bit will be inhibited from being set unless the

sequence in Example 7-2 must be followed to initiate                          WREN bit is set. Both WR and WREN cannot be set

the write cycle.                                                              with the same instruction.

The write will not initiate if the above sequence is not                      At   the  completion       of  the  write  cycle,      the  WR  bit  is

exactly followed (write 55h to EECON2, write AAh to                           cleared in hardware and the EEPROM Write Complete

EECON2, then set WR bit) for each byte. It is strongly                        Interrupt Flag bit (EEIF) is set. The user may either

recommended that interrupts be disabled during this                           enable    this   interrupt,    or   poll  this   bit.  EEIF   must   be

code segment.                                                                 cleared by software.

Additionally, the WREN bit in EECON1 must be set to

enable  writes.      This  mechanism    prevents   accidental

writes  to  data     EEPROM    due    to   unexpected    code

execution   (i.e.,   runaway   programs).     The  WREN         bit

EXAMPLE 7-2:               DATA EEPROM WRITE

                     MOVLW      DATA_EE_ADDRH                ;

                     MOVWF      EEADRH                       ;  Upper     bits     of   Data   Memory     Address       to    write

                     MOVLW      DATA_EE_ADDR                 ;

                     MOVWF      EEADR                        ;  Lower     bits     of   Data   Memory     Address       to    write

                     MOVLW      DATA_EE_DATA                 ;

                     MOVWF      EEDATA                       ;  Data   Memory      Value      to   write

                     BCF        EECON1, EEPGD                ;  Point     to   DATA     memory

                     BCF        EECON1, CFGS                 ;  Access    EEPROM

                     BSF        EECON1, WREN                 ;  Enable    writes

                     BCF        INTCON, GIE                  ;  Disable       Interrupts

                     MOVLW      55h                          ;

     Required        MOVWF      EECON2                       ;  Write     55h

     Sequence        MOVLW      AAh                          ;

                     MOVWF      EECON2                       ;  Write     AAh

                     BSF        EECON1, WR                   ;  Set   WR  bit      to   begin     write

                     BSF        INTCON, GIE                  ;  Enable    Interrupts

                                                             ;  User   code     execution

                     BCF        EECON1, WREN                 ;  Disable       writes    on    write  complete           (EEIF    set)

 2003-2013 Microchip Technology Inc.                                                                                            DS39609C-page 81
PIC18F6520/8520/6620/8620/6720/8720

7.5       Write Verify                                                       7.8         Using the Data EEPROM

Depending     on  the    application,   good     programming                 The data EEPROM is a high endurance, byte address-

practice may dictate that the value written to the mem-                      able array that has been optimized for the storage of

ory should be verified against the original value. This                      frequently   changing  information    (e.g.,  program   vari-

should be used in applications where excessive writes                        ables or other data that are updated often). Frequently

can stress bits near the specification limit.                                changing values will typically be updated more often

                                                                             than specification D124. If this is not the case, an array

7.6       Protection Against Spurious Write                                  refresh must be performed. For this reason, variables

                                                                             that  change     infrequently  (such  as    constants,  IDs,

There are conditions when the user may not want to                           calibration, etc.) should be stored in Flash program

write to the data EEPROM memory. To protect against                          memory.

spurious EEPROM writes, various mechanisms have                              A simple data EEPROM refresh routine is shown in

been built-in. On power-up, the WREN bit is cleared.                         Example 7-3.

Also, the Power-up Timer (72 ms duration) prevents

EEPROM write.                                                                 Note:       If  data  EEPROM     is  only    used  to  store

The write initiate sequence and the WREN bit together                                     constants and/or data that changes rarely,

help  prevent  an  accidental     write     during  brown-out,                            an array refresh is likely not required. See

power glitch, or software malfunction.                                                    specification D124.

7.7       Operation During Code-Protect

Data  EEPROM       memory      has     its  own  code-protect

mechanism.     External  read  and      write  operations  are

disabled if either of these mechanisms are enabled.

The microcontroller itself can both read and write to the

internal data EEPROM, regardless of the state of the

code-protect configuration bit. Refer to Section 23.0

“Special   Features      of  the      CPU”     for  additional

information.

EXAMPLE 7-3:             DATA EEPROM             REFRESH ROUTINE

          CLRF     EEADR                            ;  Start     at   address         0

          CLRF     EEADRH                           ;

          BCF      EECON1,        CFGS              ;  Set   for     memory

          BCF      EECON1,        EEPGD             ;  Set   for     Data     EEPROM

          BCF      INTCON,        GIE               ;  Disable       interrupts

          BSF      EECON1,        WREN              ;  Enable       writes

Loop                                                ;  Loop     to   refresh       array

          BSF      EECON1,        RD                ;  Read     current       address

          MOVLW    55h                              ;

          MOVWF    EECON2                           ;  Write     55h

          MOVLW    AAh                              ;

          MOVWF    EECON2                           ;  Write     AAh

          BSF      EECON1,        WR                ;  Set   WR     bit  to   begin      write

          BTFSC    EECON1,        WR                ;  Wait     for   write       to     complete

          BRA      $-2

          INCFSZ   EEADR,      F                    ;  Increment         address

          BRA      Loop                             ;  Not   zero,       do   it   again

          INCFSZ   EEADRH,        F                 ;  Increment         the  high       address

          BRA      Loop                             ;  Not   zero,       do   it   again

          BCF      EECON1,        WREN              ;  Disable       writes

          BSF      INTCON,        GIE               ;  Enable       interrupts

DS39609C-page 82                                                                                     2003-2013 Microchip Technology Inc.
               PIC18F6520/8520/6620/8620/6720/8720

TABLE 7-1:         REGISTERS ASSOCIATED WITH DATA EEPROM MEMORY

                                                                                              Value on    Value on

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

                                                                                                          Resets

INTCON   GIE/GIEH  PEIE/GIEL   TMR0IE         INT0IE  RBIE    TMR0IF   INT0IF       RBIF      0000  0000  0000  0000

EEADRH      —      —                   —      —       —         —      EE Addr Register High  ----  --00  ----  --00

EEADR    EEPROM Address Register                                                              0000  0000  0000  0000

EEDATA   EEPROM Data Register                                                                 0000  0000  0000  0000

EECON2   EEPROM Control Register 2 (not a physical register)                                  ----  ----  ----  ----

EECON1   EEPGD     CFGS                —      FREE    WRERR   WREN     WR           RD        xx-0  x000  uu-0  u000

IPR2        —      CMIP                —      EEIP    BCLIP     LVDIP  TMR3IP       CCP2IP    ---1  1111  ---1  1111

PIR2        —      CMIF                —      EEIF    BCLIF     LVDIF  TMR3IF       CCP2IF    ---0  0000  ---0  0000

PIE2        —      CMIE                —      EEIE    BCLIE     LVDIE  TMR3IE       CCP2IE    ---0  0000  ---0  0000

Legend:  x = unknown, u = unchanged, r = reserved, – = unimplemented, read as ‘0’.

         Shaded cells are not used during Flash/EEPROM access.

 2003-2013 Microchip Technology Inc.                                                               DS39609C-page 83
PIC18F6520/8520/6620/8620/6720/8720

NOTES:

DS39609C-page 84   2003-2013 Microchip Technology Inc.
                    PIC18F6520/8520/6620/8620/6720/8720

8.0  8 X 8 HARDWARE MULTIPLIER                                   8.2         Operation

8.1  Introduction                                                Example 8-1       shows       the   sequence     to    do  an  8  x    8

                                                                 unsigned        multiply.     Only  one   instruction      is  required

An 8 x 8 hardware multiplier is included in the ALU of           when one argument of the multiply is already loaded in

the PIC18FXX20 devices. By making the multiply a                 the WREG register.

hardware operation, it completes in a single instruction         Example 8-2 shows the sequence to do an 8 x 8 signed

cycle. This is an unsigned multiply that gives a 16-bit          multiply. To account for the sign bits of the arguments,

result. The result is stored in the 16-bit product register      each argument’s Most Significant bit (MSb) is tested

pair (PRODH:PRODL). The multiplier does not affect               and the appropriate subtractions are done.

any flags in the ALUSTA register.

Making the 8 x 8 multiplier execute in a single cycle            EXAMPLE 8-1:                  8 x 8 UNSIGNED

gives the following advantages:                                                                MULTIPLY ROUTINE

•  Higher computational throughput                                    MOVF      ARG1,   W      ;

•  Reduces code size requirements for multiply                        MULWF     ARG2           ;     ARG1   *     ARG2  ->

                                                                                               ;     PRODH:PRODL

   algorithms

The performance increase allows the device to be used

in applications previously reserved for Digital Signal           EXAMPLE 8-2:                  8 x 8 SIGNED MULTIPLY

Processors.                                                                                    ROUTINE

Table 8-1 shows a performance comparison between                      MOVF      ARG1,   W      ;

enhanced  devices    using  the    single-cycle  hardware             MULWF     ARG2           ;     ARG1   *     ARG2  ->

multiply and performing the same function without the                                          ;     PRODH:PRODL

hardware multiply.                                                    BTFSC     ARG2,   SB     ;     Test   Sign  Bit

                                                                      SUBWF     PRODH,      F  ;     PRODH     =  PRODH

                                                                                               ;               -  ARG1

                                                                      MOVF      ARG2,   W      ;

                                                                      BTFSC     ARG1,   SB     ;     Test   Sign  Bit

                                                                      SUBWF     PRODH,      F  ;     PRODH     =  PRODH

                                                                                               ;               -  ARG2

TABLE 8-1:           PERFORMANCE COMPARISON

                                                             Program  Cycles                                Time

     Routine                Multiply Method                  Memory         (Max)

                                                             (Words)                    @ 40 MHz           @ 10 MHz             @ 4 MHz

   8 x 8 unsigned    Without hardware multiply               13              69             6.9 s          27.6 s             69 s

                     Hardware multiply                       1               1              100 ns          400 ns              1 s

   8 x 8 signed      Without hardware multiply               33              91             9.1 s          36.4 s             91 s

                     Hardware multiply                       6               6              600 ns          2.4 s              6 s

   16 x 16 unsigned  Without hardware multiply               21              242            24.2 s         96.8 s             242 s

                     Hardware multiply                       28              28             2.8 s          11.2 s             28 s

   16 x 16 signed    Without hardware multiply               52              254            25.4 s        102.6 s             254 s

                     Hardware multiply                       35              40             4.0 s          16.0 s             40 s

 2003-2013 Microchip Technology Inc.                                                                             DS39609C-page 85
PIC18F6520/8520/6620/8620/6720/8720

Example 8-3    shows  the        sequence    to  do   a  16  x  16   EQUATION 8-2:      16 x 16 SIGNED

unsigned multiply. Equation 8-1 shows the algorithm                                     MULTIPLICATION

that is used. The 32-bit result is stored in four registers,                            ALGORITHM

RES3:RES0.                                                           RES3:RES0

EQUATION 8-1:          16 x 16 UNSIGNED                                 =     ARG1H:ARG1L  ARG2H:ARG2L

                                                                        =     (ARG1H  ARG2H  216) +

                       MULTIPLICATION                                         (ARG1H  ARG2L  28) +

                       ALGORITHM                                              (ARG1L  ARG2H  28) +

                      ARG1H:ARG1L  ARG2H:ARG2L                               (ARG1L  ARG2L) +

RES3:RES0      =                                                              (-1  ARG2H<7>  ARG1H:ARG1L  216) +

               =      (ARG1H  ARG2H  216) +                                 (-1  ARG1H<7>  ARG2H:ARG2L  216)

                      (ARG1H  ARG2L  28) +

                      (ARG1L  ARG2H  28) +

                      (ARG1L  ARG2L)                                EXAMPLE 8-4:       16 x 16 SIGNED

                                                                                        MULTIPLY ROUTINE

EXAMPLE 8-3:           16 x 16 UNSIGNED                                 MOVF    ARG1L,     W

                       MULTIPLY ROUTINE                                 MULWF   ARG2L            ;     ARG1L  *  ARG2L  ->

                                                                                                 ;     PRODH:PRODL

       MOVF    ARG1L,     W                                             MOVFF   PRODH,     RES1  ;

       MULWF   ARG2L                 ;  ARG1L    *   ARG2L   ->         MOVFF   PRODL,     RES0  ;

                                     ;  PRODH:PRODL                  ;

       MOVFF   PRODH,     RES1       ;                                  MOVF    ARG1H,     W

       MOVFF   PRODL,     RES0       ;                                  MULWF   ARG2H            ;     ARG1H  *  ARG2H  ->

;                                                                                                ;     PRODH:PRODL

       MOVF    ARG1H,     W                                             MOVFF   PRODH,     RES3  ;

       MULWF   ARG2H                 ;  ARG1H    *   ARG2H   ->         MOVFF   PRODL,     RES2  ;

                                     ;  PRODH:PRODL                  ;

       MOVFF   PRODH,     RES3       ;                                  MOVF    ARG1L,     W

       MOVFF   PRODL,     RES2       ;                                  MULWF   ARG2H            ;     ARG1L  *  ARG2H  ->

;                                                                                                ;     PRODH:PRODL

       MOVF    ARG1L,     W                                             MOVF    PRODL,     W     ;

       MULWF   ARG2H                 ;  ARG1L    *   ARG2H   ->         ADDWF   RES1,   F        ;     Add  cross

                                     ;  PRODH:PRODL                     MOVF    PRODH,     W     ;     products

       MOVF    PRODL,         W      ;                                  ADDWFC  RES2,   F        ;

       ADDWF   RES1,   F             ;  Add  cross                      CLRF    WREG             ;

       MOVF    PRODH,     W          ;  products                        ADDWFC  RES3,   F        ;

       ADDWFC  RES2,   F             ;                               ;

       CLRF    WREG                  ;                                  MOVF    ARG1H,     W     ;

       ADDWFC  RES3,   F             ;                                  MULWF   ARG2L            ;     ARG1H  *  ARG2L  ->

;                                                                                                ;     PRODH:PRODL

       MOVF    ARG1H,     W          ;                                  MOVF    PRODL,     W     ;

       MULWF   ARG2L                 ;  ARG1H    *   ARG2L   ->         ADDWF   RES1,   F        ;     Add  cross

                                     ;  PRODH:PRODL                     MOVF    PRODH,     W     ;     products

       MOVF    PRODL,     W          ;                                  ADDWFC  RES2,   F        ;

       ADDWF   RES1,   F             ;  Add  cross                      CLRF    WREG             ;

       MOVF    PRODH,     W          ;  products                        ADDWFC  RES3,   F        ;

       ADDWFC  RES2,   F             ;                               ;

       CLRF    WREG                  ;                                  BTFSS   ARG2H,     7     ;     ARG2H:ARG2L neg?

       ADDWFC  RES3,   F             ;                                  BRA     SIGN_ARG1        ;     no,  check  ARG1

                                                                        MOVF    ARG1L,     W     ;

                                                                        SUBWF   RES2             ;

Example 8-4    shows  the        sequence    to  do   a  16  x  16      MOVF    ARG1H,     W     ;

signed  multiply.     Equation 8-2      shows    the     algorithm      SUBWFB  RES3

used.   The   32-bit  result     is  stored  in  four    registers,  ;

RES3:RES0. To account for the sign bits of the argu-                 SIGN_ARG1

ments, each argument pairs’ Most Significant bit (MSb)                  BTFSS   ARG1H,     7     ;     ARG1H:ARG1L neg?

is tested and the appropriate subtractions are done.                    BRA     CONT_CODE        ;     no,  done

                                                                        MOVF    ARG2L,     W     ;

                                                                        SUBWF   RES2             ;

                                                                        MOVF    ARG2H,     W     ;

                                                                        SUBWFB  RES3

                                                                     ;

                                                                     CONT_CODE

                                                                        :

DS39609C-page 86                                                                     2003-2013 Microchip Technology Inc.
                      PIC18F6520/8520/6620/8620/6720/8720

9.0       INTERRUPTS                                                    When      the  IPEN    bit   is  cleared  (default   state),    the

                                                                        interrupt priority feature is disabled and interrupts are

The     PIC18FXX20         devices     have   multiple    interrupt     compatible with PIC® mid-range devices. In Compati-

sources and an interrupt priority feature that allows                   bility mode, the interrupt priority bits for each source

each interrupt source to be assigned a high or a low                    have  no   effect.     INTCON<6>  is      the  PEIE    bit,  which

priority  level.     The   high  priority  interrupt  vector  is   at   enables/disables       all   peripheral   interrupt      sources.

000008h, while the low priority interrupt vector is at                  INTCON<7> is the GIE bit, which enables/disables all

000018h. High priority interrupt events will override any               interrupt  sources.    All   interrupts   branch     to  address

low priority interrupts that may be in progress.                        000008h in Compatibility mode.

There are thirteen registers which are used to control                  When an interrupt is responded to, the Global Interrupt

interrupt operation. They are:                                          Enable bit is cleared to disable further interrupts. If the

•   RCON                                                                IPEN bit is cleared, this is the GIE bit. If interrupt priority

•   INTCON                                                              levels are used, this will be either the GIEH or GIEL bit.

•   INTCON2                                                             High  priority    interrupt  sources      can  interrupt     a  low

                                                                        priority interrupt.

•   INTCON3                                                             The return address is pushed onto the stack and the

•   PIR1, PIR2, PIR3                                                    PC    is   loaded      with  the  interrupt    vector    address

•   PIE1, PIE2, PIE3                                                    (000008h or 000018h). Once in the Interrupt Service

•   IPR1, IPR2, IPR3                                                    Routine, the source(s) of the interrupt can be deter-

It  is  recommended        that  the   Microchip      header  files,    mined by polling the interrupt flag bits. The interrupt

supplied with MPLAB® IDE, be used for the symbolic bit                  flag bits must be cleared in software before re-enabling

names in these registers. This allows the assembler/                    interrupts to avoid recursive interrupts.

compiler to automatically take care of the placement of                 The “return from interrupt” instruction, RETFIE, exits

these bits within the specified register.                               the interrupt routine and sets the GIE bit (GIEH or GIEL

Each      interrupt   source     has   three  bits  to   control   its  if priority levels are used), which re-enables interrupts.

operation. The functions of these bits are:                             For external interrupt events, such as the INT pins or

•   Flag bit to indicate that an interrupt event                        the PORTB input change interrupt, the interrupt latency

    occurred                                                            will  be   three   to  four  instruction  cycles.    The     exact

•   Enable bit that allows program execution to                         latency is the same for one or two-cycle instructions.

    branch to the interrupt vector address when the                     Individual interrupt flag bits are set, regardless of the

    flag bit is set                                                     status of their corresponding enable bit or the GIE bit.

•   Priority bit to select high priority or low priority

The interrupt priority feature is enabled by setting the

IPEN      bit  (RCON<7>).        When      interrupt     priority  is

enabled,       there  are  two   bits  which     enable  interrupts

globally. Setting the GIEH bit (INTCON<7>) enables all

interrupts that have the priority bit set. Setting the GIEL

bit (INTCON<6>) enables all interrupts that have the

priority bit cleared. When the interrupt flag, enable bit

and appropriate global interrupt enable bit are set, the

interrupt will vector immediately to address 000008h or

000018h,       depending   on    the   priority  level.  Individual

interrupts can be disabled through their corresponding

enable bits.

 2003-2013 Microchip Technology Inc.                                                                                DS39609C-page 87
PIC18F6520/8520/6620/8620/6720/8720

FIGURE 9-1:          INTERRUPT LOGIC

                                                                              TMR0IF                     Wake-up if in Sleep mode

                                                                              TMR0IE

                                                                              TMR0IP

                                                                              RBIF

                                                                              RBIE

                                                                              RBIP

                           &nb