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

产品描述

搜索

PIC16C64AT-10E-L

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

器件描述

8-bit Microcontrollers - MCU 3.5KB 128 RAM 33 I/O

参数
产品属性属性值
Product AttributeAttribute Value
制造商:
Manufacturer:
Microchip
产品种类:
Product Category:
8-bit Microcontrollers - MCU
RoHS:YES
安装风格:
Mounting Style:
SMD/SMT
封装 / 箱体:
Package / Case:
PLCC-44
系列:
Series:
PIC16(L)C6x
Core:PIC16
Data Bus Width:8 bit
Maximum Clock Frequency:20 MHz
Program Memory Size:3.5 kB
Data RAM Size:128 B
ADC Resolution:No ADC
Number of I/Os:33 I/O
工作电源电压:
Operating Supply Voltage:
2.5 V to 6 V
最小工作温度:
Minimum Operating Temperature:
- 40 C
最大工作温度:
Maximum Operating Temperature:
+ 125 C
接口类型:
Interface Type:
I2C, SPI
封装:
Packaging:
Reel
高度:
Height:
3.87 mm
长度:
Length:
16.59 mm
产品:
Product:
MCU
Program Memory Type:EPROM
宽度:
Width:
16.59 mm
商标:
Brand:
Microchip Technology
Data ROM Size:128 B
Data ROM Type:EPROM
Moisture Sensitive:Yes
Number of Timers/Counters:3 Timer
Processor Series:PIC16
工厂包装数量:
Factory Pack Quantity:
500
电源电压-最大:
Supply Voltage - Max:
6 V
电源电压-最小:
Supply Voltage - Min:
4 V
商标名:
Tradename:
PIC
单位重量:
Unit Weight:
0.084185 oz

PIC16C64AT-10E-L器件文档内容

                                                                                               PIC16C6X

                                     8-Bit CMOS                        Microcontrollers

Devices included in this data sheet:                                             •  Low-power, high-speed CMOS EPROM/ROM

   •  PIC16C61                 •     PIC16C64A                                      technology

                                                                                 •  Fully static design

   •  PIC16C62                 •     PIC16CR64                                   •  Wide operating voltage range: 2.5V to 6.0V

   •  PIC16C62A                •     PIC16C65                                    •  Commercial, Industrial, and Extended

   •  PIC16CR62                •     PIC16C65A                                      temperature ranges

   •  PIC16C63                 •     PIC16CR65                                   •  Low-power consumption:

   •  PIC16CR63                •     PIC16C66                                                   < 2 mA @ 5V, 4 MHz

                                                                                                15 A typical @ 3V, 32 kHz

   •  PIC16C64                 •     PIC16C67                                                   < 1 A typical standby current

PIC16C6X Microcontroller Core Features:                                          PIC16C6X Peripheral Features:

•     High performance RISC CPU                                                  •  Timer0: 8-bit timer/counter with 8-bit prescaler

•     Only 35 single word instructions to learn                                  •  Timer1: 16-bit timer/counter with prescaler,

•     All single cycle instructions except for program                              can be incremented during sleep via

      branches which are two-cycle                                                  external crystal/clock

•     Operating speed: DC - 20 MHz clock input                                   •  Timer2: 8-bit timer/counter with 8-bit period

                            DC - 200 ns instruction cycle                           register, prescaler and postscaler

•     Interrupt capability                                                       •  Capture/Compare/PWM (CCP) module(s)

•     Eight level deep hardware stack                                            •  Capture is 16-bit, max resolution is 12.5 ns,

•     Direct, indirect, and relative addressing modes                               Compare is 16-bit, max resolution is 200 ns,

•     Power-on Reset (POR)                                                          PWM max resolution is 10-bit.

•     Power-up Timer (PWRT) and                                                  •  Synchronous Serial Port (SSP) with SPI and I2C

      Oscillator Start-up Timer (OST)                                            •  Universal Synchronous Asynchronous Receiver

•     Watchdog Timer (WDT) with its own on-chip RC                                  Transmitter (USART/SCI)

      oscillator for reliable operation                                          •  Parallel Slave Port (PSP) 8-bits wide, with

•     Programmable code-protection                                                  external RD, WR and CS controls

•     Power saving SLEEP mode                                                    •  Brown-out detection circuitry for

•     Selectable oscillator options                                                 Brown-out Reset (BOR)

      PIC16C6X Features     61           62    62A    R62    63        R63          64  64A    R64    65        65A       R65       66        67

Program Memory              1K           2K    2K     —      4K        —         2K     2K     —      4K        4K        —         8K        8K

(EPROM) x 14

(ROM) x 14                  —            —     —      2K     —         4K           —   —      2K     —         —         4K        —         —

Data Memory (Bytes) x 8     36           128   128    128    192       192       128    128    128    192       192       192       368       368

I/O Pins                    13           22    22     22     22        22           33  33     33     33        33        33        22        33

Parallel Slave Port         —            —     —      —      —         —         Yes    Yes    Yes    Yes       Yes       Yes       —         Yes

Capture/Compare/PWM         —            1     1      1      2         2            1   1       1        2      2         2         2         2

Module(s)

Timer Modules               1            3     3      3      3         3            3   3       3        3      3         3         3         3

Serial Communication        —            SPI/  SPI/   SPI/   SPI/I2C,  SPI/I2C,  SPI/   SPI/   SPI/   SPI/I2C,  SPI/I2C,  SPI/I2C,  SPI/I2C,  SPI/I2C,

                                         I2C   I2C    I2C    USART     USART     I2C    I2C    I2C    USART     USART     USART     USART     USART

In-Circuit Serial           Yes          Yes   Yes    Yes    Yes       Yes       Yes    Yes    Yes    Yes       Yes       Yes       Yes       Yes

Programming

Brown-out Reset             —            —     Yes    Yes    Yes       Yes          —   Yes    Yes    —         Yes       Yes       Yes       Yes

Interrupt Sources           3            7     7      7      10        10           8   8       8     11        11        11        10        11

Sink/Source Current (mA)    25/20    25/25     25/25  25/25  25/25     25/25     25/25  25/25  25/25  25/25     25/25     25/25     25/25     25/25

 1997-2013 Microchip Technology Inc.                                                                                          DS30234E-page         1
PIC16C6X

Pin Diagrams

PDIP, SOIC,              Windowed       CERDIP                              SDIP, SOIC, SSOP, Windowed CERDIP (300 mil)

                 RA2             1      18           RA1                         MCLR/VPP     1                  28       RB7

                 RA3             2      17           RA0                         RA0          2                  27       RB6

RA4/T0CKI                        3      16           OSC1/CLKIN                  RA1          3                  26       RB5

                                                                                 RA2          4                  25       RB4

MCLR/VPP                         4      15           OSC2/CLKOUT                 RA3          5                  24       RB3

                 VSS             5      14           VDD                         RA4/T0CKI    6                  23       RB2

RB0/INT                          6      13           RB7                         RA5/SS       7                  22       RB1

                 RB1             7      12           RB6                         VSS          8                  21       RB0/INT

                                                                                OSC1/CLKIN    9                  20       VDD

                 RB2             8      11           RB5                        OSC2/CLKOUT   10                 19       VSS

                 RB3             9      10           RB4                    RC0/T1OSI/T1CKI   11                 18       RC7

                                                                                 RC1/T1OSO    12                 17       RC6

                                 PIC16C61                                        RC2/CCP1     13                 16       RC5/SDO

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

                                                                                                  PIC16C62

SDIP, SOIC,           SSOP,         Windowed      CERDIP (300         mil)  SDIP, SOIC,      Windowed         CERDIP  (300 mil)

MCLR/VPP                     1               28      RB7                         MCLR/VPP     1                  28       RB7

RA0                          2               27      RB6                         RA0          2                  27       RB6

RA1                          3               26      RB5                         RA1          3                  26       RB5

RA2                          4               25      RB4                         RA2          4                  25       RB4

RA3                          5               24      RB3                         RA3          5                  24       RB3

RA4/T0CKI                    6               23      RB2                         RA4/T0CKI    6                  23       RB2

RA5/SS                       7               22      RB1                         RA5/SS       7                  22       RB1

                 VSS         8               21      RB0/INT                     VSS          8                  21       RB0/INT

OSC1/CLKIN                   9               20      VDD                        OSC1/CLKIN    9                  20       VDD

OSC2/CLKOUT                  10              19      VSS                        OSC2/CLKOUT   10                 19       VSS

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

RC1/T1OSI                    12              17      RC6                    RC1/T1OSI/CCP2    12                 17       RC6/TX/CK

RC2/CCP1                     13              16      RC5/SDO                     RC2/CCP1     13                 16       RC5/SDO

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

                                PIC16C62A                                                         PIC16C63

                                PIC16CR62                                                         PIC16CR63

                                                                                                  PIC16C66

                                                          PDIP,       Windowed CERDIP

MCLR/VPP                 1          40  RB7               MCLR/VPP    1     40   RB7              MCLR/VPP    1       40           RB7

RA0                      2          39  RB6               RA0         2     39   RB6              RA0         2       39           RB6

RA1                      3          38  RB5               RA1         3     38   RB5              RA1         3       38           RB5

RA2                      4          37  RB4               RA2         4     37   RB4              RA2         4       37           RB4

RA3                      5          36  RB3               RA3         5     36   RB3              RA3         5       36           RB3

RA4/T0CKI                6          35  RB2               RA4/T0CKI   6     35   RB2              RA4/T0CKI   6       35           RB2

RA5/SS                   7          34  RB1               RA5/SS      7     34   RB1              RA5/SS      7       34           RB1

RE0/RD                   8          33  RB0/INT           RE0/RD      8     33   RB0/INT          RE0/RD      8       33           RB0/INT

RE1/WR                   9          32  VDD               RE1/WR      9     32   VDD              RE1/WR      9       32           VDD

RE2/CS                   10         31  VSS               RE2/CS      10    31   VSS              RE2/CS      10      31           VSS

VDD                      11         30  RD7/PSP7          VDD         11    30   RD7/PSP7         VDD         11      30           RD7/PSP7

VSS                      12         29  RD6/PSP6              VSS     12    29   RD6/PSP6         VSS         12      29           RD6/PSP6

OSC1/CLKIN               13         28  RD5/PSP5     OSC1/CLKIN       13    28   RD5/PSP5     OSC1/CLKIN      13      28           RD5/PSP5

OSC2/CLKOUT              14         27  RD4/PSP4     OSC2/CLKOUT      14    27   RD4/PSP4     OSC2/CLKOUT     14      27           RD4/PSP4

RC0/T1OSI/T1CKI          15         26  RC7          RC0/T1OSO/T1CKI  15    26   RC7         RC0/T1OSO/T1CKI  15      26           RC7/RX/DT

RC1/T1OSO                16         25  RC6               RC1/T1OSI   16    25   RC6          RC1/T1OSI/CCP2  16      25           RC6/TX/CK

RC2/CCP1                 17         24  RC5/SDO           RC2/CCP1    17    24   RC5/SDO          RC2/CCP1    17      24           RC5/SDO

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

RD0/PSP0                 19         22  RD3/PSP3          RD0/PSP0    19    22   RD3/PSP3         RD0/PSP0    19      22           RD3/PSP3

RD1/PSP1                 20         21  RD2/PSP2          RD1/PSP1    20    21   RD2/PSP2         RD1/PSP1    20      21           RD2/PSP2

                      PIC16C64                                        PIC16C64A                               PIC16C65

                                                                      PIC16CR64                               PIC16C65A

                                                                                                              PIC16CR65

                                                                                                              PIC16C67

DS30234E-page         2                                                                            1997-2013 Microchip Technology Inc.
                                                                                                                                                                                                                                                                                             PIC16C6X

Pin  Diagrams   (Cont.’d)

     MQFP                                           RC4/SDI/SDA  RD3/PSP3  RD2/PSP2  RD1/PSP1  RD0/PSP0     RC3/SCK/SCL  RC2/CCP1        RC1/T1OSO                            PLCC                                                                                       MCLR/VPP

                              RC6      RC5/SDO                                                                                                                                                                            RA3        RA2          RA1          RA0                 NC        RB7          RB6          RB5        RB4  NC

                                                                                                                                                    NC

                                                                                                                                                                                                                          6          5            4            3         2         1         44           43           42         41   40

                              44       43           42           41        40        39        38           37           36              35         34       NC               RA4/T0CKI               7                                                                                                                                    39  RB3

       RC7         1                                                                                                                                     33                         RA5/SS            8                                                                                                                                    38  RB2

     RD4/PSP4      2                                                                                                                                     32  RC0/T1OSI/T1CKI        RE0/RD            9                                                                                                                                    37  RB1

     RD5/PSP5      3                                                                                                                                     31  OSC2/CLKOUT            RE1/WR            10                                                                                                                                   36  RB0/INT

     RD6/PSP6      4                                                                                                                                     30  OSC1/CLKIN             RE2/CS            11                                                                                                                                   35  VDD

     RD7/PSP7      5                            PIC16C64                                                                                                 29  VSS                    VDD               12                             PIC16C64                                                                                              34  VSS

           VSS     6                                                                                                                                     28  VDD                    VSS               13                                                                                                                                   33  RD7/PSP7

           VDD     7                                                                                                                                     27  RE2/CS           OSC1/CLKIN              14                                                                                                                                   32  RD6/PSP6

     RB0/INT       8                                                                                                                                     26  RE1/WR           OSC2/CLKOUT             15                                                                                                                                   31  RD5/PSP5

       RB1         9                                                                                                                                     25  RE0/RD           RC0/T1OSI/T1CKI         16                                                                                                                                   30  RD4/PSP4

       RB2         10                                                                                                                                    24  RA5/SS                            NC     17                                                                                                                                   29  RC7

       RB3         11                                                                                                                                    23  RA4/T0CKI

                              12       13           14           15        16        17        18           19           20              21         22                                                                    18         19           20           21        22        23        24           25           26         27   28

                              NC       NC           RB4          RB5       RB6       RB7       MCLR/VPP     RA0          RA1             RA2        RA3                                                                   RC1/T1OSO  RC2/CCP1     RC3/SCK/SCL  RD0/PSP0  RD1/PSP1  RD2/PSP2  RD3/PSP3     RC4/SDI/SDA  RC5/SDO    RC6  NC

MQFP,

TQFP (PIC16C64A only)                                                                                                                                                         PLCC                                                                             MCLR/VPP

                              RC5/SDO  RC4/SDI/SDA  RD3/PSP3     RD2/PSP2  RD1/PSP1  RD0/PSP0  RC3/SCK/SCL  RC2/CCP1     RC1/T1OSI                                                                       RA3              RA2        RA1          RA0                    NC        RB7       RB6          RB5          RB4        NC

                   RC6                                                                                                                   NC

                                                                                                                                                                                                         6                5          4            3            2         1         44        43           42           41         40

                                                                                                                                                                              RA4/T0CKI            7                                                                                                                                   39      RB3

       RC7      1  44         43       42           41           40        39        38        37           36           35              34         33       NC                     RA5/SS         8                                                                                                                                   38      RB2

                2                                                                                                                                   32                              RE0/RD         9                                                                                                                                   37      RB1

     RD4/PSP4                                                                                                                                                RC0/T1OSO/T1CKI        RE1/WR         10                                                                                                                                  36      RB0/INT

     RD5/PSP5   3                                                                                                                                   31       OSC2/CLKOUT            RE2/CS         11                                                                                                                                  35      VDD

     RD6/PSP6   4                                                                                                                                   30       OSC1/CLKIN             VDD            12                     PIC16C64A                                                                                                    34      VSS

     RD7/PSP7   5             PIC16C64A                                                                                                             29       VSS                    VSS            13                     PIC16CR64                                                                                                    33      RD7/PSP7

       VSS      6                                                                                                                                   28       VDD              OSC1/CLKIN           14                                                                                                                                  32      RD6/PSP6

       VDD      7             PIC16CR64                                                                                                             27       RE2/CS           OSC2/CLKOUT          15                                                                                                                                  31      RD5/PSP5

     RB0/INT    8                                                                                                                                   26       RE1/WR           RC0/T1OSO/T1CKI      16                                                                                                                                  30      RD4/PSP4

       RB1      9                                                                                                                                   25       RE0/RD                 NC             17                                                                                                                                  29      RC7

       RB2      10                                                                                                                                  24       RA5/SS

       RB3      11                                                                                                                                  23       RA4/T0CKI                                   18               19         20           21           22        23        24        25           26           27         28

                   12         13       14           15           16        17        18        19           20           21              22

                   NC         NC       RB4          RB5          RB6       RB7       MCLR/VPP  RA0          RA1          RA2             RA3                                                             RC1/T1OSI        RC2/CCP1   RC3/SCK/SCL  RD0/PSP0     RD1/PSP1  RD2/PSP2  RD3/PSP3  RC4/SDI/SDA  RC5/SDO      RC6        NC

MQFP,

TQFP (Not on PIC16C65)

                                                                                                                         RC1/T1OSI/CCP2                                       PLCC                                                                             MCLR/VPP

                   RC6/TX/CK  RC5/SDO  RC4/SDI/SDA  RD3/PSP3     RD2/PSP2  RD1/PSP1  RD0/PSP0  RC3/SCK/SCL  RC2/CCP1                                                                                     RA3              RA2        RA1          RA0                    NC        RB7       RB6          RB5          RB4        NC

                                                                                                                                         NC

                                                                                                                                                                                                         6                5          4            3            2         1         44        43           42           41         40

                                                                                                                                                                              RA4/T0CKI            7                                                                                                                                   39      RB3

     RC7/RX/DT  1  44         43       42           41           40        39        38        37           36           35              34         33       NC                     RA5/SS         8                                                                                                                                   38      RB2

                2                                                                                                                                   32                              RE0/RD         9                                                                                                                                   37      RB1

     RD4/PSP4                                                                                                                                                RC0/T1OSO/T1CKI  RE1/WR               10                                                                                                                                  36      RB0/INT

     RD5/PSP5   3                      PIC16C65                                                                                                     31       OSC2/CLKOUT            RE2/CS         11                                PIC16C65                                                                                          35      VDD

     RD6/PSP6   4                                                                                                                                   30       OSC1/CLKIN             VDD            12                     PIC16C65A                                                                                                    34      VSS

     RD7/PSP7   5                 PIC16C65A                                                                                                         29       VSS                    VSS            13                                                                                                                                  33      RD7/PSP7

       VSS      6                                                                                                                                   28       VDD              OSC1/CLKIN           14                     PIC16CR65                                                                                                    32      RD6/PSP6

       VDD      7                 PIC16CR65                                                                                                         27       RE2/CS           OSC2/CLKOUT          15                                                                                                                                  31      RD5/PSP5

     RB0/INT    8                                                                                                                                   26       RE1/WR           RC0/T1OSO/T1CKI      16                                PIC16C67                                                                                          30      RD4/PSP4

       RB1      9                      PIC16C67                                                                                                     25       RE0/RD                 NC             17                                                                                                                                  29      RC7/RX/DT

       RB2      10                                                                                                                                  24       RA5/SS

       RB3      11                                                                                                                                  23       RA4/T0CKI                                   18               19         20           21           22        23        24        25           26           27         28

                   12         13       14           15           16        17        18        19           20           21              22

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

                   NC         NC       RB4          RB5          RB6       RB7       MCLR/VPP  RA0          RA1          RA2             RA3

 1997-2013 Microchip Technology Inc.                                                                                                                                                                                                                                                                                                      DS30234E-page  3
PIC16C6X

Table Of Contents

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

2.0  PIC16C6X Device Varieties ........................................................................................................................................................... 7

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

4.0  Memory Organization................................................................................................................................................................... 19

5.0  I/O Ports....................................................................................................................................................................................... 51

6.0  Overview of Timer Modules ......................................................................................................................................................... 63

7.0  Timer0 Module ............................................................................................................................................................................. 65

8.0  Timer1 Module ............................................................................................................................................................................. 71

9.0  Timer2 Module ............................................................................................................................................................................. 75

10.0 Capture/Compare/PWM (CCP) Module(s)................................................................................................................................... 77

11.0 Synchronous Serial Port (SSP) Module ....................................................................................................................................... 83

12.0 Universal Synchronous Asynchronous Receiver Transmitter (USART) Module........................................................................ 105

13.0 Special Features of the CPU ..................................................................................................................................................... 123

14.0 Instruction Set Summary............................................................................................................................................................ 143

15.0 Development Support ................................................................................................................................................................ 159

16.0 Electrical Characteristics for PIC16C61 ..................................................................................................................................... 163

17.0 DC and AC Characteristics Graphs and Tables for PIC16C61.................................................................................................. 173

18.0 Electrical Characteristics for PIC16C62/64 ................................................................................................................................ 183

19.0 Electrical Characteristics for PIC16C62A/R62/64A/R64 ............................................................................................................ 199

20.0 Electrical Characteristics for PIC16C65 ..................................................................................................................................... 215

21.0 Electrical Characteristics for PIC16C63/65A ............................................................................................................................. 231

22.0 Electrical Characteristics for PIC16CR63/R65........................................................................................................................... 247

23.0 Electrical Characteristics for PIC16C66/67 ................................................................................................................................ 263

24.0 DC and AC Characteristics Graphs and Tables for:

     PIC16C62, PIC16C62A, PIC16CR62, PIC16C63, PIC16C64, PIC16C64A, PIC16CR64,

     PIC16C65A, PIC16C66, PIC16C67 ........................................................................................................................................... 281

25.0 Packaging Information ............................................................................................................................................................... 291

Appendix A:  Modifications .............................................................................................................................................................. 307

Appendix B:  Compatibility .............................................................................................................................................................. 307

Appendix C:  What’s New................................................................................................................................................................ 308

Appendix D:  What’s Changed ........................................................................................................................................................ 308

Appendix E:    PIC16/17 Microcontrollers ....................................................................................................................................... 309

Pin Compatibility ................................................................................................................................................................................ 315

Index .................................................................................................................................................................................................. 317

List of Equation and Examples........................................................................................................................................................... 326

List of Figures..................................................................................................................................................................................... 326

List of Tables...................................................................................................................................................................................... 330

Reader Response .............................................................................................................................................................................. 334

PIC16C6X Product Identification System........................................................................................................................................... 335

For register and module descriptions in this data sheet, device legends show which devices apply to those sections. For

example, the legend below shows that some features of only the PIC16C62A, PIC16CR62, PIC16C63, PIC16C64A,

PIC16CR64, and PIC16C65A are described in this section.

Applicable Devices

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

                    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.

DS30234E-page  4                                                                 1997-2013 Microchip Technology Inc.
                                                                                                       PIC16C6X

1.0       GENERAL DESCRIPTION                                       ter (USART) is also known as a Serial Communications

The PIC16CXX is a family of          low-cost, high-perfor-         Interface or SCI. An 8-bit Parallel Slave Port is also pro-

mance, CMOS, fully-static, 8-bit microcontrollers.                  vided.

All  PIC16/17    microcontrollers    employ     an   advanced       The PIC16C6X device family has special features to

RISC architecture. The PIC16CXX microcontroller fam-                reduce     external   components,       thus     reducing  cost,

ily has enhanced core features, eight-level deep stack,             enhancing system reliability and reducing power con-

and multiple internal and external interrupt sources.               sumption. There are four oscillator options, of which the

The separate instruction and data buses of the Harvard              single pin RC oscillator provides a low-cost solution,

architecture allow a 14-bit wide instruction word with              the LP oscillator minimizes power consumption, XT is a

separate  8-bit  wide  data.    The  two    stage    instruction    standard crystal, and the HS is for High Speed crystals.

pipeline allows all instructions to execute in a single             The SLEEP (power-down) mode offers a power saving

cycle, except for program branches (which require two               mode.    The    user  can     wake   the    chip  from    SLEEP

cycles). A total of 35 instructions (reduced instruction            through several external and internal interrupts, and

set) are available. Additionally, a large register set gives        resets.

some of the architectural innovations used to achieve a             A highly reliable Watchdog Timer with its own on-chip

very high performance.                                              RC oscillator provides protection against software lock-

PIC16CXX      microcontrollers     typically    achieve   a    2:1  up.

code compression and a 4:1 speed improvement over                   A UV erasable CERDIP packaged version is ideal for

other 8-bit microcontrollers in their class.                        code     development,         while         the   cost-effective

The PIC16C61 device has 36 bytes of RAM and 13 I/O                  One-Time-Programmable (OTP) version is suitable for

pins. In addition a timer/counter is available.                     production in any volume.

The  PIC16C62/62A/R62         devices   have    128     bytes  of   The PIC16C6X family fits perfectly in applications rang-

RAM and 22 I/O pins. In addition, several peripheral                ing from high-speed automotive and appliance control

features are available, including: three timer/counters,            to low-power remote sensors, keyboards and telecom

one  Capture/Compare/PWM            module      and  one  serial    processors. The EPROM technology makes custom-

port. The Synchronous Serial Port can be configured                 ization  of     application   programs      (transmitter   codes,

as either a 3-wire Serial Peripheral Interface (SPI) or            motor    speeds,    receiver  frequencies,       etc.)  extremely

the two-wire Inter-Integrated Circuit (I2C) bus.                    fast  and    convenient.     The   small    footprint   packages

                                                                    make this microcontroller series perfect for all applica-

The PIC16C63/R63 devices have 192 bytes of RAM,                     tions with space limitations. Low-cost, low-power, high

while the PIC16C66 has 368 bytes. All three devices                 performance, ease-of-use, and I/O flexibility make the

have 22 I/O pins. In addition, several peripheral fea-              PIC16C6X very versatile even in areas where no micro-

tures are available, including: three timer/counters, two           controller use has been considered before (e.g. timer

Capture/Compare/PWM modules and two serial ports.                   functions, serial communication, capture and compare,

The  Synchronous     Serial   Port   can    be  configured     as   PWM functions, and co-processor applications).

either a 3-wire Serial Peripheral Interface (SPI) or the

two-wire Inter-Integrated Circuit (I2C) bus. The Univer-            1.1        Family and Upward Compatibility

sal Synchronous Asynchronous Receiver Transmitter                   Those    users    familiar   with  the  PIC16C5X        family  of

(USART)   is   also  know  as   a   Serial    Communications        microcontrollers will realize that this is an enhanced

Interface or SCI.                                                   version of the PIC16C5X architecture. Please refer to

The  PIC16C64/64A/R64         devices   have    128     bytes  of   Appendix A for a detailed list of enhancements. Code

RAM and 33 I/O pins. In addition, several peripheral                written    for  PIC16C5X      can       be  easily      ported  to

features are available, including: three timer/counters,            PIC16CXX family of devices (Appendix B).

one  Capture/Compare/PWM            module      and  one  serial    1.2        Development Support

port. The Synchronous Serial Port can be configured

as either a 3-wire Serial Peripheral Interface (SPI) or             PIC16C6X devices are supported by the complete line

the two-wire Inter-Integrated Circuit (I2C) bus. An 8-bit           of Microchip Development tools.

Parallel Slave Port is also provided.                               Please   refer  to   Section 15.0    for    more  details  about

The  PIC16C65/65A/R65         devices   have    192     bytes  of   Microchip’s development tools.

RAM,  while    the   PIC16C67      has  368     bytes.   All  four

devices have 33 I/O pins. In addition, several peripheral

features are available, including: three timer/counters,

two Capture/Compare/PWM modules and two serial

ports. The Synchronous Serial Port can be configured

as either a 3-wire Serial Peripheral Interface (SPI) or

the two-wire Inter-Integrated Circuit (I2C) bus. The Uni-

versal Synchronous Asynchronous Receiver Transmit-

 1997-2013 Microchip Technology Inc.                                                                             DS30234E-page     5
PIC16C6X

TABLE     1-1:       PIC16C6X FAMILY          OF DEVICES

                                                  PIC16C61        PIC16C62A          PIC16CR62          PIC16C63         PIC16CR63

Clock        Maximum Frequency                20               20                 20                 20               20

             of Operation (MHz)

             EPROM Program Memory             1K               2K                 —                  4K               —

             (x14 words)

Memory       ROM Program Memory               —                —                  2K                 —                4K

             (x14 words)

             Data Memory (bytes)              36               128                128                192              192

             Timer Module(s)                  TMR0             TMR0,              TMR0,              TMR0,            TMR0,

                                                               TMR1,              TMR1,              TMR1,            TMR1,

                                                               TMR2               TMR2               TMR2             TMR2

Peripherals  Capture/Compare/                 —                1                  1                  2                2

             PWM Module(s)

             Serial Port(s)                   —                SPI/I2C            SPI/I2C            SPI/I2C,         SPI/I2C

             (SPI/I2C, USART)                                                                        USART            USART

             Parallel Slave Port              —                —                  —                  —                —

             Interrupt Sources                3                7                  7                  10               10

             I/O Pins                         13               22                 22                 22               22

             Voltage Range (Volts)            3.0-6.0          2.5-6.0            2.5-6.0            2.5-6.0          2.5-6.0

Features     In-Circuit Serial Programming    Yes              Yes                Yes                Yes              Yes

             Brown-out Reset                  —                Yes                Yes                Yes              Yes

             Packages                         18-pin DIP,  SO  28-pin SDIP,       28-pin SDIP,       28-pin SDIP,     28-pin SDIP,

                                                               SOIC, SSOP         SOIC, SSOP         SOIC             SOIC

                                              PIC16C64A     PIC16CR64           PIC16C65A  PIC16CR65              PIC16C66        PIC16C67

Clock        Maximum Frequency                20            20               20            20                  20              20

             of Operation (MHz)

             EPROM Program Memory             2K            —                4K            —                   8K              8K

             (x14 words)

Memory       ROM Program Memory     (x14      —             2K               —             4K                  —               —

             words)

             Data Memory (bytes)              128           128              192           192                 368             368

             Timer Module(s)                  TMR0,         TMR0,            TMR0,         TMR0,               TMR0,           TMR0,

                                              TMR1,         TMR1,            TMR1,         TMR1,               TMR1,           TMR1,

                                              TMR2          TMR2             TMR2          TMR2                TMR2            TMR2

Peripherals  Capture/Compare/PWM Mod-         1             1                2             2                   2               2

             ule(s)

             Serial Port(s) (SPI/I2C, USART)  SPI/I2C       SPI/I2C          SPI/I2C,      SPI/I2C,            SPI/I2C,        SPI/I2C,

                                                                             USART         USART               USART           USART

             Parallel Slave Port              Yes           Yes              Yes           Yes                 —               Yes

             Interrupt Sources                8             8                11            11                  10              11

             I/O Pins                         33            33               33            33                  22              33

             Voltage Range (Volts)            2.5-6.0       2.5-6.0          2.5-6.0       2.5-6.0             2.5-6.0         2.5-6.0

             In-Circuit Serial Programming    Yes           Yes              Yes           Yes                 Yes             Yes

Features     Brown-out Reset                  Yes           Yes              Yes           Yes                 Yes             Yes

             Packages                         40-pin DIP;   40-pin DIP;      40-pin DIP;   40-pin DIP;         28-pin SDIP,    40-pin DIP;

                                              44-pin PLCC, 44-pin PLCC,      44-pin PLCC,  44-pin              SOIC            44-pin

                                              MQFP, TQFP MQFP, TQFP          MQFP, TQFP    PLCC,                               PLCC,

                                                                                           MQFP,                               MQFP,

                                                                                           TQFP                                TQFP

All PIC16/17 Family devices have Power-on Reset, selectable Watchdog Timer, selectable code protect and high I/O current

capability. All PIC16C6X Family devices use serial programming with clock pin RB6 and data pin RB7.

DS30234E-page   6                                                                           1997-2013 Microchip Technology Inc.
                                                                                                PIC16C6X

2.0       PIC16C6X DEVICE VARIETIES                              2.3        Quick-Turnaround-Production (QTP)

A variety of frequency ranges and packaging options                         Devices

are available. Depending on application and production           Microchip offers a QTP Programming Service for fac-

requirements, the proper device option can be selected           tory production orders. This service is made available

using the information in the PIC16C6X Product Identi-            for users who choose not to program a medium to high

fication System section at the end of this data sheet.           quantity of units and whose code patterns have stabi-

When placing orders, please use that page of the data            lized. The devices are identical to the OTP devices but

sheet to specify the correct part number.                        with  all  EPROM   locations   and  configuration    options

For the PIC16C6X family of devices, there are four               already programmed by the factory. Certain code and

device “types” as indicated in the device number:                prototype verification procedures apply before produc-

1.   C,   as   in   PIC16C64.     These      devices  have       tion shipments are available. Please contact your local

     EPROM     type    memory     and   operate  over  the       Microchip Technology sales office for more details.

     standard voltage range.                                     2.4        Serialized Quick-Turnaround

2.   LC,  as   in   PIC16LC64.    These      devices  have                  Production (SQTPSM) Devices

     EPROM     type      memory   and   operate  over     an

     extended voltage range.                                     Microchip offers a unique programming service where

3.   CR,   as  in   PIC16CR64.    These      devices  have       a few user-defined locations in each device are pro-

     ROM      program    memory   and   operate  over  the       grammed with different serial numbers. The serial num-

     standard voltage range.                                     bers may be random, pseudo-random, or sequential.

4.   LCR, as in PIC16LCR64. These devices have                   Serial  programming  allows       each   device  to  have  a

     ROM      program    memory   and   operate  over     an     unique     number  which  can     serve  as  an  entry-code,

     extended voltage range.                                     password, or ID number.

2.1       UV Erasable Devices                                    ROM devices do not allow serialization information in

                                                                 the program memory space. The user may have this

The UV erasable version, offered in CERDIP package               information programmed in the data memory space.

is   optimal   for   prototype    development    and      pilot  For information on submitting ROM code, please con-

programs.      This      version  can    be  erased       and    tact your regional sales office.

reprogrammed to any of the oscillator modes.

Microchip's    PICSTART          Plus  and  PRO MATE II        2.5        Read Only Memory (ROM) Devices

programmers        both  support        programming   of  the    Microchip offers masked ROM versions of several of

PIC16C6X.                                                        the highest volume parts, thus giving customers a low

2.2       One-Time-Programmable (OTP)                            cost option for high volume, mature products.

          Devices                                                For information on submitting ROM code, please con-

                                                                 tact your regional sales office.

The availability of OTP devices is especially useful for

customers who need the flexibility for frequent code

updates and small volume applications.

The OTP devices, packaged in plastic packages, per-

mit the user to program them once. In addition to the

program memory, the configuration bits must also be

programmed.

 1997-2013 Microchip Technology Inc.                                                                     DS30234E-page     7
PIC16C6X

NOTES:

DS30234E-page  8   1997-2013 Microchip Technology Inc.
                                                                                             PIC16C6X

3.0    ARCHITECTURAL OVERVIEW                                The PIC16CXX device contains an 8-bit ALU and work-

The high performance of the PIC16CXX family can be           ing register (W). The ALU is a general purpose arithme-

attributed to a number of architectural features com-        tic unit. It performs arithmetic and Boolean functions

monly found in RISC microprocessors. To begin with,          between data in the working register and any register

the PIC16CXX uses a Harvard architecture, in which,          file.

program and data are accessed from separate memo-            The ALU is 8-bits wide and capable of addition, sub-

ries using separate buses. This improves bandwidth           traction, shift, and logical operations. Unless otherwise

over traditional von Neumann architecture where pro-         mentioned,   arithmetic    operations      are  two's  comple-

gram and data may be fetched from the same memory            ment in nature. In two-operand instructions, typically

using the same bus. Separating program and data bus-         one operand is the working register (W register), the

ses further allows instructions to be sized differently      other operand is a file register or an immediate con-

than 8-bit wide data words. Instruction opcodes are          stant. In single operand instructions, the operand is

14-bits wide making it possible to have all single word      either the W register or a file register.

instructions.  A  14-bit  wide  program  memory  access      The W register is an 8-bit working register used for ALU

bus fetches a 14-bit instruction in a single cycle. A two-   operations. It is not an addressable register.

stage pipeline overlaps fetch and execution of instruc-      Depending upon the instruction executed, the ALU may

tions (Example 3-1). Consequently, all instructions exe-     affect the values of the Carry (C), Digit Carry (DC), and

cute in a single cycle (200 ns @ 20 MHz) except for          Zero (Z) bits in the STATUS register. Bits C and DC

program branches.                                            operate as a borrow and digit borrow out bit, respec-

The PIC16C61 addresses 1K x 14 of program memory.            tively,  in  subtraction.  See  the    SUBLW    and    SUBWF

The PIC16C62/62A/R62/64/64A/R64 address 2K x 14              instructions for examples.

of     program            memory,        and            the

PIC16C63/R63/65/65A/R65 devices address 4K x 14 of

program memory. The PIC16C66/67 address 8K x 14

program memory. All program memory is internal.

The PIC16CXX can directly or indirectly address its

register files or data memory. All special function reg-

isters including the program counter are mapped in

the data memory. The PIC16CXX has an orthogonal

(symmetrical) instruction set that makes it possible to

carry  out  any   operation  on  any   register  using  any

addressing mode. This symmetrical nature and lack of

“special optimal situations” makes programming with

the PIC16CXX simple yet efficient, thus significantly

reducing the learning curve.

 1997-2013 Microchip Technology Inc.                                                                   DS30234E-page   9
PIC16C6X

FIGURE 3-1:    PIC16C61 BLOCK DIAGRAM

                                         13                             Data Bus            8       PORTA

                        EPROM                Program Counter

                                                                                                               RA0

                        Program                                                                                RA1

                        Memory                                                RAM                              RA2

                                             8 Level Stack                    File                             RA3

                        1K x 14                    (13-bit)             Registers

                                                                              36 x 8                           RA4/T0CKI

               Program  14

               Bus                                              RAM  Addr(1)        9               PORTB

                        Instruction reg                                 Addr MUX

                                                             7                         Indirect                RB0/INT

                                             Direct Addr                            8      Addr

                                                                                   FSR reg                     RB7:RB1

                                                                              STATUS reg

                                         8

                                                                     3              MUX

                                             Power-up

                                                   Timer

                        Instruction          Oscillator

                        Decode &             Start-up Timer                   ALU

                        Control              Power-on

                                                   Reset             8

                        Timing               Watchdog                   W reg

                        Generation                 Timer

OSC1/CLKIN

OSC2/CLKOUT

                                                                                   Timer0

                                             MCLR  VDD, VSS

Note 1: Higher order bits are from the STATUS register.

DS30234E-page  10                                                                                  1997-2013  Microchip Technology  Inc.
                                                                                                      PIC16C6X

FIGURE 3-2:        PIC16C62/62A/R62/64/64A/R64 BLOCK DIAGRAM

                                    13                             Data Bus               8    PORTA

                   EPROM/               Program Counter                                                          RA0

                   ROM                                                                                           RA1

                   Program                                                                                       RA2

                   Memory                                                RAM                                     RA3

                                        8 Level Stack                    File

                   2K x 14                    (13-bit)             Registers                                     RA4/T0CKI

                                                                   128 x 8                                       RA5/SS

          Program  14                                           Addr(1)

          Bus                                              RAM                 9               PORTB

                   Instruction reg                                 Addr MUX

                                                        7                            Indirect                    RB0/INT

                                        Direct Addr                            8     Addr

                                                                         FSR         reg                         RB7:RB1

                                                                         STATUS reg

                                    8                                                          PORTC

                                                                                                                 RC0/T1OSO/T1CKI(4)

                                                                3                                                RC1/T1OSI(4)

                                        Power-up                               MUX                               RC2/CCP1

                                              Timer                                                              RC3/SCK/SCL

                   Instruction          Oscillator                                                               RC4/SDI/SDA

                   Decode &             Start-up Timer             ALU                                           RC5/SDO

                   Control              Power-on                                                                 RC6

                                              Reset        8                                                     RC7

                   Timing               Watchdog                   W reg

                   Generation                 Timer

OSC1/CLKIN                              Brown-out                                              PORTD             RD0/PSP0

OSC2/CLKOUT                             Reset(3)                                                                 RD1/PSP1

                                                                                                                 RD2/PSP2

                                                                                                                 RD3/PSP3

                                                                                                                 RD4/PSP4

                                                                                                                 RD5/PSP5

                                        MCLR  VDD, VSS                                                           RD6/PSP6

                                                                                                                 RD7/PSP7

                                                                   Parallel Slave              PORTE

                                                                               Port

                                                                                                                 RE0/RD

Timer1             Timer2               CCP1                                                                     RE1/WR

                                                                                                                 RE2/CS

                                                                                                      (Note  2)

Timer0             Synchronous

                   Serial Port

Note  1:  Higher order bits are from the STATUS register.

      2:  PORTD, PORTE and the Parallel Slave Port are not available on the PIC16C62/62A/R62.

      3:  Brown-out Reset is not available on the PIC16C62/64.

      4:  Pin functions T1OSI and T1OSO are swapped on the PIC16C62/64.

 1997-2013 Microchip Technology Inc.                                                                            DS30234E-page       11
PIC16C6X

FIGURE 3-3:    PIC16C63/R63/65/65A/R65 BLOCK DIAGRAM

                                13                                 Data Bus           8        PORTA

                   EPROM            Program Counter                                                           RA0

                   Program                                                                                    RA1

                   Memory                                                RAM                                  RA2

                                    8 Level Stack                        File                                 RA3

                   4K x 14                (13-bit)                 Registers                                  RA4/T0CKI

                                                                   192 x 8                                    RA5/SS

      Program      14                                           Addr(1)

          Bus                                          RAM                     9               PORTB

               Instruction reg                                     Addr MUX

                                                    7                                Indirect                 RB0/INT

                                    Direct Addr                                8     Addr

                                                                           FSR reg                            RB7:RB1

                                                                         STATUS reg

                                8                                                              PORTC

                                                                                                              RC0/T1OSO/T1CKI

                                                                3                                             RC1/T1OSI/CCP2

                                    Power-up                                   MUX                            RC2/CCP1

                                          Timer                                                               RC3/SCK/SCL

                   Instruction      Oscillator                                                                RC4/SDI/SDA

                   Decode &         Start-up Timer                    ALU                                     RC5/SDO

                   Control          Power-on                                                                  RC6/TX/CK

                                          Reset        8                                                      RC7/RX/DT

                   Timing           Watchdog                       W reg

                   Generation             Timer

OSC1/CLKIN                          Brown-out                                                  PORTD          RD0/PSP0

OSC2/CLKOUT                         Reset(3)                                                                  RD1/PSP1

                                                                                                              RD2/PSP2

                                                                                                              RD3/PSP3

                                                                                                              RD4/PSP4

                                                                                                              RD5/PSP5

                                    MCLR  VDD, VSS                                                            RD6/PSP6

                                                                      Parallel Slave                          RD7/PSP7

                                                                               Port            PORTE

                                                                                                              RE0/RD

                                                                                                              RE1/WR

Timer0                 Timer1       Timer2

                                                                                                              RE2/CS

                                                                                               (Note 2)

USART              Synchronous      CCP1                        CCP2

                   Serial Port

Note  1:       Higher order bits are from the STATUS register.

      2:       PORTD, PORTE and the Parallel Slave Port are not available on             the   PIC16C63/R63.

      3:       Brown-out Reset is not available on the PIC16C65.

DS30234E-page  12                                                                               1997-2013    Microchip Technology  Inc.
                                                                                                                   PIC16C6X

FIGURE 3-4:    PIC16C66/67 BLOCK DIAGRAM

                                13                                Data Bus               8       PORTA

               EPROM                   Program Counter                                                                 RA0

               Program                                                                                                 RA1

               Memory                                                   RAM                                            RA2

                                       8 Level Stack                    File                                           RA3

               8K x 14                       (13-bit)             Registers                                            RA4/T0CKI

                                                                  368 x 8                                              RA5/SS

      Program  14                                              Addr(1)

          Bus                                             RAM                 9                  PORTB

               Instruction reg                                    Addr MUX

                                                       7                            Indirect                           RB0/INT

                                       Direct Addr                            8     Addr

                                                                          FSR       reg                                RB7:RB1

                                                                        STATUS reg

                                8                                                                PORTC

                                                                                                                       RC0/T1OSO/T1CKI

                                                               3                                                       RC1/T1OSI/CCP2

                                       Power-up                               MUX                                      RC2/CCP1

                                             Timer                                                                     RC3/SCK/SCL

               Instruction             Oscillator                                                                      RC4/SDI/SDA

               Decode &                Start-up Timer                ALU                                               RC5/SDO

               Control                 Power-on                                                                        RC6/TX/CK

                                             Reset        8                                                            RC7/RX/DT

               Timing                  Watchdog                   W reg

               Generation                    Timer

OSC1/CLKIN                             Brown-out                                                 PORTD                 RD0/PSP0

OSC2/CLKOUT                                  Reset                                                                     RD1/PSP1

                                                                                                                       RD2/PSP2

                                                                                                                       RD3/PSP3

                                                                                                                       RD4/PSP4

                                                                                                                       RD5/PSP5

                                       MCLR  VDD, VSS                                                                  RD6/PSP6

                                                                     Parallel Slave                                    RD7/PSP7

                                                                              Port               PORTE

                                                                                                                       RE0/RD

                                                                                                                       RE1/WR

Timer0             Timer1              Timer2

                                                                                                                       RE2/CS

                                                                                                            (Note  2)

USART          Synchronous             CCP1                    CCP2

               Serial Port

Note  1:     Higher order bits are from the STATUS register.

      2:     PORTD, PORTE and the Parallel Slave Port are not available on                  the  PIC16C66.

 1997-2013 Microchip Technology Inc.                                                                                       DS30234E-page  13
PIC16C6X

TABLE 3-1:           PIC16C61 PINOUT DESCRIPTION

Pin Name               DIP   SOIC            Pin Type  Buffer         Description

                       Pin#  Pin#                      Type

OSC1/CLKIN             16          16        I         ST/CMOS(1)     Oscillator crystal input/external clock source input.

OSC2/CLKOUT            15          15        O         —              Oscillator crystal output. Connects to crystal or resonator in crystal

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

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

MCLR/VPP               4           4         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                    17          17        I/O       TTL

RA1                    18          18        I/O       TTL

RA2                    1           1         I/O       TTL

RA3                    2           2         I/O       TTL

RA4/T0CKI              3           3         I/O       ST             RA4 can also be the clock input to the Timer0 timer/counter.

                                                                      Output is open drain type.

                                                                      PORTB is a bi-directional I/O port. PORTB can be software pro-

                                                                      grammed for internal weak pull-up on all inputs.

RB0/INT                6           6         I/O       TTL/ST(2)      RB0 can also be the external interrupt pin.

RB1                    7           7         I/O       TTL

RB2                    8           8         I/O       TTL

RB3                    9           9         I/O       TTL

RB4                    10          10        I/O       TTL            Interrupt on change pin.

RB5                    11          11        I/O       TTL            Interrupt on change pin.

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

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

VSS                    5           5         P         —              Ground reference for logic and I/O pins.

VDD                    14          14        P         —              Positive supply for logic and I/O pins.

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

                       — = Not used               TTL = TTL input     ST = Schmitt Trigger input

Note  1:  This buffer  is a Schmitt Trigger  input when configured in RC oscillator mode and a CMOS input otherwise.

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

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

DS30234E-page  14                                                                               1997-2013 Microchip Technology Inc.
                                                                                                              PIC16C6X

TABLE 3-2:           PIC16C62/62A/R62/63/R63/66 PINOUT DESCRIPTION

Pin Name              Pin#             Pin Type  Buffer              Description

                                                 Type

OSC1/CLKIN            9                I         ST/CMOS(3)          Oscillator crystal input/external clock source input.

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

                                                                     tal oscillator mode. In RC mode, the 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                   2                I/O       TTL

RA1                   3                I/O       TTL

RA2                   4                I/O       TTL

RA3                   5                I/O       TTL

RA4/T0CKI             6                I/O       ST                         RA4 can also be the clock input to the Timer0 timer/counter.

                                                                            Output is open drain type.

RA5/SS                7                I/O       TTL                        RA5 can also be the slave select for the synchronous serial

                                                                            port.

                                                                     PORTB is a bi-directional I/O port. PORTB can be software pro-

                                                                     grammed for internal weak pull-up on all inputs.

RB0/INT               21               I/O       TTL/ST(4)                  RB0 can also be the 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(5)                  Interrupt on change pin. Serial programming clock.

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

                                                                     PORTC is a bi-directional I/O port.

RC0/T1OSO(1)/T1CKI    11               I/O       ST                         RC0 can also be the Timer1 oscillator output(1) or Timer1

                                                                            clock input.

RC1/T1OSI(1)/CCP2(2)  12               I/O       ST                         RC1 can also be the Timer1 oscillator input(1) or Capture2

                                                                            input/Compare2 output/PWM2 output(2).

RC2/CCP1              13               I/O       ST                         RC2    can    also  be  the  Capture1  input/Compare1     out-

                                                                            put/PWM1 output.

RC3/SCK/SCL           14               I/O       ST                         RC3 can also be the synchronous serial clock input/output

                                                                            for both SPI and I2C modes.

RC4/SDI/SDA           15               I/O       ST                         RC4 can also be the SPI Data In (SPI mode) or

                                                                            data I/O (I2C mode).

RC5/SDO               16               I/O       ST                         RC5 can also be the SPI Data Out (SPI mode).

RC6/TX/CK(2)          17               I/O       ST                         RC6 can also be the USART Asynchronous Transmit(2) or

                                                                            Synchronous Clock(2).

RC7/RX/DT(2)          18               I/O       ST                         RC7 can also be the USART Asynchronous Receive(2) or

                                                                            Synchronous Data(2).

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

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

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

                      — = Not used               TTL = TTL input            ST = Schmitt Trigger input

Note  1:  Pin functions T1OSO and T1OSI are reversed on the PIC16C62.

      2:  The USART and CCP2 are not available on the PIC16C62/62A/R62.

      3:  This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.

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

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

 1997-2013 Microchip Technology Inc.                                                                                  DS30234E-page       15
PIC16C6X

TABLE 3-3:           PIC16C64/64A/R64/65/65A/R65/67 PINOUT DESCRIPTION

                      DIP         PLCC  TQFP  Pin               Buffer

Pin Name              Pin#        Pin#  MQFP  Type              Type        Description

                                        Pin#

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

OSC2/CLKOUT           14          15    31    O                   —         Oscillator crystal output. Connects to crystal or resonator in

                                                                            crystal oscillator mode. In RC mode, the pin outputs CLK-

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

                                                                            instruction cycle rate.

MCLR/VPP              1           2     18    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                   2           3     19    I/O               TTL

RA1                   3           4     20    I/O               TTL

RA2                   4           5     21    I/O               TTL

RA3                   5           6     22    I/O               TTL

RA4/T0CKI             6           7     23    I/O                 ST        RA4              can  also  be  the  clock   input  to   the  Timer0

                                                                            timer/counter. Output is open drain type.

RA5/SS                7           8     24    I/O               TTL         RA5 can also be the slave select for the synchronous

                                                                            serial port.

                                                                            PORTB is a bi-directional I/O port. PORTB can be software

                                                                            programmed for internal weak pull-up on all inputs.

RB0/INT               33          36    8     I/O               TTL/ST(4)   RB0 can also be the external interrupt pin.

RB1                   34          37    9     I/O               TTL

RB2                   35          38    10    I/O               TTL

RB3                   36          39    11    I/O               TTL

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

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

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

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

                                                                            PORTC is a bi-directional I/O port.

RC0/T1OSO(1)/T1CKI    15          16    32    I/O                 ST        RC0              can  also  be  the  Timer1  oscillator  output(1)  or

                                                                            Timer1 clock input.

RC1/T1OSI(1)/CCP2(2)  16          18    35    I/O                 ST        RC1              can  also  be  the  Timer1  oscillator  input(1)   or

                                                                            Capture2 input/Compare2 output/PWM2 output(2).

RC2/CCP1              17          19    36    I/O                 ST        RC2 can also be the Capture1 input/Compare1 out-

                                                                            put/PWM1 output.

RC3/SCK/SCL           18          20    37    I/O                 ST        RC3 can also be the synchronous serial clock input/out-

                                                                            put for both SPI and I2C modes.

RC4/SDI/SDA           23          25    42    I/O                 ST        RC4 can also be the SPI Data In (SPI mode) or

                                                                            data I/O (I2C mode).

RC5/SDO               24          26    43    I/O                 ST        RC5 can also be the SPI Data Out (SPI mode).

RC6/TX/CK(2)          25          27    44    I/O                 ST        RC6 can also be the USART Asynchronous Transmit(2)

                                                                            or Synchronous Clock(2).

RC7/RX/DT(2)          26          29    1     I/O                 ST        RC7 can also be the USART Asynchronous Receive(2)

                                                                            or Synchronous Data(2).

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

                      — = Not used            TTL = TTL input               ST = Schmitt Trigger input

Note  1:  Pin functions T1OSO and T1OSI are reversed on the PIC16C64.

      2:  CCP2 and the USART are not available on the PIC16C64/64A/R64.

      3:  This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.

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

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

      6:  This buffer is a Schmitt Trigger input when configured as general purpose I/O and a TTL input when used in the Parallel Slave

          Port mode (for interfacing to a microprocessor bus).

DS30234E-page  16                                                                                  1997-2013 Microchip Technology Inc.
                                                                                                       PIC16C6X

TABLE 3-3:           PIC16C64/64A/R64/65/65A/R65/67 PINOUT DESCRIPTION (Cont.’d)

                     DIP         PLCC   TQFP    Pin             Buffer

Pin Name             Pin#        Pin#   MQFP    Type            Type       Description

                                        Pin#

                                                                           PORTD can be a bi-directional I/O port or parallel slave port

                                                                           for interfacing to a microprocessor bus.

RD0/PSP0             19          21     38      I/O             ST/TTL(6)

RD1/PSP1             20          22     39      I/O             ST/TTL(6)

RD2/PSP2             21          23     40      I/O             ST/TTL(6)

RD3/PSP3             22          24     41      I/O             ST/TTL(6)

RD4/PSP4             27          30     2       I/O             ST/TTL(6)

RD5/PSP5             28          31     3       I/O             ST/TTL(6)

RD6/PSP6             29          32     4       I/O             ST/TTL(6)

RD7/PSP7             30          33     5       I/O             ST/TTL(6)

                                                                           PORTE is a bi-directional I/O port.

RE0/RD               8           9      25      I/O             ST/TTL(6)  RE0 can also be read control for the parallel slave port.

RE1/WR               9           10     26      I/O             ST/TTL(6)  RE1 can also be write control for the parallel slave port.

RE2/CS               10          11     27      I/O             ST/TTL(6)  RE2 can also be select control for the parallel slave port.

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

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

NC                   —           1,17,  12,13,  —                  —       These pins are not internally connected. These pins should

                                 28,40  33,34                              be left unconnected.

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

                     — = Not used              TTL = TTL input             ST = Schmitt Trigger input

Note  1:  Pin functions T1OSO and T1OSI are reversed on the PIC16C64.

      2:  CCP2 and the USART are not available on the PIC16C64/64A/R64.

      3:  This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.

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

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

      6:  This buffer is a Schmitt Trigger input when configured as general purpose I/O and a TTL input when used in the Parallel Slave

          Port mode (for interfacing to a microprocessor bus).

 1997-2013 Microchip Technology Inc.                                                                                DS30234E-page       17
PIC16C6X

3.1        Clocking Scheme/Instruction Cycle                                   3.2       Instruction Flow/Pipelining

The clock input (from OSC1) is internally divided by                           An “Instruction Cycle” consists of four Q cycles (Q1,

four  to   generate      four   non-overlapping         quadrature             Q2, Q3, and Q4). The instruction fetch and execute are

clocks namely Q1, Q2, Q3, and Q4. Internally, the pro-                         pipelined such that fetch takes one instruction cycle

gram      counter  (PC)     is  incremented        every    Q1,  the           while     decode  and  execute       takes  another    instruction

instruction is fetched from the program memory and                             cycle. However, due to the pipelining, each instruction

latched into the instruction register in Q4. The instruc-                      effectively    executes    in  one    cycle.  If  an   instruction

tion is decoded and executed during the following Q1                           causes    the  program     counter    to    change     (e.g.  GOTO)

through Q4. The clock and instruction execution flow is                        then two cycles are required to complete the instruction

shown in Figure 3-5.                                                           (Example 3-1).

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

FIGURE 3-5:          CLOCK/INSTRUCTION CYCLE

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

                   OSC1

                   Q1

                   Q2                                                                                                              Internal

                   Q3                                                                                                              Phase

                                                                                                                                   Clock

                   Q4

                   PC                      PC                             PC+1                                PC+2
(Program counter)

      OSC2/CLKOUT

           (RC mode)

                                  Fetch    INST (PC)

                                  Execute  INST (PC-1)                Fetch INST (PC+1)

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

                                                                                                      Execute INST (PC+1)

EXAMPLE 3-1:             INSTRUCTION PIPELINE FLOW

                                           Tcy0             Tcy1          Tcy2               Tcy3             Tcy4               Tcy5

1.    MOVLW  55h                        Fetch 1           Execute 1

2.    MOVWF  PORTB                                        Fetch 2     Execute 2

3.    CALL   SUB_1                                                    Fetch 3            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.

DS30234E-page      18                                                                                  1997-2013 Microchip Technology Inc.
                                                                                                                 PIC16C6X

4.0               MEMORY ORGANIZATION                              FIGURE 4-2:                              PIC16C62/62A/R62/64/64A/

Applicable Devices                                                                                          R64 PROGRAM MEMORY

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                                            MAP AND STACK

4.1               Program Memory Organization                                                               PC<12:0>

                                                                                CALL,               RETURN                     13

The PIC16C6X family has a 13-bit program counter                                RETFIE,             RETLW

capable of addressing an 8K x 14 program memory                                                             Stack Level 1

space. The amount of program memory available to                                                                 

each device is listed below:                                                                                Stack Level 8

     Device                      Program            Address Range                                           Reset Vector           0000h

                                 Memory                                         User Memory

                                                                                                    Peripheral Interrupt Vector    0004h

PIC16C61                         1K  x    14          0000h-03FFh                            Space                                 0005h

PIC16C62                         2K  x    14          0000h-07FFh                                           On-chip Program

PIC16C62A                        2K  x    14          0000h-07FFh                                           Memory

PIC16CR62                        2K  x    14          0000h-07FFh

PIC16C63                         4K  x    14          0000h-0FFFh                                                                  07FFh

                                                                                                                                   0800h

PIC16CR63                        4K  x    14          0000h-0FFFh

PIC16C64                         2K  x    14          0000h-07FFh

PIC16C64A                        2K  x    14          0000h-07FFh

PIC16CR64                        2K  x    14          0000h-07FFh                                                                  1FFFh

PIC16C65                         4K  x    14          0000h-0FFFh

PIC16C65A                        4K  x    14          0000h-0FFFh  FIGURE 4-3:                              PIC16C63/R63/65/65A/R65

PIC16CR65                        4K  x    14          0000h-0FFFh                                           PROGRAM MEMORY MAP

PIC16C66                         8K  x    14          0000h-1FFFh                                           AND STACK

PIC16C67                         8K  x    14          0000h-1FFFh                                           PC<12:0>

For those devices with less than 8K program memory,                CALL,                            RETURN                 13

accessing a location above the physically implemented              RETFIE,                          RETLW

address will cause a wraparound.                                                                            Stack Level 1

The reset vector is at 0000h and the interrupt vector is                                                    

at 0004h.                                                                                                   Stack Level 8

FIGURE 4-1:              PIC16C61 PROGRAM                                                                   Reset Vector           0000h

                         MEMORY MAP AND STACK                                                       Peripheral Interrupt Vector    0004h

                                                                                                                                   0005h

                                 PC<12:0>

     CALL,               RETURN                 13

     RETFIE,             RETLW                                     User Memory                              On-chip Program

                                 Stack Level 1                                                              Memory (Page 0)

                                                                             Space                                              07FFh

                                 Stack Level 8                                                                                     0800h

                                 Reset Vector         0000h

     User Memory                                                                                            On-chip Program

                         Peripheral Interrupt Vector  0004h                                                 Memory (Page 1)

                  Space                               0005h

                                 On-chip Program

                                 Memory                                                                                            0FFFh

                                                                                                                                   1000h

                                                      03FFh

                                                      0400h

                                                                                                                                   1FFFh

                                                      1FFFh

 1997-2013 Microchip Technology Inc.                                                                                            DS30234E-page  19
PIC16C6X

FIGURE 4-4:                  PIC16C66/67 PROGRAM                              For the PIC16C61, general purpose register locations

                             MEMORY MAP AND STACK                             8Ch-AFh of Bank 1 are not physically implemented.

                                                                              These locations are mapped into 0Ch-2Fh of Bank 0.

                                  PC<12:0>                                    FIGURE 4-5:     PIC16C61 REGISTER FILE

     CALL,          RETURN                      13

     RETFIE,        RETLW                                                                     MAP

                                 Stack Level 1                                File  Address                                    File Address

                                                                                 00h       INDF(1)   INDF(1)                       80h

                                 Stack Level 8

                                                                                    01h       TMR0      OPTION                        81h

                                 Reset Vector             0000h                     02h       PCL                       PCL           82h

                    Peripheral Interrupt Vector           0004h                     03h       STATUS    STATUS                        83h

                                                          0005h

                                                                                    04h       FSR                       FSR           84h

                             On-chip Program                                                  PORTA                     TRISA

User Memory                  Memory (Page 0)                                        05h                                               85h

             Space                                        07FFh                     06h       PORTB                     TRISB         86h

                                                          0800h                     07h

                             On-chip Program                                                                                          87h

                             Memory (Page 1)                                        08h                                               88h

                                                          0FFFh                                                                       89h

                                                          1000h                     09h

                             On-chip Program                                        0Ah       PCLATH    PCLATH                        8Ah

                             Memory (Page 2)                                        0Bh       INTCON    INTCON                        8Bh

                                                          17FFh                     0Ch                                               8Ch

                                                          1800h

                             On-chip Program                                                  General   Mapped

                             Memory (Page 3)                                                  Purpose   in Bank 0(2)

                                                                                              Register

                                                          1FFFh

                                                                                    2Fh                                               AFh

4.2                 Data Memory Organization                                        30h                                               B0h

Applicable Devices

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

The          data   memory       is  partitioned    into  multiple  banks

which contain the General Purpose Registers and the

Special Function Registers. Bits RP1 and RP0 are the

bank select bits.

RP1:RP0 (STATUS<6:5>)

= 00               Bank0

= 01               Bank1

= 10               Bank2                                                           7Fh

= 11               Bank3                                                                                                             FFh

Each bank extends up to 7Fh (128 bytes). The lower                                            Bank 0    Bank 1

locations of each bank are reserved for the Special                                 Unimplemented data memory location; read as '0'.

Function Registers. Above the Special Function Regis-                               Note  1:  Not a physical register.

ters are General Purpose Registers, implemented as                                        2:  These locations are unimplemented in

static       RAM.   All      implemented        banks     contain   special                   Bank 1. Any access to these locations will

function registers. Some “high use” special function                                          access the corresponding Bank 0 register.

registers from one bank may be mirrored in another

bank for code reduction and quicker access.

4.2.1               GENERAL PURPOSE REGISTERS

These registers              are  accessed either directly          or indi-

rectly              through  the     File  Select      Register     (FSR)

(Section 4.5).

DS30234E-page                20                                                                1997-2013 Microchip Technology Inc.
                                                                              PIC16C6X

FIGURE 4-6:   PIC16C62/62A/R62/64/64A/                FIGURE 4-7:   PIC16C63/R63/65/65A/R65

              R64 REGISTER FILE MAP                                 REGISTER FILE MAP

File Address                            File Address  File Address                             File Address

   00h        INDF(1)   INDF(1)         80h           00h           INDF(1)   INDF(1)          80h

   01h        TMR0      OPTION          81h           01h           TMR0      OPTION           81h

   02h        PCL       PCL             82h           02h           PCL                PCL     82h

   03h        STATUS    STATUS          83h           03h           STATUS    STATUS           83h

   04h        FSR       FSR             84h           04h           FSR                FSR     84h

   05h        PORTA     TRISA           85h           05h           PORTA     TRISA            85h

   06h        PORTB     TRISB           86h           06h           PORTB     TRISB            86h

   07h        PORTC     TRISC           87h           07h           PORTC     TRISC            87h

   08h        PORTD(2)  TRISD(2)        88h           08h           PORTD(2)  TRISD(2)         88h

   09h        PORTE(2)  TRISE(2)        89h           09h           PORTE(2)  TRISE(2)         89h

   0Ah        PCLATH    PCLATH          8Ah           0Ah           PCLATH    PCLATH           8Ah

   0Bh        INTCON    INTCON          8Bh           0Bh           INTCON    INTCON           8Bh

   0Ch        PIR1      PIE1            8Ch           0Ch           PIR1               PIE1    8Ch

   0Dh                                  8Dh           0Dh           PIR2               PIE2    8Dh

   0Eh        TMR1L     PCON            8Eh           0Eh           TMR1L     PCON             8Eh

   0Fh        TMR1H                     8Fh           0Fh           TMR1H                      8Fh

   10h        T1CON                     90h           10h           T1CON                      90h

   11h        TMR2                      91h           11h           TMR2                       91h

   12h        T2CON     PR2             92h           12h           T2CON              PR2     92h

   13h        SSPBUF    SSPADD          93h           13h           SSPBUF    SSPADD           93h

   14h        SSPCON    SSPSTAT         94h           14h           SSPCON    SSPSTAT          94h

   15h        CCPR1L                    95h           15h           CCPR1L                     95h

   16h        CCPR1H                    96h           16h           CCPR1H                     96h

   17h        CCP1CON                   97h           17h           CCP1CON                    97h

   18h                                  98h           18h           RCSTA              TXSTA   98h

                                                      19h           TXREG              SPBRG   99h

                                                      1Ah           RCREG                      9Ah

                                                      1Bh           CCPR2L                     9Bh

   1Fh                                  9Fh           1Ch           CCPR2H                     9Ch

   20h                                  A0h           1Dh           CCP2CON                    9Dh

                        General

                        Purpose                       1Eh                                      9Eh

              General   Register

              Purpose                   BFh           1Fh                                      9Fh

              Register                  C0h           20h                                      A0h

                                                                    General   General

                                                                    Purpose   Purpose

   7Fh                                  FFh           7Fh           Register  Register         FFh

              Bank 0    Bank 1                                      Bank 0             Bank 1

   Unimplemented data memory location;  read as '0'.  Unimplemented data memory location; read as '0'.

   Note  1:   Not a physical register.                Note  1:      Not a physical register

         2:   PORTD and PORTE are not   available on        2:      PORTD and PORTE are not available on

              the PIC16C62/62A/R62.                                 the PIC16C63/R63.

  1997-2013 Microchip Technology Inc.                                                       DS30234E-page  21
PIC16C6X

FIGURE 4-8:    PIC16C66/67   DATA MEMORY        MAP

                                                                                                  File

                                                                                                  Address

Indirect addr.(*)  00h       Indirect addr.(*)  80h   Indirect addr.(*)  100h  Indirect addr.(*)  180h

   TMR0            01h       OPTION             81h   TMR0               101h  OPTION             181h

   PCL             02h       PCL                82h   PCL                102h  PCL                182h

   STATUS          03h       STATUS             83h   STATUS             103h  STATUS             183h

   FSR             04h       FSR                84h   FSR                104h  FSR                184h

   PORTA           05h       TRISA              85h                      105h                     185h

   PORTB           06h       TRISB              86h   PORTB              106h  TRISB              186h

   PORTC           07h       TRISC              87h                      107h                     187h

   PORTD (1)       08h       TRISD (1)          88h                      108h                     188h

   PORTE (1)       09h       TRISE (1)          89h                      109h                     189h

   PCLATH          0Ah       PCLATH             8Ah   PCLATH             10Ah  PCLATH             18Ah

   INTCON          0Bh       INTCON             8Bh   INTCON             10Bh  INTCON             18Bh

   PIR1            0Ch       PIE1               8Ch                      10Ch                     18Ch

   PIR2            0Dh       PIE2               8Dh                      10Dh                     18Dh

   TMR1L           0Eh       PCON               8Eh                      10Eh                     18Eh

   TMR1H           0Fh                          8Fh                      10Fh                     18Fh

   T1CON           10h                          90h                      110h                     190h

   TMR2            11h                          91h                      111h                     191h

   T2CON           12h       PR2                92h                      112h                     192h

   SSPBUF          13h       SSPADD             93h                      113h                     193h

   SSPCON          14h       SSPSTAT            94h                      114h                     194h

   CCPR1L          15h                          95h                      115h                     195h

   CCPR1H          16h                          96h                      116h                     196h

   CCP1CON         17h                          97h   General            117h  General            197h

   RCSTA           18h       TXSTA              98h   Purpose            118h  Purpose            198h

                                                      Register                 Register

   TXREG           19h       SPBRG              99h   16 Bytes           119h  16 Bytes           199h

   RCREG           1Ah                          9Ah                      11Ah                     19Ah

   CCPR2L          1Bh                          9Bh                      11Bh                     19Bh

   CCPR2H          1Ch                          9Ch                      11Ch                     19Ch

   CCP2CON         1Dh                          9Dh                      11Dh                     19Dh

                   1Eh                          9Eh                      11Eh                     19Eh

                   1Fh                          9Fh                      11Fh                     19Fh

                   20h                          A0h                      120h                     1A0h

   General                   General                  General                  General

   Purpose                   Purpose                  Purpose                  Purpose

   Register                  Register                 Register                 Register

   96 Bytes                  80 Bytes                 80 Bytes                 80 Bytes           1EFh

                                                EFh                      16Fh

                             accesses           F0h   accesses           170h  accesses           1F0h

                             70h-7Fh                  70h-7Fh                  70h-7Fh

                   7Fh       in Bank 0          FFh   in Bank 0          17Fh  in Bank 0          1FFh

   Bank 0                    Bank 1                   Bank 2                   Bank 3

   Unimplemented data memory locations, read as '0'.

*  Not a physical register.

These registers are not implemented on the PIC16C66.

   Note:           The upper 16 bytes of data memory in banks 1, 2, and 3 are mapped in Bank 0. This may require

                   relocation of data memory usage in the user application code if upgrading to the PIC16C66/67.

DS30234E-page  22                                                         1997-2013 Microchip Technology Inc.
                                                                                                                      PIC16C6X

4.2.2        SPECIAL FUNCTION REGISTERS:                                   The special function registers can be classified into two

                                                                           sets (core and peripheral). The registers associated

The Special Function Registers are registers used by                       with the “core” functions are described in this section

the CPU and peripheral modules for controlling the                         and those related to the operation of the peripheral fea-

desired operation of the device. These registers are                       tures are described in the section of that peripheral fea-

implemented as static RAM.                                                 ture.

TABLE        4-1:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C61

                                                                                                                             Value on:   Value on

Address      Name     Bit 7          Bit 6      Bit 5        Bit 4   Bit 3        Bit 2       Bit 1                   Bit 0  POR         all other

                                                                                                                                         resets(3)

Bank      0

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

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

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

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

04h(1)       FSR      Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

05h          PORTA    —              —          —           PORTA Data Latch when written: PORTA pins when read              ---x  xxxx  ---u  uuuu

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

07h               —   Unimplemented                                                                                          —           —

08h               —   Unimplemented                                                                                          —           —

09h               —   Unimplemented                                                                                          —           —

0Ah(1,2)     PCLATH   —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

0Bh(1)       INTCON   GIE            —          T0IE         INTE    RBIE         T0IF        INTF                    RBIF   0-00  000x  0-00  000u

Bank 1

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

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

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

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

84h(1)       FSR      Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

85h          TRISA    —              —          —           PORTA Data Direction Register                                    ---1  1111  ---1  1111

86h          TRISB    PORTB Data Direction Control Register                                                                  1111  1111  1111  1111

87h                –  Unimplemented                                                                                          —           —

88h                –  Unimplemented                                                                                          —           —

89h                –  Unimplemented                                                                                          —           —

8Ah(1,2)     PCLATH   —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

8Bh(1)       INTCON   GIE            —          T0IE         INTE    RBIE         T0IF        INTF                    RBIF   0-00 000x   0-00  000u

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented locations read as '0'.

             Shaded locations are unimplemented and read as ‘0’

Note    1:   These registers can be addressed from either bank.

        2:   The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the PC              whose con-

             tents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:   Other (non power-up) resets include external reset through MCLR and the Watchdog Timer Reset.

        4:   The IRP and RP1 bits are reserved on the PIC16C61, always maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                        DS30234E-page     23
PIC16C6X

TABLE       4-2:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C62/62A/R62

                                                                                                                               Value on:   Value on

Address     Name        Bit 7          Bit 6      Bit 5       Bit 4    Bit 3      Bit 2              Bit 1              Bit 0  POR,        all other

                                                                                                                               BOR         resets(3)

Bank 0

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

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

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

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

04h(1)      FSR         Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

05h         PORTA       —              —          PORTA Data Latch when written: PORTA pins when read                          --xx  xxxx  --uu  uuuu

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

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

08h              —      Unimplemented                                                                                          —           —

09h              —      Unimplemented                                                                                          —           —

0Ah(1,2)    PCLATH      —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

0Bh(1)      INTCON      GIE            PEIE       T0IE        INTE     RBIE       T0IF               INTF               RBIF   0000  000x  0000  000u

0Ch         PIR1        (6)            (6)        —           —        SSPIF      CCP1IF             TMR2IF   TMR1IF           00--  0000  00--  0000

0Dh              —      Unimplemented                                                                                          —           —

0Eh         TMR1L       Holding register for the Least Significant Byte of the 16-bit TMR1 register                            xxxx  xxxx  uuuu  uuuu

0Fh         TMR1H       Holding register for the Most Significant Byte of the 16-bit TMR1 register                             xxxx  xxxx  uuuu  uuuu

10h         T1CON       —              —          T1CKPS1     T1CKPS0  T1OSCEN    T1SYNC             TMR1CS   TMR1ON           --00  0000  --uu  uuuu

11h         TMR2        Timer2 module’s register                                                                               0000  0000  0000  0000

12h         T2CON       —       TOUTPS3           TOUTPS2     TOUTPS1  TOUTPS0    TMR2ON             T2CKPS1  T2CKPS0          -000  0000  -000  0000

13h         SSPBUF      Synchronous Serial Port Receive Buffer/Transmit Register                                               xxxx  xxxx  uuuu  uuuu

14h         SSPCON      WCOL    SSPOV             SSPEN       CKP      SSPM3      SSPM2              SSPM1    SSPM0            0000  0000  0000  0000

15h         CCPR1L      Capture/Compare/PWM1 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

16h         CCPR1H      Capture/Compare/PWM1 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

17h         CCP1CON     —              —          CCP1X       CCP1Y    CCP1M3     CCP1M2             CCP1M1   CCP1M0           --00  0000  --00  0000

18h-1Fh          —      Unimplemented                                                                                          —           —

Legend:     x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

            Shaded locations are unimplemented, read as ‘0’.

Note    1:  These registers can be addressed from either bank.

        2:  The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the PC whose

            contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:  Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:  The BOR     bit is reserved on the PIC16C62, always maintain this bit set.

        5:  The IRP and RP1 bits are reserved on the PIC16C62/62A/R62, always maintain these bits clear.

        6:  PIE1<7:6> and PIR1<7:6> are reserved on the PIC16C62/62A/R62, always maintain these bits clear.

DS30234E-page       24                                                                                  1997-2013 Microchip Technology Inc.
                                                                                                                        PIC16C6X

TABLE       4-2:     SPECIAL FUNCTION REGISTERS                      FOR THE PIC16C62/62A/R62                               (Cont.’d)

                                                                                                                            Value on:      Value on

Address     Name     Bit 7          Bit 6    Bit 5         Bit 4          Bit 3  Bit 2     Bit 1                     Bit 0  POR,           all other

                                                                                                                            BOR            resets(3)

Bank 1

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

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

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

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

84h(1)      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

87h         TRISC    PORTC Data Direction Register                                                                          1111  1111  1111  1111

88h               —  Unimplemented                                                                                          —              —

89h               —  Unimplemented                                                                                          —              —

8Ah(1,2)    PCLATH   —              —        —             Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

8Bh(1)      INTCON   GIE            PEIE     T0IE          INTE           RBIE   T0IF      INTF                      RBIF   0000  000x  0000  000u

8Ch         PIE1     (6)            (6)      —             —              SSPIE  CCP1IE    TMR2IE  TMR1IE                   00--  0000  00--  0000

8Dh               —  Unimplemented                                                                                          —              —

8Eh         PCON     —              —        —             —              —          —     POR     BOR(4)                   ----  --qq  ----  --uu

8Fh               —  Unimplemented                                                                                          —              —

90h               —  Unimplemented                                                                                          —              —

91h               —  Unimplemented                                                                                          —              —

92h         PR2      Timer2 Period Register                                                                                 1111  1111  1111  1111

93h         SSPADD   Synchronous Serial Port (I2C mode) Address Register                                                    0000  0000  0000  0000

94h         SSPSTAT  —              —        D/A              P             S    R/W       UA                        BF     --00  0000  --00  0000

95h-9Fh           —  Unimplemented                                                                                          —              —

Legend:     x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

            Shaded locations are unimplemented, read as ‘0’.

Note    1:  These registers can be addressed from either bank.

        2:  The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the                PC  whose

            contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:  Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:  The BOR  bit is reserved on the PIC16C62, always maintain this bit set.

        5:  The IRP and RP1 bits are reserved on the PIC16C62/62A/R62, always maintain these bits clear.

        6:  PIE1<7:6> and PIR1<7:6> are reserved on the PIC16C62/62A/R62, always maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                       DS30234E-page             25
                                                                                                                         PIC16C6X

TABLE        4-3:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C63/R63

                                                                                                                             Value on:   Value on

Address      Name     Bit 7          Bit 6      Bit 5       Bit 4    Bit 3      Bit 2              Bit 1              Bit 0  POR,        all other

                                                                                                                             BOR         resets(3)

Bank      0

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

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

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

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

04h(1)       FSR      Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

05h          PORTA    —              —          PORTA Data Latch when written: PORTA pins when read                          --xx  xxxx  --uu  uuuu

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

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

08h               —   Unimplemented                                                                                          —           —

09h               —   Unimplemented                                                                                          —           —

0Ah(1,2)     PCLATH   —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

0Bh(1)       INTCON   GIE            PEIE       T0IE        INTE     RBIE       T0IF               INTF               RBIF   0000  000x  0000  000u

0Ch          PIR1     (5)            (5)        RCIF        TXIF     SSPIF      CCP1IF             TMR2IF   TMR1IF           0000  0000  0000  0000

0Dh          PIR2     —              —          —           —–       —          —                    —      CCP2IF           ----  ---0  ----  ---0

0Eh          TMR1L    Holding register for the Least Significant Byte of the 16-bit TMR1 register                            xxxx  xxxx  uuuu  uuuu

0Fh          TMR1H    Holding register for the Most Significant Byte of the 16-bit TMR1 register                             xxxx  xxxx  uuuu  uuuu

10h          T1CON    —              —          T1CKPS1     T1CKPS0  T1OSCEN    T1SYNC             TMR1CS   TMR1ON           --00  0000  --uu  uuuu

11h          TMR2     Timer2 module’s register                                                                               0000  0000  0000  0000

12h          T2CON    —       TOUTPS3           TOUTPS2     TOUTPS1  TOUTPS0    TMR2ON             T2CKPS1  T2CKPS0          -000  0000  -000  0000

13h          SSPBUF   Synchronous Serial Port Receive Buffer/Transmit Register                                               xxxx  xxxx  uuuu  uuuu

14h          SSPCON   WCOL    SSPOV             SSPEN       CKP      SSPM3      SSPM2              SSPM1    SSPM0            0000  0000  0000  0000

15h          CCPR1L   Capture/Compare/PWM1 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

16h          CCPR1H   Capture/Compare/PWM1 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

17h          CCP1CON  —              —          CCP1X       CCP1Y    CCP1M3     CCP1M2             CCP1M1   CCP1M0           --00  0000  --00  0000

18h          RCSTA    SPEN           RX9        SREN        CREN     —          FERR               OERR     RX9D             0000  -00x  0000  -00x

19h          TXREG    USART Transmit Data Register                                                                           0000  0000  0000  0000

1Ah          RCREG    USART Receive Data Register                                                                            0000  0000  0000  0000

1Bh          CCPR2L   Capture/Compare/PWM2 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

1Ch          CCPR2H   Capture/Compare/PWM2 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

1Dh          CCP2CON  —              —          CCP2X       CCP2Y    CCP2M3     CCP2M2             CCP2M1   CCP2M0           --00  0000  --00  0000

1Eh-1Fh           —   Unimplemented                                                                                          —           —

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

             Shaded locations are unimplemented, read as ‘0’.

Note    1:   These registers can be addressed from either bank.

        2:   The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the PC whose

             contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:   Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:   The IRP and RP1 bits are reserved on the PIC16C63/R63, always maintain these bits clear.

        5:   PIE1<7:6> and PIR1<7:6> are reserved on the PIC16C63/R63, always maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                        DS30234E-page          26
                                                                                                                        PIC16C6X

TABLE       4-3:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C63/R63                                  (Cont.’d)

                                                                                                                            Value on:      Value on

Address     Name     Bit 7          Bit 6     Bit 5        Bit 4      Bit 3       Bit 2    Bit 1                     Bit 0  POR,           all other

                                                                                                                            BOR            resets(3)

Bank 1

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

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

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

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

84h(1)      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

87h         TRISC    PORTC Data Direction Register                                                                          1111  1111  1111  1111

88h               —  Unimplemented                                                                                          —              —

89h               —  Unimplemented                                                                                          —              —

8Ah(1,2)    PCLATH   —              —              —       Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

8Bh(1)      INTCON   GIE            PEIE      T0IE         INTE       RBIE        T0IF     INTF                      RBIF   0000  000x  0000  000u

8Ch         PIE1     (5)            (5)       RCIE         TXIE       SSPIE       CCP1IE   TMR2IE     TMR1IE                0000  0000  0000  0000

8Dh         PIE2     —              —              —       —                  —   —        —          CCP2IE                ----  ---0  ----  ---0

8Eh         PCON     —              —              —       —                  —   —        POR                       BOR    ----  --qq  ----  --uu

8Fh               —  Unimplemented                                                                                          —              —

90h               —  Unimplemented                                                                                          —              —

91h               —  Unimplemented                                                                                          —              —

92h         PR2      Timer2 Period Register                                                                                 1111  1111  1111  1111

93h         SSPADD   Synchronous Serial Port  (I2C mode)   Address  Register                                                0000  0000  0000  0000

94h         SSPSTAT  —              —         D/A             P               S   R/W      UA                        BF     --00  0000  --00  0000

95h               —  Unimplemented                                                                                          —              —

96h               —  Unimplemented                                                                                          —              —

97h               —  Unimplemented                                                                                          —              —

98h(2)      TXSTA    CSRC           TX9       TXEN         SYNC               —   BRGH     TRMT       TX9D                  0000  -010  0000  -010

99h(2)      SPBRG    Baud Rate Generator Register                                                                           0000  0000  0000  0000

9Ah               —  Unimplemented                                                                                          —              —

9Bh               —  Unimplemented                                                                                          —              —

9Ch               —  Unimplemented                                                                                          —              —

9Dh               —  Unimplemented                                                                                          —              —

9Eh               —  Unimplemented                                                                                          —              —

9Fh               —  Unimplemented                                                                                          —              —

Legend:     x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

            Shaded locations are unimplemented, read as ‘0’.

Note    1:  These registers can be addressed from either bank.

        2:  The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the                PC  whose

            contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:  Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:  The IRP and RP1 bits are reserved on the PIC16C63/R63, always maintain these bits clear.

        5:  PIE1<7:6> and PIR1<7:6> are reserved on the PIC16C63/R63, always maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                       DS30234E-page             27
PIC16C6X

TABLE       4-4:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C64/64A/R64

                                                                                                                               Value on:   Value on

Address     Name        Bit 7          Bit 6      Bit 5       Bit 4    Bit 3      Bit 2              Bit 1              Bit 0  POR,        all other

                                                                                                                               BOR         resets(3)

Bank 0

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

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

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

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

04h(1)      FSR         Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

05h         PORTA       —              —          PORTA Data Latch when written: PORTA pins when read                          --xx  xxxx  --uu  uuuu

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

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

08h         PORTD       PORTD Data Latch when written: PORTD pins when read                                                    xxxx  xxxx  uuuu  uuuu

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

0Ah(1,2)    PCLATH      —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

0Bh(1)      INTCON      GIE            PEIE       T0IE        INTE     RBIE       T0IF               INTF               RBIF   0000  000x  0000  000u

0Ch         PIR1        PSPIF          (6)        —           —        SSPIF      CCP1IF             TMR2IF   TMR1IF           00--  0000  00--  0000

0Dh              —      Unimplemented                                                                                          —           —

0Eh         TMR1L       Holding register for the Least Significant Byte of the 16-bit TMR1 register                            xxxx  xxxx  uuuu  uuuu

0Fh         TMR1H       Holding register for the Most Significant Byte of the 16-bit TMR1 register                             xxxx  xxxx  uuuu  uuuu

10h         T1CON       —              —          T1CKPS1     T1CKPS0  T1OSCEN    T1SYNC             TMR1CS   TMR1ON           --00  0000  --uu  uuuu

11h         TMR2        Timer2 module’s register                                                                               0000  0000  0000  0000

12h         T2CON       —       TOUTPS3           TOUTPS2     TOUTPS1  TOUTPS0    TMR2ON             T2CKPS1  T2CKPS0          -000  0000  -000  0000

13h         SSPBUF      Synchronous Serial Port Receive Buffer/Transmit Register                                               xxxx  xxxx  uuuu  uuuu

14h         SSPCON      WCOL    SSPOV             SSPEN       CKP      SSPM3      SSPM2              SSPM1    SSPM0            0000  0000  0000  0000

15h         CCPR1L      Capture/Compare/PWM1 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

16h         CCPR1H      Capture/Compare/PWM1 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

17h         CCP1CON     —              —          CCP1X       CCP1Y    CCP1M3     CCP1M2             CCP1M1   CCP1M0           --00  0000  --00  0000

18h-1Fh          —      Unimplemented                                                                                          —           —

Legend:     x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

            Shaded locations are unimplemented, read as ‘0’.

Note    1:  These registers can be addressed from either bank.

        2:  The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the PC whose

            contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:  Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:  The BOR     bit is reserved on the PIC16C64, always maintain this bit set.

        5:  The IRP and RP1 bits are reserved on the PIC16C64/64A/R64, always maintain these bits clear.

        6:  PIE1<6> and PIR1<6> are reserved on the PIC16C64/64A/R64, always maintain these bits clear.

DS30234E-page       28                                                                                  1997-2013 Microchip Technology Inc.
                                                                                                                         PIC16C6X

TABLE        4-4:     SPECIAL FUNCTION REGISTERS                      FOR THE PIC16C64/64A/R64                               (Cont.’d)

                                                                                                                             Value on:      Value on

Address      Name     Bit 7          Bit 6    Bit 5         Bit 4          Bit 3  Bit 2     Bit 1                     Bit 0  POR,           all other

                                                                                                                             BOR            resets(3)

Bank      1

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

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

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

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

84h(1)       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

87h          TRISC    PORTC Data Direction Register                                                                          1111  1111  1111  1111

88h          TRISD    PORTD Data Direction Register                                                                          1111  1111  1111  1111

89h          TRISE    IBF            OBF      IBOV          PSPMODE        —      PORTE Data Direction Bits                  0000  -111  0000  -111

8Ah(1,2)     PCLATH   —              —        —             Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

8Bh(1)       INTCON   GIE            PEIE     T0IE          INTE           RBIE   T0IF      INTF                      RBIF   0000  000x  0000  000u

8Ch          PIE1     PSPIE          (6)      —             —              SSPIE  CCP1IE    TMR2IE           TMR1IE          00--  0000  00--  0000

8Dh                —  Unimplemented                                                                                          —              —

8Eh          PCON     —              —        —             —              —          —     POR              BOR(4)          ----  --qq  ----  --uu

8Fh                —  Unimplemented                                                                                          —              —

90h                —  Unimplemented                                                                                          —              —

91h                —  Unimplemented                                                                                          —              —

92h          PR2      Timer2 Period Register                                                                                 1111  1111  1111  1111

93h          SSPADD   Synchronous Serial Port (I2C mode) Address Register                                                    0000  0000  0000  0000

94h          SSPSTAT  —              —        D/A              P             S    R/W       UA                        BF     --00  0000  --00  0000

95h-9Fh            —  Unimplemented                                                                                          —              —

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

             Shaded locations are unimplemented, read as ‘0’.

Note    1:   These registers can be addressed from either bank.

        2:   The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the                PC  whose

             contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:   Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:   The BOR  bit is reserved on the PIC16C64, always maintain this bit set.

        5:   The IRP and RP1 bits are reserved on the PIC16C64/64A/R64, always maintain these bits clear.

        6:   PIE1<6> and PIR1<6> are reserved on the PIC16C64/64A/R64, always maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                        DS30234E-page             29
PIC16C6X

TABLE        4-5:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C65/65A/R65

                                                                                                                                Value on:   Value on

Address      Name        Bit 7          Bit 6      Bit 5       Bit 4    Bit 3      Bit 2              Bit 1              Bit 0  POR,        all other

                                                                                                                                BOR         resets(3)

Bank      0

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

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

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

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

04h(1)       FSR         Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

05h          PORTA       —              —          PORTA Data Latch when written: PORTA pins when read                          --xx  xxxx  --uu  uuuu

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

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

08h          PORTD       PORTD Data Latch when written: PORTD pins when read                                                    xxxx  xxxx  uuuu  uuuu

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

0Ah(1,2)     PCLATH      —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

0Bh(1)       INTCON      GIE            PEIE       T0IE        INTE     RBIE       T0IF               INTF               RBIF   0000  000x  0000  000u

0Ch          PIR1        PSPIF          (6)        RCIF        TXIF     SSPIF      CCP1IF             TMR2IF   TMR1IF           0000  0000  0000  0000

0Dh          PIR2        —              —          —           —–       —                —              —      CCP2IF           ----  ---0  ----  ---0

0Eh          TMR1L       Holding register for the Least Significant Byte of the 16-bit TMR1 register                            xxxx  xxxx  uuuu  uuuu

0Fh          TMR1H       Holding register for the Most Significant Byte of the 16-bit TMR1 register                             xxxx  xxxx  uuuu  uuuu

10h          T1CON       —              —          T1CKPS1     T1CKPS0  T1OSCEN    T1SYNC             TMR1CS   TMR1ON           --00  0000  --uu  uuuu

11h          TMR2        Timer2 module’s register                                                                               0000  0000  0000  0000

12h          T2CON       —       TOUTPS3           TOUTPS2     TOUTPS1  TOUTPS0    TMR2ON             T2CKPS1  T2CKPS0          -000  0000  -000  0000

13h          SSPBUF      Synchronous Serial Port Receive Buffer/Transmit Register                                               xxxx  xxxx  uuuu  uuuu

14h          SSPCON      WCOL    SSPOV             SSPEN       CKP      SSPM3      SSPM2              SSPM1    SSPM0            0000  0000  0000  0000

15h          CCPR1L      Capture/Compare/PWM1 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

16h          CCPR1H      Capture/Compare/PWM1 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

17h          CCP1CON     —              —          CCP1X       CCP1Y    CCP1M3     CCP1M2             CCP1M1   CCP1M0           --00  0000  --00  0000

18h          RCSTA       SPEN           RX9        SREN        CREN     —          FERR               OERR     RX9D             0000  -00x  0000  -00x

19h          TXREG       USART Transmit Data Register                                                                           0000  0000  0000  0000

1Ah          RCREG       USART Receive Data Register                                                                            0000  0000  0000  0000

1Bh          CCPR2L      Capture/Compare/PWM2 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

1Ch          CCPR2H      Capture/Compare/PWM2 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

1Dh          CCP2CON     —              —          CCP2X       CCP2Y    CCP2M3     CCP2M2             CCP2M1   CCP2M0           --00  0000  --00  0000

1Eh-1Fh           —      Unimplemented                                                                                          —           —

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

             Shaded locations are unimplemented, read as ‘0’.

Note    1:   These registers can be addressed from either bank.

        2:   The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the PC whose

             contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:   Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:   The BOR     bit is reserved on the PIC16C65, always maintain this bit set.

        5:   The IRP and RP1 bits are reserved on the PIC16C65/65A/R65, always maintain these bits clear.

        6:   PIE1<6> and PIR1<6> are reserved on the PIC16C65/65A/R65, always maintain these bits clear.

DS30234E-page        30                                                                                  1997-2013 Microchip Technology Inc.
                                                                                                                         PIC16C6X

TABLE        4-5:     SPECIAL FUNCTION REGISTERS                      FOR THE PIC16C65/65A/R65                               (Cont.’d)

                                                                                                                             Value on:      Value on

Address      Name     Bit 7          Bit 6    Bit 5         Bit 4          Bit 3  Bit 2     Bit 1                     Bit 0  POR,           all other

                                                                                                                             BOR            resets(3)

Bank      1

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

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

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

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

84h(1)       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

87h          TRISC    PORTC Data Direction Register                                                                          1111  1111  1111  1111

88h          TRISD    PORTD Data Direction Register                                                                          1111  1111  1111  1111

89h          TRISE    IBF            OBF      IBOV          PSPMODE        —      PORTE Data Direction Bits                  0000  -111  0000  -111

8Ah(1,2)     PCLATH   —              —              —       Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

8Bh(1)       INTCON   GIE            PEIE     T0IE          INTE           RBIE   T0IF      INTF                      RBIF   0000  000x  0000  000u

8Ch          PIE1     PSPIE          (6)      RCIE          TXIE           SSPIE  CCP1IE    TMR2IE           TMR1IE          0000  0000  0000  0000

8Dh          PIE2     —              —              —       —              —          —     —                CCP2IE          ----  ---0  ----  ---0

8Eh          PCON     —              —              —       —              —          —     POR              BOR(4)          ----  --qq  ----  --uu

8Fh                —  Unimplemented                                                                                          —              —

90h                —  Unimplemented                                                                                          —              —

91h                —  Unimplemented                                                                                          —              —

92h          PR2      Timer2 Period Register                                                                                 1111  1111  1111  1111

93h          SSPADD   Synchronous Serial Port (I2C mode) Address Register                                                    0000  0000  0000  0000

94h          SSPSTAT  —              —        D/A              P             S    R/W       UA                        BF     --00  0000  --00  0000

95h                —  Unimplemented                                                                                          —              —

96h                —  Unimplemented                                                                                          —              —

97h                —  Unimplemented                                                                                          —              —

98h          TXSTA    CSRC           TX9      TXEN          SYNC           —      BRGH      TRMT             TX9D            0000  -010  0000  -010

99h          SPBRG    Baud Rate Generator Register                                                                           0000  0000  0000  0000

9Ah                —  Unimplemented                                                                                          —              —

9Bh                —  Unimplemented                                                                                          —              —

9Ch                —  Unimplemented                                                                                          —              —

9Dh                —  Unimplemented                                                                                          —              —

9Eh                —  Unimplemented                                                                                          —              —

9Fh                —  Unimplemented                                                                                          —              —

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

             Shaded locations are unimplemented, read as ‘0’.

Note    1:   These registers can be addressed from either bank.

        2:   The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the                PC  whose

             contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:   Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:   The BOR  bit is reserved on the PIC16C65, always maintain this bit set.

        5:   The IRP and RP1 bits are reserved on the PIC16C65/65A/R65, always maintain these bits clear.

        6:   PIE1<6> and PIR1<6> are reserved on the PIC16C65/65A/R65, always maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                        DS30234E-page             31
PIC16C6X

TABLE        4-6:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C66/67

                                                                                                                                Value on:   Value on

Address      Name        Bit 7          Bit 6      Bit 5       Bit 4    Bit 3      Bit 2              Bit 1              Bit 0  POR,        all other

                                                                                                                                BOR         resets(3)

Bank      0

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

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

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

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

04h(1)       FSR         Indirect data memory address pointer                                                                   xxxx  xxxx  uuuu  uuuu

05h          PORTA       —              —          PORTA Data Latch when written: PORTA pins when read                          --xx  xxxx  --uu  uuuu

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

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

08h(5)       PORTD       PORTD Data Latch when written: PORTD pins when read                                                    xxxx  xxxx  uuuu  uuuu

09h(5)       PORTE       —              —          —           —        —          RE2                RE1                RE0    ----  -xxx  ----  -uuu

0Ah(1,2)     PCLATH      —              —          —           Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

0Bh(1)       INTCON      GIE            PEIE       T0IE        INTE     RBIE       T0IF               INTF               RBIF   0000  000x  0000  000u

0Ch          PIR1        PSPIF(6)       (4)        RCIF        TXIF     SSPIF      CCP1IF             TMR2IF   TMR1IF           0000  0000  0000  0000

0Dh          PIR2        —              —          —           —–       —          —                    —      CCP2IF           ----  ---0  ----  ---0

0Eh          TMR1L       Holding register for the Least Significant Byte of the 16-bit TMR1 register                            xxxx  xxxx  uuuu  uuuu

0Fh          TMR1H       Holding register for the Most Significant Byte of the 16-bit TMR1 register                             xxxx  xxxx  uuuu  uuuu

10h          T1CON       —              —          T1CKPS1     T1CKPS0  T1OSCEN    T1SYNC             TMR1CS   TMR1ON           --00  0000  --uu  uuuu

11h          TMR2        Timer2 module’s register                                                                               0000  0000  0000  0000

12h          T2CON       —         TOUTPS3         TOUTPS2     TOUTPS1  TOUTPS0    TMR2ON             T2CKPS1  T2CKPS0          -000  0000  -000  0000

13h          SSPBUF      Synchronous Serial Port Receive Buffer/Transmit Register                                               xxxx  xxxx  uuuu  uuuu

14h          SSPCON      WCOL      SSPOV           SSPEN       CKP      SSPM3      SSPM2              SSPM1    SSPM0            0000  0000  0000  0000

15h          CCPR1L      Capture/Compare/PWM1 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

16h          CCPR1H      Capture/Compare/PWM1 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

17h          CCP1CON     —              —          CCP1X       CCP1Y    CCP1M3     CCP1M2             CCP1M1   CCP1M0           --00  0000  --00  0000

18h          RCSTA       SPEN           RX9        SREN        CREN     —          FERR               OERR     RX9D             0000  -00x  0000  -00x

19h          TXREG       USART Transmit Data Register                                                                           0000  0000  0000  0000

1Ah          RCREG       USART Receive Data Register                                                                            0000  0000  0000  0000

1Bh          CCPR2L      Capture/Compare/PWM2 (LSB)                                                                             xxxx  xxxx  uuuu  uuuu

1Ch          CCPR2H      Capture/Compare/PWM2 (MSB)                                                                             xxxx  xxxx  uuuu  uuuu

1Dh          CCP2CON     —              —          CCP2X       CCP2Y    CCP2M3     CCP2M2             CCP2M1   CCP2M0           --00  0000  --00  0000

1Eh-1Fh           —      Unimplemented                                                                                          —           —

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

             Shaded locations are unimplemented, read as ‘0’.

Note    1:   These registers can be addressed from any bank.

        2:   The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the PC whose

             contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:   Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:   PIE1<6> and PIR1<6> are reserved on the PIC16C66/67, always maintain these bits clear.

        5:   PORTD, PORTE, TRISD, and TRISE are not implemented on the PIC16C66, read as '0'.

        6:   PSPIF (PIR1<7>) and PSPIE (PIE1<7>) are reserved on the PIC16C66, maintain these bits clear.

DS30234E-page        32                                                                                  1997-2013 Microchip Technology Inc.
                                                                                                                        PIC16C6X

TABLE       4-6:     SPECIAL FUNCTION REGISTERS FOR THE PIC16C66/67                                 (Cont.’d)

                                                                                                                            Value on:      Value on

Address     Name     Bit 7          Bit 6     Bit 5        Bit 4      Bit 3       Bit 2    Bit 1                     Bit 0  POR,           all other

                                                                                                                            BOR            resets(3)

Bank 1

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

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

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

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

84h(1)      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

87h         TRISC    PORTC Data Direction Register                                                                          1111  1111  1111  1111

88h(5)      TRISD    PORTD Data Direction Register                                                                          1111  1111  1111  1111

89h(5)      TRISE    IBF            OBF       IBOV         PSPMODE            —   PORTE Data Direction Bits                 0000  -111  0000  -111

8Ah(1,2)    PCLATH   —              —              —       Write Buffer for the upper 5 bits of the Program Counter         ---0  0000  ---0  0000

8Bh(1)      INTCON   GIE            PEIE      T0IE         INTE       RBIE        T0IF     INTF                      RBIF   0000  000x  0000  000u

8Ch         PIE1     PSPIE(6)       (4)       RCIE         TXIE       SSPIE       CCP1IE   TMR2IE            TMR1IE         0000  0000  0000  0000

8Dh         PIE2     —              —              —       —                  —   —        —                 CCP2IE         ----  ---0  ----  ---0

8Eh         PCON     —              —              —       —                  —   —        POR                       BOR    ----  --qq  ----  --uu

8Fh               —  Unimplemented                                                                                          —              —

90h               —  Unimplemented                                                                                          —              —

91h               —  Unimplemented                                                                                          —              —

92h         PR2      Timer2 Period Register                                                                                 1111  1111  1111  1111

93h         SSPADD   Synchronous Serial Port  (I2C mode)   Address  Register                                                0000  0000  0000  0000

94h         SSPSTAT  SMP            CKE       D/A             P               S   R/W      UA                        BF     0000  0000  0000  0000

95h               —  Unimplemented                                                                                          —              —

96h               —  Unimplemented                                                                                          —              —

97h               —  Unimplemented                                                                                          —              —

98h         TXSTA    CSRC           TX9       TXEN         SYNC               —   BRGH     TRMT              TX9D           0000  -010  0000  -010

99h         SPBRG    Baud Rate Generator Register                                                                           0000  0000  0000  0000

9Ah               —  Unimplemented                                                                                          —              —

9Bh               —  Unimplemented                                                                                          —              —

9Ch               —  Unimplemented                                                                                          —              —

9Dh               —  Unimplemented                                                                                          —              —

9Eh               —  Unimplemented                                                                                          —              —

9Fh               —  Unimplemented                                                                                          —              —

Legend:     x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

            Shaded locations are unimplemented, read as ‘0’.

Note    1:  These registers can be addressed from any bank.

        2:  The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the                PC  whose

            contents are transferred to the upper byte of the program counter. (PC<12:8>)

        3:  Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

        4:  PIE1<6> and PIR1<6> are reserved on the PIC16C66/67, always maintain these bits clear.

        5:  PORTD, PORTE, TRISD, and TRISE are not implemented on the PIC16C66, read as '0'.

        6:  PSPIF (PIR1<7>) and PSPIE (PIE1<7>) are reserved on the PIC16C66, maintain these bits clear.

 1997-2013 Microchip Technology Inc.                                                                                       DS30234E-page             33
PIC16C6X

TABLE        4-6:    SPECIAL FUNCTION REGISTERS FOR THE PIC16C66/67                                           (Cont.’d)

                                                                                                                                  Value on:      Value on

Address      Name        Bit 7          Bit 6      Bit 5       Bit 4         Bit 3          Bit 2      Bit 1  Bit 0               POR,           all other

                                                                                                                                  BOR            resets(3)

Bank 2

100h(1)      INDF        Addressing this location uses contents of FSR to address data      memory     (not a physical register)  0000  0000  0000  0000

101h         TMR0        Timer0 module’s register                                                                                 xxxx  xxxx  uuuu  uuuu

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

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

104h(1)      FSR         Indirect data memory address pointer                                                                     xxxx  xxxx  uuuu  uuuu

105h              —      Unimplemented                                                                                            —              —

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

107h              —      Unimplemented                                                                                            —              —

108h              —      Unimplemented                                                                                            —              —

109h              —      Unimplemented                                                                                            —              —

10Ah(1,2)    PCLATH      —              —          —           Write Buffer for the upper   5 bits of  the Program Counter        ---0  0000  ---0  0000

10Bh(1)      INTCON      GIE            PEIE       T0IE        INTE          RBIE           T0IF       INTF   RBIF                0000  000x  0000  000u

10Ch-             —      Unimplemented                                                                                            —              —

10Fh

Bank 3

180h(1)      INDF        Addressing this location uses contents of FSR to    address data   memory     (not a physical register)  0000  0000  0000  0000

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

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

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

184h(1)      FSR         Indirect data memory address pointer                                                                     xxxx  xxxx  uuuu  uuuu

185h              —      Unimplemented                                                                                            —              —

186h         TRISB       PORTB Data Direction Register                                                                            1111  1111  1111  1111

187h              —      Unimplemented                                                                                            —              —

188h              —      Unimplemented                                                                                            —              —

189h              —      Unimplemented                                                                                            —              —

18Ah(1,2)    PCLATH      —              —          —           Write Buffer  for the upper  5 bits of  the Program Counter        ---0  0000  ---0  0000

18Bh(1)      INTCON      GIE            PEIE       T0IE        INTE          RBIE           T0IF       INTF   RBIF                0000  000x  0000  000u

18Ch-             —      Unimplemented                                                                                            —              —

19Fh

Legend:      x = unknown, u = unchanged, q = value depends on condition, - = unimplemented location read as '0'.

             Shaded locations are unimplemented, read as ‘0’.

Note     1:  These registers can be addressed from any bank.

         2:  The upper byte of the Program Counter (PC) is not directly accessible. PCLATH is a holding register for the                     PC  whose

             contents are transferred to the upper byte of the program counter. (PC<12:8>)

         3:  Other (non power-up) resets include external reset through MCLR and the Watchdog Timer reset.

         4:  PIE1<6> and PIR1<6> are reserved on the PIC16C66/67, always maintain these bits clear.

         5:  PORTD, PORTE, TRISD, and TRISE are not implemented on the PIC16C66, read as '0'.

         6:  PSPIF (PIR1<7>) and PSPIE (PIE1<7>) are reserved on the PIC16C66, maintain these bits clear.

DS30234E-page        34                                                                                 1997-2013 Microchip Technology Inc.
                                                                                                         PIC16C6X

4.2.2.1     STATUS REGISTER                                                 It is recommended, therefore, that only BCF,            BSF,

Applicable Devices                                                          SWAPF and MOVWF instructions are used to alter the

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                            STATUS    register  because  these   instructions       do     not

The STATUS register, shown in Figure 4-9, contains                          affect the Z, C or DC bits from the STATUS register. For

the arithmetic status of the ALU, the RESET status and                      other instructions, not affecting any status bits, see the

the bank select bits for data memory.                                       “Instruction Set Summary.”

The STATUS register can be the destination for any                             Note 1:  For those devices that do not use bits IRP

instruction, as with any other register. If the STATUS                                  and RP1 (STATUS<7:6>), maintain these

register is the destination for an instruction that affects                             bits clear to ensure   upward compatibility

the Z, DC or C bits, then the write to these three bits is                              with future products.

disabled. These bits are set or cleared according to the                       Note 2:  The C and DC bits operate as a borrow

device logic. Furthermore, the TO and PD bits are not                                   and digit borrow bit, respectively, in sub-

writable. Therefore, the result of an instruction with the                              traction.  See   the   SUBLW  and           SUBWF

STATUS register as destination may be different than                                    instructions for examples.

intended.

For example, CLRF        STATUS will clear the upper-three

bits and set the Z bit.  This leaves the STATUS register

as 000u     u1uu (where u = unchanged).

FIGURE 4-9:         STATUS REGISTER (ADDRESS                 03h,         83h, 103h, 183h)

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

                                                                                                   - n = Value at POR reset

                                                                                                   x  = unknown

bit 7:      IRP: RegIster Bank Select bit (used for indirect addressing)

            1 = Bank 2, 3 (100h - 1FFh)

            0 = Bank 0, 1 (00h - FFh)

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   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 (for ADDWF, ADDLW,SUBLW,           and  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 (for ADDWF, ADDLW,SUBLW,     and        SUBWF instructions)( For borrow the polarity is reversed).

            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

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

 1997-2013 Microchip Technology Inc.                                                                                DS30234E-page         35
PIC16C6X

4.2.2.2     OPTION REGISTER

Applicable Devices                                                          Note:  To achieve a 1:1 prescaler assignment for

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                   TMR0 register, assign the prescaler to the

The OPTION register is a readable and writable regis-                              Watchdog Timer.

ter which contains various control bits to configure the

TMR0/WDT    prescaler,  the    external      INT    interrupt,

TMR0, and the weak pull-ups on PORTB.

FIGURE 4-10:        OPTION REGISTER (ADDRESS 81h,                      181h)

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

RBPU        INTEDG      T0CS     T0SE              PSA          PS2         PS1    PS0    R   = Readable bit

bit7                                                                               bit0   W   = Writable bit

                                                                                          U   = Unimplemented bit,

                                                                                              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

DS30234E-page  36                                                                          1997-2013 Microchip Technology Inc.
                                                                                                         PIC16C6X

4.2.2.3       INTCON REGISTER                                             Note:          Interrupt flag bits get set when an interrupt

Applicable Devices                                                                       condition occurs regardless of the state of

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                         its corresponding enable bit or the global

The INTCON Register is a readable and writable regis-                                    enable bit, GIE (INTCON<7>).

ter which contains the various enable and flag bits for

the TMR0 register overflow, RB port change and exter-

nal RB0/INT pin interrupts.

FIGURE 4-11:        INTCON REGISTER (ADDRESS 0Bh, 8Bh, 10Bh 18Bh)

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

     GIE      PEIE            T0IE         INTE       RBIE      T0IF      INTF           RBIF        R   = Readable bit

bit7                                                                                        bit0     W   = Writable bit

                                                                                                     U   = Unimplemented bit,

                                                                                                         read as ‘0’

                                                                                                     -n  = Value at POR reset

                                                                                                     x   = unknown

bit   7:      GIE:(1) Global Interrupt Enable bit

              1 = Enables all un-masked interrupts

              0 = Disables all interrupts

bit   6:      PEIE:(2) 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 overflow interrupt

              0 = Disables the TMR0 overflow 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 = At least one of the RB7:RB4 pins changed state (see Section 5.2 to clear      the  interrupt)

              0 = None of the RB7:RB4 pins have changed state

Note      1:  For the PIC16C61/62/64/65, if an interrupt occurs while the GIE bit is being cleared, the GIE bit may unintentionally

              be re-enabled by the RETFIE instruction in the user’s Interrupt Service Routine. Refer to Section 13.5 for a detailed

              description.

          2:  The PEIE bit (bit6) is unimplemented on the PIC16C61, read as '0'.

      Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the

      global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to

      enabling an interrupt.

 1997-2013 Microchip Technology Inc.                                                                                 DS30234E-page     37
PIC16C6X

4.2.2.4     PIE1 REGISTER                                          Note:   Bit  PEIE  (INTCON<6>)         must  be  set  to

Applicable Devices                                                         enable any peripheral interrupt.

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

This register contains the individual enable bits for the

peripheral interrupts.

FIGURE      4-12:   PIE1 REGISTER FOR PIC16C62/62A/R62 (ADDRESS 8Ch)

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

      —        —        —    —                 SSPIE       CCP1IE  TMR2IE  TMR1IE     R   = Readable bit

bit7                                                                            bit0  W   = Writable bit

                                                                                      U   = Unimplemented bit,

                                                                                          read as ‘0’

                                                                                      -n  = Value at POR reset

bit   7-6:  Reserved: Always maintain these bits clear.

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

bit   3:    SSPIE: Synchronous Serial Port Interrupt Enable bit

            1 = Enables the SSP interrupt

            0 = Disables the SSP interrupt

bit   2:    CCP1IE: CCP1 Interrupt Enable bit

            1 = Enables the CCP1 interrupt

            0 = Disables the CCP1 interrupt

bit   1:    TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

            1 = Enables the TMR2 to PR2 match interrupt

            0 = Disables the TMR2 to PR2 match interrupt

bit   0:    TMR1IE: TMR1 Overflow Interrupt Enable bit

            1 = Enables the TMR1 overflow interrupt

            0 = Disables the TMR1 overflow interrupt

DS30234E-page      38                                                               1997-2013 Microchip Technology      Inc.
                                                                                                PIC16C6X

FIGURE 4-13:     PIE1 REGISTER FOR PIC16C63/R63/66 (ADDRESS 8Ch)

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

      —       —    RCIE                TXIE    SSPIE      CCP1IE         TMR2IE  TMR1IE  R   =  Readable bit

bit7                                                                             bit0    W   =  Writable bit

                                                                                         U   =  Unimplemented bit,

                                                                                                read as ‘0’

                                                                                         -n  =  Value at POR reset

bit   7-6:  Reserved: Always maintain these bits clear.

bit   5:    RCIE: USART Receive Interrupt Enable bit

            1 = Enables the USART receive interrupt

            0 = Disables the USART receive interrupt

bit   4:    TXIE: USART Transmit Interrupt Enable bit

            1 = Enables the USART transmit interrupt

            0 = Disables the USART transmit interrupt

bit   3:    SSPIE: Synchronous Serial Port Interrupt Enable bit

            1 = Enables the SSP interrupt

            0 = Disables the SSP interrupt

bit   2:    CCP1IE: CCP1 Interrupt Enable bit

            1 = Enables the CCP1 interrupt

            0 = Disables the CCP1 interrupt

bit   1:    TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

            1 = Enables the TMR2 to PR2 match interrupt

            0 = Disables the TMR2 to PR2 match interrupt

bit   0:    TMR1IE: TMR1 Overflow Interrupt Enable bit

            1 = Enables the TMR1 overflow interrupt

            0 = Disables the TMR1 overflow interrupt

FIGURE 4-14:     PIE1 REGISTER FOR PIC16C64/64A/R64 (ADDRESS 8Ch)

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

PSPIE         —    —                   —       SSPIE      CCP1IE         TMR2IE  TMR1IE  R   =  Readable bit

bit7                                                                             bit0    W   =  Writable bit

                                                                                         U   =  Unimplemented bit,

                                                                                                read as ‘0’

                                                                                         -n  =  Value at POR reset

bit   7:    PSPIE: Parallel Slave Port Read/Write Interrupt Enable  bit

            1 = Enables the PSP read/write interrupt

            0 = Disables the PSP read/write interrupt

bit   6:    Reserved: Always maintain this bit clear.

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

bit   3:    SSPIE: Synchronous Serial Port Interrupt Enable bit

            1 = Enables the SSP interrupt

            0 = Disables the SSP interrupt

bit   2:    CCP1IE: CCP1 Interrupt Enable bit

            1 = Enables the CCP1 interrupt

            0 = Disables the CCP1 interrupt

bit   1:    TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

            1 = Enables the TMR2 to PR2 match interrupt

            0 = Disables the TMR2 to PR2 match interrupt

bit   0:    TMR1IE: TMR1 Overflow Interrupt Enable bit

            1 = Enables the TMR1 overflow interrupt

            0 = Disables the TMR1 overflow interrupt

 1997-2013 Microchip Technology Inc.                                                                        DS30234E-page  39
PIC16C6X

FIGURE 4-15:      PIE1 REGISTER FOR PIC16C65/65A/R65/67 (ADDRESS                          8Ch)

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

PSPIE          —   RCIE   TXIE               SSPIE      CCP1IE         TMR2IE  TMR1IE     R   = Readable bit

bit7                                                                           bit0       W   = Writable bit

                                                                                          U   = Unimplemented bit,

                                                                                                read as ‘0’

                                                                                          -n  = Value at POR reset

bit   7:  PSPIE: Parallel Slave Port Read/Write Interrupt Enable  bit

          1 = Enables the PSP read/write interrupt

          0 = Disables the PSP read/write interrupt

bit   6:  Reserved: Always maintain this bit clear.

bit   5:  RCIE: USART Receive Interrupt Enable bit

          1 = Enables the USART receive interrupt

          0 = Disables the USART receive interrupt

bit   4:  TXIE: USART Transmit Interrupt Enable bit

          1 = Enables the USART transmit interrupt

          0 = Disables the USART transmit interrupt

bit   3:  SSPIE: Synchronous Serial Port Interrupt Enable bit

          1 = Enables the SSP interrupt

          0 = Disables the SSP interrupt

bit   2:  CCP1IE: CCP1 Interrupt Enable bit

          1 = Enables the CCP1 interrupt

          0 = Disables the CCP1 interrupt

bit   1:  TMR2IE: TMR2 to PR2 Match Interrupt Enable bit

          1 = Enables the TMR2 to PR2 match interrupt

          0 = Disables the TMR2 to PR2 match interrupt

bit   0:  TMR1IE: TMR1 Overflow Interrupt Enable bit

          1 = Enables the TMR1 overflow interrupt

          0 = Disables the TMR1 overflow interrupt

DS30234E-page  40                                                                        1997-2013 Microchip Technology  Inc.
                                                                                                      PIC16C6X

4.2.2.5     PIR1 REGISTER                                                 Note:       Interrupt flag bits get set when an interrupt

Applicable Devices                                                                    condition occurs regardless of the state of

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                      its corresponding enable bit or the global

This register contains the individual flag bits for      the                          enable bit, GIE (INTCON<7>). User soft-

peripheral interrupts.                                                                ware should ensure the appropriate inter-

                                                                                      rupt flag bits are clear prior to enabling an

                                                                                      interrupt.

FIGURE 4-16:        PIR1 REGISTER FOR PIC16C62/62A/R62 (ADDRESS 0Ch)

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

      —       —               —        —       SSPIF      CCP1IF      TMR2IF          TMR1IF      R   = Readable bit

bit7                                                                                  bit0        W   = Writable bit

                                                                                                  U   = Unimplemented bit,

                                                                                                      read as ‘0’

                                                                                                  -n  = Value at POR reset

bit   7-6:  Reserved: Always maintain these bits clear.

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

bit   3:    SSPIF: Synchronous Serial Port Interrupt Flag bit

            1 = The transmission/reception is complete (must be cleared in software)

            0 = Waiting to transmit/receive

bit   2:    CCP1IF: CCP1 Interrupt Flag bit

            Capture Mode

            1 = A TMR1 register capture occurred (must be cleared in software)

            0 = No TMR1 register capture occurred

            Compare Mode

            1 = A TMR1 register compare match occurred (must be cleared in software)

            0 = No TMR1 register compare match occurred

            PWM Mode

            Unused in this mode

bit   1:    TMR2IF: TMR2 to PR2 Match Interrupt Flag bit

            1 = TMR2 to PR2 match occurred (must be cleared in software)

            0 = No TMR2 to PR2 match occurred

bit   0:    TMR1IF: TMR1 Overflow Interrupt Flag bit

            1 = TMR1 register overflow occurred (must be cleared in software)

            0 = No TMR1 register overflow occurred

      Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the

      global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to

      enabling an interrupt.

 1997-2013 Microchip Technology Inc.                                                                              DS30234E-page     41
PIC16C6X

FIGURE 4-17:      PIR1 REGISTER FOR PIC16C63/R63/66 (ADDRESS 0Ch)

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

      —        —              RCIF  TXIF           SSPIF  CCP1IF      TMR2IF          TMR1IF  R   = Readable bit

bit7                                                                                  bit0    W   = Writable bit

                                                                                              U   = Unimplemented bit,

                                                                                                  read as ‘0’

                                                                                              -n  = Value at POR reset

bit   7-6:  Reserved: Always maintain these bits clear.

bit   5:    RCIF: USART Receive Interrupt Flag bit

            1 = The USART receive buffer is full (cleared by reading RCREG)

            0 = The USART receive buffer is empty

bit   4:    TXIF: USART Transmit Interrupt Flag bit

            1 = The USART transmit buffer is empty (cleared by writing to TXREG)

            0 = The USART transmit buffer is full

bit   3:    SSPIF: Synchronous Serial Port Interrupt Flag bit

            1 = The transmission/reception is complete (must be cleared in software)

            0 = Waiting to transmit/receive

bit   2:    CCP1IF: CCP1 Interrupt Flag bit

            Capture Mode

            1 = A TMR1 register capture occurred (must be cleared in software)

            0 = No TMR1 register capture occurred

            Compare Mode

            1 = A TMR1 register compare match occurred (must be cleared in software)

            0 = No TMR1 register compare match occurred

            PWM Mode

            Unused in this mode

bit   1:    TMR2IF: TMR2 to PR2 Match Interrupt Flag bit

            1 = TMR2 to PR2 match occurred (must be cleared in software)

            0 = No TMR2 to PR2 match occurred

bit   0:    TMR1IF: TMR1 Overflow Interrupt Flag bit

            1 = TMR1 register overflow occurred (must be cleared in software)

            0 = No TMR1 register overflow occurred

      Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the

      global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to

      enabling an interrupt.

DS30234E-page  42                                                                              1997-2013 Microchip Technology       Inc.
                                                                                                     PIC16C6X

FIGURE 4-18:     PIR1 REGISTER FOR PIC16C64/64A/R64 (ADDRESS 0Ch)

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

PSPIF         —               —        —       SSPIF        CCP1IF    TMR2IF          TMR1IF     R   = Readable bit

bit7                                                                                       bit0  W   = Writable bit

                                                                                                 U   = Unimplemented bit,

                                                                                                     read as ‘0’

                                                                                                 -n  = Value at POR reset

bit   7:    PSPIF: Parallel Slave Port Interrupt Flag bit

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

            0 = No read or write operation has taken place

bit   6:    Reserved: Always maintain this bit clear.

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

bit   3:    SSPIF: Synchronous Serial Port Interrupt Flag bit

            1 = The transmission/reception is complete (must be cleared in software)

            0 = Waiting to transmit/receive

bit   2:    CCP1IF: CCP1 Interrupt Flag bit

            Capture Mode

            1 = A TMR1 register capture occurred (must be cleared in software)

            0 = No TMR1 register capture occurred

            Compare Mode

            1 = A TMR1 register compare match occurred (must be cleared in software)

            0 = No TMR1 register compare match occurred

            PWM Mode

            Unused in this mode

bit   1:    TMR2IF: TMR2 to PR2 Match Interrupt Flag bit

            1 = TMR2 to PR2 match occurred (must be cleared in software)

            0 = No TMR2 to PR2 match occurred

bit   0:    TMR1IF: TMR1 Overflow Interrupt Flag bit

            1 = TMR1 register overflow occurred (must be cleared in software)

            0 = No TMR1 register occurred

      Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the

      global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to

      enabling an interrupt.

 1997-2013 Microchip Technology Inc.                                                                             DS30234E-page      43
PIC16C6X

FIGURE 4-19:      PIR1 REGISTER FOR PIC16C65/65A/R65/67 (ADDRESS 0Ch)

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

PSPIF          —              RCIF  TXIF         SSPIF    CCP1IF    TMR2IF          TMR1IF     R   = Readable bit

bit7                                                                                     bit0  W   = Writable bit

                                                                                               U   = Unimplemented bit,

                                                                                                   read as ‘0’

                                                                                               -n  = Value at POR reset

bit   7:  PSPIF: Parallel Slave Port Interrupt Flag bit

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

          0 = No read or write operation has taken place

bit   6:  Reserved: Always maintain this bit clear.

bit   5:  RCIF: USART Receive Interrupt Flag bit

          1 = The USART receive buffer is full (cleared by reading RCREG)

          0 = The USART receive buffer is empty

bit   4:  TXIF: USART Transmit Interrupt Flag bit

          1 = The USART transmit buffer is empty     (cleared  by  writing to  TXREG)

          0 = The USART transmit buffer is full

bit   3:  SSPIF: Synchronous Serial Port Interrupt Flag bit

          1 = The transmission/reception is complete (must be cleared in software)

          0 = Waiting to transmit/receive

bit   2:  CCP1IF: CCP1 Interrupt Flag bit

          Capture Mode

          1 = A TMR1 register capture occurred (must be cleared in software)

          0 = No TMR1 register capture occurred

          Compare Mode

          1 = A TMR1 register compare match occurred (must be cleared in software)

          0 = No TMR1 register compare match occurred

          PWM Mode

          Unused in this mode

bit   1:  TMR2IF: TMR2 to PR2 Match Interrupt Flag bit

          1 = TMR2 to PR2 match occurred (must be cleared in software)

          0 = No TMR2 to PR2 match occurred

bit   0:  TMR1IF: TMR1 Overflow Interrupt Flag bit

          1 = TMR1 register overflow occurred (must be cleared in software)

          0 = No TMR1 register overflow occurred

      Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the

      global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to

      enabling an interrupt.

DS30234E-page  44                                                                              1997-2013 Microchip Technology       Inc.
                                                                                PIC16C6X

4.2.2.6   PIE2 REGISTER

Applicable Devices

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

This register contains the CCP2 interrupt enable bit.

FIGURE 4-20:        PIE2 REGISTER (ADDRESS 8Dh)

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

      —       —     —                  —     —         —    —    CCP2IE  R   =  Readable bit

bit7                                                             bit0    W   =  Writable bit

                                                                         U   =  Unimplemented bit,

                                                                                read as ‘0’

                                                                         -n  =  Value at POR reset

bit 7-1:  Unimplemented: Read as '0'

bit   0:  CCP2IE: CCP2 Interrupt Enable bit

          1 = Enables the CCP2 interrupt

          0 = Disables the CCP2 interrupt

 1997-2013 Microchip Technology Inc.                                                        DS30234E-page  45
PIC16C6X

4.2.2.7   PIR2 REGISTER                                          .

Applicable Devices                                                  Note:      Interrupt flag bits get set when an interrupt

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                               condition occurs regardless of the state of

This register contains the CCP2 interrupt flag bit.                            its corresponding enable bit or the global

                                                                               enable bit, GIE (INTCON<7>). User soft-

                                                                               ware should ensure the appropriate inter-

                                                                               rupt flag bits are clear prior to enabling an

                                                                               interrupt.

FIGURE 4-21:        PIR2 REGISTER (ADDRESS           0Dh)

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

      —        —              —    —             —     —            —          CCP2IF        R   = Readable bit

bit7                                                                                   bit0  W   = Writable bit

                                                                                             U   = Unimplemented bit,

                                                                                                 read as ‘0’

                                                                                             -n  = Value at POR reset

bit 7-1:  Unimplemented: Read as '0'

bit   0:  CCP2IF: CCP2 Interrupt Flag bit

          Capture Mode

          1 = A TMR1 register capture occurred (must be cleared  in software)

          0 = No TMR1 register capture occurred

          Compare Mode

          1 = A TMR1 register compare match occurred (must be    cleared in software)

          0 = No TMR1 register compare match occurred

          PWM Mode

          Unused in this mode

      Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the

      global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to

      enabling an interrupt.

DS30234E-page  46                                                                       1997-2013 Microchip Technology Inc.
                                                                                                   PIC16C6X

4.2.2.8   PCON REGISTER                                          Note:  BOR    is  unknown         on      Power-on          Reset.  It

Applicable Devices                                                      must then be set by the user and checked

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                        on  subsequent             resets  to      see   if  BOR     is

The Power Control register (PCON) contains a flag bit                   clear, indicating a brown-out has occurred.

to allow differentiation between a Power-on Reset to an                 The BOR status bit is a “don't care” and is

external MCLR reset or WDT reset. Those devices with                    not necessarily predictable if the brown-out

brown-out detection circuitry contain an additional bit to              circuit is disabled (by clearing the BODEN

differentiate a Brown-out Reset condition from a Power-                 bit in the Configuration word).

on Reset condition.

FIGURE 4-22:         PCON REGISTER FOR PIC16C62/64/65 (ADDRESS 8Eh)

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

      —       —      —                 —    —               —    POR    —          R               = Readable bit

bit7                                                                         bit0  W               = Writable bit

                                                                                   U               = Unimplemented bit,

                                                                                                   read as ‘0’

                                                                                   -n              = Value at POR reset

                                                                                   q               = value depends on conditions

bit 7-2:  Unimplemented: Read as '0'

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:  Reserved

          This bit should be set upon a Power-on Reset by user software and maintained as set. Use of this bit as a general

          purpose read/write bit is not recommended, since this may affect upward compatibility with future products.

FIGURE    4-23:     PCON REGISTER FOR PIC16C62A/R62/63/R63/64A/R64/65A/R65/66/67

                    (ADDRESS 8Eh)

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

      —       —      —                 —    —               —    POR    BOR        R               = Readable bit

bit7                                                                         bit0  W               = Writable bit

                                                                                   U               = Unimplemented bit,

                                                                                                   read as ‘0’

                                                                                   -n              = Value at POR reset

                                                                                   q               = value depends on conditions

bit 7-2:  Unimplemented: Read as '0'

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)

 1997-2013 Microchip Technology Inc.                                                                           DS30234E-page        47
PIC16C6X

4.3           PCL and PCLATH                                                Note 1:        There are no status bits to indicate stack

Applicable Devices                                                                         overflows or stack underflow conditions.

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                            Note 2:        There  are    no  instructions  mnemonics

The program counter (PC) is 13-bits wide. The low byte                                     called PUSH or POP. These are actions

comes from the PCL register, which is a readable and                                       that  occur   from  the  execution   of   the

writable register. The upper bits (PC<12:8>) are not                                       CALL,    RETURN,    RETLW, and RETFIE

readable,         but  are      indirectly     writable  through      the                  instructions, or the vectoring to an inter-

PCLATH register. On any reset, the upper bits of the PC                                    rupt address

will be cleared. Figure 4-24 shows the two situations for                   4.4       Program Memory Paging

the loading of the PC. The upper example in the figure

shows      how    the     PC       is  loaded  on     a  write   to   PCL   Applicable Devices

(PCLATH<4:0>  PCH). The lower example in the fig-                          61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

ure shows how the PC is loaded during a CALL or GOTO                        PIC16C6X devices are capable of addressing a contin-

instruction (PCLATH<4:3>  PCH).                                            uous 8K word block of program memory. The CALL and

FIGURE 4-24:              LOADING OF PC IN                                  GOTO instructions provide only 11 bits of address to

                          DIFFERENT SITUATIONS                              allow branching within any 2K program memory page.

                                                                            When doing a CALL or GOTO instruction the upper two

              PCH                      PCL                                  bits  of  the  address  are  provided   by  PCLATH<4:3>.

       12                 8     7                     0  Instruction with   When doing a CALL or GOTO instruction, the user must

PC                                                       PCL as             ensure that the page select bits are programmed so

                                                         destination        that the desired program memory page is addressed. If

                       PCLATH<4:0>                 8                        a return from a CALL instruction (or interrupt) is exe-

           5                                             ALU

                                                                            cuted, the entire 13-bit PC is pushed onto the stack.

                          PCLATH                                            Therefore, manipulation of the PCLATH<4:3> bits are

                                                                            not required for the return instructions (which POPs the

              PCH                      PCL                                  address from the stack).

       12     11  10   8     7                        0                     Note:          PIC16C6X devices with 4K or less of pro-

PC                                                       GOTO,   CALL                      gram   memory       ignore      paging    bit

              PCLATH<4:3>                      11                                          PCLATH<4>. The use of PCLATH<4> as a

       2                                                 Opcode <10:0>                     general purpose read/write bit is not rec-

                                                                                           ommended since this may affect upward

                       PCLATH                                                              compatibility with future products.

4.3.1         COMPUTED GOTO

A computed GOTO is accomplished by adding an offset

to the program counter (ADDWF                  PCL). When doing a

table     read    using      a  computed       GOTO      method,      care

should be exercised if the table location crosses a PCL

memory boundary (each 256 word block). Refer to the

application note “Implementing a Table Read” (AN556).

4.3.2         STACK

The PIC16CXX family has an 8 deep x 13-bit wide

hardware stack. The stack space is not part of either

program or data space and the stack pointer is not

readable or writable. The PC is PUSHed onto the stack

when a CALL instruction is executed or an interrupt

causes a branch. The stack is POPed in the event of a

RETURN,           RETLW or a RETFIE instruction execution.

PCLATH is not affected by a PUSH or a POP operation.

The stack operates as a circular buffer. This means that

after the stack has been PUSHed eight times, the ninth

push overwrites the value that was stored from the first

push. The tenth push overwrites the second push (and

so on).

DS30234E-page          48                                                                          1997-2013 Microchip Technology Inc.
                                                                                                             PIC16C6X

Example 4-1  shows  the    calling     of  a     subroutine  in        4.5         Indirect Addressing, INDF and FSR

page 1 of the program memory. This example assumes                                 Registers

that the PCLATH is saved and restored by the interrupt                 Applicable Devices

service routine (if interrupts are used).                              61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

EXAMPLE 4-1:        CALL OF A SUBROUTINE IN                            The INDF register is not a physical register.           Address-

                    PAGE 1 FROM PAGE 0                                 ing the INDF register will cause indirect addressing.

ORG   0x500                                                            Indirect addressing is possible by using the INDF reg-

BSF     PCLATH,3    ;Select       page  1   (800h-FFFh)                ister. Any instruction using the INDF register actually

BCF     PCLATH,4    ;Only     on  >4K   devices                        accesses the register pointed to by the File Select Reg-

CALL    SUB1_P1     ;Call     subroutine         in                    ister, FSR. Reading the INDF register itself indirectly

        :           ;page     1   (800h-FFFh)                          (FSR = '0') will produce 00h. Writing to the INDF regis-

        :                                                              ter indirectly results in a no-operation (although status

        :                                                              bits  may   be        affected).  An  effective  9-bit  address   is

ORG   0x900                                                            obtained by concatenating the 8-bit FSR register and

SUB1_P1:            ;called       subroutine                           the IRP bit (STATUS<7>), as shown in Figure 4-25.

        :           ;page     1   (800h-FFFh)

        :                                                              A simple program to clear RAM location 20h-2Fh using

RETURN              ;return       to  Call    subroutine               indirect addressing is shown in Example 4-2.

                    ;in  page     0   (000h-7FFh)

                                                                       EXAMPLE 4-2:              INDIRECT ADDRESSING

                                                                                          movlw  0x20        ;initialize       pointer

                                                                                          movwf  FSR         ;  to      RAM

                                                                       NEXT               clrf   INDF        ;clear     INDF   register

                                                                                          incf   FSR,F       ;inc    pointer

                                                                                          btfss  FSR,4       ;all    done?

                                                                                          goto   NEXT        ;NO,    clear     next

                                                                       CONTINUE

                                                                                          :                  ;YES,      continue

FIGURE 4-25:      DIRECT/INDIRECT ADDRESSING

             Direct Addressing                                                                   Indirect Addressing

RP1: RP0      6        from opcode            0                                           IRP    7              FSR               0

bank select  location select                                                              bank select                   location select

                                              00         01      10          11

                                        00h          80h         100h        180h

                 Data

                 Memory

                                        7Fh          FFh         17Fh        1FFh

                                           Bank 0    Bank 1      Bank 2      Bank 3

      For memory map detail see Figure 4-5, Figure 4-6,      Figure 4-7, and Figure 4-8.

 1997-2013 Microchip Technology Inc.                                                                                DS30234E-page       49
PIC16C6X

NOTES:

DS30234E-page  50   1997-2013 Microchip Technology Inc.
                                                                                               PIC16C6X

5.0        I/O PORTS                                             FIGURE      5-1:     BLOCK DIAGRAM OF THE

Applicable Devices                                                                    RA3:RA0 PINS AND THE RA5

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                      PIN

Some pins for these I/O ports are multiplexed with an            Data

alternate function(s) for the peripheral features on the         bus

device. In general, when a peripheral is enabled, that                       D         Q

pin may not be used as a general purpose I/O pin.                WR                                          VDD

5.1        PORTA and TRISA Register                              Port        CK        Q

                                                                                                             P

Applicable Devices                                                           Data  Latch

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

All devices have a 6-bit wide PORTA, except for            the               D         Q                     N    I/O pin(1)

PIC16C61 which has a 5-bit wide PORTA.                           WR

Pin RA4/T0CKI is a Schmitt Trigger input and an open             TRIS        CK        Q                     VSS

drain output. All other RA port pins have TTL input lev-

els and full CMOS output drivers. All pins have data                         TRIS  Latch                 TTL

direction  bits   (TRIS  registers)   which     can   configure                                          input

these pins as output or input.                                                                           buffer

Setting a bit in the TRISA register puts the correspond-                                 RD  TRIS

ing output driver in a hi-impedance mode. Clearing a bit

in the TRISA register puts the contents of the output                                          Q         D

latch on the selected pin.

Reading PORTA register reads the status of the pins

whereas writing to it will write to the port latch. All write                                        EN

operations  are     read-modify-write     operations.  There-

fore, a write to a port implies that the port pins are read,     RD PORT

this value is modified, and then written to the port data

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

Pin RA4 is multiplexed with Timer0 module clock input                        VSS.

to become the RA4/T0CKI pin.                                           2:    The PIC16C61 does not have an RA5 pin.

EXAMPLE 5-1:        INITIALIZING PORTA                           FIGURE 5-2:          BLOCK DIAGRAM OF THE

BCF        STATUS,  RP0     ;                                                         RA4/T0CKI PIN

BCF        STATUS,  RP1     ;  PIC16C66/67      only                   Data

CLRF       PORTA            ;  Initialize       PORTA  by              bus         D     Q

                            ;  clearing   output                       WR

                            ;  data   latches                          PORT        CK    Q

BSF        STATUS,  RP0     ;  Select     Bank  1                                                         N       I/O pin(1)

MOVLW      0xCF             ;  Value   used     to                              Data Latch

                            ;  initialize       data                               D     Q               VSS

                            ;  direction                               WR

MOVWF      TRISA            ;  Set   RA<3:0>    as    inputs           TRIS                        Schmitt

                            ;  RA<5:4>    as    outputs                            CK    Q         Trigger

                            ;  TRISA<7:6>       are   always                    TRIS Latch         input

                            ;  read   as  '0'.                                                     buffer

                                                                                      RD TRIS

                                                                                               Q   D

                                                                                                   ENEN

                                                                       RD PORT

                                                                       TMR0 clock input

                                                                       Note 1: I/O pin has protection diodes to VSS only.

 1997-2013 Microchip Technology Inc.                                                                DS30234E-page            51
PIC16C6X

TABLE 5-1:         PORTA FUNCTIONS

Name               Bit#      Buffer Type  Function

RA0                bit0          TTL      Input/output

RA1                bit1          TTL      Input/output

RA2                bit2          TTL      Input/output

RA3                bit3          TTL      Input/output

RA4/T0CKI          bit4          ST       Input/output or external clock input for Timer0.

                                          Output is open drain type.

RA5/SS (1)         bit5          TTL      Input/output or slave select input for synchronous      serial  port.

Legend: TTL    = TTL input, ST = Schmitt Trigger input

Note 1:   The  PIC16C61 does not have PORTA<5> or TRISA<5>, read as ‘0’.

TABLE 5-2:         REGISTERS/BITS ASSOCIATED WITH PORTA

                                                                                            Value on:               Value on all

Address     Name   Bit 7  Bit 6  Bit 5    Bit 4         Bit 3      Bit 2  Bit 1    Bit 0      POR,                  other resets

                                                                                              BOR

05h         PORTA  —      —      RA5(1)   RA4           RA3        RA2    RA1      RA0      --xx  xxxx              --uu  uuuu

85h         TRISA  —      —      PORTA Data Direction Register(1)                           --11  1111              --11  1111

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

Note  1:  PORTA<5> and TRISA<5> are not implemented on the PIC16C61, read as '0'.

DS30234E-page  52                                                                   1997-2013 Microchip Technology Inc.
                                                                                              PIC16C6X

5.2    PORTB and TRISB Register                            This interrupt can wake the device from SLEEP. The

Applicable Devices                                         user, in the interrupt service routine, can clear the inter-

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67           rupt in the following manner:

PORTB is an 8-bit wide bi-directional port. The corre-     a)  Any read or write of PORTB. This will end the

sponding data direction register is TRISB. Setting a bit       mismatch condition.

in the TRISB register puts the corresponding output        b)  Clear flag bit RBIF.

driver in a hi-impedance mode. Clearing a bit in the       A mismatch condition will continue to set flag bit RBIF.

TRISB register puts the contents of the output latch on    Reading PORTB will end the mismatch condition, and

the selected pin(s).                                       allow flag bit RBIF to be cleared.

EXAMPLE 5-2:          INITIALIZING PORTB                   This interrupt on mismatch feature, together with soft-

                                                           ware  configurable       pull-ups  on    these     four     pins   allow

BCF    STATUS,      RP0  ;                                 easy interface to a keypad and make it possible for

CLRF   PORTB             ;  Initialize       PORTB   by    wake-up on key-depression. Refer to the Embedded

                         ;  clearing   output              Control    Handbook,        Application  Note,      “Implementing

                         ;  data   latches                 Wake-up on Key Stroke” (AN552).

BSF    STATUS,      RP0  ;  Select     Bank  1

MOVLW  0xCF              ;  Value   used     to                Note:     For PIC16C61/62/64/65, if a change on the

                         ;  initialize       data                        I/O pin should occur when a read operation

                         ;  direction                                    is being executed (start of the Q2 cycle),

MOVWF  TRISB             ;  Set   RB<3:0>    as    inputs

                         ;  RB<5:4>    as    outputs                     then interrupt flag bit RBIF may not get set.

                         ;  RB<7:6>    as    inputs

                                                           The interrupt on change feature is recommended for

Each of the PORTB pins has a weak internal pull-up. A      wake-up on key depression operation and operations

single control bit can turn on all the pull-ups. This is   where PORTB is only used for the interrupt on change

performed by clearing bit RBPU (OPTION<7>). The            feature. Polling of PORTB is not recommended while

weak pull-up is automatically turned off when the port     using the interrupt on change feature.

pin is configured as an output. The pull-ups are also      FIGURE        5-3:     BLOCK DIAGRAM OF THE

disabled on a Power-on Reset.                                                     RB7:RB4 PINS FOR

Four of PORTB’s pins, RB7:RB4, have an interrupt on                               PIC16C61/62/64/65

change feature. Only pins configured as inputs can                                                                     VDD

cause this interrupt to occur (i.e., any RB7:RB4 pin           RBPU(2)                                                    weak

configured as an output is excluded from the interrupt                                                                 P  pull-up

on change comparison). The input pins (of RB7:RB4)             Data bus           Data Latch

are compared with the old value latched on the last                                 D      Q

read of PORTB. The “mismatch” outputs of RB7:RB4               WR Port                                                      I/O

are OR’ed together to generate the RB port change                                   CK                                      pin(1)

interrupt with flag bit RBIF (INTCON<0>).                                         TRIS Latch

                                                                                    D      Q

                                                               WR TRIS              CK                        TTL

                                                                                                              Input

                                                                                                              Buffer      ST

                                                                                                                          Buffer

                                                                                  RD TRIS              Latch

                                                                                                    Q      D

                                                                                  RD Port                  EN

                                                           Set RBIF

                                                                      From other                    Q      D

                                                                      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: To enable weak pull-ups, set the appropriate TRIS bit(s)

                                                                      and clear the RPBU bit (OPTION<7>).

 1997-2013 Microchip Technology Inc.                                                                  DS30234E-page                53
PIC16C6X

FIGURE     5-4:    BLOCK DIAGRAM OF THE                                         FIGURE    5-5:   BLOCK DIAGRAM OF                       THE

                   RB7:RB4 PINS FOR                                                              RB3:RB0 PINS

                   PIC16C62A/63/R63/64A/65A/                                                                                            VDD

                   R65/66/67                                                    RBPU(2)                                                    weak

                                                                                                                                        P  pull-up

                                                        VDD                                      Data Latch

RBPU(2)                                                    weak                 Data bus         D        Q

                                                        P  pull-up

                   Data Latch                                                   WR Port                                                      I/O

Data bus           D       Q                                                                     CK                                          pin(1)

                                                             I/O                                 TRIS Latch

WR Port              CK                                      pin(1)                              D        Q

                                                                                                                               TTL

                   TRIS Latch                                                   WR TRIS                                        Input

                   D       Q                                                                     CK                            Buffer

WR TRIS              CK                       TTL

                                              Input

                                              Buffer       ST                                    RD TRIS

                                                           Buffer

                                                                                                                     Q         D

                  RD TRIS              Latch

                                    Q      D                                                     RD Port                       EN

                  RD Port                  EN                  Q1               RB0/INT

Set RBIF

                                                                                                        Schmitt Trigger                 RD Port

                                                                                                        Buffer

From other                          Q      D

RB7:RB4 pins                                               RD Port

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

RB7:RB6 in serial programming mode                                              2: To enable weak pull-ups, set the appropriate TRIS bit(s)

                                                                                          and clear the RPBU bit (OPTION<7>).

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

     2: To enable weak pull-ups, set the appropriate TRIS bit(s)

      and clear the RPBU bit (OPTION<7>).

TABLE 5-3:         PORTB FUNCTIONS

Name               Bit#         Buffer Type             Function

RB0/INT            bit0         TTL/ST(1)               Input/output pin 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.

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

                                                        weak pull-up. Serial programming data.

Legend:    TTL = TTL input, ST = Schmitt Trigger 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

                                                                                                             Value on:         Value on all

Address     Name         Bit 7      Bit 6      Bit 5              Bit 4  Bit 3  Bit 2     Bit 1  Bit 0          POR,           other resets

                                                                                                                BOR

06h, 106h   PORTB        RB7        RB6        RB5                RB4    RB3    RB2       RB1    RB0      xxxx  xxxx           uuuu     uuuuu

86h, 186h   TRISB     PORTB Data Direction Register                                                       1111  1111           1111     1111

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

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

DS30234E-page    54                                                                               1997-2013 Microchip Technology Inc.
                                                                                                          PIC16C6X

5.3     PORTC and TRISC Register                                           FIGURE 5-6:           PORTC BLOCK             DIAGRAM

Applicable Devices                                                         PORT/PERIPHERAL Select(2)

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                           Peripheral  Data Out

PORTC is an 8-bit wide bi-directional port. Each pin is                                                0                    VDD

individually configurable as an input or output through                    Data bus        D     Q                                P

                                                                           WR                          1

the TRISC register. PORTC is multiplexed with several                      PORT            CK    Q

peripheral  functions    (Table 5-5).    PORTC      pins     have                      Data Latch

Schmitt Trigger input buffers.

When enabling peripheral functions, care should be                         WR              D     Q                                   I/O

                                                                           TRIS                                                      pin(1)

taken in defining TRIS bits for each PORTC pin. Some                                       CK    Q                                N

peripherals override the TRIS bit to make a pin an out-                                TRIS Latch

put, while other peripherals override the TRIS bit to                                                                    VSS

make a pin an input. Since the TRIS bit override is in

effect  while  the  peripheral  is    enabled,  read-modify-                               RD TRIS                       Schmitt

write instructions (BSF,              XORWF) with TRISC as                                                               Trigger

                          BCF,                                             Peripheral

destination should be avoided. The user should refer to                    OE(3)                          Q          D

the  corresponding  peripheral       section   for  the  correct

TRIS bit settings.                                                                     RD                            EN

                                                                                       PORT

EXAMPLE 5-3:           INITIALIZING PORTC                                  Peripheral input

BCF     STATUS,     RP0   ;                                                Note   1:   I/O pins have diode protection to VDD and VSS.

BCF     STATUS,     RP1   ;     PIC16C66/67     only                              2:   Port/Peripheral select signal selects between port

CLRF    PORTC             ;     Initialize     PORTC     by                            data and peripheral output.

                          ;     clearing   output                                 3:   Peripheral OE (output enable) is only activated if

                          ;     data   latches                                         peripheral select is active.

BSF     STATUS,     RP0   ;     Select   Bank   1

MOVLW   0xCF              ;     Value   used   to

                          ;     initialize     data

                          ;     direction

MOVWF   TRISC             ;     Set   RC<3:0>   as   inputs

                          ;     RC<5:4>    as  outputs

                          ;     RC<7:6>    as  inputs

TABLE 5-5:          PORTC FUNCTIONS FOR PIC16C62/64

Name                      Bit#  Buffer Type         Function

RC0/T1OSI/T1CKI           bit0         ST           Input/output port pin or Timer1 oscillator input or Timer1 clock input

RC1/T1OSO                 bit1         ST           Input/output port pin or Timer1 oscillator output

RC2/CCP1                  bit2         ST           Input/output port pin or Capture1 input/Compare1 output/PWM1 output

RC3/SCK/SCL               bit3         ST           RC3 can also be the synchronous serial clock for both SPI and I2C modes.

RC4/SDI/SDA               bit4         ST           RC4 can also be the SPI Data In (SPI mode) or data I/O (I2C mode).

RC5/SDO                   bit5         ST           Input/output port pin or synchronous serial port data output

RC6                       bit6         ST           Input/output port pin

RC7                       bit7         ST           Input/output port pin

Legend: ST = Schmitt Trigger input

 1997-2013 Microchip Technology Inc.                                                                                    DS30234E-page       55
PIC16C6X

TABLE 5-6:      PORTC FUNCTIONS FOR PIC16C62A/R62/64A/R64

Name               Bit#   Buffer Type  Function

RC0/T1OSO/T1CKI    bit0   ST           Input/output port pin or Timer1 oscillator output or Timer1 clock input

RC1/T1OSI          bit1   ST           Input/output port pin or Timer1 oscillator input

RC2/CCP1           bit2   ST           Input/output port pin or Capture input/Compare output/PWM1 output

RC3/SCK/SCL        bit3   ST           RC3 can also be the synchronous serial clock for both SPI and I2C modes.

RC4/SDI/SDA        bit4   ST           RC4 can also be the SPI Data In (SPI mode) or data I/O (I2C mode).

RC5/SDO            bit5   ST           Input/output port pin or synchronous serial port data output

RC6                bit6   ST           Input/output port pin

RC7                bit7   ST           Input/output port pin

Legend: ST = Schmitt Trigger input

TABLE 5-7:      PORTC FUNCTIONS FOR PIC16C63/R63/65/65A/R65/66/67

Name               Bit#   Buffer Type  Function

RC0/T1OSO/T1CKI    bit0   ST           Input/output port pin or Timer1 oscillator output or Timer1 clock input

RC1/T1OSI/CCP2     bit1   ST           Input/output port pin or Timer1 oscillator input or Capture2 input/Compare2

                                       output/PWM2 output

RC2/CCP1           bit2   ST           Input/output port pin or Capture1 input/Compare1 output/PWM1 output

RC3/SCK/SCL        bit3   ST           RC3 can also be the synchronous serial clock for both SPI and I2C modes.

RC4/SDI/SDA        bit4   ST           RC4 can also be the SPI Data In (SPI mode) or data I/O (I2C mode).

RC5/SDO            bit5   ST           Input/output port pin or synchronous serial port data output

RC6/TX/CK          bit6   ST           Input/output port pin or USART Asynchronous Transmit, or USART Syn-

                                       chronous Clock

RC7/RX/DT          bit7   ST           Input/output port pin or USART Asynchronous Receive, or USART Syn-

                                       chronous Data

Legend: ST = Schmitt Trigger input

TABLE 5-8:      SUMMARY OF REGISTERS ASSOCIATED WITH PORTC

                                                                                         Value on:         Value on all

Address  Name      Bit 7  Bit 6       Bit 5       Bit 4  Bit 3  Bit 2  Bit 1  Bit 0      POR,              other resets

                                                                                         BOR

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

87h      TRISC     PORTC Data Direction Register                                         1111        1111  1111  1111

Legend:  x = unknown, u = unchanged.

DS30234E-page  56                                                              1997-2013 Microchip Technology Inc.
                                                                                                        PIC16C6X

5.4       PORTD and TRISD Register                                  FIGURE 5-7:              PORTD BLOCK DIAGRAM

Applicable Devices                                                                           (IN I/O PORT MODE)

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                            Data

PORTD is an 8-bit port with Schmitt Trigger input buf-                      bus           D      Q

fers. Each pin is individually configurable as input or                     WR

output.                                                                     PORT                                             I/O pin(1)

                                                                                          CK

PORTD can be configured as an 8-bit wide micropro-

cessor port (parallel slave port) by setting control bit                             Data Latch

PSPMODE (TRISE<4>). In this mode, the input buffers                                       D      Q

are TTL.                                                                    WR

                                                                            TRIS          CK                 Schmitt

                                                                                                             Trigger

                                                                                     TRIS Latch              input

                                                                                                             buffer

                                                                                             RD TRIS

                                                                                                        Q          D

                                                                                                             ENEN

                                                                            RD PORT

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

TABLE 5-9:          PORTD FUNCTIONS

Name                Bit#   Buffer Type             Function

RD0/PSP0            bit0   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit0

RD1/PSP1            bit1   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit1

RD2/PSP2            bit2   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit2

RD3/PSP3            bit3   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit3

RD4/PSP4            bit4   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit4

RD5/PSP5            bit5   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit5

RD6/PSP6            bit6   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit6

RD7/PSP7            bit7   ST/TTL(1)               Input/output  port  pin  or  parallel  slave  port  bit7

Legend:   ST = Schmitt Trigger input, TTL = TTL input

Note 1:   Buffer is a Schmitt Trigger when in I/O mode, and a TTL buffer when in Parallel Slave              Port     mode.

TABLE 5-10:         SUMMARY OF REGISTERS ASSOCIATED WITH PORTD

                                                                                                             Value on:       Value on all

Address   Name      Bit 7  Bit 6       Bit 5       Bit 4     Bit 3     Bit 2      Bit 1          Bit 0       POR,            other resets

                                                                                                             BOR

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

88h       TRISD     PORTD Data Direction Register                                                            1111  1111      1111  1111

89h       TRISE     IBF    OBF         IBOV   PSPMODE            —     PORTE Data Direction Bits             0000  -111      0000  -111

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

 1997-2013 Microchip Technology Inc.                                                                              DS30234E-page   57
PIC16C6X

5.5         PORTE and TRISE Register                                       FIGURE    5-8:      PORTE           BLOCK DIAGRAM

Applicable Devices                                                                             (IN I/O     PORT MODE)

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                               Data

PORTE       has   three   pins,    RE2/CS,       RE1/WR,     and               bus         D        Q

RE0/RD which are individually configurable as inputs                           WR                                            I/O pin(1)

or outputs. These pins have Schmitt Trigger input buf-                         PORT        CK

fers.

I/O PORTE becomes control inputs for the micropro-                                      Data   Latch

cessor port when bit PSPMODE (TRISE<4>) is set. In                                         D        Q

this   mode,     the   user  must   make         sure  that  the               WR

TRISE<2:0> bits are set (pins are configured as digital                        TRIS        CK                     Schmitt

                                                                                                                  Trigger

inputs). In this mode the input buffers are TTL.                                        TRIS   Latch              input

                                                                                                                  buffer

Figure 5-9 shows the TRISE register, which controls

the parallel slave port operation and also controls the

direction of the PORTE pins.                                                                  RD TRIS

                                                                                                               Q  D

                                                                                                                  ENEN

                                                                               RD PORT

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

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        IBOV   PSPMODE            —          bit2         bit1     bit0           R   =   Readable bit

bit7                                                                                          bit0     W   =   Writable bit

                                                                                                       U   =   Unimplemented bit,

                                                                                                               read as ‘0’

                                                                                                       -n  =   Value at POR reset

bit    7:     IBF: Input Buffer Full Status bit

              1 = A word has been received and is waiting to be read by the CPU

              0 = No word has been received

bit    6:     OBF: Output Buffer Full Status bit

              1 = The output buffer still holds a previously written word

              0 = The output buffer has been read

bit    5:     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

bit    4:     PSPMODE: Parallel Slave Port Mode Select bit

              1 = Parallel slave port mode

              0 = General purpose I/O mode

bit    3:     Unimplemented: Read as '0'

              PORTE Data Direction Bits

bit    2:     Bit2: Direction Control bit for pin RE2/CS

              1 = Input

              0 = Output

bit    1:     Bit1: Direction Control bit for pin RE1/WR

              1 = Input

              0 = Output

bit    0:     Bit0: Direction Control bit for pin RE0/RD

              1 = Input

              0 = Output

DS30234E-page     58                                                                            1997-2013 Microchip Technology Inc.
                                                                                                   PIC16C6X

TABLE 5-11:     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.

                                                      RD

                                                      1=  Not a read operation

                                                      0=  Read operation. The system reads the PORTD register (if

                                                          chip selected)

RE1/WR          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. The system writes to the PORTD register (if

                                                          chip selected)

RE2/CS          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:  Buffer is a Schmitt Trigger when in I/O mode, and a TTL buffer when in Parallel Slave Port (PSP) mode.

TABLE 5-12:     SUMMARY OF REGISTERS ASSOCIATED WITH PORTE

                                                                                                   Value on:   Value on all

Address  Name   Bit 7  Bit 6           Bit 5  Bit 4       Bit 3  Bit 2        Bit 1         Bit 0  POR,        other resets

                                                                                                   BOR

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

89h      TRISE  IBF    OBF             IBOV   PSPMODE     —      PORTE Data Direction Bits         0000  -111  0000      -111

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

 1997-2013 Microchip Technology Inc.                                                                          DS30234E-page  59
PIC16C6X

5.6         I/O Programming Considerations                                           EXAMPLE 5-4:                READ-MODIFY-WRITE

Applicable Devices                                                                                               INSTRUCTIONS ON AN

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                                                 I/O PORT

5.6.1       BI-DIRECTIONAL I/O PORTS                                                 ;Initial     PORT      settings:      PORTB<7:4>        Inputs

                                                                                     ;                                     PORTB<3:0>        Outputs

Any instruction which writes, operates internally as a                               ;PORTB<7:6>       have      external      pull-ups      and     are

read followed by a write operation. The BCF and BSF                                  ;not     connected     to   other     circuitry

instructions,      for  example,        read    the   register   into  the           ;

CPU, execute the bit operation and write the result back                             ;                                PORT     latch      PORT     pins

to  the  register.      Caution       must    be   used     when  these              ;                                ----------          ---------

instructions are applied to a port with both inputs and                                  BCF  PORTB,     7         ;  01pp     pppp       11pp     pppp

                                                                                         BCF  PORTB,     6         ;  10pp     pppp       11pp     pppp

outputs defined. For example, a BSF operation on bit5                                    BSF  STATUS,       RP0    ;

of PORTB will cause all eight bits of PORTB to be read                                   BCF  TRISB,     7         ;  10pp     pppp       11pp     pppp

into the CPU. Then the BSF operation takes place on                                      BCF  TRISB,     6         ;  10pp     pppp       10pp     pppp

bit5   and  PORTB           is  written  to   the    output  latches.  If            ;

another bit of PORTB is used as a bi-directional I/O pin                             ;Note    that     the  user      may  have      expected      the

(e.g., bit0) and it is defined as an input at this time, the                         ;pin     values   to   be   00pp      pppp.     The  2nd   BCF

input signal present on the pin itself would be read into                            ;caused      RB7  to   be   latched       as    the  pin   value

the CPU and rewritten to the data latch of this particular                           ;(high).

pin, overwriting the previous content. As long as the pin                            A pin actively outputting a Low or High should not be

stays in the input mode, no problem occurs. However, if                              driven from external devices at the same time in order

bit0 is switched into output mode later on, the content                              to change the level on this pin (“wired-or”, “wired-and”).

of the data latch may now be unknown.                                                The resulting high output currents may damage the

Reading the port register, reads the values of the port                              chip.

pins. Writing to the port register writes the value to the                           5.6.2        SUCCESSIVE OPERATIONS ON I/O PORTS

port latch. When using read-modify-write instructions

(ex. BCF, BSF, etc.) on a port, the value of the port pins                           The actual write to an I/O port happens at the end of an

is read, the desired operation is done to this value, and                            instruction cycle, whereas for reading, the data must be

this value is then written to the port latch.                                        valid    at  the    beginning         of  the      instruction  cycle

Example 5-4         shows       the     effect    of   two   sequential              (Figure 5-10). Therefore, care must be exercised if a

read-modify-write instructions on an I/O port.                                       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 depen-

                                                                                     dent) 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  a  NOP    or    another

                                                                                     instruction not accessing this I/O port.

FIGURE 5-10:            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      MOVWF PORTB         MOVF PORTB,W                                                    followed by a read from PORTB.

         fetched            write to                                   NOP                  NOP

                            PORTB                                                                           Note that:

         RB7:RB0                                                                                            data setup time = (0.25TCY - TPD)

                                                                       Port pin                             where     TCY = instruction cycle

                                                                       sampled here                                   TPD = propagation delay

       Instruction                                               TPD                                        Therefore, at higher clock frequencies,

         executed                                                                           NOP             a write followed by a read may be prob-

                                             MOVWF PORTB          MOVF PORTB,W                              lematic.

                                                  write to

                                                  PORTB

DS30234E-page           60                                                                                   1997-2013 Microchip Technology Inc.
                                                                                                  PIC16C6X

5.7         Parallel Slave Port                                         FIGURE 5-11:        PORTD AND PORTE AS A

Applicable Devices                                                                          PARALLEL SLAVE PORT

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

PORTD operates as an 8-bit wide parallel slave port                     Data bus

(microprocessor        port)  when       control  bit  PSPMODE                        D     Q

(TRISE<4>) is set. In slave mode it is asynchronously                   WR                                                   RDx

readable and writable by the external world through                     PORT          CK                                     pin

RD control input (RE0/RD) and WR control input pin                                                TTL

(RE1/WR).

It can directly interface to an 8-bit microprocessor data                             Q     D

bus. The external microprocessor can read or write the                  RD                  ENEN

PORTD       latch  as  an     8-bit  latch.  Setting   PSPMODE          PORT

enables port pin RE0/RD to be the RD input, RE1/WR

to be the WR input and RE2/CS to be the CS (chip                        One bit of PORTD

select) input. For this functionality, the corresponding                Set interrupt flag

data direction bits of the TRISE register (TRISE<2:0>)                  PSPIF (PIR1<7>)

must be configured as inputs (set).

There are actually two 8-bit latches, one for data-out

(from the PIC16/17) and one for data input. The user

writes 8-bit data to PORTD data latch and reads data                                              Read

from the port pin latch (note that they have the same                                                    TTL                 RD

address). In this mode, the TRISD register is ignored                                             Chip Select

since the microprocessor is controlling the direction of                                                 TTL                 CS

data flow.                                                                                        Write

A write to the PSP occurs when both the CS and WR                                                        TTL                 WR

lines are first detected low. When either the CS or WR

lines become high (level triggered), then the Input Buf-                Note: I/O pin has protection diodes to VDD and VSS.

fer Full status flag bit IBF (TRISE<7>) is set on the Q4

clock cycle, following the next Q2 cycle, to signal the

write is complete (Figure 5-12). The interrupt flag bit

PSPIF (PIR1<7>) is also set on the same Q4 clock

cycle. IBF can only be cleared by reading the PORTD

input latch. The input Buffer Overflow status flag bit

IBOV (TRISE<5>) is set if a second write to the Parallel

Slave Port is attempted when the previous byte has not

been read out of the buffer.

A read from the PSP occurs when both the CS and RD

lines are first detected low. The Output Buffer Full sta-

tus flag bit OBF (TRISE<6>) is cleared immediately

(Figure 5-13) indicating that the PORTD latch is waiting

to be read by the external bus. When either the CS or

RD pin becomes high (level triggered), the interrupt flag

bit PSPIF is set on the Q4 clock cycle, following the next

Q2 cycle, indicating that the read is complete. OBF

remains low until data is written to PORTD by the user

firmware.

When not in Parallel Slave Port mode, the IBF and OBF

bits are held clear. However, if flag bit IBOV was previ-

ously set, it must be cleared in firmware.

An   interrupt     is  generated     and     latched   into  flag  bit

PSPIF when a read or write operation is completed.

PSPIF must be cleared by the user in firmware and the

interrupt   can    be  disabled      by   clearing     the   interrupt

enable bit PSPIE (PIE1<7>).

 1997-2013 Microchip Technology Inc.                                                             DS30234E-page                   61
PIC16C6X

FIGURE 5-12:     PARALLEL       SLAVE    PORT  WRITE WAVEFORMS

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

          CS

          WR

          RD

PORTD<7:0>

          IBF

          OBF

      PSPIF

FIGURE 5-13:     PARALLEL       SLAVE    PORT  READ WAVEFORMS

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

          CS

          WR

          RD

PORTD<7:0>

          IBF

          OBF

      PSPIF

TABLE 5-13:      REGISTERS ASSOCIATED WITH PARALLEL SLAVE PORT

                                                                                                          Value on:  Value  on all

Address   Name      Bit 7  Bit 6  Bit 5    Bit 4        Bit 3             Bit 2   Bit 1   Bit 0           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      —                 PORTE Data Direction Bits  0000  -111      0000   -111

0Ch       PIR1      PSPIF  (1)    RCIF(2)  TXIF(2)      SSPIF             CCP1IF  TMR2IF  TRM1IF     0000  0000      0000   0000

8Ch       PIE1      PSPIE  (1)    RCIE(2)  TXIE(2)      SSPIE             CCP1IE  TMR2IE  TMR1IE     0000  0000      0000   0000

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

Note  1:  These bits are reserved, always maintain these bits clear.

      2:  These bits are implemented on the PIC16C65/65A/R65/67 only.

DS30234E-page   62                                                                         1997-2013 Microchip Technology Inc.
                                                                                             PIC16C6X

6.0        OVERVIEW OF TIMER                                      6.3       Timer2 Overview

           MODULES                                                Applicable Devices

Applicable Devices                                                61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                  Timer2 is an 8-bit timer with a programmable prescaler

All PIC16C6X devices have three timer modules except              and a programmable postscaler, as well as an 8-bit

for the PIC16C61, which has one timer module. Each                Period Register (PR2). Timer2 can be used with the

module can generate an interrupt to indicate that an              CCP module (in PWM mode) as well as the Baud Rate

event has occurred (i.e., timer overflow). Each of these          Generator for the Synchronous Serial Port (SSP). The

modules    are  detailed   in  the  following  sections.   The    prescaler option allows Timer2 to increment at the fol-

timer modules are:                                                lowing rates: 1:1, 1:4, and 1:16.

•  Timer0 module (Section 7.0)                                    The   postscaler  allows   TMR2    register  to  match  the

•  Timer1 module (Section 8.0)                                    period register (PR2) a programmable number of times

                                                                  before generating an interrupt. The postscaler can be

•  Timer2 module (Section 9.0)                                    programmed from 1:1 to 1:16 (inclusive).

6.1        Timer0 Overview                                        6.4       CCP Overview

Applicable Devices                                                Applicable Devices

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                  61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

The Timer0 module is a simple 8-bit overflow counter.             The CCP module(s) can operate in one of three modes:

The    clock  source  can  be  either  the  internal  system      16-bit capture, 16-bit compare, or up to 10-bit Pulse

clock (Fosc/4) or an external clock. When the clock               Width Modulation (PWM).

source is an external clock, the Timer0 module can be             Capture mode captures the 16-bit value of TMR1 into

selected   to  increment   on  either  the  rising   or  falling  the CCPRxH:CCPRxL register pair. The capture event

edge.                                                             can be programmed for either the falling edge, rising

The Timer0 module also has a programmable pres-                   edge, fourth rising edge, or sixteenth rising edge of the

caler option. This prescaler can be assigned to either            CCPx pin.

the Timer0 module or the Watchdog Timer. Bit PSA                  Compare mode compares the TMR1H:TMR1L register

(OPTION<3>) assigns the prescaler, and bits PS2:PS0               pair  to  the  CCPRxH:CCPRxL       register  pair.  When   a

(OPTION<2:0>) determine the prescaler value. TMR0                 match occurs, an interrupt can be generated and the

can increment at the following rates: 1:1 when the pres-          output pin CCPx can be forced to a given state (High or

caler  is  assigned   to  Watchdog     Timer,  1:2,  1:4,  1:8,   Low) and Timer1 can be reset. This depends on control

1:16, 1:32, 1:64, 1:128, and 1:256.                               bits CCPxM3:CCPxM0.

Synchronization of the external clock occurs after the            PWM mode compares the TMR2 register to a 10-bit

prescaler. When the prescaler is used, the external               duty cycle register (CCPRxH:CCPRxL<5:4>) as well as

clock frequency may be higher then the device’s fre-              to an 8-bit period register (PR2). When the TMR2 reg-

quency. The maximum frequency is 50 MHz, given the                ister = Duty Cycle register, the CCPx pin will be forced

high and low time requirements of the clock.                      low. When TMR2 = PR2, TMR2 is cleared to 00h, an

6.2        Timer1 Overview                                        interrupt can be generated, and the CCPx pin (if an out-

Applicable Devices                                                put) will be forced high.

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

Timer1 is a 16-bit timer/counter. The clock source can

be either the internal system clock (Fosc/4), an external

clock, or an external crystal. Timer1 can operate as

either a timer or a counter. When operating as a coun-

ter (external clock source), the counter can either oper-

ate synchronized to the device or asynchronously to

the device. Asynchronous operation allows Timer1 to

operate during sleep, which is useful for applications

that require a real-time clock as well as the power sav-

ings of SLEEP mode.

TImer1 also has a prescaler option which allows TMR1

to increment at the following rates: 1:1, 1:2, 1:4, and

1:8. TMR1 can be used in conjunction with the Capture/

Compare/PWM module. When used with a CCP mod-

ule, Timer1 is the time-base for 16-bit capture or 16-bit

compare and must be synchronized to the device.

 1997-2013 Microchip Technology Inc.                                                                DS30234E-page           63
PIC16C6X

NOTES:

DS30234E-page  64   1997-2013 Microchip Technology Inc.
                                                                                                                                PIC16C6X

7.0           TIMER0 MODULE                                                             (OPTION<4>).           Clearing    bit  T0SE      selects       the  rising

Applicable Devices                                                                      edge. Restrictions on the external clock input are dis-

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                        cussed in detail in Section 7.2.

The Timer0 module has the following features:                                           The prescaler is mutually exclusively shared between

•   8-bit timer/counter register, TMR0                                                  the Timer0 module and the Watchdog Timer. The pres-

                                                                                        caler assignment is controlled in software by control bit

    -  Read and write capability                                                        PSA (OPTION<3>). Clearing bit PSA will assign the

    -  Interrupt on overflow from FFh to 00h                                            prescaler to the Timer0 module. The prescaler is not

•   8-bit software programmable prescaler                                               readable or writable. When the prescaler is assigned to

•   Internal or external clock select                                                   the  Timer0      module,       prescale     values   of  1:2,    1:4,  ...,

    -  Edge select for external clock                                                   1:256 are selectable. Section 7.3 details the operation

                                                                                        of the prescaler.

Figure 7-1 is a simplified block diagram of the Timer0

module.                                                                                 7.1          TMR0 Interrupt

Timer       mode     is    selected       by  clearing    bit      T0CS                 Applicable Devices

(OPTION<5>). In timer mode, the Timer0 module will                                      61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

increment every instruction cycle (without prescaler). If                               The  TMR0        interrupt     is  generated      when   the     register

TMR0 register is written, the increment is inhibited for                                (TMR0) overflows from FFh to 00h. This overflow sets

the    following     two   instruction    cycles  (Figure 7-2      and                  interrupt flag bit T0IF (INTCON<2>). The interrupt can

Figure 7-3). The user can work around this by writing                                   be masked by clearing enable bit T0IE (INTCON<5>).

an adjusted value to the TMR0 register.                                                 Flag bit T0IF must be cleared in software by the TImer0

Counter mode is selected by setting bit T0CS. In this                                   interrupt service routine before re-enabling this inter-

mode, Timer0 will increment either on every rising or                                   rupt. The TMR0 interrupt cannot wake the processor

falling edge of pin RA4/T0CKI. The incrementing edge                                    from SLEEP since the timer is shut off during SLEEP.

is  determined       by    the    source  edge    select      bit  T0SE                 Figure 7-4 displays the Timer0 interrupt timing.

FIGURE 7-1:               TIMER0 BLOCK DIAGRAM

                                                                                                                                Data bus

       RA4/T0CKI          FOSC/4              0

       pin                                                                              PSout                                             8

                                                                                    1            Sync with

                                              1                                                      Internal                  TMR0 reg

                                                          Programmable              0                clocks

                                                              Prescaler                                            PSout

                     T0SE                                                                        (2 cycle delay)

                                                                   3

                                                          PS2, PS1, PS0        PSA                                                           Set bit T0IF

                                                                                                                                             on overflow

                                          T0CS

       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 7-6 for detailed diagram).

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

       Executed                                       Write TMR0         Read TMR0      Read TMR0        Read TMR0         Read TMR0         Read TMR0

                                                      executed           reads NT0      reads NT0        reads NT0         reads NT0 + 1     reads NT0 + 2

 1997-2013 Microchip Technology Inc.                                                                                                     DS30234E-page        65
PIC16C6X

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

TMR0                T0                       T0+1                                                   NT0                                          NT0+1          T0

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

       Instruction              Inst (PC)                  Inst (PC+1)                                              Inst (0004h)                 Inst (0005h)

       fetched

       Instruction              Inst (PC-1)                     Inst (PC)                  Dummy cycle              Dummy cycle                  Inst (0004h)

       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.

DS30234E-page        66                                                                                              1997-2013 Microchip Technology Inc.
                                                                                                              PIC16C6X

7.2     Using Timer0 with External Clock                           When a prescaler is used, the external clock input is

Applicable Devices                                                 divided by the asynchronous ripple-counter type pres-

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                   caler so that the prescaler output is symmetrical. For

When an external clock input is used for Timer0, it must           the external clock to meet the sampling requirement,

meet certain requirements. The requirements ensure                 the ripple-counter must be taken into account. There-

the external clock can be synchronized with the internal           fore, it is necessary for T0CKI to have a period of at

phase clock (TOSC). Also, there is a delay in the actual           least 4Tosc (and a small RC delay of 40 ns) divided by

incrementing of Timer0 after synchronization.                      the prescaler value. The only requirement on T0CKI

                                                                   high and low time is that they do not violate the mini-

7.2.1   EXTERNAL CLOCK SYNCHRONIZATION                             mum pulse width requirement of 10 ns. Refer to param-

                                                                   eters 40, 41 and 42 in the electrical specification of the

When no prescaler is used, the external clock input is             desired device.

the same as the prescaler output. The synchronization              7.2.2                  TIMER0 INCREMENT DELAY

of  T0CKI    with  the  internal   phase  clocks  is  accom-

plished by sampling the prescaler output on the Q2 and             Since              the  prescaler  output  is  synchronized  with  the

Q4 cycles of the internal phase clocks (Figure 7-5).               internal clocks, there is a small delay from the time the

Therefore, it is necessary for T0CKI to be high for at             external clock edge occurs to the time the Timer0 mod-

least 2Tosc (and a small RC delay of 20 ns) and low for            ule is actually incremented. Figure 7-5 shows the delay

at least 2Tosc (and a small RC delay of 20 ns). Refer to           from the external clock edge to the timer incrementing.

the electrical specification of the desired device.

FIGURE       7-5:   TIMER0 TIMING         WITH EXTERNAL CLOCK

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

             External Clock Input or                                                                              Small pulse

             Prescaler output (2)                                                                                 misses sampling

                                                      (1)

                                          (3)

             External Clock/Prescaler

             Output after sampling

                   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.

 1997-2013 Microchip Technology Inc.                                                                             DS30234E-page       67
PIC16C6X

7.3         Prescaler                                                          The PSA and PS2:PS0 bits (OPTION<3:0>) determine

Applicable Devices                                                             the prescaler assignment and prescale ratio.

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                               When assigned to the Timer0 module, all instructions

An   8-bit  counter    is  available  as   a  prescaler     for  the           writing    to  the     TMR0  register   (e.g.   CLRF    TMR0,

Timer0 module or as a postscaler for the Watchdog                              MOVWF      TMR0,       BSF   TMR0,bitx) will clear the pres-

Timer (WDT), respectively (Figure 7-6). For simplicity,                        caler count. When assigned to the Watchdog Timer, a

this counter is being referred to as “prescaler” through-                      CLRWDT instruction will clear the Watchdog Timer and

out this data sheet. Note that the prescaler may be                            the prescaler count.         The prescaler is not readable or

used by either the Timer0 module or the Watchdog                               writable.

Timer, but not both. Thus, a prescaler assignment for                          Note:          Writing  to   TMR0       when  the  prescaler    is

the Timer0 module means that there is no prescaler for                                        assigned to Timer0 will clear the prescaler

the Watchdog Timer, and vice-versa.                                                           count,   but  will  not  change     the  prescaler

                                                                                              assignment.

FIGURE 7-6:          BLOCK DIAGRAM OF THE TIMER0/WDT PRESCALER

     CLKOUT (=Fosc/4)                                                                                             Data Bus

                                                 M                                                                     8

                                              0                       1

RA4/T0CKI                                        U                        M                   SYNC

     pin                                         X                        U                   2                   TMR0 reg

                                              1                       0   X                   Cycles

                           T0SE

                                                 T0CS                     PSA                                                  Set flag bit T0IF

                                                                                                                                  on Overflow

                                  0                      8-bit Prescaler

                                      M

                                      U

     Watchdog                     1   X                     8

            Timer

                                                         8 - to  - 1MUX                 PS2:PS0

                                      PSA

     WDT Enable bit                                      0            1

                                                            MUX                PSA

                                                                 WDT

                                                            Time-out

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

DS30234E-page      68                                                                                   1997-2013 Microchip Technology Inc.
                                                                                                              PIC16C6X

7.3.1      SWITCHING PRESCALER ASSIGNMENT

The prescaler assignment is fully under software con-

trol, i.e., it can be changed “on the fly” during program

execution.

Note:       To avoid an unintended device RESET, the

            following instruction sequence (shown in

            Example 7-1)  must       be     executed       when

            changing the prescaler assignment from

            Timer0 to the WDT. This precaution must

            be followed even if the WDT is disabled.

EXAMPLE 7-1:        CHANGING            PRESCALER (TIMER0WDT)

                                        1)   BSF        STATUS,    RP0         ;Bank     1

Lines 2 and 3 do NOT have to            2)   MOVLW      b'xx0x0xxx'            ;Select      clock  source     and  prescale    value  of

be included if the final desired        3)   MOVWF      OPTION_REG             ;other       than  1:1

prescale value is other than 1:1.       4)   BCF        STATUS,    RP0         ;Bank     0

If 1:1 is final desired value, then     5)   CLRF       TMR0                   ;Clear       TMR0  and  prescaler

a temporary prescale value is

set in lines 2 and 3 and the final      6)   BSF        STATUS,    RP1         ;Bank     1

prescale value will be set in lines     7)   MOVLW      b'xxxx1xxx'            ;Select      WDT,   do  not  change   prescale  value

10 and 11.                              8)   MOVWF      OPTION_REG             ;

                                        9)   CLRWDT                            ;Clears      WDT   and  prescaler

                                        10)  MOVLW      b'xxxx1xxx'            ;Select      new   prescale    value  and  WDT

                                        11)  MOVWF      OPTION_REG             ;

                                        12)  BCF        STATUS,    RP0         ;Bank     0

To change prescaler from the WDT to the Timer0 mod-

ule, use the sequence shown in Example 7-2.

EXAMPLE 7-2:        CHANGING PRESCALER (WDTTIMER0)

CLRWDT                      ;Clear          WDT  and    prescaler

BSF         STATUS,  RP0    ;Bank       1

MOVLW       b'xxxx0xxx'     ;Select         TMR0,     new  prescale  value        and    clock    source

MOVWF       OPTION_REG      ;

BCF         STATUS,  RP0    ;Bank       0

TABLE 7-1:         REGISTERS ASSOCIATED WITH TIMER0

                                                                                                              Value on:      Value on all

Address     Name     Bit 7           Bit 6       Bit 5     Bit 4     Bit 3        Bit 2     Bit 1      Bit 0       POR,      other resets

                                                                                                                   BOR

01h, 101h   TMR0     Timer0 module’s register                                                                 xxxx   xxxx    uuuu  uuuu

0Bh,8Bh,    INTCON   GIE          PEIE(1)        T0IE      INTE      RBIE         T0IF      INTF       RBIF   0000   000x    0000  000u

10Bh,18Bh

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

85h         TRISA    —               —       PORTA Data Direction Register(1)                                 --11   1111    --11  1111

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

Note   1:   TRISA<5> and bit PEIE are not implemented on the PIC16C61, read as '0'.

 1997-2013 Microchip Technology Inc.                                                                                DS30234E-page        69
PIC16C6X

NOTES:

DS30234E-page  70   1997-2013 Microchip Technology Inc.
                                                                                                                   PIC16C6X

8.0           TIMER1 MODULE                                                    Timer1 also has an internal “reset input”. This reset can

Applicable Devices                                                             be generated by CCP1 or CCP2 (Capture/Compare/

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                               PWM) module. See Section 10.0 for details. Figure 8-1

                                                                               shows the Timer1 control register.

Timer1 is a 16-bit timer/counter consisting of two 8-bit                       For      the      PIC16C62A/R62/63/R63/64A/R64/65A/R65/

registers (TMR1H and TMR1L) which are readable and                             R66/67,       when        the   Timer1     oscillator  is  enabled

writable. Register TMR1 (TMR1H:TMR1L) increments                               (T1OSCEN is set), the RC1 and RC0 pins become

from      0000h    to  FFFFh   and     rolls    over  to  0000h.  The          inputs. That is, the TRISC<1:0> value is ignored.

TMR1 Interrupt, if enabled, is generated on overflow

which is latched in interrupt flag bit TMR1IF (PIR1<0>).                       For the PIC16C62/64/65, when the Timer1 oscillator is

This interrupt can be enabled/disabled by setting/clear-                       enabled (T1OSCEN is set), RC1 pin becomes an input,

ing the TMR1 interrupt enable bit TMR1IE (PIE1<0>).                            however the RC0 pin will have to be configured as an

Timer1 can operate in one of two modes:                                        input by setting the TRISC<0> bit.

•   As a timer                                                                 The Timer1 module also has a software programmable

•   As a counter                                                               prescaler.

The operating mode is determined by clock select bit,

TMR1CS (T1CON<1>) (Figure 8-2).

In  timer       mode,  Timer1  increments       every     instruction

cycle.        In counter mode, it increments on every rising

edge of the external clock input.

Timer1        can  be  enabled/disabled         by    setting/clearing

control bit TMR1ON (T1CON<0>).

FIGURE          8-1:      T1CON: TIMER1 CONTROL REGISTER (ADDRESS 10h)

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

          —            —    T1CKPS1 T1CKPS0               T1OSCEN  T1SYNC      TMR1CS        TMR1ON            R   = Readable bit

    bit7                                                                                                bit0   W   = Writable bit

                                                                                                               U   = Unimplemented bit,

                                                                                                                   read as ‘0’

                                                                                                               -n  = Value at POR reset

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

    bit   5-4:     T1CKPS1:T1CKPS0: Timer1 Input Clock Prescale Select bits

                   11 = 1:8 Prescale value

                   10 = 1:4 Prescale value

                   01 = 1:2 Prescale value

                   00 = 1:1 Prescale value

    bit   3:       T1OSCEN: Timer1 Oscillator Enable Control bit

                   1 = Oscillator is enabled

                   0 = Oscillator is shut off

                   Note: The oscillator inverter and feedback resistor are turned off to eliminate power drain.

    bit   2:       T1SYNC: Timer1 External Clock Input Synchronization Control bit

                   TMR1CS = 1

                   1 = Do not synchronize external clock input

                   0 = Synchronize external clock input

                   TMR1CS = 0

                   This bit is ignored. Timer1 uses the internal clock when TMR1CS =         0.

    bit   1:       TMR1CS: Timer1 Clock Source Select bit

                   1 = External clock from T1OSI (on the rising edge) (See pinouts for       pin  with  T1OSI  function)

                   0 = Internal clock (Fosc/4)

    bit   0:       TMR1ON: Timer1 On bit

                   1 = Enables Timer1

                   0 = Stops Timer1

 1997-2013 Microchip Technology Inc.                                                                                           DS30234E-page  71
PIC16C6X

8.1        Timer1 Operation in Timer Mode                                 8.2.1       EXTERNAL CLOCK INPUT TIMING FOR

Applicable Devices                                                                    SYNCHRONIZED COUNTER MODE

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                          When an external clock input is used for Timer1 in syn-

Timer  mode      is  selected   by  clearing  bit  TMR1CS                 chronized counter mode, it must meet certain require-

(T1CON<1>). In this mode, the input clock to the timer                    ments.      The  external        clock  requirement         is  due     to

is   Fosc/4.   The   synchronize    control   bit  T1SYNC                 internal phase clock (Tosc) synchronization. Also, there

(T1CON<2>) has no effect since the internal clock is                      is a delay in the actual incrementing of TMR1 after syn-

always in sync.                                                           chronization.

8.2        Timer1 Operation in Synchronized                               When the prescaler is 1:1, the external clock input is

                                                                          the same as the prescaler output. The synchronization

           Counter Mode                                                   of      T1CKI    with  the   internal   phase    clocks     is  accom-

Applicable Devices                                                        plished by sampling the prescaler output on the Q2 and

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                          Q4 cycles of the internal phase clocks. Therefore, it is

Counter mode is selected by setting bit TMR1CS. In                        necessary for T1CKI to be high for at least 2Tosc (and

this mode the timer increments on every rising edge of                    a small RC delay of 20 ns) and low for at least 2Tosc

clock input on T1OSI when enable bit T1OSCEN is set                       (and a small RC delay of 20 ns). Refer to appropriate

or pin with T1CKI when bit T1OSCEN is cleared.                            electrical specification section, parameters 45, 46, and

                                                                          47.

    Note:      The T1OSI function is multiplexed to differ-               When a prescaler other than 1:1 is used, the external

               ent pins, depending on the device. See the                 clock input is divided by the asynchronous ripple-coun-

               pinout descriptions to see which pin has                   ter type prescaler so that the prescaler output is sym-

               the T1OSI function.                                        metrical. In order for the external clock to meet the

If T1SYNC is cleared, then the external clock input is                    sampling requirement, the ripple counter must be taken

synchronized with internal phase clocks. The synchro-                     into account. Therefore, it is necessary for T1CKI to

nization is done after the prescaler stage. The pres-                     have a period of at least 4Tosc (and a small RC delay

caler stage is an asynchronous ripple counter.                            of      40  ns)  divided     by  the  prescaler     value.  The  only

In this configuration, during SLEEP mode, Timer1 will                     requirement on T1CKI high and low time is that they do

not increment even if an external clock is present, since                 not violate the minimum pulse width requirements of

the synchronization circuit is shut off. The prescaler,                   10 ns). Refer to applicable electrical specification sec-

however, will continue to increment.                                      tion, parameters 40, 42, 45, 46, and 47.

FIGURE 8-2:          TIMER1 BLOCK DIAGRAM

                     TMR1IF

                     Overflow                                                              0                    Synchronized

                     Interrupt             TMR1                                                                  clock input

                     flag bit       TMR1H     TMR1L

                                                                                           1

                                                                       TMR1ON

                                                                          on/off           T1SYNC

                                    T1OSC                       (3)

               T1OSO(2)                                                   1                                       Synchronize

                                                                                           Prescaler

                                                 T1OSCEN        Fosc/4                     1, 2, 4, 8             det

               T1OSI(2)                          Enable         Internal  0
                                                 Oscillator(1)
                                                                Clock                            2

                                                                          TMR1CS                                  SLEEP input

                                                                                      T1CKPS1:T1CKPS0

     Note  1:  When enable bit T1OSCEN is cleared, the inverter and feedback resistor are turned off. This eliminates          power      drain.

           2:  See pinouts for pins with T1OSO and T1OSI functions.

           3:  For the PIC16C62/64/65, the Schmitt Trigger is not implemented in external clock mode.

DS30234E-page    72                                                                                     1997-2013 Microchip Technology Inc.
                                                                                                     PIC16C6X

8.3        Timer1 Operation in Asynchronous                       EXAMPLE 8-1:              READING A 16-BIT

           Counter Mode                                                                     FREE-RUNNING TIMER

Applicable Devices                                                ;    All    Interrupts        are  disabled

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                       MOVF         TMR1H,      W        ;Read     high   byte

If control bit T1SYNC (T1CON<2>) is set, the external                  MOVWF        TMPH                 ;

clock input is not synchronized. The timer continues to                MOVF         TMR1L,      W        ;Read     low   byte

increment asynchronous to the internal phase clocks.                   MOVWF        TMPL                 ;

                                                                       MOVF         TMR1H,      W        ;Read     high   byte

The timer will continue to run during SLEEP and gener-                 SUBWF        TMPH,       W        ;Sub   1st     read

ate an interrupt on overflow which will wake the proces-                                                 ;with     2nd   read

sor.   However,  special  precautions       in  software   are         BTFSC        STATUS,Z             ;is    result    =   0

needed to read-from or write-to the Timer1 register                    GOTO         CONTINUE             ;Good     16-bit     read

pair, TMR1L and TMR1H (Section 8.3.2).                            ;  TMR1L    may   have   rolled    over    between     the     read

In asynchronous counter mode, Timer1 cannot be used               ;  of   the    high  and      low  bytes.    Reading    the    high

                                                                  ;  and    low  bytes    now      will  read   a  good   value.

as a time-base for capture or compare operations.                      MOVF         TMR1H,      W        ;Read     high   byte

8.3.1      EXTERNAL CLOCK INPUT TIMING WITH                            MOVWF        TMPH                 ;

                                                                       MOVF         TMR1L,      W        ;Read     low   byte

           UNSYNCHRONIZED CLOCK                                        MOVWF        TMPL                 ;

If control bit T1SYNC is set, the timer will increment            ;    Re-enable       Interrupt     (if     required)

completely asynchronously. The input clock must meet              CONTINUE                               ;Continue       with

certain minimum high time and low time requirements,                   :                                 ;your     code

as specified in timing parameters (45 - 47).                      8.4         Timer1 Oscillator

8.3.2      READING AND WRITING TMR1 IN                            Applicable Devices

           ASYNCHRONOUS COUNTER MODE                              61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

Reading TMR1H or TMR1L, while the timer is running                A crystal oscillator circuit is built in-between pins T1OSI

from   an  external   asynchronous     clock,   will  ensure  a   (input) and T1OSO (amplifier output). It is enabled by

valid read (taken care of in hardware). However, the              setting control bit T1OSCEN (T1CON<3>). The oscilla-

user should keep in mind that reading the 16-bit timer            tor is a low power oscillator rated up to 200 kHz. It will

in two 8-bit values itself poses certain problems since           continue to run during SLEEP. It is primarily intended

the timer may overflow between the reads.                         for  a  32   kHz    crystal.  Table 8-1   shows    the   capacitor

For writes, it is recommended that the user simply stop           selection for the Timer1 oscillator.

the timer and write the desired values. A write conten-           The Timer1 oscillator is identical to the LP oscillator.

tion may occur by writing to the timer registers while the        The user must allow a software time delay to ensure

register is incrementing. This may produce an unpre-              proper oscillator start-up.

dictable value in the timer register.                             TABLE 8-1:            CAPACITOR SELECTION FOR

Reading    the   16-bit   value       requires  some      care.                         THE TIMER1 OSCILLATOR

Example 8-1 is an example routine to read the 16-bit

timer  value.   This  is  useful  if   the  timer  cannot     be     Osc Type           Freq                C1               C2

stopped.                                                                  LP           32 kHz            33 pF            33 pF

                                                                                       100 kHz           15 pF            15 pF

                                                                                       200 kHz           15 pF            15 pF

                                                                          These values are for design guidance only.

                                                                  Crystals Tested:

                                                                  32.768 kHz          Epson C-001R32.768K-A               20 PPM

                                                                  100 kHz             Epson C-2 100.00 KC-P               20 PPM

                                                                  200 kHz             STD XTL 200.000 kHz                 20 PPM

                                                                  Note 1:      Higher capacitance increases the stability

                                                                               of oscillator but also increases the start-up

                                                                               time.

                                                                          2:   Since each resonator/crystal has its own

                                                                               characteristics, the user should consult the

                                                                               resonator/crystal manufacturer for appropri-

                                                                               ate values of external components.

 1997-2013 Microchip Technology Inc.                                                                           DS30234E-page       73
PIC16C6X

8.5       Resetting Timer1 using a CCP Trigger                           8.6         Resetting of TMR1 Register Pair

          Output                                                                     (TMR1H:TMR1L)

Applicable Devices                                                       Applicable Devices

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                         61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

CCP2 is implemented on the PIC16C63/R63/65/65A/                          The TMR1H and TMR1L registers are not reset to 00h

R65/66/67 only.                                                          on a POR or any other reset except by the CCP1 or

If CCP1 or CCP2 module is configured in Compare                          CCP2  special event trigger.

mode      to  generate     a      “special  event    trigger”            The T1CON register is reset to 00h on a Power-on

(CCPxM3:CCPxM0          =  1011),  this     signal   will  reset         Reset or a Brown-out Reset, which shuts off the timer

Timer1.                                                                  and leaves a 1:1 prescaler. In all other resets, the reg-

Note:         The   “special    event     trigger”   from  the           ister is unaffected.

              CCP1and CCP2 modules will not set inter-                   8.7         Timer1 Prescaler

              rupt flag bit TMR1IF(PIR1<0>).                             Applicable Devices

Timer1 must be configured for either timer or synchro-                   61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

nized counter mode to take advantage of this feature.                    The   prescaler  counter     is     cleared  on  writes  to  the

If the Timer1 is running in asynchronous counter mode,                   TMR1H or TMR1L registers.

this reset operation may not work.

In the event that a write to Timer1 coincides with a spe-

cial event trigger from CCP1 or CCP2, the write will

take precedence.

In this mode of operation, the CCPRxH:CCPRxL regis-

ters pair effectively becomes the period register for the

Timer1 module.

TABLE 8-2:           REGISTERS ASSOCIATED WITH TIMER1 AS A TIMER/COUNTER

                                                                                                              Value on:     Value on

Address       Name      Bit 7     Bit 6     Bit 5    Bit 4        Bit 3       Bit 2  Bit 1            Bit 0   POR,          all other

                                                                                                              BOR           resets

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

10Bh,18Bh

0Ch           PIR1      PSPIF(2)   (3)      RCIF(1)  TXIF(1)      SSPIF    CCP1IF    TMR2IF           TMR1IF  0000    0000  0000  0000

8Ch           PIE1      PSPIE(2)   (3)      RCIE(1)  TXIE(1)      SSPIE    CCP1IE    TMR2IE           TMR1IE  0000    0000  0000  0000

0Eh           TMR1L     Holding register  for the Least Significant Byte of the 16-bit TMR1 register          xxxx    xxxx  uuuu  uuuu

0Fh           TMR1H     Holding register  for the Most Significant Byte of the 16-bit TMR1 register           xxxx    xxxx  uuuu  uuuu

10h           T1CON        —       —      T1CKPS1    T1CKPS0      T1OSCEN  T1SYNC    TMR1CS           TMR1ON  --00    0000  --uu  uuuu

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

Note  1:  The USART is implemented on the PIC16C63/R63/65/65A/R65/66/67 only.

      2:  Bits PSPIE and PSPIF are reserved on the PIC16C62/62A/R62/63/R63/66, always maintain these bits clear.

      3:  PIR1<6> and PIE1<6> are reserved, always maintain these bits clear.

DS30234E-page       74                                                                                1997-2013 Microchip Technology Inc.
                                                                                                                      PIC16C6X

9.0              TIMER2 MODULE                                                 9.1           Timer2 Prescaler and Postscaler

Applicable Devices                                                             Applicable Devices

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                               61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

Timer2 is an 8-bit timer with a prescaler and a post-                          The  prescaler         and         postscaler  counters  are      cleared

scaler. It is especially suitable as PWM time-base for                         when any of the following occurs:

PWM mode of CCP module(s). TMR2 is a readable and                              •  a write to the TMR2 register

writable register, and is cleared on any device reset.                         •  a write to the T2CON register

The input clock (FOSC/4) has a prescale option of 1:1,                         •  any device reset (POR, BOR, MCLR Reset, or

1:4          or  1:16,    selected          by       control  bits                WDT Reset).

T2CKPS1:T2CKPS0 (T2CON<1:0>).                                                  TMR2 is not cleared when T2CON is written.

The Timer2 module has an 8-bit period register, PR2.

Timer2 increments from 00h until it matches PR2 and                            9.2           Output of TMR2

then resets to 00h on the next increment cycle. PR2 is                         Applicable Devices

a readable and writable register. The PR2 register is ini-                     61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67

tialized to FFh upon reset.                                                    The output of TMR2 (before the postscaler) is fed to the

The match output of the TMR2 register goes through a                           Synchronous Serial Port module which optionally uses

4-bit      postscaler     (which  gives  a  1:1  to  1:16     scaling,         it to generate shift clock.

inclusive) to generate a TMR2 interrupt (latched in flag

bit TMR2IF (PIR1<1>)).                                                         FIGURE 9-1:             TIMER2 BLOCK DIAGRAM

The Timer2 module can be shut off by clearing control                             Sets             ToMutRpu2t(1)

bit  TMR2ON            (T2CON<2>)    to  minimize    power    con-                TMR2
                                                                                  interrupt

sumption.                                                                         flag bit,

                                                                                  TMR2IF           Reset

Figure 9-2 shows the Timer2 control register. T2CON is                                                            TMR2 reg            Prescaler   Fosc/4

cleared upon reset which initializes Timer2 as shut off                                                                       1:1, 1:4, 1:16

with the prescaler and postscaler at a 1:1 value.                                   Postscaler                    Comparator            2

                                                                                        1:1 to  1:16  EQ

                                                                                                4                 PR2 reg

                                                                                  Note   1:     TMR2 register output can be software selected by

                                                                                                the SSP Module as a baud clock.

FIGURE           9-2:     T2CON: TIMER2 CONTROL REGISTER (ADDRESS 12h)

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

           —     TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0              TMR2ON           T2CKPS1       T2CKPS0              R   = Readable bit

     bit7                                                                                             bit0        W   = Writable bit

                                                                                                                  U   = Unimplemented bit,

                                                                                                                      read as ‘0’

                                                                                                                  -n  = Value at POR reset

     bit 7:      Unimplemented: Read as '0'

     bit   6-3:  TOUTPS3:TOUTPS0: Timer2 Output Postscale Select bits

                 0000 = 1:1 postscale

                 0001 = 1:2 postscale

                       

                       

                 1111 = 1:16 postscale

     bit   2:    TMR2ON: Timer2 On bit

                 1 = Timer2 is on

                 0 = Timer2 is off

     bit   1-0:  T2CKPS1:T2CKPS0: Timer2 Clock Prescale Select bits

                 00 = 1:1 prescale

                 01 = 1:4 prescale

                 1x = 1:16 prescale

 1997-2013 Microchip Technology Inc.                                                                                              DS30234E-page  75
PIC16C6X

TABLE 9-1:       REGISTERS ASSOCIATED WITH TIMER2 AS A TIMER/COUNTER

                                                                                                           Value on:    Value on

Address    Name     Bit 7     Bit 6           Bit 5  Bit 4    Bit 3            Bit 2   Bit 1   Bit 0       POR,         all other

                                                                                                           BOR          resets

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

10Bh,18Bh

0Ch        PIR1     PSPIF(2)  (3)           RCIF(1)  TXIF(1)  SSPIF            CCP1IF  TMR2IF  TMR1IF      0000  0000   0000  0000

8Ch        PIE1     PSPIE(2)  (3)           RCIE(1)  TXIE(1)  SSPIE            CCP1IE  TMR2IE  TMR1IE      0000  0000   0000  0000

11h        TMR2     Timer2 module’s register                                                               0000  0000   0000  0000

12h        T2CON    —         TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0                       -000  0000   -000  0000

92h        PR2      Timer2 Period register                                                                 1111  1111   1111  1111

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

Note  1:  The USART is implemented on the PIC16C63/R63/65/65A/R65/66/67 only.

      2:  Bits PSPIE and PSPIF are reserved on the PIC16C62/62A/R62/63/R63/66, always maintain these       bits clear.

      3:  PIR1<6> and PIE1<6> are reserved, always maintain these bits clear.

DS30234E-page   76                                                                      1997-2013 Microchip Technology Inc.
                                                                                       PIC16C6X

10.0     CAPTURE/COMPARE/PWM                                      CCP2 module:

         (CCP) MODULE(s)                                          Capture/Compare/PWM  Register2  (CCPR2)              is  com-

Applicable Devices                                                prised of two 8-bit registers: CCPR2L (low byte) and

61 62  62A  R62  63  R63  64  64A  R64  65  65A  R65  66 67 CCP1  CCPR2H (high byte). The CCP2CON register controls

61 62  62A  R62  63  R63  64  64A  R64  65  65A  R65  66 67 CCP2  the operation of CCP2. All are readable and writable.

Each CCP (Capture/Compare/PWM) module contains                    For use of the CCP modules, refer to the Embedded

a 16-bit register which can operate as a 16-bit capture           Control Handbook, “Using the CCP Modules” (AN594).

register, as a 16-bit compare register, or as a PWM               TABLE 10-1:   CCP MODE - TIMER

master/slave duty cycle register. Both the CCP1 and                             RESOURCE

CCP2   modules       are  identical  in  operation,   with  the

exception of the operation of the special event trigger.          CCP Mode                Timer Resource

Table 10-1  and      Table 10-2    show     the  resources  and

interactions of the CCP modules(s). In the following              Capture                         Timer1

sections, the operation of a CCP module is described              Compare                         Timer1

with respect to CCP1. CCP2 operates the same as                   PWM                             Timer2

CCP1, except where noted.

CCP1 module:

Capture/Compare/PWM           Register1     (CCPR1)   is    com-

prised of two 8-bit registers: CCPR1L (low byte) and

CCPR1H (high byte). The CCP1CON register controls

the operation of CCP1. All are readable and writable.

TABLE 10-2:          INTERACTION OF TWO CCP MODULES

CCPx Mode        CCPy Mode                                        Interaction

Capture          Capture           Same TMR1 time-base.

Capture          Compare           The compare should be configured for the special event trigger, which clears TMR1.

Compare          Compare           The compare(s) should be configured for the special event trigger, which clears TMR1.

PWM              PWM               The PWMs will have the same frequency, and update rate (TMR2 interrupt).

PWM              Capture           None

PWM              Compare           None

 1997-2013 Microchip Technology Inc.                                                             DS30234E-page            77
PIC16C6X

FIGURE 10-1:         CCP1CON REGISTER (ADDRESS 17h) / CCP2CON REGISTER (ADDRESS 1Dh)

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

      —         —        CCPxX   CCPxY  CCPxM3        CCPxM2    CCPxM1        CCPxM0         R = Readable bit

    bit7                                                                             bit0    W = Writable bit

                                                                                             U = Unimplemented bit, read

                                                                                             as ‘0’

                                                                                             - n =Value at POR reset

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

    bit   5-4:  CCPxX:CCPxY: PWM Least Significant bits

                Capture Mode

                Unused

                Compare Mode

                Unused

                PWM Mode

                These bits are the two LSbs of the PWM duty cycle. The eight MSbs are found in CCPRxL.

    bit   3-0:  CCPxM3:CCPxM0: CCPx Mode Select bits

                0000 = Capture/Compare/PWM off (resets CCPx module)

                0100 = Capture mode, every falling edge

                0101 = Capture mode, every rising edge

                0110 = Capture mode, every 4th rising edge

                0111 = Capture mode, every 16th rising edge

                1000 = Compare mode, set output on match (bit CCPxIF is set)

                1001 = Compare mode, clear output on match (bit CCPxIF is set)

                1010 = Compare mode, generate software interrupt on match (bit CCPxIF is set, CCPx pin is unaffected)

                1011 = Compare mode, trigger special event (CCPxIF bit is set; CCP1 resets TMR1; CCP2 resets TMR1)

                11xx = PWM mode

10.1       Capture Mode                                         FIGURE        10-2:      CAPTURE MODE OPERATION

Applicable Devices                                                                       BLOCK DIAGRAM

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                                             Set CCP1IF

In   Capture    mode,    CCPR1H:CCPR1L      captures     the                    Prescaler    PIR1<2>

16-bit value of the TMR1 register when an event occurs                           1, 4, 16

on pin RC2/CCP1 (Figure 10-2). An event is defined              RC2/CCP1                                 CCPR1H      CCPR1L

as:                                                             pin

•   Every falling edge                                                             and                 Capture

                                                                                edge detect            Enable

•   Every rising edge                                                                                    TMR1H       TMR1L

•   Every 4th rising edge                                                            CCP1CON<3:0>

•   Every 16th rising edge                                                      Q’s

An event is selected by control bits CCP1M3:CCP1M0

(CCP1CON<3:0>). When a capture is made, the inter-              10.1.2        TIMER1 MODE SELECTION

rupt request flag bit CCP1IF (PIR1<2>) is set. It must          Timer1 must be running in Timer mode or Synchro-

be cleared in software. If another capture occurs before        nized Counter mode for the CCP module to use the

the value in register CCPR1 is read, the old captured           capture feature. In Asynchronous Counter mode, the

value will be lost.                                             capture operation may not work consistently.

10.1.1     CCP PIN CONFIGURATION                                10.1.3        SOFTWARE INTERRUPT

In Capture mode, the RC2/CCP1 pin should be config-             When the Capture event is changed, a false capture

ured as an input by setting the TRISC<2> bit.                   interrupt     may    be    generated.  The     user  should  clear

    Note:       If the RC2/CCP1 pin is configured as an         enable bit CCP1IE (PIE1<2>) to avoid false interrupts

                output, a write to PORTC can cause a cap-       and should clear flag bit CCP1IF following any such

                ture condition.                                 change in operating mode.

DS30234E-page        78                                                                     1997-2013 Microchip Technology Inc.
                                                                                                            PIC16C6X

10.1.4   CCP PRESCALER                                                      10.2.1   CCP PIN CONFIGURATION

There    are  four    prescaler  settings,        specified     by    bits  The user must configure the RC2/CCP1 pin as an out-

CCP1M3:CCP1M0.           Whenever            the     CCP  module        is  put by clearing the TRISC<2> bit.

turned off, or the CCP module is not in Capture mode,                       Note:         Clearing the CCP1CON register will force

the prescaler counter is cleared. This means that any                                     the RC2/CCP1 compare output latch to the

reset will clear the prescaler counter.                                                   default low level. This is not the data latch.

Switching from one capture prescaler to another may

generate an interrupt. Also, the prescaler counter will                     10.2.1   TIMER1 MODE SELECTION

not be cleared, therefore the first capture may be from                     Timer1 must be running in Timer mode or Synchro-

a non-zero prescaler. Example 10-1 shows the recom-                         nized Counter mode if the CCP module is using the

mended method for switching between capture pres-                           compare feature. In Asynchronous Counter mode, the

calers. This example also clears the prescaler counter                      compare operation may not work.

and will not generate the “false” interrupt.

                                                                            10.2.2   SOFTWARE INTERRUPT MODE

EXAMPLE 10-1:            CHANGING BETWEEN

                         CAPTURE PRESCALERS                                 When     Generate     Software  Interrupt  is    chosen,  the

                                                                            CCP1 pin is not affected. Only a CCP interrupt is gen-

CLRF     CCP1CON         ;  Turn    CCP           module     off            erated (if enabled).

MOVLW    NEW_CAPT_PS     ;  Load    the           W  reg  with

                         ;  the     new      prescaler                      10.2.3   SPECIAL EVENT TRIGGER

                         ;  mode    value            and  CCP     ON

MOVWF    CCP1CON         ;  Load    CCP1CON             with                In this mode, an internal hardware trigger is generated

;  this  value                                                              which may be used to initiate an action.

10.2     Compare Mode                                                       The special event trigger output of CCP1 and CCP2

Applicable Devices                                                          resets   the  TMR1    register  pair.      This  allows   the

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                            CCPR1H:CCPR1L and CCPR2H:CCPR2L registers to

                                                                            effectively be 16-bit programmable period register(s)

In Compare mode, the 16-bit CCPR1 register value is                         for Timer1.

constantly compared against the TMR1 register pair                          For compatibility issues, the special event trigger out-

value. When a match occurs, the RC2/CCP1 pin is:                            put  of  CCP1      (PIC16C72)   and    CCP2      (all    other

•  Driven High                                                              PIC16C7X devices) also starts an A/D conversion.

•  Driven Low                                                               Note:         The  “special     event  trigger”  from     the

•  Remains Unchanged                                                                      CCP1and CCP2 modules will not set inter-

The action on the pin is based on the value of control                                    rupt flag bit TMR1IF (PIR1<0>).

bits  CCP1M3:CCP1M0              (CCP1CON<3:0>).                At    the

same time interrupt flag bit CCP1IF is set.

FIGURE 10-3:          COMPARE MODE

                      OPERATION BLOCK

                      DIAGRAM

              Special event trigger will reset Timer1, but not

              set interrupt flag bit TMR1IF (PIR1<0>).

                      Special Event Trigger

                                 Set CCP1IF

                                 PIR1<2>

                                                     CCPR1H     CCPR1L

                  Q   S  Output

   RC2/CCP1              Logic      match            Comparator

                      R

        TRISC<2>                                     TMR1H      TMR1L

       Output Enable

                      CCP1CON<3:0>

                      Mode Select

 1997-2013 Microchip Technology Inc.                                                                              DS30234E-page          79
PIC16C6X

10.3   PWM Mode                                                           10.3.1    PWM PERIOD

Applicable Devices                                                        The PWM period is specified by writing to the PR2 reg-

61 62 62A R62 63 R63 64 64A R64 65 65A R65 66 67                          ister. The PWM period can be calculated using the fol-

In Pulse Width Modulation (PWM) mode, the CCP1 pin                        lowing formula:

produces up to a 10-bit resolution PWM output. Since                           PWM period = [(PR2) + 1] • 4 • TOSC •

the CCP1 pin is multiplexed with the PORTC data latch,                                         (TMR2 prescale value)

the TRISC<2> bit must be cleared to make the CCP1

pin an output.                                                            PWM frequency is defined as 1 / [PWM period].

Note:        Clearing the CCP1CON register will force                     When TMR2 is equal to PR2, the following three events

             the CCP1 PWM output latch to the default                     occur on the next increment cycle:

             low level. This is not the PORTC I/O data                    •  TMR2 is cleared

             latch.                                                       •  The PWM duty cycle is latched from CCPR1L into

Figure 10-4 shows a simplified block diagram of the                          CCPR1H

CCP module in PWM mode.                                                   •  The CCP1 pin is set (exception: if PWM duty

For a step by step procedure on how to set up the CCP                        cycle = 0%, the CCP1 pin will not be set)

module for PWM operation, see Section 10.3.3.

                                                                             Note:      The Timer2 postscaler (see Section 9.1) is

FIGURE 10-4:          SIMPLIFIED PWM BLOCK                                              not used in the determination of the PWM

                      DIAGRAM                                                           frequency. The postscaler could be used to

                                                                                        have a servo update rate at a different fre-

      Duty cycle registers              CCP1CON<5:4>                                    quency than the PWM output.

CCPR1L                                                                    10.3.2    PWM DUTY CYCLE

                                                                          The    PWM    duty   cycle  is  specified   by    writing  to  the

                                                                          CCPR1L register and to the CCP1CON<5:4> bits. Up

CCPR1H (Slave)                                                            to 10-bit resolution is available: the CCPR1L contains

                                                                          the eight MSbs and the CCP1CON<5:4> contains the

       Comparator                            R        Q                   two    LSbs.  This      10-bit  value   is  represented        by

                                                                          CCPR1L:CCP1CON<5:4>. The following equation is

                                                             RC2/CCP1     used to calculate the PWM duty cycle in time:

       TMR2           (Note 1)

                                             S                               PWM duty cycle = (CCPR1L:CCP1CON<5:4>) •

                                                                                                  Tosc • (TMR2 prescale value)

Comparator                                               TRISC2           CCPR1L and CCP1CON<5:4> can be written to at any

                            Clear Timer,                                  time,   but  the  duty  cycle   value   is  not   latched      into

                            CCP1 pin and

      PR2                   latch D.C.                                    CCPR1H until after a match between PR2 and TMR2

                                                                          occurs (i.e., the period is complete). In PWM mode,

Note 1: 8-bit timer is concatenated with 2-bit internal Q clock           CCPR1H is a read-only register.

       or 2 bits of the prescaler to create 10-bit time-base.             The CCPR1H register and a 2-bit internal latch are

A PWM output (Figure 10-5) has a time base (period)                       used to double buffer the PWM duty cycle. This double

and a time that the output stays high (duty cycle). The                   buffering is essential for glitchless PWM operation.

frequency    of  the  PWM       is      the  inverse     of  the  period  When the CCPR1H and 2-bit latch match TMR2 con-

(1/period).                                                               catenated with an internal 2-bit Q clock or 2 bits of the

                                                                          TMR2 prescaler, the CCP1 pin is cleared.

FIGURE 10-5:          PWM OUTPUT                                          Maximum PWM resolution (bits) for a given PWM

                     &nbs