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

产品描述

搜索
 

PIC17C756A-16/CL

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

器件描述

8-BIT, OTPROM, 8 MHz, RISC MICROCONTROLLER, PQFP80

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

参数
PIC17C756A-16/CL功能数量 1
PIC17C756A-16/CL端子数量 80
PIC17C756A-16/CL最大工作温度 85 Cel
PIC17C756A-16/CL最小工作温度 -40 Cel
PIC17C756A-16/CL最大供电/工作电压 5.5 V
PIC17C756A-16/CL最小供电/工作电压 3 V
PIC17C756A-16/CL额定供电电压 5 V
PIC17C756A-16/CL外部数据总线宽度 8
PIC17C756A-16/CL输入输出总线数量 66
PIC17C756A-16/CL线速度 8 MHz
PIC17C756A-16/CL加工封装描述 12 X 12 MM, 1 MM HEIGHT, PLASTIC, MS-026, TQFP-80
PIC17C756A-16/CL无铅 Yes
PIC17C756A-16/CL欧盟RoHS规范 Yes
PIC17C756A-16/CL中国RoHS规范 Yes
PIC17C756A-16/CL状态 ACTIVE
PIC17C756A-16/CL工艺 CMOS
PIC17C756A-16/CL包装形状 SQUARE
PIC17C756A-16/CL包装尺寸 FLATPACK, THIN PROFILE, FINE PITCH
PIC17C756A-16/CL表面贴装 Yes
PIC17C756A-16/CL端子形式 GULL WING
PIC17C756A-16/CL端子间距 0.5000 mm
PIC17C756A-16/CL端子涂层 MATTE TIN
PIC17C756A-16/CL端子位置 QUAD
PIC17C756A-16/CL包装材料 PLASTIC/EPOXY
PIC17C756A-16/CL温度等级 INDUSTRIAL
PIC17C756A-16/CLADC通道 Yes
PIC17C756A-16/CL地址总线宽度 16
PIC17C756A-16/CL位数 8
PIC17C756A-16/CL最大FCLK时钟频率 8 MHz
PIC17C756A-16/CL微处理器类型 RISC MICROCONTROLLER
PIC17C756A-16/CLPWM通道 Yes
PIC17C756A-16/CLROM编程 OTPROM

文档预览

PIC17C756A-16/CL器件文档内容

                      PIC17C7XX

High-Performance 8-Bit CMOS EPROM Microcontrollers with 10-bit A/D

Microcontroller Core Features:                         Pin Diagrams
                                                         84 LCC
Only 58 single word instructions to learn                              RH1
All single cycle instructions (121 ns) except for                         RH0
                                                                               RD2/AD10
   program branches and table reads/writes which                                  RD3/AD11
   are two-cycle                                                                      RD4/AD12
Operating speed:                                                                       RD5/AD13
   - DC - 33 MHz clock input                                                                RD6/AD14
   - DC - 121 ns instruction cycle                                                              RD7/AD15
8 x 8 Single-Cycle Hardware Multiplier                                                           RC0/AD0
Interrupt capability                                                                                VDD
16 level deep hardware stack                                                                           NC
Direct, indirect, and relative addressing modes                                                            VSS
Internal/external program memory execution,                                                                   RC1/AD1
   Capable of addressing 64K x 16 program memory                                                                   RC2/AD2
   space                                                                                                              RC3/AD3
                                                                                                                          RC4/AD4
                                                                                                                             RC5/AD5
                                                                                                                                RC6/AD6
                                                                                                                                    RC7/AD7
                                                                                                                                       RJ7
                                                                                                                                          RJ6

                                                                         11 10 9 8 7 6 5 4 3 2 1 84 83 82 81 80 79 78 77 76 75

                                                               RH2   12                                                                          74  RJ5
                                                               RH3                                                                                   RJ4
                                                        RD1/AD9      13                                                                          73  RA0/INT
                                                        RD0/AD8                                                                                      RB0/CAP1
                                                         RE0/ALE     14                                                                          72  RB1/CAP2
                                                          RE1/OE                                                                                     RB3/PWM2
                                                         RE2/WR      15                                                                          71  RB4/TCLK12
                                                       RE3/CAP4                                                                                      RB5/TCLK3
                                                       MCLR/VPP      16                                                                          70  RB2/PWM1
                                                             TEST                                                                                    VSS
                                                                 NC  17                                                                          69  NC
                                                                VSS                                                                                  OSC2/CLKOUT
                                                                VDD  18                                                                          68  OSC1/CLKIN
                                                       RF7/AN11                                                                                      VDD
                                                       RF6/AN10      19                                                                          67  RB7/SDO
                                                         RF5/AN9                                                                                     RB6/SCK
                                                         RF4/AN8     20                                                                          66  RA3/SDI/SDA
                                                         RF3/AN7                                                                                     RA2/SS/SCL
                                                         RF2/AN6     21  PIC17C76X                                                               65  RA1/T0CKI
                                                       RH4/AN12      22                                                                          64
                                                       RH5/AN13                                                                                      RJ3
                                                                     23                                                                          63  RJ2

                                                                     24                                                                          62

                                                                     25                                                                          61

                                                                     26                                                                          60

                                                                     27                                                                          59

                                                                     28                                                                          58

                                                                     29                                                                          57

                                                                     30                                                                          56

                                                                     31                                                                          55

                                                                     32                                                                          54

                                                                         33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

                                  Memory                                 RH6/AN14
                                                                            RH7/AN15
      Device  Program (x16)       Data (x8)
                                                                               RF1/AN5
PIC17C752             8K             678                                          RF0/AN4
PIC17C756A           16K             902
PIC17C762             8K             678                                              AVDD
PIC17C766            16K             902                                                 AVSS
                                                                                            RG3/AN0/VREF+
                                                                                               RG2/AN1/VREF-
                                                                                                   RG1/AN2
                                                                                                      RG0/AN3

                                                                                                         NC
                                                                                                             VSS
                                                                                                                VDD
                                                                                                                   RG4/CAP3
                                                                                                                       RG5/PWM3
                                                                                                                          RG7/TX2/CK2
                                                                                                                             RG6/RX2/DT2
                                                                                                                                RA5/TX1/CK1
                                                                                                                                    RA4/RX1/DT1
                                                                                                                                       RJ0
                                                                                                                                           RJ1

Peripheral Features:                                   Special Microcontroller Features:

Up to 66 I/O pins with individual direction control   Power-on Reset (POR), Power-up Timer (PWRT)
10-bit, multi-channel analog-to-digital converter       and Oscillator Start-up Timer (OST)
High current sink/source for direct LED drive
Four capture input pins                               Watchdog Timer (WDT) with its own on-chip RC
                                                          oscillator for reliable operation
   - Captures are 16-bit, max resolution 121 ns
Three PWM outputs (resolution is 1- to 10-bits)       Brown-out Reset
TMR0: 16-bit timer/counter with                      Code-protection
                                                       Power saving SLEEP mode
   8-bit programmable prescaler                         Selectable oscillator options
TMR1: 8-bit timer/counter
TMR2: 8-bit timer/counter                            CMOS Technology:
TMR3: 16-bit timer/counter
Two Universal Synchronous Asynchronous                Low-power, high-speed CMOS EPROM
                                                          technology
   Receiver Transmitters (USART/SCI) with Indepen-
   dent baud rate generators                            Fully static design
Synchronous Serial Port (SSP) with SPITM and          Wide operating voltage range (3.0V to 5.5V)
   I2CTM modes (including I2C master mode)             Commercial and Industrial temperature ranges
                                                       Low-power consumption

                                                          - < 5 mA @ 5V, 4 MHz
                                                          - 100 A typical @ 4.5V, 32 kHz
                                                          - < 1 A typical standby current @ 5V

1998 Microchip Technology Inc.                                                    DS30289A-page 1
PIC17C7XX                      RD2/AD10  RD3/AD11  RD4/AD12  RD5/AD13  RD6/AD14       RD7/AD15       RC0/AD0  VDD      NC  VSS  RC1/AD1  RC2/AD2   RC3/AD3   RC4/AD4      RC5/AD5      RC6/AD6      RC7/AD7

Pin Diagrams cont.'d
     68-Pin LCC

                               9         8         7         6         5              4              3        2        1   68   67       66        65        64           63           62           61

                 RD1/AD9   10                                                                                                                                                                                    60  RA0/INT

                 RD0/AD8   11                                                                                                                                                                                    59  RB0/CAP1

                 RE0/ALE   12                                                                                                                                                                                    58  RB1/CAP2

                 RE1/OE    13                                                                                                                                                                                    57  RB3/PWM2

                 RE2/WR    14                                                                                                                                                                                    56  RB4/TCLK12

                 RE3/CAP4  15                                                                                                                                                                                    55  RB5/TCLK3

                 MCLR/VPP  16                                                                                                                                                                                    54  RB2/PWM1

                 TEST      17                                                         PIC17C75X                                                                                                                  53  VSS

                 NC        18                                                                                                                                                                                    52  NC

                 VSS       19                                                                                                                                                                                    51  OSC2/CLKOUT

                 VDD       20                                                                                                                                                                                    50  OSC1/CLKIN

                 RF7/AN11  21                                                                                                                                                                                    49  VDD

                 RF6/AN10  22                                                                                                                                                                                    48  RB7/SDO

                 RF5/AN9   23                                                                                                                                                                                    47  RB6/SCK

                 RF4/AN8   24                                                                                                                                                                                    46  RA3/SDI/SDA

                 RF3/AN7   25                                                                                                                                                                                    45  RA2/SS/SCL

                 RF2/AN6   26                                                                                                                                                                                    44  RA1/T0CKI

                               27        28        29        30        31             32             33       34       35  36   37       38        39        40           41           42           43

                               RF1/AN5   RF0/AN4   AVDD      AVSS      RG3/AN0/VREF+  RG2/AN1/VREF-  RG1/AN2  RG0/AN3  NC  VSS  VDD      RG4/CAP3  RG5/PWM3  RG7/TX2/CK2  RG6/RX2/DT2  RA5/TX1/CK1  RA4/RX1/DT1

64-Pin TQFP                    RD2/AD10  RD3/AD11  RD4/AD12  RD5/AD13  RD6/AD14       RD7/AD15       RC0/AD0  VDD      VSS  RC1/AD1  RC2/AD2   RC3/AD3      RC4/AD4      RC5/AD5       RC6/AD6      RC7/AD7

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

                 RD1/AD9   1                                                                                                                                                                                     48  RA0/INT

                 RD0/AD8   2                                                                                                                                                                                     47  RB0/CAP1

                 RE0/ALE   3                                                                                                                                                                                     46  RB1/CAP2

                 RE1/OE    4                                                                                                                                                                                     45  RB3/PWM2

                 RE2/WR    5                                                                                                                                                                                     44  RB4/TCLK12

                 RE3/CAP4  6                                                                                                                                                                                     43  RB5/TCLK3

                 MCLR/VPP  7                                                          PIC17C75X                                                                                                                  42  RB2/PWM1

                 TEST      8                                                                                                                                                                                     41  VSS

                 VSS       9                                                                                                                                                                                     40  OSC2/CLKOUT

                 VDD       10                                                                                                                                                                                    39  OSC1/CLKIN

                 RF7/AN11  11                                                                                                                                                                                    38  VDD

                 RF6/AN10  12                                                                                                                                                                                    37  RB7/SDO

                 RF5/AN9   13                                                                                                                                                                                    36  RB6/SCK

                 RF4/AN8   14                                                                                                                                                                                    35  RA3/SDI/SDA

                 RF3/AN7   15                                                                                                                                                                                    34  RA2/SS/SCL

                 RF2/AN6   16                                                                                                                                                                                    33  RA1/T0CKI

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

                               RF1/AN5   RF0/AN4   AVDD      AVSS      RG3/AN0/VREF+  RG2/AN1/VREF-  RG1/AN2  RG0/AN3  VSS  VDD      RG4/CAP3  RG5/PWM3     RG7/TX2/CK2   RG6/RX2/DT2  RA5/TX1/CK1  RA4/RX1/DT1

DS30289A-page 2                                                                                                                                                                                                       1998 Microchip Technology Inc.
                                                                                                                       PIC17C7XX

PIN DIAGRAMS cont.'d
    84-pin LCC

                                      RH1
                                         RH0
                                             RD2/AD10
                                                RD3/AD11
                                                   RD4/AD12
                                                       RD5/AD13
                                                          RD6/AD14
                                                              RD7/AD15
                                                                 RC0/AD0
                                                                     VDD
                                                                        NC
                                                                            VSS
                                                                               RC1/AD1
                                                                                   RC2/AD2
                                                                                      RC3/AD3
                                                                                         RC4/AD4
                                                                                             RC5/AD5
                                                                                                RC6/AD6
                                                                                                    RC7/AD7
                                                                                                       RJ7
                                                                                                           RJ6

                                      1110 9 8 7 6 5 4 3 2 1 8483828180 7978777675

                    RH2           12                                                                             74    RJ5
                    RH3                                                                                                RJ4
             RD1/AD9              13                                                                             73    RA0/INT
             RD0/AD8                                                                                                   RB0/CAP1
              RE0/ALE             14                                                                             72    RB1/CAP2
               RE1/OE                                                                                                  RB3/PWM2
              RE2/WR              15                                                                             71    RB4/TCLK12
            RE3/CAP4                                                                                                   RB5/TCLK3
            MCLR/VPP              16                                                                             70    RB2/PWM1
                  TEST                                                                                                 VSS
                      NC          17                                                                             69    NC
                     VSS                                                                                               OSC2/CLKOUT
                     VDD          18                                                                             68    OSC1/CLKIN
            RF7/AN11                                                                                                   VDD
            RF6/AN10              19                                                                             67    RB7/SDO
              RF5/AN9                                                                                                  RB6/SCK
              RF4/AN8             20  PIC17C76X                                                                  66    RA3/SDI/SDA
              RF3/AN7             21                                                                             65    RA2/SS/SCL
              RF2/AN6                                                                                                  RA1/T0CKI
            RH4/AN12              22                                                                             64
            RH5/AN13                                                                                                   RJ3
                                  23                                                                             63    RJ2

                                  24                                                                             62

                                  25                                                                             61

                                  26                                                                             60

                                  27                                                                             59

                                  28                                                                             58

                                  29                                                                             57

                                  30                                                                             56

                                  31                                                                             55

                                  32                                                                             54

                                      3334353637383940414243444546474849505152 53

                                      RH6/AN14
                                         RH7/AN15

                                            RF1/AN5
                                                RF0/AN4

                                                   AVDD
                                                       AVSS
                                                          RG3/AN0/VREF+
                                                              RG2/AN1/VREF-
                                                                 RG1/AN2
                                                                     RG0/AN3

                                                                        NC
                                                                            VSS
                                                                               VDD
                                                                                   RG4/CAP3
                                                                                      RG5/PWM3
                                                                                          RG7/TX2/CK2
                                                                                             RG6/RX2/DT2
                                                                                                 RA5/TX1/CK1
                                                                                                    RA4/RX1/DT1
                                                                                                        RJ0
                                                                                                           RJ1

80-Pin QFP                            RH1
                                         RH0
                                             RD2/AD10
                                                 RD3/AD11
                                                    RD4/AD12
                                                        RD5/AD13
                                                            RD6/AD14
                                                                RD7/AD15
                                                                    RC0/AD0
                                                                       VDD
                                                                           VSS
                                                                               RC1/AD1
                                                                                   RC2/AD2
                                                                                      RC3/AD3
                                                                                          RC4/AD4
                                                                                              RC5/AD5
                                                                                                  RC6/AD6
                                                                                                      RC7/AD7
                                                                                                         RJ7
                                                                                                             RJ6

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

                    RH2           1                                                                                60  RJ5
                    RH3                                                                                                RJ4
             RD1/AD9              2                                                                                59  RA0/INT
             RD0/AD8                                                                                                   RB0/CAP1
              RE0/ALE             3                                                                                58  RB1/CAP2
               RE1/OE                                                                                                  RB3/PWM2
              RE2/WR              4                                                                                57  RB4/TCLK12
            RE3/CAP4                                                                                                   RB5/TCLK3
            MCLR/VPP              5                                                                                56  RB2/PWM1
                  TEST                                                                                                 VSS
                     VSS          6                                                                                55  OSC2/CLKOUT
                     VDD                                                                                               OSC1/CLKIN
            RF7/AN11              7                                                                                54  VDD
            RF6/AN10                                                                                                   RB7/SDO
              RF5/AN9             8                                                                                53  RB6/SCK
              RF4/AN8                                                                                                  RA3/SDI/SDA
              RF3/AN7             9   PIC17C76X                                                                    52  RA2/SS/SCL
              RF2/AN6                                                                                                  RA1/T0CKI
            RH4/AN12              10                                                                               51  RJ3
            RH5/AN13                                                                                                   RJ2
                                  11                                                                               50

                                  12                                                                               49

                                  13                                                                               48

                                  14                                                                               47

                                  15                                                                               46

                                  16                                                                               45

                                  17                                                                               44

                                  18                                                                               43

                                  19                                                                               42

                                  20                                                                               41

                                      21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 3637 38 3940

                                      RH6/AN14
                                         RH7/AN15

                                             RF1/AN5
                                                 RF0/AN4

                                                     AVDD
                                                         AVSS
                                                            RG3/AN0/VREF+
                                                                RG2/AN1/VREF-
                                                                    RG1/AN2
                                                                        RG0/AN3

                                                                           VSS
                                                                               VDD
                                                                                   RG4/CAP3
                                                                                       RG5/PWM3
                                                                                          RG7/TX2/CK2
                                                                                              RG6/RX2/DT2
                                                                                                  RA5/TX1/CK1
                                                                                                      RA4/RX1/DT1
                                                                                                         RJ0
                                                                                                             RJ1

1998 Microchip Technology Inc.                                                                                                    DS30289A-page 3
PIC17C7XX

Table of Contents

1.0  Overview ...........................................................................................................................................................5

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

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

4.0  On-chip Oscillator Circuit ................................................................................................................................15

5.0  Reset............................................................................................................................................................... 21

6.0  Interrupts ......................................................................................................................................................... 31

7.0  Memory Organization......................................................................................................................................41

8.0  Table Reads and Table Writes .......................................................................................................................57

9.0  Hardware Multiplier .........................................................................................................................................65

10.0 I/O Ports..........................................................................................................................................................69

11.0 Overview of Timer Resources.........................................................................................................................93

12.0 Timer0.............................................................................................................................................................95

13.0 Timer1, Timer2, Timer3, PWMs and Captures ...............................................................................................99

14.0 Universal Synchronous Asynchronous Receiver Transmitter (USART) Modules.........................................115

15.0 Master Synchronous Serial Port (MSSP) Module.........................................................................................131

16.0 Analog-to-Digital Converter (A/D) Module ....................................................................................................177

17.0 Special Features of the CPU ........................................................................................................................189

18.0 Instruction Set Summary...............................................................................................................................195

19.0 Development Support ...................................................................................................................................231

20.0 PIC17C7XX Electrical Characteristics ..........................................................................................................235

21.0 PIC17C7XX DC and AC Characteristics.......................................................................................................265

22.0 Packaging Information ..................................................................................................................................277

Appendix A: Modifications..........................................................................................................................................283

Appendix B: Compatibility ..........................................................................................................................................283

Appendix C: What's New............................................................................................................................................284

Appendix D: What's Changed ....................................................................................................................................284
Appendix E: I2CTM Overview.......................................................................................................................................285

Appendix F: Status and Control Registers.................................................................................................................291

On-Line Support ..........................................................................................................................................................321

Reader Response .......................................................................................................................................................322

PIC17C7XX Product Identification System .................................................................................................................323

                                           To Our Valued Customers

Most Current Data Sheet

To obtain the most up-to-date version of this data sheet, please check our Worldwide Web site at:

      http://www.microchip.com

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

Errata

An errata sheet may exist for current devices, describing minor operational differences (from the data sheet) and recommended
workarounds. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revi-
sion of silicon and revision of document to which it applies.

To determine if an errata sheet exists for a particular device, please check with one of the following:

Microchip's Worldwide Web site; http://www.microchip.com
Your local Microchip sales office (see last page)
The Microchip Corporate Literature Center; U.S. FAX: (602) 786-7277
When contacting a sales office or the literature center, please specify which device, revision of silicon and data sheet (include lit-
erature number) you are using.

Corrections to this Data Sheet

We constantly strive to improve the quality of all our products and documentation. We have spent a great deal of time to ensure
that this document is 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:

Fill out and mail in the reader response form in the back of this data sheet.
E-mail us at webmaster@microchip.com.
We appreciate your assistance in making this a better document.

DS30289A-page 4    1998 Microchip Technology Inc.
1.0 OVERVIEW                                                             PIC17C7XX

This data sheet covers the PIC17C7XX group of the           A highly reliable Watchdog Timer with its own on-chip
PIC17CXXX family of microcontrollers. The following         RC oscillator provides protection against software mal-
devices are discussed in this data sheet:                   function.
                                                            There are four configuration options for the device
PIC17C752                                                 operational mode:
PIC17C756A                                                 Microprocessor
PIC17C762                                                 Microcontroller
PIC17C766                                                 Extended microcontroller
                                                             Protected microcontroller
The PIC17C7XX devices are 68/84-pin,                        The microprocessor and extended microcontroller
EPROM-based members of the versatile PIC17CXXX              modes allow up to 64K-words of external program
family of low-cost, high-performance, CMOS,                 memory.
fully-static, 8-bit microcontrollers.                       The device also has Brown-out Reset circuitry. This
                                                            allows a device reset to occur if the device VDD falls
All PICmicroTM microcontrollers employ an advanced          below the Brown-out voltage trip point (BVDD). The
RISC architecture. The PIC17CXXX has enhanced               chip will remain in Brown-out Reset until VDD rises
core features, 16-level deep stack, and multiple internal   above BVDD.
and external interrupt sources. The separate instruc-       A UV-erasable CERQUAD-packaged version (compat-
tion and data buses of the Harvard architecture allow a     ible with PLCC) is ideal for code development while the
16-bit wide instruction word with a separate 8-bit wide     cost-effective One-Time Programmable (OTP) version
data path. The two stage instruction pipeline allows all    is suitable for production in any volume.
instructions to execute in a single cycle, except for pro-  The PIC17C7XX fits perfectly in applications that
gram branches (which require two cycles). A total of 58     require extremely fast execution of complex software
instructions (reduced instruction set) are available.       programs. These include applications ranging from
Additionally, a large register set gives some of the        precise motor control and industrial process control to
architectural innovations used to achieve a very high       automotive, instrumentation, and telecom applications.
performance. For mathematical intensive applications        The EPROM technology makes customization of appli-
all devices have a single cycle 8 x 8 Hardware Multi-       cation programs (with unique security codes, combina-
plier.                                                      tions, model numbers, parameter storage, etc.) fast and
                                                            convenient. Small footprint package options (including
PIC17CXXX microcontrollers typically achieve a 2:1          die sales) make the PIC17C7XX ideal for applications
code compression and a 4:1 speed improvement over           with space limitations that require high performance.
other 8-bit microcontrollers in their class.                High speed execution, powerful peripheral features,
                                                            flexible I/O, and low power consumption all at low cost
PIC17C7XX devices have up to 902 bytes of RAM and           make the PIC17C7XX ideal for a wide range of embed-
66 I/O pins. In addition, the PIC17C7XX adds several        ded control applications.
peripheral features useful in many high performance
applications including:                                     1.1 Family and Upward Compatibility

Four timer/counters                                       The PIC17CXXX family of microcontrollers have archi-
Four capture inputs                                       tectural enhancements over the PIC16C5X and
Three PWM outputs                                         PIC16CXX families. These enhancements allow the
Two independent Universal Synchronous Asyn-               device to be more efficient in software and hardware
                                                            requirements. Refer to Appendix A for a detailed list of
   chronous Receiver Transmitters (USARTs)                  enhancements and modifications. Code written for
An A/D converter (multi-channel, 10-bit resolu-           PIC16C5X or PIC16CXX can be easily ported to
                                                            PIC17CXXX devices (Appendix B).
   tion)
A Synchronous Serial Port                                 1.2 Development Support

   (SPI and I2C w/ Master mode)                             The PIC17CXXX family is supported by a full-featured
                                                            macro assembler, a software simulator, an in-circuit
These special features reduce external components,          emulator, a universal programmer, a "C" compiler, and
thus reducing cost, enhancing system reliability and        fuzzy logic support tools. For additional information
reducing power consumption.                                 see Section 19.0.

There are four oscillator options, of which the single pin                                                          DS30289A-page 5
RC oscillator provides a low-cost solution, the LF oscil-
lator is for low frequency crystals and minimizes power
consumption, XT is a standard crystal, and the EC is for
external clock input.

The SLEEP (power-down) mode offers additional
power saving. Wake-up from SLEEP can occur
through several external and internal interrupts and
device resets.

1998 Microchip Technology Inc.
PIC17C7XX

TABLE 1-1: PIC17CXXX FAMILY OF DEVICES

          Features           PIC17C42A PIC17C43 PIC17C44 PIC17C752 PIC17C756A PIC17C762 PIC17C766

Maximum Frequency            33 MHz       33 MHz       33 MHz    33 MHz           33 MHz       33 MHz       33 MHz
of Operation
                                                                                 3.0 - 5.5V   3.0 - 5.5V   3.0 - 5.5V
Operating Voltage Range      2.5 - 6.0V 2.5 - 6.0V 2.5 - 6.0V 3.0 - 5.5V            16K           8K           16K
                                                                                      --           --           --
Program            (EPROM)   2K           4K           8K        8K                  902          678          902
                                                                                     Yes          Yes          Yes
Memory ( x16) (ROM)          --           --           --        --                  Yes          Yes          Yes

Data Memory (bytes)          232          454          454       678                 Yes          Yes          Yes
                                                                                     Yes          Yes          Yes
Hardware Multiplier (8 x 8)  Yes          Yes          Yes       Yes                 Yes          Yes          Yes

Timer0                       Yes          Yes          Yes       Yes                  4            4            4
                                                                                      3            3            3
(16-bit + 8-bit postscaler)                                                           2            2            2
                                                                                     12            16           16
Timer1 (8-bit)               Yes          Yes          Yes       Yes                 Yes          Yes          Yes

Timer2 (8-bit)               Yes          Yes          Yes       Yes                 Yes          Yes          Yes
                                                                                     Yes          Yes          Yes
Timer3 (16-bit)              Yes          Yes          Yes       Yes                 Yes          Yes          Yes
                                                                                     18            18           18
Capture inputs (16-bit)      2            2            2         4                   Yes          Yes          Yes
                                                                                     Yes          Yes          Yes
PWM outputs (up to 10-bit)   2            2            2         3                   Yes          Yes          Yes

USART/SCI                    1            1            1         2                   50            66           66
                                                                                   25 mA        25 mA        25 mA
A/D channels (10-bit)        --           --           --        12              25 mA(1)     25 mA(1)     25 mA(1)
                                                                                64-pin DIP   80-pin QFP   80-pin QFP
SSP (SPI/I2C w/Master        --           --           --        Yes           68-pin LCC       84-pin       84-pin
                                                                               68-pin TQFP      PLCC         PLCC
mode)

Power-on Reset               Yes          Yes          Yes       Yes

Watchdog Timer               Yes          Yes          Yes       Yes

External Interrupts          Yes          Yes          Yes       Yes

Interrupt Sources            11           11           11        18

Code Protect                 Yes          Yes          Yes       Yes

Brown-out Reset              --           --           --        Yes

In-circuit Serial Program-   --           --           --        Yes

ming

I/O Pins                     33           33           33        50

I/O High Cur- Source          25 mA        25 mA        25 mA     25 mA
rent Capability Sink         25 mA(1)     25 mA(1)     25 mA(1)  25 mA(1)

Package Types                 40-pin DIP   40-pin DIP   40-pin DIP 64-pin DIP
                             44-pin PLCC  44-pin PLCC  44-pin PLCC 68-pin LCC

                                 44-pin       44-pin       44-pin 68-pin TQFP
                                 MQFP         MQFP         MQFP
                             44-pin TQFP  44-pin TQFP  44-pin TQFP

Note 1: Pins RA2 and RA3 can sink up to 60 mA.

DS30289A-page 6                                                                1998 Microchip Technology Inc.
2.0 DEVICE VARIETIES                                                 PIC17C7XX

Each device has a variety of frequency ranges and       2.1 UV Erasable Devices
packaging options. Depending on application and pro-
duction requirements, the proper device option can be   The UV erasable version, offered in CERQUAD pack-
selected using the information in the PIC17C7XX Prod-   age, is optimal for prototype development and pilot pro-
uct Selection System section at the end of this data    grams.
sheet. When placing orders, please use the
"PIC17C7XX Product Identification System" at the back   The UV erasable version can be erased and repro-
of this data sheet to specify the correct part number.  grammed to any of the configuration modes. Third
When discussing the functionality of the device, mem-   party programmers also are available; refer to the Third
ory technology and voltage range does not matter.       Party Guide for a list of sources.

There are three memory type options. These are spec-    2.2 One-Time-Programmable (OTP)
ified in the middle characters of the part number.                Devices

1. C, as in PIC17C756A. These devices have              The availability of OTP devices is especially useful for
      EPROM type memory.                                customers expecting frequent code changes and
                                                        updates.
2. CR, as in PIC17CR756A. These devices have
      ROM type memory.                                  The OTP devices, packaged in plastic packages, per-
                                                        mit the user to program them once. In addition to the
3. F, as in PIC17F756A. These devices have Flash        program memory, the configuration bits must be pro-
      type memory.                                      grammed.

All these devices operate over the standard voltage     2.3 Quick-Turnaround-Production (QTP)
range. Devices are also offered which operate over an             Devices
extended voltage range (and reduced frequency
range). Table 2-1 shows all possible memory types       Microchip offers a QTP Programming Service for fac-
and voltage range designators for a particular device.  tory production orders. This service is made available
These designators are in bold typeface.                 for users who choose not to program a medium to high
                                                        quantity of units and whose code patterns have stabi-
TABLE 2-1: DEVICE MEMORY                                lized. The devices are identical to the OTP devices but
                     VARIETIES                          with all EPROM locations and configuration options
                                                        already programmed by the factory. Certain code and
                       Voltage Range                    prototype verification procedures apply before produc-
                                                        tion shipments are available. Please contact your local
Memory Type  Standard             Extended              Microchip Technology sales office for more details.

EPROM        PIC17CXXX PIC17LCXXX                       2.4 Serialized Quick-Turnaround
                                                                  Production (SQTPSM) Devices
ROM          PIC17CRXXX PIC17LCRXXX
                                                        Microchip offers a unique programming service where
Flash        PIC17FXXX            PIC17LFXXX            a few user-defined locations in each device are pro-
                                                        grammed with different serial numbers. The serial
Note: Not all memory technologies are available         numbers may be random, pseudo-random or sequen-
                                                        tial.
       for a particular device.
                                                        Serial programming allows each device to have a
                                                        unique number which can serve as an entry-code,
                                                        password or ID number.

1998 Microchip Technology Inc.                        DS30289A-page 7
PIC17C7XX

2.5 Read Only Memory (ROM) Devices

Microchip offers masked ROM versions of several of
the highest volume parts, thus giving customers a low
cost option for high volume, mature products.
ROM devices do not allow serialization information in
the program memory space.
For information on submitting ROM code, please con-
tact your regional sales office.

   Note: Presently, NO ROM versions of the
               PIC17C7XX devices are available.

2.6 Flash Memory Devices

These devices are electrically erasable and, therefore,
can be offered in the low cost plastic package. Being
electrically erasable, these devices can be erased and
reprogrammed in-circuit. These devices are the same
for prototype development, pilot programs, as well as
production.

   Note: Presently, NO Flash versions of the
               PIC17C7XX devices are available.

DS30289A-page 8                                           1998 Microchip Technology Inc.
                                                                       PIC17C7XX

3.0 ARCHITECTURAL OVERVIEW                                 The WREG register is an 8-bit working register used for
                                                           ALU operations.
The high performance of the PIC17CXXX can be attrib-
uted to a number of architectural features commonly        All PIC17CXXX devices have an 8 x 8 hardware multi-
found in RISC microprocessors. To begin with, the          plier. This multiplier generates a 16-bit result in a single
PIC17CXXX uses a modified Harvard architecture.            cycle.
This architecture has the program and data accessed
from separate memories. So, the device has a program       The ALU is 8-bits wide and capable of addition, sub-
memory bus and a data memory bus. This improves            traction, shift, and logical operations. Unless otherwise
bandwidth over traditional von Neumann architecture,       mentioned, arithmetic operations are two's comple-
where program and data are fetched from the same           ment in nature.
memory (accesses over the same bus). Separating
program and data memory further allows instructions        Depending on the instruction executed, the ALU may
to be sized differently than the 8-bit wide data word.     affect the values of the Carry (C), Digit Carry (DC),
PIC17CXXX opcodes are 16-bits wide, enabling single        Zero (Z) and overflow (OV) bits in the ALUSTA register.
word instructions. The full 16-bit wide program mem-       The C and DC bits operate as a borrow and digit borrow
ory bus fetches a 16-bit instruction in a single cycle. A  out bit, respectively, in subtraction. See the SUBLW and
two-stage pipeline overlaps fetch and execution of         SUBWF instructions for examples.
instructions. Consequently, all instructions execute in a
single cycle (121 ns @ 33 MHz), except for program         Signed arithmetic is comprised of a magnitude and a
branches and two special instructions that transfer data   sign bit. The overflow bit indicates if the magnitude
between program and data memory.                           overflows and causes the sign bit to change state. That
                                                           is if the result of 8-bit signed operations is greater than
The PIC17CXXX can address up to 64K x 16 of pro-           127 (7Fh) or less than -128 (80h).
gram memory space.
                                                           Signed math can have greater than 7-bit values (mag-
The PIC17C752 and PIC17C762 integrate 8K x 16 of           nitude), if more than one byte is used. The overflow bit
EPROM program memory on-chip.                              only operates on bit6 (MSb of magnitude) and bit7 (sign
                                                           bit) of each byte value in the ALU. That is, the overflow
The PIC17C756A and PIC17C766 integrate 16K x 16            bit is not useful if trying to implement signed math
EPROM program memory on-chip.                              where the magnitude, for example, is 11-bits.

A simplified block diagram is shown in Figure 3-1. The     If the signed math values are greater than 7-bits (such
descriptions of the device pins are listed in Table 3-1.   as 15-, 24- or 31-bit), the algorithm must ensure that
                                                           the low order bytes of the signed value ignore the over-
Program execution can be internal only (microcontrol-      flow status bit.
ler or protected microcontroller mode), external only
(microprocessor mode) or both (extended microcon-          Example 3-1 shows an two cases of doing signed arith-
troller mode). Extended microcontroller mode does not      metic. The Carry (C) bit and the Overflow (OV) bit are
allow code protection.                                     the most important status bits for signed math opera-
                                                           tions.
The PIC17CXXX can directly or indirectly address its
register files or data memory. All special function reg-   EXAMPLE 3-1: 8-BIT MATH ADDITION
isters, including the Program Counter (PC) and Work-
ing Register (WREG), are mapped in data memory.            Hex Value   Signed Values  Unsigned Values
The PIC17CXXX has an orthogonal (symmetrical)
instruction set that makes it possible to carry out any           FFh         -1         255
operation on any register using any addressing mode.       + 01h       +1             +1
This symmetrical nature and lack of `special optimal sit-  = 00h       = 0 (FEh)      = 256  00h
uations' make programming with the PIC17CXXX sim-
ple yet efficient. In addition, the learning curve is      C bit = 1   C bit = 1      C bit = 1
reduced significantly.                                     OV bit = 0  OV bit = 0     OV bit = 0

One of the PIC17CXXX family architectural enhance-         DC bit = 1  DC bit = 1     DC bit = 1
ments from the PIC16CXX family allows two file regis-      Z bit = 1   Z bit = 1      Z bit = 1
ters to be used in some two operand instructions. This
allows data to be moved directly between two registers     Hex Value   Signed Values  Unsigned Values
without going through the WREG register. Thus                     7Fh
increasing performance and decreasing program                               127          127
memory usage.                                              + 01h       +1             +1
                                                           = 80h       = 128  00h     = 128
The PIC17CXXX devices contain an 8-bit ALU and
working register. The ALU is a general purpose arith-      C bit = 0   C bit = 0      C bit = 0
metic unit. It performs arithmetic and Boolean func-       OV bit = 1  OV bit = 1     OV bit = 1
tions between data in the working register and any
register file.                                             DC bit = 1  DC bit = 1     DC bit = 1
                                                           Z bit = 0   Z bit = 0      Z bit = 0
1998 Microchip Technology Inc.
                                                                                      DS30289A-page 9
PIC17C7XX

FIGURE 3-1: PIC17C752/756A BLOCK DIAGRAM

       RA0/INT    PORTA                                                   IR<16>         Q1, Q2,         Clock                                 OSC1,
   RA1/T0CKI      PORTB                  WREG<8> BITOP                                   Q3, Q4       Generator                                OSC2
RA2/SS/SCL       PORTC
RA3/SDI/SDA       PORTD                                                                 Chip_reset    Power-on
RA4/RX1/DT1       PORTE                                                                      & Other    Reset
RA5/TX1/CK1                                                                                  Control
                                                                                             Signals  Brown-out                        VDD, VSS
    RB0/CAP1                                                                                            Reset
    RB1/CAP2                                                                      IR Latch <16>
   RB2/PWM1                                                                                           Watchdog
   RB3/PWM2                                                                                             Timer MCLR, VPP
RB4/TCLK12
  RB5/TCLK3                   8 x 8 mult          ALU

      RB6/SCK                                                                                         Test Mode
     RB7/SDO
                                                                                                        Select                                 Test
     RC0/AD0
     RC1/AD1                  PRODH PRODL         Shifter
     RC2/AD2
     RC3/AD3                                                                      8  8
     RC4/AD4
     RC5/AD5             8
     RC6/AD6
     RC7/AD7                  BSR <7:4>           16                                                  F1

     RD0/AD8                  IR <7:0>                                                                F9                               Decode
     RD1/AD9
    RD2/AD10                         12           Instruction  Read/write                                                              AD<15:0>
    RD3/AD11                                       Decode        Decode                                                                 PORTC,
    RD4/AD12                    RAM                                 for                                                                 PORTD
    RD5/AD13                  Address                          Registers          ROM Latch <16>          8
    RD6/AD14                                                    Mapped                                                                  ALE,
    RD7/AD15                                                                                                                            WR,
                                Buffer                         in Data                                                                  OE,
      RE0/ALE                 Data RAM Control Outputs         Space                                                                    PORTE
       RE1/OE
       RE2/WR                 17C756A
    RE3/CAP4                   902 x 8

                              17C752
                              678 x 8

                              Data Latch

                         BSR             Literal     Table                           Data Latch
                                                  Latch <16>
                                                                                      Program                    System Bus Interface
                                                                                      Memory
                                 PCLATH<8>                     Table Pointer<16>     (EPROM)
                                                                                     17C756A
                                                                                      16K x 16
                                                                                       17C752
                                                                                       8K x 16

                                                                                      Address
                                                                                        Latch

                                                                                                    16
                                                                                     16

                  PORTF                  PCH      PCL                  Stack
                                                               16 16 x 16
RF0/AN4
RF1/AN5                                          16
RF2/AN6                                                 Data Bus<8>
RF3/AN7
RF4/AN8                 Timer0        Timer2 USART1 PWM1                         PWM3 Capture2       10-bit    SSP
RF5/AN9                                                                                               A/D
RF6/AN10
RF7/AN11

                  PORTG

         RG0/AN3         Timer1        Timer3     USART2       PWM2                                                                 Interrupt
         RG1/AN2                                                                  Capture1 Capture3 Capture4 Module
RG2/AN1/VREF-
RG3/AN0/VREF+
       RG4/CAP3
      RG5/PWM3
  RG6/RX2/DT2
   RG7/TX2/CK2

DS30289A-page 10                                                                      1998 Microchip Technology Inc.
                                                                                                                     PIC17C7XX

FIGURE 3-2:           PIC17C762/766 BLOCK DIAGRAM                                                                           Q1, Q2,     Clock                         OSC1,
                                                                                                                            Q3, Q4   Generator                        OSC2
            RA0/INT       PORTA
         RA1/T0CKI                                                                                                     Chip_reset    Power-on
      RA2/SS/SCL                                                                                          IR<16>            & Other    Reset
     RA3/SDI/SDA                                                         WREG<8> BITOP                                      Control
     RA4/RX1/DT1                                                                                                            Signals
     RA5/TX1/CK1                                                                                                                     Watchdog VDD, VSS
                                                                                                                  IR Latch <16>        Timer
         RB0/CAP1
         RB1/CAP2     PORTB                                                                                                          Test Mode MCLR, VPP
        RB2/PWM1                                                                                                                       Select
        RB3/PWM2
      RB4/TCLK12                       8 x 8 mult         ALU                                                                        Brown-out                        Test
        RB5/TCLK3                                                                                                                      Reset

           RB6/SCK                                                                                                                                                    AVDD, AVSS
          RB7/SDO
                                       PRODH PRODL        Shifter
           RC0/AD0
           RC1/AD1    PORTC                                                                                       8  8
           RC2/AD2
           RC3/AD3                8    BSR <7:4>
           RC4/AD4                        IR <7:0>
           RC5/AD5                                        16                                                                         FSR0
           RC6/AD6                                                                                                                   FSR1                             Decode
           RC7/AD7                           12
                                                                                                                                          8                           AD<15:0>
           RD0/AD8    PORTD               RAM           Instruction   Read/write                                  ROM Latch <16>                                      PORTC,
           RD1/AD9    PORTE             Address           Decode        Decode                                                                                        PORTD
         RD2/AD10     PORTF                                                for
         RD3/AD11     PORTG               Buffer    Control Outputs   Registers                                                                                       ALE,
         RD4/AD12     PORTH                                            Mapped                                                                                         WR,
         RD5/AD13                      Data RAM                                                                                                                       OE,
         RD6/AD14                        17C766                         in Data                                                                                       PORTE
         RD7/AD15                        902 x 8                        Space
                                           and                                                                                                                        RJ0
           RE0/ALE                       17C762                                                                                                                       RJ1
            RE1/OE                       678 x 8                                                                                                                      RJ2
            RE2/WR                                                                                                                                                    RJ3
         RE3/CAP4                      Data Latch                                                                                                                     RJ4
                                                                                                                                                                      RJ5
           RF0/AN4                BSR            Literal     Table                                                        Data Latch                                  RJ6
           RF1/AN5                                        Latch <16>                                                                                                  RJ7
           RF2/AN6                                                                                                          Program             System Bus Interface
           RF3/AN7                                                                                                          Memory
           RF4/AN8                           PCLATH<8>               Table Pointer<16>                                     (EPROM)
           RF5/AN9                                                                                                          17C766
         RF6/AN10                                PCH      PCL                 Stack                                        16K x 16,
         RF7/AN11                                                     16 16 x 16
                                                                                                                               and
           RG0/AN3                                        16                                                                17C762
           RG1/AN2                                               Data Bus<8>                                                 8K x 16
  RG2/AN1/VREF-
RG3/AN0/VREF+                                                                                                              Address
        RG4/CAP3                                                                                                              Latch
       RG5/PWM3
    RG6/RX2/DT2                                                                                                                     16
    RG7/TX2/CK2                                                                                                      16

                 RH0                                                                                                                PORTJ
                 RH1
                 RH2              Timer0 Timer2 USART1 PWM1 PWM3
                 RH3
         RH4/AN12                 Timer1 Timer3 USART2 PWM2 Capture1
         RH5/AN13
         RH6/AN14
         RH7/AN15

                                  Interrupt      SSP      10-bit      Capture2 Capture3 Capture4
                                  Module                   A/D

1998 Microchip Technology Inc.                                                                                                     DS30289A-page 11
PIC17C7XX

TABLE 3-1: PINOUT DESCRIPTIONS

                      PIC17C75X           PIC17C76X

Name              DIP PLCC TQFP PLCC QFP I/O/P Buffer
                  No. No. No. No. No. Type Type
                                                                                Description

OSC1/CLKIN        47  50         39       62  49     I             ST Oscillator input in crystal/resonator or RC oscillator

                                                                       mode. External clock input in external clock mode.

OSC2/CLKOUT 48        51         40       63  50     O             -- Oscillator output. Connects to crystal or resonator in

                                                                       crystal oscillator mode. In RC oscillator or external

                                                                       clock modes OSC2 pin outputs CLKOUT which has

                                                                       one fourth the frequency (FOSC/4) of OSC1 and

                                                                       denotes the instruction cycle rate.

MCLR/VPP          15  16         7        20  9      I/P ST Master clear (reset) input or Programming Voltage

                                                                       (VPP) input. This is the active low reset input to the

                                                                       device.

                                                                       PORTA pins have individual differentiations that are
                                                                       listed in the following descriptions:

RA0/INT           56  60         48       72  58     I             ST  RA0 can also be selected as an external inter-
                                                                       rupt input. Interrupt can be configured to be on
                                                                       positive or negative edge. Input only pin.

RA1/T0CKI         41  44         33       56  43     I             ST  RA1 can also be selected as an external inter-
                                                                       rupt input, and the interrupt can be configured
                                                                       to be on positive or negative edge. RA1 can
                                                                       also be selected to be the clock input to the
                                                                       Timer0 timer/counter. Input only pin.

RA2/SS/SCL        42  45         34       57  44 I/O (2) ST            RA2 can also be used as the slave select input
                                                                       for the SPI or the clock input for the I2C bus.

                                                                       High voltage, high current, open drain port pin.

RA3/SDI/SDA       43  46         35       58  45 I/O (2) ST            RA3 can also be used as the data input for the
                                                                       SPI or the data for the I2C bus.

                                                                       High voltage, high current, open drain port pin.

RA4/RX1/DT1       40  43         32       51  38 I/O (1) ST            RA4 can also be selected as the USART1 (SCI)
                                                                       Asynchronous Receive or USART1 (SCI)
                                                                       Synchronous Data.
                                                                       Output available from USART only.

RA5/TX1/CK1       39  42         31       50  37 I/O (1) ST            RA5 can also be selected as the USART1 (SCI)
                                                                       Asynchronous Transmit or USART1 (SCI)
                                                                       Synchronous Clock.
                                                                       Output available from USART only.

                                                                       PORTB is a bi-directional I/O Port with software
                                                                       configurable weak pull-ups.

RB0/CAP1          55  59         47       71  57 I/O ST                RB0 can also be the Capture1 input pin.
RB1/CAP2                                                               RB1 can also be the Capture2 input pin.
                  54  58         46       70  56 I/O ST

RB2/PWM1          50  54         42       66  52 I/O ST                RB2 can also be the PWM1 output pin.
RB3/PWM2                                                               RB3 can also be the PWM2 output pin.
RB4/TCLK12        53  57         45       69  55 I/O ST                RB4 can also be the external clock input to
                                                                       Timer1 and Timer2.
RB5/TCLK3         52  56         44       68  54 I/O ST                RB5 can also be the external clock input to
                                                                       Timer3.
                  51  55         43       67  53 I/O ST

RB6/SCK           44  47         36       59  46 I/O ST                RB6 can also be used as the master/slave clock
                                                                       for the SPI.

RB7/SDO           45  48         37       60  47 I/O ST                RB7 can also be used as the data output for the
                                                                       SPI.

Legend: I = Input only; O = Output only;      I/O = Input/Output;

         P = Power;   -- = Not Used;          TTL = TTL input; ST = Schmitt Trigger input.

Note 1: The output is only available by the peripheral operation.

2: Open Drain input/output pin. Pin forced to input upon any device reset.

DS30289A-page 12                                                                1998 Microchip Technology Inc.
                                                                            PIC17C7XX

TABLE 3-1: PINOUT DESCRIPTIONS

                     PIC17C75X            PIC17C76X

Name      DIP PLCC TQFP PLCC QFP I/O/P Buffer
          No. No. No. No. No. Type Type
                                                                            Description

                                                                   PORTC is a bi-directional I/O Port.

RC0/AD0   2          3            58      3   72 I/O TTL           This is also the least significant byte (LSB) of
RC1/AD1                                                            the 16-bit wide system bus in microprocessor
RC2/AD2   63         67           55      83  69 I/O TTL           mode or extended microcontroller mode. In
RC3/AD3                                                            multiplexed system bus configuration, these
RC4/AD4   62         66           54      82  68 I/O TTL           pins are address output as well as data input or
RC5/AD5                                                            output.
          61         65           53      81  67 I/O TTL

          60         64           52      80  66 I/O TTL

          58         63           51      79  65 I/O TTL

RC6/AD6   58         62           50      78  64 I/O TTL

RC7/AD7   57         61           49      77  63 I/O TTL

                                                                   PORTD is a bi-directional I/O Port.

RD0/AD8   10         11           2       15  4      I/O TTL       This is also the most significant byte (MSB) of
RD1/AD9                                                            the 16-bit system bus in microprocessor mode
RD2/AD10  9          10           1       14  3      I/O TTL       or extended microcontroller mode. In multi-
RD3/AD11                                                           plexed system bus configuration these pins are
RD4/AD12  8          9            64      9   78 I/O TTL           address output as well as data input or output.

          7          8            63      8   77 I/O TTL

          6          7            62      7   76 I/O TTL

RD5/AD13  5          6            61      6   75 I/O TTL

RD6/AD14  4          5            60      5   74 I/O TTL

RD7/AD15  3          4            59      4   73 I/O TTL

                                                                   PORTE is a bi-directional I/O Port.

RE0/ALE   11         12           3       16  5      I/O TTL       In microprocessor mode or extended microcon-
                                                                   troller mode, RE0 is the Address Latch Enable
                                                                   (ALE) output. Address should be latched on the
                                                                   falling edge of ALE output.

RE1/OE    12         13           4       17  6      I/O TTL       In microprocessor or extended microcontroller
                                                                   mode, RE1 is the Output Enable (OE) control
                                                                   output (active low).

RE2/WR    13         14           5       18  7      I/O TTL       In microprocessor or extended microcontroller
                                                                   mode, RE2 is the Write Enable (WR) control
                                                                   output (active low).

RE3/CAP4  14         15           6       19  8      I/O ST        RE3 can also be the Capture4 input pin.

                                                                   PORTF is a bi-directional I/O Port.

RF0/AN4   26         28           18      36  24 I/O ST            RF0 can also be analog input 4.

RF1/AN5   25         27           17      35  23 I/O ST            RF1 can also be analog input 5.

RF2/AN6   24         26           16      30  18 I/O ST            RF2 can also be analog input 6.

RF3/AN7   23         25           15      29  17 I/O ST            RF3 can also be analog input 7.

RF4/AN8   22         24           14      28  16 I/O ST            RF4 can also be analog input 8.

RF5/AN9   21         23           13      27  15 I/O ST            RF5 can also be analog input 9.

RF6/AN10  20         22           12      26  14 I/O ST            RF6 can also be analog input 10.

RF7/AN11  19         21           11      25  13 I/O ST            RF7 can also be analog input 11.

Legend: I = Input only; O = Output only;      I/O = Input/Output;

         P = Power;  -- = Not Used;           TTL = TTL input; ST = Schmitt Trigger input.

Note 1: The output is only available by the peripheral operation.

2: Open Drain input/output pin. Pin forced to input upon any device reset.

1998 Microchip Technology Inc.                                                            DS30289A-page 13
PIC17C7XX

TABLE 3-1: PINOUT DESCRIPTIONS

                      PIC17C75X           PIC17C76X

     Name         DIP PLCC TQFP PLCC QFP I/O/P Buffer
                  No. No. No. No. No. Type Type
                                                                                  Description

                                                                   PORTG is a bi-directional I/O Port.

RG0/AN3           32  34         24       42  30 I/O ST            RG0 can also be analog input 3.

RG1/AN2           31  33         23       41  29 I/O ST            RG1 can also be analog input 2.

RG2/AN1/VREF- 30      32         22       40  28 I/O ST            RG2 can also be analog input 1, or
                                                                   the ground reference voltage

RG3/AN0/VREF+ 29      31         21       39  27 I/O ST            RG3 can also be analog input 0, or
                                                                   the positive reference voltage

RG4/CAP3          35  38         27       46  33 I/O ST            RG4 can also be the Capture3 input pin.

RG5/PWM3          36  39         28       47  34 I/O ST            RG5 can also be the PWM3 output pin.

RG6/RX2/DT2       38  41         30       49  36 I/O ST            RG6 can also be selected as the USART2 (SCI)
                                                                   Asynchronous Receive or USART2 (SCI)
                                                                   Synchronous Data.

RG7/TX2/CK2       37  40         29       48  35 I/O ST            RG7 can also be selected as the USART2 (SCI)
                                                                   Asynchronous Transmit or USART2 (SCI)
                                                                   Synchronous Clock.

                                                                   PORTH is a bi-directional I/O Port. PORTH is only

RH0               --  --         --       10  79 I/O ST available on the PIC17C76X devices

RH1               --  --         --       11  80 I/O ST

RH2               --  --         --       12  1      I/O ST

RH3               --  --         --       13  2      I/O ST

RH4/AN12          --  --         --       31  19 I/O ST            RH4 can also be analog input 12.

RH5/AN13          --  --         --       32  20 I/O ST            RH5 can also be analog input 13.

RH6/AN14          --  --         --       33  21 I/O ST            RH6 can also be analog input 14.

RH7/AN15          --  --         --       34  22 I/O ST            RH7 can also be analog input 15.

                                                                   PORTJ is a bi-directional I/O Port. PORTJ is only
                                                                   available on the PIC17C76X devices.

RJ0               --  --         --       52  39 I/O ST

RJ1               --  --         --       53  40 I/O ST

RJ2               --  --         --       54  41 I/O ST

RJ3               --  --         --       55  42 I/O ST

RJ4               --  --         --       73  59 I/O ST

RJ5               --  --         --       74  60 I/O ST

RJ6               --  --         --       75  61 I/O ST

RJ7               --  --         --       76  62 I/O ST

TEST              16  17         8        21  10     I             ST Test mode selection control input. Always tie to VSS

                                                                   for normal operation.

VSS          17, 33, 19, 36, 9, 25, 23, 44, 11, 31, P              Ground reference for logic and I/O pins.

             49, 64 53, 68 41, 56 65, 84 51, 70

VDD          1, 18, 2, 20, 10, 26, 24, 45, 12, 32, P               Positive supply for logic and I/O pins.

             34, 46 37, 49, 38, 57 61, 2 48, 71

AVSS              28  30         20       38  26     P             Ground reference for A/D converter.
                                                                   This pin MUST be at the same potential as VSS.

AVDD              27  29         19       37  25     P             Positive supply for A/D converter.
                                                                   This pin MUST be at the same potential as VDD.

NC                -- 1, 18, -- 1, 22, --                           No Connect. Leave these pins unconnected.

                      35, 52          43, 64

Legend: I = Input only; O = Output only;      I/O = Input/Output;

         P = Power;   -- = Not Used;          TTL = TTL input; ST = Schmitt Trigger input.

Note 1: The output is only available by the peripheral operation.

      2: Open Drain input/output pin. Pin forced to input upon any device reset.

DS30289A-page 14                                                                   1998 Microchip Technology Inc.
                                                                          PIC17C7XX

4.0 ON-CHIP OSCILLATOR                                       4.1.2 CRYSTAL OSCILLATOR / CERAMIC
         CIRCUIT                                                         RESONATORS

The internal oscillator circuit is used to generate the      In XT or LF modes, a crystal or ceramic resonator is
device clock. Four device clock periods generate an          connected to the OSC1/CLKIN and OSC2/CLKOUT
internal instruction clock (TCY).                            pins to establish oscillation (Figure 4-2). The
                                                             PIC17CXXX oscillator design requires the use of a par-
There are four modes that the oscillator can operate in.     allel cut crystal. Use of a series cut crystal may give a
They are selected by the device configuration bits dur-      frequency out of the crystal manufacturers specifica-
ing device programming. These modes are:                     tions.

LF  Low Frequency (FOSC <= 2 MHz)                          For frequencies above 20 MHz, it is common for the
XT                                                         crystal to be an overtone mode crystal. Use of over-
      Standard Crystal/Resonator Frequency                   tone mode crystals require a tank circuit to attenuate
EC  (2 MHz <= FOSC <= 33 MHz)                              the gain at the fundamental frequency. Figure 4-3
                                                             shows an example circuit.
RC  External Clock Input
      (Default oscillator configuration)                     4.1.2.1 OSCILLATOR / RESONATOR START-UP

      External Resistor/Capacitor
      (FOSC <= 4 MHz)

There are two timers that offer necessary delays on          As the device voltage increases from Vss, the oscillator
power-up. One is the Oscillator Start-up Timer (OST),        will start its oscillations. The time required for the oscil-
intended to keep the chip in RESET until the crystal         lator to start oscillating depends on many factors.
oscillator is stable. The other is the Power-up Timer        These include:
(PWRT), which provides a fixed delay of 96 ms (nomi-
nal) on POR and BOR. The PWRT is designed to keep             Crystal / resonator frequency
the part in RESET while the power supply stabilizes.          Capacitor values used (C1 and C2)
With these two timers on-chip, most applications need         Device VDD rise time.
no external reset circuitry.                                  System temperature
                                                             Series resistor value (and type) if used
SLEEP mode is designed to offer a very low current            Oscillator mode selection of device (which selects
power-down mode. The user can wake from SLEEP
through external reset, Watchdog Timer Reset or                 the gain of the internal oscillator inverter)
through an interrupt.
                                                             Figure 4-1 shows an example of a typical oscillator/
Several oscillator options are made available to allow       resonator start-up. The peak-to-peak voltage of the
the part to better fit the application. The RC oscillator    oscillator waveform can be quite low (less than 50% of
option saves system cost while the LF crystal option         device VDD) when the waveform is centered at VDD/2
saves power. Configuration bits are used to select var-      (refer to parameter #D033 and parameter #D043 in the
ious options.                                                electrical specification section).

4.1 Oscillator Configurations                                FIGURE 4-1:  OSCILLATOR / RESONATOR
                                                                          START-UP
4.1.1 OSCILLATOR TYPES                                                    CHARACTERISTICS

The PIC17CXXX can be operated in four different oscil-
lator modes. The user can program two configuration
bits (FOSC1:FOSC0) to select one of these four
modes:

LF  Low Power Crystal                                      VDD
XT  Crystal/Resonator
EC  External Clock Input
RC  Resistor/Capacitor

The main difference between the LF and XT modes is
the gain of the internal inverter of the oscillator circuit
which allows the different frequency ranges.

For more details on the device configuration bits, see            Crystal Start-up Time
Section 17.0.
                                                                                     Time

1998 Microchip Technology Inc.                                                           DS30289A-page 15
PIC17C7XX

FIGURE 4-2:       CRYSTAL OR CERAMIC                          FIGURE 4-3:     CRYSTAL OPERATION,
                  RESONATOR OPERATION (XT                                     OVERTONE CRYSTALS (XT
                  OR LF OSC CONFIGURATION)                                    OSC CONFIGURATION)

                                                              C1              OSC1

                  OSC1

    C1                                                                                              SLEEP

             XTAL                       SLEEP                 C2
                                    RF                                             OSC2

                   OSC2

               Note1                                          C3
    C2
                                        To internal           0.1 F                     PIC17CXXX
                                        logic

                            PIC17CXXX                         To filter the fundamental frequency

See Table 4-1 and Table 4-2 for recommended values of                 1   =  (2f)2
C1 and C2.                                                          L*C2

Note 1: A series resistor (Rs) may be required for                Where f = tank circuit resonant frequency. This should be
            AT strip cut crystals.                                midway between the fundamental and the 3rd overtone
                                                                  frequencies of the crystal.

                                                                  C3 handles current during charging of tank circuit.

TABLE 4-1:        CAPACITOR SELECTION                         TABLE 4-2: CAPACITOR SELECTION FOR
                  FOR CERAMIC                                                      CRYSTAL OSCILLATOR
                  RESONATORS

Oscillator   Resonator                  Capacitor Range       Osc         Freq           C1 (3)     C2 (3)
   Type      Frequency                      C1 = C2 (1)       Type

                                                              LF      32 kHz(1) 100-150 pF 100-150 pF

LF                455 kHz               15 - 68 pF                        1 MHz 10-33 pF            10-33 pF

                  2.0 MHz               10 - 33 pF                        2 MHz 10-33 pF            10-33 pF

XT                4.0 MHz               22 - 68 pF            XT          2 MHz 47-100 pF           47-100 pF
                                                                                                    15-68 pF
                  8.0 MHz               33 - 100 pF                    4 MHz             15-68 pF   15-47 pF
                                                                      8 MHz (2)          15-47 pF
                  16.0 MHz              33 - 100 pF                                                    TBD
                                                                          16 MHz         TBD        15-47 pF
Higher capacitance increases the stability of the oscillator
but also increases the start-up time. These values are for                25 MHz 15-47 pF              10 pF
design guidance only. Since each resonator has its own
characteristics, the user should consult the resonator manu-          32 MHz (3)         10 pF
facturer for appropriate values of external components.
Note 1: These values include all board capacitances           Higher capacitance increases the stability of the oscillator
                                                              but also increases the start-up time and the oscillator cur-
            on this pin. Actual capacitor value depends       rent. These values are for design guidance only. RS may be
            on board capacitance                              required in XT mode to avoid overdriving the crystals with
                                                              low drive level specification. Since each crystal has its own
Resonators Used:                                              characteristics, the user should consult the crystal manufac-
                                                              turer for appropriate values for external components.
455 kHz Panasonic EFO-A455K04B 0.3%                         Note 1: For VDD > 4.5V, C1 = C2  30 pF is recom-

2.0 MHz Murata Erie CSA2.00MG                   0.5%                     mended.
                                                                     2: RS of 330 is required for a capacitor com-
4.0 MHz Murata Erie CSA4.00MG                   0.5%
                                                                          bination of 15/15 pF.
8.0 MHz Murata Erie CSA8.00MT                   0.5%                3: These values include all board capacitances

16.0 MHz Murata Erie CSA16.00MX                0.5%                     on this pin. Actual capacitor value depends
                                                                          on board capacitance
Resonators used did not have built-in capacitors.

                                                              Crystals Used:

                                                              32.768 kHz     Epson C-001R32.768K-A   20 PPM
                                                              1.0 MHz        ECS-10-13-1             50 PPM
                                                              2.0 MHz        ECS-20-20-1             50 PPM
                                                              4.0 MHz        ECS-40-20-1             50 PPM
                                                              8.0 MHz        ECS ECS-80-S-4          50 PPM
                                                                             ECS-80-18-1
                                                              16.0 MHz       ECS-160-20-1           TBD
                                                              25 MHz         CTS CTS25M             50 PPM
                                                              32 MHz         CRYSTEK HF-2            50 PPM

DS30289A-page 16                                                                         1998 Microchip Technology Inc.
                                                                            PIC17C7XX

4.1.3 EXTERNAL CLOCK OSCILLATOR                   4.1.4 EXTERNAL CRYSTAL OSCILLATOR
                                                              CIRCUIT
In the EC oscillator mode, the OSC1 input can be
driven by CMOS drivers. In this mode, the         Either a prepackaged oscillator can be used or a simple
OSC1/CLKIN pin is hi-impedance and the            oscillator circuit with TTL gates can be built. Prepack-
OSC2/CLKOUT pin is the CLKOUT output (4 TOSC).    aged oscillators provide a wide operating range and
                                                  better stability. A well-designed crystal oscillator will
FIGURE 4-4:           EXTERNAL CLOCK INPUT        provide good performance with TTL gates. Two types
                      OPERATION (EC OSC           of crystal oscillator circuits can be used: one with series
                      CONFIGURATION)              resonance, or one with parallel resonance.

Clock from            OSC1                        Figure 4-5 shows implementation of a parallel resonant
ext. system                    PIC17CXXX          oscillator circuit. The circuit is designed to use the fun-
                                                  damental frequency of the crystal. The 74AS04
            CLKOUT    OSC2                        inverter performs the 180-degree phase shift that a par-
            (FOSC/4)                              allel oscillator requires. The 4.7 k resistor provides
                                                  the negative feedback for stability. The 10 k potenti-
                                                  ometer biases the 74AS04 in the linear region. This
                                                  could be used for external oscillator designs.

                                                  FIGURE 4-5:  EXTERNAL PARALLEL
                                                               RESONANT CRYSTAL
                                                               OSCILLATOR CIRCUIT

                                                          +5V                       To Other
                                                                                    Devices
                                                              10 k
                                                                     4.7 k  74AS04  PIC17CXXX
                                                                                       OSC1
                                                                   74AS04

                                                                            10 k

                                                               XTAL

                                                  10k

                                                          20 pF 20 pF

                                                  Figure 4-6 shows a series resonant oscillator circuit.
                                                  This circuit is also designed to use the fundamental fre-
                                                  quency of the crystal. The inverter performs a
                                                  180-degree phase shift in a series resonant oscillator
                                                  circuit. The 330  resistors provide the negative feed-
                                                  back to bias the inverters in their linear region.

                                                  FIGURE 4-6:  EXTERNAL SERIES
                                                               RESONANT CRYSTAL
                                                               OSCILLATOR CIRCUIT

                                                   330             330              To Other
                                                  74AS04          74AS04            Devices

                                                                            74AS04            PIC17CXXX
                                                                                                  OSC1

                                                          0.1 F
                                                          XTAL

1998 Microchip Technology Inc.                                                    DS30289A-page 17
PIC17C7XX

4.1.5 RC OSCILLATOR                                         4.1.5.1 RC START-UP

For timing insensitive applications, the RC device          As the device voltage increases, the RC will immedi-
option offers additional cost savings. RC oscillator fre-   ately start its oscillations once the pin voltage levels
quency is a function of the supply voltage, the resistor    meet the input threshold specifications (parameter
(Rext) and capacitor (Cext) values, and the operating       #D032 and parameter #D042 in the electrical specifica-
temperature. In addition to this, oscillator frequency      tion section). The time required for the RC to start
will vary from unit to unit due to normal process param-    oscillating depends on many factors. These include:
eter variation. Furthermore, the difference in lead
frame capacitance between package types will also            Resistor value used
affect oscillation frequency, especially for low Cext val-   Capacitor value used
ues. The user also needs to take into account variation      Device VDD rise time
due to tolerance of external R and C components used.       System temperature
Figure 4-7 shows how the R/C combination is con-
nected to the PIC17CXXX. For Rext values below
2.2 k, the oscillator operation may become unstable,
or stop completely. For very high Rext values (e.g.
1 M), the oscillator becomes sensitive to noise,
humidity and leakage. Thus, we recommend to keep
Rext between 3 k and 100 k.

Although the oscillator will operate with no external
capacitor (Cext = 0 pF), we recommend using values
above 20 pF for noise and stability reasons. With little
or no external capacitance, oscillation frequency can
vary dramatically due to changes in external capaci-
tances, such as PCB trace capacitance or package
lead frame capacitance.

See Section 21.0 for RC frequency variation from part
to part due to normal process variation. The variation
is larger for larger R (since leakage current variation
will affect RC frequency more for large R) and for
smaller C (since variation of input capacitance will
affect RC frequency more).

See Section 21.0 for variation of oscillator frequency
due to VDD for given Rext/Cext values as well as fre-
quency variation due to operating temperature for given
R, C, and VDD values.

The oscillator frequency, divided by 4, is available on
the OSC2/CLKOUT pin, and can be used for test pur-
poses or to synchronize other logic (see Figure 4-8 for
waveform).

FIGURE 4-7: RC OSCILLATOR MODE

      VDD

Rext                    PIC17CXXX

                                      Internal

                  OSC1                clock

Cext                     OSC2/CLKOUT
VSS        Fosc/4

DS30289A-page 18                                             1998 Microchip Technology Inc.
                                                                                 PIC17C7XX

4.2 Clocking Scheme/Instruction Cycle                      4.3 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, and 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 clocks and instruction execution flow      then two cycles are required to complete the instruction
are shown in Figure 4-8.                                   (Example 4-1).

                                                           A fetch cycle begins with the program counter incre-
                                                           menting 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 4-8: CLOCK/INSTRUCTION CYCLE

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

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

              Q2                                                                                      Internal
                                                                                                      phase
              Q3                                                                                      clock

              Q4

              PC                  PC

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

EXAMPLE 4-1: INSTRUCTION PIPELINE FLOW

                                   TCY0       TCY1            TCY2    TCY3       TCY4                 TCY5
                                  Fetch 1  Execute 1
1. MOVLW 55h                                               Execute 2
                                                            Fetch 3
2. MOVWF PORTB                             Fetch 2

3. CALL SUB_1                                                         Execute 3

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

5. Instruction @ address SUB_1                                                   Fetch SUB_1 Execute SUB_1

All instructions are single cycle, except for any program branches. These take two cycles since the fetched
instruction is "flushed" from the pipeline while the new instruction is being fetched and then executed.

1998 Microchip Technology Inc.                                                        DS30289A-page 19
PIC17C7XX

NOTES:

DS30289A-page 20   1998 Microchip Technology Inc.
                                                                     PIC17C7XX

5.0 RESET                                                     When the device enters the "reset state" the Data
                                                              Direction registers (DDR) are forced set, which will
The PIC17CXXX differentiates between various kinds            make the I/O hi-impendance inputs. The reset state of
of reset:                                                     some peripheral modules may force the I/O to other
                                                              operations, such as analog inputs or the system bus.
Power-on Reset (POR)
Brown-out Reset                                             Note:  While the device is in a reset state, the
MCLR Reset                                                         internal phase clock is held in the Q1 state.
WDT Reset                                                          Any processor mode that allows external
                                                                     execution will force the RE0/ALE pin as a
Some registers are not affected in any reset condition,              low output and the RE1/OE and RE2/WR
their status is unknown on POR and unchanged in any                  pins as high outputs.
other reset. Most other registers are forced to a "reset
state". The TO and PD bits are set or cleared differently     A simplified block diagram of the on-chip reset circuit is
in different reset situations as indicated in Table 5-3.      shown in Figure 5-1.
These bits, in conjunction with the POR and BOR bits,
are used in software to determine the nature of the
reset. See Table 5-4 for a full description of the reset
states of all registers.

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

                      External
                       Reset

MCLR

       BOR Brown-out
      Module Reset

       WDT            WDT
      Module
                      Time_Out
                      Reset

      VDD rise

      detect Power_On_Reset                                          S

VDD

      OST/PWRT

                OST                                                  R                                     Chip_Reset
                                                                                                      Q

                10-bit Ripple counter

OSC1            PWRT

       On-chip  10-bit Ripple counter
      RC OSC

This RC oscillator is shared with the WDT  Enable OST        (Enable the PWRT timer
   when not in a power-up sequence.              Enable PWRT  only during POR or BOR)

                                                              (If PWRT is invoked, or a Wake-up from
                                                              SLEEP and OSC type is XT or LF)

1998 Microchip Technology Inc.                                        DS30289A-page 21
PIC17C7XX

5.1 Power-on Reset (POR), Power-up                          5.1.2 POWER-UP TIMER (PWRT)
          Timer (PWRT), Oscillator Start-up
          Timer (OST), and Brown-out Reset                  The Power-up Timer provides a fixed 96 ms time-out
          (BOR)                                             (nominal) on power-up. This occurs from the rising
                                                            edge of the internal POR signal if VDD and MCLR are
5.1.1 POWER-ON RESET (POR)                                  tied, or after the first rising edge of MCLR (detected
                                                            high). The Power-up Timer operates on an internal RC
The Power-on Reset circuit holds the device in reset        oscillator. The chip is kept in RESET as long as the
until VDD is above the trip point (in the range of 1.4V -   PWRT is active. In most cases the PWRT delay allows
2.3V). The devices produce an internal reset for both       VDD to rise to an acceptable level.
rising and falling VDD. To take advantage of the POR,
just tie the MCLR/VPP pin directly (or through a resistor)  The power-up time delay will vary from chip to chip and
to VDD. This will eliminate external RC components          with VDD and temperature. See DC parameters for
usually needed to create Power-on Reset. A minimum          details.
rise time for VDD is required. See Electrical Specifica-
tions for details.                                          5.1.3 OSCILLATOR START-UP TIMER (OST)

Figure 5-2 and Figure 5-3 show two possible POR cir-        The Oscillator Start-up Timer (OST) provides a 1024
cuits.                                                      oscillator cycle (1024TOSC) delay whenever the PWRT
                                                            is invoked or a wake-up from SLEEP event occurs in XT
FIGURE 5-2: USING ON-CHIP POR                               or LF mode. The PWRT and OST operate in parallel.

                     VDD                                    The OST counts the oscillator pulses on the
                                                            OSC1/CLKIN pin. The counter only starts incrementing
                          VDD                               after the amplitude of the signal reaches the oscillator
                          MCLR                              input thresholds. This delay allows the crystal oscillator
                                                            or resonator to stabilize before the device exits reset.
                          PIC17CXXX                         The length of the time-out is a function of the crys-
                                                            tal/resonator frequency.
FIGURE 5-3:       EXTERNAL POWER-ON
                  RESET CIRCUIT (FOR SLOW                   Figure 5-4 shows the operation of the OST circuit. In
                  VDD POWER-UP)                             this figure the oscillator is of such a low frequency that
                                                            although enabled simultaneously, the OST does not
VDD VDD                                                     time-out until after the Power-up Timer time-out.

D            R                                              FIGURE 5-4: OSCILLATOR START-UP
                                                                                 TIME (LOW FREQ)
                     R1
                                MCLR                                                     POR or BOR Trip Point

                                                                                 VDD

                  C       PIC17CXXX                                     MCLR
                                                                       OSC2
Note 1: An external Power-on Reset circuit is                                             TOST
            required only if VDD power-up time is too                              TOSC1
            slow. The diode D helps discharge the           OST TIME_OUT
            capacitor quickly when VDD powers
            down.                                           PWRT TIME_OUT                 TPWRT
                                                            INTERNAL RESET
       2: R < 40 k is recommended to ensure
            that the voltage drop across R does not         This figure shows in greater detail the timings
            exceed 0.2V (max. leakage current spec.         involved with the oscillator start-up timer. In this
            on the MCLR/VPP pin is 5 A). A larger          example the low frequency crystal start-up time is
            voltage drop will degrade VIH level on the      larger than power-up time (TPWRT).
            MCLR/VPP pin.
                                                            Tosc1 = time for the crystal oscillator to react to an
       3: R1 = 100 to 1 k will limit any current            oscillation level detectable by the Oscillator
            flowing into MCLR from external capaci-         Start-up Timer (OST).
            tor C in the event of MCLR/VPP pin break-
            down due to Electrostatic Discharge             TOST = 1024TOSC.
            (ESD) or Electrical Overstress (EOS).

DS30289A-page 22                                                             1998 Microchip Technology Inc.
                                                                               PIC17C7XX

5.1.4 TIME-OUT SEQUENCE                                        If the device voltage is not within electrical specification
                                                               at the end of a time-out, the MCLR/VPP pin must be
On power-up the time-out sequence is as follows: First         held low until the voltage is within the device specifica-
the internal POR signal goes high when the POR trip            tion. The use of an external RC delay is sufficient for
point is reached. If MCLR is high, then both the OST           many of these applications.
and PWRT timers start. In general the PWRT time-out
is longer, except with low frequency crystals/resona-          The time-out sequence begins from the first rising edge
tors. The total time-out also varies based on oscillator       of MCLR.
configuration. Table 5-1 shows the times that are asso-
ciated with the oscillator configuration. Figure 5-5 and       Table 5-3 shows the reset conditions for some special
Figure 5-6 display these time-out sequences.                   registers, while Table 5-4 shows the initialization condi-
                                                               tions for all the registers.

TABLE 5-1: TIME-OUT IN VARIOUS SITUATIONS

     Oscillator                                  POR, BOR               Wake up from         MCLR Reset
   Configuration                                                            SLEEP
                                  Greater of: 96 ms or 1024TOSC                                    --
       XT, LF                     Greater of: 96 ms or 1024TOSC          1024TOSC                  --

      EC, RC                                                                   --

TABLE 5-2: STATUS BITS AND THEIR SIGNIFICANCE

POR BOR (1)       TO              PD                                    Event

0  0              1               1 Power-on Reset

1  1              1               0 MCLR Reset during SLEEP or interrupt wake-up from SLEEP

1  1              0               1 WDT Reset during normal operation

1  1              0               0 WDT Wake-up during SLEEP

1  1              1               1 MCLR Reset during normal operation

1  0              1               1 Brown-out Reset

0  0              0               x Illegal, TO is set on POR

0  0              x               0 Illegal, PD is set on POR

x  x              1               1 CLRWDT instruction executed

Note 1: When BODEN is enabled, else the BOR status bit is unknown.

TABLE 5-3: RESET CONDITION FOR THE PROGRAM COUNTER AND THE CPUSTA REGISTER

                  Event                                   PCH:PCL       CPUSTA (4)           OST Active

Power-on Reset                                            0000h         --11 1100            Yes

Brown-out Reset                                           0000h         --11 1110            Yes

MCLR Reset during normal operation                        0000h         --11 1111            No

MCLR Reset during SLEEP                                   0000h         --11 1011            Yes (2)

WDT Reset during normal operation                         0000h         --11 0111            No

WDT Wake-up during SLEEP (3)                              0000h         --11 0011            Yes (2)

Interrupt wake-up from SLEEP GLINTD is set                PC + 1        --11 1011            Yes (2)

                                  GLINTD is clear         PC + 1 (1)    --10 1011            Yes (2)

Legend: u = unchanged, x = unknown, - = unimplemented read as '0'.
Note 1: On wake-up, this instruction is executed. The instruction at the appropriate interrupt vector is fetched and

            then executed.
       2: The OST is only active (on wake-up) when the Oscillator is configured for XT or LF modes.
       3: The Program Counter = 0, that is, the device branches to the reset vector. This is different from the

            mid-range devices.
       4: When BODEN is enabled, else the BOR status bit is unknown.

1998 Microchip Technology Inc.                                                             DS30289A-page 23
PIC17C7XX

In Figure 5-5, Figure 5-6 and Figure 5-7, the TPWRT
timer timeout is greater then the TOST timer timeout, as
would be the case in higher frequency crystals. For
lower frequency crystals, (i.e., 32 kHz) TOST may be
greater.

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

             VDD

               MCLR                 TPWRT
INTERNAL POR             TOST

PWRT TIME-OUT
  OST TIME-OUT

     INTERNAL RESET

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

             VDD

               MCLR                                     TPWRT
INTERNAL POR                                        TOST

PWRT TIME-OUT
  OST TIME-OUT

INTERNAL RESET

FIGURE 5-7:       SLOW RISE TIME (MCLR TIED TO VDD)

                              Minimum VDD operating voltage

                                                     5V

                     VDD  0V               1V

                  MCLR

INTERNAL POR

                              TPWRT

PWRT TIME-OUT

                                           TOST

OST TIME-OUT

INTERNAL RESET

DS30289A-page 24                                                1998 Microchip Technology Inc.
                                                               PIC17C7XX

TABLE 5-4: INITIALIZATION CONDITIONS FOR SPECIAL FUNCTION REGISTERS

Register     Address              Power-on Reset   MCLR Reset  Wake-up from SLEEP
                                  Brown-out Reset  WDT Reset      through interrupt

Unbanked

INDF0        00h                      N.A.             N.A.         N.A.
                                  xxxx xxxx        uuuu uuuu    uuuu uuuu
FSR0         01h                                                 PC + 1(2)
                                    0000h            0000h      uuuu uuuu
PCL          02h                                                1111 uuuu
                                  0000 0000        uuuu uuuu    0000 000-
PCLATH       03h                  1111 xxxx        1111 uuuu     --uu qquu
                                  0000 000-        0000 000-
ALUSTA       04h                  --11 11qq        --11 qquu   uuuu uuuu(1)
                                                                    N.A.
T0STA        05h                  0000 0000        0000 0000
                                                                uuuu uuuu
CPUSTA(3)    06h                      N.A.             N.A.     uuuu uuuu
                                  xxxx xxxx        uuuu uuuu    uuuu uuuu
INTSTA       07h                  xxxx xxxx        uuuu uuuu    uuuu uuuu
                                  xxxx xxxx        uuuu uuuu    uuuu uuuu
INDF1        08h                  xxxx xxxx        uuuu uuuu    uuuu uuuu
                                  0000 0000        0000 0000    uuuu uuuu
FSR1         09h                  0000 0000        0000 0000
                                  0000 0000        0000 0000
WREG         0Ah

TMR0L        0Bh

TMR0H        0Ch

TBLPTRL      0Dh

TBLPTRH      0Eh

BSR          0Fh

Bank 0

PORTA (4,6)  10h                  0-xx 11xx        0-uu 11uu   u-uu uuuu

DDRB         11h                  1111 1111        1111 1111   uuuu uuuu

PORTB (4)    12h                  xxxx xxxx        uuuu uuuu   uuuu uuuu

RCSTA1       13h                  0000 -00x        0000 -00u   uuuu -uuu

RCREG1       14h                  xxxx xxxx        uuuu uuuu   uuuu uuuu

TXSTA1       15h                  0000 --1x        0000 --1u         uuuu --uu

TXREG1       16h                  xxxx xxxx        uuuu uuuu   uuuu uuuu

SPBRG1       17h                  0000 0000        0000 0000   uuuu uuuu

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

       2: When the wake-up is due to an interrupt and the GLINTD bit is cleared, the PC is loaded with the interrupt
            vector.

       3: See Table 5-3 for reset value of specific condition.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or externded microcontroller mode, the operation of this

            port does not rely on these registers
       6: On any device reset, these pins are configured as inputs.

1998 Microchip Technology Inc.                                     DS30289A-page 25
PIC17C7XX

TABLE 5-4: INITIALIZATION CONDITIONS FOR SPECIAL FUNCTION REGISTERS (Cont.'d)

Register          Address  Power-on Reset   MCLR Reset  Wake-up from SLEEP
                           Brown-out Reset  WDT Reset      through interrupt

Bank 1

DDRC (5)          10h      1111 1111        1111 1111   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
PORTC (4, 5)      11h      1111 1111        1111 1111   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
DDRD (5)          12h       ---- 1111       ---- 1111   ---- uuuu
                            ---- xxxx       ---- uuuu   ---- uuuu
PORTD (4, 5)      13h      x000 0010        u000 0010   uuuu uuuu(1)
                           0000 0000        0000 0000   uuuu uuuu
DDRE (5)          14h

PORTE (4, 5)      15h

PIR1              16h

PIE1              17h

Bank 2

TMR1              10h      xxxx xxxx        uuuu uuuu   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
TMR2              11h      xxxx xxxx        uuuu uuuu   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
TMR3L             12h      xxxx xxxx        uuuu uuuu   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
TMR3H             13h      xxxx xxxx        uuuu uuuu   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
PR1               14h

PR2               15h

PR3/CA1L          16h

PR3/CA1H          17h

Bank 3

PW1DCL            10h      xx-- ----        uu-- ----   uu-- ----

PW2DCL            11h      xx0- ----        uu0- ----   uuu- ----

PW1DCH            12h      xxxx xxxx        uuuu uuuu   uuuu uuuu

PW2DCH            13h      xxxx xxxx        uuuu uuuu   uuuu uuuu

CA2L              14h      xxxx xxxx        uuuu uuuu   uuuu uuuu

CA2H              15h      xxxx xxxx        uuuu uuuu   uuuu uuuu

TCON1             16h      0000 0000        0000 0000   uuuu uuuu

TCON2             17h      0000 0000        0000 0000   uuuu uuuu

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

       2: When the wake-up is due to an interrupt and the GLINTD bit is cleared, the PC is loaded with the interrupt
            vector.

       3: See Table 5-3 for reset value of specific condition.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or externded microcontroller mode, the operation of this

            port does not rely on these registers
       6: On any device reset, these pins are configured as inputs.

DS30289A-page 26                                        1998 Microchip Technology Inc.
                                                               PIC17C7XX

TABLE 5-4: INITIALIZATION CONDITIONS FOR SPECIAL FUNCTION REGISTERS (Cont.'d)

Register       Address            Power-on Reset   MCLR Reset  Wake-up from SLEEP
                                  Brown-out Reset  WDT Reset      through interrupt

Bank 4

PIR2           10h                000- 0010        000- 0010   uuu- uuuu(1)
                                                               uuu- uuuu
PIE2           11h                000- 0000        000- 0000   ---- ----
                                    ---- ----      ---- ----   uuuu -uuu
Unimplemented  12h                                 0000 -00u   uuuu uuuu
                                  0000 -00x        uuuu uuuu   uuuu --uu
RCSTA2         13h                xxxx xxxx        0000 --1u   uuuu uuuu
                                  0000 --1x        uuuu uuuu   uuuu uuuu
RCREG2         14h                xxxx xxxx        0000 0000
                                  0000 0000
TXSTA2         15h

TXREG2         16h

SPBRG2         17h

Bank 5

DDRF           10h                1111 1111        1111 1111   uuuu uuuu
                                  0000 0000        0000 0000   uuuu uuuu
PORTF (4)      11h                1111 1111        1111 1111   uuuu uuuu
                                  xxxx 0000        uuuu 0000   uuuu uuuu
DDRG           12h                0000 -0-0        0000 -0-0   uuuu uuuu
                                  000- 0000        000- 0000   uuuu uuuu
PORTG (4)      13h                xxxx xxxx        uuuu uuuu   uuuu uuuu
                                  xxxx xxxx        uuuu uuuu   uuuu uuuu
ADCON0         14h

ADCON1         15h

ADRESL         16h

ADRESH         17h

Bank 6

SSPADD         10h                0000 0000        0000 0000   uuuu uuuu

SSPCON1        11h                0000 0000        0000 0000   uuuu uuuu

SSPCON2        12h                0000 0000        0000 0000   uuuu uuuu

SSPSTAT        13h                0000 0000        0000 0000   uuuu uuuu

SSPBUF         14h                xxxx xxxx        uuuu uuuu   uuuu uuuu

Unimplemented  15h                ---- ----        ---- ----   ---- ----

Unimplemented  16h                ---- ----        ---- ----   ---- ----

Unimplemented  17h                ---- ----        ---- ----   ---- ----

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

       2: When the wake-up is due to an interrupt and the GLINTD bit is cleared, the PC is loaded with the interrupt
            vector.

       3: See Table 5-3 for reset value of specific condition.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or externded microcontroller mode, the operation of this

            port does not rely on these registers
       6: On any device reset, these pins are configured as inputs.

1998 Microchip Technology Inc.                               DS30289A-page 27
PIC17C7XX

TABLE 5-4: INITIALIZATION CONDITIONS FOR SPECIAL FUNCTION REGISTERS (Cont.'d)

Register          Address  Power-on Reset   MCLR Reset  Wake-up from SLEEP
                           Brown-out Reset  WDT Reset      through interrupt

Bank 7

PW3DCL            10h       xx0- ----       uu0- ----   uuu- ----
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
PW3DCH            11h      xxxx xxxx        uuuu uuuu   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
CA3L              12h      xxxx xxxx        uuuu uuuu   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
CA3H              13h      -000 0000        -000 0000   -uuu uuuu
                                            ---- ----   ---- ----
CA4L              14h        ---- ----

CA4H              15h

TCON3             16h

Unimplemented     17h

Bank 8

DDRH              10h      1111 1111        1111 1111   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
PORTH (4)         11h      1111 1111        1111 1111   uuuu uuuu
                           xxxx xxxx        uuuu uuuu   uuuu uuuu
DDRJ              12h

PORTJ (4)         13h

Unbanked

PRODL             18h      xxxx xxxx        uuuu uuuu   uuuu uuuu

PRODH             19h      xxxx xxxx        uuuu uuuu   uuuu uuuu

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

       2: When the wake-up is due to an interrupt and the GLINTD bit is cleared, the PC is loaded with the interrupt
            vector.

       3: See Table 5-3 for reset value of specific condition.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or externded microcontroller mode, the operation of this

            port does not rely on these registers
       6: On any device reset, these pins are configured as inputs.

DS30289A-page 28                                        1998 Microchip Technology Inc.
                                                                                                  PIC17C7XX

5.1.5 BROWN-OUT RESET (BOR)                                          FIGURE 5-8:           EXTERNAL BROWN-OUT
                                                                                           PROTECTION CIRCUIT 1
PIC17C7XX devices have on-chip Brown-out Reset cir-                                   VDD
cuitry. This circuitry places the device into a reset when                         33k                               VDD
the device voltage falls below a trip point (BVDD). This
ensures that the device does not continue program                                          10k      MCLR
execution outside the valid operation range of the                                            40 k  PIC17CXXX
device. Brown-out resets are typically used in AC line
applications or large battery applications where large
loads may be switched in (such as automotive).

Note:  Before using the on-chip brown-out for a
       voltage supervisory function, please
       review the electrical specifications to                       This circuit will activate reset when VDD goes below
       ensure that they meet your requirements.                      (Vz + 0.7V) where Vz = Zener voltage.

The BODEN configuration bit can disable (if clear/pro-               FIGURE 5-9:           EXTERNAL BROWN-OUT
grammed) or enable (if set) the Brown-out Reset cir-                                       PROTECTION CIRCUIT 2
cuitry. If VDD falls below BVDD (Typically 4.0V,                                      VDD
parameter #D005 in electrical specification section), for                          R1                               VDD
greater than parameter #35, the brown-out situation will
reset the chip. A reset is not guaranteed to occur if VDD                                           Q1
falls below BVDD for less than parameter #35. The chip                                                        MCLR
will remain in Brown-out Reset until VDD rises above
BVDD. The Power-up Timer and Oscillator Start-up                     R2                    40 k
Timer will then be invoked. This will keep the chip in
reset the greater of 96 ms and 1024 TOSC. If VDD drops                                              PIC17CXXX
below BVDD while the Power-up Timer/Oscillator
Start-up Timer is running, the chip will go back into a              This brown-out circuit is less expensive, albeit less
Brown-out Reset. The Power-up Timer/Oscillator                       accurate. Transistor Q1 turns off when VDD is below a
Start-up Timer will be initialized. Once VDD rises above             certain level such that:
BVDD, the Power-up Timer/Oscillator Start-up Timer
will start their time delays. Figure 5-10 shows typical                                              R1 = 0.7V
Brown-out situations.                                                                             R1 + R2

In some applications, the Brown-out reset trip point of                                    VDD
the device may not be at the desired level. Figure 5-8
and Figure 5-9 are two examples of external circuitry
that may be implemented. Each needs to be evaluated
to determine if they match the requirements of the
application.

FIGURE 5-10: BROWN-OUT SITUATIONS                                                                   BVDD Max.
                                                                                                    BVDD Min.
                           VDD
                                                                                                    BVDD Max.
       Internal                                             Greater of 96 ms                        BVDD Min.
         Reset                                                     and 1024 Tosc
                                                                                                    BVDD Max.
           VDD                                                                                      BVDD Min.

       Internal                                             < 96 ms
         Reset
                                                                     Greater of 96 ms
           VDD                                                              and 1024 Tosc

       Internal                                                      Greater of 96 ms
         Reset                                                              and 1024 Tosc

1998 Microchip Technology Inc.                                                                    DS30289A-page 29
PIC17C7XX

NOTES:

DS30289A-page 30   1998 Microchip Technology Inc.
                                                                        PIC17C7XX

6.0 INTERRUPTS                                               When an interrupt is responded to, the GLINTD bit is
                                                             automatically set to disable any further interrupts, the
PIC17C7XX devices have 18 sources of interrupt:              return address is pushed onto the stack and the PC is
                                                             loaded with the interrupt vector address. There are four
External interrupt from the RA0/INT pin                    interrupt vectors. Each vector address is for a specific
Change on RB7:RB0 pins                                     interrupt source (except the peripheral interrupts which
TMR0 Overflow                                              all vector to the same address). These sources are:
TMR1 Overflow
TMR2 Overflow                                              External interrupt from the RA0/INT pin
TMR3 Overflow                                              TMR0 Overflow
USART1 Transmit buffer empty                               T0CKI edge occurred
USART1 Receive buffer full                                  Any peripheral interrupt
USART2 Transmit buffer empty
USART2 Receive buffer full                                 When program execution vectors to one of these inter-
SSP Interrupt                                              rupt vector addresses (except for the peripheral inter-
SSP I2C bus collision interrupt                            rupts), the interrupt flag bit is automatically cleared.
A/D conversion complete                                    Vectoring to the peripheral interrupt vector address
Capture1                                                   does not automatically clear the source of the interrupt.
Capture2                                                   In the peripheral interrupt service routine, the source(s)
Capture3                                                   of the interrupt can be determined by testing the inter-
Capture4                                                   rupt flag bits. The interrupt flag bit(s) must be cleared
T0CKI edge occurred                                        in software before re-enabling interrupts to avoid infi-
                                                             nite interrupt requests.
There are six registers used in the control and status of
interrupts. These are:                                       When an interrupt condition is met, that individual inter-
                                                             rupt flag bit will be set regardless of the status of its cor-
CPUSTA                                                     responding mask bit or the GLINTD bit.
INTSTA
PIE1                                                       For external interrupt events, there will be an interrupt
PIR1                                                       latency. For two cycle instructions, the latency could
PIE2                                                       be one instruction cycle longer.
PIR2
                                                             The "return from interrupt" instruction, RETFIE, can be
The CPUSTA register contains the GLINTD bit. This is         used to mark the end of the interrupt service routine.
the Global Interrupt Disable bit. When this bit is set, all  When this instruction is executed, the stack is "POPed",
interrupts are disabled. This bit is part of the controller  and the GLINTD bit is cleared (to re-enable interrupts).
core functionality and is described in the Section 6.4.

FIGURE 6-1: INTERRUPT LOGIC

             RBIF
             RBIE

PIR1 / PIE1          TMR3IF
                     TMR3IE

                              TMR2IF                            INTSTA
                              TMR2IE
                                                                 T0IF
             TMR1IF                                              T0IE            Wake-up (If in SLEEP mode)
             TMR1IE                                                              or terminate long write
                                                                INTF
                     CA2IF                                      INTE                          Interrupt to CPU
                     CA2IE
                                                             T0CKIF     GLINTD (CPUSTA<4>)
             CA1IF                                           T0CKIE
             CA1IE
                                                                PEIF
                     TX1IF                                      PEIE
                     TX1IE

                              RC1IF
                              RC1IE

             SSPIF
             SSPIE

PIR2 / PIE2          BCLIF
                     BCLIE

             CA4IF                ADIF
             CA4IE                ADIE

                     CA3IF
                     CA3IE

             TX2IF
             TX2IE

                       RC2IF
                       RC2IE

1998 Microchip Technology Inc.                                        DS30289A-page 31
PIC17C7XX

6.1 Interrupt Status Register (INTSTA)                          Note: All interrupt flag bits get set by their speci-
                                                                            fied condition, even if the corresponding
The Interrupt Status/Control register (INTSTA) contains                     interrupt enable bit is clear (interrupt dis-
the flag and enable bits for non-peripheral interrupts.                     abled) or the GLINTD bit is set (all inter-
                                                                            rupts disabled).
The PEIF bit is a read only, bit wise OR of all the periph-
eral flag bits in the PIR registers (Figure 6-5 and          Care should be taken when clearing any of the INTSTA
Figure 6-6).                                                 register enable bits when interrupts are enabled
                                                             (GLINTD is clear). If any of the INTSTA flag bits (T0IF,
                                                             INTF, T0CKIF, or PEIF) are set in the same instruction
                                                             cycle as the corresponding interrupt enable bit is
                                                             cleared, the device will vector to the reset address
                                                             (0x00).

                                                             Prior to disabling any of the INTSTA enable bits, the
                                                             GLINTD bit should be set (disabled).

FIGURE 6-2: INTSTA REGISTER (ADDRESS: 07h, UNBANKED)

  R-0   R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0
  PEIF
bit7    T0CKIF T0IF  INTF  PEIE T0CKIE T0IE                  INTE          R = Readable bit
                                                                 bit0      W = Writable bit
bit 7:                                                                     - n = Value at POR reset

        PEIF: Peripheral Interrupt Flag bit

        This bit is the OR of all peripheral interrupt flag bits AND'ed with their corresponding enable bits. The

        interrupt logic forces program execution to address (20h) when a peripheral interrupt is pending.

        1 = A peripheral interrupt is pending

        0 = No peripheral interrupt is pending

bit 6:  T0CKIF: External Interrupt on T0CKI Pin Flag bit
        This bit is cleared by hardware, when the interrupt logic forces program execution to address (18h).
        1 = The software specified edge occurred on the RA1/T0CKI pin
        0 = The software specified edge did not occur on the RA1/T0CKI pin

bit 5:  T0IF: TMR0 Overflow Interrupt Flag bit
        This bit is cleared by hardware, when the interrupt logic forces program execution to address (10h).
        1 = TMR0 overflowed
        0 = TMR0 did not overflow

bit 4:  INTF: External Interrupt on INT Pin Flag bit
        This bit is cleared by hardware, when the interrupt logic forces program execution to address (08h).
        1 = The software specified edge occurred on the RA0/INT pin
        0 = The software specified edge did not occur on the RA0/INT pin

bit 3:  PEIE: Peripheral Interrupt Enable bit
        This bit acts as a global enable bit for the peripheral interrupts that have their corresponding enable bits
        set.
        1 = Enable peripheral interrupts
        0 = Disable peripheral interrupts

bit 2:  T0CKIE: External Interrupt on T0CKI Pin Enable bit
        1 = Enable software specified edge interrupt on the RA1/T0CKI pin
        0 = Disable interrupt on the RA1/T0CKI pin

bit 1:  T0IE: TMR0 Overflow Interrupt Enable bit
        1 = Enable TMR0 overflow interrupt
        0 = Disable TMR0 overflow interrupt

bit 0:  INTE: External Interrupt on RA0/INT Pin Enable bit
        1 = Enable software specified edge interrupt on the RA0/INT pin
        0 = Disable software specified edge interrupt on the RA0/INT pin

DS30289A-page 32                                                            1998 Microchip Technology Inc.
                                                                  PIC17C7XX

6.2 Peripheral Interrupt Enable Register1
          (PIE1) and Register2 (PIE2)

These registers contains the individual enable bits for
the peripheral interrupts.

FIGURE 6-3: PIE1 REGISTER (ADDRESS: 17h, BANK 1)

R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0   R = Readable bit
RBIE TMR3IE TMR2IE TMR1IE CA2IE CA1IE TX1IE RC1IE                W = Writable bit
                                                                  -n = Value at POR reset
bit7                                                        bit0

bit 7:  RBIE: PORTB Interrupt on Change Enable bit
bit 6:  1 = Enable PORTB interrupt on change
bit 5:  0 = Disable PORTB interrupt on change
bit 4:
bit 3:  TMR3IE: TMR3 Interrupt Enable bit
bit 2:  1 = Enable TMR3 interrupt
bit 1:  0 = Disable TMR3 interrupt
bit 0:
        TMR2IE: TMR2 Interrupt Enable bit
        1 = Enable TMR2 interrupt
        0 = Disable TMR2 interrupt

        TMR1IE: TMR1 Interrupt Enable bit
        1 = Enable TMR1 interrupt
        0 = Disable TMR1 interrupt

        CA2IE: Capture2 Interrupt Enable bit
        1 = Enable Capture2 interrupt
        0 = Disable Capture2 interrupt

        CA1IE: Capture1 Interrupt Enable bit
        1 = Enable Capture1 interrupt
        0 = Disable Capture1 interrupt

        TX1IE: USART1 Transmit Interrupt Enable bit
        1 = Enable USART1 Transmit buffer empty interrupt
        0 = Disable USART1 Transmit buffer empty interrupt

        RC1IE: USART1 Receive Interrupt Enable bit
        1 = Enable USART1 Receive buffer full interrupt
        0 = Disable USART1 Receive buffer full interrupt

1998 Microchip Technology Inc.                                                           DS30289A-page 33
PIC17C7XX

FIGURE 6-4: PIE2 REGISTER (ADDRESS: 11h, BANK 4)

R/W - 0 R/W - 0   R/W - 0  U-0   R/W - 0  R/W - 0            R/W - 0 R/W - 0          R = Readable bit
SSPIE BCLIE       ADIE          CA4IE    CA3IE              TX2IE RC2IE              W = Writable bit
                             --                                                       -n = Value at POR reset
bit7                                                                            bit0

bit 7:  SSPIE: Synchronous Serial Port Interrupt Enable bit
bit 6:  1 = Enable SSP Interrupt
bit 5:  0 = Disable SSP Interrupt
bit 4:
bit 3:  BCLIE: Bus Collision Interrupt Enable bit
bit 2:  1 = Enable Bus Collision Interrupt
bit 1:  0 = Disable Bus Collision Interrupt
bit 0:
        ADIE: A/D Module Interrupt Enable bit
        1 = Enable A/D Module Interrupt
        0 = Disable A/D Module Interrupt

        Unimplemented: Read as `0'

        CA4IE: Capture4 Interrupt Enable bit
        1 = Enable Capture4 Interrupt
        0 = Disable Capture4 Interrupt

        CA3IE: Capture3 Interrupt Enable bit
        1 = Enable Capture3 Interrupt
        0 = Disable Capture3 Interrupt

        TX2IE: USART2 Transmit Interrupt Enable bit
        1 = Enable USART2 Transmit Buffer Empty Interrupt
        0 = Disable USART2 Transmit Buffer Empty Interrupt

        RC2IE: USART2 Receive Interrupt Enable bit
        1 = Enable USART2 Receive Buffer Full Interrupt
        0 = Disable USART2 Receive Buffer Full Interrupt

DS30289A-page 34                                                                      1998 Microchip Technology Inc.
                                                                                  PIC17C7XX

6.3 Peripheral Interrupt Request                           Note:  These bits will be set by the specified con-
          Register1 (PIR1) and Register2 (PIR2)                   dition, even if the corresponding interrupt
                                                                  enable bit is cleared (interrupt disabled), or
These registers contains the individual flag bits for the         the GLINTD bit is set (all interrupts dis-
peripheral interrupts.                                            abled). Before enabling an interrupt, the
                                                                  user may wish to clear the interrupt flag to
                                                                  ensure that the program does not immedi-
                                                                  ately branch to the peripheral interrupt ser-
                                                                  vice routine.

FIGURE 6-5: PIR1 REGISTER (ADDRESS: 16h, BANK 1)

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

  RBIF  TMR3IF TMR2IF TMR1IF CA2IF            CA1IF TX1IF RC1IF               R = Readable bit
bit7                                                                    bit0  W = Writable bit
                                                                              -n = Value at POR reset

bit 7: RBIF: PORTB Interrupt on Change Flag bit

        1 = One of the PORTB inputs changed (software must end the mismatch condition)

        0 = None of the PORTB inputs have changed

bit 6:  TMR3IF: TMR3 Interrupt Flag bit
        If Capture1 is enabled (CA1/PR3 = 1)
        1 = TMR3 overflowed
        0 = TMR3 did not overflow

        If Capture1 is disabled (CA1/PR3 = 0)
        1 = TMR3 value has rolled over to 0000h from equalling the period register (PR3H:PR3L) value
        0 = TMR3 value has not rolled over to 0000h from equalling the period register (PR3H:PR3L) value

bit 5:  TMR2IF: TMR2 Interrupt Flag bit
        1 = TMR2 value has rolled over to 0000h from equalling the period register (PR2) value
        0 = TMR2 value has not rolled over to 0000h from equalling the period register (PR2) value

bit 4:  TMR1IF: TMR1 Interrupt Flag bit
        If TMR1 is in 8-bit mode (T16 = 0)
        1 = TMR1 value has rolled over to 0000h from equalling the period register (PR1) value
        0 = TMR1 value has not rolled over to 0000h from equalling the period register (PR1) value

        If Timer1 is in 16-bit mode (T16 = 1)
        1 = TMR2:TMR1 value has rolled over to 0000h from equalling the period register (PR2:PR1) value
        0 = TMR2:TMR1 value has not rolled over to 0000h from equalling the period register (PR2:PR1) value

bit 3:  CA2IF: Capture2 Interrupt Flag bit
        1 = Capture event occurred on RB1/CAP2 pin
        0 = Capture event did not occur on RB1/CAP2 pin

bit 2:  CA1IF: Capture1 Interrupt Flag bit
        1 = Capture event occurred on RB0/CAP1 pin
        0 = Capture event did not occur on RB0/CAP1 pin

bit 1:  TX1IF: USART1 Transmit Interrupt Flag bit (State controlled by hardware)
        1 = USART1 Transmit buffer is empty
        0 = USART1 Transmit buffer is full

bit 0:  RC1IF: USART1 Receive Interrupt Flag bit (State controlled by hardware)
        1 = USART1 Receive buffer is full
        0 = USART1 Receive buffer is empty

1998 Microchip Technology Inc.                                                        DS30289A-page 35
PIC17C7XX

FIGURE 6-6: PIR2 REGISTER (ADDRESS: 10h, BANK 4)

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

SSPIF BCLIF      ADIF  --         CA4IF CA3IF TX2IF RC2IF R = Readable bit
bit7
                                                                               bit0 W = Writable bit
                                                                                         -n = Value at POR reset

bit 7: SSPIF: Synchronous Serial Port (SSP) Interrupt Flag bit

        1 = The SSP interrupt condition has occurred, and must be cleared in software before returning from the

        interrupt service routine. The conditions that will set this bit are:

        SPI

              A transmission/reception has taken place.
        I2C Slave / Master

              A transmission/reception has taken place.
        I2C Master

                  The initiated start condition was completed by the SSP module.

                  The initiated stop condition was completed by the SSP module.

                  The initiated restart condition was completed by the SSP module.

                  The initiated acknowledge condition was completed by the SSP module.

                  A start condition occurred while the SSP module was idle (Multimaster system).

                  A stop condition occurred while the SSP module was idle (Multimaster system).

        0 = An SSP interrupt condition has NOT occurred.

bit 6:  BCLIF: Bus Collision Interrupt Flag bit
        1 = A bus collision has occurred in the SSP, when configured for I2C master mode

        0 = No bus collision has occurred

bit 5:  ADIF: A/D Module Interrupt Flag bit
        1 = An A/D conversion is complete
        0 = An A/D conversion is not complete

bit 4: Unimplemented: Read as '0'

bit 3:  CA4IF: Capture4 Interrupt Flag bit
        1 = Capture event occurred on RE3/CAP4 pin
        0 = Capture event did not occur on RE3/CAP4 pin

bit 2:  CA3IF: Capture3 Interrupt Flag bit
        1 = Capture event occurred on RG4/CAP3 pin
        0 = Capture event did not occur on RG4/CAP3 pin

bit 1:  TX2IF:USART2 Transmit Interrupt Flag bit (State controlled by hardware)
        1 = USART2 Transmit buffer is empty
        0 = USART2 Transmit buffer is full

bit 0:  RC2IF: USART2 Receive Interrupt Flag bit (State controlled by hardware)
        1 = USART2 Receive buffer is full
        0 = USART2 Receive buffer is empty

DS30289A-page 36                                                                     1998 Microchip Technology Inc.
6.4 Interrupt Operation                                                  PIC17C7XX

Global Interrupt Disable bit, GLINTD (CPUSTA<4>),           6.5 RA0/INT Interrupt
enables all unmasked interrupts (if clear) or disables all
interrupts (if set). Individual interrupts can be disabled  The external interrupt on the RA0/INT pin is edge trig-
through their corresponding enable bits in the INTSTA       gered. Either the rising edge, if the INTEDG bit
register. Peripheral interrupts need either the global      (T0STA<7>) is set, or the falling edge, if the INTEDG bit
peripheral enable PEIE bit disabled, or the specific        is clear. When a valid edge appears on the RA0/INT
peripheral enable bit disabled. Disabling the peripher-     pin, the INTF bit (INTSTA<4>) is set. This interrupt can
als via the global peripheral enable bit, disables all      be disabled by clearing the INTE control bit
peripheral interrupts. GLINTD is set on reset (interrupts   (INTSTA<0>). The INT interrupt can wake the proces-
disabled).                                                  sor from SLEEP. See Section 17.4 for details on
                                                            SLEEP operation.
The RETFIE instruction clears the GLINTD bit while
forcing the Program Counter (PC) to the value loaded        6.6 T0CKI Interrupt
at the Top of Stack.
                                                            The external interrupt on the RA1/T0CKI pin is edge
When an interrupt is responded to, the GLINTD bit is        triggered. Either the rising edge, if the T0SE bit
automatically set to disable any further interrupt, the     (T0STA<6>) is set, or the falling edge, if the T0SE bit is
return address is pushed onto the stack and the PC is       clear. When a valid edge appears on the RA1/T0CKI
loaded with the interrupt vector. There are four inter-     pin, the T0CKIF bit (INTSTA<6>) is set. This interrupt
rupt vectors which help reduce interrupt latency.           can be disabled by clearing the T0CKIE control bit
                                                            (INTSTA<2>). The T0CKI interrupt can wake up the
The peripheral interrupt vector has multiple interrupt      processor from SLEEP. See Section 17.4 for details on
sources. Once in the peripheral interrupt service rou-      SLEEP operation.
tine, the source(s) of the interrupt can be determined by
polling the interrupt flag bits. The peripheral interrupt   6.7 Peripheral Interrupt
flag bit(s) must be cleared in software before
re-enabling interrupts to avoid continuous interrupts.      The peripheral interrupt flag indicates that at least one
                                                            of the peripheral interrupts occurred (PEIF is set). The
The PIC17C7XX devices have four interrupt vectors.          PEIF bit is a read only bit, and is a bit wise OR of all the
These vectors and their hardware priority are shown in      flag bits in the PIR registers AND'ed with the corre-
Table 6-1. If two enabled interrupts occur "at the same     sponding enable bits in the PIE registers. Some of the
time", the interrupt of the highest priority will be ser-   peripheral interrupts can wake the processor from
viced first. This means that the vector address of that     SLEEP. See Section 17.4 for details on SLEEP opera-
interrupt will be loaded into the program counter (PC).     tion.

TABLE 6-1: INTERRUPT                                        6.8 Context Saving During Interrupts
                     VECTORS/PRIORITIES
                                                            During an interrupt, only the returned PC value is saved
Address  Vector                         Priority            on the stack. Typically, users may wish to save key reg-
                                      1 (Highest)           isters during an interrupt; e.g. WREG, ALUSTA and the
0008h    External Interrupt on                              BSR registers. This requires implementation in soft-
0010h    RA0/INT pin (INTF)                 2               ware.
0018h                                       3
0020h    TMR0 overflow interrupt      4 (Lowest)            Example 6-2 shows the saving and restoring of infor-
         (T0IF)                                             mation for an interrupt service routine. This is for a sim-
                                                            ple interrupt scheme, where only one interrupt may
         External Interrupt on T0CKI                        occur at a time (no interrupt nesting). The SFRs are
         (T0CKIF)                                           stored in the non-banked GPR area.

         Peripherals (PEIF)                                 Example 6-2 shows the saving and restoring of infor-
                                                            mation for a more complex interrupt service routine.
Note 1: Individual interrupt flag bits are set regard-      This is useful where nesting of interrupts is required. A
            less of the status of their corresponding       maximum of 6 levels can be done by this example. The
            mask bit or the GLINTD bit.                     BSR is stored in the non-banked GPR area, while the
                                                            other registers would be stored in a particular bank.
Note 2: Before disabling any of the INTSTA enable           Therefore 6 saves may be done with this routine (since
            bits, the GLINTD bit should be set              there are 6 non-banked GPR registers). These rou-
            (disabled).                                     tines require a dedicated indirect addressing register,
                                                            FSR0 to be selected for this.
1998 Microchip Technology Inc.
                                                            The PUSH and POP code segments could either be in
                                                            each interrupt service routine or could be subroutines
                                                            that were called. Depending on the application, other
                                                            registers may also need to be saved.

                                                                                                                   DS30289A-page 37
DS30289A-page 38                                                                                                                                                       PIC17C7XX

                                                   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                             FIGURE 6-7: INT PIN / T0CKI PIN INTERRUPT TIMING

                                           OSC1    PC            PC + 1            Addr (Vector)                            YY  YY + 1                     PC + 1
                                                                                                                                                           Dummy
                                           OSC2    PC Inst (PC)  Addr Inst (PC+1) Addr Inst (PC+1) Addr Inst (Vector) Addr      RETFIE Addr Inst (YY + 1)

1998 Microchip Technology Inc.    RA0/INT or                   Inst (PC)  Dummy  Dummy                                        RETFIE
                                    RA1/T0CKI

                                         INTF or
                                         T0CKIF

                                        GLINTD

                                               PC

                                    System Bus
                                      Instruction
                                        Fetched

                                  Instruction
                                  executed
                                                                      PIC17C7XX

EXAMPLE 6-1: SAVING STATUS AND WREG IN RAM (SIMPLE)

; The addresses that are used to store the CPUSTA and WREG values must be in the data memory

; address range of 1Ah - 1Fh. Up to 6 locations can be saved and restored using the MOVFP

; instruction. This instruction neither affects the status bits, nor corrupts the WREG register.

;

UNBANK1          EQU 0x01A        ; Address for 1st location to save

UNBANK2          EQU 0x01B        ; Address for 2nd location to save

UNBANK3          EQU 0x01C        ; Address for 3rd location to save

UNBANK4          EQU 0x01D        ; Address for 4th location to save

UNBANK5          EQU 0x01E        ; Address for 5th location to save

                                  ; (Label Not used in program)

UNBANK6          EQU 0x01F        ; Address for 6th location to save

                                  ; (Label Not used in program)

;

         :                        ; At Interrupt Vector Address

PUSH MOVFP ALUSTA, UNBANK1 ; Push ALUSTA value

         MOVFP BSR, UNBANK2       ; Push BSR value

         MOVFP WREG, UNBANK3      ; Push WREG value

         MOVFP PCLATH, UNBANK4 ; Push PCLATH value

         ;

         :                        ; Interrupt Service Routine (ISR) code

         ;

POP      MOVFP UNBANK4, PCLATH ; Restore PCLATH value

         MOVFP UNBANK3, WREG      ; Restore WREG value

         MOVFP UNBANK2, BSR       ; Restore BSR value

         MOVFP UNBANK1, ALUSTA ; Restore ALUSTA value

;

         RETFIE                   ; Return from interrupt (enable interrupts)

1998 Microchip Technology Inc.                                               DS30289A-page 39
PIC17C7XX

EXAMPLE 6-2: SAVING STATUS AND WREG IN RAM (NESTED)

; The addresses that are used to store the CPUSTA and WREG values must be in the data memory

; address range of 1Ah - 1Fh. Up to 6 locations can be saved and restored using the MOVFP

; instruction. This instruction neither affects the status bits, nor corrupts the WREG register.

; This routine uses the FRS0, so it controls the FS1 and FS0 bits in the ALUSTA register.

;

Nobank_FSR        EQU 0x40

Bank_FSR          EQU 0x41

ALU_Temp          EQU 0x42

WREG_TEMP         EQU 0x43

BSR_S1            EQU 0x01A    ; 1st location to save BSR

BSR_S2            EQU 0x01B    ; 2nd location to save BSR (Label Not used in program)

BSR_S3            EQU 0x01C    ; 3rd location to save BSR (Label Not used in program)

BSR_S4            EQU 0x01D    ; 4th location to save BSR (Label Not used in program)

BSR_S5            EQU 0x01E    ; 5th location to save BSR (Label Not used in program)

BSR_S6            EQU 0x01F    ; 6th location to save BSR (Label Not used in program)

;

INITIALIZATION                 ;

        CALL CLEAR_RAM         ; Must Clear all Data RAM

;

INIT_POINTERS                  ; Must Initialize the pointers for POP and PUSH

        CLRF BSR, F            ; Set All banks to 0

        CLRF ALUSTA, F         ; FSR0 post increment

        BSF       ALUSTA, FS1

        CLRF WREG, F           ; Clear WREG

        MOVLW BSR_S1           ; Load FSR0 with 1st address to save BSR

        MOVWF FSR0

        MOVWF Nobank_FSR

        MOVLW 0x20

        MOVWF Bank_FSR

        :

        :                      ; Your code

        :

        :                      ; At Interrupt Vector Address

PUSH BSF          ALUSTA, FS0  ; FSR0 has auto-increment, does not affect status bits

        BCF       ALUSTA, FS1  ; does not affect status bits

        MOVFP BSR, INDF0       ; No Status bits are affected

        CLRF BSR, F            ; Peripheral and Data RAM Bank 0 No Status bits are affected

        MOVPF ALUSTA, ALU_Temp ;

        MOVPF FSR0, Nobank_FSR ; Save the FSR for BSR values

        MOVPF WREG, WREG_TEMP ;

        MOVFP Bank_FSR, FSR0   ; Restore FSR value for other values

        MOVFP ALU_Temp, INDF0 ; Push ALUSTA value

        MOVFP WREG_TEMP, INDF0 ; Push WREG value

        MOVFP PCLATH, INDF0    ; Push PCLATH value

        MOVPF FSR0, Bank_FSR   ; Restore FSR value for other values

        MOVFP Nobank_FSR, FSR0 ;

        ;

        :                      ; Interrupt Service Routine (ISR) code

        ;

POP     CLRF ALUSTA, F         ; FSR0 has auto-decrement, does not affect status bits

        MOVFP Bank_FSR, FSR0   ; Restore FSR value for other values

        DECF FSR0, F           ;

        MOVFP INDF0, PCLATH    ; Pop PCLATH value

        MOVFP INDF0, WREG      ; Pop WREG value

        BSF       ALUSTA, FS1  ; FSR0 does not change

        MOVPF INDF0, ALU_Temp ; Pop ALUSTA value

        MOVPF FSR0, Bank_FSR   ; Restore FSR value for other values

        DECF Nobank_FSR, F     ;

        MOVFP Nobank_FSR, FSR0 ; Save the FSR for BSR values

        MOVFP ALU_Temp, ALUSTA ;

        MOVFP INDF0, BSR       ; No Status bits are affected

;

        RETFIE                 ; Return from interrupt (enable interrupts)

DS30289A-page 40                                                      1998 Microchip Technology Inc.
                                                                                PIC17C7XX

7.0 MEMORY ORGANIZATION                                   FIGURE 7-1: PROGRAM MEMORY MAP
                                                                               AND STACK
There are two memory blocks in the PIC17C7XX; pro-
gram memory and data memory. Each block has its                                 PC<15:0>
own bus, so that access to each block can occur during
the same oscillator cycle.                                CALL, RETURN                          16

The data memory can further be broken down into           RETFIE, RETLW
General Purpose RAM and the Special Function Reg-
isters (SFRs). The operation of the SFRs that control                           Stack Level 1
the "core" are described here. The SFRs used to con-
trol the peripheral modules are described in the section                        
discussing each individual peripheral module.
                                                                                Stack Level 16
7.1 Program Memory Organization
                                                                                Reset Vector        0000h
PIC17C7XX devices have a 16-bit program counter
capable of addressing a 64K x 16 program memory                                 INT Pin Interrupt Vector 0008h
space. The reset vector is at 0000h and the interrupt
vectors are at 0008h, 0010h, 0018h, and 0020h                                   Timer0 Interrupt Vector 0010h
(Figure 7-1).
                                                                                T0CKI Pin Interrupt Vector 0018h
7.1.1 PROGRAM MEMORY OPERATION
                                                                                Peripheral Interrupt Vector 0020h
The PIC17C7XX can operate in one of four possible                                                                            0021h
program memory configurations. The configuration is
selected by configuration bits. The possible modes        User Memory                               1FFFh
are:                                                        Space (1)
                                                                                                    (PIC17C752
Microprocessor                                                                                    PIC17C762)
Microcontroller
Extended Microcontroller                                                                          3FFFh
Protected Microcontroller
                                                                                                    (PIC17C756A
The microcontroller and protected microcontroller                                                    PIC17C766)
modes only allow internal execution. Any access
beyond the program memory reads unknown data.             Configuration Memory     FOSC0            FDFFh
The protected microcontroller mode also enables the          Space                 FOSC1            FE00h
code protection feature.                                                          WDTPS0
                                                                                  WDTPS1            FE01h
The extended microcontroller mode accesses both                                                     FE02h
the internal program memory as well as external pro-                                 PM0            FE03h
gram memory. Execution automatically switches                                     Reserved          FE04h
between internal and external memory. The 16-bits of                                                FE05h
address allow a program memory range of 64K-words.                                   PM1            FE06h
                                                                                  Reserved          FE07h
The microprocessor mode only accesses the exter-                                  Reserved          FE08h
nal program memory. The on-chip program memory is                                  BODEN            FE0Dh
ignored. The 16-bits of address allow a program mem-                                                FE0Eh
ory range of 64K-words. Microprocessor mode is the                                   PM2            FE0Fh
default mode of an unprogrammed device.                                                             FE10h
                                                                                Test EPROM          FF5Fh
The different modes allow different access to the con-                                              FF60h
figuration bits, test memory, and boot ROM. Table 7-1                            Boot ROM
lists which modes can access which areas in memory.                                                 FFFFh
Test Memory and Boot Memory are not required for
normal operation of the device. Care should be taken      Note 1: User memory space may be internal, external, or
to ensure that no unintended branches occur to these                   both. The memory configuration depends on the
areas.                                                                 processor mode.

1998 Microchip Technology Inc.                                                                    DS30289A-page 41
PIC17C7XX

TABLE 7-1: MODE MEMORY ACCESS                                                     The PIC17C7XX can operate in modes where the pro-
                                                                                  gram memory is off-chip. They are the microprocessor
Operating         Internal   Configuration Bits,                                  and extended microcontroller modes. The micropro-
   Mode           Program        Test Memory,                                     cessor mode is the default for an unprogrammed
                  Memory           Boot ROM                                       device.
                                   No Access
Microprocessor    No Access          Access                                       Regardless of the processor mode, data memory is
                    Access                                                        always on-chip.
Microcontroller     Access         No Access

Extended            Access           Access
Microcontroller

Protected
Microcontroller

FIGURE 7-2: MEMORY MAP IN DIFFERENT MODES

                            Microprocessor                                        Extended                       Microcontroller
                                  Mode                                            Microcontroller                     Modes
                                                                                  Mode
                  0000h                                                                                                      0000h
                                                                                        0000h
                                                                                                                           01FFFh   On-chip
                                                                                                   On-chip                   2000h
                                                                                                   Program                          Program
                                                                                                   Memory                           Memory
                                                                                     01FFFh

                         External                                    2000h                                                                        PROGRAM SPACE
                         Program
                         Memory

PIC17C752/762                                                                     External
                                                                                  Program
                                                                                  Memory

                  FFFFh                                                                                                    FE00h Config. Bits
                                                                                                                                     Test Memory
                                                                     FFFFh
                                                                               OFF-CHIP                                    FFFFh Boot ROM

                         OFF-CHIP                      ON-CHIP                                     ON-CHIP       OFF-CHIP           ON-CHIP

                                                       00h                                         00h                              00h           DATA SPACE
                                                               120h                                        120h                             120h

                                                       FFh 1FFh                                    FFh 1FFh                         FFh 1FFh
                                                        ON-CHIP                                     ON-CHIP                          ON-CHIP

                                  0000h                                    4000h            0000h  On-chip                  0000h   On-chip
                                                                                            3FFFh
                                             External                                              Program                 3FFFh    Program
                                             Program                                               Memory                  4000h    Memory
                                             Memory
                                                                                  External                                                        PROGRAM SPACE
PIC17C756A/766                                                                    Program
                                                                                  Memory
                                 FFFFh
                                                                     FFFFh                                                 FE00h Config. Bits
                                           OFF-CHIP                             OFF-CHIP                                             Test Memory

                                                                                                                           FFFFh Boot ROM

                                                       ON-CHIP                                     ON-CHIP       OFF-CHIP           ON-CHIP

                             00h                                                  00h                            00h                              DATA SPACE
                                      120h 220h 320h                                       120h 220h 320h                 120h 220h 320h

                             FFh 1FFh 2FFh 3FFh                                   FFh 1FFh 2FFh 3FFh             FFh 1FFh 2FFh 3FFh
                                          ON-CHIP                                            ON-CHIP                           ON-CHIP

DS30289A-page 42                                                                                                 1998 Microchip Technology Inc.
                                                                                        PIC17C7XX

7.1.2 EXTERNAL MEMORY INTERFACE                              In extended microcontroller mode, when the device is
                                                             executing out of internal memory, the control signals
When either microprocessor or extended microcontrol-         will continue to be active. That is, they indicate the
ler mode is selected, PORTC, PORTD and PORTE are             action that is occurring in the internal memory. The
configured as the system bus. PORTC and PORTD are            external memory access is ignored.
the multiplexed address/data bus and PORTE<2:0> is
for the control signals. External components are             This following selection is for use with Microchip
needed to demultiplex the address and data. This can         EPROMs. For interfacing to other manufacturers mem-
be done as shown in Figure 7-4. The waveforms of             ory, please refer to the electrical specifications of the
address and data are shown in Figure 7-3. For com-           desired PIC17C7XX device, as well as the desired
plete timings, please refer to the electrical specification  memory device to ensure compatibility.
section.
                                                             TABLE 7-2: EPROM MEMORY ACCESS
FIGURE 7-3:  EXTERNAL PROGRAM                                                     TIME ORDERING SUFFIX
             MEMORY ACCESS
             WAVEFORMS                                               PIC17C7XX Instruction

        Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1                                   Oscillator  Cycle

                                                                     Frequency Time (TCY)       EPROM Suffix

    AD  Address out Data in  Address out Data out                    8 MHz       500 ns         -25
<15:0>                                     Write cycle
        '1'                                                          16 MHz      250 ns         -15
   ALE           Read cycle
    OE                                                               20 MHz      200 ns         -10
   WR

                                                                     25 MHz      160 ns         -70

The system bus requires that there is no bus conflict                33 MHz      121 ns         (1)
(minimal leakage), so the output value (address) will be
capacitively held at the desired value.                      Note 1: The access times for this requires the use of
                                                                         fast SRAMs.
As the speed of the processor increases, external
EPROM memory with faster access time must be used.           The electrical specifications now include timing specifi-
Table 7-2 lists external memory speed requirements for       cations for the memory interface with PIC17LCXXX
a given PIC17C7XX device frequency.                          devices. These specifications reflect the capability of
                                                             the device by characterization. Please validate your
                                                             design with these timings.

FIGURE 7-4: TYPICAL EXTERNAL PROGRAM MEMORY CONNECTION DIAGRAM

                                                                   AD15-AD0

                                                             A15-A0          Memory(3)          Memory(3)
                                                                                (MSB)              (LSB)
              AD7-AD0             373(3)
        PIC17CXXX                 373(3)                                     Ax-A0              Ax-A0

            AD15-AD8                                                         D7-D0              D7-D0
                     ALE                                                     CE                 CE
                                                                             OE WR (2)          OE WR(2)
                   I/O(1)
                                                                     138(1)

                      OE
                     WR

Note 1: Use of I/O pins is only required for paged memory.
        2: This signal is unused for ROM and EPROM devices.
        3: 16-bit wide devices are now common and could be used instead of 8-bit wide devices.

1998 Microchip Technology Inc.                                                                DS30289A-page 43
PIC17C7XX                                                     7.2.1 GENERAL PURPOSE REGISTER (GPR)

7.2 Data Memory Organization                                  All devices have some amount of GPR area. The GPRs
                                                              are 8-bits wide. When the GPR area is greater than
Data memory is partitioned into two areas. The first is       232, it must be banked to allow access to the additional
the General Purpose Registers (GPR) area, and the             memory space.
second is the Special Function Registers (SFR) area.
The SFRs control and provide status of device opera-          All the PIC17C7XX devices have banked memory in
tion.                                                         the GPR area. To facilitate switching between these
                                                              banks, the MOVLR bank instruction has been added to
Portions of data memory are banked, this occurs in            the instruction set. GPRs are not initialized by a
both areas. The GPR area is banked to allow greater           Power-on Reset and are unchanged on all other resets.
than 232 bytes of general purpose RAM.
                                                              7.2.2 SPECIAL FUNCTION REGISTERS (SFR)
Banking requires the use of control bits for bank selec-
tion. These control bits are located in the Bank Select       The SFRs are used by the CPU and peripheral func-
Register (BSR). If an access is made to the unbanked          tions to control the operation of the device (Figure 7-5).
region, the BSR bits are ignored. Figure 7-5 shows the        These registers are static RAM.
data memory map organization.
                                                              The SFRs can be classified into two sets, those asso-
Instructions MOVPF and MOVFP provide the means to             ciated with the "core" function and those related to the
move values from the peripheral area ("P") to any loca-       peripheral functions. Those registers related to the
tion in the register file ("F"), and vice-versa. The defini-  "core" are described here, while those related to a
tion of the "P" range is from 0h to 1Fh, while the "F"        peripheral feature are described in the section for each
range is 0h to FFh. The "P" range has six more loca-          peripheral feature.
tions than peripheral registers which can be used as
General Purpose Registers. This can be useful in              The peripheral registers are in the banked portion of
some applications where variables need to be copied           memory, while the core registers are in the unbanked
to other locations in the general purpose RAM (such as        region. To facilitate switching between the peripheral
saving status information during an interrupt).               banks, the MOVLB bank instruction has been provided.

The entire data memory can be accessed either
directly or indirectly (through file select registers FSR0
and FSR1) (Section 7.4). Indirect addressing uses the
appropriate control bits of the BSR for accesses into
the banked areas of data memory. The BSR is
explained in greater detail in Section 7.8.

DS30289A-page 44                                              1998 Microchip Technology Inc.
                                                                                     PIC17C7XX

FIGURE 7-5: PIC17C7XX REGISTER FILE MAP

Addr  Unbanked    Bank 1 (1)       Bank 2 (1)   Bank 3 (1)    Bank 4 (1) Bank 5 (1)  Bank 6 (1)  Bank 7 (1)  Bank 8 (1, 4)
00h     INDF0       DDRC              TMR1      PW1DCL                                SSPADD     PW3DCL         DDRH
01h      FSR0      PORTC              TMR2      PW2DCL        PIR2  DDRF             SSPCON1     PW3DCH        PORTH
02h       PCL       DDRD             TMR3L      PW1DCH                               SSPCON2                     DDRJ
03h    PCLATH      PORTD             TMR3H      PW2DCH        PIE2  PORTF            SSPSTAT        CA3L        PORTJ
04h    ALUSTA       DDRE               PR1                                            SSPBUF       CA3H             --
05h     T0STA      PORTE               PR2         CA2L       --    DDRG                            CA4L            --
06h                  PIR1                          CA2H                                    --      CA4H             --
07h    CPUSTA        PIE1         PR3L/CA1L       TCON1       RCSTA2 PORTG                 --     TCON3             --
08h     INTSTA                    PR3H/CA1H       TCON2                                    --
09h     INDF1                                                 RCREG2 ADCON0                            --
0Ah      FSR1                                  Bank 3 (2, 3)
0Bh     WREG                                                  TXSTA2 ADCON1
0Ch     TMR0L
0Dh     TMR0H                                                 TXREG2 ADRESL
0Eh   TBLPTRL
0Fh   TBLPTRH                                                 SPBRG2 ADRESH

10h       BSR     Bank 1 (2) Bank 2 (2, 3)
11h
12h     Bank 0
13h     PORTA
14h      DDRB
15h     PORTB
16h    RCSTA1
17h    RCREG1
       TXSTA1
18h    TXREG1
19h    SPBRG1
1Ah   Unbanked
        PRODL
1Fh    PRODH
       General
20h    Purpose

         RAM

      Bank 0 (2)

      General     General         General      General
      Purpose     Purpose         Purpose      Purpose

        RAM         RAM             RAM          RAM

FFh

Note 1: SFR file locations 10h - 17h are banked. The lower nibble of the BSR specifies the bank. All unbanked SFRs
            ignore the Bank Select Register (BSR) bits.

       2: General Purpose Registers (GPR) locations 20h - FFh, 120h - 1FFh, 220h - 2FFh, and 320h - 3FFh are
            banked. The upper nibble of the BSR specifies this bank. All other GPRs ignore the Bank Select Register
            (BSR) bits.

       3: RAM bank 3 is not implemented on the PIC17C752 and the PIC17C762. Reading any unimplemented regis-
            ter reads `0's.

       4: Bank 8 is only implemented on the PIC17C76X devices.

1998 Microchip Technology Inc.                                                                 DS30289A-page 45
PIC17C7XX

TABLE 7-3: SPECIAL FUNCTION REGISTERS

Address Name          Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2                                     Bit 1  Bit 0    Value on  MCLR,
                                                                                                                POR,     WDT
                                                                                                                BOR

Unbanked              Uses contents of FSR0 to address data memory (not a physical register)                  ---- ---- ---- ----
  00h INDF0
  01h FSR0            Indirect data memory address pointer 0                                                  xxxx xxxx uuuu uuuu
  02h PCL
  03h(1) PCLATH       Low order 8-bits of PC                                                                  0000 0000 0000 0000
  04h ALUSTA
  05h T0STA           Holding register for upper 8-bits of PC                                                 0000 0000 uuuu uuuu

                      FS3   FS2               FS1        FS0       OV     Z                   DC     C        1111 xxxx 1111 uuuu

                      INTEDG T0SE             T0CS       T0PS3 T0PS2 T0PS1                    T0PS0  -- 0000 000- 0000 000-

06h(2)  CPUSTA        --    --                STKAV GLINTD         TO     PD                  POR    BOR      --11 11qq --11 qquu
07h     INTSTA                                                                                       INTE     0000 0000 0000 0000
08h     INDF1         PEIF T0CKIF T0IF                   INTF      PEIE T0CKIE                T0IE            ---- ---- ---- ----
09h     FSR1                                                                                                  xxxx xxxx uuuu uuuu
0Ah     WREG          Uses contents of FSR1 to address data memory (not a physical register)                  xxxx xxxx uuuu uuuu
0Bh     TMR0L                                                                                                 xxxx xxxx uuuu uuuu
0Ch     TMR0H         Indirect data memory address pointer 1                                                  xxxx xxxx uuuu uuuu
0Dh     TBLPTRL       Working register                                                                        0000 0000 0000 0000
0Eh     TBLPTRH       TMR0 register; low byte                                                                 0000 0000 0000 0000
0Fh     BSR                                                                                                   0000 0000 0000 0000
                      TMR0 register; high byte
                      Low byte of program memory table pointer
                      High byte of program memory table pointer
                      Bank select register

Bank 0

10h     PORTA (4,6)   RBPU  --     RA5/TX1/ RA4/RX1/ RA3/SDI/             RA2/SS/  RA1/T0CKI         RA0/INT  0-xx 11xx 0-uu 11uu
                                                                            SCL
                                              CK1        DT1       SDA

11h DDRB              Data direction register for PORTB                                                       1111 1111 1111 1111

12h     PORTB (4)     RB7/  RB6/               RB5/        RB4/     RB3/   RB2/               RB1/   RB0/     xxxx xxxx uuuu uuuu
                      SDO   SCK               TCLK3      TCLK12    PWM2   PWM1                CAP2   CAP1

13h RCSTA1            SPEN RX9                SREN       CREN      --     FERR                OERR   RX9D 0000 -00x 0000 -00u

14h RCREG1            Serial port receive register                                                            xxxx xxxx uuuu uuuu

15h TXSTA1            CSRC TX9                TXEN       SYNC      --     --                  TRMT   TX9D 0000 --1x 0000 --1u

16h TXREG1            Serial Port Transmit Register (for USART1)                                              xxxx xxxx uuuu uuuu

17h SPBRG1            Baud Rate Generator Register (for USART1)                                               0000 0000 0000 0000

Bank 1  DDRC (5)      Data direction register for PORTC                                                       1111 1111 1111 1111
   10h  PORTC (4, 5)                                                                                          xxxx xxxx uuuu uuuu
   11h  DDRD (5)      RC7/  RC6/              RC5/       RC4/      RC3/   RC2/                RC1/   RC0/     1111 1111 1111 1111
   12h  PORTD (4, 5)  AD7   AD6               AD5        AD4       AD3    AD2                 AD1    AD0      xxxx xxxx uuuu uuuu
   13h  DDRE (5)                                                                                              ---- 1111 ---- 1111
   14h                Data direction register for PORTD            RD3/   RD2/                RD1/   RD0/
                                                                   AD11   AD10                AD9    AD8
                      RD7/  RD6/              RD5/       RD4/
                      AD15  AD14              AD13       AD12

                      Data direction register for PORTE

15h     PORTE (4, 5)  --    --                --               --  RE3/   RE2/WR   RE1/OE RE0/ALE ---- xxxx ---- uuuu
                                                                   CAP4

16h PIR1              RBIF TMR3IF TMR2IF TMR1IF CA2IF CA1IF                                   TX1IF  RC1IF x000 0010 u000 0010

17h PIE1              RBIE TMR3IE TMR2IE TMR1IE CA2IE CA1IE                                   TX1IE  RC1IE 0000 0000 0000 0000

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

Note1: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for PC<15:8>
            whose contents are updated from or transferred to the upper byte of the program counter.

       2: The TO and PD status bits in CPUSTA are not affected by a MCLR reset.
       3: Bank 8 and associated registers are only implemented on the PIC17C76X devices.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or extended microcontroller mode, the operation of this

            port does not rely on these registers.
       6: On any device reset, these pins are configured as inputs.

DS30289A-page 46                                                                                     1998 Microchip Technology Inc.
                                                                                               PIC17C7XX

TABLE 7-3: SPECIAL FUNCTION REGISTERS (Cont.'d)

Address Name        Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2                                Bit 1   Bit 0  Value on  MCLR,
                                                                                                        POR,     WDT
                                                                                                        BOR

Bank 2   TMR1       Timer1's register                                                                 xxxx xxxx uuuu uuuu
   10h   TMR2       Timer2's register                                                                 xxxx xxxx uuuu uuuu
   11h   TMR3L      Timer3's register; low byte                                                       xxxx xxxx uuuu uuuu
   12h   TMR3H      Timer3's register; high byte                                                      xxxx xxxx uuuu uuuu
   13h   PR1        Timer1's period register                                                          xxxx xxxx uuuu uuuu
   14h   PR2        Timer2's period register                                                          xxxx xxxx uuuu uuuu
   15h   PR3L/CA1L  Timer3's period register - low byte/capture1 register; low byte                   xxxx xxxx uuuu uuuu
   16h   PR3H/CA1H  Timer3's period register - high byte/capture1 register; high byte                 xxxx xxxx uuuu uuuu
   17h

Bank 3   PW1DCL     DC1           DC0   --                 --   --       --                --      -- xx-- ---- uu-- ----
   10h   PW2DCL                                            --   --       --                --      -- xx0- ---- uu0- ----
   11h   PW1DCH     DC1           DC0 TM2PW2             DC6   DC5      DC4               DC3     DC2 xxxx xxxx uuuu uuuu
   12h   PW2DCH                                          DC6   DC5      DC4               DC3     DC2 xxxx xxxx uuuu uuuu
   13h   CA2L       DC9           DC8   DC7
   14h   CA2H                                          CA1ED0  T16   TMR3CS            TMR2CS                 xxxx xxxx uuuu uuuu
   15h   TCON1      DC9           DC8   DC7                                                                   xxxx xxxx uuuu uuuu
   16h                                                                                         TMR1CS 0000 0000 0000 0000
                    Capture2 low byte

                    Capture2 high byte

                    CA2ED1 CA2ED0 CA1ED1

17h TCON2           CA2OVF CA1OVF PWM2ON PWM1ON CA1/PR3 TMR3ON TMR2ON TMR1ON 0000 0000 0000 0000

Bank 4:

10h      PIR2       SSPIF BCLIF         ADIF           --      CA4IF CA3IF             TX2IF   RC2IF 000- 0010 000- 0010

11h      PIE2       SSPIE BCLIE ADIE                   --      CA4IE CA3IE             TX2IE   RC2IE 000- 0000 000- 0000

12h      Unimple-   --            --    --             --      --    --                --      -- ---- ---- ---- ----

         mented

13h      RCSTA2     SPEN RX9            SREN           CREN    --    FERR              OERR    RX9D 0000 -00x 0000 -00u

14h      RCREG2     Serial Port Receive Register for USART2                                           xxxx xxxx uuuu uuuu

15h      TXSTA2     CSRC TX9            TXEN           SYNC    --    --                TRMT    TX9D 0000 --1x 0000 --1u

16h      TXREG2     Serial Port Transmit Register for USART2                                          xxxx xxxx uuuu uuuu

17h      SPBRG2     Baud Rate Generator for USART2                                                    0000 0000 0000 0000

Bank 5:

10h      DDRF       Data Direction Register for PORTF                                                 1111 1111 1111 1111

11h      PORTF (4)  RF7/          RF6/  RF5/           RF4/    RF3/  RF2/              RF1/    RF0/   0000 0000 0000 0000
                    AN11          AN10  AN9            AN8     AN7   AN6               AN5     AN4

12h      DDRG       Data Direction Register for PORTG                                                 1111 1111 1111 1111

13h      PORTG (4)  RG7/ RG6/           RG5/           RG4/    RG3/  RG2/              RG1/    RG0/
                                                                                               AN3 xxxx 0000 uuuu 0000
                    TX2/CK2 RX2/DT2 PWM3               CAP3    AN0   AN1               AN2

14h      ADCON0     CHS3 CHS2 CHS1                     CHS0    -- GO/DONE              --      ADON 0000 -0-0 0000 -0-0

15h      ADCON1     ADCS1 ADCS0 ADFM                   --      PCFG3 PCFG2 PCFG1 PCFG0 000- 0000 000- 0000

16h      ADRESL     A/D Result Register low byte                                                      xxxx xxxx uuuu uuuu

17h      ADRESH     A/D Result Register high byte                                                     xxxx xxxx uuuu uuuu

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

Note1: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for PC<15:8>
            whose contents are updated from or transferred to the upper byte of the program counter.

       2: The TO and PD status bits in CPUSTA are not affected by a MCLR reset.
       3: Bank 8 and associated registers are only implemented on the PIC17C76X devices.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or extended microcontroller mode, the operation of this

            port does not rely on these registers.
       6: On any device reset, these pins are configured as inputs.

1998 Microchip Technology Inc.                                                                      DS30289A-page 47
PIC17C7XX

TABLE 7-3: SPECIAL FUNCTION REGISTERS (Cont.'d)

Address Name           Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2                            Bit 1  Bit 0  Value on  MCLR,
                                                                                                      POR,     WDT
                                                                                                      BOR

Bank 6:     SSPADD     SSP Address register in I2C slave mode. SSP baud rate reload register in I2C master mode. 0000 0000 0000 0000
10h

11h         SSPCON1    WCOL SSPOV SSPEN                   CKP   SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000

12h         SSPCON2    GCEN AKSTAT AKDT                   AKEN RCEN              PEN  RSEN   SEN 0000 0000 0000 0000

13h         SSPSTAT    SMP   CKE           D/A            P     S                R/W  UA     BF 0000 0000 0000 0000

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

15h         Unimple-   --    --            --             --    --               --   --     -- ---- ---- ---- ----

            mented

16h         Unimple-   --    --            --             --    --               --   --     -- ---- ---- ---- ----

            mented

17h         Unimple-   --    --            --             --    --               --   --     -- ---- ---- ---- ----

            mented

Bank 7:

10h         PW3DCL     DC1   DC0 TM2PW3                   -     -                -    -      -      xx0- ---- uu0- ----

11h         PW3DCH     DC9   DC8           DC7            DC6   DC5              DC4  DC3    DC2 xxxx xxxx uuuu uuuu

12h         CA3L       Capture3 low byte                                                            xxxx xxxx uuuu uuuu

13h         CA3H       Capture3 high byte                                                           xxxx xxxx uuuu uuuu

14h         CA4L       Capture4 low byte                                                            xxxx xxxx uuuu uuuu

15h         CA4H       Capture4 high byte                                                           xxxx xxxx uuuu uuuu

16h         TCON3      -- CA4OVF CA3OVF CA4ED1 CA4ED0 CA3ED1 CA3ED0 PWM3ON -000 0000 -000 0000

17h         Unimple-   --    --            --             --     --               --   --    -- ---- ---- ---- ----

            mented                                              RH3              RH2  RH1

Bank 8:(3)                                                      RJ3              RJ2  RJ1
                                                                 --               --   --
10h(3) DDRH            Data direction register for PORTH         --               --   --           1111 1111 1111 1111
                                                                 --               --   --           xxxx xxxx uuuu uuuu
11h(3)      PORTH (4)  RH7/  RH6/          RH5/           RH4/   --               --   --    RH0
                       AN15  AN14          AN13           AN12

12h(3)      DDRJ       Data direction register for PORTJ                                                1111 1111 1111 1111
13h(3)      PORTJ (4)                                                                        RJ0 xxxx xxxx uuuu uuuu
14h(3)                 RJ7   RJ6           RJ5            RJ4                                 -- ---- ---- ---- ----
            Unimple-
15h(3)      mented     --    --            --             --

16h(3)      Unimple-   --    --            --             --                                 -- ---- ---- ---- ----
            mented
17h(3)                 --    --            --             --                                 -- ---- ---- ---- ----
            Unimple-
            mented     --    --            --             --                                 -- ---- ---- ---- ----

            Unimple-
            mented

Unbanked

18h PRODL              Low Byte of 16-bit Product (8 x 8 Hardware Multiply)                         xxxx xxxx uuuu uuuu

19h PRODH              High Byte of 16-bit Product (8 x 8 Hardware Multiply)                        xxxx xxxx uuuu uuuu

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

Note1: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for PC<15:8>
            whose contents are updated from or transferred to the upper byte of the program counter.

       2: The TO and PD status bits in CPUSTA are not affected by a MCLR reset.
       3: Bank 8 and associated registers are only implemented on the PIC17C76X devices.
       4: This is the value that will be in the port output latch.
       5: When the device is configured for microprocessor or extended microcontroller mode, the operation of this

            port does not rely on these registers.
       6: On any device reset, these pins are configured as inputs.

DS30289A-page 48                                                                              1998 Microchip Technology Inc.
                                                                                   PIC17C7XX

7.2.2.1 ALU STATUS REGISTER (ALUSTA)                         It is recommended, therefore, that only BCF, BSF, SWAPF
                                                             and MOVWF instructions be used to alter the ALUSTA
The ALUSTA register contains the status bits of the          register because these instructions do not affect any
Arithmetic and Logic Unit and the mode control bits for      status bits. To see how other instructions affect the sta-
the indirect addressing register.                            tus bits, see the "Instruction Set Summary."

As with all the other registers, the ALUSTA register can         Note 1: The C and DC bits operate as a borrow
be the destination for any instruction. If the ALUSTA                        and digit borrow bit, respectively, in sub-
register is the destination for an instruction that affects                  traction. See the SUBLW and SUBWF
the Z, DC, C, or OV bits, then the write to these three                      instructions for examples.
bits is disabled. These bits are set or cleared according
to the device logic. Therefore, the result of an instruc-        Note 2: The overflow bit will be set if the 2's com-
tion with the ALUSTA register as destination may be                          plement result exceeds +127 or is less
different than intended.                                                     than -128.

For example, the CLRF ALUSTA, F instruction will clear       The Arithmetic and Logic Unit (ALU) is capable of car-
the upper four bits and set the Z bit. This leaves the       rying out arithmetic or logical operations on two oper-
ALUSTA register as 0000u1uu (where u = unchanged).           ands or a single operand. All single operand
                                                             instructions operate either on the WREG register or the
                                                             given file register. For two operand instructions, one of
                                                             the operands is the WREG register and the other is
                                                             either a file register or an 8-bit immediate constant.

FIGURE 7-6: ALUSTA REGISTER (ADDRESS: 04h, UNBANKED)

R/W - 1 R/W - 1 R/W - 1 R/W - 1 R/W - x        R/W - x       R/W - x R/W - x
                                                   Z
FS3 FS2 FS1 FS0                   OV                         DC              C     R = Readable bit
                                                                                   W = Writable bit
bit7                                                                         bit0  -n = Value at POR reset

                                                                                        (x = unknown)

bit 7-6:  FS3:FS2: FSR1 Mode Select bits
          00 = Post auto-decrement FSR1 value
          01 = Post auto-increment FSR1 value
          1x = FSR1 value does not change

bit 5-4:  FS1:FS0: FSR0 Mode Select bits
          00 = Post auto-decrement FSR0 value
          01 = Post auto-increment FSR0 value
          1x = FSR0 value does not change

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

bit 2:    Z: Zero bit
          1 = The result of an arithmetic or logic operation is zero
          0 = The results of an arithmetic or logic operation is not zero

bit 1:    DC: Digit carry/borrow bit
          For ADDWF and ADDLW instructions.
          1 = A carry-out from the 4th low order bit of the result occurred
          0 = No carry-out from the 4th low order bit of the result
          Note: For borrow the polarity is reversed.

bit 0:    C: carry/borrow bit
          For ADDWF and ADDLW instructions. Note that a subtraction is executed by adding the two's complement
          of the second operand.
          For rotate (RRCF, RLCF) instructions, this bit is loaded with either the high or low order bit of the source
          register.
          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: For borrow the polarity is reversed.

1998 Microchip Technology Inc.                                                   DS30289A-page 49
PIC17C7XX                                                       The POR bit allows the differentiation between a
                                                                Power-on Reset, external MCLR reset, or a WDT
7.2.2.2 CPU STATUS REGISTER (CPUSTA)                            Reset. The BOR bit indicates if a Brown-out Reset
                                                                occurred.
The CPUSTA register contains the status and control
bits for the CPU. This register has a bit that is used to           Note 1: The BOR status bit is a don't care and is
globally enable/disable interrupts. If only a specific                          not necessarily predictable if the
interrupt is desired to be enabled/disabled, please refer                       brown-out circuit is disabled (when the
to the INTerrupt STAtus (INTSTA) register and the                               BODEN bit in the Configuration word is
Peripheral Interrupt Enable (PIE) registers. The                                programmed).
CPUSTA register also indicates if the stack is available
and contains the Power-down (PD) and Time-out (TO)
bits. The TO, PD, and STKAV bits are not writable.
These bits are set and cleared according to device
logic. Therefore, the result of an instruction with the
CPUSTA register as destination may be different than
intended.

FIGURE 7-7: CPUSTA REGISTER (ADDRESS: 06h, UNBANKED)

  U-0   U - 0 R - 1 R/W - 1 R - 1                          R-1  R/W - 0 R/W - 1          R = Readable bit
    --   -- STKAV GLINTD TO                                 PD   POR BOR                 W = Writable bit
                                                                                         U = Unimplemented bit,
bit7                                                                               bit0
                                                                                              Read as `0'
                                                                                         - n = Value at POR reset

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

bit 5:  STKAV: Stack Available bit
        This bit indicates that the 4-bit stack pointer value is Fh, or has rolled over from Fh  0h (stack overflow).
        1 = Stack is available
        0 = Stack is full, or a stack overflow may have occurred (Once this bit has been cleared by a

            stack overflow, only a device reset will set this bit)

bit 4:  GLINTD: Global Interrupt Disable bit
        This bit disables all interrupts. When enabling interrupts, only the sources with their enable bits set can
        cause an interrupt.
        1 = Disable all interrupts
        0 = Enables all un-masked interrupts

bit 3:  TO: WDT Time-out Status bit
        1 = After power-up or by a CLRWDT instruction
        0 = A Watchdog Timer time-out occurred

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

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

bit 0:  BOR: Brown-out Reset Status bit
        When BODEN configuration bit is set (enabled):
        1 = No Brown-out Reset occurred
        0 = A Brown-out Reset occurred (must be set by software)
        When BODEN configuration bit is clear (disabled):
        Don't care

DS30289A-page 50                                                                         1998 Microchip Technology Inc.
                                                                                       PIC17C7XX

7.2.2.3 TMR0 STATUS/CONTROL REGISTER
               (T0STA)

This register contains various control bits. Bit7
(INTEDG) is used to control the edge upon which a sig-
nal on the RA0/INT pin will set the RA0/INT interrupt
flag. The other bits configure Timer0, it's prescaler and
clock source.

FIGURE 7-8: T0STA REGISTER (ADDRESS: 05h, UNBANKED)

R/W - 0 R/W - 0  R/W - 0          R/W - 0  R/W - 0         R/W - 0  R/W - 0  U-0       R = Readable bit
INTEDG T0SE       T0CS            T0PS3    T0PS2           T0PS1    T0PS0     --       W = Writable bit
                                                                                       U = Unimplemented,
bit7                                                                             bit0
                                                                                            reads as `0'
                                                                                       -n = Value at POR reset

bit 7:  INTEDG: RA0/INT Pin Interrupt Edge Select bit
        This bit selects the edge upon which the interrupt is detected.
        1 = Rising edge of RA0/INT pin generates interrupt
        0 = Falling edge of RA0/INT pin generates interrupt

bit 6:  T0SE: Timer0 External Clock Input Edge Select bit
        This bit selects the edge upon which TMR0 will increment.
        When T0CS = 0 (External Clock)
        1 = Rising edge of RA1/T0CKI pin increments TMR0 and/or sets the T0CKIF bit
        0 = Falling edge of RA1/T0CKI pin increments TMR0 and/or sets a T0CKIF bit
        When T0CS = 1 (Internal Clock)
        Don't care

bit 5:  T0CS: Timer0 Clock Source Select bit
        This bit selects the clock source for Timer0.
        1 = Internal instruction clock cycle (TCY)
        0 = External clock input on the T0CKI pin

bit 4-1: T0PS3:T0PS0: Timer0 Prescale Selection bits
            These bits select the prescale value for Timer0.

        T0PS3:T0PS0 Prescale Value

        0000                      1:1
        0001                      1:2
        0010                      1:4
        0011                      1:8
        0100                      1:16
        0101                      1:32
        0110                      1:64
        0111                      1:128
        1xxx                      1:256

bit 0: Unimplemented: Read as '0'

1998 Microchip Technology Inc.                                                       DS30289A-page 51
PIC17C7XX                                                          Note 1: There is not a status bit for stack under-
                                                                               flow. The STKAV bit can be used to detect
7.3 Stack Operation                                                            the underflow which results in the stack
                                                                               pointer being at the top of stack.
PIC17C7XX devices have a 16 x 16-bit hardware stack
(Figure 7-1). The stack is not part of either the program          Note 2: There are no instruction mnemonics
or data memory space, and the stack pointer is neither                         called PUSH or POP. These are actions
readable nor writable. The PC (Program Counter) is                             that occur from the execution of the CALL,
"PUSHed" onto the stack when a CALL or LCALL                                   RETURN, RETLW, and RETFIE instruc-
instruction is executed or an interrupt is acknowledged.                       tions, or the vectoring to an interrupt vec-
The stack is "POPed" in the event of a RETURN, RETLW,                          tor.
or a RETFIE instruction execution. PCLATH is not
affected by a "PUSH" or a "POP" operation.                         Note 3: After a reset, if a "POP" operation occurs
                                                                               before a "PUSH" operation, the STKAV bit
The stack operates as a circular buffer, with the stack                        will be cleared. This will appear as if the
pointer initialized to '0' after all resets. There is a stack                  stack is full (underflow has occurred). If a
available bit (STKAV) to allow software to ensure that                         "PUSH" operation occurs next (before
the stack will not overflow. The STKAV bit is set after a                      another "POP"), the STKAV bit will be
device reset. When the stack pointer equals Fh, STKAV                          locked clear. Only a device reset will
is cleared. When the stack pointer rolls over from Fh to                       cause this bit to set.
0h, the STKAV bit will be held clear until a device reset.
                                                               After the device is "PUSHed" sixteen times (without a
                                                               "POP"), the seventeenth push overwrites the value
                                                               from the first push. The eighteenth push overwrites the
                                                               second push (and so on).

DS30289A-page 52                                                1998 Microchip Technology Inc.
                                                                              PIC17C7XX

7.4 Indirect Addressing                                     7.4.2 INDIRECT ADDRESSING OPERATION

Indirect addressing is a mode of addressing data            The indirect addressing capability has been enhanced
memory where the data memory address in the                 over that of the PIC16CXX family. There are two con-
instruction is not fixed. That is, the register that is to  trol bits associated with each FSR register. These two
be read or written can be modified by the program.          bits configure the FSR register to:
This can be useful for data tables in the data memory.
Figure 7-9 shows the operation of indirect addressing.       Auto-decrement the value (address) in the FSR
This depicts the moving of the value to the data mem-          after an indirect access
ory address specified by the value of the FSR register.
                                                             Auto-increment the value (address) in the FSR
Example 7-1 shows the use of indirect addressing to            after an indirect access
clear RAM in a minimum number of instructions. A
similar concept could be used to move a defined num-         No change to the value (address) in the FSR after
ber of bytes (block) of data to the USART transmit reg-        an indirect access
ister (TXREG). The starting address of the block of
data to be transmitted could easily be modified by the      These control bits are located in the ALUSTA register.
program.                                                    The FSR1 register is controlled by the FS3:FS2 bits
                                                            and FSR0 is controlled by the FS1:FS0 bits.
FIGURE 7-9: INDIRECT ADDRESSING
                                                            When using the auto-increment or auto-decrement
                                                 RAM        features, the effect on the FSR is not reflected in the
                                                            ALUSTA register. For example, if the indirect address
Instruction        Address                                  causes the FSR to equal '0', the Z bit will not be set.
Executed
                         8                                  If the FSR register contains a value of 0h, an indirect
           Opcode             File = INDFx                  read will read 0h (Zero bit is set) while an indirect write
                                                            will be equivalent to a NOP (status bits are not
Instruction        88                       FSR             affected).
Fetched              File
                                                            Indirect addressing allows single cycle data transfers
          Opcode                                            within the entire data space. This is possible with the
                                                            use of the MOVPF and MOVFP instructions, where either
                                                            'p' or 'f' is specified as INDF0 (or INDF1).

                                                            If the source or destination of the indirect address is in
                                                            banked memory, the location accessed will be deter-
                                                            mined by the value in the BSR.

                                                            A simple program to clear RAM from 20h - FFh is
                                                            shown in Example 7-1.

                                                            EXAMPLE 7-1: INDIRECT ADDRESSING

7.4.1 INDIRECT ADDRESSING REGISTERS                         MOVLW 0x20        ;

The PIC17C7XX has four registers for indirect               MOVWF FSR0        ; FSR0 = 20h
addressing. These registers are:
                                                            BCF ALUSTA, FS1 ; Increment FSR
INDF0 and FSR0
INDF1 and FSR1                                            BSF ALUSTA, FS0 ; after access

Registers INDF0 and INDF1 are not physically imple-         BCF ALUSTA, C ; C = 0
mented. Reading or writing to these registers acti-
vates indirect addressing, with the value in the            MOVLW END_RAM + 1 ;
corresponding FSR register being the address of the
data. The FSR is an 8-bit register and allows address-      LP CLRF INDF0, F  ; Addr(FSR) = 0
ing anywhere in the 256-byte data memory address
range. For banked memory, the bank of memory                CPFSEQ FSR0       ; FSR0 = END_RAM+1?
accessed is specified by the value in the BSR.
                                                            GOTO LP           ; NO, clear next
If file INDF0 (or INDF1) itself is read indirectly via an
FSR, all '0's are read (Zero bit is set). Similarly, if     :                 ; YES, All RAM is
INDF0 (or INDF1) is written to indirectly, the operation
will be equivalent to a NOP, and the status bits are not    :                 ; cleared
affected.

1998 Microchip Technology Inc.                                                 DS30289A-page 53
PIC17C7XX

7.5 Table Pointer (TBLPTRL and
          TBLPTRH)

File registers TBLPTRL and TBLPTRH form a 16-bit
pointer to address the 64K program memory space.
The table pointer is used by instructions TABLWT and
TABLRD.

The TABLRD and the TABLWT instructions allow transfer
of data between program and data space. The table
pointer serves as the 16-bit address of the data word
within the program memory. For a more complete
description of these registers and the operation of Table
Reads and Table Writes, see Section 8.0.

7.6 Table Latch (TBLATH, TBLATL)

The table latch (TBLAT) is a 16-bit register, with
TBLATH and TBLATL referring to the high and low
bytes of the register. It is not mapped into data or pro-
gram memory. The table latch is used as a temporary
holding latch during data transfer between program
and data memory (see TABLRD, TABLWT, TLRD and
TLWT instruction descriptions). For a more complete
description of these registers and the operation of Table
Reads and Table Writes, see Section 8.0.

DS30289A-page 54                                           1998 Microchip Technology Inc.
7.7 Program Counter Module                                               PIC17C7XX

The Program Counter (PC) is a 16-bit register. PCL, the     Using Figure 7-10, the operations of the PC and
low byte of the PC, is mapped in the data memory. PCL       PCLATH for different instructions are as follows:
is readable and writable just as is any other register.
PCH is the high byte of the PC and is not directly          a) LCALL instructions:
addressable. Since PCH is not mapped in data or pro-              An 8-bit destination address is provided in the
gram memory, an 8-bit register PCLATH (PC high                    instruction (opcode). PCLATH is unchanged.
latch) is used as a holding latch for the high byte of the        PCLATH  PCH
PC. PCLATH is mapped into data memory. The user                   Opcode<7:0>  PCL
can read or write PCH through PCLATH.
                                                            b) Read instructions on PCL:
The 16-bit wide PC is incremented after each instruc-             Any instruction that reads PCL.
tion fetch during Q1 unless:                                      PCL  data bus  ALU or destination
                                                                  PCH  PCLATH
Modified by a GOTO, CALL, LCALL, RETURN, RETLW,
   or RETFIE instruction                                    c) Write instructions on PCL:
                                                                  Any instruction that writes to PCL.
Modified by an interrupt response                               8-bit data  data bus  PCL
Due to destination write to PCL by an instruction               PCLATH  PCH

"Skips" are equivalent to a forced NOP cycle at the         d) Read-Modify-Write instructions on PCL:
skipped address.                                                  Any instruction that does a read-write-modify
                                                                  operation on PCL, such as ADDWF PCL.
Figure 7-10 and Figure 7-11 show the operation of the             Read: PCL  data bus  ALU
program counter for various situations.                           Write: 8-bit result  data bus  PCL
                                                                              PCLATH  PCH
FIGURE 7-10: PROGRAM COUNTER
                     OPERATION                              e) RETURN instruction:
                                                                  Stack  PC<15:0>
                          Internal data bus <8>
                                                            Using Figure 7-11, the operation of the PC and
                 8                                          PCLATH for GOTO and CALL instructions is as follows:

              PCLATH              8                               CALL, GOTO instructions:
                                                                  A 13-bit destination address is provided in the
                   8                                              instruction (opcode).
              PCH PCL                                             Opcode<12:0>  PC<12:0>
                                                                  PC<15:13>  PCLATH<7:5>
FIGURE 7-11: PROGRAM COUNTER USING                                Opcode<12:8>  PCLATH<4:0>
                     THE CALL AND GOTO
                     INSTRUCTIONS                           The read-modify-write only affects the PCL with the
                                                            result. PCH is loaded with the value in the PCLATH.
15 13 12 8 7                            0                   For example, ADDWF PCL will result in a jump within the
                                                            current page. If PC = 03F0h, WREG = 30h and
              From Instruction                              PCLATH = 03h before instruction, PC = 0320h after the
                                                            instruction. To accomplish a true 16-bit computed
PC<15:13>     5                                             jump, the user needs to compute the 16-bit destination
                                                            address, write the high byte to PCLATH and then write
    3                                                       the low value to PCL.

7 54             0                   8                      The following PC related operations do not change
                                                            PCLATH:
       PCLATH
                                                            a) LCALL, RETLW, and RETFIE instructions.
           8                                                b) Interrupt vector is forced onto the PC.
                                                            c) Read-modify-write instructions on PCL
15               87                     0
                                                                  (e.g. BSF PCL).
       PCH                        PCL

1998 Microchip Technology Inc.                            DS30289A-page 55
PIC17C7XX                                                      The need for a large general purpose memory space
                                                               dictated a general purpose RAM banking scheme. The
7.8 Bank Select Register (BSR)                                 upper nibble of the BSR selects the currently active
                                                               general purpose RAM bank. To assist this, a MOVLR
The BSR is used to switch between banks in the data            bank instruction has been provided in the instruction
memory area (Figure 7-12). In the PIC17C7XX                    set.
devices, the entire byte is implemented. The lower nib-
ble is used to select the peripheral register bank. The        If the currently selected bank is not implemented (such
upper nibble is used to select the general purpose             as Bank 13), any read will read all '0's. Any write is
memory bank.                                                   completed to the bit bucket and the ALU status bits will
                                                               be set/cleared as appropriate.
All the Special Function Registers (SFRs) are mapped
into the data memory space. In order to accommodate            Note:      Registers in Bank 15 in the Special Func-
the large number of registers, a banking scheme has                       tion Register area, are reserved for
been used. A segment of the SFRs, from address 10h                        Microchip use. Reading of registers in this
to address 17h, is banked. The lower nibble of the bank                   bank may cause random values to be read.
select register (BSR) selects the currently active
"peripheral bank." Effort has been made to group the
peripheral registers of related functionality in one bank.
However, it will still be necessary to switch from bank to
bank in order to address all peripherals related to a sin-
gle task. To assist this, a MOVLB bank instruction has
been included in the instruction set.

FIGURE 7-12: BSR OPERATION

     BSR

     7 43 0

         (2)      (1)

Address           0    1  2  3  4                           5  6       7  8       15
Range
                                                                                      SFR (Peripheral)
10h
17h                                                                               Banks

              Bank 0 Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Bank 8 Bank 15

                  0    1  2  3  4                                                 15

20h                                                                                   GPR (RAM)

                                                                                   Banks

FFh                                                                          Bank 15
                    Bank 0 Bank 1 Bank 2 Bank 3 Bank 4

Note 1: For the SFRs only Banks 0 through 8 are implemented. Selection of an unimplemented bank is not recom-
            mended. Bank 15 is reserved for Microchip use, reading of registers in this bank may cause random
            values to be read.

       2: For the GPRs, bank 3 is unimplemented on the PIC17C752 and the PIC17C762. Selection of an unimple-
            mented bank is not recommended.

       3: SFR Bank 8 is only implemented on the PIC17C76X.

DS30289A-page 56                                                             1998 Microchip Technology Inc.
                                                                                PIC17C7XX

8.0 TABLE READS AND TABLE                                 FIGURE 8-2: TABLWT INSTRUCTION
         WRITES                                                                OPERATION

The PIC17C7XX has four instructions that allow the           TABLE POINTER         TBLPTRL
processor to move data from the data memory space                      TBLPTRH
to the program memory space, and vice versa. Since
the program memory space is 16-bits wide and the             TABLE LATCH (16-bit)
data memory space is 8-bits wide, two operations are
required to move 16-bit values to/from the data mem-            TABLATH TABLATL
ory.
                                                                           3                        3
The TLWT t,f and TABLWT t,i,f instructions are                 TABLWT 1,i,f              TABLWT 0,i,f
used to write data from the data memory space to the
program memory space. The TLRD t,f and                      Data                           Program Memory
TABLRD t,i,f instructions are used to write data          Memory
from the program memory space to the data memory
space.                                                    f  1

The program memory can be internal or external. For                           Prog-Mem
the program memory access to be external, the device                          (TBLPTR)
needs to be operating in microprocessor or extended
microcontroller mode.                                                                 2

Figure 8-1 through Figure 8-4 show the operation of
these four instructions. The steps show the sequence
of operation.

FIGURE 8-1: TLWT INSTRUCTION
                     OPERATION

TABLE POINTER          TBLPTRL
          TBLPTRH

TABLE LATCH (16-bit)                                      Step 1: 8-bit value, from register 'f', loaded into the
                                                                      high or low byte in TABLAT (16-bit).
              TABLATH TABLATL
                                                                 2: 16-bit TABLAT value written to address Pro-
             TLWT 1,f  TLWT 0,f                                       gram Memory (TBLPTR).
                        Program Memory
  Data                                                           3: If "i" = 1, then TBLPTR = TBLPTR + 1,
Memory                                                                If "i" = 0, then TBLPTR is unchanged.

f
           1

Step 1: 8-bit value, from register 'f', loaded into the                                    DS30289A-page 57
             high or low byte in TABLAT (16-bit).

1998 Microchip Technology Inc.
PIC17C7XX

FIGURE 8-3: TLRD INSTRUCTION                       FIGURE 8-4: TABLRD INSTRUCTION
                     OPERATION                                          OPERATION

        TABLE POINTER        TBLPTRL               TABLE POINTER         TBLPTRL
                    TBLPTRH                                  TBLPTRH

        TABLE LATCH (16-bit)                       TABLE LATCH (16-bit)
                   TABLATH TABLATL
                                                                     TABLATH TABLATL

        TLRD 1,f             TLRD 0,f

  Data                       Program Memory                       3                         3
Memory                                                TABLRD 1,i,f              TABLRD 0,i,f

                                                     Data                        Program Memory
                                                   Memory

f
           1

                                                   f
                                                              1

                                                                     Prog-Mem
                                                                     (TBLPTR)

                                                                             2

Step 1: 8-bit value, from TABLAT (16-bit) high or  Step 1: 8-bit value, from TABLAT (16-bit) high or
            low byte, loaded into register 'f'.                low byte, loaded into register 'f'.

                                                          2: 16-bit value at Program Memory (TBLPTR)
                                                               loaded into TABLAT register.

                                                          3: If "i" = 1, then TBLPTR = TBLPTR + 1,
                                                               If "i" = 0, then TBLPTR is unchanged.

DS30289A-page 58                                                      1998 Microchip Technology Inc.
8.1 Table Writes to Internal Memory                                        PIC17C7XX

A table write operation to internal memory causes a           8.1.1 TERMINATING LONG WRITES
long write operation. The long write is necessary for
programming the internal EPROM. Instruction execu-            An interrupt source or reset are the only events that
tion is halted while in a long write cycle. The long write    terminate a long write operation. Terminating the long
will be terminated by any enabled interrupt. To ensure        write from an interrupt source requires that the inter-
that the EPROM location has been well programmed,             rupt enable and flag bits are set. The GLINTD bit only
a minimum programming time is required (see specifi-          enables the vectoring to the interrupt address.
cation #D114). Having only one interrupt enabled to
terminate the long write ensures that no unintentional        If the T0CKI, RA0/INT, or TMR0 interrupt source is
interrupts will prematurely terminate the long write.         used to terminate the long write; the interrupt flag, of
                                                              the highest priority enabled interrupt, will terminate the
The sequence of events for programming an internal            long write and automatically be cleared.
program memory location should be:
                                                                   Note 1: If an interrupt is pending, the TABLWT is
1. Disable all interrupt sources, except the source                            aborted (an NOP is executed). The
      to terminate EPROM program write.                                        highest priority pending interrupt, from
                                                                               the T0CKI, RA0/INT, or TMR0 sources
2. Raise MCLR/VPP pin to the programming volt-                                 that is enabled, has its flag cleared.
      age.
                                                                   Note 2: If the interrupt is not being used for the
3. Clear the WDT.                                                              program write timing, the interrupt
4. Do the table write. The interrupt will terminate                            should be disabled. This will ensure that
                                                                               the interrupt is not lost, nor will it termi-
      the long write.                                                          nate the long write prematurely.
5. Verify the memory location (table read).
                                                              If a peripheral interrupt source is used to terminate the
     Note 1: Programming requirements must be                 long write, the interrupt enable and flag bits must be
                 met. See timing specification in electrical  set. The interrupt flag will not be automatically cleared
                 specifications for the desired device.       upon the vectoring to the interrupt vector address.
                 Violating these specifications (including
                 temperature) may result in EPROM loca-       The GLINTD bit determines whether the program will
                 tions that are not fully programmed and      branch to the interrupt vector when the long write is
                 may lose their state over time.              terminated. If GLINTD is clear, the program will vec-
                                                              tor, if GLINTD is set, the program will not vector to the
     Note 2: If the VPP requirement is not met, the           interrupt address.
                 table write is a 2 cycle write and the pro-
                 gram memory is unchanged.

TABLE 8-1: INTERRUPT - TABLE WRITE INTERACTION

     Interrupt  GLINTD            Enable  Flag                                                 Action
      Source                        Bit    Bit
RA0/INT,            0                                         Terminate long table write (to internal program memory),
TMR0,                                 1     1                 branch to interrupt vector (branch clears flag bit).
T0CKI               0                                         None
                    1                 1     0                 None
Peripheral          1                 0     x                 Terminate long table write, do not branch to interrupt vec-
                                      1     1                 tor (flag is automatically cleared).

                0                 1         1                 Terminate long table write, branch to interrupt vector.
                                            0                 None
                0                 1         x                 None
                                            1                 Terminate table write, do not branch to interrupt vector
                1                 0                           (flag remains set).

                1                 1

1998 Microchip Technology Inc.                              DS30289A-page 59
PIC17C7XX

8.2 Table Writes to External Memory                          8.2.2 TABLE WRITE CODE

Table writes to external memory are always two-cycle         The "i" operand of the TABLWT instruction can specify
instructions. The second cycle writes the data to the        that the value in the 16-bit TBLPTR register is auto-
external memory location. The sequence of events for         matically incremented (for the next write). In
an external memory write are the same for an internal        Example 8-1, the TBLPTR register is not automatically
write.                                                       incremented.

                                                             EXAMPLE 8-1: TABLE WRITE

Note:  If an interrupt is pending or occurs during
       the TABLWT, the two cycle table write
       completes. The RA0/INT, TMR0, or                      CLRWDT                                        ; Clear WDT
       T0CKI interrupt flag is automatically                 MOVLW
       cleared or the pending peripheral inter-              MOVWF   HIGH (TBL_ADDR) ; Load the Table
       rupt is acknowledged.                                 MOVLW
                                                             MOVWF   TBLPTRH                               ; address
                                                             MOVLW
                                                             TLWT    LOW (TBL_ADDR) ;
                                                             MOVLW
                                                             TABLWT  TBLPTRL                               ;

                                                                     HIGH (DATA)                           ; Load HI byte

                                                                     1, WREG                               ; in TABLATH

                                                                     LOW (DATA)                            ; Load LO byte

                                                                     0,0,WREG                              ; in TABLATL

                                                                                                           ; and write to

                                                                                                           ; program memory

                                                                                                           ; (Ext. SRAM)

FIGURE 8-5: TABLWT WRITE TIMING (EXTERNAL MEMORY)

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

       AD15:AD0                    PC               PC+1     TBL     Data out PC+2

       Instruction                 TABLWT       INST (PC+1)                                 INST (PC+2)
       fetched                                                                              INST (PC+1)
                                   INST (PC-1)  TABLWT cycle1 TABLWT cycle2
       Instruction                                                        Data write cycle
       executed

                  ALE

                   OE

                              '1'
                  WR

Note: If external write, and GLINTD = '1', and Enable bit = '1', then when '1'  Flag bit, Do table write.
          The highest pending interrupt is cleared.

DS30289A-page 60                                                                            1998 Microchip Technology Inc.
                                                                          PIC17C7XX

FIGURE 8-6: CONSECUTIVE TABLWT WRITE TIMING (EXTERNAL MEMORY)

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

AD15:AD0      PC                  PC+1     TBL1 Data out 1 PC+2           TBL2 Data out 2 PC+3

Instruction   TABLWT1             TABLWT2                    INST (PC+2)                    INST (PC+3)
fetched
Instruction   INST (PC-1) TABLWT1 cycle1 TABLWT1 cycle2 TABLWT2 cycle1 TABLWT2 cycle2       INST (PC+2)
executed
                                           Data write cycle               Data write cycle
        ALE
          OE

        WR

1998 Microchip Technology Inc.                                                            DS30289A-page 61
PIC17C7XX

8.3 Table Reads                                               EXAMPLE 8-2: TABLE READ

The table read allows the program memory to be read.              MOVLW   HIGH (TBL_ADDR) ; Load the Table
This allows constants to be stored in the program                 MOVWF
memory space, and retrieved into data memory when                 MOVLW   TBLPTRH         ; address
needed. Example 8-2 reads the 16-bit value at pro-                MOVWF
gram memory address TBLPTR. After the dummy                       TABLRD  LOW (TBL_ADDR) ;
byte has been read from the TABLATH, the TABLATH
is loaded with the 16-bit data from program memory                TLRD    TBLPTRL         ;
address TBLPTR, and then increments the TBLPTR
value. The first read loads the data into the latch, and          TABLRD  0, 1, DUMMY ; Dummy read,
can be considered a dummy read (unknown data
loaded into 'f'). INDF0 should be configured for either                             ; Updates TABLATH
auto-increment or auto-decrement.
                                                                                    ; Increments TBLPTR

                                                                          1, INDF0  ; Read HI byte

                                                                                    ; of TABLATH

                                                                          0, 1, INDF0 ; Read LO byte

                                                                                    ; of TABLATL and

                                                                                    ; Update TABLATH

                                                                                    ; Increment TBLPTR

FIGURE 8-7: TABLRD TIMING

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

             AD15:AD0               PC           PC+1             TBL Data in       PC+2

             Instruction            TABLRD       INST (PC+1)                        INST (PC+2)
             fetched                                                                INST (PC+1)
                                    INST (PC-1)  TABLRD cycle1    TABLRD cycle2
             Instruction                                          Data read cycle
             executed

                  ALE
                   OE
                               '1'
                  WR

FIGURE 8-8: TABLRD TIMING (CONSECUTIVE TABLRD INSTRUCTIONS)

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

AD15:AD0          PC                PC+1         TBL1 Data in 1   PC+2              TBL2 Data in 2  PC+3

Instruction       TABLRD1           TABLRD2                       INST (PC+2)                       INST (PC+3)
fetched
                  INST (PC-1) TABLRD1 cycle1 TABLRD1 cycle2 TABLRD2 cycle1 TABLRD2 cycle2 INST (PC+2)
Instruction
executed

                                                 Data read cycle                   Data read cycle

ALE

OE

           '1'
WR

DS30289A-page 62                                                                     1998 Microchip Technology Inc.
                                                             PIC17C7XX

8.4 Operation with External Memory
          Interface

When the table reads/writes are accessing external
memory (via the external system interface bus), the
table latch for the table reads is different from the table
latch for the table writes (see Figure 8-9).

This means that you cannot do a TABLRD instruction,
and use the values that were loaded into the table
latches for a TABLWT instruction. Any table write
sequence should use both the TLWT and then the
TABLWT instructions.

FIGURE 8-9: ACCESSING EXTERNAL MEMORY WITH TABLRD AND TABLWT INSTRUCTIONS

        TABLPTR                                                    Program Memory
                                                             (In External Memory Space)
TABLATH (for Table Reads)
                                        TABLRD

TABLATH (for Table Writes) TABLWT

1998 Microchip Technology Inc.                             DS30289A-page 63
PIC17C7XX

NOTES:

DS30289A-page 64   1998 Microchip Technology Inc.
                                                                                    PIC17C7XX

9.0 HARDWARE MULTIPLIER                                      Example 9-2 shows the sequence to do an 8 x 8 signed
                                                             multiply. To account for the sign bits of the arguments,
All PIC17C7XX devices have an 8 x 8 hardware multi-          each argument's most significant bit (MSb) is tested
plier included in the ALU of the device. By making the       and the appropriate subtractions are done.
multiply a hardware operation, it completes in a single
instruction cycle. This is an unsigned multiply that         EXAMPLE 9-1: 8 x 8 UNSIGNED MULTIPLY
gives a 16-bit result. The result is stored into the 16-bit                          ROUTINE
PRODuct register (PRODH:PRODL). The multiplier
does not affect any flags in the ALUSTA register.                     MOVFP   ARG1, WREG ;
                                                                      MULWF
Making the 8 x 8 multiplier execute in a single cycle                         ARG2        ; ARG1 * ARG2 ->
gives the following advantages:
                                                                                          ; PRODH:PRODL
Higher computational throughput
Reduces code size requirements for multiply algo-          EXAMPLE 9-2: 8 x 8 SIGNED MULTIPLY
                                                                                     ROUTINE
   rithms
                                                                      MOVFP   ARG1, WREG  ; ARG1 * ARG2 ->
The performance increase allows the device to be used                 MULWF   ARG2
in applications previously reserved for Digital Signal                                    ; PRODH:PRODL
Processors.                                                           BTFSC   ARG2, SB
                                                                      SUBWF   PRODH, F    ; Test Sign Bit
Table 9-1 shows a performance comparison between
PIC17CXXX devices using the single cycle hardware                     MOVFP   ARG2, WREG  ; PRODH = PRODH
multiply, and performing the same function without the                BTFSC   ARG1, SB
hardware multiply.                                                    SUBWF   PRODH, F    ;         - ARG1

Example 9-1 shows the sequence to do an 8 x 8                                             ; Test Sign Bit
unsigned multiply. Only one instruction is required
when one argument of the multiply is already loaded in                                    ; PRODH = PRODH
the WREG register.
                                                                                          ;         - ARG2

TABLE 9-1: PERFORMANCE COMPARISON

                                                             Program  Cycles              Time
                                                             Memory   (Max)
Routine           Multiply Method                            (Words)
                                                                         69
                                                                 13       1   @ 33 MHz @ 16 MHz @ 8 MHz
                                                                  1      --
8 x 8 unsigned    Without hardware multiply                      --       6   8.364 s    17.25 s  34.50 s
8 x 8 signed      Hardware multiply                               6     242   0.121 s    0.25 s   0.50 s
16 x 16 unsigned  Without hardware multiply                      21      24
16 x 16 signed    Hardware multiply                              24     254        --         --        --
                  Without hardware multiply                      52      36   0.727 s    1.50 s    3.0 s
                  Hardware multiply                              36           29.333 s   60.50 s  121.0 s
                  Without hardware multiply                                    2.91 s     6.0 s   12.0 s
                  Hardware multiply                                           30.788 s   63.50 s  127.0 s
                                                                               4.36 s     9.0 s   18.0 s

1998 Microchip Technology Inc.                                                             DS30289A-page 65
PIC17C7XX

Example 9-3 shows the sequence to do a 16 x 16            EXAMPLE 9-3: 16 x 16 UNSIGNED
unsigned multiply. Equation 9-1 shows the algorithm                               MULTIPLY ROUTINE
that is used. The 32-bit result is stored in 4 registers
RES3:RES0.                                                     MOVFP   ARG1L, WREG
                                                               MULWF
                                                                       ARG2L        ; ARG1L * ARG2L ->
                                                               MOVPF
EQUATION 9-1:     16 x 16 UNSIGNED                             MOVPF                ; PRODH:PRODL
                  MULTIPLICATION                          ;
                  ALGORITHM                                    MOVFP   PRODH, RES1 ;
                                                               MULWF
                                                                       PRODL, RES0 ;
                                                               MOVPF
RES3:RES0  = ARG1H:ARG1L ARG2H:ARG2L                         MOVPF   ARG1H, WREG
           = (ARG1H ARG2H 216) +                      ;
                                                               MOVFP   ARG2H        ; ARG1H * ARG2H ->
                 (ARG1H ARG2L 28) +                        MULWF
                 (ARG1L ARG2H 28) +                                             ; PRODH:PRODL
                                                               MOVFP
                 (ARG1L ARG2L)                               ADDWF   PRODH, RES3 ;
                                                               MOVFP
                                                               ADDWFC  PRODL, RES2 ;
                                                               CLRF
                                                               ADDWFC  ARG1L, WREG
                                                          ;
                                                               MOVFP   ARG2H        ; ARG1L * ARG2H ->
                                                               MULWF
                                                                                    ; PRODH:PRODL
                                                               MOVFP
                                                               ADDWF   PRODL, WREG ;
                                                               MOVFP
                                                               ADDWFC  RES1, F      ; Add cross
                                                               CLRF
                                                               ADDWFC  PRODH, WREG ; products

                                                                       RES2, F      ;

                                                                       WREG, F      ;

                                                                       RES3, F      ;

                                                                       ARG1H, WREG ;

                                                                       ARG2L        ; ARG1H * ARG2L ->

                                                                                    ; PRODH:PRODL

                                                                       PRODL, WREG ;

                                                                       RES1, F      ; Add cross

                                                                       PRODH, WREG ; products

                                                                       RES2, F      ;

                                                                       WREG, F      ;

                                                                       RES3, F      ;

DS30289A-page 66                                                                1998 Microchip Technology Inc.
                                                                             PIC17C7XX

Example 9-4 shows the sequence to do an 16 x 16        EXAMPLE 9-4: 16 x 16 SIGNED MULTIPLY
signed multiply. Equation 9-2 shows the algorithm                              ROUTINE
used. The 32-bit result is stored in four registers
RES3:RES0. To account for the sign bits of the argu-        MOVFP   ARG1L, WREG
ments, each argument pairs most significant bit (MSb)       MULWF
is tested and the appropriate subtractions are done.                ARG2L        ; ARG1L * ARG2L ->
                                                            MOVPF
                                                            MOVPF                ; PRODH:PRODL
                                                       ;
                                                            MOVFP   PRODH, RES1 ;
                                                            MULWF
EQUATION 9-2:  16 x 16 SIGNED                                       PRODL, RES0 ;
               MULTIPLICATION                               MOVPF
               ALGORITHM                                    MOVPF   ARG1H, WREG
                                                       ;
                                                            MOVFP   ARG2H        ; ARG1H * ARG2H ->
                                                            MULWF
                                                                                 ; PRODH:PRODL
                                                            MOVFP
RES3:RES0                                                   ADDWF   PRODH, RES3 ;
                                                            MOVFP
= ARG1H:ARG1L ARG2H:ARG2L                                 ADDWFC  PRODL, RES2 ;
                                                            CLRF
= (ARG1H ARG2H 216)           +                         ADDWFC  ARG1L, WREG
                                                       ;
(ARG1H ARG2L 28)              +                         MOVFP   ARG2H        ; ARG1L * ARG2H ->
                                                            MULWF
(ARG1L ARG2H 28)                                                             ; PRODH:PRODL
                                                            MOVFP
                                  +                         ADDWF   PRODL, WREG ;
                                                            MOVFP
(ARG1L ARG2L)                   +                         ADDWFC  RES1, F      ; Add cross
                                                            CLRF
(-1 ARG2H<7> ARG1H:ARG1L 216) +                       ADDWFC  PRODH, WREG ; products
(-1 ARG1H<7> ARG2H:ARG2L 216)                    ;
                                                            BTFSS   RES2, F      ;
                                                            GOTO
                                                            MOVFP   WREG, F      ;
                                                            SUBWF
                                                            MOVFP   RES3, F      ;
                                                            SUBWFB
                                                       ;            ARG1H, WREG ;
                                                       SIGN_ARG1
                                                            BTFSS   ARG2L        ; ARG1H * ARG2L ->
                                                            GOTO
                                                            MOVFP                ; PRODH:PRODL
                                                            SUBWF
                                                            MOVFP   PRODL, WREG ;
                                                            SUBWFB
                                                       ;            RES1, F      ; Add cross
                                                       CONT_CODE
                                                                    PRODH, WREG ; products
                                                                :
                                                                    RES2, F      ;

                                                                    WREG, F      ;

                                                                    RES3, F      ;

                                                                    ARG2H, 7 ; ARG2H:ARG2L neg?

                                                                    SIGN_ARG1 ; no, check ARG1

                                                                    ARG1L, WREG ;

                                                                    RES2         ;

                                                                    ARG1H, WREG ;

                                                                    RES3

                                                                    ARG1H, 7 ; ARG1H:ARG1L neg?

                                                                    CONT_CODE ; no, done

                                                                    ARG2L, WREG ;

                                                                    RES2         ;

                                                                    ARG2H, WREG ;

                                                                    RES3

1998 Microchip Technology Inc.                                                    DS30289A-page 67
PIC17C7XX

NOTES:

DS30289A-page 68   1998 Microchip Technology Inc.
                                                                   PIC17C7XX

10.0 I/O PORTS                                              When some of these peripheral modules are turned on,
                                                            the port pin will automatically configure to the alternate
PIC17C75X devices have seven I/O ports, PORTA               function. The modules that do this are:
through PORTG. PIC17C76X devices have nine I/O
ports, PORTA through PORTJ. PORTB through PORTJ             PWM module
have a corresponding Data Direction Register (DDR),          SSP module
which is used to configure the port pins as inputs or out-   USART/SCI module
puts. Some of these ports pins are multiplexed with
alternate functions.                                        When a pin is automatically configured as an output by
                                                            a peripheral module, the pins data direction (DDR) bit
PORTC, PORTD, and PORTE are multiplexed with the            is unknown. After disabling the peripheral module, the
system bus. These pins are configured as the system         user should re-initialize the DDR bit to the desired con-
bus when the device's configuration bits are selected to    figuration.
Microprocessor or Extended Microcontroller modes. In
the two other microcontroller modes, these pins are         The other peripheral modules (which require an input)
general purpose I/O.                                        must have their data direction bits configured appropri-
                                                            ately.
PORTA, PORTB, PORTE<3>, PORTF, PORTG and the
upper four bits of PORTH are multiplexed with the           Note:  A pin that is a peripheral input, can be con-
peripheral features of the device. These peripheral fea-           figured as an output (DDRx is cleared).
tures are:                                                         The peripheral events will be determined
                                                                   by the action output on the port pin.
Timer modules
Capture modules                                           When the device enters the "reset state" the Data
PWM modules                                               Direction registers (DDR) are forced set which will
USART/SCI modules                                         make the I/O hi-impendance inputs. The reset state of
SSP Module                                                some peripheral modules may force the I/O to other
A/D Module                                                operations, such as analog inputs or the system bus.
External Interrupt pin

1998 Microchip Technology Inc.                                   DS30289A-page 69
PIC17C7XX

10.1 PORTA Register                                          FIGURE 10-1: RA0 AND RA1 BLOCK
                                                                                  DIAGRAM
PORTA is a 6-bit wide latch. PORTA does not have a
corresponding Data Direction Register (DDR). Upon a                                                                           DATA BUS
device reset, the PORTA pins are forced to be high
impedance inputs. For the RA4 and RA5 pins the                                                                              RD_PORTA
peripheral module controls the output. When a device                                                                                  (Q2)
reset occurs, the peripheral module is disabled, so
these pins are force to be high impedance inputs.                  Note: Input pins have protection diodes to VDD and VSS.

Reading PORTA reads the status of the pins.                  FIGURE 10-2: RA2 BLOCK DIAGRAM

The RA0 pin is multiplexed with the external interrupt,                                                 Peripheral data in
INT. The RA1 pin is multiplexed with TMR0 clock input,
RA2 and RA3 are multiplexed with the SSP functions,
and RA4 and RA5 are multiplexed with the USART1
functions. The control of RA2, RA3, RA4 and RA5 as
outputs are automatically configured by their multi-
plexed peripheral module.

10.1.1 USING RA2, RA3 AS OUTPUTS                                D      Q     Data Bus

The RA2 and RA3 pins are open drain outputs. To use                EN
the RA2 and/or the RA3 pin(s) as output(s), simply
write to the PORTA register the desired value. A '0' will
cause the pin to drive low, while a '1' will cause the pin
to float (hi-impedance). An external pull-up resistor
should be used to pull the pin high. Writes to the RA2
and RA3 pins will not affect the other PORTA pins.

Note:  When using the RA2 or RA3 pin(s) as out-                              RD_PORTA
       put(s), read-modify-write instructions                                          (Q2)
       (such as BCF, BSF, BTG) on PORTA are not
       recommended.                                             Q         D
       Such operations read the port pins, do the
       desired operation, and then write this value          1  Q CK         WR_PORTA
       to the data latch. This may inadvertently                                        (Q4)
       cause the RA2 or RA3 pins to switch from              0
       input to output (or vice-versa).                                      SCL out
       To avoid this possibility use a shadow reg-
       ister for PORTA. Do the bit operations on                                                            I2C Mode enable
       this shadow register and then move it to              Note: I/O pin has protection diodes to VSS.
       PORTA.

Example 10-1 shows an instruction sequence to initial-
ize PORTA. The Bank Select Register (BSR) must be
selected to Bank 0 for the port to be initialized. The fol-
lowing example uses the MOVLB instruction to load the
BSR register for bank selection.

EXAMPLE 10-1: INITIALIZING PORTA

MOVLB  0          ; Select Bank 0
MOVLW  0xF3       ;
MOVWF  PORTA      ; Initialize PORTA
                  ; RA<3:2> are output low
                  ; RA<5:4> and RA<1:0>
                  ; are inputs
                  ; (outputs floating)

DS30289A-page 70                                                    1998 Microchip Technology Inc.
FIGURE 10-3: RA3 BLOCK DIAGRAM                                                           PIC17C7XX

                                           Peripheral data in               FIGURE 10-4: RA4 AND RA5 BLOCK
                                                                                                 DIAGRAM
                     D      Q             Data Bus
                                                                                                                         Serial port input signal
                        EN
                                                                                                                                             Data Bus

                                          RD_PORTA                                                                             RD_PORTA
                                                    (Q2)                                                                                 (Q2)

                     Q            D                                                                          Serial port output signals

                     Q CK                 WR_PORTA                                   OE = SPEN,SYNC,TXEN, CREN, SREN for RA4
                          '1'                        (Q4)                            OE = SPEN (SYNC+SYNC,CSRC) for RA5

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

                                                SSP Mode
Note: I/O pin has protection diodes to VSS.

TABLE 10-1: PORTA FUNCTIONS

Name         Bit0 Buffer Type                                                          Function

RA0/INT      bit0                 ST      Input or external interrupt input.

RA1/T0CKI    bit1                 ST      Input or clock input to the TMR0 timer/counter, and/or an external interrupt
                                          input.
RA2/SS/SCL bit2                   ST      Input/Output or slave select input for the SPI or clock input for the I2C bus.
                                          Output is open drain type.
RA3/SDI/SDA bit3                  ST
                                          Input/Output or data input for the SPI or data for the I2C bus.
RA4/RX1/DT1 bit4                  ST      Output is open drain type.

RA5/TX1/CK1 bit5                  ST      Input or USART1 Asynchronous Receive or
                                          USART1 Synchronous Data.
RBPU         bit7                 --
                                          Input or USART1 Asynchronous Transmit or
                                          USART1 Synchronous Clock.

                                          Control bit for PORTB weak pull-ups.

Legend: ST = Schmitt Trigger input.

TABLE 10-2: REGISTERS/BITS ASSOCIATED WITH PORTA

Address      Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1                                         Bit 0    Value on   MCLR,
                                                                                                               POR,      WDT
                                                                                                               BOR

10h, Bank 0  PORTA (1) RBPU           --    RA5/                 RA4/     RA3/     RA2/  RA1/T0CKI  RA0/INT  0-xx 11xx  0-uu 11uu
                                          TX1/CK1              RX1/DT1  SDI/SDA  SS/SCL
                                                                                                             0000 000-  0000 000-
05h, Unbanked T0STA     INTEDG T0SE T0CS T0PS3 T0PS2 T0PS1 T0PS0                                         --  0000 -00x  0000 -00u
                                                                                                             0000 --1x  0000 --1u
13h, Bank 0 RCSTA1 SPEN RX9 SREN CREN                                   --       FERR    OERR       RX9D

15h, Bank 0 TXSTA1 CSRC TX9 TXEN SYNC                                   --       --      TRMT       TX9D

Legend: x = unknown, u = unchanged, - = unimplemented reads as '0'. Shaded cells are not used by PORTA.
Note 1: On any device reset, these pins are configured as inputs.

1998 Microchip Technology Inc.                                                                             DS30289A-page 71
PIC17C7XX                                                                        This interrupt can wake the device from SLEEP. The
                                                                                 user, in the interrupt service routine, can clear the inter-
10.2 PORTB and DDRB Registers                                                    rupt by:

PORTB is an 8-bit wide bi-directional port. The corre-                           a) Read-Write PORTB (such as; MOVPF PORTB,
sponding data direction register is DDRB. A '1' in DDRB                                PORTB). This will end mismatch condition.
configures the corresponding port pin as an input. A '0'
in the DDRB register configures the corresponding port                           b) Then, clear the RBIF bit.
pin as an output. Reading PORTB reads the status of
the pins, whereas writing to PORTB will write to the port                        A mismatch condition will continue to set the RBIF bit.
latch.                                                                           Reading then writing PORTB will end the mismatch
                                                                                 condition, and allow the RBIF bit to be cleared.
Each of the PORTB pins has a weak internal pull-up. A
single control bit can turn on all the pull-ups. This is                         This interrupt on mismatch feature, together with soft-
done by clearing the RBPU (PORTA<7>) bit. The weak                               ware configurable pull-ups on this port, allows easy
pull-up is automatically turned off when the port pin is                         interface to a keypad and make it possible for wake-up
configured as an output. The pull-ups are enabled on                             on key-depression. For an example, refer to Applica-
any reset.                                                                       tion Note AN552, "Implementing Wake-up on Key-
                                                                                 stroke."
PORTB also has an interrupt on change feature. Only
pins configured as inputs can cause this interrupt to                            The interrupt on change feature is recommended for
occur (i.e. any RB7:RB0 pin configured as an output is                           wake-up on operations where PORTB is only used for
excluded from the interrupt on change comparison).                               the interrupt on change feature and key depression
The input pins (of RB7:RB0) are compared with the                                operations.
value in the PORTB data latch. The "mismatch" out-
puts of RB7:RB0 are OR'ed together to set the PORTB                              Note:            On a device reset, the RBIF bit is indeter-
Interrupt Flag bit, RBIF (PIR1<7>).                                                               minate since the value in the latch may be
                                                                                                  different than the pin.

FIGURE 10-5: BLOCK DIAGRAM OF RB5:RB4 AND RB1:RB0 PORT PINS

Weak                                                                                              Match Signal     Peripheral Data in
Pull-Up                                                                                           from other        RBPU (PORTA<7>)
                                                                                                  port pins
                                                                                                                                    RBIF
                  Port
                  Input Latch                                                                                                    Data Bus
                                                                                                                       RD_DDRB (Q2)

                                  OE                                                                            D  RD_PORTB (Q2)
                                                                                                  Q                 WR_DDRB (Q4)
                                                                           Port                                    WR_PORTB (Q4)
                                                                           Data                            CK
Note: I/O pins have protection diodes to VDD and VSS.
                                                                                               D
                                                                                 Q

                                                                                          CK

DS30289A-page 72                                                                                  1998 Microchip Technology Inc.
                                                                                        PIC17C7XX

Example 10-2 shows an instruction sequence to initial-       EXAMPLE 10-2: INITIALIZING PORTB
ize PORTB. The Bank Select Register (BSR) must be
selected to Bank 0 for the port to be initialized. The fol-  MOVLB            0         ; Select Bank 0
lowing example uses the MOVLB instruction to load the        CLRF             PORTB, F   ; Init PORTB by clearing
BSR register for bank selection.                                                         ; output data latches
                                                             MOVLW            0xCF       ; Value used to initialize
                                                                                         ; data direction
                                                             MOVWF            DDRB       ; Set RB<3:0> as inputs
                                                                                         ; RB<5:4> as outputs
                                                                                         ; RB<7:6> as inputs

FIGURE 10-6: BLOCK DIAGRAM OF RB3:RB2 PORT PINS

Weak                                                                          Match Signal               Peripheral Data in
Pull-Up                                                                       from other                 RBPU (PORTA<7>)
                                                                              port pins
                                                                                                                            RBIF

                                  Port
                                  Input Latch

         OE                                                                                           D             Data Bus
                                                                                                           RD_DDRB (Q2)
                                                                           D            Q                 RD_PORTB (Q2)
                                                             Q                                   CK
                                                                                                           WR_DDRB (Q4)
                                                                      CK                   R
                                                                                                         WR_PORTB (Q4)
                                                       Port                                              Peripheral_output
                                                       Data                                              Peripheral_enable

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

1998 Microchip Technology Inc.                                                                         DS30289A-page 73
PIC17C7XX                                                                           Match Signal     Peripheral Data in
                                                                                    from other       RBPU (PORTA<7>)
FIGURE 10-7: BLOCK DIAGRAM OF RB6 PORT PIN                                          port pins
                                                                                                                        RBIF
          Weak
          Pull-Up                                                                                              Data Bus
                                                                                                      RD_DDRB (Q2)
                                                                           DQ                        RD_PORTB (Q2)
                                                                             EN
                                                                                                      WR_DDRB (Q4)
            OE                                                                                    D
                                                                                    Q

                                                                                             CK

         P      0                                            Port
                                                             Data

                                                1            Q                   D
         N
                                                             Q CK                                     WR_PORTB (Q4)

                                                                                                              SPI output
                                                                                                     SPI output enable

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

FIGURE 10-8: BLOCK DIAGRAM OF RB7 PORT PIN

Weak                                                                                Match Signal     Peripheral Data in
Pull-Up                                                                             from other       RBPU (PORTA<7>)
                                                                                    port pins
                                                                                                                        RBIF

                                                        DQ                                                       Data Bus
                                                         EN                                             RD_DDRB (Q2)
                                                                                                      RD_PORTB (Q2)
            OE                                                                                    D
                                                                                    Q                  WR_DDRB (Q4)
                                                                                                     SS output disable
                                                                                             CK

         P      0                                            Port
                                                             Data

                                                1            Q                   D
         N
                                                                     CK                               WR_PORTB (Q4)
                                                             Q
                                                                                                              SPI output
                                                                                                     SPI output enable

   Note: I/O pin has protection diodes to VDD and Vss.                               1998 Microchip Technology Inc.
DS30289A-page 74
                                                                                                    PIC17C7XX

TABLE 10-3: PORTB FUNCTIONS

Name         Bit Buffer Type                                               Function

RB0/CAP1     bit0                 ST      Input/Output or the Capture1 input pin. Software programmable weak
                                          pull-up and interrupt on change features.
RB1/CAP2     bit1                 ST
                                          Input/Output or the Capture2 input pin. Software programmable weak
RB2/PWM1     bit2                 ST      pull-up and interrupt on change features.

RB3/PWM2     bit3                 ST      Input/Output or the PWM1 output pin. Software programmable weak pull-up
                                          and interrupt on change features.
RB4/TCLK12 bit4                   ST
                                          Input/Output or the PWM2 output pin. Software programmable weak pull-up
RB5/TCLK3 bit5                    ST      and interrupt on change features.

RB6/SCK      bit6                 ST      Input/Output or the external clock input to Timer1 and Timer2. Software pro-
                                          grammable weak pull-up and interrupt on change features.
RB7/SDO      bit7                 ST
                                          Input/Output or the external clock input to Timer3. Software programmable
                                          weak pull-up and interrupt on change features.

                                          Input/Output or the master/slave clock for the SPI. Software programmable
                                          weak pull-up and interrupt on change features.

                                          Input/Output or data output for the SPI. Software programmable weak
                                          pull-up and interrupt on change features.

Legend: ST = Schmitt Trigger input.

TABLE 10-4: REGISTERS/BITS ASSOCIATED WITH PORTB

Address      Name Bit 7 Bit 6 Bit 5                      Bit 4 Bit 3 Bit 2         Bit 1            Bit 0  Value on  MCLR,
                                                                                                             POR,     WDT
                                                                                                             BOR

12h, Bank 0  PORTB    RB7/        RB6/     RB5/            RB4/    RB3/     RB2/   RB1/             RB0/   xxxx xxxx uuuu uuuu
11h, Bank 0  DDRB     SDO         SCK     TCLK3          TCLK12   PWM2     PWM1    CAP2             CAP1   1111 1111 1111 1111

                      Data direction register for PORTB

10h, Bank 0 PORTA RBPU                --    RA5/           RA4/     RA3/     RA2/  RA1/T0CKI RA0/INT 0-xx 11xx 0-uu 11uu
                                          TX1/CK1        RX1/DT1  SDI/SDA  SS/SCL

06h, Unbanked CPUSTA  --              --   STKAV         GLINTD     TO         PD    POR              BOR --11 11qq --11 qquu
07h, Unbanked INTSTA                        T0IF           INTF   PEIE     T0CKIE     T0IE            INTE 0000 0000 0000 0000
16h, Bank 1 PIR1      PEIF T0CKIF                                 CA2IF     CA1IF    TX1IF           RC1IF x000 0010 u000 0010
17h, Bank 1 PIE1                          TMR2IF         TMR1IF   CA2IE     CA1IE    TX1IE           RC1IE 0000 0000 0000 0000
16h, Bank 3 TCON1     RBIF TMR3IF         TMR2IE         TMR1IE    T16     TMR3CS  TMR2CS           TMR1CS 0000 0000 0000 0000
                                          CA1ED1         CA1ED0
                      RBIE TMR3IE

                      CA2ED1 CA2ED0

17h, Bank 3 TCON2 CA2OVF CA1OVF PWM2ON PWM1ON CA1/PR3 TMR3ON TMR2ON                                 TMR1ON 0000 0000 0000 0000

Legend: x = unknown, u = unchanged, - = unimplemented read as '0', q = Value depends on condition.
               Shaded cells are not used by PORTB.

1998 Microchip Technology Inc.                                                                           DS30289A-page 75
PIC17C7XX

10.3 PORTC and DDRC Registers                                          Example 10-3 shows an instruction sequence to initial-
                                                                       ize PORTC. The Bank Select Register (BSR) must be
PORTC is an 8-bit bi-directional port. The correspond-                 selected to Bank 1 for the port to be initialized. The fol-
ing data direction register is DDRC. A '1' in DDRC con-                lowing example uses the MOVLB instruction to load the
figures the corresponding port pin as an input. A '0' in               BSR register for bank selection.
the DDRC register configures the corresponding port
pin as an output. Reading PORTC reads the status of                    EXAMPLE 10-3: INITIALIZING PORTC
the pins, whereas writing to PORTC will write to the
port latch. PORTC is multiplexed with the system bus.                  MOVLB  1         ; Select Bank 1
When operating as the system bus, PORTC is the low                     CLRF   PORTC, F  ; Initialize PORTC data
order byte of the address/data bus (AD7:AD0). The tim-                                  ; latches before setting
ing for the system bus is shown in the Electrical Speci-               MOVLW   0xCF     ; the data direction reg
fications section.                                                     MOVWF   DDRC     ; Value used to initialize
                                                                                        ; data direction
Note:  This port is configured as the system bus                                        ; Set RC<3:0> as inputs
       when the device's configuration bits are                                         ; RC<5:4> as outputs
       selected to Microprocessor or Extended                                           ; RC<7:6> as inputs
       Microcontroller modes. In the two other
       microcontroller modes, this port is a gen-
       eral purpose I/O.

FIGURE 10-9: BLOCK DIAGRAM OF RC7:RC0 PORT PINS

                  TTL                                                                  to D_Bus  IR
                  Input                                                       INSTRUCTION READ
                  Buffer
                                                                                                   Data Bus
                          0 Port                       Q            D
                             Data                                                              RD_PORTC
                                                          CK                                   WR_PORTC
                          1

                                                       Q            D                   RD_DDRC
                                                                                        WR_DDRC
                                                                CK
                                                       RS

                                                                                                      EX_EN  SYS BUS
                                                                                        DATA/ADDR_OUT        Control

                                                                                                  DRV_SYS

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

DS30289A-page 76                                                                         1998 Microchip Technology Inc.
                                                                            PIC17C7XX

TABLE 10-5: PORTC FUNCTIONS

Name               Bit Buffer Type                                Function

RC0/AD0            bit0           TTL         Input/Output or system bus address/data pin.

RC1/AD1            bit1           TTL         Input/Output or system bus address/data pin.

RC2/AD2            bit2           TTL         Input/Output or system bus address/data pin.

RC3/AD3            bit3           TTL         Input/Output or system bus address/data pin.

RC4/AD4            bit4           TTL         Input/Output or system bus address/data pin.

RC5/AD5            bit5           TTL         Input/Output or system bus address/data pin.

RC6/AD6            bit6           TTL         Input/Output or system bus address/data pin.

RC7/AD7            bit7           TTL         Input/Output or system bus address/data pin.

Legend: TTL = TTL input.

TABLE 10-6: REGISTERS/BITS ASSOCIATED WITH PORTC

Address Name Bit 7 Bit 6 Bit 5 Bit 4                Bit 3  Bit 2  Bit 1  Bit 0              Value on  MCLR,
                                                                                              POR,     WDT
                                                    RC3/   RC2/   RC1/                        BOR
                                                    AD3    AD2    AD1
11h, Bank 1 PORTC  RC7/           RC6/  RC5/  RC4/                       RC0/               xxxx xxxx uuuu uuuu
                   AD7            AD6   AD5   AD4                        AD0                1111 1111 1111 1111

10h, Bank 1 DDRC Data direction register for PORTC

Legend: x = unknown, u = unchanged.

1998 Microchip Technology Inc.                                                            DS30289A-page 77
PIC17C7XX

10.4 PORTD and DDRD Registers                                          Example 10-4 shows an instruction sequence to initial-
                                                                       ize PORTD. The Bank Select Register (BSR) must be
PORTD is an 8-bit bi-directional port. The correspond-                 selected to Bank 1 for the port to be initialized. The fol-
ing data direction register is DDRD. A '1' in DDRD con-                lowing example uses the MOVLB instruction to load the
figures the corresponding port pin as an input. A '0' in               BSR register for bank selection.
the DDRD register configures the corresponding port
pin as an output. Reading PORTD reads the status of                    EXAMPLE 10-4: INITIALIZING PORTD
the pins, whereas writing to PORTD will write to the
port latch. PORTD is multiplexed with the system bus.                  MOVLB  1         ; Select Bank 1
When operating as the system bus, PORTD is the high                    CLRF   PORTD, F  ; Initialize PORTD data
order byte of the address/data bus (AD15:AD8). The                                      ; latches before setting
timing for the system bus is shown in the Electrical                   MOVLW   0xCF     ; the data direction reg
Specifications section.                                                MOVWF   DDRD     ; Value used to initialize
                                                                                        ; data direction
Note:  This port is configured as the system bus                                        ; Set RD<3:0> as inputs
       when the device's configuration bits are                                         ; RD<5:4> as outputs
       selected to Microprocessor or Extended                                           ; RD<7:6> as inputs
       Microcontroller modes. In the two other
       microcontroller modes, this port is a gen-
       eral purpose I/O.

FIGURE 10-10: BLOCK DIAGRAM OF RD7:RD0 PORT PINS (IN I/O PORT MODE)

                                                                                                                                                     to D_Bus  IR
                                                                                                                                            INSTRUCTION READ

                                                                                        Data Bus

                  TTL
                  Input
                  Buffer

                          0 Port                       Q            D                   RD_PORTD
                             Data                                                       WR_PORTD
                                                          CK
                          1

                                                       Q            D                   RD_DDRD
                                                                                        WR_DDRD
                                                                CK
                                                       RS

                                                                                                      EX_EN                                                        SYS BUS
                                                                                        DATA/ADDR_OUT                                                              Control

                                                                                                  DRV_SYS

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

DS30289A-page 78                                                                         1998 Microchip Technology Inc.
                                                                          PIC17C7XX

TABLE 10-7: PORTD FUNCTIONS

Name      Bit             Buffer Type                                                 Function

RD0/AD8   bit0                 TTL            Input/Output or system bus address/data pin.
                               TTL            Input/Output or system bus address/data pin.
RD1/AD9   bit1                 TTL            Input/Output or system bus address/data pin.
                               TTL            Input/Output or system bus address/data pin.
RD2/AD10  bit2                 TTL            Input/Output or system bus address/data pin.
                               TTL            Input/Output or system bus address/data pin.
RD3/AD11  bit3                 TTL            Input/Output or system bus address/data pin.
                               TTL            Input/Output or system bus address/data pin.
RD4/AD12  bit4

RD5/AD13  bit5

RD6/AD14  bit6

RD7/AD15  bit7

Legend: TTL = TTL input.

TABLE 10-8: REGISTERS/BITS ASSOCIATED WITH PORTD

Address Name Bit 7 Bit 6 Bit 5                Bit 4  Bit 3  Bit 2  Bit 1  Bit 0                 Value on  MCLR,
                                                                                                POR,      WDT
                                                                                                BOR

13h, Bank 1 PORTD  RD7/           RD6/  RD5/  RD4/   RD3/   RD2/   RD1/   RD0/                  xxxx xxxx uuuu uuuu
                   AD15           AD14  AD13  AD12   AD11   AD10   AD9    AD8                   1111 1111 1111 1111

12h, Bank 1 DDRD Data direction register for PORTD

Legend: x = unknown, u = unchanged.

1998 Microchip Technology Inc.                                                                DS30289A-page 79
PIC17C7XX

10.5 PORTE and DDRE Register                                  Example 10-5 shows an instruction sequence to initial-
                                                              ize PORTE. The Bank Select Register (BSR) must be
PORTE is a 4-bit bi-directional port. The corresponding       selected to Bank 1 for the port to be initialized. The fol-
data direction register is DDRE. A '1' in DDRE config-        lowing example uses the MOVLB instruction to load the
ures the corresponding port pin as an input. A '0' in the     BSR register for bank selection.
DDRE register configures the corresponding port pin
as an output. Reading PORTE reads the status of the           EXAMPLE 10-5: INITIALIZING PORTE
pins, whereas writing to PORTE will write to the port
latch. PORTE is multiplexed with the system bus.              MOVLB  1         ; Select Bank 1
When operating as the system bus, PORTE contains              CLRF   PORTE, F  ; Initialize PORTE data
the control signals for the address/data bus                                   ; latches before setting
(AD15:AD0). These control signals are Address Latch           MOVLW   0x03     ; the data direction
Enable (ALE), Output Enable (OE), and Write (WR).             MOVWF   DDRE     ; register
The control signals OE and WR are active low signals.                          ; Value used to initialize
The timing for the system bus is shown in the Electrical                       ; data direction
Specifications section.                                                        ; Set RE<1:0> as inputs
                                                                               ; RE<3:2> as outputs
Note:  Three pins of this port are configured as                               ; RE<7:4> are always
       the system bus when the device's configu-                               ; read as '0'
       ration bits are selected to Microprocessor
       or Extended Microcontroller modes. The
       other pin is a general purpose I/O or
       Capture4 pin. In the two other microcon-
       troller modes, RE2:RE0 are general pur-
       pose I/O pins.

FIGURE 10-11: BLOCK DIAGRAM OF RE2:RE0 (IN I/O PORT MODE)                         Data Bus
                                                                               RD_PORTE
                                          TTL
                                          Input
                                          Buffer

                  0 Port Q                                 D

                  1 Data                               CK                      WR_PORTE

                              Q                            D                   RD_DDRE
                                                                               WR_DDRE
                                      CK
                              RS

                                                                                   EX_EN    SYS BUS
                                                                                     CNTL   Control

                                                                               DRV_SYS

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

DS30289A-page 80                                                                1998 Microchip Technology Inc.
                                                                                                    PIC17C7XX

FIGURE 10-12: BLOCK DIAGRAM OF RE3/CAP4 PORT PIN

                                                                                                           Peripheral In

                                                         D     Q                                               Data Bus
                                                                                                           RD_PORTE
                                                         ENEN                                              WR_PORTE

          VDD

          P

                                                            Q            D

                                          Port                      CK
                                                            Q
                                          Data

          N

                                                            Q            D                                 RD_DDRE
                                                                                                           WR_DDRE
                                                                     CK
                                                            QS

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

TABLE 10-9: PORTE FUNCTIONS

Name               Bit            Buffer Type                                             Function

RE0/ALE            bit0           TTL                    Input/Output or system bus Address Latch Enable (ALE) control pin.

RE1/OE             bit1           TTL                    Input/Output or system bus Output Enable (OE) control pin.

RE2/WR             bit2           TTL                    Input/Output or system bus Write (WR) control pin.

RE3/CAP4           bit3               ST                 Input/Output or Capture4 input pin

Legend: TTL = TTL input.          ST = Schmitt Trigger input

TABLE 10-10: REGISTERS/BITS ASSOCIATED WITH PORTE

Address Name       Bit 7 Bit 6 Bit 5 Bit 4                                  Bit 3  Bit 2  Bit 1     Bit 0  Value on                                     MCLR,
                                                                                                             POR,                                        WDT
                                                                                                             BOR

15h, Bank 1 PORTE  --             --                 --        --           RE3/CAP4 RE2/WR RE1/OE RE0/ALE ---- xxxx                                    ---- uuuu
14h, Bank 1 DDRE                                                                                                                             ---- 1111  ---- 1111
                   Data direction register for PORTE                                                                                                    uuuu uuuu
                                                                                                                                                        uuuu uuuu
14h, Bank 7 CA4L   Capture4 low byte                                                                       xxxx xxxx                                    -000 0000

15h, Bank 7 CA4H   Capture4 high byte                                                                      xxxx xxxx

16h, Bank 7 TCON3  -- CA4OVF CA3OVF CA4ED1 CA4ED0 CA3ED1 CA3ED0 PWM3ON -000 0000

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

1998 Microchip Technology Inc.                                                                             DS30289A-page 81
PIC17C7XX

10.6 PORTF and DDRF Registers                                Example 10-6 shows an instruction sequence to initial-
                                                             ize PORTF. The Bank Select Register (BSR) must be
PORTF is an 8-bit wide bi-directional port. The corre-       selected to Bank 5 for the port to be initialized. The fol-
sponding data direction register is DDRF. A '1' in DDRF      lowing example uses the MOVLB instruction to load the
configures the corresponding port pin as an input. A '0'     BSR register for bank selection.
in the DDRF register configures the corresponding port
pin as an output. Reading PORTF reads the status of          EXAMPLE 10-6: INITIALIZING PORTF
the pins, whereas writing to PORTF will write to the
respective port latch.                                       MOVLB          5         ; Select Bank 5
                                                             MOVLW          0x0E      ; Configure PORTF as
All eight bits of PORTF are multiplexed with 8 channels      MOVPF          ADCON1    ; Digital
of the 10-bit A/D converter.                                 CLRF           PORTF, F  ; Initialize PORTF data
                                                                                      ; latches before
Upon reset the entire Port is automatically configured       MOVLW           0x03     ; the data direction
as analog inputs, and must be configured in software to      MOVWF           DDRF     ; register
be a digital I/O.                                                                     ; Value used to init
                                                                                      ; data direction
                                                                                      ; Set RF<1:0> as inputs
                                                                                      ; RF<7:2> as outputs

FIGURE 10-13: BLOCK DIAGRAM OF RF7:RF0

Data bus          D  Q

                                                                            VDD

WR PORTF          CK Q

                                                                            P

                  Data Latch

                  D  Q                                                      N                   I/O pin

WR DDRF                                                                               ST
                                                                                      input
                  CK Q                                                      VSS       buffer

                  DDRF Latch

                     RD DDRF

                              Q                           D

                                                       EENN

RD PORTF

          PCFG3:PCFG0                                        To other pads

VAIN

          CHS3:CHS0                                          To other pads

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

DS30289A-page 82                                                                      1998 Microchip Technology Inc.
                                                                                              PIC17C7XX

TABLE 10-11: PORTF FUNCTIONS

Name             Bit Buffer Type                                                    Function

RF0/AN4          bit0             ST        Input/Output or analog input 4
RF1/AN5                                     Input/Output or analog input 5
                 bit1             ST        Input/Output or analog input 6
                                            Input/Output or analog input 7
RF2/AN6          bit2             ST        Input/Output or analog input 8
                                            Input/Output or analog input 9
RF3/AN7          bit3             ST        Input/Output or analog input 10
                                            Input/Output or analog input 11
RF4/AN8          bit4             ST

RF5/AN9          bit5             ST

RF6/AN10         bit6             ST

RF7/AN11         bit7             ST

Legend: ST = Schmitt Trigger input.

TABLE 10-12: REGISTERS/BITS ASSOCIATED WITH PORTF

Address Name     Bit 7 Bit 6 Bit 5 Bit 4            Bit 3  Bit 2  Bit 1                       Bit 0  Value on  MCLR,
                                                                                                       POR,     WDT
                                                                                                       BOR

10h,      DDRF   Data Direction Register for PORTF                                                   1111 1111 1111 1111
Bank 5

11h,      PORTF  RF7/ RF6/            RF5/  RF4/    RF3/   RF2/   RF1/                        RF0/ 0000 0000 0000 0000
Bank 5           AN11 AN10            AN9   AN8     AN7    AN6    AN5                         AN4

15h,      ADCON1 ADCS1 ADCS0 ADFM           --      PCFG3 PCFG2 PCFG1 PCFG0 000- 0000 000- 0000

Bank 5

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

1998 Microchip Technology Inc.                                                                        DS30289A-page 83
PIC17C7XX

10.7 PORTG and DDRG Registers                                Example 10-7 shows the instruction sequence to initial-
                                                             ize PORTG. The Bank Select Register (BSR) must be
PORTG is an 8-bit wide bi-directional port. The corre-       selected to Bank 5 for the port to be initialized. The fol-
sponding data direction register is DDRG. A '1' in           lowing example uses the MOVLB instruction to load the
DDRG configures the corresponding port pin as an             BSR register for bank selection.
input. A '0' in the DDRG register configures the corre-
sponding port pin as an output. Reading PORTG                EXAMPLE 10-7: INITIALIZING PORTG
reads the status of the pins, whereas writing to
PORTG will write to the port latch.                          MOVLB          5         ; Select Bank 5
                                                             MOVLW          0x0E      ; Configure PORTG as
The lower four bits of PORTG are multiplexed with four       MOVPF          ADCON1    ; digital
channels of the 10-bit A/D converter.                        CLRF           PORTG, F  ; Initialize PORTG data
                                                                                      ; latches before
The remaining bits of PORTG are multiplexed with             MOVLW           0x03     ; the data direction
peripheral output and inputs. RG4 is multiplexed with        MOVWF           DDRG     ; register
the CAP3 input, RG5 is multiplexed with the PWM3                                      ; Value used to init
output, RG6 and RG7 are multiplexed with the                                          ; data direction
USART2 functions.                                                                     ; Set RG<1:0> as inputs
                                                                                      ; RG<7:2> as outputs
Upon reset RG3:RG0 is automatically configured as
analog inputs, and must be configured in software to
be a digital I/O.

FIGURE 10-14: BLOCK DIAGRAM OF RG3:RG0

Data bus          D  Q
WR PORTG
                    CK Q                                                    VDD
                  Data Latch                                                 P

                  D  Q                                                                                           I/O pin
                                                                             N
WR DDRG                                                                     VSS

                     CK Q                                                                              ST
                  DDRG Latch                                                                           input
                                                                                                       buffer
                     RD DDRG

                              Q                          D

                                                       EENN

RD PORTG

          PCFG3:PCFG0                                        To other pads

VAIN

                     CHS3:CHS0                               To other pads
Note: I/O pins have protection diodes to VDD and VSS.

DS30289A-page 84                                                                      1998 Microchip Technology Inc.
FIGURE 10-15: RG4 BLOCK DIAGRAM                                     PIC17C7XX

                                     D                 Q             Peripheral Data In
                                                                                Data Bus
                                     EENN
                                                                            RD_PORTG
   VDD                                                           D         WR_PORTG

     P                                                    Q  CK               RD_DDRG
                                                                             WR_DDRG
                                                          Q      D
                                                                     Peripheral Data In
   N                                                                             Data Bus
                                                      Q CK
                                                                            RD_PORTG
   Note: I/O pin has protection diodes to VDD and Vss.                      WR_PORTG

FIGURE 10-16: RG7:RG5 BLOCK DIAGRAM                                           RD_DDRG
                                                                              WR_DDRG
                                        D                 Q
                                                                                OUTPUT
                                        NEN                         OUTPUT ENABLE

                                        Port              Q      D                     DS30289A-page 85

VDD                                     Data                 CK

                                  1                       Q

P                                 0

                                                          Q      D

N                                                            CK

                                                          QR

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

1998 Microchip Technology Inc.
PIC17C7XX

TABLE 10-13: PORTG FUNCTIONS

Name               Bit   Buffer Type                                          Function
                               ST
RG0/AN3            bit0        ST     Input/Output or analog input 3.
                               ST     Input/Output or analog input 2.
RG1/AN2            bit1        ST     Input/Output or analog input 1 or the ground reference voltage
                               ST     Input/Output or analog input 0 or the positive reference voltage
RG2/AN1/VREF- bit2             ST     Input/Output or the Capture3 input pin.
                               ST     Input/Output or the PWM3 output pin.
RG3/AN0/VREF+ bit3                    Input/Output or the USART2 (SCI) Asynchronous Receive or USART2
                                      (SCI) Synchronous Data.
RG4/CAP3           bit4               Input/Output or the USART2 (SCI) Asynchronous Transmit or USART2
                                      (SCI) Synchronous Clock.
RG5/PWM3           bit5

RG6/RX2/DT2        bit6

RG7/TX2/CK2        bit7  ST

Legend: ST = Schmitt Trigger input.

TABLE 10-14: REGISTERS/BITS ASSOCIATED WITH PORTG

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3                        Bit 2  Bit 1  Bit 0  Value on         MCLR,
                                                                                       POR,             WDT
                                                                                       BOR

12h, Bank 5 DDRG   Data Direction Register for PORTG                                   1111 1111        1111 1111
                                                                                                        uuuu 0000
13h, Bank 5 PORTG  RG7/ RG6/         RG5/             RG4/  RG3/  RG2/   RG1/   RG0/   xxxx 0000
                                                      CAP3  AN0   AN1    AN2    AN3                     000- 0000
                   TX2/CK2 RX2/DT2 PWM3

15h, Bank 5 ADCON1 ADCS1 ADCS0 ADFM                   --    PCFG3 PCFG2 PCFG1 PCFG0 000- 0000

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

DS30289A-page 86                                                                1998 Microchip Technology Inc.
                                                                                                           PIC17C7XX

10.8 PORTH and DDRH Registers                               EXAMPLE 10-8: INITIALIZING PORTH
          (PIC17C76X only)
                                                                                          MOVLB  8         ; Select Bank 8
PORTH is an 8-bit wide bi-directional port. The corre-                                    MOVLW  0x0E      ; Configure PORTH as
sponding data direction register is DDRH. A '1' in                                        MOVPF  ADCON1    ; digital
DDRH configures the corresponding port pin as an                                          CLRF   PORTH, F  ; Initialize PORTH data
input. A '0' in the DDRH register configures the corre-                                                    ; latches before
sponding port pin as an output. Reading PORTH                                             MOVLW   0x03     ; the data direction
reads the status of the pins, whereas writing to                                          MOVWF   DDRH     ; register
PORTH will write to the respective port latch.                                                             ; Value used to init
                                                                                                           ; data direction
The upper four bits of PORTH are multiplexed with                                                          ; Set RH<1:0> as inputs
4 channels of the 10-bit A/D converter.                                                                    ; RH<7:2> as outputs

The remaining bits of PORTH are general purpose I/O.

Upon reset RH7:RH4 is automatically configured as
analog inputs, and must be configured in software to
be a digital I/O.

Figure 10-17: Block Diagram of RH7:RH4

Data bus     D  Q

WR PORTH       CK Q                                                                              VDD
             Data Latch                                                                           P

             D  Q                                                                                                                     I/O pin
                                                                                                  N
WR DDRH                                                                                          VSS

                CK Q
             DDRH Latch

                RD DDRH                                                                                    ST
                                                                                                           input
                                                                                                           buffer

                                  Q                      D

                                     EENN

RD PORT

PCFG3:PCFG0                          To other pads
VAIN

CHS3:CHS0
                                                                           To other pads

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

1998 Microchip Technology Inc.                                                                           DS30289A-page 87
PIC17C7XX

Figure 10-18:RH3:RH0 Block Diagram

                                     D                 Q                                            Data Bus

                                     EENN

                                                                                                    RD_PORTH

          VDD                                                      D

                                                             CK                                     WR_PORTH

          P                                               Q

                                                          Q        D                                RD_DDRH
                                                                                                    WR_DDRH
          N
                                                             Q CK

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

TABLE 10-1: PORTH FUNCTIONS

Name               Bit Buffer Type                                           Function

RH0                bit0  ST                            Input/Output
RH1                                                    Input/Output
                   bit1  ST                            Input/Output
                                                       Input/Output
RH2                bit2  ST                            Input/Output or analog input 12
                                                       Input/Output or analog input 13
RH3                bit3  ST                            Input/Output or analog input 14
                                                       Input/Output or analog input 15
RH4/AN12           bit4  ST

RH5/AN13           bit5  ST

RH6/AN14           bit6  ST

RH7/AN15           bit7  ST

Legend: ST = Schmitt Trigger input.

TABLE 10-2: REGISTERS/BITS ASSOCIATED WITH PORTH

Address Name       Bit 7 Bit 6             Bit 5 Bit 4 Bit 3          Bit 2  Bit 1           Bit 0  Value on  MCLR,
                                                                                                      POR,     WDT
                                                                                                      BOR

10h, Bank 8 DDRH Data Direction Register for PORTH                                                  1111 1111 1111 1111

11h, Bank 8 PORTH  RH7/ RH6/               RH5/ RH4/ RH3              RH2               RH1  RH0 0000 xxxx 0000 uuuu
                   AN15 AN14               AN13 AN12

15h, Bank 5 ADCON1 ADCS1 ADCS0 ADFM                          -- PCFG3 PCFG2 PCFG1 PCFG0 000- 0000 000- 0000
Legend: x = unknown, u = unchanged.

DS30289A-page 88                                                                              1998 Microchip Technology Inc.
                                                                                     PIC17C7XX

10.9 PORTJ and DDRJ Registers                                       EXAMPLE 10-1: INITIALIZING PORTJ
          (PIC17C76X only)
                                                                    MOVLB  8         ; Select Bank 8
PORTJ is an 8-bit wide bi-directional port. The corre-              CLRF   PORTJ, F  ; Initialize PORTJ data
sponding data direction register is DDRJ. A '1' in                                   ; latches before setting
DDRJ configures the corresponding port pin as an                    MOVLW   0xCF     ; the data direction
input. A '0' in the DDRJ register configures the corre-             MOVWF   DDRJ     ; register
sponding port pin as an output. Reading PORTJ                                        ; Value used to initialize
reads the status of the pins, whereas writing to PORTJ                               ; data direction
will write to the respective port latch.                                             ; Set RJ<3:0> as inputs
                                                                                     ; RJ<5:4> as outputs
PORTJ is a general purpose I/O port.                                                 ; RJ<7:6> as inputs

Figure 10-19:PORTJ Block Diagram

                                  D                    Q                                 Data Bus

                                  EENN                                               RD_PORTJ
                                                                                     WR_PORTJ
VDD                                                              D
                                                                                       RD_DDRJ
P                                                         Q  CK                       WR_DDRJ

                                                          Q      D

N
                                                   Q CK

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

1998 Microchip Technology Inc.                                                     DS30289A-page 89
PIC17C7XX

TABLE 10-1: PORTJ FUNCTIONS

Name              Bit Buffer Type                          Function

RJ0               bit0  ST           Input/Output
                                     Input/Output
RJ1               bit1  ST           Input/Output
                                     Input/Output
RJ2               bit2  ST           Input/Output
                                     Input/Output
RJ3               bit3  ST           Input/Output
                                     Input/Output
RJ4               bit4  ST

RJ5               bit5  ST

RJ6               bit6  ST

RJ7               bit7  ST

Legend: ST = Schmitt Trigger input.

TABLE 10-2: REGISTERS/BITS ASSOCIATED WITH PORTJ

Address  Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3         Bit 2  Bit 1  Bit 0  Value on,  MCLR,
                                                    RJ2    RJ1             POR,      WDT
                                                                            BOR

12h, Bank 8 DDRJ Data Direction Register for PORTJ                          1111 1111 1111 1111
13h, Bank 8 PORTJ RJ7 RJ6 RJ5 RJ4 RJ3                             RJ0 xxxx xxxx uuuu uuuu
Legend: x = unknown, u = unchanged.

DS30289A-page 90                                                      1998 Microchip Technology Inc.
                                                                        PIC17C7XX

10.10 I/O Programming Considerations                          EXAMPLE 10-1: READ MODIFY WRITE
                                                                                      INSTRUCTIONS ON AN
10.10.1 BI-DIRECTIONAL I/O PORTS                                                      I/O PORT

Any instruction which writes, operates internally as a        ; Initial PORT settings: PORTB<7:4> Inputs
read followed by a write operation. For example, the
BCF and BSF instructions read the register into the           ;         PORTB<3:0> Outputs
CPU, execute the bit operation, and write the result
back to the register. Caution must be used when these         ; PORTB<7:6> have pull-ups and are
instructions are applied to a port with both inputs and
outputs defined. For example, a BSF operation on bit5         ; not connected to other circuitry
of PORTB will cause all eight bits of PORTB to be read
into the CPU. Then the BSF operation takes place on           ;
bit5 and PORTB is written to the output latches. If
another bit of PORTB is used as a bi-directional I/O pin      ;         PORT latch PORT pins
(e.g. bit0) and it is defined as an input at this time, the
input signal present on the pin itself would be read into     ;         ---------- ---------
the CPU and re-written to the data latch of this particu-
lar pin, overwriting the previous content. As long as the     ;
pin stays in the input mode, no problem occurs. How-
ever, if bit0 is switched into output mode later on, the         BCF PORTB, 7 ; 01pp pppp 11pp pppp
content of the data latch may now be unknown.
                                                                 BCF PORTB, 6 ; 10pp pppp 11pp pppp
Reading a port reads the values of the port pins. Writ-
ing to the port register writes the value to the port latch.       BCF DDRB, 7 ; 10pp pppp 11pp pppp
When using read-modify-write instructions (BCF, BSF,               BCF DDRB, 6 ; 10pp pppp 10pp pppp
BTG, etc.) on a port, the value of the port pins is read,     ;
the desired operation is performed with this value, and       ; Note that the user may have expected the
the value is then written to the port latch.                  ; pin values to be 00pp pppp. The 2nd BCF
                                                              ; caused RB7 to be latched as the pin value
Example 10-1 shows the possible effect of two sequen-         ; (High).
tial read-modify-write instructions on an I/O port.
                                                                 Note:  A pin actively outputting a Low or High
                                                                        should not be driven from external devices
                                                                        in order to change the level on this pin (i.e.
                                                                        "wired-or", "wired-and"). The resulting high
                                                                        output currents may damage the device.

1998 Microchip Technology Inc.                                        DS30289A-page 91
PIC17C7XX                                                         Figure 10-21 shows the I/O model which causes this
                                                                  situation. As the effective capacitance (C) becomes
10.10.2 SUCCESSIVE OPERATIONS ON I/O PORTS                        larger, the rise/fall time of the I/O pin increases. As the
                                                                  device frequency increases or the effective capaci-
The actual write to an I/O port happens at the end of an          tance increases, the possibility of this subsequent
instruction cycle, whereas for reading, the data must be          PORTx read-modify-write instruction issue increases.
valid at the beginning of the instruction cycle                   This effective capacitance includes the effects of the
(Figure 10-20). Therefore, care must be exercised if a            board traces.
write followed by a read operation is carried out on the
same I/O port. The sequence of instructions should be             The best way to address this is to add an series resistor
such to allow the pin voltage to stabilize (load depen-           at the I/O pin. This resistor allows the I/O pin to get to
dent) before executing the instruction that reads the             the desired level before the next instruction.
values on that I/O port. Otherwise, the previous state
of that pin may be read into the CPU rather than the              The use of NOP instructions between the subsequent
"new" state. When in doubt, it is better to separate              PORTx read-modify-write instructions, is a lower cost
these instructions with a NOP or another instruction not          solution, but has the issue that the number of NOP
accessing this I/O port.                                          instructions is dependent on the effective capacitance
                                                                  C and the frequency of the device.

FIGURE 10-20: SUCCESSIVE I/O OPERATION

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

                  PC  PC + 1                              PC + 2    PC + 3  This example shows a write to PORTB
                                                          NOP       NOP     followed by a read from PORTB.
Instruction       MOVWF PORTB MOVF PORTB,W
   fetched             write to                                             Note that:
                       PORTB
RB7:RB0                                                                    data setup time = (0.25TCY - TPD)

Instruction                                           Port pin      NOP     where TCY = instruction cycle
executed                                             sampled here                    TPD = propagation delay

                      MOVWF PORTB MOVF PORTB,W                              Therefore, at higher clock frequencies,
                           write to                                         a write followed by a read may be prob-
                           PORTB                                            lematic.

FIGURE 10-21: I/O CONNECTION ISSUES

PIC17CXXX                                        BSF PORTx, PINy            BSF PORTx, PINz

                                                 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1

I/O                                         VIL

                      C(1)PORTx, PINy

Note 1: This is not a capacitor to ground, but the effective        Read PORTx, PINy as low
            capacitive loading on the trace.                          BSF PORTx, PINz clears the value
                                                                      to be driven on the PORTx, PINy pin.

DS30289A-page 92                                                             1998 Microchip Technology Inc.
11.0 OVERVIEW OF TIMER                                                PIC17C7XX
         RESOURCES
                                                         11.3 Timer2 Overview
The PIC17C7XX has four timer modules. Each module
can generate an interrupt to indicate that an event has  The Timer2 module is an 8-bit timer/counter with an
occurred. These timers are called:                       8-bit period register (PR2). When the TMR2 value rolls
                                                         over from the period match value to 0h, the TMR2IF
Timer0 - 16-bit timer with programmable 8-bit          flag is set, and an interrupt will be generated if
   prescaler                                             enabled. In counter mode, the clock comes from the
                                                         RB4/TCLK12 pin, which can also provide the clock for
Timer1 - 8-bit timer                                   the Timer1 module.
Timer2 - 8-bit timer
Timer3 - 16-bit timer                                  TMR2 can be concatenated with TMR1 to form a
                                                         16-bit timer. The TMR2 register is the MSB and TMR1
For enhanced time-base functionality, four input Cap-    is the LSB. When in the 16-bit timer mode, there is a
tures and three Pulse Width Modulation (PWM) out-        corresponding 16-bit period register (PR2:PR1). When
puts are possible. The PWMs use the Timer1 and           the TMR2:TMR1 value rolls over from the period
Timer2 resources and the input Captures use the          match value to 0h, the TMR1IF flag is set, and an
Timer3 resource.                                         interrupt will be generated if enabled.

11.1 Timer0 Overview                                     11.4 Timer3 Overview

The Timer0 module is a simple 16-bit overflow counter.   The Timer3 module is a 16-bit timer/counter with a
The clock source can be either the internal system       16-bit period register. When the TMR3H:TMR3L value
clock (Fosc/4) or an external clock.                     rolls over to 0h, the TMR3IF bit is set and an interrupt
                                                         will be generated if enabled. In counter mode, the
When Timer0 uses an external clock source, it has the    clock comes from the RB5/TCLK3 pin.
flexibility to allow user selection of the incrementing
edge, rising or falling.                                 When operating in the four capture mode, the period
                                                         registers become the second (of four) 16-bit capture
The Timer0 module also has a programmable pres-          registers.
caler. The T0PS3:T0PS0 bits (T0STA<4:1>) determine
the prescale value. TMR0 can increment at the follow-    11.5 Role of the Timer/Counters
ing rates: 1:1, 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, 1:128,
1:256.                                                   The timer modules are general purpose, but have ded-
                                                         icated resources associated with them. TImer1 and
Synchronization of the external clock occurs after the   Timer2 are the time-bases for the three Pulse Width
prescaler. When the prescaler is used, the external      Modulation (PWM) outputs, while Timer3 is the
clock frequency may be higher than the device's fre-     time-base for the four input captures.
quency. The maximum external frequency, on the
T0CKI pin, is 50 MHz, given the high and low time
requirements of the clock.

11.2 Timer1 Overview

The Timer1 module is an 8-bit timer/counter with an
8-bit period register (PR1). When the TMR1 value rolls
over from the period match value to 0h, the TMR1IF
flag is set, and an interrupt will be generated if
enabled. In counter mode, the clock comes from the
RB4/TCLK12 pin, which can also be selected to be the
clock for the Timer2 module.

TMR1 can be concatenated with TMR2 to form a
16-bit timer. The TMR1 register is the LSB and TMR2
is the MSB. When in the 16-bit timer mode, there is a
corresponding 16-bit period register (PR2:PR1). When
the TMR2:TMR1 value rolls over from the period
match value to 0h, the TMR1IF flag is set, and an
interrupt will be generated if enabled.

1998 Microchip Technology Inc.                         DS30289A-page 93
PIC17C7XX

NOTES:

DS30289A-page 94   1998 Microchip Technology Inc.
                                                                                        PIC17C7XX

12.0 TIMER0

The Timer0 module consists of a 16-bit timer/counter,
TMR0. The high byte is register TMR0H and the low
byte is register TMR0L. A software programmable 8-bit
prescaler makes Timer0 an effective 24-bit overflow
timer. The clock source is software programmable as
either the internal instruction clock or an external clock
on the RA1/T0CKI pin. The control bits for this module
are in register T0STA (Figure 12-1).

FIGURE 12-1: T0STA REGISTER (ADDRESS: 05h, UNBANKED)

R/W - 0 R/W - 0  R/W - 0          R/W - 0  R/W - 0          R/W - 0  R/W - 0  U-0       R = Readable bit
INTEDG T0SE       T0CS            T0PS3    T0PS2            T0PS1    T0PS0     --       W = Writable bit
                                                                                        U = Unimplemented,
bit7                                                                              bit0
                                                                                             Read as '0'
                                                                                        -n = Value at POR reset

bit 7:  INTEDG: RA0/INT Pin Interrupt Edge Select bit
        This bit selects the edge upon which the interrupt is detected
        1 = Rising edge of RA0/INT pin generates interrupt
        0 = Falling edge of RA0/INT pin generates interrupt

bit 6:  T0SE: Timer0 Clock Input Edge Select bit
        This bit selects the edge upon which TMR0 will increment
        When T0CS = 0 (External Clock)
        1 = Rising edge of RA1/T0CKI pin increments TMR0 and/or sets the T0CKIF bit
        0 = Falling edge of RA1/T0CKI pin increments TMR0 and/or sets the T0CKIF bit
        When T0CS = 1 (Internal Clock)
        Don't care

bit 5:  T0CS: Timer0 Clock Source Select bit
        This bit selects the clock source for TMR0.
        1 = Internal instruction clock cycle (TCY)
        0 = External Clock input on the T0CKI pin

bit 4-1: T0PS3:T0PS0: Timer0 Prescale Selection bits
            These bits select the prescale value for TMR0.

        T0PS3:T0PS0 Prescale Value

        0000                       1:1
        0001                       1:2
        0010                       1:4
        0011                       1:8
        0100                      1:16
        0101                      1:32
        0110                      1:64
        0111                      1:128
        1xxx                      1:256

bit 0: Unimplemented: Read as '0'

1998 Microchip Technology Inc.                                                        DS30289A-page 95
PIC17C7XX                                                  12.2 Using Timer0 with External Clock

12.1 Timer0 Operation                                      When an external clock input is used for Timer0, it is
                                                           synchronized with the internal phase clocks.
When the T0CS (T0STA<5>) bit is set, TMR0 incre-           Figure 12-3 shows the synchronization of the external
ments on the internal clock. When T0CS is clear, TMR0      clock. This synchronization is done after the prescaler.
increments on the external clock (RA1/T0CKI pin). The      The output of the prescaler (PSOUT) is sampled twice
external clock edge can be selected in software. When      in every instruction cycle to detect a rising or a falling
the T0SE (T0STA<6>) bit is set, the timer will increment   edge. The timing requirements for the external clock
on the rising edge of the RA1/T0CKI pin. When T0SE         are detailed in the electrical specification section.
is clear, the timer will increment on the falling edge of
the RA1/T0CKI pin. The prescaler can be programmed         12.2.1 DELAY FROM EXTERNAL CLOCK EDGE
to introduce a prescale of 1:1 to 1:256. The timer incre-
ments from 0000h to FFFFh and rolls over to 0000h.         Since the prescaler output is synchronized with the
On overflow, the TMR0 Interrupt Flag bit (T0IF) is set.    internal clocks, there is a small delay from the time the
The TMR0 interrupt can be masked by clearing the cor-      external clock edge occurs to the time TMR0 is actually
responding TMR0 Interrupt Enable bit (T0IE). The           incremented. Figure 12-3 shows that this delay is
TMR0 Interrupt Flag bit (T0IF) is automatically cleared    between 3TOSC and 7TOSC. Thus, for example, mea-
when vectoring to the TMR0 interrupt vector.               suring the interval between two edges (e.g. period) will
                                                           be accurate within 4TOSC (121 ns @ 33 MHz).

FIGURE 12-2: TIMER0 MODULE BLOCK DIAGRAM

RA1/T0CKI                            0     Prescaler              Synchronization                Interrupt on overflow
                       Fosc/4 1            (8 stage                                                      sets T0IF
                                           async ripple
                                           counter)                                                   (INTSTA<5>)

                                                    4                              TMR0H<8> TMR0L<8>

                                                           PSOUT

               T0SE
           (T0STA<6>)

                                   T0CS    T0PS3:T0PS0            Q2  Q4
                               (T0STA<5>)  (T0STA<4:1>)

FIGURE 12-3: TMR0 TIMING WITH EXTERNAL CLOCK (INCREMENT ON FALLING EDGE)

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

                  Prescaler                                                        (note 3)
                       output                                                            (note 2)

                   (PSOUT)                 (note 1)                   T0 + 1       T0 + 2
                                               T0
                   Sampled
                  Prescaler

                      output

                  Increment
                       TMR0

                       TMR0

                               Note 1: The delay from the T0CKI edge to the TMR0 increment is 3Tosc to 7Tosc.
                                      2:  = PSOUT is sampled here.
                                      3: The PSOUT high time is too short and is missed by the sampling circuit.

DS30289A-page 96                                                                   1998 Microchip Technology Inc.
                                                                                      PIC17C7XX

12.3 Read/Write Consideration for TMR0                           12.3.2 WRITING A 16-BIT VALUE TO TMR0

Although TMR0 is a 16-bit timer/counter, only 8-bits at          Since writing to either TMR0L or TMR0H will effectively
a time can be read or written during a single instruction        inhibit increment of that half of the TMR0 in the next
cycle. Care must be taken during any read or write.              cycle (following write), but not inhibit increment of the
                                                                 other half, the user must write to TMR0L first and
12.3.1 READING 16-BIT VALUE                                      TMR0H second in two consecutive instructions, as
                                                                 shown in Example 12-2. The interrupt must be dis-
The problem in reading the entire 16-bit value is that           abled. Any write to either TMR0L or TMR0H clears the
after reading the low (or high) byte, its value may              prescaler.
change from FFh to 00h.
                                                                 EXAMPLE 12-2: 16-BIT WRITE
Example 12-1 shows a 16-bit read. To ensure a proper
read, interrupts must be disabled during this routine.           BSF      CPUSTA, GLINTD ; Disable interrupts
                                                                 MOVFP    RAM_L, TMR0L ;
EXAMPLE 12-1: 16-BIT READ                                        MOVFP    RAM_H, TMR0H ;
                                                                 BCF      CPUSTA, GLINTD ; Done, enable
MOVPF   TMR0L, TMPLO  ;read low tmr0
MOVPF   TMR0H, TMPHI  ;read high tmr0                                                                ; interrupts
MOVFP   TMPLO, WREG   ;tmplo -> wreg
CPFSLT  TMR0L         ;tmr0l < wreg?                             12.4 Prescaler Assignments
RETURN                ;no then return
MOVPF   TMR0L, TMPLO  ;read low tmr0                             Timer0 has an 8-bit prescaler. The prescaler selection
MOVPF   TMR0H, TMPHI  ;read high tmr0                            is fully under software control; i.e., it can be changed
RETURN                ;return                                    "on the fly" during program execution. Clearing the
                                                                 prescaler is recommended before changing its setting.
                                                                 The value of the prescaler is "unknown," and assigning
                                                                 a value that is less than the present value makes it dif-
                                                                 ficult to take this unknown time into account.

FIGURE 12-4: TMR0 TIMING: WRITE HIGH OR LOW BYTE

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

AD15:AD0     PC                   PC+1                     PC+2           PC+3        PC+4

        ALE

TMR0L        T0                   T0+1                     New T0 (NT0)               New T0+1

      Fetch                       MOVFP W,TMR0L MOVFP TMR0L,W MOVFP TMR0L,W MOVFP TMR0L,W

Instruction                       Write to TMR0L Read TMR0L               Read TMR0L  Read TMR0L
executed
                                                           (Value = NT0)  (Value = NT0) (Value = NT0 +1)

TMR0H

1998 Microchip Technology Inc.                                                            DS30289A-page 97
PIC17C7XX

FIGURE 12-5: TMR0 READ/WRITE IN TIMER MODE

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

            AD15:AD0
                    ALE

         WR_TRM0L
         WR_TMR0H
          RD_TMR0L

         TMR0H               12         12           13           AB

         TMR0L            FE            FF           56                    57                          58

                      MOVFP             MOVFP        MOVPF        MOVPF    MOVPF                       MOVPF

         Instruction  DATAL,TMR0L DATAH,TMR0H TMR0L,W             TMR0L,W  TMR0L,W                     TMR0L,W
             fetched
                      Write TMR0L Write TMR0H Read TMR0L Read TMR0L Read TMR0L Read TMR0L
         Instruction
          executed    Previously        MOVFP        MOVFP        MOVPF    MOVPF                       MOVPF
                      Fetched
                      Instruction       DATAL,TMR0L DATAH,TMR0H TMR0L,W    TMR0L,W                     TMR0L,W

                                        Write TMR0L Write TMR0H Read TMR0L Read TMR0L Read TMR0L

                             In this example, old TMR0 value is 12FEh, new value of AB56h is written.

TABLE 12-1: REGISTERS/BITS ASSOCIATED WITH TIMER0

Address  Name         Bit 7      Bit 6        Bit 5  Bit 4 Bit 3  Bit 2  Bit 1 Bit 0  Value on             MCLR, WDT
                                                                                        POR,
                                                                                        BOR

05h, Unbanked T0STA   INTEDG T0SE T0CS T0PS3 T0PS2 T0PS1 T0PS0 -- 0000 000- 0000 000-

06h, Unbanked CPUSTA  --           --        STKAV GLINTD TO      PD     POR BOR --11 11qq --11 qquu

07h, Unbanked INTSTA  PEIF T0CKIF T0IF               INTF PEIE T0CKIE T0IE INTE 0000 0000 0000 0000

0Bh, Unbanked TMR0L TMR0 register; low byte                                           xxxx xxxx uuuu uuuu

0Ch, Unbanked TMR0H TMR0 register; high byte                                          xxxx xxxx uuuu uuuu

Legend: x = unknown, u = unchanged, - = unimplemented read as a '0', q - value depends on condition, Shaded cells are not used by Timer0.

DS30289A-page 98                                                            1998 Microchip Technology Inc.
                                                                                PIC17C7XX

13.0 TIMER1, TIMER2, TIMER3,                              Six other registers comprise the Capture2, Capture3,
         PWMS AND CAPTURES                                and Capture4 registers (CA2H:CA2L, CA3H:CA3L,
                                                          and CA4H:CA4L).
The PIC17C7XX has a wealth of timers and time-based
functions to ease the implementation of control applica-  Figure 13-1, Figure 13-2, and Figure 13-3 are the con-
tions. These time-base functions include three PWM        trol registers for the operation of Timer1, Timer2, and
outputs and four Capture inputs.                          Timer3, as well as PWM1, PWM2, PWM3, Capture1,
                                                          Capture2, Capture3, and Capture4.
Timer1 and Timer2 are two 8-bit incrementing timers,
each with an 8-bit period register (PR1 and PR2           Table 13-1 shows the Timer resource requirements for
respectively) and separate overflow interrupt flags.      these time-base functions. Each timer is an open
Timer1 and Timer2 can operate either as timers (incre-    resource so that multiple functions may operate with it.
ment on internal Fosc/4 clock) or as counters (incre-
ment on falling edge of external clock on pin             TABLE 13-1: TIME-BASE FUNCTION /
RB4/TCLK12). They are also software configurable to                            RESOURCE
operate as a single 16-bit timer/counter. These timers                         REQUIREMENTS
are also used as the time-base for the PWM (Pulse
Width Modulation) modules.                                Time-base Function    Timer Resource
                                                          PWM1                  Timer1
Timer3 is a 16-bit timer/counter which uses the TMR3H     PWM2                  Timer1 or Timer2
and TMR3L registers. Timer3 also has two additional       PWM3                  Timer1 or Timer2
registers (PR3H/CA1H: PR3L/CA1L) that are config-         Capture1              Timer3
urable as a 16-bit period register or a 16-bit capture    Capture2              Timer3
register. TMR3 can be software configured to incre-       Capture3              Timer3
ment from the internal system clock (FOSC/4) or from      Capture4              Timer3
an external signal on the RB5/TCLK3 pin. Timer3 is the
time-base for all of the 16-bit captures.

FIGURE 13-1: TCON1 REGISTER (ADDRESS: 16h, BANK 3)

R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0                 R = Readable bit
CA2ED1 CA2ED0 CA1ED1 CA1ED0 T16 TMR3CS TMR2CS TMR1CS                            W = Writable bit
                                                                                -n = Value at POR reset
bit7                                                                      bit0

bit 7-6:  CA2ED1:CA2ED0: Capture2 Mode Select bits
          00 = Capture on every falling edge
          01 = Capture on every rising edge
          10 = Capture on every 4th rising edge
          11 = Capture on every 16th rising edge

bit 5-4:  CA1ED1:CA1ED0: Capture1 Mode Select bits
          00 = Capture on every falling edge
          01 = Capture on every rising edge
          10 = Capture on every 4th rising edge
          11 = Capture on every 16th rising edge

bit 3:    T16: Timer2:Timer1 Mode Select bit
          1 = Timer2 and Timer1 form a 16-bit timer
          0 = Timer2 and Timer1 are two 8-bit timers

bit 2:    TMR3CS: Timer3 Clock Source Select bit
          1 = TMR3 increments off the falling edge of the RB5/TCLK3 pin
          0 = TMR3 increments off the internal clock

bit 1:    TMR2CS: Timer2 Clock Source Select bit
          1 = TMR2 increments off the falling edge of the RB4/TCLK12 pin
          0 = TMR2 increments off the internal clock

bit 0:    TMR1CS: Timer1 Clock Source Select bit
          1 = TMR1 increments off the falling edge of the RB4/TCLK12 pin
          0 = TMR1 increments off the internal clock

1998 Microchip Technology Inc.                                                DS30289A-page 99
PIC17C7XX

FIGURE 13-2: TCON2 REGISTER (ADDRESS: 17h, BANK 3)

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

CA2OVF CA1OVF PWM2ON PWM1ON CA1/PR3 TMR3ON TMR2ON TMR1ON R = Readable bit

bit7                                                                  bit0 W = Writable bit
                                                                      -n = Value at POR reset

bit 7: CA2OVF: Capture2 Overflow Status bit

        This bit indicates that the capture value had not been read from the capture register pair (CA2H:CA2L)

        before the next capture event occurred. The capture register retains the oldest unread capture value (last

        capture before overflow). Subsequent capture events will not update the capture register with the TMR3

        value until the capture register has been read (both bytes).

        1 = Overflow occurred on Capture2 register

        0 = No overflow occurred on Capture2 register

bit 6:  CA1OVF: Capture1 Overflow Status bit
        This bit indicates that the capture value had not been read from the capture register pair
        (PR3H/CA1H:PR3L/CA1L) before the next capture event occurred. The capture register retains the old-
        est unread capture value (last capture before overflow). Subsequent capture events will not update the
        capture register with the TMR3 value until the capture register has been read (both bytes).
        1 = Overflow occurred on Capture1 register
        0 = No overflow occurred on Capture1 register

bit 5:  PWM2ON: PWM2 On bit
        1 = PWM2 is enabled

            (The RB3/PWM2 pin ignores the state of the DDRB<3> bit)
        0 = PWM2 is disabled

            (The RB3/PWM2 pin uses the state of the DDRB<3> bit for data direction)

bit 4:  PWM1ON: PWM1 On bit
        1 = PWM1 is enabled

            (The RB2/PWM1 pin ignores the state of the DDRB<2> bit)
        0 = PWM1 is disabled

            (The RB2/PWM1 pin uses the state of the DDRB<2> bit for data direction)

bit 3:  CA1/PR3: CA1/PR3 Register Mode Select bit
        1 = Enables Capture1

            (PR3H/CA1H:PR3L/CA1L is the Capture1 register. Timer3 runs without a period register)
        0 = Enables the Period register

            (PR3H/CA1H:PR3L/CA1L is the Period register for Timer3)

bit 2:  TMR3ON: Timer3 On bit
        1 = Starts Timer3
        0 = Stops Timer3

bit 1:  TMR2ON: Timer2 On bit
        This bit controls the incrementing of the TMR2 register. When TMR2:TMR1 form the 16-bit timer (T16 is
        set), TMR2ON must be set. This allows the MSB of the timer to increment.
        1 = Starts Timer2 (Must be enabled if the T16 bit (TCON1<3>) is set)
        0 = Stops Timer2

bit 0:  TMR1ON: Timer1 On bit
        When T16 is set (in 16-bit Timer Mode)
        1 = Starts 16-bit TMR2:TMR1
        0 = Stops 16-bit TMR2:TMR1

        When T16 is clear (in 8-bit Timer Mode)
        1 = Starts 8-bit Timer1
        0 = Stops 8-bit Timer1

DS30289A-page 100                                                      1998 Microchip Technology Inc.
                                                                                                              PIC17C7XX

FIGURE 13-3: TCON3 REGISTER (ADDRESS: 16h, BANK 7)

   U-0       R - 0 R - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0                                              R = Readable bit
    --    CA4OVF CA3OVF CA4ED1 CA4ED0 CA3ED1 CA3ED0 PWM3ON                                                    W = Writable bit
bit7                                                                                                          U = Unimplemented bit,
                                                                                                        bit0  Reads as `0'
bit 7:                                                                                                        -n = Value at POR reset
          Unimplemented: Read as `0'

bit 6:    CA4OVF: Capture4 Overflow Status bit
          This bit indicates that the capture value had not been read from the capture register pair (CA4H:CA4L)
          before the next capture event occurred. The capture register retains the oldest unread capture value (last
          capture before overflow). Subsequent capture events will not update the capture register with the TMR3
          value until the capture register has been read (both bytes).
          1 = Overflow occurred on Capture4 registers
          0 = No overflow occurred on Capture4 registers

bit 5:    CA3OVF: Capture3 Overflow Status bit
          This bit indicates that the capture value had not been read from the capture register pair (CA3H:CA3L)
          before the next capture event occurred. The capture register retains the oldest unread capture value (last
          capture before overflow). Subsequent capture events will not update the capture register with the TMR3
          value until the capture register has been read (both bytes).
          1 = Overflow occurred on Capture3 registers
          0 = No overflow occurred on Capture3 registers

bit 4-3:  CA4ED1:CA4ED0: Capture4 Mode Select bits
          00 = Capture on every falling edge
          01 = Capture on every rising edge
          10 = Capture on every 4th rising edge
          11 = Capture on every 16th rising edge

bit 2-1:  CA3ED1:CA3ED0: Capture3 Mode Select bits
          00 = Capture on every falling edge
          01 = Capture on every rising edge
          10 = Capture on every 4th rising edge
          11 = Capture on every 16th rising edge

bit 0:    PWM3ON: PWM3 On bit
          1 = PWM3 is enabled (The RG5/PWM3 pin ignores the state of the DDRG<5> bit)
          0 = PWM3 is disabled (The RG5/PWM3 pin uses the state of the DDRG<5> bit for data direction)

1998 Microchip Technology Inc.                                                                              DS30289A-page 101
PIC17C7XX

13.1 Timer1 and Timer2                                       13.1.1.1 EXTERNAL CLOCK INPUT FOR TIMER1
                                                                            AND TIMER2
13.1.1 TIMER1, TIMER2 IN 8-BIT MODE
                                                             When TMRxCS is set, the clock source is the
Both Timer1 and Timer2 will operate in 8-bit mode            RB4/TCLK12 pin, and the counter will increment on
when the T16 bit is clear. These two timers can be inde-     every falling edge on the RB4/TCLK12 pin. The
pendently configured to increment from the internal          TCLK12 input is synchronized with internal phase
instruction cycle clock (TCY) or from an external clock      clocks. This causes a delay from the time a falling edge
source on the RB4/TCLK12 pin. The timer clock source         appears on TCLK12 to the time TMR1 or TMR2 is actu-
is configured by the TMRxCS bit (x = 1 for Timer1 or =       ally incremented. For the external clock input timing
2 for Timer2). When TMRxCS is clear, the clock source        requirements, see the Electrical Specification section.
is internal and increments once every instruction cycle
(Fosc/4). When TMRxCS is set, the clock source is the
RB4/TCLK12 pin, and the counters will increment on
every falling edge of the RB4/TCLK12 pin.

The timer increments from 00h until it equals the Period
register (PRx). It then resets to 00h at the next incre-
ment cycle. The timer interrupt flag is set when the
timer is reset. TMR1 and TMR2 have individual inter-
rupt flag bits. The TMR1 interrupt flag bit is latched