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

型号

产品描述

搜索
 

PIC16C641-04E/L

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

器件描述

8-BIT, OTPROM, 20 MHz, RISC MICROCONTROLLER, PDSO28

8位, OTPROM, 20 MHz, 精简指令集微控制器, PDSO28

参数

PIC16C641-04E/L外部数据总线宽度 0.0
PIC16C641-04E/L输入输出总线数量 22
PIC16C641-04E/L端子数量 28
PIC16C641-04E/L最小工作温度 -40 Cel
PIC16C641-04E/L最大工作温度 85 Cel
PIC16C641-04E/L线速度 20 MHz
PIC16C641-04E/L加工封装描述 0.300 INCH, PLASTIC, SOIC-28
PIC16C641-04E/Lreach_compliant Yes
PIC16C641-04E/L欧盟RoHS规范 Yes
PIC16C641-04E/L中国RoHS规范 Yes
PIC16C641-04E/L状态 Active
PIC16C641-04E/Lmicroprocessor_microcontroller_peripheral_ic_type MICROCONTROLLER, RISC
PIC16C641-04E/LADC通道 NO
PIC16C641-04E/L地址总线宽度 0.0
PIC16C641-04E/L位数 8
PIC16C641-04E/Lclock_frequency_max 20 MHz
PIC16C641-04E/Lcpu_family PIC
PIC16C641-04E/LDAC通道 NO
PIC16C641-04E/LDMA通道 NO
PIC16C641-04E/Ljesd_30_code R-PDSO-G28
PIC16C641-04E/Ljesd_609_code e3
PIC16C641-04E/Lmoisture_sensitivity_level 1
PIC16C641-04E/L包装材料 PLASTIC/EPOXY
PIC16C641-04E/Lpackage_code SOP
PIC16C641-04E/Lpackage_equivalence_code SOP28,.4
PIC16C641-04E/L包装形状 RECTANGULAR
PIC16C641-04E/L包装尺寸 SMALL OUTLINE
PIC16C641-04E/Lpeak_reflow_temperature__cel_ 260
PIC16C641-04E/Lpower_supplies 5
PIC16C641-04E/LPWM通道 NO
PIC16C641-04E/Lqualification_status COMMERCIAL
PIC16C641-04E/Lram__bytes_ 176
PIC16C641-04E/LROM编程 OTPROM
PIC16C641-04E/Lrom__words_ 4096
PIC16C641-04E/Lseated_height_max 2.65 mm
PIC16C641-04E/Lsub_category Microcontrollers
PIC16C641-04E/L最大供电电压 30 mA
PIC16C641-04E/L额定供电电压 5 V
PIC16C641-04E/L最小供电电压 4.5 V
PIC16C641-04E/L最大供电电压 5.5 V
PIC16C641-04E/L表面贴装 YES
PIC16C641-04E/L工艺 CMOS
PIC16C641-04E/L温度等级 INDUSTRIAL
PIC16C641-04E/L端子涂层 MATTE TIN
PIC16C641-04E/L端子形式 GULL WING
PIC16C641-04E/L端子间距 1.27 mm
PIC16C641-04E/L端子位置 DUAL
PIC16C641-04E/Ltime_peak_reflow_temperature_max__s_ 40
PIC16C641-04E/Llength 17.9 mm
PIC16C641-04E/Lwidth 7.5 mm

文档预览

PIC16C641-04E/L器件文档内容

                     PIC16C64X & PIC16C66X

8-Bit EPROM Microcontrollers with Analog Comparators

Devices included in this data sheet:                   Pin Diagrams
                                                             PDIP, SOIC, Windowed CERDIP
PIC16C641
PIC16C642                                                         MCLR/VPP           1              28  RB7
PIC16C661
PIC16C662                                                         RA0/AN0            2              27  RB6

                                                                    RA1/AN1            3              26  RB5

High Performance RISC CPU:                                          RA2/AN2/VREF       4   PIC16C64X  25  RB4

                                                                    RA3/AN3            5              24  RB3

Only 35 instructions to learn                                     RA4/T0CKI          6              23  RB2
All single-cycle instructions (200 ns), except for
                                                                    RA5                7              22  RB1
   program branches which are two-cycle
Operating speed:                                                  VSS                8              21  RB0/INT

   - DC - 20 MHz clock input                                        OSC1/CLKIN         9              20  VDD

   - DC - 200 ns instruction cycle                     OSC2/CLKOUT                     10             19  VSS

                                                                    RC0                11             18  RC7

                                                                    RC1                12             17  RC6

                                                                    RC2                13             16  RC5

                                                                    RC3                14             15  RC4

Device                  Program       Data                                     PDIP, Windowed CERDIP
PIC16C641             Memory x14  Memory x8
                                                                    MCLR/VPP       1                  40  RB7
                            2K         128

PIC16C642             4K              176                           RA0/AN0        2                  39  RB6
PIC16C661
                                                                    RA1/AN1        3                  38  RB5

                      2K              128              RA2/AN2/VREF                4                  37  RB4

                                                                    RA3/AN3        5                  36  RB3

PIC16C662             4K              176                           RA4/T0CKI      6       PIC16C66X  35  RB2

                                                                    RA5            7                  34  RB1

Interrupt capability                                              RE0/RD         8                  33  RB0/INT
8-level deep hardware stack
Direct, Indirect and Relative addressing modes                    RE1/WR         9                  32  VDD

                                                                    RE2/CS         10                 31  VSS

                                                                    VDD            11                 30  RD7/PSP7

Peripheral Features:                                                VSS            12                 29  RD6/PSP6

                                                       OSC1/CLKIN                  13                 28  RD5/PSP5

Up to 33 I/O pins with individual direction control  OSC2/CLKOUT                 14                 27  RD4/PSP4
High current sink/source for direct LED drive
Analog comparator module with:                                    RC0            15                 26  RC7

   - Two analog comparators                                         RC1            16                 25  RC6
   - Programmable on-chip voltage reference
                                                                    RC2            17                 24  RC5
      (VREF) module
   - Programmable input multiplexing from device                    RC3            18                 23  RC4

      inputs and internal voltage reference                         RD0/PSP0       19                 22  RD3/PSP3
   - Comparator outputs can be output signals
Timer0: 8-bit timer/counter with 8-bit                            RD1/PSP1       20                 21  RD2/PSP2
   programmable prescaler
                                                       Four user programmable ID locations
Special Microcontroller Features:
                                                       Program Memory Parity Error checking circuitry
Power-on Reset (POR)                                    with Parity Error Reset (PER)
Power-up Timer (PWRT) and
                                                       CMOS Technology:
   Oscillator Start-up Timer (OST)
Brown-out Reset                                       Low-power, high-speed CMOS EPROM technology
Watchdog Timer (WDT) with its own on-chip RC          Fully static design
                                                       Wide operating voltage range: 3.0V to 6.0V
   oscillator for reliable operation                   Commercial, Industrial and Automotive
Programmable code protection
Power saving SLEEP mode                                 temperature ranges
Selectable oscillator options                         Low power consumption
Serial in-circuit programming (via two pins)
                                                          - < 2.0 mA @ 5.0V, 4.0 MHz
                                                          - 15 A typical @ 3.0V, 32 kHz
                                                          - < 1.0 A typical standby current @ 3.0V

1996 Microchip Technology Inc.                       Preliminary                                        DS30559A-page 1

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

Pin Diagrams (Cont.'d)

                                                     TQFP

                                                 RC6
                                                    RC5
                                                       RC4
                                                           RD3/PSP3
                                                              RD2/PSP2
                                                                  RD1/PSP1
                                                                     RD0/PSP0
                                                                         RC3
                                                                            RC2
                                                                                RC1
                                                                                   NC

                                                44 43 42 41 40 39 38 37 36 35 34

                         RC7                 1                                               33      NC
                 RD4/PSP4                                                                            RC0
                 RD5/PSP5                    2                                               32      OSC2/CLKOUT
                 RD6/PSP6                                                                            OSC1/CLKIN
                 RD7/PSP7                    3                                               31      VSS
                                                                                                     VDD
                          VSS                4                                               30      RE2/CS
                          VDD                                                                        RE1/WR
                    RB0/INT                  5                                               29      RE0/RD
                         RB1                                                                         RA5
                         RB2                 6       PIC16C66X 28                                    RA4/T0CKI
                         RB3
                                             7                                               27

                                             8                                               26

                                             9                                               25

                                             10                                              24

                                             11                                              23

                                                 12 1314 15 16 17 1819 20 21 22

                                                                                  RA3/AN3
                                                                               RA2/AN2/VREF
                                                                           RA1/AN1
                                                                        RA0/AN0
                                                                    MCLR/VPP
                                                                 RB7
                                                             RB6
                                                          RB5
                                                      RB4
                                                   NC
                                                NC

                                                     PLCC
                                                     RA3/AN3
                                                        RA2/AN2/VREF
                                                           RA1/AN1
                                                              RA0/AN0
                                                                 MCLR/VPP
                                                                    NC
                                                                       RB7
                                                                          RB6
                                                                              RB5
                                                                                 RB4
                                                                                    NC

                                                     6 5 4 3 2 1 44 4342 4140

                              RA4/T0CKI          7                                               39  RB3
                                       RA5                                                           RB2
                                                 8                                               38  RB1
                                  RE0/RD                                                             RB0/INT
                                 RE1/WR          9                                               37  VDD
                                  RE2/CS                                                             VSS
                                                 10                                              36  RD7/PSP7
                                        VDD                                                          RD6/PSP6
                                        VSS      11                                              35  RD5/PSP5
                           OSC1/CLKIN                                                                RD4/PSP4
                        OSC2/CLKOUT              12 PIC16C66X 34                                     RC7
                                       RC0       13                                              33
                                        NC
                                                 14                                              32

                                                 15                                              31

                                                 16                                              30

                                                 17                                              29

                                                    18 19 20 21 2223 24 2526 27 28

                                                                                   NC
                                                                                RC6
                                                                             RC5
                                                                          RC4
                                                                      RD3/PSP3
                                                                   RD2/PSP2
                                                                RD1/PSP1
                                                             RD0/PSP0
                                                          RC3
                                                       RC2
                                                    RC1

DS30559A-page 2                                     Preliminary                                       1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

Table of Contents

1.0  General Description .......................................................................................................................................... 5

2.0  PIC16C64X & PIC16C66X Device Varieties .................................................................................................... 7

3.0  Architectural Overview...................................................................................................................................... 9

4.0  Memory Organization ..................................................................................................................................... 17

5.0  I/O Ports.......................................................................................................................................................... 29

6.0  Timer0 Module................................................................................................................................................ 41

7.0  Comparator Module ........................................................................................................................................ 47

8.0  Voltage Reference Module ............................................................................................................................. 53

9.0  Special Features of the CPU .......................................................................................................................... 55

10.0 Instruction Set Summary ................................................................................................................................ 73

11.0 Development Support ..................................................................................................................................... 87
12.0 Electrical Specifications .................................................................................................................................. 91

13.0 Device Characterization Information............................................................................................................. 103
14.0 Packaging Information .................................................................................................................................. 105

Appendix A: Enhancements...................................................................................................................................... 115
Appendix B: Compatibility ......................................................................................................................................... 115

Appendix C: What's New .......................................................................................................................................... 116
Appendix D: What's Changed ................................................................................................................................... 116
Appendix E: PIC16/17 Microcontrollers ..................................................................................................................... 117

Pin Compatibility ......................................................................................................................................................... 125
Index ........................................................................................................................................................................... 127

List of Examples.......................................................................................................................................................... 129
List of Figures.............................................................................................................................................................. 129

List of Tables............................................................................................................................................................... 130
On-Line Support.......................................................................................................................................................... 131
Reader Response ....................................................................................................................................................... 132
PIC16C64X & PIC16C66X Product Identification System .......................................................................................... 135

                            To Our Valued Customers

We constantly strive to improve the quality of all our products and documentation. We have spent an exceptional
amount of time to ensure that these documents are correct. However, we realize that we may have missed a few
things. If you find any information that is missing or appears in error, please use the reader response form in the
back of this data sheet to inform us. We appreciate your assistance in making this a better document.

1996 Microchip Technology Inc.  Preliminary  DS30559A-page 3
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 4  Preliminary   1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

1.0 GENERAL DESCRIPTION                                      A highly reliable Watchdog Timer (WDT) with its own
                                                             on-chip RC oscillator provides protection against soft-
PIC16C64X & PIC16C66X devices are 28-pin and                 ware lock-up.
40-pin EPROM-based members of the versatile
PIC16CXXX family of low-cost, high-performance,              A UV-erasable CERDIP-packaged version is ideal for
CMOS, fully-static, 8-bit microcontrollers.                  code development while the cost-effective One-Time
                                                             Programmable (OTP) version is suitable for production
All PIC16/17 microcontrollers employ an advanced             in any volume.
RISC architecture. The PIC16CXXX family has
enhanced core features, eight-level deep stack, and          The PIC16CXXX series fit perfectly in applications
multiple internal and external interrupt sources. The        ranging from battery chargers to low-power remote
separate instruction and data buses of the Harvard           sensors. The EPROM technology makes
architecture allow a 14-bit wide instruction word with       customization of application programs (detection
the separate 8-bit wide data. The two-stage instruction      levels, pulse generation, timers, etc.) extremely fast
pipeline allows all instructions to execute in a sin-        and convenient. The small footprint packages make
gle-cycle, except for program branches (which require        this microcontroller series perfect for all applications
two cycles). A total of 35 instructions (reduced instruc-    with space limitations. Low-cost, low-power,
tion set) are available. Additionally, a large register set  high-performance, ease of use, and I/O flexibility make
gives some of the architectural innovations used to          the PIC16C64X & PIC16C66X very versatile.
achieve a very high performance.
                                                             1.1 Family and Upward Compatibility
PIC16CXXX microcontrollers typically achieve a 2:1
code compression and a 4:1 speed improvement over            Those users familiar with the PIC16C5X family of
other 8-bit microcontrollers in its class.                   microcontrollers will realize that this is an enhanced
                                                             version of the PIC16C5X architecture. Please refer to
The PIC16C641 has 128 bytes of RAM and the                   Appendix A for a detailed list of enhancements. Code
PIC16C642 has 176 bytes of RAM. Both devices have            written for PIC16C5X can be easily ported to the
22 I/O pins, and an 8-bit timer/counter with an 8-bit pro-   PIC16C64X & PIC16C66X (Appendix B).
grammable prescaler. In addition, they have two analog
comparators with a programmable on-chip voltage ref-         1.2 Development Support
erence module. Program Memory has internal parity
error detection circuitry with a Parity Error Reset. The     PIC16C64X & PIC16C66X devices are supported by
comparator module is ideally suited for applications         the complete line of Microchip Development tools,
requiring a low-cost analog interface (e.g., battery         including:
chargers, threshold detectors, white goods
controllers, etc.).                                           MPLAB Integrated Development Environment
                                                                including MPLAB-Simulator.
The PIC16C661 has 128 bytes of RAM and the
PIC16C662 has 176 bytes of RAM. Both devices have             MPASM Universal Assembler and MPLAB-C Uni-
33 I/O pins, and an 8-bit timer/counter with an 8-bit pro-      versal C compiler.
grammable prescaler. They also have an 8-bit Parallel
Slave Port. In addition, the devices have two analog          PRO MATE II and PICSTART Plus device pro-
comparators with a programmable on-chip voltage ref-            grammers.
erence module. Program Memory has internal parity
error detection circuitry with a Parity Error Reset. The      PICMASTER In-circuit Emulator System
comparator module is ideally suited for applications          fuzzyTECH-MP Fuzzy Logic Development Tools
requiring a low-cost analog interface (e.g., battery          DriveWay Visual Programming Tool
chargers, threshold detectors, white goods
controllers, etc.).                                          Please refer to Section 11.0 for more details about
                                                             these and other Microchip development tools.
PIC16CXXX devices have special features to reduce
external components, thus reducing cost, enhancing
system reliability and reducing power consumption.
There are four oscillator options, of which the single pin
RC oscillator provides a low-cost solution, the LP
oscillator minimizes power consumption, XT is a
standard crystal, and the HS is for High Speed crystals.
The SLEEP (power-down) mode offers power saving.
The user can wake-up the chip from SLEEP through
several external and internal interrupts and resets.

1996 Microchip Technology Inc.  Preliminary                                      DS30559A-page 5

                                  This document was created with FrameMaker 4 0 4
DS30559A-page 6                                                                                                                                                                                                                               PIC16C64X & PIC16C66X

                                                            Clock Memory  Peripherals          Features                                                                                                                                   TABLE 1-1: PIC16C64X & PIC16C66X DEVICE FEATURES

                                  Maximum FErePqRuOenMcyDofaOtapeMraePtmioronogr(yrTMai(Hmmbzye)MtreeMsm)oodruCyleo(ms)paratIonrt(esr)nal RPeaferarellenlcSeIlnaVtveoerltrauPgpoetrtSources Voltage RanBgreow(Vno-oltust) ResePt ackages
Preliminary                                                                  I/O
                                                                                Pins

                                  PIC16C641 20 2K 128 TMR0 2 Yes - 4 22 3.0-6.0 Yes 28-pin PDIP, SOIC, Windowed CDIP

                                  PIC16C642 20 4K 176 TMR0 2 Yes - 4 22 3.0-6.0 Yes 28-pin PDIP, SOIC, Windowed CDIP

                                  PIC16C661 20 2K 128 TMR0  2  Yes Yes    5  33  3.0-6.0  Yes  40-pin PDIP, Windowed CDIP;
                                                                                               44-pin PLCC, TQFP

                                  PIC16C662 20 4K 176 TMR0  2  Yes Yes    5  33  3.0-6.0  Yes  40-pin PDIP, Windowed CDIP;
                                                                                               44-pin PLCC, TQFP

                                  All PIC16/17 Family devices have Power-on Reset, selectable Watchdog Timer, selectable code protect, and high I/O current
                                  capability.
                                  All PIC16CXXX Family devices use serial programming with clock pin RB6 and data pin RB7.

1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

2.0 PIC16C64X & PIC16C66X                                 2.3 Quick-Turnaround-Production (QTP)
         DEVICE VARIETIES                                           Devices

A variety of frequency ranges and packaging options       Microchip offers a QTP Programming Service for
are available. Depending on application and production    factory production orders. This service is made
requirements the proper device option can be selected     available for users who choose not to program a
using the information in the Product Identification Sys-  medium to high quantity of units and whose code pat-
tem page at the end of this data sheet. When placing      terns have stabilized. The devices are identical to the
orders, please use that page of the data sheet to spec-   OTP devices but with all EPROM locations and config-
ify the correct part number.                              uration options already programmed by the factory.
                                                          Certain code and prototype verification procedures
2.1 UV Erasable Devices                                   apply before production shipments are available.
                                                          Please contact your Microchip Technology sales office
The UV erasable version, offered in CERDIP package        for more details.
is optimal for prototype development and pilot
programs. This version can be erased and                  2.4 Serialized Quick-Turnaround-
reprogrammed to any of the oscillator modes.                        Production (SQTPSM) Devices
Microchip's PICSTART Plus and PRO MATE II
programmers both support programming of the               Microchip offers a unique programming service where
PIC16C64X & PIC16C66X.                                    a few user-defined locations in each device are
                                                          programmed with different serial numbers. The serial
2.2 One-Time-Programmable (OTP)                           numbers may be random, pseudo-random or
          Devices                                         sequential.

The availability of OTP devices is especially useful for  Serial programming allows each device to have a
customers who need flexibility for frequent code          unique number which can serve as an entry-code,
updates and small volume applications. In addition to     password or ID number.
the program memory, the configuration bits must also
be programmed.

1996 Microchip Technology Inc.  Preliminary                                      DS30559A-page 7

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 8  Preliminary   1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

3.0 ARCHITECTURAL OVERVIEW                                 PIC16C64X & PIC16C66X devices contain an 8-bit
                                                           ALU and working register. The ALU is a general pur-
The high performance of the PIC16C64X &                    pose arithmetic unit. It performs arithmetic and Bool-
PIC16C66X devices can be attributed to a number of         ean functions between data in the working register and
architectural features commonly found in RISC micro-       any register file.
processors. To begin with, the PIC16C64X &
PIC16C66X use a Harvard architecture in which pro-         The ALU is 8-bits wide and capable of addition,
gram and data are accessed from separate memories          subtraction, shift, and logical operations. Unless
using separate buses. This improves bandwidth over         otherwise mentioned, arithmetic operations are two's
traditional von Neumann architecture where program         complement in nature. In two-operand instructions,
and data are fetched from the same memory. Separat-        typically one operand is the working register
ing program and data memory further allows instruc-        (W register). The other operand is a file register or an
tions to be sized differently than an 8-bit wide data      immediate constant. In single operand instructions, the
word. Instruction opcodes are 14-bits wide making it       operand is either the W register or a file register.
possible to have all single word instructions. A 14-bit
wide program memory access bus fetches a 14-bit            The W register is an 8-bit working register used for ALU
instruction in a single cycle. A two-stage pipeline over-  operations. It is not an addressable register.
laps fetch and execution of instructions. Consequently,
all instructions (35) execute in a single cycle (200 ns @  Depending on the instruction executed, the ALU may
20 MHz) except for program branches, which require         affect the values of the Carry (C), Digit Carry (DC), and
two cycles.                                                Zero (Z) bits in the STATUS register. The C and DC bits
                                                           operate as a Borrow and Digit Borrow out bit,
The PIC16C641 and PIC16C661 both address 2K x 14           respectively, bit in subtraction. See the SUBLW and
on-chip program memory while the PIC16C642 and             SUBWF instructions for examples.
PIC16C662 address 4K x 14. All program memory is
internal.

PIC16C64X & PIC16C66X devices can directly or indi-
rectly address their register files or data memory. All
special function registers including the program
counter are mapped in the data memory. These
devices have an orthogonal (symmetrical) instruction
set that makes it possible to carry out any operation on
any register using any addressing mode. This symmet-
rical nature and lack of `special optimal situations'
make programming with the PIC16C64X & PIC16C66X
simple yet efficient. In addition, the learning curve is
reduced significantly.

1996 Microchip Technology Inc.  Preliminary                                      DS30559A-page 9

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

FIGURE 3-1: PIC16C641/642 BLOCK DIAGRAM

PIC16C641 has 2K x 14 Program Memory and 128 x 8 RAM
PIC16C642 has 4K x 14 Program Memory and 176 x 8 RAM

                              13                         Data Bus    8               Voltage
                                     Program Counter                               Reference
             EPROM                                      RAM                        Comparator
                                       8 Level Stack     File
             Program                       (13-bit)   Registers                                  -
             Memory                                                                              +
                                                                   9                             -
Program      14                                          Addr MUX                                +           RA0/AN0
   Bus                                                                                                       RA1/AN1
                              RAM Bank                                   Indirect     Timer0                 RA2/AN2/VREF
             Instruction reg     Select                            8 Addr                                    RA3/AN3
                                                                 FSR reg              PORTA
                              Direct Addr 7                                                                  RA4/T0CKI

                                                         STATUS reg

                                                      3         MUX

             Instruction         Power-up                 ALU
             Decode &              Timer                 W reg

               Control           Oscillator
                              Start-up Timer
               Timing
             Generation          Power-on
                                   Reset
OSC1/CLKIN                                                                                          RA5
OSC2/CLKOUT                     Watchdog
                                   Timer                                                            RB0/INT
                                                                                   PORTB            RB1
                                Brown-out                                          PORTC            RB2
                                   Reset                                                            RB3
                                                                                                    RB4
                                Parity Error                                                        RB5
                                   Reset                                                            RB6
                                                                                                    RB7
                              MCLR VDD, VSS
                                                                                                    RC0
                                                                                                    RC1
                                                                                                    RC2
                                                                                                    RC3
                                                                                                    RC4
                                                                                                    RC5
                                                                                                    RC6
                                                                                                    RC7

DS30559A-page 10                                      Preliminary                         1996 Microchip Technology Inc.
                            PIC16C64X & PIC16C66X

FIGURE 3-2: PIC16C661/662 BLOCK DIAGRAM
   PIC16C661 has 2K x 14 Program Memory and 128 x 8 RAM
   PIC16C662 has 4K x 14 Program Memory and 176 x 8 RAM

                              13                                Data Bus         8          Voltage
                                     Program Counter                                      Reference
             EPROM                                             RAM                        Comparator
                                       8 Level Stack            File
             Program                       (13-bit)          Registers                                  -
             Memory                                                                                     +
                                                  RAM Bank                9                             -
Program      14                                      Select     Addr MUX                                +  RA0/AN0
   Bus                                                                                                     RA1/AN1
                                    Direct Addr 7                               Indirect     Timer0        RA2/AN2/VREF
             Instruction reg                                              8 Addr                           RA3/AN3
                                                                        FSR reg              PORTA
                                                                                                           RA4/T0CKI
                                                                STATUS reg

                                                             3         MUX

             Instruction             Power-up                    ALU
             Decode &                  Timer                    W reg

               Control               Oscillator
                                  Start-up Timer
               Timing
             Generation              Power-on
                                       Reset
OSC1/CLKIN                                                                                                 RA5
OSC2/CLKOUT                         Watchdog
                                       Timer                                                               RB0/INT
                                                                                          PORTB            RB1
                                    Brown-out                                             PORTC            RB2
                                       Reset                                              PORTD            RB3
                                                                                                           RB4
                                   Parity Error                                                            RB5
                                       Reset                                                               RB6
                                                                                                           RB7
                                  MCLR VDD, VSS                        Parallel
                                                                        Slave                              RC0
                                                                         Port                              RC1
                                                                                                           RC2
                                                                       PORTE                               RC3
                                                                                                           RC4
                                                  RE0/RD                                                   RC5
                                                  RE1/WR                                                   RC6
                                                  RE2/CS                                                   RC7

                                                                                                           RD0/PSP0
                                                                                                           RD1/PSP1
                                                                                                           RD2/PSP2
                                                                                                           RD3/PSP3
                                                                                                           RD4/PSP4
                                                                                                           RD5/PSP5
                                                                                                           RD6/PSP6
                                                                                                           RD7/PSP7

1996 Microchip Technology Inc.                             Preliminary                                   DS30559A-page 11
PIC16C64X & PIC16C66X

TABLE 3-1: PIC16C641/642 PINOUT DESCRIPTION

Name              Pin #  I/O/P     Buffer                        Description
                         Type      Type

OSC1/CLKIN        9          I ST/CMOS Oscillator crystal input or external clock source input.

OSC2/CLKOUT 10               O     -- Oscillator crystal output. Connects to crystal or resonator in crystal

                                            oscillator mode. In RC mode, OSC2 pin outputs CLKOUT which has

                                            1/4 the frequency of OSC1, and denotes the instruction cycle rate.

MCLR/VPP          1          I/P   ST Master clear (reset) input or programming voltage input. This pin is

                                            an active low reset to the device.

                                            PORTA is a bi-directional I/O port.

RA0/AN0           2          I/O   ST       Analog comparator input.

RA1/AN1           3          I/O   ST       Analog comparator input.

RA2/AN2/VREF      4          I/O   ST       Analog comparator input or VREF output.

RA3/AN3           5          I/O   ST       Analog comparator input or comparator output.

RA4/T0CKI         6          I/O   ST       Can be selected to be the clock input to the Timer0 timer/counter
                                            or a comparator output. Output is open drain type.

RA5               7          I/O   ST

                                            PORTB is a bi-directional I/O port. PORTB can be software pro-
                                            grammed for internal weak pull-ups on all inputs.

RB0/INT           21         I/O TTL/ST(1)  RB0 can also be selected as an external interrupt pin.

RB1               22         I/O   TTL

RB2               23         I/O   TTL

RB3               24         I/O   TTL

RB4               25         I/O   TTL      Interrupt on change pin.

RB5               26         I/O   TTL      Interrupt on change pin.

RB6               27         I/O TTL/ST(2)  Interrupt on change pin. Serial programming clock.

RB7               28         I/O TTL/ST(2)  Interrupt on change pin. Serial programming data.

                                            PORTC is a bi-directional I/O port.

RC0               11         I/O   ST

RC1               12         I/O   ST

RC2               13         I/O   ST

RC3               14         I/O   ST

RC4               15         I/O   ST

RC5               16         I/O   ST

RC6               17         I/O   ST

RC7               18         I/O   ST

VSS               8,19       P     -- Ground reference for logic and I/O pins.

VDD               20         P     -- Positive supply for logic and I/O pins.

Legend:           O = output       I/O = input/output P = power

                  I = input        -- = not used  ST = Schmitt Trigger input

                  TTL = TTL input

Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt.

     2: This buffer is a Schmitt Trigger input when used in serial programming mode.

DS30559A-page 12                            Preliminary                               1996 Microchip Technology Inc.
                                           PIC16C64X & PIC16C66X

TABLE 3-2:    PIC16C661/662 PINOUT DESCRIPTION

Name          DIP QFP PLCC I/O/P           Buffer                                     Description
              Pin # Pin # Pin # Type       Type

OSC1/CLKIN    13 30 14                I ST/CMOS Oscillator crystal input or external clock source
                                                              input.

OSC2/CLKOUT 14 31 15                  O              -- Oscillator crystal output. Connects to crystal or reso-

                                                     nator in crystal oscillator mode. In RC mode, OSC2

                                                     pin outputs CLKOUT which has 1/4 the frequency of

                                                     OSC1, and denotes the instruction cycle rate.

MCLR/VPP      1   18              2   I/P  ST Master clear (reset) input or programming voltage
                                                     input. This pin is an active low reset to the device.

                                                     PORTA is a bi-directional I/O port.

RA0/AN0       2   19              3   I/O  ST           Analog comparator input.

RA1/AN1       3   20              4   I/O  ST           Analog comparator input.

RA2/AN2/VREF  4   21              5   I/O  ST           Analog comparator input or VREF output.

RA3/AN3       5   22              6   I/O  ST           Analog comparator input or comparator output.

RA4/T0CKI     6   23              7   I/O  ST           Can be selected to be the clock input to the
                                                        Timer0 timer/counter or a comparator output.
                                                        Output is open drain type.

RA5           7   24              8   I/O  ST

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

RB0/INT       33         8        36  I/O TTL/ST(1)     RB0 can also be selected as an external

                                                        interrupt pin.

RB1           34         9        37  I/O  TTL

RB2           35 10 38                I/O  TTL

RB3           36 11 39                I/O  TTL

RB4           37 14 41                I/O  TTL          Interrupt on change pin.

RB5           38 15 42                I/O  TTL          Interrupt on change pin.

RB6           39 16 43                I/O TTL/ST(2)     Interrupt on change pin. Serial programming

                                                        clock.

RB7           40 17 44                I/O TTL/ST(2)     Interrupt on change pin. Serial programming

                                                        data.

                                                        PORTC is a bi-directional I/O port.

RC0           15 32 16                I/O  ST

RC1           16 35 18                I/O  ST

RC2           17 36 19                I/O  ST

RC3           18 37 20                I/O  ST

RC4           23 42 25                I/O  ST

RC5           24 43 26                I/O  ST

RC6           25 44 27                I/O  ST

RC7           26         1        29  I/O  ST

Legend:       O = output              I/O = input/output P = power

              I = input               -- = not used  ST = Schmitt Trigger input

              TTL = TTL input

Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt.

     2: This buffer is a Schmitt Trigger input when used in serial programming mode.

     3: This buffer is a Schmitt Trigger input when configured as a general purpose I/O and a TTL input when used

         in the Parallel Slave Port Mode (for interfacing to a microprocessor port).

1996 Microchip Technology Inc.           Preliminary                                             DS30559A-page 13
PIC16C64X & PIC16C66X

Name              DIP QFP PLCC I/O/P      Buffer                                      Description
                  Pin # Pin # Pin # Type  Type

RD0/PSP0          19 38 21                                     PORTD can be a bi-directional I/O port or parallel
RD1/PSP1                                                       slave port for interfacing to a microprocessor bus.
RD2/PSP2          20 39 22            I/O ST/TTL(3)
RD3/PSP3                              I/O ST/TTL(3)
RD4/PSP4          21 40 23            I/O ST/TTL(3)
RD5/PSP5                              I/O ST/TTL(3)
RD6/PSP6          22 41 24            I/O ST/TTL(3)
RD7/PSP7                              I/O ST/TTL(3)
                  27         2  30    I/O ST/TTL(3)
                                      I/O ST/TTL(3)
                  28         3  31

                  29         4  32

                  30         5  33

                                                     PORTE is a bi-directional I/O port.

RE0/RD            8   25           9  I/O ST/TTL(3)    RE0/RD read control for parallel slave port.
RE1/WR
RE2/CS            9   26 10           I/O ST/TTL(3)    RE1/WR write control for parallel slave port.

                  10 27 11            I/O ST/TTL(3)    RE2/CS select control for parallel slave port.

VSS               12,31 6,29 13,34 P                 -- Ground reference for logic and I/O pins.

VDD               11,32 7,28 12,35 P      -- Positive supply for logic and I/O pins.

NC                -- 12,13, 1,17      --  -- Not Connected.

                      33,34 28,40

Legend:           O = output          I/O = input/output P = power

                  I = input           -- = not used  ST = Schmitt Trigger input

                  TTL = TTL input

Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt.

     2: This buffer is a Schmitt Trigger input when used in serial programming mode.

     3: This buffer is a Schmitt Trigger input when configured as a general purpose I/O and a TTL input when used

         in the Parallel Slave Port Mode (for interfacing to a microprocessor port).

DS30559A-page 14                          Preliminary                                  1996 Microchip Technology Inc.
                                               PIC16C64X & PIC16C66X

3.1 Clocking Scheme/Instruction Cycle                 3.2 Instruction Flow/Pipelining
The clock input (from OSC1) is internally divided by
four to generate four non-overlapping quadrature      An "Instruction Cycle" consists of four Q cycles (Q1,
clocks namely Q1, Q2, Q3, and Q4. Internally, the     Q2, Q3, and Q4). The instruction fetch and execute are
program counter (PC) is incremented every Q1, the     pipelined such that fetch takes one instruction cycle
instruction is fetched from the program memory and    while decode and execute takes another instruction
latched into the instruction register in Q4. The      cycle. However, due to the pipelining, each instruction
instruction is decoded and executed during the        effectively executes in one cycle. If an instruction
following Q1 through Q4. The clocks and instruction   causes the program counter to change (e.g., GOTO)
execution flow is shown in Figure 3-3.                then two cycles are required to complete the instruction
                                                      (Example 3-1).
FIGURE 3-3: CLOCK/INSTRUCTION CYCLE
                                                      A fetch cycle begins with the program counter (PC)
                                                      incrementing in Q1.

                                                      In the execution cycle, the fetched instruction is latched
                                                      into the "Instruction Register (IR)" in cycle Q1. This
                                                      instruction is then decoded and executed during the
                                                      Q2, Q3, and Q4 cycles. Data memory is read during Q2
                                                      (operand read) and written during Q4 (destination
                                                      write).

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

              OSC1                                               PC+1                           PC+2
                                                          Fetch INST (PC+1)           Fetch INST (PC+2)
                Q1                                      Execute INST (PC)            Execute INST (PC+1)

                Q2                                                                                        Internal
                                                                                                          phase
                Q3                                                                                        clock

               Q4

               PC                 PC

OSC2/CLKOUT             Fetch INST (PC)
      (RC mode)     Execute INST (PC-1)

EXAMPLE 3-1: INSTRUCTION PIPELINE FLOW

                                  Tcy0   Tcy1            Tcy2    Tcy3        Tcy4                         Tcy5

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

3. CALL SUB_1                                                    Execute 3

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

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.

1996 Microchip Technology Inc.         Preliminary                                DS30559A-page 15
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 16  Preliminary   1996 Microchip Technology Inc.
                                           PIC16C64X & PIC16C66X

4.0 MEMORY ORGANIZATION                                   FIGURE 4-2: PIC16C642/662 PROGRAM
                                                                               MEMORY MAP AND STACK
4.1 Program Memory Organization
                                                                                                          PC<12:0>
The PIC16C64X & PIC16C66X have a 13-bit program
counter capable of addressing an 8K x 14 program          CALL, RETURN                                    13
memory space. For the PIC16C641 and PIC16C661             RETFIE, RETLW
only the first 2K x 14 (0000h - 07FFh) is physically
implemented. For the PIC16C642 and PIC16C662 only                                                         Stack Level 1
the first 4K x 14 (0000h - 0FFh) is physically imple-                                                     Stack Level 2
mented. Accessing a location above the 2K or 4K
boundary will cause a wrap-around. The reset vector is                                                    Stack Level 8
at 0000h and the interrupt vector is at 0004h (Figure 4-                                                  Reset Vector
1 and Figure 4-2). See Section 4.4 for Program Mem-
ory paging.

FIGURE 4-1: PIC16C641/661 PROGRAM                                                                                             0000h
                     MEMORY MAP AND STACK

               PC<12:0>

CALL, RETURN
RETFIE, RETLW
User Memory Space13
                                                                                       User Memory Space
Stack Level 1                                                                                              Interrupt Vector   0004h
Stack Level 2                                                                                             On-chip Program     0005h

Stack Level 8                     0000h                                                                         Memory        07FFh
Reset Vector                                                                                                    Page0         0800h

                                                                                                          On-chip Program     0FFFh
                                                                                                                Memory        1000h
                                                                                                                Page1

Interrupt Vector                 0004h                                                                            TEST       1FFFh
                                  0005h                                                                   Configuration Word  2000h
On-chip Program                                                                                                               2007h
     Memory                       07FFh                                                                            TEST
                                  0800h                                                                                       3FFFh

         TEST                     1FFFh
Configuration Word                2000h
                                  2007h
         TEST
                                  3FFFh

1996 Microchip Technology Inc.         Preliminary                                                                          DS30559A-page 17

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

4.2 Data Memory Organization                              FIGURE 4-3: PIC16C641/661 DATA
                                                                               MEMORY MAP
The data memory (Figure 4-4) is partitioned into two
banks which contain the general purpose registers and        File                             File
the special function registers. Bank 0 is selected when   Address                          Address
bit RP0 (STATUS<5>) is cleared. Bank 1 is selected
when the RP0 bit is set. The Special Function Regis-      00h INDF(1)          INDF(1)     80h
ters are located in the first 32 locations of each Bank.
Register locations A0h-EFh (Bank 1) are general pur-      01h TMR0             OPTION 81h
pose registers implemented as static RAM. Some spe-
cial function registers are mapped in Bank 1.             02h      PCL         PCL         82h

4.2.1 GENERAL PURPOSE REGISTER FILE                       03h STATUS           STATUS 83h

The register file is organized as 176 x 8 for the         04h      FSR         FSR         84h
PIC16C642/662, and 128 x8 for the PIC16C641/661.
Each is accessed either directly, or indirectly through   05h PORTA            TRISA       85h
the File Select Register FSR (Section 4.5).
                                                          06h PORTB            TRISB       86h

                                                          07h PORTC            TRISC       87h
                                                          08h PORTD(2)
                                                          09h PORTE(2)         TRISD(2) 88h
                                                                               TRISE(2) 89h

                                                          0Ah PCLATH           PCLATH 8Ah

                                                          0Bh INTCON           INTCON 8Bh

                                                          0Ch PIR1             PIE1        8Ch

                                                          0Dh                              8Dh

                                                          0Eh                  PCON        8Eh

                                                          0Fh                              8Fh

                                                          10h                              90h

                                                          11h                              91h

                                                          12h                              92h

                                                          13h                              93h

                                                          14h                              94h

                                                          15h                              95h

                                                          16h                              96h

                                                          17h                              97h

                                                          18h                              98h

                                                          19h                              99h

                                                          1Ah                              9Ah

                                                          1Bh                              9Bh

                                                          1Ch                              9Ch

                                                          1Dh                              9Dh

                                                          1Eh                              9Eh

                                                          1Fh CMCON            VRCON 9Fh

                                                          20h                                     A0h
                                                                               General
                                                                      General  Purpose
                                                                     Purpose   Register
                                                                     Register
                                                                                                  BFh

                                                                                                  C0h

                                                                                           EFh

                                                                               Mapped      F0h

                                                                               in Page 0   FFh

                                                          7Fh                  Bank 1
                                                                     Bank 0

                                                                Unimplemented data memory locations, read as '0'.
                                                          Note 1: Not a physical register.

                                                                 2: Not implemented on the PIC16C641.

DS30559A-page 18  Preliminary                                                 1996 Microchip Technology Inc.
                                                        PIC16C64X & PIC16C66X

FIGURE 4-4: PIC16C642/662 DATA                          4.2.2 SPECIAL FUNCTION REGISTERS
                     MEMORY MAP
                                                        The special function registers are registers used by the
   File                                         File    CPU and Peripheral Modules for controlling the desired
Address                                      Address    operation of the device (Table 4-1). These registers are
                                                        static RAM.
00h INDF(1)                        INDF(1)     80h
                                  OPTION       81h      The special function registers can be classified into two
01h TMR0                                       82h      sets (core and peripheral). The special function regis-
                                     PCL       83h      ters associated with the "core" functions are described
02h      PCL                      STATUS       84h      in this section. Those related to the operation of the
                                               85h      peripheral features are described in the section of that
03h STATUS                           FSR       86h      peripheral feature.
                                   TRISA       87h
04h      FSR                       TRISB       88h
                                   TRISC       89h
05h PORTA                         TRISD(2)     8Ah
                                  TRISE(2)     8Bh
06h PORTB                         PCLATH       8Ch
                                  INTCON       8Dh
07h PORTC                           PIE1       8Eh
                                   PCON        8Fh
08h PORTD(2)                                   90h
09h PORTE(2)                      VRCON        91h
                                               92h
0Ah PCLATH                                     93h
                                               94h
0Bh INTCON                                     95h
                                               96h
0Ch PIR1                                       97h
                                               98h
0Dh                                            99h
                                               9Ah
0Eh                                            9Bh
                                               9Ch
0Fh                                            9Dh
                                               9Eh
10h                                            9Fh

11h                                            A0h

12h

13h

14h

15h

16h

17h

18h

19h

1Ah

1Bh

1Ch

1Dh

1Eh

1Fh CMCON

20h

            General               General
            Purpose               Purpose
            Register              Register

7Fh                                          EFh
           Bank 0
                                  Mapped     F0h

                                  in Bank 0

                                                   FFh
                                  Bank 1

               Unimplemented data memory loca-
               tions, read as '0'.
Note 1: Not a physical register.
        2: Not implemented on the PIC16C642.

1996 Microchip Technology Inc.                  Preliminary  DS30559A-page 19
PIC16C64X & PIC16C66X

TABLE 4-1: SPECIAL FUNCTION REGISTERS

Address Name           Bit 7     Bit 6           Bit 5       Bit 4    Bit 3  Bit 2   Bit 1                Bit 0   Value on  Value on
                                                                                                                    POR,    all other
                                                                                                                    BOR,    resets(1)
                                                                                                                     PER

Bank 0

00h     INDF           Addressing this location uses contents of FSR to address data memory (not a physical register) xxxx xxxx xxxx xxxx

01h     TMR0           Timer0 Module's Register                                                                   xxxx xxxx uuuu uuuu

02h     PCL            Program Counter's (PC) Least Significant Byte                                              0000 0000 0000 0000

03h     STATUS         IRP (2)   RP1(2)          RP0         TO       PD     Z       DC                   C       0001 1xxx 000q quuu

04h     FSR            Indirect data memory address pointer                                                       xxxx xxxx uuuu uuuu

05h     PORTA          --        --      PORTA Data Latch when written: PORTA pins when read                      --xx 0000 --xu 0000

06h     PORTB          PORTB Data Latch when written: PORTB pins when read                                        xxxx xxxx uuuu uuuu

06h     PORTC          PORTC Data Latch when written: PORTC pins when read                                        xxxx xxxx uuuu uuuu

06h     PORTD(3)       PORTD Data Latch when written: PORTD pins when read                                        xxxx xxxx uuuu uuuu

06h     PORTE(3)       --        --              --          --       --     RE2     RE1                  RE0 ---- -xxx ---- -uuu

0Ah     PCLATH         --        --              --     Write buffer for upper 5 bits of program counter          ---0 0000 ---0 0000

0Bh     INTCON            GIE    PEIE            T0IE        INTE     RBIE   T0IF    INTF                 RBIF    0000 000x 0000 000u
                       PSPIF(4)  CMIF             --          --        --    --      --                   --     00-- ---- 00-- ----
0Ch     PIR1

0Dh-1Eh Unimplemented                                                                                             --                        --

1Fh     CMCON          C2OUT C1OUT               --          --       CIS    CM2     CM1                  CM0 00-- 0000 00-- 0000

Bank 1

80h     INDF           Addressing this location uses contents of FSR to address data memory (not a physical register) xxxx xxxx xxxx xxxx

81h     OPTION         RBPU INTEDG T0CS                      T0SE     PSA    PS2     PS1                  PS0 1111 1111 1111 1111

82h     PCL            Program Counter's (PC) Least Significant Byte                                              0000 0000 0000 0000

83h     STATUS         IRP(2)    RP1(2)          RP0         TO       PD     Z       DC                   C       0001 1xxx 000q quuu

84h     FSR            Indirect data memory address pointer                                                       xxxx xxxx uuuu uuuu

85h     TRISA          --        --      PORTA Data Direction Register                                            --11 1111 --11 1111

86h     TRISB          PORTB Data Direction Register                                                              1111 1111 1111 1111

86h     TRISC          PORTC Data Direction Register                                                              1111 1111 1111 1111
                                                                                                                  1111 1111 1111 1111
86h     TRISD(3)       PORTD Data Direction Register                                                              0000 -111 0000 -111

86h     TRISE(3)       IBF       OBF             IBOV PSPMODE         --     TRISE2  TRISE1               TRISE0

8Ah     PCLATH         --        --              --     Write buffer for upper 5 bits of program counter          ---0 0000 ---0 0000

8Bh     INTCON            GIE    PEIE            T0IE        INTE     RBIE   T0IF    INTF                 RBIF    0000 000x 0000 000x
                       PSPIE(4)  CMIE             --          --        --    --      --                   --     00-- ---- 00-- ----
8Ch     PIE1

8Dh     Unimplemented                                                                                             --                        --

8Eh     PCON           MPEEN     --              --          --       --     PER     POR                  BOR u--- -qqq u--- -uuu

8Fh-9Eh Unimplemented                                                                                             --                        --

9Fh     VRCON          VREN      VROE            VRR         --       VR3    VR2     VR1                  VR0 000- 0000 000- 0000

       Legend: - = unimplemented locations read as `0', u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented
Note 1: Other (non power-up) resets include MCLR Reset and Watchdog Timer Reset during normal operation.

          2: The IRP and RP1 bits are reserved, always maintain these bits clear.
          3: The PORTD, PORTE, TRISD, and TRISE registers are not implemented on the PIC16C641/642.
          4: Bits PSPIE and PSPIF are reserved on the PIC16C641/642, always maintain these bits clear.

DS30559A-page 20                                        Preliminary                            1996 Microchip Technology Inc.
                                           PIC16C64X & PIC16C66X

4.2.2.1 STATUS REGISTER                                         It is recommended, therefore, that only BCF, BSF,
                                                                SWAPF, and MOVWF instructions are used to alter the
The STATUS register, shown in Figure 4-5, contains              STATUS register because these instructions do not
the arithmetic status of the ALU, the RESET status, and         affect any status bit. For other instructions, not affecting
the bank select bits for data memory.                           any status bits, see the "Instruction Set Summary."

The STATUS register can be the destination for any                  Note 1: The IRP and RP1 bits (STATUS<7:6>) are
instruction, like any other register. If the STATUS                             reserved on the PIC16C64X &
register is the destination for an instruction that affects                     PIC16C66X and should be maintained
the Z, DC or C bits, then the write to these three bits is                      clear. Use of these bits as general pur-
disabled. These bits are set or cleared according to the                        pose R/W bits is NOT recommended,
device logic. Furthermore, the TO and PD bits are not                           since this may affect upward compatibility
writable. Therefore, the result of an instruction with the                      with future products.
STATUS register as destination may be different than
intended.                                                           Note 2: The C and DC bits operate as a Borrow
                                                                                and Digit Borrow out bit, respectively, in
For example, CLRF STATUS will clear the upper-three                             subtraction. See the SUBLW and SUBWF
bits and set the Z bit. This leaves the STATUS register                         instructions for examples.
as 000uu1uu (where u = unchanged).

FIGURE 4-5: STATUS REGISTER (ADDRESS 03h, 83h)

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

IRP     RP1  RP0                  TO  PD                     Z  DC      C       R = Readable bit

bit7                                                                    bit0    W = Writable bit

                                                                                U = Unimplemented bit,

                                                                                read as `0'

                                                                                - n = Value at POR reset

bit 7:  IRP: Register Bank Select bit (used for indirect addressing)
        1 = Bank 2, 3 (100h - 1FFh)
        0 = Bank 0, 1 (00h - FFh)
        Bit IRP is reserved on the PIC16C64X & PIC16C66X, always maintain this bit clear.

bit 6-5: RP1:RP0: Register Bank Select bits (used for direct addressing)
            11 = Bank 3 (180h - 1FFh)
            10 = Bank 2 (100h - 17Fh)
            01 = Bank 1 (80h - FFh)
            00 = Bank 0 (00h - 7Fh)
            Each bank is 128 bytes. Bit RP1 is reserved on the PIC16C64X & PIC16C66X, always maintain this bit
            clear.

bit 4:  TO: Time-out bit
        1 = After power-up, CLRWDT instruction, or SLEEP instruction
        0 = A WDT time-out occurred

bit 3:  PD: Power-down bit
        1 = After power-up or by the CLRWDT instruction
        0 = By execution of the SLEEP instruction

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 (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow the polarity is reversed)
        1 = A carry-out from the 4th low order bit of the result occurred
        0 = No carry-out from the 4th low order bit of the result

bit 0:  C: Carry/borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions)
        1 = 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 two'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.

1996 Microchip Technology Inc.           Preliminary                                     DS30559A-page 21
PIC16C64X & PIC16C66X

4.2.2.2 OPTION REGISTER                                           Note: To achieve a 1:1 prescaler assignment for
                                                                              TMR0, assign the prescaler to the WDT.
The OPTION register is a readable and writable
register which contains various control bits to configure
the TMR0/WDT prescaler, the external RB0/INT
interrupt, TMR0, and the weak pull-ups on PORTB.

FIGURE 4-6: OPTION REGISTER (ADDRESS 81h)

R/W-1   R/W-1    R/W-1    R/W-1 R/W-1                     R/W-1  R/W-1 R/W-1      R= Readable bit
RBPU   INTEDG    T0CS     T0SE PSA                         PS2    PS1 PS0         W= Writable bit
bit7                                                                               U= Unimplemented bit,
                                                                             bit0  read as `0'
                                                                                   - n= Value at POR reset

bit 7:  RBPU: PORTB Pull-up Enable bit
        1 = PORTB pull-ups are disabled
        0 = PORTB pull-ups are enabled by individual port latch values

bit 6:  INTEDG: Interrupt Edge Select bit
        1 = Interrupt on rising edge of RB0/INT pin
        0 = Interrupt on falling edge of RB0/INT pin

bit 5:  T0CS: TMR0 Clock Source Select bit
        1 = Transition on RA4/T0CKI pin
        0 = Internal instruction cycle clock (CLKOUT)

bit 4:  T0SE: TMR0 Source Edge Select bit
        1 = Increment on high-to-low transition on RA4/T0CKI pin
        0 = Increment on low-to-high transition on RA4/T0CKI pin

bit 3:  PSA: Prescaler Assignment bit
        1 = Prescaler is assigned to the WDT
        0 = Prescaler is assigned to the Timer0 module

bit 2-0: PS2:PS0: Prescaler Rate Select bits

        Bit Value TMR0 Rate WDT Rate

        000       1:2      1:1

        001       1:4      1:2

        010       1:8      1:4

        011       1 : 16   1:8

        100       1 : 32   1 : 16

        101       1 : 64   1 : 32

        110       1 : 128  1 : 64

        111       1 : 256  1 : 128

DS30559A-page 22                              Preliminary                           1996 Microchip Technology Inc.
                                                PIC16C64X & PIC16C66X

4.2.2.3 INTCON REGISTER                                   Note:     Interrupt flag bits get set when an interrupt
                                                                    condition occurs regardless of the state of
The INTCON register is a readable and writable                      its corresponding enable bit or the global
register which contains the various enable and flag bits            enable bit, GIE (INTCON<7>).
for all non-peripheral interrupt sources.

FIGURE 4-7: INTCON REGISTER (ADDRESS 0Bh, 8Bh)

R/W-0  R/W-0  R/W-0              R/W-0  R/W-0    R/W-0   R/W-0 R/W-x      R= Readable bit
  GIE   PEIE    T0IE              INTE   RBIE      T0IF   INTF RBIF        W= Writable bit
                                                                           U= Unimplemented bit,
bit7                                                                 bit0  read as `0'
                                                                           - n= Value at POR reset

bit 7:  GIE: Global Interrupt Enable bit
        1 = Enables all un-masked interrupts
        0 = Disables all interrupts

bit 6:  PEIE: Peripheral Interrupt Enable bit
        1 = Enables all un-masked peripheral interrupts
        0 = Disables all peripheral interrupts

bit 5:  T0IE: TMR0 Overflow Interrupt Enable bit
        1 = Enables the TMR0 interrupt
        0 = Disables the TMR0 interrupt

bit 4:  INTE: RB0/INT External Interrupt Enable bit
        1 = Enables the RB0/INT external interrupt
        0 = Disables the RB0/INT external interrupt

bit 3:  RBIE: RB Port Change Interrupt Enable bit
        1 = Enables the RB port change interrupt
        0 = Disables the RB port change interrupt

bit 2:  T0IF: TMR0 Overflow Interrupt Flag bit
        1 = TMR0 register overflowed (must be cleared in software)
        0 = TMR0 register did not overflow

bit 1:  INTF: RB0/INT External Interrupt Flag bit
        1 = The RB0/INT external interrupt occurred (must be cleared in software)
        0 = The RB0/INT external interrupt did not occur

bit 0:  RBIF: RB Port Change Interrupt Flag bit
        1 = When at least one of the RB7:RB4 pins changed state (See Section 5.2 to clear interrupt)
        0 = None of the RB7:RB4 pins have changed state

1996 Microchip Technology Inc.                Preliminary                        DS30559A-page 23
PIC16C64X & PIC16C66X

4.2.2.4 PIE1 REGISTER

This register contains the individual enable bits for the
comparator and Parallel Slave Port interrupts.

FIGURE 4-8: PIE1 REGISTER (ADDRESS 8Ch)

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

PSPIE(1) CMIE     --  --             --                    --   --     --    R= Readable bit
                                                                             W= Writable bit
bit7                                                                   bit0  U= Unimplemented bit,
                                                                             read as `0'
                                                                             - n= Value at POR reset

bit 7:  PSPIE(1): Parallel Slave Port Read/Write Interrupt Enable bit
        1 = Enables the PSP read/write interrupt
        0 = Disables the PSP read/write interrupt

bit 6:  CMIE: Comparator Interrupt Enable bit
        1 = Enables the Comparator interrupt
        0 = Disables the Comparator interrupt

bit 5-0: Unimplemented: Read as '0'

Note 1: Bit PSPIE is reserved on the PIC16C641/642, always maintain this bit clear.

DS30559A-page 24                               Preliminary                   1996 Microchip Technology Inc.
                                          PIC16C64X & PIC16C66X

4.2.2.5 PIR1 REGISTER                                         Note:  Interrupt flag bits get set when an interrupt
                                                                     condition occurs regardless of the state of
This register contains the individual flag bits for the              its corresponding enable bit or the global
comparator and Parallel Slave Port interrupts.                       enable bit, GIE (INTCON<7>). User
                                                                     software should ensure the appropriate
                                                                     interrupt flag bits are clear prior to enabling
                                                                     an interrupt.

FIGURE 4-9: PIR1 REGISTER (ADDRESS 0Ch)

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

PSPIF(1) CMIF  --                 --  --                 --   --        --  R= Readable bit

bit7                                                                 bit0   W= Writable bit

                                                                            U= Unimplemented bit,

                                                                            read as `0'

                                                                            - n= Value at POR reset

bit 7: PSPIF(1): Parallel Slave Port Interrupt Flag bit

        1 = A read or write operation has taken place (must be cleared in software)

        0 = No read or write operation has taken place

bit 6:  CMIF: Comparator Interrupt Flag bit
        1 = Comparator input has changed (must be cleared in software)
        0 = Comparator input has not changed

bit 5-0: Unimplemented: Read as '0'

Note 1: Bit PSPIF is reserved on the PIC16C641/642, always maintain this bit clear.

1996 Microchip Technology Inc.          Preliminary                                    DS30559A-page 25
PIC16C64X & PIC16C66X

4.2.2.6 PCON REGISTER                                            Note:  BOR is unknown on Power-on Reset. It
The PCON register contains flag bits to differentiate                   must then be set by the user and checked
between a Power-on Reset (POR), an external MCLR                        on subsequent resets to see if BOR is
reset, WDT reset, Brown-out Reset (BOR), and Parity                     cleared, indicating a brown-out has
Error Reset (PER). The PCON register also contains a                    occurred. The BOR status bit is a "don't
status bit, MPEEN, which reflects the value of the                      care" and is not necessarily predictable if
MPEEN bit in Configuration Word. See Table 9-4 for                      the brown-out circuit is disabled (by
status of these bits on various resets.                                 programming the BODEN bit in the
                                                                        Configuration word).
FIGURE 4-10: PCON REGISTER (ADDRESS 8Eh)

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

MPEEN --          --   --            --  PER                     POR BOR      R= Readable bit
                                                                              W= Writable bit
bit7                                                                    bit0  U= Unimplemented bit,
                                                                              read as `0'
                                                                              - n= Value at POR reset

bit 7: MPEEN: Memory Parity Error Circuitry Status bit
            Reflects the value of Configuration Word bit, MPEEN

bit 6-3: Unimplemented: Read as '0'

bit 2:  PER: Memory Parity Error Reset Status bit
        1 = No error occurred
        0 = Program memory fetch parity error occurred
        (must be set in software after a Parity Error Reset occurs)

bit 1:  POR: Power-on Reset Status bit
        1 = No Power-on Reset occurred
        0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)

bit 0:  BOR: Brown-out Reset Status bit
        1 = No Brown-out Reset occurred
        0 = A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs)

DS30559A-page 26                         Preliminary                           1996 Microchip Technology Inc.
                                         PIC16C64X & PIC16C66X

4.3 PCL and PCLATH                                                   4.3.2 STACK

The program counter (PC) is 13-bits wide. The low byte               PIC16C64X & PIC16C66X devices have an 8 level
comes from the PCL register, which is readable and                   deep x 13-bit wide hardware stack (Figure 4-2). The
writable. The high byte (PC<12:8>) is not directly read-             stack space is not part of either program or data space
able or writable and comes from PCLATH. On any                       and the stack pointer is not readable or writable. The
reset, the PC is cleared. Figure 4-11 shows the two                  PC is PUSHed onto the stack when a CALL instruction
situations for the loading of the PC. The upper example              is executed or an interrupt causes a branch. The stack
in the figure shows how the PC is loaded on a write to               is POPed in the event of a RETURN, RETLW or a RETFIE
PCL (PCLATH<4:0>  PCH). The lower example in                         instruction execution. PCLATH is not affected by a
the figure shows how the PC is loaded during a CALL                  PUSH or POP operation.
or GOTO instruction (PCLATH<4:3>  PCH).
                                                                     The stack operates as a circular buffer. This means that
FIGURE 4-11: LOADING OF PC IN                                        after the stack has been PUSHed eight times, the ninth
                     DIFFERENT SITUATIONS                            push overwrites the value that was stored from the first
                                                                     push. The tenth push overwrites the second push (and
          PCH              PCL                                       so on).

      12           87                 0  Instruction with                Note 1: There are no status bits to indicate stack
PC                                8      PCL as                                      overflow or stack underflow conditions.
                                         Destination
                  PCLATH<4:0>                                            Note 2: There are no instructions mnemonics
          5                              ALU result                                  called PUSH or POP. These are actions
                                                                                     that occur from the execution of the CALL,
                   PCLATH                                                            RETURN, RETLW, and RETFIE instruc-
                                                                                     tions, or the vectoring to an interrupt
                                                                                     address.

              PCH  87      PCL                                       4.4 Program Memory Paging
      12 11 10                                 0
PC                                                    GOTO, CALL

2 PCLATH<4:3>                         11                             PIC16C642 and PIC16C662 devices have 4K of pro-
                                                      Opcode <10:0>  gram memory, but the CALL and GOTO instructions only
                                                                     have an 11-bit address range. This 11-bit address
                   PCLATH                                            range allows a branch within a 2K program memory
                                                                     page size. To allow CALL and GOTO instructions to
4.3.1 COMPUTED GOTO                                                  address the entire 4K program memory address range,
                                                                     there must be another bit to specify the program mem-
A computed GOTO is accomplished by adding an                         ory page. This paging bit comes from the PCLATH<3>
offset to the program counter (ADDWF PCL). When                      bit (Figure 4-11). When doing a CALL or GOTO instruc-
doing a table read using a computed GOTO method,                     tion, the user must ensure that this page select bit
care should be exercised if the table location crosses a             (PCLATH<3>) is programmed so that the desired pro-
PCL memory boundary (each 256 byte block). Refer to                  gram memory page is addressed. If a return from a
the application note "Implementing a Table Read"                     CALL instruction (or interrupt) is executed, the entire
(AN556).                                                             13-bit PC is pushed onto the stack. Therefore, manipu-
                                                                     lation of the PCLATH<3> bit is not required for the
                                                                     return instructions (which POPs the address from the
                                                                     stack).

                                                                     Note:  The PIC16C64X & PIC16C66X ignore the
                                                                            PCLATH<4> bit, which is used for program
                                                                            memory pages 2 and 3 (1000h - 1FFFh).
                                                                            The use of PCLATH<4> as a general pur-
                                                                            pose read/write bit is not recommended
                                                                            since this may affect upward compatibility
                                                                            with future products.

1996 Microchip Technology Inc.         Preliminary                              DS30559A-page 27
PIC16C64X & PIC16C66X

4.5 Indirect Addressing, INDF, and FSR                        A simple program to clear RAM location 20h-2Fh using
          Registers                                           indirect addressing is shown in Example 4-1.

The INDF register is not a physical register. Addressing      EXAMPLE 4-1: INDIRECT ADDRESSING
the INDF register will cause indirect addressing.
                                                                         movlw 0x20 ;initialize pointer
Indirect addressing is possible by using the INDF reg-
ister. Any instruction using the INDF register actually                  movwf FSR ;to RAM
accesses data pointed to by the file select register
(FSR). Reading INDF itself indirectly will produce 00h.       NEXT       clrf INDF ;clear INDF register
Writing to the INDF register indirectly results in a no-
operation (although status bits may be affected). An                     incf FSR ;inc pointer
effective 9-bit address is obtained by concatenating the
8-bit FSR register and the IRP bit (STATUS<7>), as                       btfss FSR,4 ;all done?
shown in Figure 4-12. However, bit IRP is not used in
the PIC16C64X & PIC16C66X.                                               goto NEXT ;no goto next

                                                                                       ;yes continue

                                                              CONTINUE:

FIGURE 4-12: DIRECT/INDIRECT ADDRESSING

            Direct Addressing                                                          Indirect Addressing

(1)RP1 RP0  6     from opcode     0                                      IRP(1) 7      FSR register         0

bank select location select                                              bank select        location select

                                  00         01           10        11

                             00h                                         00h

                                                          not used

                  Data
                  Memory

                             7Fh             Bank 1 Bank 2                        7Fh
                                     Bank 0                         Bank 3

For memory map detail see Figure 4-3 and Figure 4-4.
Note 1: Bits RP1 and IRP are reserved, always maintain these bits clear.

DS30559A-page 28                             Preliminary                               1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

5.0 I/O PORTS                                                  FIGURE 5-1: BLOCK DIAGRAM OF
                                                                                    RA1:RA0 PINS
The PIC16C641 and PIC16C642 have three ports,
PORTA, PORTB, and PORTC. PIC16C661 and                         Data
PIC16C662 devices have five ports, PORTA through
PORTE. Some pins for these I/O ports are multiplexed           bus    D  Q
with alternate functions for the peripheral features on
the device. In general, when a peripheral is enabled,          WR                     VDD
that pin may not be used as a general purpose I/O pin.
                                                               Port      CK Q
5.1 PORTA and TRISA Registers
                                                                                      P
PORTA is a 6-bit wide latch. RA4 is a Schmitt Trigger
input and an open drain output. Pin RA4 is multiplexed                Data Latch
with the T0CKI clock input. All other RA port pins have
Schmitt Trigger input levels and full CMOS output driv-               D  Q
ers. All pins have data direction bits (TRIS registers)
which can configure these pins as input or output.             WR                     N                               I/O Pin
                                                               TRIS
Setting a bit in the TRISA register puts the correspond-                 CK Q
ing output driver in a hi-impedance mode. Clearing a bit
in the TRISA register puts the contents of the output                 TRIS Latch                    VSS
latch on the selected pin.
                                                                                        Analog
Reading the PORTA register reads the status of the                                 Input Mode
pins, whereas writing to it will write to the port latch. All
write operations are read-modify-write operations.                                 Schmitt Trigger
Therefore, a write to a port implies that the port pins are
read, this value is modified, and then written to the port               RD TRIS   Input Buffer
data latch.
                                                                                   Q                               D
The PORTA pins are multiplexed with comparator and
voltage reference functions. The operation of these                                                            EN
pins are selected by control bits in the CMCON                       RD PORT
(comparator control register) register and the VRCON
(voltage reference control) register. When selected as                  To Comparator
comparator inputs, these pins will read as '0's.               Note: I/O pins have protection diodes to VDD and VSS.

                                                               Note:  On reset, the TRISA register is set to all
                                                                      inputs. The digital inputs are disabled and
                                                                      the comparator inputs are forced to ground
                                                                      to reduce excess current consumption.

                                                               TRISA controls the direction of the RA pins, even when
                                                               they are being used as comparator inputs. The user
                                                               must make sure to keep the pins configured as inputs
                                                               when using them as comparator inputs.

                                                               The RA2 pin will also function as the output for the
                                                               voltage reference. When in this mode, the VREF pin is
                                                               a very hi-impedance output. The user must set the
                                                               TRISA<2> bit and use hi-impedance loads.

                                                               In one of the comparator modes defined by the
                                                               CMCON register, pins RA3 and RA4 become outputs
                                                               of the comparators. The TRISA<4:3> bits must be
                                                               cleared to enable outputs to use this function.

                                                               EXAMPLE 5-1: INITIALIZING PORTA

                                                               CLRF   PORTA        ;Initialize PORTA by
                                                                                   ;clearing output latches
                                                               MOVLW  0x07         ;Turn comparators off,
                                                               MOVWF  CMCON        ;enable pins for I/O
                                                               BSF    STATUS, RP0  ;Select bank1
                                                               MOVLW  0x1F         ;Value to initialize
                                                                                   ;data direction
                                                               MOVWF  TRISA        ;Set RA<4:0> as inputs
                                                                                   ;TRISA<7:5> are clear

1996 Microchip Technology Inc.  Preliminary                                         DS30559A-page 29

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

FIGURE 5-2:  BLOCK DIAGRAM OF RA2 PIN

Data          Q

bus   D

WR                           VDD

Port     CK Q

                             P

      Data Latch

      D           Q

WR                           N                         RA2 Pin
TRIS
         CK Q

      TRIS Latch                           VSS

                               Analog
                          Input Mode

             RD TRIS      Schmitt Trigger
                              Input Buffer

                          Q                         D

                                                EN
      RD PORT

         To Comparator
               VROE

                VREF
Note: I/O pin has protection diodes to VDD and VSS.

FIGURE 5-3: BLOCK DIAGRAM OF RA3 PIN

Data  D           Q                              Comparator Mode = 110
bus                       Comparator Output
                                                                                  VDD
WR      CK Q                                                                      P
Port  Data Latch

      D           Q

WR                                                                                N              RA3 Pin
TRIS
        CK Q
      TRIS Latch                                                                            VSS
                                                                                Analog
             RD TRIS                                                       Input Mode

                                                                              Schmitt Trigger
                                                                                   Input Buffer

                                                                        Q      D

                                                                           EN

      RD PORT
           To Comparator

DS30559A-page 30                                       Preliminary                1996 Microchip Technology Inc.
                                                        PIC16C64X & PIC16C66X

FIGURE 5-4: BLOCK DIAGRAM OF RA4 PIN

Data     D      Q                           Comparator Mode = 110
bus                  Comparator Output

WR          CK Q
Port

         Data Latch

         D      Q

WR                                                                                  N           RA4 Pin
TRIS
           CK Q
         TRIS Latch                                                                 VSS

                  RD TRIS                                                     Schmitt Trigger
                                                                                  Input Buffer
     RD PORT
          TMR0 Clock Input                                         Q          D

                                                                          EN

TABLE 5-1: PORTA FUNCTIONS

     Name            Bit #            Buffer                              Function
                                      Type

RA0/AN0              bit0                ST         Input/output or comparator input.
                                                    Input/output or comparator input.
RA1/AN1              bit1                ST         Input/output or comparator input or VREF output.
                                                    Input/output or comparator input/output.
RA2/AN2/VREF         bit2                ST         Input/output or external clock input for TMR0 or comparator output. Out-
                                                    put is open drain type.
RA3/AN3              bit3                ST         Input/output.

RA4/T0CKI            bit4                ST

RA5                  bit5                ST

Legend: ST = Schmitt Trigger input

TABLE 5-2: SUMMARY OF REGISTERS ASSOCIATED WITH PORTA

Address Name         Bit 7        Bit 6      Bit 5  Bit 4  Bit 3   Bit 2  Bit 1  Bit 0          Value on:  Value on
                                                                                                   POR,    all other
                                                                                                   BOR      resets

05h      PORTA       --           --         RA5 RA4 RA3 RA2 RA1 RA0 --xx 0000 --uu 0000
85h
1Fh      TRISA       --           -- TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111
9Fh
Legend:  CMCON C2OUT C1OUT --                       --     CIS     CM2 CM1 CM0 00-- 0000 00-- 0000

         VRCON VREN VROE VRR                        --     VR3 VR2 VR1 VR0 000- 0000 000- 0000

         x = unknown, u = unchanged, - = unimplemented locations read as `0'. Shaded cells are not used by PORTA.

1996 Microchip Technology Inc.                    Preliminary                                 DS30559A-page 31
PIC16C64X & PIC16C66X

5.2 PORTB and TRISB Registers                                                      This interrupt can wake the device from SLEEP. The
                                                                                   user, in the interrupt service routine, can clear the
PORTB is an 8-bit wide bi-directional port. The                                    interrupt in the following manner:
corresponding data direction register is TRISB. Setting
a bit in the TRISB register puts the corresponding out-                            a) Any read or write of PORTB. This will end the
put driver in a hi-impedance mode. Clearing a bit in the                                 mismatch condition.
TRISB register puts the contents of the output latch on
the selected pin(s).                                                               b) Clear flag bit RBIF.

Reading PORTB register reads the status of the pins,                               A mismatch condition will continue to set flag bit RBIF.
whereas writing to it will write to the port latch. All write                      Reading PORTB will end the mismatch condition, and
operations are read-modify-write operations. There-                                allow flag bit RBIF to be cleared.
fore, a write to a port implies that the port pins are read,
this value is modified, and then written to the port data                          This interrupt on mismatch feature, together with
latch.                                                                             software configurable pull-ups on these four pins allow
                                                                                   easy interface to a keypad and make it possible for
Each of the PORTB pins has a weak internal pull-up. A                              wake-up on key-depression. (See AN552 in the
single control bit can turn on all the pull-ups. This is                           Microchip Embedded Control Handbook.)
done by clearing the RBPU (OPTION<7>) bit. The
weak pull-up is automatically turned off when the port                             The interrupt on change feature is recommended for
pin is configured as an output. The pull-ups are dis-                              wake-up on key depression operation and operations
abled on a Power-on Reset.                                                         where PORTB is only used for the interrupt on change
                                                                                   feature. Polling of PORTB is not recommended while
Four of PORTB's pins, RB7:RB4, have an interrupt on                                using the interrupt on change feature.
change feature. Only pins configured as inputs can
cause this interrupt to occur (i.e., any RB7:RB4 pin                               FIGURE 5-6:  BLOCK DIAGRAM OF
configured as an output is excluded from the interrupt                                          RB3:RB0 PINS
on change comparison). The input pins (of RB7:RB4)                                  RBPU(2)
are compared with the old value latched on the last                                 Data bus                         VDD
read of PORTB. The "mismatch" outputs of RB7:RB4                                    WR Port
are OR'ed together to generate the RBIF interrupt (flag                                                                                      P  weak
latched in (INTCON<0>)).                                                                                                                        pull-up

                                                                                                Data Latch                                      I/O
                                                                                                 DQ                                             pin(1)

                                                                                                   CK

FIGURE 5-5:    BLOCK DIAGRAM OF                                                                 DQ          TTL
               RB7:RB4 PINS                                                                       CK        Input
     RBPU(2)                                                                                                Buffer
     Data bus                                                        VDD           WR TRIS
     WR Port
                  Data Latch                                            weak                    RD TRIS     QD
     WR TRIS       DQ                                                P pull-up                  RD Port          EN

                     CK                                                    I/O
                                                                           pin(1)

                  TRIS Latch
                   DQ

                        CK                                    TTL                  RB0/INT
                                                              Input

                                                              Buffer ST                         ST                                           RD Port
                                                                                                Buffer
                                                                     Buffer

                  RD TRIS        Latch
                              QD
                                                                                   Note 1: I/O pins have diode protection to VDD and VSS.
                  RD Port     EN
                                                                                          2: TRISB = '1' enables weak pull-up if RBPU = '0'
                                                                                             (OPTION<7>).

Set RBIF

          From other          QD
          RB7:RB4 pins

                                                          EN         RD Port
RB7:RB6 in serial programming mode

Note 1: I/O pins have diode protection to VDD and VSS.

       2: TRISB = '1' enables weak pull-up if RBPU = '0'
           (OPTION<7>).

DS30559A-page 32                                                              Preliminary       1996 Microchip Technology Inc.
                                                PIC16C64X & PIC16C66X

EXAMPLE 5-2: INITIALIZING PORTB

CLRF   PORTB        ; Initialize PORTB by
                    ; clearing output
BSF    STATUS, RP0  ; data latches
MOVLW  0xCF         ; Select Bank 1
                    ; Value used to
MOVWF  TRISB        ; initialize data
                    ; direction
                    ; Set RB<3:0> as inputs
                    ; RB<5:4> as outputs
                    ; RB<7:6> as inputs

TABLE 5-3: PORTB FUNCTIONS

     Name     Bit # Buffer Type                                          Function

RB0/INT       bit0         TTL/ST(1) Input/output or external interrupt input. Internal software programmable

                                         weak pull-up.

RB1           bit1                TTL    Input/output pin. Internal software programmable weak pull-up.

RB2           bit2                TTL    Input/output pin. Internal software programmable weak pull-up.

RB3           bit3                TTL    Input/output pin. Internal software programmable weak pull-up.

RB4           bit4                TTL    Input/output pin (with interrupt on change). Internal software programmable

                                         weak pull-up.

RB5           bit5                TTL    Input/output pin (with interrupt on change). Internal software programmable

                                         weak pull-up.

RB6           bit6         TTL/ST(2) Input/output pin (with interrupt on change). Internal software programmable

                                         weak pull-up. Serial programming clock pin.

RB7           bit7         TTL/ST(2) Input/output pin (with interrupt on change). Internal software programmable

                                         weak pull-up. Serial programming data pin.

Legend: ST = Schmitt Trigger input, TTL = TTL input
Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt.

        2: This buffer is a Schmitt Trigger input when used in serial programming mode.

TABLE 5-4: SUMMARY OF REGISTERS ASSOCIATED WITH PORTB

Address Name        Bit 7         Bit 6  Bit 5  Bit 4   Bit 3  Bit 2     Bit 1     Bit 0   Value on:     Value on
                                                                                              POR,       all other
                                                                                              BOR         resets

06h        PORTB RB7              RB6    RB5    RB4     RB3    RB2         RB1     RB0 xxxx xxxx         uuuu uuuu
                                                                         TRISB1  TRISB0 1111 1111        1111 1111
86h        TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2                                               1111 1111
                                                                           PS1     PS0 1111 1111
81h        OPTION RBPU INTEDG T0CS T0SE PSA PS2

Legend: x = unknown, u = unchanged, shaded cells are not used by PORTB.

1996 Microchip Technology Inc.                Preliminary                                DS30559A-page 33
PIC16C64X & PIC16C66X

5.3 PORTC and TRISC Registers                                    FIGURE 5-7: PORTC BLOCK DIAGRAM (IN
                                                                                      I/O PORT MODE)
PORTC is an 8-bit bi-directional port. Each pin is indi-
vidually configurable as an input or output through the          Data     D    Q
TRISC register. PORTC pins have Schmitt Trigger                  bus
input buffers.                                                   WR
                                                                 PORT
EXAMPLE 5-3: INITIALIZING PORTC                                              CK                              I/O pin(1)
                                                                 WR
CLRF   PORTC        ; Initialize PORTC by                        TRIS     Data Latch       Schmitt
                    ; clearing output                                       DQ             Trigger
BSF    STATUS, RP0  ; data latches                                                         input
MOVLW  0xCF         ; Select Bank 1                                        CK              buffer
                    ; Value used to                                     TRIS Latch
MOVWF  TRISC        ; initialize data
                    ; direction
                    ; Set RC<3:0> as inputs                                    RD TRIS
                    ; RC<5:4> as outputs
                    ; RC<7:6> as inputs

                                                                                        Q  D

                                                                                           ENEN

                                                                 RD PORT

                                                                 Note 1: I/O pins have protection diodes to VDD and VSS.

TABLE 5-5: PORTC FUNCTIONS

Name                Bit# Buffer Type Function

RC0                 bit0             ST         Input/output
                                                Input/output
RC1                 bit1             ST
                                                Input/output
RC2                 bit2             ST         Input/output
                                                Input/output
RC3                 bit3             ST         Input/output
                                                Input/output
RC4                 bit4             ST
                                                Input/output
RC5                 bit5             ST

RC6                 bit6             ST

RC7                 bit7             ST

Legend: ST = Schmitt Trigger input

TABLE 5-6: SUMMARY OF REGISTERS ASSOCIATED WITH PORTC

Address Name        Bit 7  Bit 6         Bit 5  Bit 4     Bit 3  Bit 2  Bit 1  Bit 0    Value on:  Value on all
                                                                                           POR,    other resets
                                                                                           BOR

07h    PORTC RC7           RC6           RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu

87h    TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 1111 1111 1111 1111

Legend: x = unknown, u = unchanged.

DS30559A-page 34                                Preliminary                        1996 Microchip Technology Inc.
                                             PIC16C64X & PIC16C66X

5.4 PORTD and TRISD Registers                                     FIGURE 5-8: PORTD BLOCK DIAGRAM (IN
          (PIC16C661 and PIC16C662 only)                                               I/O PORT MODE)

PORTD is an 8-bit port with Schmitt Trigger input buff-           Data     D    Q
ers. Each pin is individually configurable as an input or         bus
output.                                                           WR          CK                                  I/O pin(1)
                                                                  PORT
PORTD can be configured as an 8-bit wide micropro-                         Data Latch           Schmitt
cessor port (parallel slave port) by setting control bit          WR         DQ                 Trigger
PSPMODE (TRISE<4>). In this mode, the input buffers               TRIS                          input
are TTL.                                                                                        buffer

                                                                            CK
                                                                         TRIS Latch

                                                                                RD TRIS

                                                                                         Q      D

                                                                                                ENEN

                                                                  RD PORT

                                                                  Note 1: I/O pins have protection diodes to VDD and VSS.

TABLE 5-7: PORTD FUNCTIONS

Name      Bit#   Buffer Type                                               Function

RD0/PSP0  bit0                    ST/TTL(1)  Input/output port pin or parallel slave port bit0
                                  ST/TTL(1)  Input/output port pin or parallel slave port bit1
RD1/PSP1  bit1                    ST/TTL(1)  Input/output port pin or parallel slave port bit2
                                  ST/TTL(1)  Input/output port pin or parallel slave port bit3
RD2/PSP2  bit2                    ST/TTL(1)  Input/output port pin or parallel slave port bit4
                                  ST/TTL(1)  Input/output port pin or parallel slave port bit5
RD3/PSP3  bit3                    ST/TTL(1)  Input/output port pin or parallel slave port bit6
                                  ST/TTL(1)  Input/output port pin or parallel slave port bit7
RD4/PSP4  bit4

RD5/PSP5  bit5

RD6/PSP6  bit6

RD7/PSP7  bit7

Legend: ST = Schmitt Trigger input, TTL = TTL input
Note 1: Input buffers are Schmitt Triggers when in I/O mode and TTL buffers when in Parallel Slave Port Mode.

TABLE 5-8: SUMMARY OF REGISTERS ASSOCIATED WITH PORTD

Address Name Bit 7 Bit 6 Bit 5               Bit 4         Bit 3  Bit 2  Bit 1  Bit 0           Value on:  Value on all
                                                                                                   POR,    other resets
                                                                                                   BOR

08h   PORTD RD7 RD6 RD5                      RD4           RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu

88h   TRISD TRISD7 TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 TRISD0 1111 1111 1111 1111

89h   TRISE IBF  OBF IBOV PSPMODE -- TRISE2 TRISE1 TRISE0 0000 -111 0000 -111

Legend: x = unknown, u = unchanged, - = unimplemented read as '0'. Shaded cells are not used by PORTD.

1996 Microchip Technology Inc.             Preliminary                                                DS30559A-page 35
PIC16C64X & PIC16C66X

5.5 PORTE and TRISE Register                                     Figure 5-9 shows the TRISE register, which also con-
          (PIC16C661 and PIC16C662 only)                         trols the parallel slave port operation.

PORTE has three pins RE0/RD, RE1/WR, and RE2/
CS, which are individually configurable as inputs or
outputs. These pins have Schmitt Trigger input buffers.

I/O PORTE becomes control inputs for the micropro-
cessor port when bit PSPMODE (TRISE<4>) is set. In
this mode, the user must make sure that the
TRISE<2:0> bits are set (pins are configured as digital
inputs). In this mode the input buffers are TTL.

FIGURE 5-9: TRISE REGISTER (ADDRESS 89h)

    R-0  R-0      R/W-0 R/W-0        U-0                  R/W-1   R/W-1   R/W-1
    IBF  OBF                                             TRISE2  TRISE1  TRISE0
bit7              IBOV PSPMODE --                                                     R = Readable bit
                                                                                bit0  W = Writable bit
bit 7:                                                                                U = Unimplemented bit,

bit 6:                                                                                        read as `0'
                                                                                      - n = Value at POR reset
bit 5:
         IBF: Input Buffer Full Status bit
bit 4:   1 = A word has been received and waiting to be read by the CPU
         0 = No word has been received
bit 3:
bit 2:   OBF: Output Buffer Full Status bit
         1 = The output buffer still holds a previously written word
bit 1:   0 = The output buffer has been read

bit 0:   IBOV: Input Buffer Overflow Detect bit (in microprocessor mode)
         1 = A write occurred when a previously input word has not been read (must be cleared in software)
         0 = No overflow occurred

         PSPMODE: Parallel Slave Port Mode Select bit
         1 = Parallel slave port mode
         0 = General purpose I/O mode

         Unimplemented: Read as '0'

         TRISE2: Direction control bit for pin RE2/CS
         1 = Input
         0 = Output

         TRISE1: Direction control bit for pin RE1/WR
         1 = Input
         0 = Output

         TRISE0: Direction control bit for pin RE0/RD
         1 = Input
         0 = Output

DS30559A-page 36                          Preliminary                                  1996 Microchip Technology Inc.
                                                     PIC16C64X & PIC16C66X

FIGURE 5-10: PORTE BLOCK DIAGRAM (IN I/O PORT MODE)

        Data Bus                  D  Q

        WR PORT                     CK Q                                                      I/O pin
                                  Data Latch
                                                                                          Schmitt
                                  D  Q                                                    Trigger
                                                                                          input
        WR TRIS                      CK Q                                                 buffer
                                  TRIS Latch

                                     RD TRIS

                                                                      Q       D

                                                                             ENEN

        RD PORT

        Note: I/O pins have protection diodes to VDD and VSS.

TABLE 5-9: PORTE FUNCTIONS

Name              Bit# Buffer Type                                           Function

RE0/RD            bit0            ST/TTL(1) Input/output port pin or read control input in parallel slave port mode:
RE1/WR
RE2/CS                                               RD

                                                     1 = Not a read operation

                                                     0 = Read operation. Reads PORTD register (if chip selected)

                  bit1            ST/TTL(1) Input/output port pin or write control input in parallel slave port mode:

                                                     WR
                                                     1 = Not a write operation

                                                     0 = Write operation. Writes PORTD register (if chip selected)

                  bit2            ST/TTL(1) Input/output port pin or chip select control input in parallel slave port

                                              mode:

                                                     CS
                                                     1 = Device is not selected

                                                     0 = Device is selected

Legend: ST = Schmitt Trigger input, TTL = TTL input
Note 1: Input buffers are Schmitt Triggers when in I/O mode and TTL buffers when in Parallel Slave Port Mode.

TABLE 5-10: SUMMARY OF REGISTERS ASSOCIATED WITH PORTE

Address Name      Bit 7 Bit 6 Bit 5           Bit 4      Bit 3 Bit 2     Bit 1     Bit 0  Value on:     Value on all
                                                                                             POR,       other resets
                                                                                             BOR

09h     PORTE     ---- --                     --         -- RE2          RE1       RE0 ---- -xxx        ---- -uuu
                                                                                                        0000 -111
89h     TRISE     IBF OBF IBOV PSPMODE -- TRISE2 TRISE1 TRISE0 0000 -111

Legend: x = unknown, u = unchanged, - = unimplemented read as '0'. Shaded cells are not used by PORTE.

1996 Microchip Technology Inc.                     Preliminary                                        DS30559A-page 37
PIC16C64X & PIC16C66X

5.6 I/O Programming Considerations                                  EXAMPLE 5-4: READ-MODIFY-WRITE
                                                                                            INSTRUCTIONS ON AN I/O
5.6.1 BI-DIRECTIONAL I/O PORTS                                                              PORT

Any instruction which writes, operates internally as a              ;Initial PORT settings: PORTB<7:4> Inputs
read followed by a write operation. The BCF and BSF
instructions, for example, read the register into the               ;                     PORTB<3:0> Outputs
CPU, execute the bit operation and write the result
back to the register. Caution must be used when these               ;PORTB<7:6> have external pull-ups and are
instructions are applied to a port with both inputs and
outputs defined. For example, a BSF operation on bit5               ;not connected to other circuitry
of PORTB will cause all eight bits of PORTB to be read
into the CPU. Then the BSF operation takes place on                 ;
bit5 and PORTB is written to the output latches. If
another bit of PORTB is used as a bi-directional I/O pin            ;                     PORT latch PORT pins
(e.g., bit0) and it is defined as an input at this time, the
input signal present on the pin itself would be read into           ;                     ---------- ---------
the CPU and rewritten to the data latch of this particular
pin, overwriting the previous content. As long as the pin              BCF PORTB, 7 ; 01pp pppp 11pp pppp
stays in the input mode, no problem occurs. However,
if bit0 is switched into output mode later on, the content             BCF PORTB, 6 ; 10pp pppp 11pp pppp
of the data latch may now be unknown.
                                                                       BCF STATUS, RP1 ;
Reading the port register reads the values of the port
pins. Writing to the port register writes the value to the             BSF STATUS, RP0 ;
port latch. When using read-modify-write instructions
(e.g., BCF, BSF, etc.) on a port, the value of the port                BCF TRISB, 7 ; 10pp pppp 11pp pppp
pins is read, the desired operation is done to this value,
and this value is then written to the port latch.                      BCF TRISB, 6 ; 10pp pppp 10pp pppp

Example 5-4 shows the effect of two sequential                      ;
read-modify-write instructions on an I/O port.
                                                                    ;Note that the user may have expected the
A pin actively outputting a Low or High should not be
driven from external devices at the same time in order              ;pin values to be 00pp ppp. The 2nd BCF
to change the level on this pin ("wired-or", "wired-and").
The resulting high output currents may damage                       ;caused RB7 to be latched as the pin value
the chip.
                                                                    ;(high).

                                                                    5.6.2 SUCCESSIVE OPERATIONS ON I/O
                                                                                PORTS

                                                                    The actual write to an I/O port happens at the end of an
                                                                    instruction cycle, whereas for reading, the data must be
                                                                    valid at the beginning of the instruction cycle
                                                                    (Figure 5-11). Therefore, care must be exercised if a
                                                                    write followed by a read operation is carried out on the
                                                                    same I/O port. The sequence of instructions should be
                                                                    such to allow the pin voltage to stabilize (load
                                                                    dependent) before the next instruction which causes
                                                                    that file to be read into the CPU is executed. Otherwise,
                                                                    the previous state of that pin may be read into the CPU
                                                                    rather than the new state. When in doubt, it is better to
                                                                    separate these instructions with an NOP or another
                                                                    instruction not accessing this I/O port.

FIGURE 5-11: SUCCESSIVE I/O OPERATION

              Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4                  Note:

          PC      PC  PC + 1            PC + 2                         PC + 3  This example shows a write to PORTB
Instruction                             NOP                            NOP     followed by a read from PORTB.
              MOVWF PORTB MOVF PORTB,W
   fetched         write to                                                    Note that:
                   PORTB
                                                                               data setup time = (0.25TCY - TPD)
RB7:RB0
                                                                               where TCY = instruction cycle
Instruction                                           Port pin         NOP               TPD = propagation delay
executed                                             sampled here
                                               TPD                             Therefore, at higher clock frequencies,
                                                                               a write followed by a read may be
                      MOVWF PORTB MOVF PORTB,W                                 problematic.
                           write to
                           PORTB

DS30559A-page 38                        Preliminary                                        1996 Microchip Technology Inc.
                                               PIC16C64X & PIC16C66X

5.7 Parallel Slave Port                                        An interrupt is generated and latched into flag bit
          (PIC16C661 and PIC16C662 only)                       PSPIF (PIR1<7>) when a read or a write operation is
                                                               completed. Flag bit PSPIF must be cleared by user
PORTD operates as an 8-bit wide parallel slave port, or        software. The interrupt can be disabled by clearing the
as a microprocessor port when control bit PSPMODE              interrupt enable bit PSPIE (PIE1<7>).
(TRISE<4>) is set. In slave mode it is asynchronously
readable and writable by the external world through            FIGURE 5-12: PORTD AND PORTE AS A
RD control input pin (RE0/RD) and WR control input pin                              PARALLEL SLAVE PORT
(RE1/WR).
                                                               Data bus                                         RDx
It can directly interface to an 8-bit microprocessor data                           DQ                          pin
bus. The external microprocessor can read or write the
PORTD latch as an 8-bit latch. Setting PSPMODE                        WR                        TTL
enables port pin RE0/RD to be the RD input, RE1/WR                    PORT
to be the WR input and RE2/CS to be the CS (chip
select) input. For this functionality, the corresponding                            CK
data direction bits of the TRISE register (TRISE<2:0>)
must be configured as inputs (set).                                           Q          D

There are actually two 8-bit latches, one for data-out                  RD               ENEN
(from the PIC16/17) and one for data input. The user                    PORT
writes 8-bit data to PORTD data latch and reads data
from the port pin latch (note that they have the same          One bit of PORTD
address). In this mode, the TRISD register is ignored
since the microprocessor is controlling the direction of         Set interrupt flag
data flow.                                                       PSPIF (PIR1<7>)

Input Buffer Full Status Flag bit IBF (TRISE<7>) is set                                         Read                RD
if a received word is waiting to be read by the CPU.
Once the PORTD input latch is read, bit IBF is cleared.                                                   TTL
IBF is a read only status bit. Output Buffer Full Status
Flag bit OBF (TRISE<6>) is set if a word written to                                             Chip Select
PORTD latch is waiting to be read by the external bus.
Once the PORTD output latch is read by the micropro-                                                       TTL      CS
cessor, bit OBF is cleared. Input Buffer Overflow Status
flag bit IBOV (TRISE<5>) is set if a second write to the                                        Write               WR
microprocessor port is attempted when the previous
word has not been read by the CPU (the first word is                                                       TTL
retained in the buffer).
                                                               Note: I/O pins have protection diodes to VDD and VSS.
When not in Parallel Slave Port mode, bits IBF and
OBF are held clear. However, if flag bit IBOV was pre-
viously set, it must be cleared in software.

TABLE 5-11: REGISTERS ASSOCIATED WITH PARALLEL SLAVE PORT

Address Name  Bit 7 Bit 6 Bit 5         Bit 4              Bit 3 Bit 2  Bit 1            Bit 0  Value on:    Value on all
                                                                                                   POR,      other resets
                                                                                                   BOR

08h  PORTD PSP7 PSP6 PSP5 PSP4 PSP3 PSP2 PSP1 PSP0 xxxx xxxx uuuu uuuu

09h  PORTE    --                  ----  --                 -- RE2 RE1 RE0 ---- -xxx ---- -uuu

89h  TRISE    IBF OBF IBOV PSPMODE -- TRISE2 TRISE1 TRISE0 0000 -111 0000 -111

0Ch  PIR1     PSPIF(1) CMIF --          --                 --  --       --               -- 00-- ---- 00-- ----

8Ch  PIE1     PSPIE(1) CMIE --          --                 --  --       --               -- 00-- ---- 00-- ----

Legend: x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by the PSP.

Note 1: These bits are reserved on the PIC16C641/642, always maintain these bits clear.

1996 Microchip Technology Inc.        Preliminary                                             DS30559A-page 39
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 40  Preliminary   1996 Microchip Technology Inc.
                                                    PIC16C64X & PIC16C66X

6.0 TIMER0 MODULE                                                (OPTION<4>). Clearing bit T0SE selects the rising
                                                                 edge. Restrictions on the external clock input are dis-
The Timer0 module has the following features:                    cussed in detail in Section 6.2.

8-bit timer/counter register, TMR0                             The prescaler is mutually exclusively shared between
   - Read and write capability                                   the Timer0 module and the Watchdog Timer. The pres-
   - Interrupt on overflow from FFh to 00h                       caler assignment is controlled in software by control bit
                                                                 PSA (OPTION<3>). Clearing bit PSA will assign the
8-bit software programmable prescaler                          prescaler to the Timer0 module. The prescaler is not
Internal or external clock select                              readable or writable. When the prescaler is assigned to
                                                                 the Timer0 module, prescale values of 1:2, 1:4, ...,
   - Edge select for external clock                              1:256 are selectable. Section 6.3 details the operation
                                                                 of the prescaler.
Figure 6-1 is a simplified block diagram of the Timer0
module.                                                          6.1 Timer0 Interrupt

Timer mode is selected by clearing bit T0CS                      The TMR0 interrupt is generated when the register
(OPTION<5>). In timer mode, the Timer0 module will               (TMR0) overflows from FFh to 00h. This overflow sets
increment every instruction cycle (without prescaler). If        interrupt flag bit T0IF (INTCON<2>). The interrupt can
TMR0 register is written, the increment is inhibited for         be masked by clearing enable bit T0IE (INTCON<5>).
the following two instruction cycles (Figure 6-2 and             Flag bit T0IF must be cleared in software by the Timer0
Figure 6-3). The user can work around this by writing            interrupt service routine before re-enabling this inter-
an adjusted value to the TMR0 register.                          rupt. The TMR0 interrupt cannot wake the processor
                                                                 from SLEEP since the timer is shut off during SLEEP.
Counter mode is selected by setting bit T0CS. In this            Figure 6-4 displays the Timer0 interrupt timing.
mode, Timer0 will increment either on every rising or
falling edge of pin RA4/T0CKI. The incrementing edge
is determined by the source edge select bit T0SE

FIGURE 6-1: TIMER0 BLOCK DIAGRAM

                                                                                                    Data bus

RA4/T0CKI FOSC/4                     0                               PSout  Sync with                           8
pin                                  1                           1           Internal               TMR0 reg
                                                                              clocks
              T0SE                T0CS  Programmable             0                           PSout
                                            Prescaler
                                                                            (2 cycle delay)
                                                    3
                                        PS2, PS1, PS0      PSA                                                     Set bit T0IF
                                                                                                                   on overflow

Note 1: Bits, T0CS, T0SE, PSA, and PS2, PS1, PS0 are (OPTION<5:0).
        2: The prescaler is shared with Watchdog Timer (refer to Figure 6-6 for detailed diagram).

FIGURE 6-2: TIMER0 TIMING: INTERNAL CLOCK/NO PRESCALER

PC           Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
(Program
Counter)         PC-1             PC    PC+1               PC+2  PC+3                  PC+4         PC+5           PC+6

Instruction            MOVWF TMR0 MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W
Fetch

TMR0         T0        T0+1             T0+2        NT0          NT0        NT0                     NT0+1          NT0+2

Instruction                             Write TMR0  Read TMR0    Read TMR0  Read TMR0               Read TMR0      Read TMR0
Executed                                executed    reads NT0    reads NT0  reads NT0

                                                                                                    reads NT0 + 1 reads NT0 + 2

1996 Microchip Technology Inc.                    Preliminary                                                DS30559A-page 41

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

FIGURE 6-3: TIMER0 TIMING: INTERNAL CLOCK/PRESCALE 1:2

PC           Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
(Program
Counter)         PC-1       PC      PC+1         PC+2                               PC+3  PC+4       PC+5       PC+6

Instruction               MOVWF TMR0 MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W MOVF TMR0,W
Fetch
             T0             T0+1                                                    NT0                         NT0+1          T0
TMR0

Instruction                         Write TMR0   Read TMR0       Read TMR0                Read TMR0  Read TMR0  Read TMR0
Execute                             executed     reads NT0       reads NT0                reads NT0  reads NT0  reads NT0 + 1

FIGURE 6-4: TIMER0 INTERRUPT TIMING

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

OSC1

CLKOUT(3)

Timer0                 FEh          FFh                     00h                           01h                   02h

                       1                 1

T0IF bit

(INTCON<2>)

GIE bit
(INTCON<7>)

INSTRUCTION
FLOW

            PC             PC        PC +1                    PC +1                            0004h               0005h
                       Inst (PC)    Inst (PC+1)             Dummy cycle                    Inst (0004h)         Inst (0005h)
Instruction            Inst (PC-1)   Inst (PC)                                            Dummy cycle           Inst (0004h)
fetched

Instruction
executed

             Note 1: Interrupt flag bit T0IF is sampled here (every Q1).

                   2: Interrupt latency = 4Tcy where Tcy = instruction cycle time.
                   3: CLKOUT is available only in RC oscillator mode.

DS30559A-page 42                                Preliminary                                           1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

6.2 Using Timer0 with External Clock                          When a prescaler is used, the external clock input is
                                                              divided by the asynchronous ripple-counter type pres-
When an external clock input is used for Timer0, it must      caler so that the prescaler output is symmetrical. For
meet certain requirements. The requirements ensure            the external clock to meet the sampling requirement,
the external clock can be synchronized with the internal      the ripple-counter must be taken into account. There-
phase clock (TOSC). Also, there is a delay in the actual      fore, it is necessary for T0CKI to have a period of at
incrementing of Timer0 after synchronization.                 least 4Tosc (and a small RC delay of 40 ns) divided by
                                                              the prescaler value. The only requirement on T0CKI
6.2.1 EXTERNAL CLOCK SYNCHRONIZATION                          high and low time is that they do not violate the mini-
                                                              mum pulse width requirement of 10 ns. Refer to param-
When no prescaler is used, the external clock input is        eters 40, 41, and 42 in the electrical specification of the
the same as the prescaler output. The synchronization         desired device.
of T0CKI with the internal phase clocks is accom-
plished by sampling the prescaler output on the Q2 and        6.2.2 TIMER0 INCREMENT DELAY
Q4 cycles of the internal phase clocks (Figure 6-5).
Therefore, it is necessary for T0CKI to be high for at        Since the prescaler output is synchronized with the
least 2Tosc (and a small RC delay of 20 ns) and low for       internal clocks, there is a small delay from the time the
at least 2Tosc (and a small RC delay of 20 ns). Refer to      external clock edge occurs to the time the Timer0 mod-
the electrical specification of the desired device.           ule is actually incremented. Figure 6-5 shows the delay
                                                              from the external clock edge to the timer incrementing.

FIGURE 6-5: TIMER0 TIMING WITH EXTERNAL CLOCK

External Clock Input or           Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Prescaler output (2)                                                                                                           Small pulse
                                                                                                                               misses sampling
External Clock/Prescaler
Output after sampling                                 (1)
                                  (3)
   Increment Timer0 (Q4)

Timer0                                                    T0  T0 + 1  T0 + 2

Note 1: Delay from clock input change to Timer0 increment is 3Tosc to 7Tosc. (Duration of Q = Tosc).
          Therefore, the error in measuring the interval between two edges on Timer0 input = 4Tosc max.

       2: External clock if no prescaler selected, prescaler output otherwise.

       3: The arrows indicate the points in time where sampling occurs.

1996 Microchip Technology Inc.  Preliminary                                                             DS30559A-page 43
PIC16C64X & PIC16C66X

6.3 Prescaler                                                                        The PSA and PS2:PS0 bits (OPTION<3:0>) determine
                                                                                     the prescaler assignment and prescale ratio.
An 8-bit counter is available as a prescaler for the
Timer0 module or as a postscaler for the Watchdog                                    When assigned to the Timer0 module, all instructions
Timer (WDT), respectively (Figure 6-6). For simplicity,                              writing to the TMR0 register (e.g., CLRF 1, MOVWF 1,
this counter is being referred to as "prescaler" through-                            BSF 1,x) will clear the prescaler count. When
out this data sheet. Note that the prescaler may be                                  assigned to Watchdog Timer, a CLRWDT instruction will
used by either the Timer0 module or the Watchdog                                     clear the prescaler count along with the Watchdog
Timer, but not both. Thus, a prescaler assignment for                                Timer. The prescaler is not readable or writable.
the Timer0 module means that there is no prescaler for
the Watchdog Timer, and vice-versa.

FIGURE 6-6: BLOCK DIAGRAM OF THE TIMER0/WDT PRESCALER                                                 Data Bus
                                                                                                             8
      CLKOUT (=Fosc/4)
                                                                                                    TMR0 reg
RA4/T0CKI                       0M                         1                         SYNC
     pin                             U                           M                      2                             Set flag bit T0IF
                                     X                                                                                   on Overflow
                                                           0                    U    Cycles
                                1                                               X

                  T0SE            T0CS

                                                                                PSA

  Watchdog              0               8-bit Prescaler                                    PS2:PS0
     Timer                   M              8                                        PSA
                             U
WDT Enable bit                          8 - to - 1MUX
                        1X

                           PSA

                                        0                                    1

                                           MUX

                                                                     WDT
                                                                   Time-out

Note: T0CS, T0SE, PSA, PS2:PS0 are (OPTION<5:0>).

DS30559A-page 44                           Preliminary                                              1996 Microchip Technology Inc.
                                             PIC16C64X & PIC16C66X

6.3.1 SWITCHING PRESCALER ASSIGNMENT                              To change prescaler from the WDT to the Timer0 mod-
                                                                  ule, use the sequence shown in Example 6-2.
The prescaler assignment is fully under software con-
trol, i.e., it can be changed "on the fly" during program         EXAMPLE 6-2: CHANGING PRESCALER
execution.                                                                                (WDTTIMER0)

Note:  To avoid an unintended device RESET, the
       following instruction sequence (shown in
       Example 6-1) must be executed when                         CLRWDT                       ;Clear WDT and
       changing the prescaler assignment from                                                  ;prescaler
       Timer0 to the WDT. This precaution must                    BSF     STATUS, RP0 ;Bank 1
       be followed even if the WDT is disabled.                   MOVLW   b'xxxx0xxx' ;Select TMR0, new
                                                                                               ;prescale value and
                                                                  MOVWF   OPTION_REG ;clock source
                                                                  BCF     STATUS, RP0 ;Bank 0

EXAMPLE 6-1: CHANGING PRESCALER
                        (TIMER0WDT)

BCF STATUS, RP0    ;Bank 0
CLRF TMR0          ;Clear TMR0 & Prescaler
BSF STATUS, RP0    ;Bank 1
CLRWDT             ;Clears WDT
MOVLW b'xxxx1xxx'  ;Select new prescale
MOVWF OPTION_REG   ;value & WDT
BCF STATUS, RP0    ;Bank 0

TABLE 6-1: REGISTERS ASSOCIATED WITH TIMER0

Address Name Bit 7 Bit 6              Bit 5  Bit 4         Bit 3  Bit 2   Bit 1  Bit 0  Value on:  Value on all
                                                                                           POR,    other resets
                                                                                           BOR

01h    TMR0 Timer0 module's register                                                    xxxx xxxx uuuu uuuu

0Bh/8Bh INTCON GIE PEIE               T0IE   INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u

81h    OPTION RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111

85h    TRISA  --                  --  TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111

Legend: x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by Timer0.

1996 Microchip Technology Inc.             Preliminary                                DS30559A-page 45
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 46  Preliminary   1996 Microchip Technology Inc.
                                             PIC16C64X & PIC16C66X

7.0 COMPARATOR MODULE                                    The CMCON register, shown in Figure 7-1, controls the
                                                         comparator input and output multiplexers. A block
The comparator module contains two analog                diagram of the comparator is shown in Figure 7-2.
comparators. The inputs to the comparators are
multiplexed with pins RA0 through RA4. The on-chip
Voltage Reference (Section 8.0) can also be an input to
the comparators.

FIGURE 7-1: CMCON REGISTER (ADDRESS 1Fh)

R-0     R-0 U-0 U-0                   R/W-0  R/W-0       R/W-0    R/W-0
                                       CIS    CM2         CM1      CM0
C2OUT C1OUT -- --                                               bit0               R =Readable bit
                                                                                   W =Writable bit
bit7                                                                               U =Unimplemented bit, read
                                                                                   as `0'
                                                                                   - n =Value at POR reset

bit 7:  C2OUT: Comparator 2 output
        1 = C2 VIN+ > C2 VIN
        0 = C2 VIN+ < C2 VIN

bit 6:  C1OUT: Comparator 1 output
        1 = C1 VIN+ > C1 VIN
        0 = C1 VIN+ < C1 VIN

bit 5-4: Unimplemented: Read as '0'

bit 3: CIS: Comparator Input Switch

        When CM2:CM0: = 001:
        Then:
        1 = C1 VIN connects to RA3
        0 = C1 VIN connects to RA0

        When CM2:CM0 = 010:
        Then:
        1 = C1 VIN connects to RA3

             C2 VIN connects to RA2
        0 = C1 VIN connects to RA0

             C2 VIN connects to RA1

bit 2-0: CM2:CM0: Comparator mode
            Figure 7-2 shows the comparator modes and CM2:CM0 bit settings.

1996 Microchip Technology Inc.             Preliminary                           DS30559A-page 47

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

7.1 Comparator Configuration                           mode is changed, the comparator output level may not
                                                       be valid for the specified mode change delay shown
There are eight modes of operation for the             in Table 12-2.
comparators. The CMCON register is used to select
the mode. Figure 7-2 shows the eight possible modes.   Note:      Comparator interrupts should be disabled
The TRISA register controls the data direction of the             during a comparator mode change other-
comparator pins for each mode. If the comparator                  wise a false interrupt may occur.

FIGURE 7-2: COMPARATOR I/O OPERATING MODES

Comparators Reset (POR Default Value)                  Comparators Off
CM2:CM0 = 000                                          CM2:CM0 = 111

RA0/AN0 A         VIN-            Off (Read as '0')    RA0/AN0 D        VIN-     Off (Read as '0')
RA3/AN3 A         VIN+ C1                              RA3/AN3 D        VIN+ C1

RA1/AN1 A         VIN-            Off (Read as '0')    RA1/AN1 D        VIN-     Off (Read as '0')
RA2/AN2 A         VIN+ C2         C1OUT                RA2/AN2 D        VIN+ C2
                                  C2OUT
Two Independent Comparators                            Four Inputs Multiplexed to Two Comparators
CM2:CM0 = 100                                          CM2:CM0 = 010

RA0/AN0 A         VIN-                                 RA0/AN0 A        CIS = 0  VIN-               C1OUT
RA3/AN3 A         VIN+ C1                              RA3/AN3 A        CIS = 1  VIN+ C1            C2OUT

RA1/AN1 A         VIN-                                 RA1/AN1 A        CIS = 0  VIN-
RA2/AN2 A         VIN+ C2                              RA2/AN2 A        CIS = 1  VIN+ C2

                                                                                 From VREF Module

Two Common Reference Comparators                       Two Common Reference Comparators with Outputs
CM2:CM0 = 011                                          CM2:CM0 = 110

RA0/AN0 A         VIN-            C1OUT                RA0/AN0 A        VIN-     C1OUT
RA3/AN3 D         VIN+ C1                              RA3/AN3 D        VIN+ C1

RA1/AN1 A         VIN-            C2OUT                RA1/AN1 A        VIN-     C2OUT
RA2/AN2 A         VIN+ C2                              RA2/AN2 A        VIN+ C2

                                                              RA4 Open Drain

One Independent Comparator                             Three Inputs Multiplexed to Two Comparators
CM2:CM0 = 101                                          CM2:CM0 = 001

RA0/AN0 D         VIN-            Off (Read as '0')    RA0/AN0 A        CIS = 0  VIN-               C1OUT
RA3/AN3 D         VIN+ C1                              RA3/AN3 A        CIS = 1  VIN+ C1

RA1/AN1 A         VIN-            C2OUT                RA1/AN1 A                 VIN-               C2OUT
RA2/AN2 A         VIN+ C2                              RA2/AN2 A                 VIN+ C2

A = Analog Input, port reads zeros always.
D = Digital Input.
CIS (CMCON<3>) is the Comparator Input Switch.

DS30559A-page 48                                Preliminary                      1996 Microchip Technology Inc.
                                             PIC16C64X & PIC16C66X

The code example in Example 7-1 depicts the steps          7.3 Comparator Reference
required to configure the comparator module. RA3 and
RA4 are configured as digital outputs. RA0 and RA1         An external or internal reference signal may be used
are configured as the V- inputs and RA2 as the V+ input    depending on the comparator operating mode. The
to both comparators.                                       analog signal that is present at VIN is compared to the
                                                           signal at VIN+, and the digital output of the comparator
EXAMPLE 7-1: INITIALIZING THE                              is adjusted accordingly (Figure 7-3).
                        COMPARATOR MODULE
                                                           FIGURE 7-3: SINGLE COMPARATOR
FLAG_REG  EQU 0x20
CLRF      FLAG_REG     ;Init Flag Register                 VIN-  Output
CLRF      PORTA        ;Init PORTA                         VIN+
ANDLW     0xC0         ;Mask Comp bits
IORWF     FLAG_REG,F   ;Bits to Flag_Reg                        VIN-
MOVLW     0x03         ;Init Comp Mode
MOVWF     CMCON        ;CM2:CM0 = 011                           VIN+
BSF       STATUS,RP0   ;Select Bank 1
MOVLW     0x07         ;Init Data direction                  Output
MOVWF     TRISA        ;RA<2:0> to inputs
                       ;RA<4:3> to outputs                 7.3.1 EXTERNAL REFERENCE SIGNAL
BCF       STATUS,RP0   ;TRISA<7:5> read '0'
CALL      DELAY_10s   ;Select Bank 0                      When external voltage references are used, the
MOVF      CMCON,F      ;10 s delay                        comparator module can be configured to have the com-
                       ;Read CMCON to end                  parators operate from the same or different reference
BCF       PIR1,CMIF    ;change condition                   sources. However, threshold detector applications may
BSF       STATUS,RP0   ;Clear Pending Ints                 require the same reference. The reference signal must
BSF       PIE1,CMIE    ;Select Bank 1                      be between VSS and VDD, and can be applied to either
BCF       STATUS,RP0   ;Enable Comp Ints                   pin of the comparator(s).
BSF       INTCON,PEIE  ;Select Bank 0
BSF       INTCON,GIE   ;Enable Periph Ints                 7.3.2 INTERNAL REFERENCE SIGNAL
                       ;Global Int enable
                                                           The comparator module also allows the selection of an
7.2 Comparator Operation                                   internally generated voltage reference for the
                                                           comparators. Section 8.0, contains a detailed descrip-
A single comparator is shown in Figure 7-3 along with      tion of the Voltage Reference Module that provides this
the relationship between the analog input levels and       signal. The internal reference signal is used when the
the digital output. When the analog input at VIN+ is less  comparators are in mode CM2:CM0 = 010
than the analog input VIN, the output of the comparator   (Figure 7-2). In this mode, the internal voltage refer-
is a digital low level. When the analog input at VIN+ is   ence is applied to the VIN+ pin of both comparators.
greater than the analog input VIN, the output of the
comparator is a digital high level. The shaded areas of
the output of the comparator in Figure 7-3 represents
the uncertainty due to input offsets and response time.

1996 Microchip Technology Inc.           Preliminary           DS30559A-page 49
PIC16C64X & PIC16C66X

7.4 Comparator Response Time                                    7.5 Comparator Outputs

Response time is the minimum time, after selecting a            The comparator outputs are read through the CMCON
new reference voltage or input source, before the               register. These bits are read only. The comparator
comparator output is guaranteed to have a valid level.          outputs may also be directly output to the RA3 and RA4
If the internal reference is changed, the maximum delay         I/O pins. When CM2:CM0 = 110, multiplexors in the
of the internal voltage reference must be considered            output path of the RA3 and RA4 pins will switch and the
when using the comparator outputs. Otherwise, the               output of each pin will be the unsynchronized output of
maximum delay of the comparators should be used                 the comparator. The uncertainty of each of the
(Table 12-2 and Table 12-3).                                    comparators is related to the input offset voltage and
                                                                the response time given in the specifications.
                                                                Figure 7-4 shows the comparator output block diagram.

                                                                The TRISA bits will still function as an output enable/
                                                                disable for the RA3 and RA4 pins while in this mode.

                                                                    Note 1: When reading the PORTA register, all pins
                                                                                configured as analog inputs will read as a
                                                                                `0'. Pins configured as digital inputs will
                                                                                convert an analog input according to the
                                                                                Schmitt Trigger input specification.

                                                                    Note 2: Analog levels on any pin that is defined as
                                                                                a digital input may cause the input buffer
                                                                                to consume more current than is speci-
                                                                                fied.

FIGURE 7-4: COMPARATOR OUTPUT BLOCK DIAGRAM

                                                                       Port Pins
                                                                      MULTIPLEX

To RA3 or RA4 pin                                        Q     D
To Data Bus
                                                            EN
                                 RD CMCON

Set CMIF bit                                                Q     D
                   From other Comparator
                                                                  EN          RD CMCON
                                                                CL

                                                                      NRESET

DS30559A-page 50                           Preliminary                         1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

7.6 Comparator Interrupts                                    comparators, CM2:CM0 = 111, before entering sleep.
                                                             If the device wakes up from sleep, the contents of the
The comparator interrupt flag is set whenever there is       CMCON register are not affected.
a change in the output value of either comparator. User
software will need to maintain information about the         7.8 Effects of a RESET
status of the output bits, as read from CMCON<7:6>, to
determine the actual change that has occurred. The           A device reset forces the CMCON register to its reset
CMIF bit (PIR1<6>), is the comparator interrupt flag         state. This forces the comparator module to be in the
and must be cleared in user software.                        comparator reset mode, CM2:CM0 = 000. This
                                                             ensures that all potential inputs are analog inputs.
To enable the Comparator interrupt the following bits        Device current is minimized when analog inputs are
must be set:                                                 present at reset time. The comparators will be powered
                                                             down during the reset interval.
CMIE (PIE1<6>)
PEIE (INTCON<6>)                                           7.9 Analog Input Connection
GIE (INTCON<7>)                                                      Considerations

The user, in the interrupt service routine, can clear the    A simplified circuit for an analog input is shown in
interrupt in the following manner:                           Figure 7-5. Since the analog pins are connected to a
                                                             digital output, they have reverse biased diodes to VDD
a) Any read or write of CMCON. This will end the             and VSS. The analog input therefore, must be between
      mismatch condition.                                    VSS and VDD. If the input voltage deviates from this
                                                             range by more than 0.6V in either direction, one of the
b) Clear flag bit CMIF.                                      diodes is forward biased and a latch-up may occur. A
                                                             maximum source impedance of 10 k is
A mismatch condition will continue to set flag bit CMIF.     recommended for the analog sources. Any external
Reading CMCON will end the mismatch condition, and           component connected to an analog input pin, such as
allow flag bit CMIF to be cleared.                           a capacitor or a Zener diode, should have very little
                                                             leakage current.
7.7 Comparator Operation During SLEEP

When a comparator is active and the device is placed
in SLEEP mode, the comparator remains active and
the interrupt is functional if enabled. This interrupt will
wake up the device from SLEEP mode when enabled.
While the comparator is powered up, higher sleep
currents than shown in the power-down current
specification will occur. Each comparator that is
operational will consume additional current as shown in
the comparator specifications. To minimize power
consumption while in SLEEP mode, turn off the

FIGURE 7-5: ANALOG INPUT MODEL

       RS  AIN                    VDD                                 RC < 10k
VA                                    VT = 0.6V
                   CPIN                                      ILEAKAGE
                  5 pF                 VT = 0.6V             500 nA

Legend CPIN                                                                     VSS
            VT
            ILEAKAGE              = Input Capacitance
            RIC                   = Threshold Voltage
            RS                    = Leakage Current at the pin due to various junctions
            VA                    = Interconnect Resistance
                                  = Source Impedance
                                  = Analog Voltage

1996 Microchip Technology Inc.  Preliminary                                            DS30559A-page 51
PIC16C64X & PIC16C66X

TABLE 7-1: REGISTERS ASSOCIATED WITH THE COMPARATOR MODULE

Address Name      Bit 7  Bit 6   Bit 5  Bit 4  Bit 3  Bit 2  Bit 1                       Bit 0  Value on  Value on
                                                                                                  POR,    all other
                                                                                                  BOR      resets

1Fh  CMCON C2OUT C1OUT --               --     CIS CM2 CM1 CM0 00-- 0000 00-- 0000

9Fh  VRCON VREN VROE VRR                --     VR3 VR2 VR1 VR0 000- 0000 000- 0000

0Bh/8Bh INTCON GIE       PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u

0Ch  PIR1         PSPIF(1) CMIF  --     --     --     --     --                          -- 00-- ---- 00-- ----

8Ch  PIE1         PSPIE(1) CMIE  --     --     --     --     --                          -- 00-- ---- 00-- ----

85h  TRISA        --     -- TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 --11 1111 --11 1111

Note 1: These bits are reserved on the PIC16C641/642, always maintain these bits clear.

DS30559A-page 52                        Preliminary                                       1996 Microchip Technology Inc.
                                               PIC16C64X & PIC16C66X

8.0 VOLTAGE REFERENCE                                   The VRCON register, shown in Figure 8-1, controls the
         MODULE                                         operation of the Voltage Reference Module. The block
                                                        diagram is given in Figure 8-2.
The Voltage Reference is a 16-tap resistor ladder
network that provides a selectable voltage reference.
The resistor ladder is segmented to provide two ranges
of VREF values and has a power-down function to
conserve power when the reference module is not
being used.

FIGURE 8-1: VRCON REGISTER (ADDRESS 9Fh)

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

VREN VROE VRR -- VR3                           VR2      VR1                                  VR0      R =Readable bit
                                                                                                      W =Writable bit
bit7                                                                                         bit0     U =Unimplemented bit, read
                                                                                                      as `0'
                                                                                                      - n =Value at POR reset

bit 7:  VREN: VREF Enable
        1 = VREF circuit powered up
        0 = VREF circuit powered down, no IDD drain

bit 6:  VROE: VREF Output Enable
        1 = VREF is output on RA2 pin
        0 = VREF is disconnected from RA2 pin

bit 5:  VRR: VREF Range selection
        1 = Low Range
        0 = High Range

bit 4: Unimplemented: Read as '0'

bit 3-0: VR3:VR0: VREF value selection 0  VR3:VR0  15

        When: VRR = 1
        Then: VREF = (VR3:VR0/ 24) VDD

        When: VRR = 0
        Then: VREF = 1/4 VDD + (VR3:VR0/ 32) VDD

FIGURE 8-2: VOLTAGE REFERENCE BLOCK DIAGRAM

                                                                                  16 Stages

VREN                              8R  R   R             R                                          R

                                                                                                      8R       VRR

                                                                                                          VR3
                                                                                                          VR2
                 VREF                                   16-1 Analog Mux                                   VR1  (From VRCON<3:0>)
Note: R is defined in Table 12-3.
                                                                                                          VR0

1996 Microchip Technology Inc.          Preliminary                                                          DS30559A-page 53

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

8.1 Configuring the Voltage Reference                        the VREF output changes with fluctuations in VDD. The
                                                             absolute accuracy of the Voltage Reference can be
The Voltage Reference Module can output 16 distinct          found in Table 12-3.
voltage levels for each range.
                                                             8.3 Operation During Sleep
The equations used to calculate the output of the
Voltage Reference are as follows:                            When the device wakes up from sleep through an
                                                             interrupt or a Watchdog Timer time-out, the contents of
      If VRR = 1                                             the VRCON register are not affected. To minimize
      Then VREF = (VR3:VR0/24) VDD                         current consumption in SLEEP mode, the Voltage
                                                             Reference Module should be disabled.
      If VRR = 0
      Then VREF = (VDD 1/4) + (VR3:VR0/32) VDD           8.4 Effects of a Reset

The settling time of the Voltage Reference must be           A device reset disables the Voltage Reference by clear-
considered when changing the VREF output                     ing bit VREN (VRCON<7>). This reset also
(Table 12-2). Example 8-1 shows an example of how to         disconnects the reference from the RA2 pin by clearing
configure the Voltage Reference for an output voltage        bit VROE (VRCON<6>) and selects the high voltage
of 1.25V with VDD = 5.0V.                                    range by clearing bit VRR (VRCON<5>). The VREF
                                                             value select bits, VRCON<3:0>, are also cleared.
EXAMPLE 8-1: VOLTAGE REFERENCE
                        CONFIGURATION                        8.5 Connection Considerations

MOVLW  0x02             ; 4 inputs muxed                     The Voltage Reference Module operates independently
MOVWF  CMCON            ; to 2 comparators                   of the comparator module. The output of the reference
BSF    STATUS,RP0       ; Select Bank 1                      generator may be connected to the RA2 pin if the
MOVLW  0x07             ; RA3:RA0 to outputs                 TRISA<2> bit is set and bit VROE is set. Enabling the
MOVWF  TRISA            ;                                    Voltage Reference output onto the RA2 pin with an
MOVLW  0xA6             ; enable Vref low                    input signal present will increase current consumption.
MOVWF  VRCON            ; range, VR3:VR0 = 6                 Connecting RA2 as a digital output with VREF enabled
BCF    STATUS,RP0       ; Select Bank 0                      will also increase current consumption.
CALL   DELAY_10s
                           ; 10 s delay                     The RA2 pin can be used as a simple D/A output with
                                                             limited drive capability. Due to the limited drive
8.2 Voltage Reference Accuracy/Error                         capability, a buffer must be used in conjunction with the
                                                             Voltage Reference output for external connections to
The full range of VSS to VDD cannot be realized due to       VREF. Figure 8-3 shows an example buffering
the construction of the module. The transistors on the       technique.
top and bottom of the resistor ladder network
(Figure 8-2) keep VREF from approaching VSS or VDD.
The Voltage Reference is VDD derived and therefore,

FIGURE 8-3: VOLTAGE REFERENCE OUTPUT BUFFER EXAMPLE

                   PIC16C662

                  VREF    R(1) Pin RA2

                  Module                                     VREF output

                          Voltage

                          Reference

                          Output

                          Impedance

Note 1: R is dependent upon the Voltage Reference Configuration VRCON<3:0> and VRCON<5>.

TABLE 8-1: REGISTERS ASSOCIATED WITH VOLTAGE REFERENCE

Address Name       Bit 7  Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0        Value On        Value on
                                                                              POR,          all other
9Fh    VRCON      VREN    VROE VRR            --        VR3 VR2 VR1 VR0       BOR            resets
                  C2OUT
1Fh    CMCON              C1OUT --            --        CIS  CM2 CM1 CM0  000- 0000       000- 0000
                     --
85h    TRISA              -- TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0    00-- 0000       00-- 0000

                                                                          --11 1111       --11 1111

DS30559A-page 54                              Preliminary    1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

9.0 SPECIAL FEATURES OF THE                                The PIC16C64X & PIC16C66X has a Watchdog Timer
         CPU                                               which is enabled by a configuration bit (WDTE). It runs
                                                           off its own RC oscillator for added reliability. There are
What sets apart a microcontroller from other               two timers that offer necessary delays on power-up.
processors are special circuits to deal with the needs of  One is the Oscillator Start-up Timer (OST), intended to
real-time applications. The PIC16C64X & PIC16C66X          keep the chip in reset until the crystal oscillator is sta-
families have a host of such features intended to max-     ble. The other is the Power-up Timer (PWRT), which
imize system reliability, minimize cost through elimina-   provides a fixed delay of 72 ms (nominal) on power-up
tion of external components, provide power saving          only, designed to keep the part in reset while the power
operating modes and offer code protection.                 supply stabilizes. Circuitry has been provided for
                                                           checking program memory parity with a reset when an
These are:                                                 error is indicated. There is also circuitry to reset the
                                                           device if a brown-out occurs which provides at least a
1. Oscillator selection                                    72 ms reset. With these three functions on-chip, most
2. Resets                                                  applications need no external reset circuitry.

      Power-on Reset (POR)                                 SLEEP mode is designed to offer a very low current
      Power-up Timer (PWRT)                                power-down mode. The user can wake-up from SLEEP
      Oscillator Start-up Timer (OST)                      through external reset, Watchdog Timer wake-up or
      Brown-out Reset (BOR)                                through an interrupt. Several oscillator options are also
      Parity Error Reset (PER)                             made available to allow the part to fit the application.
3. Interrupts                                              The RC oscillator option saves system cost while the
4. Watchdog Timer (WDT)                                    LP crystal option saves power. A set of configuration
5. SLEEP                                                   bits are used to select various options.
6. Code protection
7. ID Locations
8. In-circuit serial programming

1996 Microchip Technology Inc.  Preliminary                                      DS30559A-page 55

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

9.1 Configuration Bits                                       The user will note that address 2007h is beyond
                                                             the user program memory space. In fact, it belongs
The configuration bits can be programmed (read as '0')       to the special test/configuration memory space
or left unprogrammed (read as '1') to select various         (2000h3FFFh), which can be accessed only during
device configurations. These bits are mapped in              programming.
program memory location 2007h.

FIGURE 9-1: CONFIGURATION WORD

CP1 CP0 CP1 CP0 CP1 CP0 MPEEN BODEN CP1 CP0 PWRTE WDTE FOSC1 FOSC0   CONFIG  Address

bit13                                                          bit0  REGISTER: 2007h

bit 13-8 CP1:CP0: Code protection bits(2)

5-4: 11 = Code protection off

          10 = Upper half of program memory code protected

          01 = Upper 3/4th of program memory code protected

          00 = All memory is code protected

bit 7:    MPEEN: Memory Parity Error Enable
bit 6:    1 = Memory Parity Checking is enabled
bit 3:    0 = Memory Parity Checking is disabled

          BODEN: Brown-out Reset Enable bit (1)
          1 = BOR enabled
          0 = BOR disabled

          PWRTE: Power-up Timer Enable bit (1)
          1 = PWRT disabled
          0 = PWRT enabled

bit 2:    WDTE: Watchdog Timer Enable bit
          1 = WDT enabled
          0 = WDT disabled

bit 1-0:  FOSC1:FOSC0: Oscillator Selection bits
          11 = RC oscillator
          10 = HS oscillator
          01 = XT oscillator
          00 = LP oscillator

Note 1: Enabling Brown-out Reset automatically enables the Power-up Timer (PWRT) regardless of the value of bit PWRTE. Ensure the
               Power-up Timer is enabled anytime Brown-out Reset is enabled.

          2: All of the CP1:CP0 pairs have to be given the same value to enable the code protection scheme listed.

DS30559A-page 56                                  Preliminary   1996 Microchip Technology Inc.
                                                     PIC16C64X & PIC16C66X

9.2 Oscillator Configurations                              TABLE 9-1:   CAPACITOR SELECTION
                                                                        FOR CERAMIC RESONATORS
9.2.1 OSCILLATOR TYPES                                                  (PRELIMINARY)

The PIC16CXXX can be operated in four different                         Ranges tested:
oscillator modes. The user can program two
configuration bits (FOSC1 and FOSC0) to select one of             Mode         Freq            OSC1
these four modes:
                                                           XT           455 kHz      22 - 100 pF

LP  Low Power Crystal                                                 2.0 MHz      15 - 68 pF
XT  Crystal/Resonator
HS  High Speed Crystal/Resonator                                      4.0 MHz      15 - 68 pF
RC  Resistor/Capacitor
                                                           HS           8.0 MHz      10 - 68 pF

                                                                        16.0 MHz     10 - 22 pF

9.2.2 CRYSTAL OSCILLATOR / CERAMIC                         Note: Recommended values of C1 and C2 are identical
            RESONATORS                                             to the ranges tested table.
                                                                   Higher capacitance increases the stability of the
In XT, LP or HS modes a crystal or ceramic resonator               oscillator but also increases the start-up time.
is connected to the OSC1 and OSC2 pins to establish                These values are for design guidance only. Since
oscillation (Figure 9-2). The PIC16CXXX oscillator                 each resonator has its own characteristics, the
design requires the use of a parallel cut crystal. Use of          user should consult the resonator manufacturer for
a series cut crystal may give a frequency out of the               appropriate values of external components.
crystal manufacturers specifications. When in XT, LP or
HS modes, the device can have an external clock                         Resonators used:
source to drive the OSC1 pin (Figure 9-3).
                                                           455 kHz Panasonic EFO-A455K04B 0.3%
FIGURE 9-2:   CRYSTAL OPERATION                            2.0 MHz Murata Erie CSA2.00MG 0.5%
              (OR CERAMIC RESONATOR)                       4.0 MHz Murata Erie CSA4.00MG 0.5%
              (HS, XT OR LP OSC                            8.0 MHz Murata Erie CSA8.00MT 0.5%
              CONFIGURATION)                               16.0 MHz Murata Erie CSA16.00MX 0.5%

                                                                 All resonators used did not have built-in capacitors.

                                                           TABLE 9-2:   CAPACITOR SELECTION
                                                                        FOR CRYSTAL OSCILLATOR
                        OSC1                                            (PRELIMINARY)

      C1                          To internal logic

                  XTAL                                     Mode         Freq         OSC1        OSC2

                        OSC2  RF  SLEEP                           LP    32 kHz 68 - 100 pF 68 - 100 pF
                  RS
      C2 see Note                                                       200 kHz 15 - 30 pF 15 - 30 pF

                                  PIC16CXXX                    XT       100 kHz 68 - 150 pF 150 - 200 pF

                                                                        2 MHz        15 - 30 pF 15 - 30 pF

See Table 9-1 or Table 9-2 for recommended val-                         4 MHz        15 - 30 pF 15 - 30 pF
ues of C1 and C2.
                                                           HS           8 MHz        15 - 30 pF 15 - 30 pF
   Note: A series resistor may be required for
               AT strip cut crystals.                                   10 MHz 15 - 30 pF 15 - 30 pF

                                                                        20 MHz 15 - 30 pF 15 - 30 pF

FIGURE 9-3:   EXTERNAL CLOCK INPUT                                    Higher capacitance increases the stability of the
              OPERATION (HS, XT OR LP                                 oscillator but also increases the start-up time.
              OSC CONFIGURATION)                                      These values are for design guidance only. Rs may
                                                                      be required in HS mode as well as XT mode to
clock from                                                            avoid overdriving crystals with low drive level spec-
ext. system                                                           ification. Since each crystal has its own
                                                                      characteristics, the user should consult the crystal
        Open                                                          manufacturer for appropriate values of external
                                                                      components.

                              OSC1                                      Crystals used:
                                         PIC16CXXX
                                                           32.768 kHz   Epson C-001R32.768K-A   20 PPM
                              OSC2                         100 kHz      Epson C-2 100.00 KC-P   20 PPM
                                                           200 kHz      STD XTL 200.000 kHz    20 PPM
                                                           2.0 MHz      ECS ECS-20-S-2          50 PPM
                                                           4.0 MHz      ECS ECS-40-S-4          50 PPM
                                                           10.0 MHz     ECS ECS-100-S-4         50 PPM
                                                           20.0 MHz     ECS ECS-200-S-4         50 PPM

1996 Microchip Technology Inc.                     Preliminary                           DS30559A-page 57
PIC16C64X & PIC16C66X

9.2.3 EXTERNAL CRYSTAL OSCILLATOR                            9.2.4 RC OSCILLATOR
            CIRCUIT
                                                             For timing insensitive applications the "RC" device
Either a prepackaged oscillator can be used or a simple      option offers additional cost savings. The RC oscillator
oscillator circuit with TTL gates can be built. Prepack-     frequency is a function of the supply voltage, the resis-
aged oscillators provide a wide operating range and          tor (Rext) and capacitor (Cext) values, and the operat-
better stability. A well-designed crystal oscillator will    ing temperature. In addition to this, the oscillator
provide good performance with TTL gates. Two types           frequency will vary from unit to unit due to normal pro-
of crystal oscillator circuits can be used: one with series  cess parameter variation. Furthermore, the difference
resonance, or one with parallel resonance.                   in lead frame capacitance between package types will
                                                             also affect the oscillation frequency, especially for low
Figure 9-4 shows implementation of a parallel resonant       Cext values. The user also needs to take into account
oscillator circuit. The circuit is designed to use the fun-  variation due to tolerance of external R and C compo-
damental frequency of the crystal. The 74AS04 inverter       nents used. Figure 9-6 shows how the R/C combina-
performs the 180-degree phase shift that a parallel          tion is connected to the PIC16CXXX. For Rext values
oscillator requires. The 4.7 k resistor provides the         below 2.2 k, the oscillator operation may become
negative feedback for stability. The 10 k potentiome-        unstable, or stop completely. For very high Rext values
ter biases the 74AS04 in the linear region. This could       (e.g. 1 M), the oscillator becomes sensitive to noise,
be used for external oscillator designs.                     humidity and leakage. Thus, we recommend to keep
                                                             Rext between 3 k and 100 k.
FIGURE 9-4:     EXTERNAL PARALLEL
                RESONANT CRYSTAL                             Although the oscillator will operate with no external
                OSCILLATOR CIRCUIT                           capacitor (Cext = 0 pF), we recommend using values
                                                             above 20 pF for noise and stability reasons. With no or
        +5V                            To Other              small external capacitance, the oscillation frequency
                                       Devices               can vary dramatically due to changes in external
            10k                                              capacitances, such as PCB trace capacitance or pack-
                   4.7k   74AS04                 PIC16CXXX   age lead frame capacitance.
                                                   CLKIN
                 74AS04                                      See characterization data for desired device for RC fre-
                                                             quency variation from part to part due to normal pro-
                                  10k                        cess variation. The variation is larger for larger R (since
                 XTAL                                        leakage current variation will affect RC frequency more
10k                                                          for large R) and for smaller C (since variation of input
                                                             capacitance will affect RC frequency more).
          20 pF 20 pF
                                                             See characterization data for desired device for varia-
Figure 9-5 shows a series resonant oscillator circuit.       tion of oscillator frequency due to VDD for given Rext/
This circuit is also designed to use the fundamental fre-    Cext values as well as frequency variation due to oper-
quency of the crystal. The inverter performs a               ating temperature for given R, C, and VDD values.
180-degree phase shift in a series resonant oscillator
circuit. The 330 k resistors provide the negative feed-      The oscillator frequency, divided by 4, is available on
back to bias the inverters in their linear region.           the OSC2/CLKOUT pin, and can be used for test pur-
                                                             poses or to synchronize other logic (see Figure 3-3 for
                                                             waveform).

                                                             FIGURE 9-6: RC OSCILLATOR MODE

FIGURE 9-5:     EXTERNAL SERIES
                RESONANT CRYSTAL
                OSCILLATOR CIRCUIT                                 V DD
                                                              Rext
                                                                         OSC1                        Internal
                                                             Cext                                     clock
330 k             330 k               To Other               VSS
74AS04            74AS04               Devices                                                    PIC16CXXX

                          74AS04                 PIC16CXXX

                                                 CLKIN                               OSC2/CLKOUT
                                                                         Fosc/4
        0.1 F
        XTAL

DS30559A-page 58                                 Preliminary             1996 Microchip Technology Inc.
                                                 PIC16C64X & PIC16C66X

9.3 Reset                                                state" on Power-on reset, MCLR, WDT reset,
                                                         Brown-out Reset, Parity Error Reset, and on MCLR
The PIC16CXXX differentiates between various kinds       reset during SLEEP. They are not affected by a WDT
of reset:                                                wake-up, since this is viewed as the resumption of nor-
                                                         mal operation. TO and PD bits are set or cleared differ-
a) Power-on reset (POR)                                  ently in different reset situations as indicated in
b) MCLR reset during normal operation                    Table 9-4. These bits are used in software to determine
c) MCLR reset during SLEEP                               the nature of the reset. See Table 9-6 for a full descrip-
d) WDT reset (normal operation)                          tion of reset states of all registers.
e) Brown-out Reset (BOR)
f) Parity Error Reset (PER)                              A simplified block diagram of the on-chip reset circuit is
                                                         shown in Figure 9-7.
Some registers are not affected in any reset condition;
their status is unknown on POR and unchanged in any      The MCLR reset path has a noise filter to detect and
other reset. Most other registers are reset to a "reset  ignore small pulses. See Table 12-6 for pulse width
                                                         specification.

FIGURE 9-7: SIMPLIFIED BLOCK DIAGRAM OF ON-CHIP RESET CIRCUIT

                                             External
                                              Reset

MCLR/    Program             MPEEN
VPP Pin  Memory

          Parity

          WDT SLEEP
         Module

                     WDT Time-out

                    VDD rise
                     detect Power-on Reset

VDD

         Brown-out                                                              S

         Reset BODEN

         OST/PWRT                                                                       Chip_Reset
                        OST                                                        Q

                     10-bit Ripple-counter                                      R

OSC1/                PWRT
CLKIN                     10-bit Ripple-counter

  Pin

         On-chip(1)
          RC OSC

                                                 Enable PWRT  See Table 9-3 for time-out situations.
                                                 Enable OST

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

1996 Microchip Technology Inc.                 Preliminary                       DS30559A-page 59
PIC16C64X & PIC16C66X

9.4 Power-on Reset (POR), Power-up                                The power-up time delay will vary from chip to chip due
          Timer (PWRT), Oscillator Start-up                       to VDD, temperature, and process variations. See DC
          Timer (OST), Brown-out Reset (BOR),                     parameters for details.
          and Parity Error Reset (PER)
                                                                  9.4.3 OSCILLATOR START-UP TIMER (OST)
9.4.1 POWER-ON RESET (POR)
                                                                  The Oscillator Start-Up Timer (OST) provides a 1024
A Power-on Reset pulse is generated on-chip when                  oscillator cycle (from OSC1 input) delay after the
VDD rise is detected (in the range of 1.6V to 1.8V). To           PWRT delay is over. This ensures that the crystal
take advantage of the POR, just tie the MCLR pin                  oscillator or resonator has started and stabilized.
directly (or through a resistor) to VDD. This will
eliminate external RC components usually needed to                The OST time-out is invoked only for XT, LP, and HS
create a Power-on Reset. A maximum rise time for VDD              modes and only on Power-on Reset or wake-up from
is required. See Electrical Specifications for details.           SLEEP.

When the device starts normal operation (exits the                9.4.4 BROWN-OUT RESET (BOR)
reset condition), device operating parameters (voltage,
frequency, temperature, etc.) must be met to ensure               PIC16C64X & PIC16C66X devices have on-chip
operation. If these conditions are not met, the device            Brown-out Reset circuitry. A configuration bit, BODEN,
must be held in reset until the operating conditions are          can disable (if clear/programmed) or enable (if set) the
met.                                                              Brown-out Reset circuitry. If VDD falls below 4.0V
                                                                  (Parameter D005 in ES section) for greater than
For additional information, refer to Application Note             parameter 35 in Table 12-6, the brown-out situation will
AN607 "Power-up Trouble Shooting."                                reset the chip. A reset is not guaranteed to occur if VDD
                                                                  falls below 4.0V for less than parameter 35. The chip
9.4.2 POWER-UP TIMER (PWRT)                                       will remain in Brown-out Reset until VDD rises above
                                                                  BVDD. The Power-up Timer will now be invoked and will
The Power-up Timer provides a fixed 72 ms (nominal)               keep the chip in reset an additional 72 ms. If VDD drops
delay on power-up only, from POR or BOR. The                      below BVDD while the Power-up Timer is running, the
Power-up Timer operates on an internal RC oscillator.             chip will go back into a Brown-out Reset and the
The chip is kept in reset as long as PWRT is active. The          Power-up Timer will be initialized. Once VDD rises
PWRT delay allows VDD to rise to an acceptable level.             above BVDD, the Power-up Timer will execute a 72 ms
A configuration bit, PWRTE can disable (if set) or                time delay. The Power-up Timer should always be
enable (if cleared or programmed) the Power-up Timer.             enabled when Brown-out Reset is enabled. Figure 9-8
The Power-up Timer should always be enabled when                  shows typical Brown-out situations.
Brown-out Reset is enabled.

FIGURE 9-8: BROWN-OUT SITUATIONS                                         BVDD Max.
                                                                         BVDD Min.
                           VDD
                                                                         BVDD Max.
Internal                                                  72 ms          BVDD Min.
  Reset

    VDD

Internal                                                  <72 ms  72 ms
  Reset

    VDD                                                                  BVDD Max.
                                                                         BVDD Min.
Internal
  Reset                                                           72 ms

DS30559A-page 60                  Preliminary                            1996 Microchip Technology Inc.
                                                     PIC16C64X & PIC16C66X

9.4.5 PARITY ERROR RESET (PER)                             9.4.7 POWER CONTROL/STATUS REGISTER
                                                                       (PCON)
PIC16C64X & PIC16C66X devices have on-chip parity
bits that can be used to verify the contents of program    The power control/status register, PCON (address
memory. Parity bits may be useful in applications in       8Eh) has four bits. See Figure 4-10 for register.
order to increase overall reliability of a system.
                                                           Bit0 is BOR (Brown-out Reset). BOR is unknown on a
There are two parity bits for each word of Program         Power-on-reset. It must initially be set by the user and
Memory. The parity bits are computed on alternating        checked on subsequent resets to see if BOR = '0'
bits of the program word. One computation is per-          indicating that a Brown-out Reset has occurred. The
formed using even parity, the other using odd parity. As   BOR status bit is a "don't care" bit and is not necessar-
a program executes, the parity is verified. The even       ily predictable if the brown-out circuit is disabled (by
parity bit is XOR'd with the even bits in the program      clearing the BODEN bit in the Configuration word).
memory word. The odd parity bit is negated and XOR'd
with the odd bits in the program memory word. When         Bit1 is POR (Power-on Reset). It is cleared on a
an error is detected, a reset is generated and the PER     Power-on Reset and is unaffected otherwise. The user
flag bit in the PCON register is set. This indication can  set this bit following a Power-on Reset. On subsequent
allow software to act on a failure. However, there is no   resets if POR is `0', it will indicate that a Power-on
indication of the program memory location of the failure   Reset must have occurred.
of the Program Memory. This flag can only be cleared
in software or by a POR.                                   Bit2 is PER (Parity Error Reset). It is cleared on a Parity
                                                           Error Reset and must be set by user software. It will
The parity array is user selectable during programming.    also be set on a Power-on Reset.
Bit7 of the configuration word located at address 2007h
can be programmed (read as '0') to disable parity          Bit7 is MPEEN (Memory Parity Error Enable). This bit
checking. If left unprogrammed (read as '1'), parity       reflects the status of the MPEEN bit in configuration
checking is enabled.                                       word. It is unaffected by any reset or interrupt.

9.4.6 TIME-OUT SEQUENCE

On power-up, the time-out sequence is as follows: First
PWRT time-out is invoked after POR has expired. Then
the OST is activated. The total time-out will vary based
on oscillator configuration and PWRTE bit status. For
example, in RC mode with the PWRTE bit set (PWRT
disabled), there will be no time-out at all. Figure 9-9,
Figure 9-10 and Figure 9-11 depict time-out
sequences.

Since the time-outs occur from the POR pulse, if MCLR
is kept low long enough, the time-outs will expire. Then
bringing MCLR high will begin execution immediately
(Figure 9-10). This is useful for testing purposes or to
synchronize more than one device operating in parallel.

Table 9-5 shows the reset conditions for some special
registers, while Table 9-6 shows the reset conditions
for all the registers.

TABLE 9-3: TIME-OUT IN VARIOUS SITUATIONS

                                             Power-up                                      Wake-up
                                                                                         from SLEEP
Oscillator Configuration                                              Brown-out Reset

                                  PWRTE = 0                PWRTE = 1

XT, HS, LP                        72 ms + 1024 TOSC        1024 TOSC  72 ms + 1024 TOSC  1024 TOSC
     RC                                    72 ms                --             72 ms          --

1996 Microchip Technology Inc.             Preliminary                                 DS30559A-page 61
PIC16C64X & PIC16C66X

TABLE 9-4: STATUS BITS AND THEIR SIGNIFICANCE

PER        POR      BOR             TO        PD

1            0           x          1         1    Power-on Reset

x            0           x          0         x    Illegal, TO is set on POR

x            0           x          x         0    Illegal, PD is set on POR

1            1           0          1         1    Brown-out Reset

1            1           1          0         1    WDT Reset

1            1           1          0         0    WDT Wake-up

1            1           1          u         u    MCLR reset during normal operation

1            1           1          1         0    MCLR reset during SLEEP

0            1           1          1         1    Parity Error Reset

0            0           x          x         x    Illegal, PER is set on POR

0            x           0          x         x    Illegal, PER is set on BOR

TABLE 9-5: INITIALIZATION CONDITION FOR SPECIAL REGISTERS

Condition                                     Program           STATUS                  PCON
                                              Counter           Register               Register

Power-on Reset                          000h                  0001 1xxx                u--- -10x

MCLR reset during normal operation      000h                  000u uuuu                u--- -uuu

MCLR reset during SLEEP                 000h                  0001 0uuu                u--- -uuu

WDT reset                               000h                  0000 1uuu                u--- -uuu

WDT Wake-up                             PC + 1                uuu0 0uuu                u--- -uuu

Brown-out Reset                         000h                  0001 1uuu                u--- -uu0

Parity Error Reset                      000h                  0001 1uuu                1--- -0uu

Interrupt Wake-up from SLEEP            PC + 1(1)             uuu1 0uuu                u--- -uuu

Legend: u = unchanged, x = unknown, - = unimplemented bit, reads as `0'.
Note 1: When the wake-up is due to an interrupt and global enable bit, GIE is set, the PC is loaded with the inter-

            rupt vector (0004h) after execution of PC+1.

DS30559A-page 62                        Preliminary                            1996 Microchip Technology Inc.
                                             PIC16C64X & PIC16C66X

TABLE 9-6: INITIALIZATION CONDITION FOR REGISTERS

Register  Address                  Power-on Reset     MCLR Reset during:  Wake up from SLEEP
                                  Brown-out Reset     - normal operation  through:
                                  Parity Error Reset  - SLEEP or          - interrupt
                                                      WDT Reset           - WDT time-out

W         -                       xxxx xxxx           uuuu uuuu           uuuu uuuu

INDF      00h                     -                   -                   -

TMR0      01h                     xxxx xxxx           uuuu uuuu           uuuu uuuu

PCL       02h                     0000 0000           0000 0000           PC + 1(2)

STATUS    03h                     0001 1xxx           000q quuu(3)        uuuq quuu(3)

FSR       04h                     xxxx xxxx           uuuu uuuu           uuuu uuuu

PORTA     05h                     --xx 0000           --xu 0000           --uu uuuu

PORTB     06h                     xxxx xxxx           uuuu uuuu           uuuu uuuu

PORTC     07h                     xxxx xxxx           uuuu uuuu           uuuu uuuu

PORTD(4)  08h                     xxxx xxxx           uuuu uuuu           uuuu uuuu

PORTE(4)  09h                     ---- -xxx           ---- -uuu           ---- -uuu

CMCON     1Fh                     00-- 0000           00-- 0000           uu-- uuuu

PCLATH    0Ah                     ---0 0000           ---0 0000           ---u uuuu

INTCON    0Bh                     0000 000x           0000 000u           uuuu uuuu(1)

PIR1      0Ch                     00-- ----           00-- ----           uu-- ----(1)

OPTION    81h                     1111 1111           1111 1111           uuuu uuuu

TRISA     85h                     --11 1111           --11 1111           --uu uuuu

TRISB     86h                     1111 1111           1111 1111           uuuu uuuu

TRISC     87h                     1111 1111           1111 1111           uuuu uuuu

TRISD(4)  88h                     1111 1111           1111 1111           uuuu uuuu

TRISE(4)  89h                     0000 -111           0000 -111           uuuu -uuu

PIE1      8Ch                     00-- ----           00-- ----           uu-- ----

PCON      8Eh                     u--- -qqq           u--- -uuu           u--- -uuu

VRCON     9Fh                     000- 0000           000- 0000           uuu- uuuu

Legend: u = unchanged, x = unknown, - = unimplemented bit, reads as `0',q = value depends on condition.
Note 1: One or more bits in INTCON and/or PIR1 will be affected (to cause wake-up).

        2: When the wake-up is due to an interrupt and the GIE bit is set, the PC is loaded with the interrupt
            vector (0004h).

        3: See Table 9-5 for reset value for specific condition.
        4: These registers are associated with the Parallel Slave Port and are not implemented on the PIC16C641/642.

1996 Microchip Technology Inc.     Preliminary                          DS30559A-page 63
PIC16C64X & PIC16C66X

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

                  VDD           TPWRT
               MCLR
  INTERNAL POR                               TOST

PWRT TIME-OUT
  OST TIME-OUT

INTERNAL RESET

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

                  VDD           TPWRT
               MCLR
  INTERNAL POR                               TOST

PWRT TIME-OUT
  OST TIME-OUT

INTERNAL RESET

FIGURE 9-11: TIME-OUT SEQUENCE ON POWER-UP (MCLR TIED TO VDD)

                    VDD  TPWRT
                 MCLR
   INTERNAL POR                        TOST

PWRT TIME-OUT
    OST TIME-OUT

INTERNAL RESET

DS30559A-page 64         Preliminary                1996 Microchip Technology Inc.
                                                     PIC16C64X & PIC16C66X

FIGURE 9-12: EXTERNAL POWER-ON                           FIGURE 9-14: EXTERNAL BROWN-OUT
                     RESET CIRCUIT (FOR SLOW                                  PROTECTION CIRCUIT 2
                     VDD POWER-UP)
                                                          VDD                        VDD
                                                                 R1
VDD     VDD

     D       R                                                              Q1
                                                                                      MCLR

                        R1                                R2                40k PIC16CXXX
                                     MCLR

                C                 PIC16CXXX

Note 1: External power-on reset circuit is required      Note 1: This brown-out circuit is less expensive,
            only if VDD power-up slope is too slow.                  albeit less accurate. Transistor Q1 turns
            The diode D helps discharge the capaci-                  off when VDD is below a certain level
            tor quickly when VDD powers down.                        such that:

       2: R < 40 k is recommended to make sure                              R1       = 0.7 V
            that voltage drop across R does not vio-
            late the device's electrical specification.              VDD   R1 + R2

       3: R1 = 100 to 1 k will limit any current          2: Internal Brown-out Reset circuitry
            flowing into MCLR from external capaci-           should be disabled when using this cir-
            tor C in the event of MCLR/VPP pin                cuit.
            breakdown due to Electrostatic Dis-
            charge (ESD) or Electrical Overstress         3: Resistors should be adjusted for the
            (EOS).                                            characteristics of the transistor.

FIGURE 9-13: EXTERNAL BROWN-OUT
                     PROTECTION CIRCUIT 1

VDD                               VDD
       33k

                   10k            MCLR

                        40k PIC16CXXX

Note 1: This circuit will activate reset when VDD
            goes below (Vz + 0.7V) where
            Vz = Zener voltage.

        2: Internal Brown-out Reset circuitry
            should be disabled when using this cir-
            cuit.

        3: Resistors should be adjusted for the
            characteristics of the transistor.

1996 Microchip Technology Inc.             Preliminary                             DS30559A-page 65
PIC16C64X & PIC16C66X

9.5 Interrupts                                                  When an interrupt is responded to, the GIE is cleared
                                                                to disable any further interrupt, the return address is
The PIC16C641 and PIC16C642 have four sources of                pushed into the stack and the PC is loaded with 0004h.
interrupt, while the PIC16C661 and PIC16C662 have               Once in the interrupt service routine the source(s) of
five sources:                                                   the interrupt can be determined by polling the interrupt
                                                                flag bits. The interrupt flag bit(s) must be cleared in
External interrupt RB0/INT                                    software before re-enabling interrupts to avoid recur-
TMR0 overflow interrupt                                       sive interrupts.
PORTB change interrupts (pins RB7:RB4)
Comparator interrupt                                          For external interrupt events, such as the RB0/INT or
Parallel Slave Port interrupt (PIC16C661/662)                 Port RB change interrupt, the interrupt latency will be
                                                                three or four instruction cycles. The exact latency
The interrupt control register, (INTCON), records               depends when the interrupt event occurs (Figure 9-16).
individual core interrupt requests in flag bits. It also has    The latency is the same for one or two cycle
various individual enable bits and the global interrupt         instructions. Once in the interrupt service routine the
enable bit.                                                     source(s) of the interrupt can be determined by polling
                                                                the interrupt flag bits. The interrupt flag bit(s) must be
The global interrupt enable bit, GIE (INTCON<7>)                cleared in software before re-enabling interrupts to
enables (if set) all un-masked interrupts or disables (if       avoid multiple interrupt requests. Individual interrupt
cleared) all interrupts. Individual interrupts can be           flag bits are set regardless of the status of their
disabled through their corresponding enable bits in             corresponding mask bit or the GIE bit.
INTCON register. GIE is cleared on reset.
                                                                    Note 1: Individual interrupt flag bits are set regard-
The "return from interrupt" instruction, RETFIE, exits                          less of the status of their corresponding
the interrupt routine as well as sets the GIE bit, which                        mask bit or the GIE bit.
allows any pending interrupt to execute.
                                                                    Note 2: When an instruction that clears the GIE bit
Those interrupts associated with the "core" have their                          is executed, any interrupts that were
flag and enable bits in the INTCON register. The core                           pending for execution in the next cycle are
interrupts are: RB0/INT pin interrupt, the RB port                              ignored. The CPU will execute a NOP in
change interrupt, and the TMR0 overflow interrupt. The                          the cycle immediately following the
INTCON register also contains the Peripheral Interrupt                          instruction which clears the GIE bit. The
Enable bit, PEIE. Bit PEIE will enable/mask the periph-                         interrupts which were ignored are still
eral interrupts (CM and PSP) from vectoring when bit                            pending to be serviced when the GIE bit is
PEIE is set/cleared.                                                            set again.

Flag bits PSPIF and CMIF are contained in special                                                        Wake-up
function register PIR1. The corresponding interrupt                                                      (If in SLEEP mode)
enable bits (PSPIE and CMIE) are contained in special
function register PIE1.

FIGURE 9-15: INTERRUPT LOGIC

                                                          T0IF
                                                          T0IE

                  INTF                                                                           Interrupt
                  INTE                                                                           to CPU
                  RBIF
                  RBIE                                          GIE

CMIF               PEIE
CMIE

PSPIF(1)
PSPIE(1)

Note 1: The Parallel Slave Port is implemented on the PIC16C661 and PIC16C662 only.

DS30559A-page 66         Preliminary                            1996 Microchip Technology Inc.
                                                        PIC16C64X & PIC16C66X

9.5.1 RB0/INT INTERRUPT                                   9.5.3 PORTB INTERRUPT

The external interrupt on the RB0/INT pin is edge trig-   An input change on any bit of PORTB<7:4> sets flag bit
gered: either rising if bit INTEDG (OPTION<6>) is set,    RBIF (INTCON<0>). The interrupt can be enabled/dis-
or falling, if bit INTEDG is clear. When a valid edge     abled by setting/clearing enable bit RBIE
appears on the RB0/INT pin, flag bit INTF                 (INTCON<4>). For operation of PORTB (Section 5.2).
(INTCON<1>) is set. This interrupt can be enabled/dis-
abled by setting/clearing enable bit INTE                 9.5.4 COMPARATOR INTERRUPT
(INTCON<4>). The INTF bit must be cleared in soft-
ware in the interrupt service routine before re-enabling  See Section 7.6 for complete description of the com-
this interrupt. The RB0/INT interrupt can wake-up the     parator interrupt.
processor from SLEEP, if bit INTE was set prior to
going into SLEEP. The status of the GIE bit decides
whether or not the processor branches to the interrupt
vector following wake-up. See Section 9.8 for details
on SLEEP and Figure 9-19 for timing of wake-up from
SLEEP through RB0/INT interrupt.

9.5.2 TMR0 INTERRUPT

An overflow (FFh  00h) in the TMR0 register will
set the T0IF (INTCON<2>) bit. The interrupt can
be enabled/disabled by setting/clearing T0IE
(INTCON<5>) bit. For operation of the Timer0 module,
see Section 6.0.

FIGURE 9-16: RB0/INT PIN INTERRUPT TIMING

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

OSC1

CLKOUT 3
                                     4

INT pin                                    1
                                                               Interrupt Latency 2
INTF flag         1                     5

(INTCON<1>)

GIE bit
(INTCON<7>)

INSTRUCTION FLOW

PC                   PC                          PC+1         PC+1                        0004h        0005h
                                           Inst (PC+1)         --                    Inst (0004h)  Inst (0005h)
Instruction  Inst (PC)                     Inst (PC)      Dummy Cycle               Dummy Cycle    Inst (0004h)
fetched

Instruction  Inst (PC-1)
executed

Note 1: INTF flag is sampled here (every Q1).
        2: Interrupt latency = 3-4 Tcy where Tcy = instruction cycle time.
            Latency is the same whether Inst (PC) is a single cycle or a 2-cycle instruction.

        3: CLKOUT is available only in RC oscillator mode.
        4: For minimum width of INT pulse, refer to AC specs.
        5: INTF is enabled to be set anytime during the Q4-Q1 cycles.

1996 Microchip Technology Inc.           Preliminary                                             DS30559A-page 67
PIC16C64X & PIC16C66X

9.6 Context Saving During Interrupts                      Example 9-1:

During an interrupt, only the return PC value is saved    Stores the W register regardless of current bank
on the stack. Typically, users may wish to save key reg-   Stores the STATUS register in Bank 0
isters during an interrupt e.g. W register and STATUS      Executes the ISR code
register. This will have to be implemented in software.    Restores the STATUS (and bank select bit

Example 9-1 stores and restores the STATUS and W             register)
registers. The user register, W_TEMP, must be defined      Restores the W register
in both banks and must be defined at the same offset
from the bank base address (i.e., W_TEMP is defined
at 0x70 - 0x7F in Bank 0). The user register,
STATUS_TEMP, must be defined in Bank 0.

EXAMPLE 9-1: SAVING THE STATUS AND W REGISTERS IN RAM

MOVWF W_TEMP        ; Copy W to a Temporary Register regardless of current bank

SWAPF STATUS,W      ; Swap STATUS nibbles and place into W register

BCF     STATUS,RP0  ; Change to Bank 0 regardless of current bank

MOVWF STATUS_TEMP ; Save STATUS to a Temporary register in Bank 0

     :

     : (Interrupt Service Routine)

     :

SWAPF STATUS_TEMP,W ; Swap original STATUS register value into W (restores original bank)

MOVWF STATUS        ; Restore STATUS register from W register

SWAPF W_TEMP,F      ; Swap W_Temp nibbles and return value to W_Temp

SWAPF W_TEMP,W      ; Swap W_Temp to W to restore original W value without affecting STATUS

DS30559A-page 68                    Preliminary                        1996 Microchip Technology Inc.
                                                   PIC16C64X & PIC16C66X

9.7 Watchdog Timer (WDT)                                     the WDT, under software control, by writing to the
                                                             OPTION register. Thus, time-out periods of up to 2.3
The Watchdog Timer (WDT) is a free running on-chip           seconds can be realized.
RC oscillator which does not require any external com-
ponents. The block diagram is shown in Figure 9-17.          The CLRWDT and SLEEP instructions clear the WDT and
This RC oscillator is separate from the RC oscillator of     the postscaler (if assigned to the WDT) and prevent it
the OSC1/CLKIN pin. This means that the WDT will             from timing out and generating a device RESET.
run, even if the clock on the OSC1 and OSC2 pins has
been stopped, for example, by execution of a SLEEP           The TO bit in the STATUS register will be cleared upon
instruction. During normal operation, a WDT time-out         a Watchdog Timer time-out (WDT Reset and WDT
generates a device RESET. If the device is in SLEEP          wake-up).
mode, a WDT time-out causes the device to wake-up
and continue with normal operation, this is known as a       9.7.2 WDT PROGRAMMING CONSIDERATIONS
WDT wake-up. The WDT can be permanently disabled
by clearing configuration bit WDTE (Section 9.1).            It should also be taken in account that under worst case
                                                             conditions (VDD = Min., Temperature = Max., max.
9.7.1 WDT PERIOD                                             WDT prescaler) it may take several seconds before a
                                                             WDT time-out occurs.
The WDT has a nominal time-out period of 18 ms, (with
no prescaler). The time-out period varies with temper-                        Note:  When the prescaler is assigned to the
ature, VDD and process variations from part to part (see                             WDT, always execute a CLRWDT instruction
DC specs). If longer time-outs are desired, a prescaler                              before changing the prescale value, other-
with a division ratio of up to 1:128 can be assigned to                              wise a WDT reset may occur.

FIGURE 9-17: WATCHDOG TIMER BLOCK DIAGRAM

                                                      From TMR0 Clock Source
                                                      (Figure 7-6)

                                                0

               WDT Timer                        1         M                          Postscaler
                                                          U                                   8

                                                          X

                                                                                     8 - to - 1 MUX          PS2:PS0

                  WDT                              PSA
               Enable Bit

                                                                                                     To TMR0 (Figure 7-6)

                                                                              0           1

                                                                                     MUX             PSA

     Note: PSA and PS2:PS0 are bits in the OPTION register.                            WDT
                                                                                     Time-out

FIGURE 9-18: SUMMARY OF WATCHDOG TIMER REGISTERS

Address Name                      Bit 7  Bit 6            Bit 5 Bit 4                   Bit 3         Bit 2    Bit 1         Bit 0
                                                                                     PWRTE(1)
2007h  Config. bits MPEEN BODEN(1) CP1 CP0                                                           WDTE    FOSC1         FOSC0
                                                                                        PSA           PS2      PS1           PS0
81h    OPTION  RBPU INTEDG T0CS T0SE

Legend: Shaded cells are not used by the Watchdog Timer.
Note 1: See Figure 9-1 for details of the operation of these bits.

1996 Microchip Technology Inc.                Preliminary                                                  DS30559A-page 69
PIC16C64X & PIC16C66X

9.8 Power-Down Mode (SLEEP)                                     When the SLEEP instruction is being executed, the
                                                                next instruction (PC + 1) is pre-fetched. For the device
Power-down mode is entered by executing a SLEEP                 to wake-up through an interrupt event, the correspond-
instruction.                                                    ing interrupt enable bit must be set (enabled). Wake-up
                                                                is regardless of the state of the GIE bit. If the GIE bit is
If enabled, the Watchdog Timer will be cleared but              clear (disabled), the device continues execution at the
keeps running, the PD bit in the STATUS register is             instruction after the SLEEP instruction. If the GIE bit is
cleared, the TO bit is set, and the oscillator driver is        set (enabled), the device executes the instruction after
turned off. The I/O ports maintain the status they had,         the SLEEP instruction and then branches to the inter-
before the SLEEP instruction was executed (driving              rupt address (0004h). In cases where the execution of
high, low, or hi-impedance).                                    the instruction following SLEEP is not desirable, the
                                                                user should have an NOP after the SLEEP instruction.
For lowest current consumption in this mode, all I/O
pins should be either at VDD, or VSS, with no external          9.8.2 WAKE-UP USING INTERRUPTS
circuitry drawing current from the I/O pin and the com-
parators and VREF module should be disabled. I/O pins           When global interrupts are disabled (GIE cleared) and
that are hi-impedance inputs should be pulled high or           any interrupt source has both its interrupt enable bit
low externally to avoid switching currents caused by            and interrupt flag set, one of the following events will
floating inputs. The T0CKI input should also be at VDD          occur:
or VSS for lowest current consumption. The contribu-
tion from on chip pull-ups on PORTB should be consid-            If the interrupt occurs before the execution of a
ered.                                                              SLEEP instruction, the SLEEP instruction will com-
                                                                   plete as an NOP. Therefore, the WDT and WDT
The MCLR pin must be at a logic high level (VIHMC).                postscaler will not be cleared, the TO bit will not
                                                                   be set and PD bit will not be cleared.
9.8.1 WAKE-UP FROM SLEEP
                                                                If the interrupt occurs during or after the execution
The device can wake-up from SLEEP through one of                   of a SLEEP instruction, the device will immediately
the following events:                                              wake-up from sleep. The SLEEP instruction will be
                                                                   completely executed before the wake-up. There-
1. Any device reset                                                fore, the WDT and WDT postscaler will be
2. Watchdog Timer Wake-up (if WDT was enabled)                     cleared, the TO bit will be set and the PD bit will
3. Interrupt from RB0/INT pin, RB Port change, or                  be cleared.

      the Comparator.                                           Even if the flag bits were checked before executing a
                                                                SLEEP instruction, it may be possible for flag bits to
The first event will reset the device upon wake-up.             become set before the SLEEP instruction completes. To
However the latter two events will wake the device and          determine whether a SLEEP instruction executed, test
then resume program execution. The TO and PD bits in            the PD bit. If the PD bit is set, the SLEEP instruction
the STATUS register can be used to determine the                was executed as an NOP.
cause of device reset. The PD bit, which is set on
power-up is cleared when SLEEP is invoked. The TO               To ensure that the WDT is clear, a CLRWDT instruction
bit is cleared if WDT wake-up occurred.                         should be executed before a SLEEP instruction.

FIGURE 9-19: WAKE-UP FROM SLEEP THROUGH INTERRUPT

                   Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1                                  Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
        OSC1                                                    TOST(2)
CLKOUT(4)

         INT pin                                                              Interrupt Latency
                                                                                    (Note 2)
INTF flag
(INTCON<1>)                                       Processor in
                                                     SLEEP
GIE bit
(INTCON<7>)

INSTRUCTION FLOW

      PC          PC                  PC+1        PC+2               PC+2           PC + 2          0004h        0005h
                                    Inst(PC + 1)                Inst(PC + 2)  Dummy cycle        Inst(0004h)  Inst(0005h)
Instruction       Inst(PC) = SLEEP  SLEEP                       Inst(PC + 1)                     Dummy cycle  Inst(0004h)
fetched               Inst(PC - 1)

Instruction
executed

Note  1: XT, HS or LP oscillator mode assumed.
      2: TOST = 1024TOSC (drawing not to scale) This delay will not be there for RC osc mode.
      3: GIE = '1' assumed. In this case after wake- up, the processor jumps to the interrupt routine. If GIE = '0', execution will continue in-line.
      4: CLKOUT is not available in these osc modes, but shown here for timing reference.

DS30559A-page 70                                                Preliminary                      1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

9.9 Code Protection                                     9.11 In-Circuit Serial Programming

If the code protection bit(s) have not been             The PIC16CXX microcontrollers can be serially
programmed, the on-chip program memory can be           programmed while in the end application circuit. This is
read out for verification purposes.                     simply done with two lines for clock and data, and three
                                                        other lines for power, ground, and the programming
   Note: Microchip does not recommend code              voltage. This allows customers to manufacture boards
               protecting windowed devices.             with unprogrammed devices, and then program the
                                                        microcontroller just before shipping the product. This
9.10 ID Locations                                       also allows the most recent firmware or a custom
                                                        firmware to be programmed.
Four memory locations (2000h-2003h) are designated
as ID locations where the user can store checksum or    The device is placed into a program/verify mode by
other code-identification numbers. These locations are  holding the RB6 and RB7 pins low while raising the
not accessible during normal execution but are          MCLR (VPP) pin from VIL to VIHH (see programming
readable and writable during program/verify. Only the   specification). RB6 becomes the programming clock
least significant 4 bits of the ID locations are used.  and RB7 becomes the programming data. Both RB6
                                                        and RB7 are Schmitt Trigger inputs in this mode.

                                                        After reset, to place the device into programming/verify
                                                        mode, the program counter (PC) is at location 00h. A
                                                        6-bit command is then supplied to the device.
                                                        Depending on the command, 14-bits of program data
                                                        are then supplied to or from the device, depending if
                                                        the command was a load or a read. For complete
                                                        details of serial programming, please refer to the
                                                        PIC16C6X/7X Programming Specifications (Literature
                                                        #DS30228).

                                                        A typical in-circuit serial programming connection is
                                                        shown in Figure 9-20.

                                                        FIGURE 9-20: TYPICAL IN-CIRCUIT SERIAL
                                                                             PROGRAMMING
                                                                             CONNECTION

                                                        External   To Normal
                                                        Connector  Connections
                                                        Signals
                                                                                PIC16CXX
                                                              +5V
                                                                                VDD
                                                               0V               VSS
                                                              VPP               MCLR/VPP

                                                        CLK                     RB6

                                                        Data I/O                RB7

                                                                                             VDD

                                                                   To Normal
                                                                   Connections

1996 Microchip Technology Inc.  Preliminary                                   DS30559A-page 71
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 72  Preliminary   1996 Microchip Technology Inc.
                    PIC16C64X & PIC16C66X

10.0 INSTRUCTION SET SUMMARY                                       Byte-oriented operations
                                                                   Bit-oriented operations
Each PIC16CXX instruction is a 14-bit word divided                Literal and control operations
into an OPCODE which specifies the instruction type
and one or more operands which further specify the                All instructions are executed within one single instruc-
operation of the instruction. The PIC16CXX instruction            tion cycle, unless a conditional test is true or the pro-
set summary in Table 10-2 lists byte-oriented, bit-ori-           gram counter is changed as a result of an instruction.
ented, and literal and control operations. Table 10-1             In this case, the execution takes two instruction cycles
shows the opcode field descriptions.                              with the second cycle executed as a NOP. One instruc-
                                                                  tion cycle consists of four oscillator periods. Thus, for
For byte-oriented instructions, 'f' represents a file reg-        an oscillator frequency of 4 MHz, the normal instruction
ister designator and 'd' represents a destination desig-          execution time is 1 s. If a conditional test is true or the
nator. The file register designator specifies which file          program counter is changed as a result of an instruc-
register is to be used by the instruction.                        tion, the instruction execution time is 2 s.

The destination designator specifies where the result of          Table 10-2 lists the instructions recognized by the
the operation is to be placed. If 'd' is zero, the result is      MPASM assembler.
placed in the W register. If 'd' is one, the result is placed
in the file register specified in the instruction.                Figure 10-1 shows the three general formats that the
                                                                  instructions can have.
For bit-oriented instructions, 'b' represents a bit field
designator which selects the number of the bit affected           Note:  To maintain upward compatibility with
by the operation, while 'f' represents the number of the                 future PIC16CXX products, do not use the
file in which the bit is located.                                        OPTION and TRIS instructions.

For literal and control operations, 'k' represents an             All examples use the following format to represent a
eight or eleven bit constant or literal value.                    hexadecimal number:

TABLE 10-1: OPCODE FIELD                                          0xhh
                     DESCRIPTIONS
                                                                  where h signifies a hexadecimal digit.

Field  Description                                                FIGURE 10-1: GENERAL FORMAT FOR
                                                                                       INSTRUCTIONS
   f Register file address (0x00 to 0x7F)
   W Working register (accumulator)                               Byte-oriented file register operations
   b Bit address within an 8-bit file register
   k Literal field, constant data or label                        13                 8 76                             0
   x Don't care location (= 0 or 1)
                                                                         OPCODE      d                    f (FILE #)
          The assembler will generate code with x = 0. It is the
          recommended form of use for compatibility with all             d = 0 for destination W
          Microchip software tools.                                      d = 1 for destination f
   d Destination select; d = 0: store result in W,                       f = 7-bit file register address
          d = 1: store result in file register f.
          Default is d = 1                                        Bit-oriented file register operations
label Label name
TOS Top of Stack                                                 13                 10 9 7 6                         0
  PC Program Counter
PCLATH Program Counter High Latch                                        OPCODE      b (BIT #) f (FILE #)
GIE Global Interrupt Enable bit
WDT Watchdog Timer/Counter                                              b = 3-bit bit address
  TO Time-out bit                                                        f = 7-bit file register address
  PD Power-down bit
dest Destination either the W register or the specified           Literal and control operations
          register file location
  [ ] Options                                                     General
  ( ) Contents
   Assigned to                                                    13                 87                                    0
< > Register bit field                                                                                   k (literal)
   In the set of                                                         OPCODE

italics User defined term (font is courier)                              k = 8-bit immediate value

                                                                  CALL and GOTO instructions only

                                                                  13       11 10                                      0

                                                                         OPCODE            k (literal)

                                                                         k = 11-bit immediate value

The instruction set is highly orthogonal and is grouped
into three basic categories:

1996 Microchip Technology Inc.                                                                          DS30559A-page 73

                                    This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

10.1 Special Function Registers as
          Source/Destination

The PIC16C64X & PIC16C66X's orthogonal instruction
set allows read and write of all file registers, including
special function registers. There are some special situ-
ations the user should be aware of:

10.1.1 STATUS AS DESTINATION

If an instruction writes to STATUS, the Z, C, and DC bits
may be set or cleared as a result of the instruction and
overwrite the original data bits written. For example,
executing CLRF STATUS will clear register STATUS,
and then set the Z bit leaving 0000 0100b in the reg-
ister.

10.1.2 PCL AS SOURCE OR DESTINATION

Read, write or read-modify-write on PCL may have the
following results:

Read PC:            PCL  dest

Write PCL:          PCLATH  PCH;
                    8-bit destination value  PCL

Read-Modify-Write:  PCL ALU operand
                    PCLATH  PCH;
                    8-bit result  PCL

Where PCH = program counter high byte (not an
addressable register), PCLATH = Program counter
high holding latch, dest = destination, WREG or f.

10.1.3 BIT MANIPULATION

All bit manipulation instructions are done by first read-
ing the entire register, operating on the selected bit and
writing the result back (read-modify-write). The user
should keep this in mind when operating on special
function registers, such as ports.

DS30559A-page 74                                             1996 Microchip Technology Inc.
                                               PIC16C64X & PIC16C66X

TABLE 10-2: INSTRUCTION SET

Mnemonic,      Description                     Cycles       14-Bit Opcode        Status Notes
Operands
                                                       MSb                 LSb Affected

BYTE-ORIENTED FILE REGISTER OPERATIONS

ADDWF       f, d Add W and f                    1 00        0111  dfff     ffff  C,DC,Z  1,2
ANDWF                                           1 00        0101  dfff     ffff  Z       1,2
CLRF        f, d AND W with f                   1 00        0001  lfff     ffff  Z       2
CLRW                                            1 00        0001  0000     0011  Z
COMF        f  Clear f                          1 00        1001  dfff     ffff  Z       1,2
DECF                                            1 00        0011  dfff     ffff  Z       1,2
DECFSZ      -  Clear W                         1(2) 00      1011  dfff     ffff          1,2,3
INCF                                            1 00        1010  dfff     ffff  Z       1,2
INCFSZ      f, d Complement f                  1(2) 00      1111  dfff     ffff          1,2,3
IORWF                                           1 00        0100  dfff     ffff  Z       1,2
MOVF        f, d Decrement f                    1 00        1000  dfff     ffff  Z       1,2
MOVWF                                           1 00        0000  lfff     ffff
NOP         f, d Decrement f, Skip if 0         1 00        0000  0xx0     0000  C       1,2
RLF                                             1 00        1101  dfff     ffff  C       1,2
RRF         f, d Increment f                    1 00        1100  dfff     ffff  C,DC,Z  1,2
SUBWF                                           1 00        0010  dfff     ffff          1,2
SWAPF       f, d Increment f, Skip if 0         1 00        1110  dfff     ffff  Z       1,2
XORWF                                           1 00        0110  dfff     ffff
            f, d Inclusive OR W with f

            f, d Move f

            f  Move W to f

            -  No Operation

            f, d Rotate Left f through Carry

            f, d Rotate Right f through Carry

            f, d Subtract W from f

            f, d Swap nibbles in f

            f, d Exclusive OR W with f

BIT-ORIENTED FILE REGISTER OPERATIONS

BCF         f, b Bit Clear f                   1 01 00bb bfff ffff                       1,2
BSF         f, b Bit Set f
BTFSC       f, b Bit Test f, Skip if Clear     1 01 01bb bfff ffff                       1,2
BTFSS       f, b Bit Test f, Skip if Set
                                               1 (2) 01 10bb bfff ffff                   3

                                               1 (2) 01 11bb bfff ffff                   3

LITERAL AND CONTROL OPERATIONS

ADDLW       k  Add literal and W               1 11 111x kkkk kkkk C,DC,Z
               AND literal with W              1 11 1001 kkkk kkkk Z
ANDLW       k  Call subroutine                 2 10 0kkk kkkk kkkk
               Clear Watchdog Timer            1 00 0000 0110 0100 TO,PD
CALL        k  Go to address                   2 10 1kkk kkkk kkkk
               Inclusive OR literal with W     1 11 1000 kkkk kkkk Z
CLRWDT -       Move literal to W               1 11 00xx kkkk kkkk
               Return from interrupt           2 00 0000 0000 1001
GOTO        k  Return with literal in W        2 11 01xx kkkk kkkk
               Return from Subroutine          2 00 0000 0000 1000
IORLW       k  Go into standby mode            1 00 0000 0110 0011 TO,PD
               Subtract W from literal         1 11 110x kkkk kkkk C,DC,Z
MOVLW k        Exclusive OR literal with W     1 11 1010 kkkk kkkk Z

RETFIE      -

RETLW       k

RETURN -

SLEEP       -

SUBLW       k

XORLW       k

Note 1:     When an I/O register is modified as a function of itself ( e.g., MOVF PORTB, 1), the value used will be that value present
            on the pins themselves. For example, if the data latch is '1' for a pin configured as input and is driven low by an external
        2:  device, the data will be written back with a '0'.
        3:  If this instruction is executed on the TMR0 register (and, where applicable, d = 1), the prescaler will be cleared if assigned
            to the Timer0 Module.
            If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is
            executed as a NOP.

1996 Microchip Technology Inc.                                                 DS30559A-page 75
PIC16C64X & PIC16C66X

10.2 Instruction Descriptions

ADDLW             Add Literal and W                             ANDLW             And Literal with W
Syntax:           [ label ] ADDLW k                             Syntax:           [ label ] ANDLW k
Operands:         0  k  255                                     Operands:         0  k  255
Operation:        (W) + k  (W)                                  Operation:        (W) .AND. (k)  (W)
Status Affected:  C, DC, Z                                      Status Affected:  Z
Encoding:                                                       Encoding:
Description:           11 111x kkkk kkkk                        Description:           11 1001 kkkk kkkk

Words:            The contents of the W register are            Words:            The contents of W register are
Cycles:           added to the eight bit literal 'k' and the    Cycles:           AND'ed with the eight bit literal 'k'. The
Example           result is placed in the W register.           Example           result is placed in the W register.
                  1                                                               1
                  1                                                               1

                    ADDLW 0x15                                                      ANDLW 0x5F

                  Before Instruction                                              Before Instruction
                               W = 0x10                                                        W = 0xA3

                  After Instruction                                               After Instruction
                               W = 0x25                                                        W = 0x03

ADDWF             Add W and f                                   ANDWF             AND W with f
Syntax:                                                         Syntax:
Operands:         [ label ] ADDWF f,d                           Operands:         [ label ] ANDWF f,d

Operation:        0  f  127                                     Operation:        0  f  127
Status Affected:  d  [0,1]                                      Status Affected:  d  [0,1]
Encoding:         (W) + (f)  (dest)                             Encoding:         (W) .AND. (f)  (dest)
Description:      C, DC, Z                                      Description:      Z

Words:                 00 0111 dfff ffff                        Words:                 00 0101 dfff ffff
Cycles:                                                         Cycles:
Example           Add the contents of the W register            Example           AND the W register with register 'f'. If
                  with register 'f'. If 'd' is 0 the result is                    'd' is 0 the result is stored in the W
                  stored in the W register. If 'd' is 1 the                       register. If 'd' is 1 the result is stored
                  result is stored back in register 'f'.                          back in register 'f'.

                  1                                                               1

                  1                                                               1

                    ADDWF FSR, 0                                                    ANDWF FSR, 1

                  Before Instruction                                              Before Instruction
                               W = 0x17                                                         W = 0x17
                               FSR = 0xC2                                                      FSR = 0xC2

                  After Instruction                                               After Instruction
                               W = 0xD9                                                        W = 0x17
                               FSR = 0xC2                                                      FSR = 0x02

DS30559A-page 76                                                                   1996 Microchip Technology Inc.
                                                       PIC16C64X & PIC16C66X

BCF               Bit Clear f                          BTFSC             Bit Test, Skip if Clear
Syntax:                                                Syntax:
Operands:         [ label ] BCF f,b                    Operands:         [ label ] BTFSC f,b
                                                       Operation:
Operation:        0  f  127                            Status Affected:  0  f  127
Status Affected:  0b7                                  Encoding:         0b7
Encoding:                                              Description:
Description:      0  (f)                                              skip if (f) = 0
Words:                                                 Words:
Cycles:           None                                 Cycles:           None
Example                                                Example
                     01 00bb bfff ffff                                      01      10bb      bfff ffff

                  Bit 'b' in register 'f' is cleared.                    If bit 'b' in register 'f' is '0' then the next
                                                                         instruction is skipped.
                  1                                                      If bit 'b' is '0' then the next instruction
                                                                         fetched during the current instruction
                  1                                                      execution is discarded, and a NOP is
                                                                         executed instead, making this a 2 cycle
                     BCF          FLAG_REG, 7                            instruction.

                  Before Instruction                                     1
                               FLAG_REG = 0xC7
                                                                         1(2)
                  After Instruction
                               FLAG_REG = 0x47

                                                                            HERE    BTFSC    FLAG,1
                                                                            FALSE            PROCESS_CODE
                                                                            TRUE    GOTO

                                                                                    
                                                                                    
                                                                                    

                                                                         Before Instruction
                                                                                      PC = address HERE

                                                                         After Instruction
                                                                                      if FLAG<1> = 0,
                                                                                      PC = address TRUE
                                                                                      if FLAG<1>=1,
                                                                                      PC = address FALSE

BSF               Bit Set f
Syntax:
Operands:         [ label ] BSF f,b

Operation:        0  f  127
Status Affected:  0b7
Encoding:
Description:      1  (f)
Words:
Cycles:           None
Example
                     01 01bb bfff ffff

                  Bit 'b' in register 'f' is set.

                  1

                  1

                     BSF       FLAG_REG, 7

                  Before Instruction
                               FLAG_REG = 0x0A

                  After Instruction
                               FLAG_REG = 0x8A

1996 Microchip Technology Inc.                                                             DS30559A-page 77
PIC16C64X & PIC16C66X

BTFSS             Bit Test f, Skip if Set                          CLRF              Clear f
Syntax:                                                            Syntax:
Operands:         [ label ] BTFSS f,b                              Operands:         [ label ] CLRF f
                                                                   Operation:
Operation:        0  f  127                                                          0  f  127
Status Affected:  0b<7                                             Status Affected:
Encoding:                                                          Encoding:         00h  (f)
Description:      skip if (f) = 1                               Description:      1Z

Words:            None                                             Words:            Z
Cycles:                                                            Cycles:
Example              01 11bb bfff ffff                             Example              00 0001 1fff ffff

                  If bit 'b' in register 'f' is '1' then the next                    The contents of register 'f' are cleared
                  instruction is skipped.                                            and the Z bit is set.
                  If bit 'b' is '1', then the next instruction
                  fetched during the current instruction                             1
                  execution, is discarded and a NOP is
                  executed instead, making this a 2 cycle                            1
                  instruction.
                                                                                        CLRF     FLAG_REG

                  1                                                                  Before Instruction

                  1(2)                                                                        FLAG_REG =    0x5A

                     HERE    BTFSC    FLAG,1                                         After Instruction      0x00
                     FALSE   GOTO     PROCESS_CODE                                                          1
                     TRUE                                                                    FLAG_REG =
                             
                                                                                             Z          =

                  Before Instruction
                               PC = address HERE

                  After Instruction
                               if FLAG<1> = 0,
                               PC = address FALSE
                               if FLAG<1> = 1,
                               PC = address TRUE

CALL              Call Subroutine                                  CLRW              Clear W
Syntax:                                                            Syntax:           [ label ] CLRW
Operands:         [ label ] CALL k                                 Operands:
Operation:                                                         Operation:        None
                  0  k  2047                                                         00h  (W)
Status Affected:                                                   Status Affected:  1Z
Encoding:         (PC)+ 1 TOS,                                     Encoding:         Z
Description:      k  PC<10:0>,                                     Description:
                  (PCLATH<4:3>)  PC<12:11>                                                00 0001 0000 0011
Words:                                                             Words:
Cycles:           None                                             Cycles:           W register is cleared. Zero bit (Z) is
Example                                                            Example           set.
                       10 0kkk kkkk kkkk                                             1

                  Call Subroutine. First, return address                             1
                  (PC+1) is pushed onto the stack. The
                  eleven bit immediate address is loaded                               CLRW
                  into PC bits <10:0>. The upper bits of
                  the PC are loaded from PCLATH.                                     Before Instruction
                  CALL is a two cycle instruction.                                                W = 0x5A

                  1                                                                  After Instruction
                                                                                                  W = 0x00
                  2                                                                               Z=1

                    HERE CALL THERE

                  Before Instruction
                               PC = Address HERE

                  After Instruction
                               PC = Address THERE
                               TOS = Address HERE+1

DS30559A-page 78                                                                         1996 Microchip Technology Inc.
                                                    PIC16C64X & PIC16C66X

CLRWDT            Clear Watchdog Timer                         DECF              Decrement f
Syntax:                                                        Syntax:
Operands:         [ label ] CLRWDT                             Operands:         [ label ] DECF f,d
Operation:
                  None                                         Operation:        0  f  127
Status Affected:                                               Status Affected:  d  [0,1]
Encoding:         00h  WDT                                     Encoding:
Description:      0  WDT prescaler,                            Description:      (f) - 1  (dest)
                  1  TO
Words:            1  PD                                        Words:            Z
Cycles:                                                        Cycles:
Example           TO, PD                                       Example              00 0011 dfff ffff

                     00 0000 0110 0100                                           Decrement register 'f'. If 'd' is 0 the
                                                                                 result is stored in the W register. If 'd'
                  CLRWDT instruction resets the Watch-                           is 1 the result is stored back in register
                  dog Timer. It also resets the prescaler                        'f'.
                  of the WDT. Status bits TO and PD
                  are set.                                                       1

                                                                                 1

                  1                                                                 DECF CNT, 1

                  1                                                              Before Instruction

                     CLRWDT                                                               CNT =           0x01
                                                                                                          0
                  Before Instruction                                                      Z            =
                                                                                                          0x00
                             WDT counter =    ?                                  After Instruction        1

                  After Instruction           0x00                                        CNT =
                                              0
                             WDT counter =    1                                           Z            =
                                              1
                             WDT prescaler =

                             TO           =

                             PD           =

COMF              Complement f                                 DECFSZ            Decrement f, Skip if 0
Syntax:                                                        Syntax:
Operands:         [ label ] COMF f,d                           Operands:         [ label ] DECFSZ f,d

Operation:        0  f  127                                    Operation:        0  f  127
Status Affected:  d  [0,1]                                     Status Affected:  d  [0,1]
Encoding:                                                      Encoding:
Description:      (f)  (dest)                                  Description:      (f) - 1  (dest); skip if result = 0

Words:            Z                                            Words:            None
Cycles:                                                        Cycles:
Example              00 1001 dfff ffff                         Example              00 1011 dfff ffff

                  The contents of register 'f' are comple-                       The contents of register 'f' are decre-
                  mented. If 'd' is 0 the result is stored in                    mented. If 'd' is 0 the result is placed in
                  W. If 'd' is 1 the result is stored back in                    the W register. If 'd' is 1 the result is
                  register 'f'.                                                  placed back in register 'f'.
                                                                                 If the result is 0, the next instruction,
                  1                                                              which is already fetched, is discarded. A
                                                                                 NOP is executed instead making it a two
                  1                                                              cycle instruction.

                     COMF         REG1,0                                         1

                  Before Instruction                                             1(2)

                             REG1 =       0x13                                      HERE     DECFSZ       CNT, 1
                                                                                                          LOOP
                  After Instruction       0x13                                               GOTO
                                          0xEC
                             REG1 =                                                 CONTINUE
                                                                                                   
                             W        =                                                            

                                                                                 Before Instruction
                                                                                      PC = address HERE

                                                                                 After Instruction
                                                                                      CNT = CNT - 1
                                                                                      if CNT = 0,
                                                                                      PC = address CONTINUE
                                                                                      if CNT  0,
                                                                                      PC = address HERE+1

1996 Microchip Technology Inc.                                                                       DS30559A-page 79
PIC16C64X & PIC16C66X

GOTO              Unconditional Branch                          INCFSZ            Increment f, Skip if 0
Syntax:                                                         Syntax:
Operands:         [ label ] GOTO k                              Operands:         [ label ] INCFSZ f,d
Operation:
                  0  k  2047                                    Operation:        0  f  127
Status Affected:  k  PC<10:0>                                   Status Affected:  d  [0,1]
Encoding:         PCLATH<4:3>  PC<12:11>                        Encoding:
Description:                                                    Description:      (f) + 1  (dest), skip if result = 0
                  None
Words:                                                          Words:            None
Cycles:                10 1kkk kkkk kkkk                        Cycles:
Example                                                         Example              00 1111 dfff ffff
                  GOTO is an unconditional branch. The
                  eleven bit immediate value is loaded                            The contents of register 'f' are incre-
                  into PC bits <10:0>. The upper bits of                          mented. If 'd' is 0 the result is placed
                  PC are loaded from PCLATH<4:3>.                                 in the W register. If 'd' is 1 the result is
                  GOTO is a two cycle instruction.                                placed back in register 'f'.
                                                                                  If the result is 0, the next instruction,
                  1                                                               which is already fetched, is discarded.
                                                                                  A NOP is executed instead making it a
                  2                                                               two cycle instruction.

                    GOTO THERE                                                    1

                  After Instruction                                               1(2)
                               PC = Address THERE
                                                                                     HERE    INCFSZ        CNT, 1
                                                                                                          LOOP
                                                                                             GOTO

                                                                                     CONTINUE

                                                                                             

                                                                                             

                                                                                  Before Instruction
                                                                                       PC = address HERE

                                                                                  After Instruction
                                                                                       CNT = CNT + 1
                                                                                       if CNT= 0,
                                                                                       PC = address CONTINUE
                                                                                       if CNT 0,
                                                                                       PC = address HERE +1

INCF              Increment f                                   IORLW             Inclusive OR Literal with W
Syntax:                                                         Syntax:           [ label ] IORLW k
Operands:         [ label ] INCF f,d                            Operands:         0  k  255
                                                                Operation:        (W) .OR. k  (W)
Operation:        0  f  127                                     Status Affected:  Z
Status Affected:  d  [0,1]                                      Encoding:
Encoding:                                                       Description:           11 1000 kkkk kkkk
Description:      (f) + 1  (dest)
                                                                Words:            The contents of the W register is
Words:            Z                                             Cycles:           OR'ed with the eight bit literal 'k'. The
Cycles:                                                         Example           result is placed in the W register.
Example              00 1010 dfff ffff
                                                                                  1
                  The contents of register 'f' are incre-
                  mented. If 'd' is 0 the result is placed                        1
                  in the W register. If 'd' is 1 the result is
                  placed back in register 'f'.                                      IORLW 0x35

                  1                                                               Before Instruction
                                                                                               W = 0x9A
                  1
                                                                                  After Instruction
                     INCF CNT, 1                                                               W = 0xBF
                                                                                               Z=1
                  Before Instruction

                     CNT =               0xFF
                                         0
                     Z                =
                                         0x00
                  After Instruction      1

                     CNT =

                     Z                =

DS30559A-page 80                                                                         1996 Microchip Technology Inc.
                                                PIC16C64X & PIC16C66X

IORWF             Inclusive OR W with f                         MOVF              Move f
Syntax:                                                         Syntax:
Operands:         [ label ] IORWF f,d                           Operands:         [ label ] MOVF f,d
                                                                Operation:
Operation:        0  f  127                                     Status Affected:  0  f  127
Status Affected:  d  [0,1]                                      Encoding:         d  [0,1]
Encoding:                                                       Description:      (f)  (dest)
Description:      (W) .OR. (f)  (dest)                                            Z
                                                                Words:
Words:            Z                                             Cycles:                00 1000 dfff ffff
Cycles:                                                         Example
Example              00 0100 dfff ffff                                            The contents of register f is moved to
                                                                                  a destination dependant upon the sta-
                  Inclusive OR the W register with regis-                         tus of d. If d = 0, destination is W reg-
                  ter 'f'. If 'd' is 0 the result is placed in                    ister. If d = 1, the destination is file
                  the W register. If 'd' is 1 the result is                       register f itself. d = 1 is useful to test a
                  placed back in register 'f'.                                    file register since status flag Z is
                                                                                  affected.
                  1
                                                                                  1
                  1
                                                                                  1
                     IORWF           RESULT, 0
                                                                                    MOVF FSR, 0
                  Before Instruction
                                                                                  After Instruction
                            RESULT =     0x13                                                  W = value in FSR register
                                         0x91                                                  Z =1
                            W         =
                                         0x13
                  After Instruction      0x93
                                         1
                            RESULT =

                            W         =

                            Z         =

MOVLW             Move Literal to W                             MOVWF             Move W to f
Syntax:           [ label ] MOVLW k                             Syntax:
Operands:         0  k  255                                     Operands:         [ label ] MOVWF f
Operation:        k  (W)                                        Operation:
Status Affected:  None                                          Status Affected:  0  f  127
Encoding:                                                       Encoding:
Description:           11 00xx kkkk kkkk                        Description:      (W)  (f)

Words:            The eight bit literal 'k' is loaded into W    Words:            None
Cycles:           register. The don't cares will assemble       Cycles:
Example           as 0's.                                       Example              00 0000 1fff ffff
                  1
                  1                                                               Move data from W register to register
                                                                                  'f'.
                    MOVLW 0x5A
                                                                                  1
                  After Instruction
                               W = 0x5A                                           1

                                                                                     MOVWF     OPTION

                                                                                  Before Instruction

                                                                                            OPTION =     0xFF
                                                                                                         0x4F
                                                                                            W         =
                                                                                                         0x4F
                                                                                  After Instruction      0x4F

                                                                                            OPTION =

                                                                                            W         =

1996 Microchip Technology Inc.                                                                     DS30559A-page 81
PIC16C64X & PIC16C66X

NOP               No Operation      0xx0  0000             RETFIE            Return from Interrupt
Syntax:           [ label ] NOP                            Syntax:
Operands:         None                                     Operands:         [ label ] RETFIE
Operation:        No operation                             Operation:
Status Affected:  None                                                       None
Encoding:                                                  Status Affected:
Description:           00 0000                             Encoding:         TOS  PC,
Words:            No operation.                            Description:      1  GIE
Cycles:           1                                                          None
Example           1                                        Words:
                                                           Cycles:                00 0000 0000 1001
                    NOP                                    Example
                                                                             Return from Interrupt. Stack is POPed
                                                                             and Top of Stack (TOS) is loaded in
                                                                             the PC. Interrupts are enabled by set-
                                                                             ting Global Interrupt Enable bit, GIE
                                                                             (INTCON<7>). This is a two cycle
                                                                             instruction.

                                                                             1

                                                                             2

                                                                               RETFIE

                                                                             After Interrupt
                                                                                          PC = TOS
                                                                                          GIE = 1

OPTION            Load Option Register                     RETLW             Return with Literal in W

Syntax:           [ label ] OPTION                         Syntax:           [ label ] RETLW k

Operands:         None                                     Operands:         0  k  255

Operation:        (W)  OPTION                              Operation:        k  (W);
                                                                             TOS  PC
Status Affected: None

Encoding:            00 0000 0110 0010                     Status Affected: None

Description:      The contents of the W register are       Encoding:            11 01xx kkkk kkkk
                  loaded in the OPTION register. This
                  instruction is supported for code com-   Description:      The W register is loaded with the eight
                  patibility with PIC16C5X products.                         bit literal 'k'. The program counter is
                  Since OPTION is a readable/writable                        loaded from the top of the stack (the
                  register, the user can directly address                    return address). This is a two cycle
                  it.                                                        instruction.

Words:            1                                        Words:            1

Cycles:           1                                        Cycles:           2

Example                                                    Example                  CALL TABLE  ;W contains table
                                                                                                ;offset value
                  To maintain upward compatibility                                             ;W now has table value
                  with future PIC16CXX products, do                                 
                  not use this instruction.                                                    ;W = offset
                                                                         TABLE ADDWF PC         ;Begin table
                                                                                    RETLW k1    ;
                                                                                    RETLW k2
                                                                                               ; End of table
                                                                                    
                                                                                    
                                                                                    RETLW kn

                                                                             Before Instruction
                                                                                          W = 0x07

                                                                             After Instruction
                                                                                          W = value of k8

DS30559A-page 82                                                                1996 Microchip Technology Inc.
                                                 PIC16C64X & PIC16C66X

RETURN            Return from Subroutine                     RRF               Rotate Right f through Carry
Syntax:           [ label ] RETURN                           Syntax:
Operands:         None                                       Operands:         [ label ] RRF f,d
Operation:        TOS  PC
Status Affected:  None                                       Operation:        0  f  127
Encoding:                                                    Status Affected:  d  [0,1]
Description:           00 0000 0000 1000                     Encoding:
                                                             Description:      See description below
Words:            Return from subroutine. The stack is
Cycles:           POPed and the top of the stack (TOS)                         C
Example           is loaded into the program counter.
                  This is a two cycle instruction.                                00 1100 dfff ffff
                  1
                  2                                                            The contents of register 'f' are rotated
                                                                               one bit to the right through the Carry
                    RETURN                                                     Flag. If 'd' is 0 the result is placed in
                                                                               the W register. If 'd' is 1 the result is
                  After Interrupt                                              placed back in register 'f'.
                               PC = TOS
                                                                                       C          Register f

                                                             Words:            1
                                                             Cycles:
                                                             Example           1

                                                                                  RRF             REG1,0

                                                                               Before Instruction

                                                                                       REG1 =         1110 0110
                                                                                                      0
                                                                                       C           =
                                                                                                      1110 0110
                                                                               After Instruction      0111 0011
                                                                                                      0
                                                                                       REG1 =

                                                                                       W           =

                                                                                       C           =

RLF               Rotate Left f through Carry                SLEEP
Syntax:                                                      Syntax:
Operands:         [ label ] RLF f,d                          Operands:         [ label ] SLEEP
                                                             Operation:
Operation:        0  f  127                                                    None
Status Affected:  d  [0,1]                                   Status Affected:
Encoding:                                                    Encoding:         00h  WDT,
Description:      See description below                      Description:      0  WDT prescaler,
                                                                               1  TO,
                  C                                          Words:            0  PD
                                                             Cycles:
                     00 1101 dfff ffff                       Example:          TO, PD

                  The contents of register 'f' are rotated                         00 0000 0110 0011
                  one bit to the left through the Carry
                  Flag. If 'd' is 0 the result is placed in                    The power-down status bit, PD is
                  the W register. If 'd' is 1 the result is                    cleared. Time-out status bit, TO is
                  stored back in register 'f'.                                 set. Watchdog Timer and its pres-
                                                                               caler are cleared.
                          C          Register f                                The processor is put into SLEEP
                                                                               mode with the oscillator stopped.
Words:            1                                                            See Power-Down Mode (SLEEP) for
Cycles:                                                                        more details.
Example           1
                                                                               1
                     RLF          REG1,0
                                                                               1
                  Before Instruction
                                                                               SLEEP
                             REG1 =       1110 0110
                                          0
                             C        =
                                          1110 0110
                  After Instruction       1100 1100
                                          1
                             REG1 =

                             W        =

                             C        =

1996 Microchip Technology Inc.                                                                  DS30559A-page 83
PIC16C64X & PIC16C66X

SUBLW         Subtract W from Literal                       SUBWF         Subtract W from f
Syntax:       [ label ] SUBLW k                             Syntax:
Operands:     0  k  255                                     Operands:     [ label ] SUBWF f,d
Operation:    k - (W)  (W)                                  Operation:    0  f  127
Status        C, DC, Z                                      Status        d  [0,1]
Affected:                                                   Affected:     (f) - (W)  (dest)
Encoding:                                                   Encoding:     C, DC, Z
Description:                                                Description:
                  11 110x kkkk kkkk
Words:                                                      Words:
Cycles:       The W register is subtracted (2's com-        Cycles:          00 0010 dfff ffff
Example 1:    plement method) from the eight bit literal    Example 1:
              'k'. The result is placed in the W register.                Subtract (2's complement method) W reg-
Example 2:                                                  Example 2:    ister from register 'f'. If 'd' is 0 the result is
              1                                                           stored in the W register. If 'd' is 1 the
Example 3:                                                  Example 3:    result is stored back in register 'f'.

              1                                                           1

              SUBLW 0x02                                                  1

              Before Instruction                                          SUBWF REG1,1

                  W= 1                                                    Before Instruction
                  C= ?

              After Instruction                                              REG1  =3
                                                                             W     =2
                  W= 1                                                       C     =?
                  C = 1; result is positive
                                                                          After Instruction
              Before Instruction
                                                                             REG1  =1
                  W= 2                                                       W     =2
                  C= ?                                                       C     = 1; result is positive

              After Instruction                                           Before Instruction

                  W= 0                                                       REG1  =2
                  C = 1; result is zero                                      W     =2
                                                                             C     =?
              Before Instruction

                  W= 3                                                    After Instruction
                  C= ?
                                                                             REG1  =0
              After Instruction                                              W     =2
                                                                             C     = 1; result is zero
                  W=              0xFF
                  C=              0; result is nega-                      Before Instruction
                  tive
                                                                             REG1  =1
                                                                             W     =2
                                                                             C     =?

                                                                          After Instruction

                                                                             REG1  = 0xFF
                                                                             W     =2
                                                                             C     = 0; result is negative

DS30559A-page 84                                                             1996 Microchip Technology Inc.
                                              PIC16C64X & PIC16C66X

SWAPF             Swap Nibbles in f                            XORLW             Exclusive OR Literal with W
Syntax:                                                        Syntax:
Operands:         [ label ] SWAPF f,d                          Operands:         [ label ] XORLW k
                                                               Operation:        0  k  255
Operation:        0  f  127                                    Status Affected:  (W) .XOR. k  (W)
                  d  [0,1]                                     Encoding:         Z
Status Affected:                                               Description:
Encoding:         (f<3:0>)  (dest<7:4>),                                            11 1010 kkkk kkkk
Description:      (f<7:4>)  (dest<3:0>)                        Words:            The contents of the W register are
                                                               Cycles:           XOR'ed with the eight bit literal 'k'.
Words:            None                                         Example:          The result is placed in the W regis-
Cycles:                                                                          ter.
Example              00 1110 dfff ffff                                           1
                                                                                 1
                  The upper and lower nibbles of regis-                          XORLW 0xAF
                  ter 'f' are exchanged. If 'd' is 0 the                         Before Instruction
                  result is placed in W register. If 'd' is 1
                  the result is placed in register 'f'.                                         W = 0xB5
                                                                                 After Instruction
                  1
                                                                                                W = 0x1A
                  1

                     SWAPF REG, 0

                  Before Instruction

                        REG1 = 0xA5

                  After Instruction

                        REG1 = 0xA5

                        W             = 0x5A

TRIS              Load TRIS Register                           XORWF             Exclusive OR W with f
                                                               Syntax:
Syntax:           [ label ] TRIS f                             Operands:         [ label ] XORWF f,d

Operands:         5f7                                          Operation:        0  f  127
                                                               Status Affected:  d  [0,1]
Operation:        (W)  TRIS register f;                        Encoding:
                                                               Description:
Status Affected: None                                                            (W) .XOR. (f)  (dest)
                                                               Words:
Encoding:            00 0000 0110 0fff                         Cycles:           Z
                                                               Example
Description:      The instruction is supported for code                             00 0110 dfff ffff
                  compatibility with the PIC16C5X prod-
                  ucts. Since TRIS registers are read-                           Exclusive OR the contents of the W
                  able and writable, the user can directly                       register with register 'f'. If 'd' is 0 the
                  address them.                                                  result is stored in the W register. If 'd'
                                                                                 is 1 the result is stored back in register
Words:            1                                                              'f'.

Cycles:           1                                                              1

Example                                                                          1

                  To maintain upward compatibility                               XORWF REG 1
                  with future PIC16CXX products, do
                  not use this instruction.                                      Before Instruction

                                                                                    REG              = 0xAF
                                                                                    W                = 0xB5

                                                                                 After Instruction

                                                                                    REG              = 0x1A
                                                                                    W                = 0xB5

1996 Microchip Technology Inc.                                                                    DS30559A-page 85
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 86       1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

11.0 DEVELOPMENT SUPPORT                                 11.3 ICEPIC: Low-cost PIC16CXX In-Circuit
                                                                   Emulator
11.1 Development Tools
                                                         ICEPIC is a low-cost in-circuit emulator solution for the
The PIC16/17 microcontrollers are supported with a full  Microchip PIC16C5X and PIC16CXX families of 8-bit
range of hardware and software development tools:        OTP microcontrollers.

PICMASTER/PICMASTER CE Real-Time                       ICEPIC is designed to operate on PC-compatible
   In-Circuit Emulator                                   machines ranging from 286-AT through PentiumTM
                                                         based machines under Windows 3.x environment.
ICEPIC Low-Cost PIC16C5X and PIC16CXX                  ICEPIC features real time, non-intrusive emulation.
   In-Circuit Emulator
                                                         11.4 PRO MATE II: Universal Programmer
PRO MATE II Universal Programmer
PICSTART Plus Entry-Level Prototype                   The PRO MATE II Universal Programmer is a full-fea-
                                                         tured programmer capable of operating in stand-alone
   Programmer                                            mode as well as PC-hosted mode.
PICDEM-1 Low-Cost Demonstration Board
PICDEM-2 Low-Cost Demonstration Board                  The PRO MATE II has programmable VDD and VPP
PICDEM-3 Low-Cost Demonstration Board                  supplies which allows it to verify programmed memory
MPASM Assembler                                        at VDD min and VDD max for maximum reliability. It has
MPLAB-SIM Software Simulator                           an LCD display for displaying error messages, keys to
MPLAB-C (C Compiler)                                   enter commands and a modular detachable socket
Fuzzy logic development system (fuzzyTECH-MP)         assembly to support various package types. In stand-
                                                         alone mode the PRO MATE II can read, verify or pro-
11.2 PICMASTER: High Performance                         gram PIC16C5X, PIC16CXX, PIC17CXX and
          Universal In-Circuit Emulator with             PIC14000 devices. It can also set configuration and
          MPLAB IDE                                      code-protect bits in this mode.

The PICMASTER Universal In-Circuit Emulator is           11.5 PICSTART Plus Entry Level
intended to provide the product development engineer               Development System
with a complete microcontroller design tool set for all
microcontrollers in the PIC12C5XX, PIC14000,             The PICSTART programmer is an easy-to-use, low-
PIC16C5X, PIC16CXX and PIC17CXX families.                cost prototype programmer. It connects to the PC via
PICMASTER is supplied with the MPLABTM Integrated        one of the COM (RS-232) ports. MPLAB Integrated
Development Environment (IDE), which allows editing,     Development Environment software makes using the
"make" and download, and source debugging from a         programmer simple and efficient. PICSTART Plus is not
single environment.                                      recommended for production programming.

Interchangeable target probes allow the system to be     PICSTART Plus supports all PIC12C5XX, PIC14000,
easily reconfigured for emulation of different proces-   PIC16C5X, PIC16CXX and PIC17CXX devices with up
sors. The universal architecture of the PICMASTER        to 40 pins. Larger pin count devices such as the
allows expansion to support all new Microchip micro-     PIC16C923 and PIC16C924 may be supported with an
controllers.                                             adapter socket.

The PICMASTER Emulator System has been designed
as a real-time emulation system with advanced fea-
tures that are generally found on more expensive devel-
opment tools. The PC compatible 386 (and higher)
machine platform and Microsoft Windows 3.x environ-
ment were chosen to best make these features avail-
able to you, the end user.

A CE compliant version of PICMASTER is available for
European Union (EU) countries.

1996 Microchip Technology Inc.  Preliminary                                      DS30559A-page 87

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

11.6 PICDEM-1 Low-Cost PIC16/17                            an RS-232 interface, push-button switches, a potenti-
          Demonstration Board                              ometer for simulated analog input, a thermistor and
                                                           separate headers for connection to an external LCD
The PICDEM-1 is a simple board which demonstrates          module and a keypad. Also provided on the PICDEM-3
the capabilities of several of Microchip's microcontrol-   board is an LCD panel, with 4 commons and 12 seg-
lers. The microcontrollers supported are: PIC16C5X         ments, that is capable of displaying time, temperature
(PIC16C54 to PIC16C58A), PIC16C61, PIC16C62X,              and day of the week. The PICDEM-3 provides an addi-
PIC16C71, PIC16C8X, PIC17C42, PIC17C43 and                 tional RS-232 interface and Windows 3.1 software for
PIC17C44. All necessary hardware and software is           showing the demultiplexed LCD signals on a PC. A
included to run basic demo programs. The users can         simple serial interface allows the user to construct a
program the sample microcontrollers provided with          hardware demultiplexer for the LCD signals. PICDEM-
the PICDEM-1 board, on a PRO MATE II or                    3 will be available in the 3rd quarter of 1996.
PICSTART-16B programmer, and easily test firm-
ware. The user can also connect the PICDEM-1               11.9 MPLAB Integrated Development
board to the PICMASTER emulator and download                         Environment Software
the firmware to the emulator for testing. Additional pro-
totype area is available for the user to build some addi-  The MPLAB IDE Software brings an ease of software
tional hardware and connect it to the microcontroller      development previously unseen in the 8-bit microcon-
socket(s). Some of the features include an RS-232          troller market. MPLAB is a windows based application
interface, a potentiometer for simulated analog input,     which contains:
push-button switches and eight LEDs connected to
PORTB.                                                      A full featured editor
                                                            Three operating modes
11.7 PICDEM-2 Low-Cost PIC16CXX
          Demonstration Board                                 - editor
                                                              - emulator
The PICDEM-2 is a simple demonstration board that             - simulator
supports the PIC16C62, PIC16C64, PIC16C65,                  A project manager
PIC16C73 and PIC16C74 microcontrollers. All the             Customizable tool bar and key mapping
necessary hardware and software is included to             A status bar with project information
run the basic demonstration programs. The user             Extensive on-line help
can program the sample microcontrollers provided
with the PICDEM-2 board, on a PRO MATE II pro-             MPLAB allows you to:
grammer or PICSTART-16C, and easily test firmware.
The PICMASTER emulator may also be used with the            Edit your source files (either assembly or `C')
PICDEM-2 board to test firmware. Additional prototype       One touch assemble (or compile) and download
area has been provided to the user for adding addi-
tional hardware and connecting it to the microcontroller      to PIC16/17 tools (automatically updates all
socket(s). Some of the features include a RS-232 inter-       project information)
face, push-button switches, a potentiometer for simu-       Debug using:
lated analog input, a Serial EEPROM to demonstrate            - source files
usage of the I2C bus and separate headers for connec-         - absolute listing file
tion to an LCD module and a keypad.                         Transfer data dynamically via DDE (soon to be
                                                              replaced by OLE)
11.8 PICDEM-3 Low-Cost PIC16CXX                            Run up to four emulators on the same PC
          Demonstration Board
                                                           The ability to use MPLAB with Microchip's simulator
The PICDEM-3 is a simple demonstration board that          allows a consistent platform and the ability to easily
supports the PIC16C923 and PIC16C924 in the PLCC           switch from the low cost simulator to the full featured
package. It will also support future 44-pin PLCC           emulator with minimal retraining due to development
microcontrollers with a LCD Module. All the neces-         tools.
sary hardware and software is included to run the
basic demonstration programs. The user can pro-            11.10 Assembler (MPASM)
gram the sample microcontrollers provided with
the PICDEM-3 board, on a PRO MATE II program-              The MPASM Universal Macro Assembler is a PC-
mer or PICSTART Plus with an adapter socket, and           hosted symbolic assembler. It supports all microcon-
easily test firmware. The PICMASTER emulator may           troller series including the PIC12C5XX, PIC14000,
also be used with the PICDEM-3 board to test firm-         PIC16C5X, PIC16CXX, and PIC17CXX families.
ware. Additional prototype area has been provided to
the user for adding hardware and connecting it to the      MPASM offers full featured Macro capabilities, condi-
microcontroller socket(s). Some of the features include    tional assembly, and several source and listing formats.
                                                           It generates various object code formats to support
                                                           Microchip's development tools as well as third party
                                                           programmers.

DS30559A-page 88  Preliminary                               1996 Microchip Technology Inc.
                                  PIC16C64X & PIC16C66X

MPASM allows full symbolic debugging from                  Both versions include Microchip's fuzzyLABTM demon-
the Microchip Universal Emulator System                    stration board for hands-on experience with fuzzy logic
(PICMASTER).                                               systems implementation.

MPASM has the following features to assist in develop-     11.14 MP-DriveWayTM Application Code
ing software for specific use applications.                          Generator

Provides translation of Assembler source code to         MP-DriveWay is an easy-to-use Windows-based Appli-
   object code for all Microchip microcontrollers.         cation Code Generator. With MP-DriveWay you can
                                                           visually configure all the peripherals in a PIC16/17
Macro assembly capability.                               device and, with a click of the mouse, generate all the
Produces all the files (Object, Listing, Symbol,         initialization and many functional code modules in C
                                                           language. The output is fully compatible with Micro-
   and special) required for symbolic debug with           chip's MPLAB-C C compiler. The code produced is
   Microchip's emulator systems.                           highly modular and allows easy integration of your own
Supports Hex (default), Decimal and Octal source         code. MP-DriveWay is intelligent enough to maintain
   and listing formats.                                    your code through subsequent code generation.

MPASM provides a rich directive language to support        11.15 SEEVAL Evaluation and
programming of the PIC16/17. Directives are helpful in               Programming System
making the development of your assemble source code
shorter and more maintainable.                             The SEEVAL SEEPROM Designer's Kit supports all
                                                           Microchip 2-wire and 3-wire Serial EEPROMs. The kit
11.11 Software Simulator (MPLAB-SIM)                       includes everything necessary to read, write, erase or
                                                           program special features of any Microchip SEEPROM
The MPLAB-SIM Software Simulator allows code               product including Smart SerialsTM and secure serials.
development in a PC host environment. It allows the        The Total EnduranceTM Disk is included to aid in trade-
user to simulate the PIC16/17 series microcontrollers      off analysis and reliability calculations. The total kit can
on an instruction level. On any given instruction, the     significantly reduce time-to-market and result in an
user may examine or modify any of the data areas or        optimized system.
provide external stimulus to any of the pins. The input/
output radix can be set by the user and the execution      11.16 TrueGauge Intelligent Battery
can be performed in; single step, execute until break, or            Management
in a trace mode.
                                                           The TrueGauge development tool supports system
MPLAB-SIM fully supports symbolic debugging using          development with the MTA11200B TrueGauge Intelli-
MPLAB-C and MPASM. The Software Simulator offers           gent Battery Management IC. System design verifica-
the low cost flexibility to develop and debug code out-    tion can be accomplished before hardware prototypes
side of the laboratory environment making it an excel-     are built. User interface is graphically-oriented and
lent multi-project software development tool.              measured data can be saved in a file for exporting to
                                                           Microsoft Excel.
11.12 C Compiler (MPLAB-C)
                                                           11.17 KEELOQ Evaluation and
The MPLAB-C Code Development System is a com-                        Programming Tools
plete `C' compiler and integrated development environ-
ment for Microchip's PIC16/17 family of                    KEELOQ evaluation and programming tools support
microcontrollers. The compiler provides powerful inte-     Microchips HCS Secure Data Products. The HCS eval-
gration capabilities and ease of use not found with        uation kit includes an LCD display to show changing
other compilers.                                           codes, a decoder to decode transmissions, and a pro-
                                                           gramming interface to program test transmitters.
For easier source level debugging, the compiler pro-
vides symbol information that is compatible with the
MPLAB IDE memory display (PICMASTER emulator
software versions 1.13 and later).

11.13 Fuzzy Logic Development System
          (fuzzyTECH-MP)

fuzzyTECH-MP fuzzy logic development tool is avail-
able in two versions - a low cost introductory version,
MP Explorer, for designers to gain a comprehensive
working knowledge of fuzzy logic system design; and a
full-featured version, fuzzyTECH-MP, edition for imple-
menting more complex systems.

1996 Microchip Technology Inc.  Preliminary              DS30559A-page 89
DS30559A-page 90                  Product                 ** MPLABTM   MPLABTM C  MP-DriveWay   fuzzyTECH-MP     *** PICMASTER/    ICEPIC     ****PRO MATETM  PICSTART Lite  PICSTART Plus      PIC16C64X & PIC16C66X
                                                           Integrated   Compiler  Applications  Explorer/Edition   PICMASTER-CE     Low-Cost      II Universal  Ultra Low-Cost       Low-Cost
                                                         Development                                                                In-Circuit     Microchip                         Universal  TABLE 11-1: DEVELOPMENT TOOLS FROM MICROCHIP
                                                         Environment                   Code        Fuzzy Logic          In-Circuit  Emulator     Programmer           Dev. Kit        Dev. Kit
                                                                                    Generator        Dev. Tool          Emulator

                                  PIC12C508, 509         SW007002 SW006005           --         --                EM167015/         --          DV007003        --              DV003001

                                                                                                                  EM167101

                                  PIC14000               SW007002 SW006005           --         --                EM147001/         --          DV007003        --              DV003001

                                                                                                                  EM147101

                                  PIC16C52, 54, 54A,     SW007002 SW006005 SW006006             DV005001/         EM167015/         EM167201    DV007003        DV162003        DV003001
                                  55, 56, 57, 58A                                               DV005002          EM167101

                                  PIC16C554, 556, 558 SW007002 SW006005              --         DV005001/         EM167033/         ---         DV007003        --              DV003001
                                                                                                DV005002          EM167113

                                  PIC16C61               SW007002 SW006005 SW006006             DV005001/         EM167021/         EM167205    DV007003        DV162003        DV003001
                                                                                                DV005002               N/A

                                  PIC16C62, 62A,         SW007002 SW006005 SW006006             DV005001/         EM167025/         EM167203    DV007003        DV162002        DV003001
                                  64, 64A                                                       DV005002          EM167103

                                  PIC16C620, 621, 622 SW007002 SW006005 SW006006                DV005001/         EM167023/         EM167202    DV007003        DV162003        DV003001
                                                                                                DV005002          EM167109

                                  PIC16C63, 65, 65A,     SW007002 SW006005 SW006006             DV005001/         EM167025/         EM167204    DV007003        DV162002        DV003001
                                  73, 73A, 74, 74A                                              DV005002          EM167103

Preliminary                       PIC16C641, 642, 661, SW007002 SW006005             --         --                EM167035/         ---         DV007003        DV162002        DV003001

                                  662*                                                                            EM167105

                                  PIC16C71               SW007002 SW006005 SW006006             DV005001/         EM167027/         EM167205    DV007003        DV162003        DV003001
                                                                                                DV005002          EM167105

                                  PIC16C710, 711         SW007002 SW006005 SW006006             DV005001/         EM167027/         --          DV007003        DV162003        DV003001
                                                                                                DV005002          EM167105

                                  PIC16C72               SW007002 SW006005 SW006006             --                EM167025/         --          DV007003        DV162002        DV003001
                                                                                                                  EM167103

                                  PIC16F83               SW007002 SW006005 SW006006             DV005001/         EM167029/         --          DV007003        DV162003        DV003001
                                                                                                DV005002          EM167107

                                  PIC16C84               SW007002 SW006005 SW006006             DV005001/         EM167029/         EM167206    DV007003        DV162003        DV003001
                                                                                                DV005002          EM167107

                                  PIC16F84               SW007002 SW006005 SW006006             DV005001/         EM167029/         --          DV007003        DV162003        DV003001
                                                                                                DV005002          EM167107

                                  PIC16C923, 924*        SW007002 SW006005 SW006006             DV005001/         EM167031/         --          DV007003        --              DV003001
                                                                                                DV005002          EM167111

1996 Microchip Technology Inc.  PIC17C42,              SW007002 SW006005 SW006006             DV005001/         EM177007/         --          DV007003        --              DV003001
                                  42A, 43, 44                                                   DV005002          EM177107

                                   *Contact Microchip Technology for availability date                             ***All PICMASTER and PICMASTER-CE ordering part numbers above include
                                  **MPLAB Integrated Development Environment includes MPLAB-SIM Simulator and           PRO MATE II programmer

                                      MPASM Assembler                                                             ****PRO MATE socket modules are ordered separately. See development systems
                                                                                                                        ordering guide for specific ordering part numbers

                                            Product      TRUEGAUGE Development Kit      SEEVAL Designers Kit    Hopping Code Security Programmer Kit    Hopping Code Security Eval/Demo Kit
                                  All 2 wire and 3 wire                      N/A                   DV243001                                N/A                                    N/A
                                  Serial EEPROM's
                                  MTA11200B                              DV114001                      N/A                                  N/A                                   N/A
                                  HCS200, 300, 301 *                         N/A                       N/A                             PG306001                              DM303001
                                                     PIC16C64X & PIC16C66X

12.0 ELECTRICAL SPECIFICATIONS

Absolute Maximum Ratings
Ambient Temperature under bias ............................................................................................................. 40 to +125C
Storage Temperature ............................................................................................................................... 65 to +150C
Voltage on any pin with respect to VSS (except VDD and MCLR) .....................................................0.3V to VDD + 0.3V
Voltage on VDD with respect to VSS ................................................................................................................ 0 to +7.5V
Voltage on MCLR with respect to VSS (Note 2) .................................................................................................0 to +14V
Total power Dissipation (Note 1) ...............................................................................................................................1.0W
Maximum Current out of VSS pin ..........................................................................................................................300 mA
Maximum Current into VDD pin .............................................................................................................................250 mA
Input Clamp Current, IIK (VI<0 or VI> VDD) .......................................................................................................................20 mA
Output Clamp Current, IOK (Vo <0 or Vo>VDD) ................................................................................................................20 mA
Maximum Output Current sunk by any I/O pin ........................................................................................................25 mA
Maximum Output Current sourced by any I/O pin...................................................................................................25 mA
Maximum current sunk by PORTA, PORTB, and PORTE (combined) (Note 2) ...................................................200 mA
Maximum current sourced by PORTA, PORTB, and PORTE (combined) (Note 2) ..............................................200 mA
Maximum current sunk by PORTC and PORTD (combined) (Note 2)..................................................................200 mA
Maximum current sourced by PORTC and PORTD (combined) (Note 2).............................................................200 mA

   Note 1: Power dissipation is calculated as follows: PDIS = VDD x {IDD -  IOH} +  {(VDD-VOH) x IOH} + (VOl x IOL)
   Note 2: PORTD and PORTE are not implemented on the PIC16C641 and PIC16C642.

  NOTICE: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the
device. This is a stress rating only and functional operation of the device at those or any other conditions above those
indicated in the operation listings of this specification is not implied. Exposure to maximum rating conditions for
extended periods may affect device reliability.

TABLE 12-1: CROSS REFERENCE OF DEVICE SPECS FOR OSCILLATOR CONFIGURATIONS
                     AND FREQUENCIES OF OPERATION (COMMERCIAL DEVICES)

OSC  PIC16C641-04                 PIC16C641-10       PIC16C641-20             PIC16LC641-04            JW Devices
     PIC16C642-04                 PIC16C642-10       PIC16C642-20             PIC16LC642-04
     PIC16C661-04                 PIC16C661-10       PIC16C661-20             PIC16LC661-04
     PIC16C662-04                 PIC16C662-10       PIC16C662-20             PIC16LC662-04

RC VDD: 4.0V to 6.0V          VDD: 4.5V to 5.5V      VDD: 4.5V to 5.5V        VDD: 3.0V to 6.0V        VDD: 4.0V to 6.0V

     IDD: 5 mA max. @ 5.5V IDD: 2.7 mA typ. @ 5.5V IDD: 2.7 mA typ. @ 5.5V IDD: 2.0 mA typ. @ 3.0V IDD: 5 mA max. @ 5.5V

     IPD: 21 A max. @ 4.0V IPD: 1.5 A typ. @ 4.0V IPD: 1.5 A typ. @ 4.0V IPD: 0.9 A typ. @ 3.0V IPD: 21 A max. @ 4.0V

     Freq: 4.0 MHz max.       Freq: 4.0 MHz max.     Freq: 4.0 MHz max.       Freq: 4.0 MHz max.       Freq: 4.0 MHz Max.

XT VDD: 4.0V to 6.0V          VDD: 4.5V to 5.5V      VDD: 4.5V to 5.5V        VDD: 3.0V to 6.0V        VDD: 4.0V to 6.0V

     IDD: 5 mA max. @ 5.5V IDD: 2.7 mA typ. @ 5.5V IDD: 2.7 mA typ. @ 5.5V IDD: 2.0 mA typ. @ 3.0V IDD: 5 mA max. @ 5.5V

     IPD: 21 A max. @ 4.0V IPD: 1.5 A typ. @ 4.0V IPD: 1.5 A typ. @ 4.0V IPD: 0.9 A typ. @ 3.0V IPD: 21 A max. @ 4.0V

     Freq: 4.0 MHz max.       Freq: 4.0 MHz max.     Freq: 4.0 MHz max.       Freq: 4.0 MHz max.       Freq: 4.0 MHz max.

HS VDD: 4.5V to 5.5V          VDD: 4.5V to 5.5V      VDD: 4.5V to 5.5V        Do not use in HS mode    VDD: 4.5V to 5.5V
                                                                                                       IDD: 30 mA max. @ 5.5V
     IDD: 13.5 mA typ. @ 5.5V IDD: 30 mA max. @ 5.5V IDD: 30 mA max. @ 5.5V                            IPD: 1.5 A typ. @ 4.5V
                                                                                                       Freq: 10 MHz max.
     IPD: 1.5 A typ. @ 4.5V IPD: 1.5 A typ. @ 4.5V IPD: 1.5 A typ. @ 4.5V

     Freq: 4.0 MHz max.       Freq: 10 MHz max.      Freq: 20 MHz max.

LP VDD: 4.0V to 6.0V          Do not use in LP mode  Do not use in LP mode    VDD: 3.0V to 6.0V        VDD: 3.0V to 6.0V
                                                                              IDD: 48 A max. @        IDD: 48 A max. @
     IDD: 52.5 A typ. @
                                                                                      32 kHz, 3.0V             32 kHz, 3.0V
     32 kHz, 4.0V                                                             IPD: 5.0 A max. @ 3.0V  IPD: 5.0 A max. @ 3.0V
                                                                              Freq: 200 kHz max.       Freq: 200 kHz max.
     IPD: 0.9 A typ. @ 4.0V

     Freq: 200 kHz max.

     The shaded sections indicate oscillator selections which are tested for functionality, but not for MIN/MAX specifications. It is recommended that
     the user select the device type that ensures the specifications required.

1996 Microchip Technology Inc.                     Preliminary                                       DS30559A-page 91

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

12.1 DC Characteristics: PIC16C641/642/661/662-04 (Commercial, Industrial, Automotive)
                                           PIC16C641/642/661/662-10 (Commercial, Industrial, Automotive)
                                           PIC16C641/642/661/662-20 (Commercial, Industrial, Automotive)

                  Standard Operating Conditions (unless otherwise stated)

                  Operating temperature 40C  TA  +85C for industrial,
                                                   0C  TA  +70C commercial, and
                                                   40C  TA  +125C automotive

Param Sym         Characteristic                   Min Typ Max Units               Conditions
  No.

D001 VDD          Supply Voltage                   4.0   6.0 V XT, RC and LP osc configuration
D001A                                                    5.5 V HS osc configuration
                                                   4.5
D002* VDR                                                V Device in SLEEP mode
                  RAM Data Retention Voltage(1) 1.5

D003 VPOR         VDD start voltage to             VSS       V See section on Power-on Reset for
                  ensure internal Power-on                            details
                  Reset signal

D004* SVDD        VDD rise rate to ensure internal 0.05        V/ms See section on Power-on Reset for
                  Power-on Reset signal                                        details

D005 VBOR Brown-out Reset Voltage                  3.7 4.0 4.3 V BODEN configuration bit is clear
                                                   3.7 4.0 4.4 V Automotive

D010 IDD          Supply Current(2)                2.7 5 mA XT and RC osc configuration
                                                                                     FOSC = 4 MHz, VDD = 5.5V,
                                                                                     WDT disabled (4)

D010A                                              35 70 A LP osc configuration,

                                                                      PIC16C64X & PIC16C66X-04 only
                                                                      FOSC = 32 kHz, VDD = 4.0V,
                                                                      WDT disabled

D013                                                13.5 30 mA HS osc configuration
                                                                                     FOSC = 20 MHz, VDD = 5.5V,
                                                                                     WDT disabled

                  Module Differential Current (5)

D015 IBOR         Brown-out Reset Current          350 425 A BODEN bit is clear, VDD = 5.0V

D016 ICOMP        Comparator Current for               100 A VDD = 4.0V
                  each Comparator

D017 IVREF        VREF Current                         300 A VDD = 4.0V

D021 IWDT         WDT Current                      6.0 20 A VDD = 4.0V

                                                       25 A Automotive

D021 IPD          Power-down Current (3)            1.5 21 A VDD = 4.0V, WDT disabled
                                                    2.5 24 A Automotive

      * These parameters are characterized but not tested.
       Data in "Typ" column is at 5.0V, 25C, unless otherwise stated. These parameters are for design guidance only

         and are not tested.
Note 1: This is the limit to which VDD can be lowered in SLEEP mode without losing RAM data.

        2: The supply current is mainly a function of the operating voltage and frequency. Other factors such as I/O pin
            loading and switching rate, oscillator type, internal code execution pattern, and temperature also have an
            impact on the current consumption.
            The test conditions for all IDD measurements in active operation mode are:
            OSC1 = external square wave, from rail to rail; all I/O pins tri-statedTM, pulled to VDD,
            MCLR = VDD; WDT enabled/disabled as specified.

       3: The power-down current in SLEEP mode does not depend on the oscillator type. Power-down current is
            measured with the part in SLEEP mode, with all I/O pins in hi-impedance state and tied to VDD or VSS.

       4: For RC osc configuration, current through Rext is not included. The current through the resistor can be
            estimated by the formula Ir = VDD/2Rext (mA) with Rext in k.

        5: The  current is the additional current consumed when this peripheral is enabled. This current should be
            added to the base IDD or IPD measurement.

DS30559A-page 92                                   Preliminary                      1996 Microchip Technology Inc.
                                                PIC16C64X & PIC16C66X

12.2 DC Characteristics: PIC16LC641/642/661/662-04 (Commercial, Industrial)

               Standard Operating Conditions (unless otherwise stated)
               Operating temperature 40C  TA  +85C for industrial and

                                                0C  TA  +70C commercial

Param     Sym  Characteristic                   Min Typ Max Units          Conditions
  No.
       VDD     Supply Voltage                   3.0 6.0 V XT, RC, and LP osc configuration
D001   VDR
D002*          RAM Data Retention               1.5 V Device in SLEEP mode
               Voltage (1)

D003 VPOR      VDD start voltage to             VSS       V See section on Power-on Reset for
               ensure internal Power-on                            details
               Reset signal

D004* SVDD     VDD rise rate to ensure internal 0.05        V/ms See section on Power-on Reset for
               Power-on Reset signal                                        details
D005 VBOR
D010 IDD       Brown-out Reset Voltage          3.7 4.0 4.3 V BODEN configuration bit is clear

               Supply Current (2)                2.0 3.8 mA XT and RC osc configuration
                                                                                  FOSC = 4.0 MHz, VDD = 3.0V,
                                                                                  WDT disabled (4)

D010A                                           22.5 48 A LP osc configuration
                                                                                  FOSC = 32 kHz, VDD = 3.0V,
                                                                                  WDT disabled

               Module Differential Current (5)

D015 IBOR      Brown-out Reset Current          350 425 A BODEN bit is clear, VDD = 5.0V

D016 ICOMP     Comparator Current for              100 A VDD = 3.0V
               each Comparator

D017 IVREF     VREF Current                        300 A VDD = 3.0V

D021 IWDT      WDT Current                      6.0 20 A VDD = 3.0V

D021 IPD       Power-down Current (3)            0.9 5 A VDD = 3.0V, WDT disabled

      * These parameters are characterized but not tested.
       Data in "Typ" column is at 5.0V, 25C, unless otherwise stated. These parameters are for design guidance only

         and are not tested.
Note 1: This is the limit to which VDD can be lowered in SLEEP mode without losing RAM data.

        2: The supply current is mainly a function of the operating voltage and frequency. Other factors such as I/O pin
            loading and switching rate, oscillator type, internal code execution pattern, and temperature also have an
            impact on the current consumption.
            The test conditions for all IDD measurements in active operation mode are:
            OSC1=external square wave, from rail to rail; all I/O pins tristated, pulled to VDD,
            MCLR = VDD; WDT enabled/disabled as specified.

       3: The power-down current in SLEEP mode does not depend on the oscillator type. Power-down current is
            measured with the part in SLEEP mode, with all I/O pins in hi-impedance state and tied to VDD or VSS.

       4: For RC osc configuration, current through Rext is not included. The current through the resistor can be
            estimated by the formula Ir = VDD/2Rext (mA) with Rext in k.

        5: The  current is the additional current consumed when this peripheral is enabled. This current should be
            added to the base IDD or IPD measurement.

1996 Microchip Technology Inc.                Preliminary                  DS30559A-page 93
PIC16C64X & PIC16C66X

12.3 DC Characteristics: PIC16C641/661 (Commercial, Industrial, Automotive)
                                           PIC16C642/662 (Commercial, Industrial, Automotive)
                                           PIC16LC641/661 (Commercial, Industrial)
                                           PIC16LC642/662 (Commercial, Industrial)

            Standard Operating Conditions (unless otherwise stated)

            Operating temperature 40C  TA  +85C for industrial,
                                             0C  TA  +70C commercial, and
                                             40C  TA  +125C automotive

            Operating voltage VDD range as described in DC spec Section 12.1 and 12.2

Param  Sym         Characteristic       Min Typ Max Unit                               Conditions
  No.
                                                

       VIL Input Low Voltage

            I/O ports

D030        with TTL buffer             VSS      - 0.15VDD V For entire VDD range

                                        VSS      -   0.8V    V 4.5V  VDD  5.5V

D031        with Schmitt Trigger input  VSS      -   0.2VDD  V

D032        MCLR, RA4/T0CKI,OSC1 (in    Vss      -   0.2VDD  V (1)
            RC mode)

D033        OSC1 (XT and HS modes)      Vss      -   0.3VDD  V

            OSC1 (LP modes)             Vss      - 0.6VDD-1.0 V

       VIH Input High Voltage

            I/O ports

D040        with TTL buffer             2.0      -   VDD     V

D041        with Schmitt Trigger input  0.25VDD -    VDD     V

                                        to 0.8V

D042        MCLR RA4/T0CKI              0.8VDD -     VDD     V

D043        OSC1 (XT, HS, LP modes)     0.7VDD -     VDD     V
D043A
            OSC1 (RC mode)              0.9VDD -     -       V (1)

D070 IPURB PORTB weak pull-up current   50 200       400     A VDD = 5.0V, VPIN = VSS

       IIL  Input Leakage Current(2,3)

            I/O ports (Except PORTA)                 1.0    A VSS  VPIN  VDD,

                                        -        -

                                                                 pin at hi-impedance

D060        PORTA                       -        -   0.5    A Vss  VPIN  VDD,

                                                                 pin at hi-impedance

D061        RA4/T0CKI                   -        -   1.0    A Vss  VPIN  VDD

D063        OSC1, MCLR                  -        -   5.0    A Vss  VPIN  VDD, XT, HS and LP

                                                                 osc configuration

       VOL Output Low Voltage

D080        I/O ports                   -        -   0.6     V IOL = 8.5 mA, VDD = 4.5V,

                                                                 -40 to +85C

                                        -        -   0.6     V IOL = 7.0 MA, VDD = 4.5V, +125C

D083        OSC2/CLKOUT                 -        -   0.6     V IOL = 1.6 mA, VDD = 4.5V,

                                                                 -40 to +85C

            (RC only)                   -        -   0.6     V IOL = 1.2 mA, VDD = 4.5V, +125C

      * These parameters are characterized but not tested.
       Data in "Typ" column is at 5.0V, 25C unless otherwise stated. These parameters are for design guidance only and

         are not tested.
Note 1: In RC oscillator configuration, the OSC1 pin is a Schmitt Trigger input. It is not recommended that the

            PIC16C64X & PIC16C66X be driven with external clock in RC mode.
        2: The leakage current on the MCLR pin is strongly dependent on applied voltage level. The specified levels repre-

            sent normal operating conditions. Higher leakage current may be measured at different input voltages.
       3: Negative current is defined as coming out of the pin.

DS30559A-page 94                        Preliminary               1996 Microchip Technology Inc.
                                         PIC16C64X & PIC16C66X

            Standard Operating Conditions (unless otherwise stated)

            Operating temperature 40C  TA  +85C for industrial,
                                             0C  TA  +70C commercial, and
                                             40C  TA  +125C automotive

            Operating voltage VDD range as described in DC spec Section 12.1 and 12.2

Param  Sym  Characteristic               Min Typ Max Unit                              Conditions
  No.
                                                               

       VOH Output High Voltage (3)

D090        I/O ports (Except RA4)       VDD-0.7 -                 -    V IOH = -3.0 mA, VDD = 4.5V,
D092
                                                                            -40 to +85C

                                         VDD-0.7 -                 -    V IOH = -2.5 mA,

                                                                            VDD = 4.5V, +125C

            OSC2/CLKOUT                  VDD-0.7 -                 -    V IOH = -1.3 mA, VDD=4.5V,

                                                                            -40 to +85C

                                         VDD-0.7 -                 -    V IOH = -1.0 mA,

            (RC only)                                                       VDD = 4.5V, +125C

            Capacitive Loading Specs

            on Output Pins

D100 COSC2 OSC2 pin                      -                      -  15   pF In XT, HS and LP modes when

                                                                            external clock used to drive OSC1.

D101 CIO All I/O pins/OSC2 (in RC mode)  -                      -  50   pF

* These parameters are characterized but not tested.
Data in "Typ" column is at 5.0V, 25C unless otherwise stated. These parameters are for design guidance only and

   are not tested.

Note 1: In RC oscillator configuration, the OSC1 pin is a Schmitt Trigger input. It is not recommended that the

       PIC16C64X & PIC16C66X be driven with external clock in RC mode.

      2: The leakage current on the MCLR pin is strongly dependent on applied voltage level. The specified levels repre-

       sent normal operating conditions. Higher leakage current may be measured at different input voltages.

      3: Negative current is defined as coming out of the pin.

1996 Microchip Technology Inc.         Preliminary                                   DS30559A-page 95
PIC16C64X & PIC16C66X

TABLE 12-2: COMPARATOR SPECIFICATIONS

Operating Conditions: 3.0V < VDD < 6.0V, -40C < TA < +125C, unless otherwise stated. Current consumption is spec-
ified in Table 12-1.

       Characteristics      Sym  Min     Typ     Max        Units                        Comments

Input offset voltage             -       5.0    10       mV

Input common mode voltage*       0       -       VDD - 1.5  V

CMRR*                            35      -       -          db

Response Time(1)*                -       150     400        ns PIC16C64X/66X
                                                            ns PIC16LC64X/66X
                                                 600

Comparator Mode Change to        -       -       10         s
Output Valid*

      * These parameters are characterized but not tested.
Note 1: Response time measured with one comparator input at (VDD - 1.5)/2 while the other input transitions from

            VSS to VDD.

TABLE 12-3: VOLTAGE REFERENCE SPECIFICATIONS

Operating Conditions: 3.0V < VDD < 6.0V, -40C < TA < +125C, unless otherwise stated. Current consumption is spec-
ified in Table 12-1.

       Characteristics      Sym     Min     Typ  Max        Units                        Comments

Resolution                       VDD/24       -  VDD/32     LSb
Absolute Accuracy                                  1/4      LSb Low Range (VRR = 1)
                                     -        -    1/2      LSb High Range (VRR = 0)
Unit Resistor Value (R)*                             -
Settling Time(1)*                    -        -               Figure 8-2
                                                    10       s
                                     -      2k

                                     -        -

* These parameters are characterized but not tested.
Note 1: Settling time measured while VRR = 1 and VR<3:0> transitions from 0000 to 1111.

DS30559A-page 96                 Preliminary                     1996 Microchip Technology Inc.
                                                              PIC16C64X & PIC16C66X

12.4 Timing Parameter Symbology

The timing parameter symbols have been created with one of the following formats:

1. TppS2ppS                                                   T Time
2. TppS
T                                                             osc OSC1
F Frequency                                                   t0 T0CKI
Lowercase subscripts (pp) and their meanings:
pp                                                            P Period
ck CLKOUT                                                     R Rise
io I/O port                                                   V Valid
mc MCLR                                                       Z Hi-Impedance
Uppercase letters and their meanings:
S
F Fall
H High
I Invalid (Hi-impedance)
L Low

FIGURE 12-1: LOAD CONDITIONS                                                    Load condition 2
                                 Load condition 1
                                                   VDD/2

                                  RL

Pin                                                       CL               Pin           CL
                                                                                   VSS
                                  VSS
RL =  464
CL =  50 pF                           for all pins except OSC2
      15 pF                           for OSC2 output

1996 Microchip Technology Inc.                              Preliminary                         DS30559A-page 97
PIC16C64X & PIC16C66X

12.5 Timing Diagrams and Specifications
FIGURE 12-2: EXTERNAL CLOCK TIMING

                         Q4  Q1              Q2            Q3         Q4     Q1
OSC1
                             1                         3       3      4   4
CLKOUT
                                                    2

TABLE 12-4: EXTERNAL CLOCK TIMING REQUIREMENTS

Param  Sym                   Characteristic  Min Typ Max Units               Conditions
  No.

       Fosc External CLKIN Frequency(1) DC             --         4 MHz XT and RC osc mode,
                                                                                   VDD = 5.0V

                                             DC        --      20 MHz HS osc mode

                                             DC        --      200 kHz LP osc mode

                  Oscillator Frequency (1)   DC        --         4 MHz RC osc mode, VDD = 5.0V

                                             0.1       --         4 MHz XT osc mode

                                                 4     --      20 MHz HS osc mode

                                                 5            200 kHz LP osc mode

1      Tosc External CLKIN Period(1)         250       --      -- ns XT and RC osc mode

                                             50        --      -- ns HS osc mode

                                                 5     --      -- s      LP osc mode
                                                               -- ns      RC osc mode
                  Oscillator Period(1)       250       --

                                             250       -- 10,000 ns XT osc mode

                                             50        --      250 ns HS osc mode

                                                 5     --      -- s LP osc mode

2      TCY Instruction Cycle Time(1)         200       --      DC ns TCY = FOSC/4

3* TosL, External Clock in (OSC1)            100       --      -- ns      XT osc mode
          TosH High or Low Time                                -- s      LP osc mode
                                             2.5       --

                                             15        --      -- ns HS osc mode

4* TosR, External Clock in (OSC1)            --        --      25 ns XT osc mode
          TosF Rise or Fall Time
                                             --        --      50 ns LP osc mode

                                             --        --      15 ns HS osc mode

      * These parameters are characterized but not tested.
       Data in "Typ" column is at 5.0V, 25C unless otherwise stated. These parameters are for design guidance only

         and are not tested.
Note 1: Instruction cycle period (TCY) equals four times the input oscillator time-base period. All specified values are

            based on characterization data for that particular oscillator type under standard operating conditions with
            the device executing code. Exceeding these specified limits may result in an unstable oscillator operation
            and/or higher than expected current consumption. All devices are tested to operate at "min." values with an
            external clock applied to the OSC1 pin.
            When an external clock input is used, the "Max." cycle time limit is "DC" (no clock) for all devices.

DS30559A-page 98                             Preliminary                   1996 Microchip Technology Inc.
                                                    PIC16C64X & PIC16C66X

FIGURE 12-3: CLKOUT AND I/O TIMING

                                 Q4             Q1                 Q2                       Q3
    OSC1                                                                       11
                                     10                   22
CLKOUT                                                    23                    12
                                      13                                                 16
                                            14      19 18
                                                                                        new value
I/O Pin                                    17                       15
(input)
               old value
I/O Pin
(output)

                                            20, 21

Note: See Figure 12-1 for load conditions.

TABLE 12-5: CLKOUT AND I/O TIMING REQUIREMENTS

Parameter Sym  Characteristic                                   Min      Typ   Max  Units Conditions
    No.

10* TosH2ckL OSC1 to CLKOUT                                     --       75    200  ns                             Note 1
                                                                                                                   Note 1
11* TosH2ckH OSC1 to CLKOUT                                     --       75    200  ns                             Note 1
                                                                                                                   Note 1
12* TckR       CLKOUT rise time                                 --       35    100  ns                             Note 1
                                                                                                                   Note 1
13* TckF       CLKOUT fall time                                 --       35    100  ns                             Note 1

14* TckL2ioV CLKOUT  to Port out valid                          --       -- 0.5TCY + 20 ns

15* TioV2ckH Port in valid before CLKOUT                        TOSC + 200 --  --   ns

16* TckH2ioI Port in hold after CLKOUT                          0        --    --   ns

17* TosH2ioV OSC1 (Q1 cycle) to                                 --       50    150  ns
                            Port out valid

18* TosH2ioI OSC1 (Q2 cycle) to                 PIC16C64X/66X   100      --    --   ns

               Port input invalid (I/O in PIC16LC64X/66X        200      --    --   ns
               hold time)

19* TioV2osH Port input valid to OSC1 (I/O in setup time)       0        --    --   ns

20* TioR       Port output rise time            PIC16C64X/66X   --       10    40   ns

                                                PIC16LC64X/66X  --       --    80   ns

21* TioF       Port output fall time            PIC16C64X/66X   --       10    40   ns

                                                PIC16LC64X/66X  --       --    80   ns

22* Tinp       INT pin high or low time                         TCY      --    --   ns

23* Trbp       RB7:RB4 change INT high or low time              TCY      --    --   ns

         *  These parameters are characterized but not tested.
            Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance
            only and are not tested.
            These parameters are asynchronous events not related to any internal clock edges.
Note 1:     Measurements are taken in RC Mode where CLKOUT output is 4 x TOSC.

1996 Microchip Technology Inc.                Preliminary                         DS30559A-page 99
PIC16C64X & PIC16C66X

FIGURE 12-4: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER, AND POWER-UP
                     TIMER TIMING

        VDD

       MCLR        33                                                 30
                                  32
      Internal                                                                                                           36
         POR                                                     34

        PWRT                                                                                    31
     Timeout                                                                                                         34

         OSC
     Timeout

      Internal
      RESET
      Parity
      Error
      Reset

   Watchdog
        Timer

      RESET

     I/O Pins

FIGURE 12-5: BROWN-OUT RESET TIMING

        VDD                                                 BVDD
                                                                                    35

TABLE 12-6: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER, POWER-UP TIMER,
                     AND BROWN-OUT RESET REQUIREMENTS

Parameter        Sym Characteristic                         Min  Typ  Max Units             Conditions
    No.

   30           TmcL MCLR Pulse Width (low)                 2    --   --                s VDD = 5V, -40C to +125C

   31*           Twdt Watchdog Timer Time-out Period        7    18   33 ms VDD = 5V, -40C to +125C

                   (No Prescaler)

   32            Tost Oscillation Start-up Timer Period     -- 1024TOSC --              -- TOSC = OSC1 period

   33*          Tpwrt Power up Timer Period                 28   72   132 ms VDD = 5V, -40C to +125C

   34            TIOZ I/O Hi-impedance from MCLR Low --          --   2.1 s

                   or Watchdog Timer Reset

   35            TBOR Brown-out Reset pulse width           100  --   --                s VDD  BVDD (D005)

   36            TPER Parity Error Reset                    --   TBD  --                s

*       These parameters are characterized but not tested.

        Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not

        tested.

DS30559A-page 100                                  Preliminary                           1996 Microchip Technology Inc.
                                                      PIC16C64X & PIC16C66X

FIGURE 12-6: TIMER0 CLOCK TIMING
              RA4/T0CKI

                                                  40           41

                                                      42

       TMR0

TABLE 12-7: TIMER0 CLOCK REQUIREMENTS

Param  Sym                        Characteristic               Min  Typ Max Units Conditions
  No.

40* Tt0H T0CKI High Pulse Width No Prescaler              0.5TCY + 20 -- -- ns

                                  With Prescaler               10   -- -- ns

41* Tt0L T0CKI Low Pulse Width No Prescaler               0.5TCY + 20 -- -- ns

                                  With Prescaler               10   -- -- ns

42* Tt0P T0CKI Period                                     TCY + 40  -- -- ns N = prescale
                                                              N                              value (1, 2, 4, ...,
                                                                                             256)

* These parameters are characterized but not tested.
Data in "Typ" column is at 5.0V, 25C unless otherwise stated. These parameters are for design guidance only

   and are not tested.

1996 Microchip Technology Inc.                  Preliminary                   DS30559A-page 101
PIC16C64X & PIC16C66X

FIGURE 12-7: PARALLEL SLAVE PORT TIMING (PIC16C661 AND PIC16C662)

             RE2/CS

     RE0/RD

     RE1/WR

RD7:RD0                              65
                   64
                                                                       62
                                                                                  63

     Note: Refer to Figure 12-1 for load conditions

TABLE 12-8: PARALLEL SLAVE PORT REQUIREMENTS (PIC16C661 AND PIC16C662)

Parameter    Sym Characteristic                                        Min Typ Max Units Conditions
    No.

62         TdtV2wrH Data in valid before WR or CS (setup time)         20 -- -- ns

63*        TwrH2dtI WR or CS to datain invalid (hold time) PIC16C66X  20 -- -- ns

                                                     PIC16LC66X        35 -- -- ns

64         TrdL2dtV RD and CS to dataout valid                        -- -- 80 ns

65         TrdH2dtI RD or CS to dataout invalid                       10 -- 30 ns

Data in "Typ" column is at 5V, 25C unless otherwise stated. These parameters are for design guidance only and are not
       tested.

DS30559A-page 102                                    Preliminary       1996 Microchip Technology Inc.
                            PIC16C64X & PIC16C66X

13.0 DEVICE CHARACTERIZATION
         INFORMATION

NOT AVAILABLE AT THIS TIME.

1996 Microchip Technology Inc.  Preliminary                                      DS30559A-page 103

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

NOTES:

DS30559A-page 104  Preliminary   1996 Microchip Technology Inc.
                            PIC16C64X & PIC16C66X

14.0 PACKAGING INFORMATION

Package Type: 28-Lead Skinny Plastic Dual In-Line (SP) - 300 mil

Pin No. 1                                                  E1 E                                             C
Indicator
Area                              D                                                    eA
                                                          L                            eB
                      S
   Base                                           e1 A1A2A                         B2  B1
   Plane                          D1
Seating
Plane
  Detail A

                                                                                   B3          B

                                                                                       Detail A

                                  Package Group: Plastic Dual In-Line (PLA)

                                  Millimeters                                          Inches

Symbol    Min                      Max          Notes             Min                   Max        Notes

    A   3.632                     4.572        Typical           0.143                 0.180      Typical
   A1   0.381                        --        4 places          0.015                    --      4 places
   A2   3.175                                  4 places          0.125                            4 places
    B   0.406                     3.556        Typical           0.016                 0.140      Typical
   B1   1.016                     0.559                          0.040                 0.022
   B2   0.762                     1.651          BSC             0.030                 0.065        BSC
   B3   0.203                     1.016                          0.008                 0.040
    C   0.203                     0.508        Typical           0.008                 0.020      Typical
    D   34.163                    0.331          BSC             1.385                 0.013        BSC
   D1   33.020                    35.179                         1.300                 1.395
    E   7.874                     33.020                         0.310                 1.300
   E1   7.112                     8.382                          0.280                 0.330
   e1   2.540                     7.493                          0.100                 0.295
   eA   7.874                     2.540                          0.310                 0.100
   eB   8.128                     7.874                          0.320                 0.310
    L   3.175                     9.906                          0.125                 0.390
    S   0.584                     3.683                          0.023                 0.145
                                  1.220                                                0.048

1996 Microchip Technology Inc.               Preliminary                                        DS30559A-page 105

                                  This document was created with FrameMaker 4 0 4
PIC16C64X & PIC16C66X

Package Type: 28-Lead Plastic Small Outline (SO) - Wide, 300 mil Body

                          B                                      e                               h x 45

           Pin No. 1                                                      EH                                         C
           Indicator                                                                                      L
           Area
        Chamfer
        h x 45

                                                              D         Base
                                                                        Plane
           CP
Seating
Plane

                    A1 A

                             Package Group: Plastic SOIC (SO)

                             Millimeters                                                         Inches

Symbol               Min     Max                                 Notes         Min                Max     Notes
                                                                                                          BSC
                      0        8                               BSC             0                 8
    A              2.362     2.642                                             0.093             0.104
   A1              0.101     0.300                                             0.004             0.012
    B              0.355     0.483                                             0.014             0.019
    C              0.241     0.318                                             0.009             0.013
    D              17.703    18.085                                            0.697             0.712
    E              7.416     7.595                                             0.292             0.299
    e              1.270     1.270                                             0.050             0.050
    H              10.007    10.643                                            0.394             0.419
    h              0.381     0.762                                             0.015             0.030
    L              0.406     1.143                                             0.016             0.045
   CP                        0.102                                                               0.004
                      --                                                         --

DS30559A-page 106                                                Preliminary                      1996 Microchip Technology Inc.
                            PIC16C64X & PIC16C66X

Package Type: 28-Lead Ceramic Side Brazed Dual In-Line with Window (JW) (300 mil)

                                                                                       E1 E                             C
                                                                             S1
                                                                                                      eA
                                                                                                      eB

    Pin No. 1
    Indicator Area

                                                             D

                  S
Base
Plane

Seating                                                                         L       A3 A2
Plane                                                                               A1 A

     B1                                                                     e1
                   B              D1

                      Package Group: Ceramic Side Brazed Dual In-Line (CER)

                                  Millimeters                                                 Inches

Symbol                  Min        Max                          Notes         Min             Max     Notes

                         0         10                         Typical        0              10
    A                 3.937       5.030                         Typical      0.155            0.198
   A1                 1.016       1.524                                      0.040            0.060
   A2                 2.921       3.506                          BSC         0.115            0.138
   A3                 1.930       2.388                         Typical      0.076            0.094
    B                 0.406       0.508                                      0.016            0.020
   B1                 1.219       1.321                          BSC         0.048            0.052
    C                 0.228       0.305                                      0.009            0.012
    D                 35.204      35.916                                     1.386            1.414
   D1                 32.893      33.147                                     1.295            1.305
    E                 7.620       8.128                                      0.300            0.320
   E1                 7.366       7.620                                      0.290            0.300
   e1                 2.413       2.667                                      0.095            0.105
   eA                 7.366       7.874                                      0.290            0.310
   eB                 7.594       8.179                                      0.299            0.322
    L                 3.302       4.064                                      0.130            0.160
    S                 1.143       1.397                                      0.045            0.055
   S1                 0.533       0.737                                      0.021            0.029

1996 Microchip Technology Inc.                                Preliminary                           DS30559A-page 107
PIC16C64X & PIC16C66X

Package Type: 40-Lead Ceramic Dual In-Line with Window (JW) - (600 mil)

                                                  E1 E                                                   C
                                                                    
                                                                                    eA
Pin No. 1                                                                           eB
Indicator
Area

Base               S       D
                                              S1

Plane

Seating                                           L
Plane

           B1                           e1           A1A3 A A2
           B
                           D1

                           Package Group: Ceramic CERDIP Dual In-Line (CDP)

                           Millimeters                                       Inches

Symbol             Min     Max          Notes        Min                     Max      Notes

                      0     10        Typical        0                     10    Typical
    A              4.318   5.715        Typical      0.170                   0.225   Typical
   A1              0.381   1.778                     0.015                   0.070
   A2              3.810   4.699         BSC         0.150                   0.185    BSC
   A3              3.810   4.445                     0.150                   0.175    BSC
    B              0.355   0.585         BSC         0.014                   0.023   Typical
   B1              1.270   1.651        Typical      0.050                   0.065
    C              0.203   0.381                     0.008                   0.015
    D              51.435  52.705                    2.025                   2.075
   D1              48.260  48.260                    1.900                   1.900
    E              15.240  15.875                    0.600                   0.625
   E1              12.954  15.240                    0.510                   0.600
   e1              2.540   2.540                     0.100                   0.100
   eA              14.986  16.002                    0.590                   0.630
   eB              15.240  18.034                    0.600                   0.710
    L              3.175   3.810                     0.125                   0.150
    S              1.016   2.286                     0.040                   0.090
   S1              0.381   1.778                     0.015                   0.070

DS30559A-page 108                       Preliminary                   1996 Microchip Technology Inc.
                            PIC16C64X & PIC16C66X

Package Type: 40-Lead Plastic Dual In-Line (P) - 600 mil

                                                        E1 E                                               C

Pin No. 1                                                                            eA
Indicator                                                                            eB
Area
                                  D
                     S                              S1
   Base
   Plane                                                L
  Seating
  Plane                                        e1          A1A2 A

            B1                    D1
              B

                                  Package Group: Plastic Dual In-Line (PLA)

                                  Millimeters                                Inches

Symbol    Min                      Max         Notes                Min       Max     Notes

    A      --                     5.080        Typical               --      0.200   Typical
   A1   0.381                        --        Typical             0.015        --   Typical
   A2   3.175                                                      0.125
    B   0.355                     4.064         BSC                0.014     0.160    BSC
   B1   1.270                     0.559                            0.050     0.022
    C   0.203                     1.778        Typical             0.008     0.070   Typical
    D   51.181                    0.381         BSC                2.015     0.015    BSC
   D1   48.260                    52.197                           1.900     2.055
    E   15.240                    48.260                           0.600     1.900
   E1   13.462                    15.875                           0.530     0.625
   e1   2.489                     13.970                           0.098     0.550
   eA   15.240                    2.591                            0.600     0.102
   eB   15.748                    15.240                           0.620     0.600
    L   2.921                     17.272                           0.115     0.680
    S   1.270                     3.683                            0.050     0.145
   S1   0.508                                                      0.020
                                     --                                         --
                                     --                                         --

1996 Microchip Technology Inc.               Preliminary                           DS30559A-page 109
PIC16C64X & PIC16C66X

Package Type: 44-Lead Plastic Leaded Chip Carrier (L) - Square

                           D/2                                                                   0.812/0.661  N Pics
                 D                                                                               .032/.026
        0.177                                        1.27
        .007 S B D-E S                               .050                                   -H-  0.177
                                                   2 Sides