MPIC16C63A/65B/73B/74B
28/40-Pin 8-Bit CMOS Microcontrollers
Device |
Pins |
A/D |
PSP |
|
|
|
|
|
|
|
|
PIC16C63A |
28 |
NO |
NO |
|
|
|
|
PIC16C73B |
28 |
YES |
NO |
|
|
|
|
PIC16C65B |
40 |
NO |
YES |
|
|
|
|
PIC16C74B |
40 |
YES |
YES |
|
|
|
|
Microcontroller Core Features:
•High-performance RISC CPU
•Only 35 single word instructions to learn
•All single cycle instructions except for program branches which are two cycle
•Operating speed: DC - 20 MHz clock input
DC - 200 ns instruction cycle
•4K x 14 words of Program Memory,
192 x 8 bytes of Data Memory (RAM)
•Interrupt capability (up to 12 internal/external interrupt sources)
•Eight level deep hardware stack
•Direct, indirect, and relative addressing modes
•Power-on Reset (POR)
•Power-up Timer (PWRT) and Oscillator Start-up Timer (OST)
•Watchdog Timer (WDT) with its own on-chip RC oscillator for reliable operation
•Programmable code-protection
•Power saving SLEEP mode
•Selectable oscillator options
•Low-power, high-speed CMOS EPROM technology
•Fully static design
•In-Circuit Serial Programming™ (ICSP)
•Wide operating voltage range: 2.5V to 5.5V
•High Sink/Source Current 25/25 mA
•Commercial, Industrial and Extended temperature ranges
•Low-power consumption:
-< 2 mA @ 5V, 4 MHz
-22.5 A typical @ 3V, 32 kHz
-< 1 A typical standby current
Pin Diagram
PDIP, Windowed CERDIP
MCLR/VPP |
1 |
|
40 |
RB7 |
RA0/AN0 |
2 |
|
39 |
RB6 |
RA1/AN1 |
3 |
|
38 |
RB5 |
RA2/AN2 |
4 |
|
37 |
RB4 |
RA3/AN3/VREF |
5 |
|
36 |
RB3 |
RA4/T0CKI |
6 |
PIC16C74B |
35 |
RB2 |
OSC2/CLKOUT |
14 |
27 |
RD4/PSP4 |
|
RA5/SS/AN4 |
7 |
|
34 |
RB1 |
RE0/RD/AN5 |
8 |
|
33 |
RB0/INT |
RE1/WR/AN6 |
9 |
|
32 |
VDD |
RE2/CS/AN7 |
10 |
|
31 |
VSS |
VDD |
11 |
|
30 |
RD7/PSP7 |
VSS |
12 |
|
29 |
RD6/PSP6 |
OSC1/CLKIN |
13 |
|
28 |
RD5/PSP5 |
RC0/T1OSO/T1CKI |
15 |
|
26 |
RC7/RX/DT |
RC1/T1OSI/CCP2 |
16 |
|
25 |
RC6/TX/CK |
RC2/CCP1 |
17 |
|
24 |
RC5/SDO |
RC3/SCK/SCL |
18 |
|
23 |
RC4/SDI/SDA |
RD0/PSP0 |
19 |
|
22 |
RD3/PSP3 |
RD1/PSP1 |
20 |
|
21 |
RD2/PSP2 |
Peripheral Features:
• Timer0: 8-bit timer/counter with 8-bit prescaler
• Timer1: 16-bit timer/counter with prescaler, can be incremented during sleep via external crystal/clock
• Timer2: 8-bit timer/counter with 8-bit period register, prescaler and postscaler
• Two Capture, Compare, PWM modules
• Capture is 16-bit, max. resolution is 12.5 ns, Compare is 16-bit, max. resolution is 200 ns, PWM maximum resolution is 10-bit
• 8-bit multi-channel Analog-to-Digital converter
• Synchronous Serial Port (SSP) with Enhanced SPI and I2C
• Universal Synchronous Asynchronous Receiver
Transmitter (USART/SCI)
• Parallel Slave Port (PSP) 8-bits wide, with external RD, WR and CS controls
• Brown-out detection circuitry for Brown-out Reset (BOR)
1998 Microchip Technology Inc. |
DS30605A-page 1 |
PIC16C63A/65B/73B/74B
Pin Diagrams
SDIP, SOIC, SSOP, Windowed CERDIP
MCLR/VPP |
• 1 |
28 |
RB7 |
RA0/AN0 |
2 |
27 |
RB6 |
RA1/AN1 |
3 |
26 |
RB5 |
RA2/AN2 |
4 |
25 |
RB4 |
RA3/AN3/VREF |
5 |
24 |
RB3 |
RA4/T0CKI |
6 |
23 |
RB2 |
RA5/SS/AN4 |
7 |
22 |
RB1 |
VSS |
8 |
21 |
RB0/INT |
OSC1/CLKIN |
9 |
20 |
VDD |
OSC2/CLKOUT |
10 |
19 |
VSS |
RC0/T1OSO/T1CKI |
11 |
18 |
RC7/RX/DT |
RC1/T1OSI/CCP2 |
12 |
17 |
RC6/TX/CK |
RC2/CCP1 |
13 |
16 |
RC5/SDO |
RC3/SCK/SCL |
14 |
15 |
RC4/SDI/SDA |
PIC16C73B
PDIP, Windowed CERDIP
MCLR/VPP |
1 |
40 |
RB7 |
RA0 |
2 |
39 |
RB6 |
RA1 |
3 |
38 |
RB5 |
RA2 |
4 |
37 |
RB4 |
RA3 |
5 |
36 |
RB3 |
RA4/T0CKI |
6 |
35 |
RB2 |
RA5/SS |
7 |
34 |
RB1 |
RE0/RD |
8 |
33 |
RB0/INT |
RE1/WR |
9 |
32 |
VDD |
RE2/CS |
10 |
31 |
VSS |
VDD |
11 |
30 |
RD7/PSP7 |
VSS |
12 |
29 |
RD6/PSP6 |
OSC1/CLKIN |
13 |
28 |
RD5/PSP5 |
OSC2/CLKOUT |
14 |
27 |
RD4/PSP4 |
RC0/T1OSO/T1CKI |
15 |
26 |
RC7/RX/DT |
RC1/T1OSI/CCP2 |
16 |
25 |
RC6/TX/CK |
RC2/CCP1 |
17 |
24 |
RC5/SDO |
RC3/SCK/SCL |
18 |
23 |
RC4/SDI/SDA |
RD0/PSP0 |
19 |
22 |
RD3/PSP3 |
RD1/PSP1 |
20 |
21 |
RD2/PSP2 |
PIC16C65B
PLCC |
|
|
|
|
MCLR/VPP |
|
|
|
|
|
|
|
|
RA3 |
RA2 |
RA1 |
RA0 |
NC |
RB7 |
RB6 |
RB5 |
RB4 |
NC |
|
|
|
6 5 4 3 |
2 1 |
44 43 |
42 41 |
40 |
|
||||||
RA4/T0CKI |
7 |
|
|
|
|
|
|
|
|
|
39 |
RB3 |
RA5/SS |
8 |
|
|
|
|
|
|
|
|
|
38 |
RB2 |
RE0/RD |
9 |
|
|
|
|
|
|
|
|
|
37 |
RB1 |
RE1/WR |
10 |
|
|
|
|
|
|
|
|
|
36 |
RB0/INT |
RE2/CS |
11 |
|
|
|
|
|
|
|
|
|
35 |
VDD |
VDD |
12 |
PIC16C65B |
34 |
VSS |
||||||||
VSS |
13 |
33 |
RD7/PSP7 |
|||||||||
OSC1/CLKIN |
14 |
|
|
|
|
|
|
|
|
|
32 |
RD6/PSP6 |
OSC2/CLKOUT |
15 |
|
|
|
|
|
|
|
|
|
31 |
RD5/PSP5 |
RC0/T1OSO/T1CKI |
16 |
|
|
|
|
|
|
|
|
|
30 |
RD4/PSP4 |
NC |
17 |
|
|
|
|
|
|
|
|
|
29 |
RC7/RX/DT |
|
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
|
|
RC1/T1OSI/CCP2 |
RC2/CCP1 |
RC3/SCK/SCL |
RD0/PSP0 |
RD1/PSP1 |
RD2/PSP2 |
RD3/PSP3 |
RC4/SDI/SDA |
RC5/SDO |
RC6/TX/CK |
NC |
|
SDIP, SOIC, SSOP, Windowed CERDIP
MCLR/VPP |
• 1 |
28 |
RB7 |
RA0 |
2 |
27 |
RB6 |
RA1 |
3 |
26 |
RB5 |
RA2 |
4 |
25 |
RB4 |
RA3 |
5 |
24 |
RB3 |
RA4/T0CKI |
6 |
23 |
RB2 |
RA5/SS |
7 |
22 |
RB1 |
VSS |
8 |
21 |
RB0/INT |
OSC1/CLKIN |
9 |
20 |
VDD |
OSC2/CLKOUT |
10 |
19 |
VSS |
RC0/T1OSO/T1CKI |
11 |
18 |
RC7/RX/DT |
RC1/T1OSI/CCP2 |
12 |
17 |
RC6/TX/CK |
RC2/CCP1 |
13 |
16 |
RC5/SDO |
RC3/SCK/SCL |
14 |
15 |
RC4/SDI/SDA |
PIC16C63A
MQFP |
|
RC6/TX/CK |
RC5/SDO |
RC4/SDI/SDA |
RD3/PSP3 |
RD2/PSP2 |
RD1/PSP1 |
RD0/PSP0 |
RC3/SCK/SCL |
RC2/CCP1 |
RC1/T1OSI/CCP2 |
NC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TQFP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RC7/RX/DT |
1 |
44 |
43 |
42 |
41 |
40 |
39 |
38 37 |
36 |
35 |
34 |
33 |
NC |
|
|
|
|
|
|
|
|
|
|
|
|
||||
RD4/PSP4 |
2 |
|
|
|
|
|
|
|
|
|
|
|
32 |
RC0/T1OSO/T1CKI |
RD5/PSP5 |
3 |
|
|
|
|
|
|
|
|
|
|
|
31 |
OSC2/CLKOUT |
RD6/PSP6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
30 |
OSC1/CLKIN |
RD7/PSP7 |
5 |
|
PIC16C65B |
29 |
VSS |
|||||||||
VSS |
6 |
|
28 |
VDD |
||||||||||
VDD |
7 |
|
27 |
RE2/CS |
||||||||||
RB0/INT |
8 |
|
|
|
|
|
|
|
|
|
|
|
26 |
RE1/WR |
RB1 |
9 |
|
|
|
|
|
|
|
|
|
|
|
25 |
RE0/RD |
RB2 |
10 |
|
|
|
|
|
|
|
|
|
|
24 |
RA5/SS |
|
RB3 |
11 |
|
|
|
|
|
|
|
|
|
|
23 |
RA4/T0CKI |
|
|
|
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
|
|
|
|
NC NC |
RB4 |
RB5 |
RB6 |
RB7 |
MCLR/VPP |
RA0 |
RA1 |
RA2 |
RA3 |
|
|
DS30605A-page 2 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
Pin Diagrams (Cont.’d)
|
REF |
RA2/AN2 |
RA1/AN1 |
RA0/AN0 |
MCLR/VPP |
NC |
RB7 |
RB6 |
RB5 |
RB4 |
NC |
|
PLCC |
RA3/AN3/V |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 5 4 3 |
2 1 |
44 43 |
42 41 |
40 |
|
||||||
RA4/T0CKI |
7 |
|
|
|
|
|
|
|
|
|
39 |
RB3 |
RA5/SS/AN4 |
8 |
|
|
|
|
|
|
|
|
|
38 |
RB2 |
RE0/RD/AN5 |
9 |
|
|
|
|
|
|
|
|
|
37 |
RB1 |
RE1/WR/AN6 |
10 |
|
|
|
|
|
|
|
|
|
36 |
RB0/INT |
RE2/CS/AN7 |
11 |
|
|
|
|
|
|
|
|
|
35 |
VDD |
VDD |
12 |
PIC16C74B |
34 |
VSS |
||||||||
VSS |
13 |
33 |
RD7/PSP7 |
|||||||||
OSC1/CLKIN |
14 |
|
|
|
|
|
|
|
|
|
32 |
RD6/PSP6 |
OSC2/CLKOUT |
15 |
|
|
|
|
|
|
|
|
|
31 |
RD5/PSP5 |
RC0/T1OSO/T1CKI |
16 |
|
|
|
|
|
|
|
|
|
30 |
RD4/PSP4 |
NC |
17 |
|
|
|
|
|
|
|
|
|
29 |
RC7/RX/DT |
|
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
|
|
RC1/T1OSI/CCP2 |
RC2/CCP1 |
RC3/SCK/SCL |
RD0/PSP0 |
RD1/PSP1 |
RD2/PSP2 |
RD3/PSP3 |
RC4/SDI/SDA |
RC5/SDO |
RC6/TX/CK |
NC |
|
MQFP TQFP
RC7/RX/DT
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7 VSS VDD
RB0/INT
RB1
RB2
RB3
|
RC6/TX/CK |
1 |
44 |
|
|
2 |
|
3 |
|
4 |
|
5
6
7
8
9
10
11 12
NC
RC5/SDO |
RC4/SDI/SDA |
RD3/PSP3 |
RD2/PSP2 |
RD1/PSP1 |
RD0/PSP0 RC3/SCK/SCL |
RC2/CCP1 |
RC1/T1OSI/CCP2 |
NC |
43 |
42 |
41 |
40 |
39 |
38 37 |
36 |
35 |
34 |
PIC16C74B
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
NC |
RB4 |
RB5 |
RB6 |
RB7 |
MCLR/VPP |
RA0/AN0 |
RA1/AN1 |
RA2/AN2 |
RA3/AN3/VREF |
33 |
NC |
32 |
RC0/T1OSO/T1CKI |
31 |
OSC2/CLKOUT |
30 |
OSC1/CLKIN |
29 |
VSS |
28 |
VDD |
27 |
RE2/CS/AN7 |
26 |
RE1/WR/AN6 |
25 |
RE0/RD/AN5 |
24 |
RA5/SS/AN4 |
23 |
RA4/T0CKI |
Key Features |
|
|
|
|
|
PICmicro Mid-Range Reference Manual |
PIC16C63A |
PIC16C65B |
|
PIC16C73B |
PIC16C74B |
(DS33023) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Operating Frequency |
DC - 20 MHz |
DC - 20 MHz |
|
DC - 20 MHz |
DC - 20 MHz |
|
|
|
|
|
|
Resets (and Delays) |
POR, BOR |
POR, BOR |
|
POR, BOR |
POR, BOR |
|
(PWRT, OST) |
(PWRT, OST) |
|
(PWRT, OST) |
(PWRT, OST) |
|
|
|
|
|
|
Program Memory (14-bit words) |
4K |
4K |
|
4K |
4K |
|
|
|
|
|
|
Data Memory (bytes) |
192 |
192 |
|
192 |
192 |
|
|
|
|
|
|
Interrupts |
10 |
11 |
|
11 |
12 |
|
|
|
|
|
|
I/O Ports |
Ports A,B,C |
Ports A,B,C,D,E |
|
Ports A,B,C |
Ports A,B,C,D,E |
|
|
|
|
|
|
Timers |
3 |
3 |
|
3 |
3 |
|
|
|
|
|
|
Capture/Compare/PWM modules |
2 |
2 |
|
2 |
2 |
|
|
|
|
|
|
Serial Communications |
SSP, USART |
SSP, USART |
|
SSP, USART |
SSP, USART |
|
|
|
|
|
|
Parallel Communications |
— |
PSP |
|
— |
PSP |
|
|
|
|
|
|
8-bit Analog-to-Digital Module |
— |
— |
5 |
input channels |
8 input channels |
|
|
|
|
|
|
Instruction Set |
35 Instructions |
35 Instructions |
|
35 Instructions |
35 Instructions |
|
|
|
|
|
|
1998 Microchip Technology Inc. |
DS30605A-page 3 |
PIC16C63A/65B/73B/74B |
|
|
Table of Contents |
|
|
1.0 |
Device Overview .......................................................................................................................................................................... |
5 |
2.0 |
Memory Organization ................................................................................................................................................................. |
11 |
3.0 |
I/O Ports ..................................................................................................................................................................................... |
25 |
4.0 |
Timer0 Module ........................................................................................................................................................................... |
37 |
5.0 |
Timer1 Module ........................................................................................................................................................................... |
39 |
6.0 |
Timer2 Module ........................................................................................................................................................................... |
43 |
7.0 |
Capture/Compare/PWM (CCP) Module(s) ................................................................................................................................. |
45 |
8.0 |
Synchronous Serial Port (SSP) Module ..................................................................................................................................... |
51 |
9.0 |
Universal Synchronous Asynchronous Receiver Transmitter (USART) .................................................................................... |
61 |
10.0 |
Analog - to - Digital Converter (A/D) Module .................................................................................................................................. |
75 |
11.0 |
Special Features of the CPU ...................................................................................................................................................... |
81 |
12.0 |
Instruction Set Summary ............................................................................................................................................................ |
95 |
13.0 |
Development Support ................................................................................................................................................................ |
97 |
14.0 |
Electrical Characteristics .......................................................................................................................................................... |
101 |
15.0 |
DC and AC Characteristics Graphs and Tables ....................................................................................................................... |
123 |
16.0 |
Packaging Information ............................................................................................................................................................. |
125 |
Appendix A: Revision History ........................................................................................................................................................... |
137 |
|
Appendix B: Device Differences ....................................................................................................................................................... |
137 |
|
Appendix C: Conversion Considerations .......................................................................................................................................... |
137 |
|
Appendix D: Migration from Baseline to Midrange Devices.............................................................................................................. |
138 |
|
Appendix E: Bit/Register Cross-Reference List ................................................................................................................................ |
139 |
|
Index |
.................................................................................................................................................................................................. |
141 |
On-Line .................................................................................................................................................................................Support |
147 |
|
Reader ..............................................................................................................................................................................Response |
148 |
|
PIC16C63A/65B/73B/74B ..................................................................................................................Product Identification System |
149 |
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 revision of silicon and revision of document to which it applies.
To determine if an errata sheet exists for a particular device, please check with one of the following:
•Microchip’s worldwide web site at 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 literature 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, or
•E-mail us at webmaster@microchip.com.
We appreciate your assistance in making this a better document.
DS30605A-page 4 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
1.0DEVICE OVERVIEW
This document contains device-specific information. Additional information may be found in the PICmicro Mid-Range Reference Manual (DS33023) which may be obtained from your local Microchip Sales Representative or downloaded from the Microchip web site. The Reference Manual should be considered a complementary document to this data sheet, and is highly recommended reading for a better understanding of the device architecture and operation of the peripheral modules.
There are four devices (PIC16C63A, PIC16C65B, PIC16C73B, PIC16C74B) covered by this data sheet. These devices come in 28and 40-pin packages. The 28-pin devices do not have a Parallel Slave Port implemented. The PIC16C6X devices do not have the A/D module implemented.
The following two figures are device block diagrams sorted by pin number; 28-pin for Figure 1-1 and 40-pin for Figure 1-2. The 28-pin and 40-pin pinouts are listed in Table 1-1 and Table 1-2 respectively.
FIGURE 1-1: PIC16C63A/PIC16C73B BLOCK DIAGRAM
13 |
|
Data Bus |
8 |
|
Program Counter |
|
|
|
|
|
|
EPROM |
|
|
|
4K x 14 |
|
RAM |
|
Program |
8 Level Stack |
|
|
192 x 8 |
|
||
Memory |
(13-bit) |
|
|
|
File |
|
|
|
|
|
|
|
|
Registers |
|
Program |
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAM Addr(1) |
|
|
|
9 |
|
|
|
|
|||||||
Bus |
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
Addr MUX |
|
|
|
||||||
|
|
Instruction reg |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
Direct Addr 7 |
|
|
|
|
|
|
|
8 |
|
Indirect |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Addr |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FSR reg
|
8 |
STATUS reg |
|
|
|
||
|
|
3 |
|
|
Power-up |
MUX |
|
|
Timer |
|
|
Instruction |
Oscillator |
|
|
Decode & |
Start-up Timer |
ALU |
|
Control |
Power-on |
||
|
|||
|
8 |
||
|
Reset |
||
Timing |
Watchdog |
W reg |
|
Generation |
Timer |
||
|
|||
OSC1/CLKIN |
Brown-out |
|
|
OSC2/CLKOUT |
Reset |
|
PORTA
RA0/AN0(2)
RA1/AN1(2)
RA2/AN2(2)
RA3/AN3/VREF(2)
RA4/T0CKI
RA5/SS/AN4(2)
PORTB
RB0/INT
RB7:RB1
PORTC
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK RC7/RX/DT
MCLR VDD, VSS
Timer0 |
|
Timer1 |
|
Timer2 |
|
A/D(2) |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CCP1 |
|
CCP2 |
|
Synchronous |
|
USART |
|
|
Serial Port |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note 1: Higher order bits are from the STATUS register.
2: The A/D module is not available on the PIC16C63A.
1998 Microchip Technology Inc. |
DS30605A-page 5 |
PIC16C63A/65B/73B/74B
FIGURE 1-2: PIC16C65B/PIC16C74B BLOCK DIAGRAM
13 |
|
Data Bus |
8 |
|
Program Counter |
|
|
EPROM |
|
|
|
|
|
|
|
4K x 14 |
|
RAM |
|
Program |
8 Level Stack |
|
|
192 x 8 |
|
||
(13-bit) |
|
||
Memory |
|
||
File |
|
||
|
|
|
|
|
|
Registers |
|
Program |
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RAM Addr (1) |
|
|
|
9 |
|
|
|
|
|||||||
Bus |
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
Addr MUX |
|
|
|
||||||
|
|
Instruction reg |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
Direct Addr 7 |
|
|
|
|
|
|
|
8 |
|
Indirect |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Addr |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FSR reg
|
|
8 |
|
STATUS reg |
|
|
|
|
|
|
|
Power-up |
3 |
MUX |
|
|
|
||
|
|
Timer |
|
|
|
Instruction |
Oscillator |
|
|
|
Decode & |
Start-up Timer |
|
ALU |
|
Control |
Power-on |
|
|
|
|
|
||
|
|
8 |
|
|
|
|
Reset |
|
|
|
Timing |
Watchdog |
|
W reg |
|
Generation |
Timer |
|
|
|
|
|
||
OSC1/CLKIN |
|
Brown-out |
|
|
OSC2/CLKOUT |
|
Reset |
|
|
|
|
|
|
|
|
|
|
|
Parallel Slave Port |
|
|
MCLR VDD, VSS |
|
|
Timer0 |
Timer1 |
Timer2 |
|
A/D(2) |
PORTA
RA0/AN0(2)
RA1/AN1(2)
RA2/AN2(2)
RA3/AN3/VREF(2)
RA4/T0CKI
RA5/SS/AN4(2)
PORTB
RB0/INT
RB7:RB1
PORTC
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO RC6/TX/CK
RC7/RX/DT
PORTD
RD7/PSP7:RD0/PSP0
PORTE
RE0/RD/AN5(2)
RE1/WR/AN6(2)
RE2/CS/AN7(2)
CCP1 |
|
|
CCP2 |
|
Synchronous |
|
|
USART |
|
|
|
Serial Port |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note 1: |
Higher order bits are from the STATUS register. |
|
||||||
2: The A/D module is not available on the PIC16C65B. |
|
DS30605A-page 6 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
TABLE 1-1: |
PIC16C63A/PIC16C73B PINOUT DESCRIPTION |
||||||||
|
|
|
|
|
|
|
|
|
|
Pin Name |
|
DIP |
SOIC |
I/O/P |
Buffer |
|
Description |
||
|
Pin# |
Pin# |
Type |
Type |
|
||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
OSC1/CLKIN |
|
9 |
9 |
I |
ST/CMOS(3) |
|
Oscillator crystal input/external clock source input. |
||
|
OSC2/CLKOUT |
|
10 |
10 |
O |
— |
|
Oscillator crystal output. Connects to crystal or resonator in |
|
|
|
|
|
|
|
|
|
|
crystal oscillator mode. In RC mode, the OSC2 pin outputs |
|
|
|
|
|
|
|
|
|
CLKOUT which has 1/4 the frequency of OSC1, and denotes |
|
|
|
|
|
|
|
|
|
the instruction cycle rate. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
I/P |
ST |
|
Master clear (reset) input or programming voltage input. This |
|
MCLR/VPP |
||||||||
|
|
|
|
|
|
|
|
|
pin is an active low reset to the device. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTA is a bi-directional I/O port. |
RA0/AN0(4) |
|
2 |
2 |
I/O |
TTL |
|
RA0 can also be analog input0 |
||
RA1/AN1(4) |
|
3 |
3 |
I/O |
TTL |
|
RA1 can also be analog input1 |
||
RA2/AN2(4) |
|
4 |
4 |
I/O |
TTL |
|
RA2 can also be analog input2 |
||
RA3/AN3/VREF(4) |
|
5 |
5 |
I/O |
TTL |
|
RA3 can also be analog input3 or analog reference voltage |
||
RA4/T0CKI |
|
6 |
6 |
I/O |
ST |
|
RA4 can also be the clock input to the Timer0 module. |
||
|
|
|
|
|
|
|
|
|
Output is open drain type. |
RA5/SS/AN4(4) |
|
7 |
7 |
I/O |
TTL |
|
RA5 can also be analog input4 or the slave select for the |
||
|
|
|
|
|
|
|
|
|
synchronous serial port. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTB is a bi-directional I/O port. PORTB can be software |
|
|
|
|
|
|
|
|
|
programmed for internal weak pull-up on all inputs. |
RB0/INT |
|
21 |
21 |
I/O |
TTL/ST(1) |
|
RB0 can also be the external interrupt pin. |
||
RB1 |
|
22 |
22 |
I/O |
TTL |
|
|
||
RB2 |
|
23 |
23 |
I/O |
TTL |
|
|
||
RB3 |
|
24 |
24 |
I/O |
TTL |
|
|
||
RB4 |
|
25 |
25 |
I/O |
TTL |
|
Interrupt on change pin. |
||
RB5 |
|
26 |
26 |
I/O |
TTL |
|
Interrupt on change pin. |
||
RB6 |
|
27 |
27 |
I/O |
TTL/ST(2) |
|
Interrupt on change pin. Serial programming clock. |
||
RB7 |
|
28 |
28 |
I/O |
TTL/ST(2) |
|
Interrupt on change pin. Serial programming data. |
||
|
|
|
|
|
|
|
|
|
PORTC is a bi-directional I/O port. |
RC0/T1OSO/T1CKI |
|
11 |
11 |
I/O |
ST |
|
RC0 can also be the Timer1 oscillator output or Timer1 |
||
|
|
|
|
|
|
|
|
|
clock input. |
RC1/T1OSI/CCP2 |
|
12 |
12 |
I/O |
ST |
|
RC1 can also be the Timer1 oscillator input or Capture2 |
||
|
|
|
|
|
|
|
|
|
input/Compare2 output/PWM2 output. |
RC2/CCP1 |
|
13 |
13 |
I/O |
ST |
|
RC2 can also be the Capture1 input/Compare1 output/ |
||
|
|
|
|
|
|
|
|
|
PWM1 output. |
RC3/SCK/SCL |
|
14 |
14 |
I/O |
ST |
|
RC3 can also be the synchronous serial clock input/output |
||
|
|
|
|
|
|
|
|
|
for both SPI and I2C modes. |
RC4/SDI/SDA |
|
15 |
15 |
I/O |
ST |
|
RC4 can also be the SPI Data In (SPI mode) or |
||
|
|
|
|
|
|
|
|
|
data I/O (I2C mode). |
RC5/SDO |
|
16 |
16 |
I/O |
ST |
|
RC5 can also be the SPI Data Out (SPI mode). |
||
RC6/TX/CK |
|
17 |
17 |
I/O |
ST |
|
RC6 can also be the USART Asynchronous Transmit or |
||
|
|
|
|
|
|
|
|
|
Synchronous Clock. |
RC7/RX/DT |
|
18 |
18 |
I/O |
ST |
|
RC7 can also be the USART Asynchronous Receive or |
||
|
|
|
|
|
|
|
|
|
Synchronous Data. |
|
|
|
|
|
|
|
|
||
VSS |
|
8, 19 |
8, 19 |
P |
— |
|
Ground reference for logic and I/O pins. |
||
|
|
|
|
|
|
|
|
||
VDD |
|
20 |
20 |
P |
— |
|
Positive supply for logic and I/O pins. |
||
|
|
|
|
|
|
|
|
|
|
Legend: |
I = input |
O = output |
I/O = input/output |
P = power |
|
|
— = Not used |
TTL = TTL input |
ST = Schmitt Trigger input |
Note 1: |
This buffer is a Schmitt Trigger input when configured as the external interrupt. |
2:This buffer is a Schmitt Trigger input when used in serial programming mode.
3:This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.
4:The A/D module is not available on the PIC16C63A.
1998 Microchip Technology Inc. |
DS30605A-page 7 |
PIC16C63A/65B/73B/74B
TABLE 1-2: |
PIC16C65B/PIC16C74B PINOUT DESCRIPTION |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
Pin Name |
|
DIP |
PLCC |
QFP |
I/O/P |
Buffer |
|
Description |
||
|
Pin# |
Pin# |
Pin# |
Type |
Type |
|
||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
OSC1/CLKIN |
|
13 |
14 |
30 |
I |
ST/CMOS(4) |
|
Oscillator crystal input/external clock source input. |
||
OSC2/CLKOUT |
|
14 |
15 |
31 |
O |
— |
|
Oscillator crystal output. Connects to crystal or resonator in |
||
|
|
|
|
|
|
|
|
|
|
crystal oscillator mode. In RC mode, OSC2 pin outputs |
|
|
|
|
|
|
|
|
|
|
CLKOUT which has 1/4 the frequency of OSC1, and |
|
|
|
|
|
|
|
|
|
|
denotes the instruction cycle rate. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
18 |
I/P |
ST |
|
Master clear (reset) input or programming voltage input. |
MCLR/VPP |
||||||||||
|
|
|
|
|
|
|
|
|
|
This pin is an active low reset to the device. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTA is a bi-directional I/O port. |
RA0/AN0(5) |
|
2 |
3 |
19 |
I/O |
TTL |
|
RA0 can also be analog input0 |
||
RA1/AN1(5) |
|
3 |
4 |
20 |
I/O |
TTL |
|
RA1 can also be analog input1 |
||
RA2/AN2(5) |
|
4 |
5 |
21 |
I/O |
TTL |
|
RA2 can also be analog input2 |
||
RA3/AN3/VREF(5) |
|
5 |
6 |
22 |
I/O |
TTL |
|
RA3 can also be analog input3 or analog reference |
||
|
|
|
|
|
|
|
|
|
|
voltage |
RA4/T0CKI |
|
6 |
7 |
23 |
I/O |
ST |
|
RA4 can also be the clock input to the Timer0 timer/ |
||
|
|
|
|
|
|
|
|
|
|
counter. Output is open drain type. |
RA5/SS/AN4(5) |
|
7 |
8 |
24 |
I/O |
TTL |
|
RA5 can also be analog input4 or the slave select for |
||
|
|
|
|
|
|
|
|
|
|
the synchronous serial port. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTB is a bi-directional I/O port. PORTB can be software |
|
|
|
|
|
|
|
|
|
|
programmed for internal weak pull-up on all inputs. |
RB0/INT |
|
33 |
36 |
8 |
I/O |
TTL/ST(1) |
|
RB0 can also be the external interrupt pin. |
||
RB1 |
|
34 |
37 |
9 |
I/O |
TTL |
|
|
||
RB2 |
|
35 |
38 |
10 |
I/O |
TTL |
|
|
||
RB3 |
|
36 |
39 |
11 |
I/O |
TTL |
|
|
||
RB4 |
|
37 |
41 |
14 |
I/O |
TTL |
|
Interrupt on change pin. |
||
RB5 |
|
38 |
42 |
15 |
I/O |
TTL |
|
Interrupt on change pin. |
||
RB6 |
|
39 |
43 |
16 |
I/O |
TTL/ST(2) |
|
Interrupt on change pin. Serial programming clock. |
||
RB7 |
|
40 |
44 |
17 |
I/O |
TTL/ST(2) |
|
Interrupt on change pin. Serial programming data. |
Legend: |
I = input |
O = output |
I/O = input/output |
P = power |
|
|
— = Not used |
TTL = TTL input |
ST = Schmitt Trigger input |
Note 1: |
This buffer is a Schmitt Trigger input when configured as an external interrupt. |
2:This buffer is a Schmitt Trigger input when used in serial programming mode.
3:This buffer is a Schmitt Trigger input when configured as general purpose I/O and a TTL input when used in the Parallel Slave Port mode (for interfacing to a microprocessor bus).
4:This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.
5:The A/D module is not available on the PIC16C65B.
DS30605A-page 8 |
1998 Microchip Technology Inc. |
|
|
|
|
|
|
|
|
PIC16C63A/65B/73B/74B |
||
|
|
|
|
|
|
|
|
|
|
|
TABLE 1-2: |
PIC16C65B/PIC16C74B PINOUT DESCRIPTION (Cont.’d) |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
Pin Name |
|
DIP |
PLCC |
QFP |
|
I/O/P |
Buffer |
|
Description |
|
|
Pin# |
Pin# |
Pin# |
|
Type |
Type |
|
|||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTC is a bi-directional I/O port. |
RC0/T1OSO/T1CKI |
15 |
16 |
32 |
|
I/O |
ST |
|
RC0 can also be the Timer1 oscillator output or a |
||
|
|
|
|
|
|
|
|
|
|
Timer1 clock input. |
RC1/T1OSI/CCP2 |
|
16 |
18 |
35 |
|
I/O |
ST |
|
RC1 can also be the Timer1 oscillator input or |
|
|
|
|
|
|
|
|
|
|
|
Capture2 input/Compare2 output/PWM2 output. |
RC2/CCP1 |
|
17 |
19 |
36 |
|
I/O |
ST |
|
RC2 can also be the Capture1 input/Compare1 output/ |
|
|
|
|
|
|
|
|
|
|
|
PWM1 output. |
RC3/SCK/SCL |
|
18 |
20 |
37 |
|
I/O |
ST |
|
RC3 can also be the synchronous serial clock input/ |
|
|
|
|
|
|
|
|
|
|
|
output for both SPI and I2C modes. |
RC4/SDI/SDA |
|
23 |
25 |
42 |
|
I/O |
ST |
|
RC4 can also be the SPI Data In (SPI mode) or |
|
|
|
|
|
|
|
|
|
|
|
data I/O (I2C mode). |
RC5/SDO |
|
|
24 |
26 |
43 |
|
I/O |
ST |
|
RC5 can also be the SPI Data Out |
|
|
|
|
|
|
|
|
|
|
(SPI mode). |
RC6/TX/CK |
|
25 |
27 |
44 |
|
I/O |
ST |
|
RC6 can also be the USART Asynchronous Transmit or |
|
|
|
|
|
|
|
|
|
|
|
Synchronous Clock. |
RC7/RX/DT |
|
26 |
29 |
1 |
|
I/O |
ST |
|
RC7 can also be the USART Asynchronous Receive or |
|
|
|
|
|
|
|
|
|
|
|
Synchronous Data. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTD is a bi-directional I/O port or parallel slave port |
|
|
|
|
|
|
|
|
|
|
when interfacing to a microprocessor bus. |
RD0/PSP0 |
|
19 |
21 |
38 |
|
I/O |
ST/TTL(3) |
|
|
|
RD1/PSP1 |
|
20 |
22 |
39 |
|
I/O |
ST/TTL(3) |
|
|
|
RD2/PSP2 |
|
21 |
23 |
40 |
|
I/O |
ST/TTL(3) |
|
|
|
RD3/PSP3 |
|
22 |
24 |
41 |
|
I/O |
ST/TTL(3) |
|
|
|
RD4/PSP4 |
|
27 |
30 |
2 |
|
I/O |
ST/TTL(3) |
|
|
|
RD5/PSP5 |
|
28 |
31 |
3 |
|
I/O |
ST/TTL(3) |
|
|
|
RD6/PSP6 |
|
29 |
32 |
4 |
|
I/O |
ST/TTL(3) |
|
|
|
RD7/PSP7 |
|
30 |
33 |
5 |
|
I/O |
ST/TTL(3) |
|
|
|
|
|
|
|
|
|
|
|
|
|
PORTE is a bi-directional I/O port. |
RE0/RD/AN5(5) |
|
8 |
9 |
25 |
|
I/O |
ST/TTL(3) |
|
RE0 can also be read control for the parallel slave port, |
|
|
|
|
|
|
|
|
|
|
|
or analog input5. |
RE1/WR/AN6(5) |
|
9 |
10 |
26 |
|
I/O |
ST/TTL(3) |
|
RE1 can also be write control for the parallel slave port, |
|
|
|
|
|
|
|
|
|
|
|
or analog input6. |
RE2/CS/AN7(5) |
|
10 |
11 |
27 |
|
I/O |
ST/TTL(3) |
|
RE2 can also be select control for the parallel slave |
|
|
|
|
|
|
|
|
|
|
|
port, or analog input7. |
|
|
|
|
|
|
|
|
|
|
|
VSS |
|
|
12,31 |
13,34 |
6,29 |
|
P |
— |
|
Ground reference for logic and I/O pins. |
|
|
|
|
|
|
|
|
|
|
|
VDD |
|
|
11,32 |
12,35 |
7,28 |
|
P |
— |
|
Positive supply for logic and I/O pins. |
|
|
|
|
|
|
|
|
|
|
|
NC |
|
|
— |
1,17,28, |
12,13, |
|
|
— |
|
These pins are not internally connected. These pins should |
|
|
|
|
40 |
33,34 |
|
|
|
|
be left unconnected. |
|
|
|
|
|
|
|
|
|
|
|
Legend: |
I = input |
|
O = output |
|
|
I/O = input/output |
|
P = power |
||
|
|
|
— = Not used |
|
TTL = TTL input |
|
ST = Schmitt Trigger input |
|||
Note 1: |
This buffer is a Schmitt Trigger input when configured as an external interrupt. |
2:This buffer is a Schmitt Trigger input when used in serial programming mode.
3:This buffer is a Schmitt Trigger input when configured as general purpose I/O and a TTL input when used in the Parallel Slave Port mode (for interfacing to a microprocessor bus).
4:This buffer is a Schmitt Trigger input when configured in RC oscillator mode and a CMOS input otherwise.
5:The A/D module is not available on the PIC16C65B.
1998 Microchip Technology Inc. |
DS30605A-page 9 |
PIC16C63A/65B/73B/74B
NOTES:
DS30605A-page 10 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
2.0MEMORY ORGANIZATION
There are two memory blocks in each of these PICmicro microcontrollers. Each block (Program Memory and Data Memory) has its own bus so that concurrent access can occur.
Additional information on device memory may be found in the PICmicro Mid-Range Reference Manual (DS33023).
2.1Program Memory Organization
The PIC16C63A/65B/73B/74B microcontrollers have a 13-bit program counter capable of addressing an 8K x 14 program memory space. Each device has 4K x 14 words of program memory. Accessing a location above the physically implemented address will cause a wraparound.
The reset vector is at 0000h and the interrupt vector is at 0004h.
FIGURE 2-1: PROGRAM MEMORY MAP
AND STACK
|
|
|
PC<12:0> |
|
|
|
CALL, RETURN |
13 |
|
||
|
RETFIE, RETLW |
|
|||
|
|
|
|||
|
|
Stack Level 1 |
|
||
|
|
Stack Level 8 |
|
||
|
|
Reset Vector |
0000h |
||
User Memory |
|
Interrupt Vector |
0004h |
||
Space |
On-chip Program |
0005h |
|||
|
|||||
Memory (Page 0) |
07FFh |
||||
|
|
||||
On-chip Program |
0800h |
||||
|
|
||||
|
|
Memory (Page 1) |
|
||
|
|
|
|
0FFFh |
|
|
|
|
|
1000h |
|
|
|
|
|
1FFFh |
2.2Data Memory Organization
The data memory is partitioned into multiple banks which contain the General Purpose Registers and the Special Function Registers. Bits RP1 and RP0 are the bank select bits.
RP1(1) |
RP0 |
(STATUS<6:5>) |
=00 → Bank0
=01 → Bank1
=10 → Bank2 (not implemented)
=11 → Bank3 (not implemented)
Note 1: Maintain this bit clear to ensure upward compatibility with future products.
Each bank extends up to 7Fh (128 bytes). The lower locations of each bank are reserved for the Special Function Registers. Above the Special Function Registers are General Purpose Registers, implemented as static RAM. All implemented banks contain special function registers. Some “high use” special function registers from one bank may be mirrored in another bank for code reduction and quicker access.
2.2.1GENERAL PURPOSE REGISTER FILE
The register file can be accessed either directly, or indirectly through the File Select Register FSR (Section 2.5).
1998 Microchip Technology Inc. |
DS30605A-page 11 |
PIC16C63A/65B/73B/74B
FIGURE 2-2: REGISTER FILE MAP
File |
|
|
File |
Address |
Address |
||
00h |
INDF(1) |
INDF(1) |
80h |
01h |
TMR0 |
OPTION_REG |
81h |
02h |
PCL |
PCL |
82h |
03h |
STATUS |
STATUS |
83h |
04h |
FSR |
FSR |
84h |
05h |
PORTA |
TRISA |
85h |
06h |
PORTB |
TRISB |
86h |
07h |
PORTC |
TRISC |
87h |
08h |
PORTD(2) |
TRISD(2) |
88h |
09h |
PORTE(2) |
TRISE(2) |
89h |
0Ah |
PCLATH |
PCLATH |
8Ah |
0Bh |
INTCON |
INTCON |
8Bh |
0Ch |
PIR1 |
PIE1 |
8Ch |
0Dh |
PIR2 |
PIE2 |
8Dh |
0Eh |
|
|
8Eh |
TMR1L |
PCON |
||
0Fh |
|
|
8Fh |
TMR1H |
|
||
10h |
T1CON |
|
90h |
11h |
TMR2 |
|
91h |
12h |
T2CON |
PR2 |
92h |
13h |
|
|
93h |
SSPBUF |
SSPADD |
||
14h |
SSPCON |
SSPSTAT |
94h |
15h |
|
|
95h |
CCPR1L |
|
||
16h |
CCPR1H |
|
96h |
17h |
CCP1CON |
|
97h |
18h |
RCSTA |
TXSTA |
98h |
19h |
TXREG |
SPBRG |
99h |
1Ah |
|
|
9Ah |
RCREG |
|
||
1Bh |
CCPR2L |
|
9Bh |
1Ch |
CCPR2H |
|
9Ch |
1Dh |
CCP2CON |
|
9Dh |
1Eh |
ADRES(3) |
|
9Eh |
1Fh |
ADCON0(3) |
ADCON1(3) |
9Fh |
20h |
General |
General |
A0h |
|
|
||
|
Purpose |
Purpose |
|
|
Register |
Register |
|
7Fh |
|
|
FFh |
|
Bank 0 |
Bank 1 |
|
Unimplemented data memory locations, read
as ’0’.
Note 1: Not a physical register.
2:These registers are not implemented on the PIC16C63A/73B, read as '0'.
3:These registers are not implemented on the PIC16C63A/65B, read as '0'.
2.2.2SPECIAL FUNCTION REGISTERS
The Special Function Registers are registers used by the CPU and Peripheral Modules for controlling the desired operation of the device. These registers are implemented as static RAM. A list of these registers is give in Table 2-1.
The special function registers can be classified into two sets; core (CPU) and peripheral. Those registers associated with the core functions are described in detail in this section. Those related to the operation of the peripheral features are described in detail in that peripheral feature section.
DS30605A-page 12 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
TABLE 2-1 |
SPECIAL FUNCTION REGISTER SUMMARY |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value on |
Value on all |
||
Addr |
|
Name |
|
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
|
Bit 2 |
Bit 1 |
Bit 0 |
POR, |
other resets |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOR |
(5) |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Bank 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
00h |
|
INDF(1) |
|
Addressing this location uses contents of FSR to address data memory (not a physical register) |
0000 |
0000 |
0000 |
0000 |
|||||||||||||||
01h |
|
TMR0 |
|
Timer0 module’s register |
|
|
|
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
02h |
|
PCL(1) |
|
Program Counter's (PC) Least Significant Byte |
|
|
|
|
|
|
|
|
|
|
0000 |
0000 |
0000 |
0000 |
|||||
03h |
|
STATUS(1) |
|
IRP(6) |
RP1(6) |
RP0 |
|
|
|
|
|
|
|
|
Z |
DC |
C |
rr01 1xxx |
rr0q quuu |
||||
|
TO |
PD |
|||||||||||||||||||||
04h |
|
FSR(1) |
|
Indirect data memory address pointer |
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||||||
05h |
|
PORTA(7) |
|
— |
— |
PORTA Data Latch when written: PORTA pins when read |
|
--0x 0000 |
--0u 0000 |
||||||||||||||
06h |
|
PORTB(8) |
|
PORTB Data Latch when written: PORTB pins when read |
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
||||||||||
07h |
|
PORTC(8) |
|
PORTC Data Latch when written: PORTC pins when read |
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
||||||||||
08h |
|
PORTD(3,8) |
|
PORTD Data Latch when written: PORTD pins when read |
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
||||||||||
09h |
|
PORTE(3,8) |
|
— |
— |
— |
|
— |
|
— |
|
RE2 |
RE1 |
RE0 |
---- -xxx |
---- -uuu |
|||||||
0Ah |
|
PCLATH(1,2) |
— |
— |
— |
Write Buffer for the upper 5 bits of the Program Counter |
---0 0000 |
---0 0000 |
|||||||||||||||
0Bh |
|
INTCON(1) |
|
GIE |
PEIE |
T0IE |
INTE |
RBIE |
|
T0IF |
INTF |
RBIF |
0000 |
000x |
0000 |
000u |
|||||||
0Ch |
|
PIR1 |
|
PSPIF(3) |
ADIF(4) |
RCIF |
TXIF |
SSPIF |
|
CCP1IF |
TMR2IF |
TMR1IF |
0000 |
0000 |
0000 0000 |
||||||||
0Dh |
|
PIR2 |
|
— |
— |
— |
|
– |
|
— |
|
|
— |
— |
CCP2IF |
---- ---0 |
---- ---0 |
||||||
0Eh |
|
TMR1L |
|
Holding register for the Least Significant Byte of the 16-bit TMR1 register |
|
|
xxxx xxxx |
uuuu uuuu |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||
0Fh |
|
TMR1H |
|
Holding register for the Most Significant Byte of the 16-bit TMR1 register |
|
|
xxxx xxxx |
uuuu uuuu |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
10h |
|
T1CON |
|
— |
— |
T1CKPS1 |
T1CKPS0 |
T1OSCEN |
|
|
|
|
|
TMR1CS |
TMR1ON |
--00 0000 |
--uu uuuu |
||||||
|
T1SYNC |
||||||||||||||||||||||
11h |
|
TMR2 |
|
Timer2 module’s register |
|
|
|
|
|
|
|
|
|
|
|
|
|
0000 |
0000 |
0000 0000 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
12h |
|
T2CON |
|
— |
TOUTPS3 |
TOUTPS2 |
TOUTPS1 |
TOUTPS0 |
TMR2ON |
T2CKPS1 |
T2CKPS0 |
-000 0000 |
-000 0000 |
||||||||||
13h |
|
SSPBUF |
|
Synchronous Serial Port Receive Buffer/Transmit Register |
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
14h |
|
SSPCON |
|
WCOL |
SSPOV |
SSPEN |
CKP |
SSPM3 |
|
SSPM2 |
SSPM1 |
SSPM0 |
0000 |
0000 |
0000 0000 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
15h |
|
CCPR1L |
|
Capture/Compare/PWM Register1 (LSB) |
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
16h |
|
CCPR1H |
|
Capture/Compare/PWM Register1 (MSB) |
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
17h |
|
CCP1CON |
|
— |
— |
CCP1X |
CCP1Y |
CCP1M3 |
CCP1M2 |
CCP1M1 |
CCP1M0 |
--00 0000 |
--00 0000 |
||||||||||
18h |
|
RCSTA |
|
SPEN |
RX9 |
SREN |
CREN |
|
— |
|
FERR |
OERR |
RX9D |
0000 |
-00x |
0000 -00x |
|||||||
19h |
|
TXREG |
|
USART Transmit Data Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
0000 |
0000 |
0000 0000 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1Ah |
|
RCREG |
|
USART Receive Data Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
0000 |
0000 |
0000 0000 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
1Bh |
|
CCPR2L |
|
Capture/Compare/PWM Register2 (LSB) |
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
1Ch |
|
CCPR2H |
|
Capture/Compare/PWM Register2 (MSB) |
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
1Dh |
|
CCP2CON |
|
— |
— |
CCP2X |
CCP2Y |
CCP2M3 |
CCP2M2 |
CCP2M1 |
CCP2M0 |
--00 0000 |
--00 0000 |
||||||||||
1Eh |
|
ADRES(4) |
|
A/D Result Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||
1Fh |
|
ADCON0(4) |
|
ADCS1 |
ADCS0 |
CHS2 |
CHS1 |
CHS0 |
|
|
|
— |
ADON |
0000 |
00-0 |
0000 00-0 |
|||||||
|
GO/DONE |
||||||||||||||||||||||
Legend: |
x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, read as '0', |
|
|
|
|
||||||||||||||||||
|
|
Shaded locations are unimplemented, read as '0'. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Note 1: |
These registers can be addressed from either bank. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2:The upper byte of the program counter is not directly accessible. PCLATH is a holding register for PC<12:8> whose contents are transferred to the upper byte of the program counter.
3:PORTD and PORTE are not implemented on the PIC16C63A/73B, maintain as ’0’.
4:A/D not implemented on the PIC16C63A/65B, maintain as ’0’.
5:Other (non power-up) resets include: external reset through MCLR and the Watchdog Timer Reset.
6:The IRP and RP1 bits are reserved. Always maintain these bits clear.
7:On any device reset, these pins are configured as inputs.
8:This is the value that will be in the port output latch.
1998 Microchip Technology Inc. |
DS30605A-page 13 |
PIC16C63A/65B/73B/74B
TABLE 2-1 |
SPECIAL FUNCTION REGISTER SUMMARY |
(Cont.’d) |
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value on |
Value on all |
|
Addr |
|
Name |
|
|
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
|
Bit 3 |
Bit 2 |
|
Bit 1 |
|
Bit 0 |
POR, |
other resets |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOR |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Bank 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
80h |
|
INDF(1) |
|
Addressing this location uses contents of FSR to address data memory (not a physical register) |
0000 0000 |
0000 |
0000 |
||||||||||||||||||||||
81h |
|
OPTION_REG |
|
|
|
INTEDG |
T0CS |
T0SE |
|
PSA |
PS2 |
|
PS1 |
|
PS0 |
1111 1111 |
1111 |
1111 |
|||||||||||
|
RBPU |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
82h |
|
PCL(1) |
|
Program Counter's (PC) Least Significant Byte |
|
|
|
|
|
|
|
|
|
|
|
|
0000 0000 |
0000 |
0000 |
||||||||||
83h |
|
STATUS(1) |
|
|
IRP(6) |
RP1(6) |
RP0 |
|
|
|
|
|
|
|
Z |
|
DC |
|
C |
rr01 1xxx |
rr0q quuu |
||||||||
|
|
TO |
PD |
||||||||||||||||||||||||||
84h |
|
FSR(1) |
|
Indirect data memory address pointer |
|
|
|
|
|
|
|
|
|
|
|
|
xxxx xxxx |
uuuu uuuu |
|||||||||||
85h |
|
TRISA |
|
|
— |
— |
PORTA Data Direction Register |
|
|
|
|
|
|
|
|
|
--11 1111 |
--11 1111 |
|||||||||||
86h |
|
TRISB |
|
PORTB Data Direction Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1111 1111 |
1111 |
1111 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
87h |
|
TRISC |
|
PORTC Data Direction Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1111 1111 |
1111 |
1111 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
88h |
|
TRISD(3) |
|
PORTD Data Direction Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1111 1111 |
1111 |
1111 |
||||||
89h |
|
TRISE(3) |
|
|
IBF |
OBF |
IBOV |
PSPMODE |
|
|
— |
PORTE Data Direction Bits |
0000 -111 |
0000 |
-111 |
||||||||||||||
8Ah |
|
PCLATH(1,2) |
|
— |
— |
— |
Write Buffer for the upper 5 bits of the Program Counter |
---0 0000 |
---0 0000 |
||||||||||||||||||||
8Bh |
|
INTCON(1) |
|
|
GIE |
PEIE |
T0IE |
INTE |
|
RBIE |
T0IF |
INTF |
RBIF |
0000 000x |
0000 |
000u |
|||||||||||||
8Ch |
|
PIE1 |
|
PSPIE(3) |
ADIE(4) |
RCIE |
TXIE |
|
SSPIE |
CCP1IE |
TMR2IE |
TMR1IE |
0000 0000 |
0000 |
0000 |
||||||||||||||
8Dh |
|
PIE2 |
|
|
— |
— |
— |
|
— |
|
|
— |
— |
|
— |
CCP2IE |
---- ---0 |
---- ---0 |
|||||||||||
8Eh |
|
PCON |
|
|
— |
— |
— |
|
— |
|
|
— |
— |
|
|
|
|
|
|
---- --uu |
|||||||||
|
|
|
|
|
POR |
BOR |
|||||||||||||||||||||||
8Fh |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
90h |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
91h |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
92h |
|
PR2 |
|
Timer2 Period Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1111 1111 |
1111 |
1111 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
93h |
|
SSPADD |
|
Synchronous Serial Port (I2C mode) Address Register |
|
|
|
|
|
|
|
|
|
|
|
|
0000 0000 |
0000 |
0000 |
||||||||||
94h |
|
SSPSTAT |
|
|
SMP |
CKE |
D/A |
|
|
P |
|
|
S |
R/W |
|
UA |
|
BF |
0000 0000 |
0000 |
0000 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
95h |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
96h |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
97h |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
98h |
|
TXSTA |
|
CSRC |
TX9 |
TXEN |
SYNC |
|
|
— |
BRGH |
TRMT |
TX9D |
0000 -010 |
0000 |
-010 |
|||||||||||||
99h |
|
SPBRG |
|
Baud Rate Generator Register |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0000 0000 |
0000 |
0000 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
9Ah |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
9Bh |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
9Ch |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
9Dh |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
9Eh |
|
— |
|
Unimplemented |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
— |
|
|||
9Fh |
|
ADCON1(4) |
|
|
— |
— |
— |
|
— |
|
|
— |
PCFG2 |
PCFG1 |
PCFG0 |
---- -000 |
---- -000 |
||||||||||||
Legend: |
x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, read as '0', |
|
|
|
|||||||||||||||||||||||||
|
|
Shaded locations are unimplemented, read as '0'. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
Note 1: |
These registers can be addressed from either bank. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2:The upper byte of the program counter is not directly accessible. PCLATH is a holding register for PC<12:8> whose contents are transferred to the upper byte of the program counter.
3:PORTD and PORTE are not implemented on the PIC16C63A/73B, maintain as ’0’.
4:A/D not implemented on the PIC16C63A/65B, maintain as ’0’.
5:Other (non power-up) resets include: external reset through MCLR and the Watchdog Timer Reset.
6:The IRP and RP1 bits are reserved. Always maintain these bits clear.
7:On any device reset, these pins are configured as inputs.
8:This is the value that will be in the port output latch.
DS30605A-page 14 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
2.2.2.1STATUS REGISTER
The STATUS register, shown in Figure 2-3, contains the arithmetic status of the ALU, the RESET status and the bank select bits for data memory.
The STATUS register can be the destination for any instruction, as with any other register. If the STATUS register is the destination for an instruction that affects the Z, DC or C bits, then the write to these three bits is disabled. These bits are set or cleared according to the device logic. Furthermore, the TO and PD bits are not writable. Therefore, the result of an instruction with the STATUS register as destination may be different than intended.
For example, CLRF STATUS will clear the upper-three bits and set the Z bit. This leaves the STATUS register as 000u u1uu (where u = unchanged).
It is recommended, therefore, that only BCF, BSF, SWAPF and MOVWF instructions are used to alter the STATUS register because these instructions do not affect the Z, C or DC bits from the STATUS register. For other instructions, not affecting any status bits, see the "Instruction Set Summary."
Note 1: These devices do not use bits IRP and RP1 (STATUS<7:6>). Maintain these bits clear to ensure upward compatibility with future products.
Note 2: The C and DC bits operate as a borrow and digit borrow bit, respectively, in subtraction. See the SUBLW and SUBWF instructions for examples.
FIGURE 2-3: STATUS REGISTER (ADDRESS 03h, 83h)
R/W-0 |
R/W-0 |
R/W-0 |
R-1 |
R-1 |
R/W-x |
R/W-x |
R/W-x |
|
|
||||
IRP |
RP1 |
RP0 |
|
TO |
|
|
PD |
|
Z |
DC |
C |
|
R = Readable bit |
bit7 |
|
|
|
|
|
|
|
|
|
|
bit0 |
|
W = Writable bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
U = Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
bit 7: IRP: Register Bank Select bit (used for indirect addressing)
1 = Bank 2, 3 (100h - 1FFh) - not implemented, maintain clear 0 = Bank 0, 1 (00h - FFh) - not implemented, maintain clear
bit |
6-5: RP1:RP0: Register Bank Select bits (used for direct addressing) |
||||||||||
|
|
11 = Bank 3 (180h - 1FFh) - not implemented, maintain clear |
|||||||||
|
|
10 = Bank 2 (100h - 17Fh) - not implemented, maintain clear |
|||||||||
|
|
01 = Bank 1 (80h - FFh) |
|||||||||
|
|
00 = Bank 0 (00h - 7Fh) |
|||||||||
|
|
Each bank is 128 bytes |
|||||||||
bit |
4: |
|
: Time-out bit |
||||||||
TO |
|||||||||||
|
|
1 |
= After power-up, CLRWDT instruction, or SLEEP instruction |
||||||||
|
|
0 |
= A WDT time-out occurred |
||||||||
bit |
3: |
|
: Power-down bit |
||||||||
PD |
|||||||||||
|
|
1 |
= After power-up or by the CLRWDT instruction |
||||||||
|
|
0 |
= By execution of the SLEEP instruction |
||||||||
bit |
2: |
Z: Zero bit |
|||||||||
|
|
1 |
= The result of an arithmetic or logic operation is zero |
||||||||
|
|
0 |
= The result of an arithmetic or logic operation is not zero |
||||||||
bit |
|
|
|
|
|
|
|
||||
1: DC: Digit carry/borrow |
bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow the polarity is reversed) |
||||||||||
|
|
1 |
= A carry-out from the 4th low order bit of the result occurred |
||||||||
|
|
0 |
= No carry-out from the 4th low order bit of the result |
||||||||
bit |
0: |
|
|
bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) |
|||||||
C: Carry/borrow |
|||||||||||
|
|
1 |
= A carry-out from the most significant bit of the result occurred |
||||||||
|
|
0 |
= No carry-out from the most significant bit of the result occurred |
Note: For borrow the polarity is reversed. A subtraction is executed by adding the two’s complement of the second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low order bit of the source register.
1998 Microchip Technology Inc. |
DS30605A-page 15 |
PIC16C63A/65B/73B/74B
2.2.2.2OPTION_REG REGISTER
The OPTION_REG register is a readable and writable |
Note: |
To achieve a 1:1 prescaler assignment for |
|||||||||||||||||||||||
|
|
the TMR0 register, assign the prescaler to |
|||||||||||||||||||||||
register which contains various control bits to configure |
|
|
|||||||||||||||||||||||
|
|
the Watchdog Timer. |
|||||||||||||||||||||||
the TMR0 prescaler/WDT postscaler (single assign- |
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||
able register known also as the prescaler), the External |
|
|
|
|
|
|
|
||||||||||||||||||
INT Interrupt, TMR0, and the weak pull-ups on PORTB. |
|
|
|
|
|
|
|
||||||||||||||||||
FIGURE 2-4: OPTION_REG REGISTER (ADDRESS 81h) |
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
R/W-1 |
|
|
R/W-1 |
|
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
R/W-1 |
|
|
|
|||||||||||
|
|
|
|
|
|
INTEDG |
|
T0CS |
|
T0SE |
|
PSA |
PS2 |
|
PS1 |
|
PS0 |
|
R |
= Readable bit |
|
||||
|
|
RBPU |
|||||||||||||||||||||||
|
bit7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bit0 |
W |
= Writable bit |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
|
|
bit 7: |
|
|
|
: PORTB Pull-up Enable bit |
|
|
|
|
|
|
|
|
|
|||||||||||
RBPU |
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
1 |
= PORTB pull-ups are disabled |
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
0 |
= PORTB pull-ups are enabled by individual port latch values |
|
|
|
|
|
||||||||||||||
|
bit |
6: |
|
INTEDG: Interrupt Edge Select bit |
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
1 |
= Interrupt on rising edge of RB0/INT pin |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
0 |
= Interrupt on falling edge of RB0/INT pin |
|
|
|
|
|
|
|
||||||||||||
|
bit |
5: |
|
T0CS: TMR0 Clock Source Select bit |
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
1 |
= Transition on RA4/T0CKI pin |
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
0 |
= Internal instruction cycle clock (CLKOUT) |
|
|
|
|
|
|
|
||||||||||||
|
bit |
4: |
|
T0SE: TMR0 Source Edge Select bit |
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
1 |
= Increment on high-to-low transition on RA4/T0CKI pin |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
0 |
= Increment on low-to-high transition on RA4/T0CKI pin |
|
|
|
|
|
||||||||||||||
|
bit |
3: |
|
PSA: Prescaler Assignment bit |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
1 |
= Prescaler is assigned to the WDT |
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
0 |
= Prescaler is assigned to the Timer0 module |
|
|
|
|
|
|
|
||||||||||||
|
bit |
2-0: |
PS2:PS0: Prescaler Rate Select bits |
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
Bit Value |
|
TMR0 Rate WDT Rate |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
000 |
|
1 : 2 |
|
|
1 : 1 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
001 |
|
1 : 4 |
|
|
1 : 2 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
010 |
|
1 : 8 |
|
|
1 : 4 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
011 |
|
1 : 16 |
|
1 : 8 |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
100 |
|
1 : 32 |
|
1 : 16 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
101 |
|
1 : 64 |
|
1 : 32 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
110 |
|
1 : 128 |
|
1 : 64 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
111 |
|
1 : 256 |
|
1 : 128 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DS30605A-page 16 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
2.2.2.3INTCON REGISTER
The INTCON Register is a readable and writable regis- |
Note: |
Interrupt flag bits get set when an interrupt |
||||||||||||||||
|
condition occurs regardless of the state of |
|||||||||||||||||
ter which contains various enable and flag bits for the |
|
|||||||||||||||||
|
its corresponding enable bit or the global |
|||||||||||||||||
TMR0 register overflow, RB Port change and External |
|
|||||||||||||||||
|
enable bit, GIE (INTCON<7>). User soft- |
|||||||||||||||||
RB0/INT pin interrupts. |
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
ware should ensure the appropriate inter- |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rupt flag bits are clear prior to enabling an |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interrupt. |
|
|
|
|
FIGURE 2-5: INTCON REGISTER (ADDRESS 0Bh, 8Bh) |
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R/W-0 |
|
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-x |
|
|
|
||||||
|
|
GIE |
|
PEIE |
|
T0IE |
INTE |
|
RBIE |
|
T0IF |
|
INTF |
RBIF |
|
R |
= Readable bit |
|
|
bit7 |
|
|
|
|
|
|
|
|
|
|
|
bit0 |
W |
= Writable bit |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
|
|
bit 7: |
GIE: Global Interrupt Enable bit |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
1 |
= Enables all un-masked interrupts |
|
|
|
|
|
|
|
|
||||||
|
|
|
0 |
= Disables all interrupts |
|
|
|
|
|
|
|
|
|
|
||||
|
bit |
6: |
PEIE: Peripheral Interrupt Enable bit |
|
|
|
|
|
|
|
|
|||||||
|
|
|
1 |
= Enables all un-masked peripheral interrupts |
|
|
|
|
|
|
||||||||
|
|
|
0 |
= Disables all peripheral interrupts |
|
|
|
|
|
|
|
|
||||||
|
bit |
5: |
T0IE: TMR0 Overflow Interrupt Enable bit |
|
|
|
|
|
|
|
|
|||||||
|
|
|
1 |
= Enables the TMR0 interrupt |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
0 |
= Disables the TMR0 interrupt |
|
|
|
|
|
|
|
|
||||||
|
bit |
4: |
IINTE: RB0/INT External Interrupt Enable bit |
|
|
|
|
|
|
|||||||||
|
|
|
1 |
= Enables the RB0/INT external interrupt |
|
|
|
|
|
|
||||||||
|
|
|
0 |
= Disables the RB0/INT external interrupt |
|
|
|
|
|
|
||||||||
|
bit |
3: |
RBIE: RB Port Change Interrupt Enable bit |
|
|
|
|
|
|
|||||||||
|
|
|
1 |
= Enables the RB port change interrupt |
|
|
|
|
|
|
|
|
||||||
|
|
|
0 |
= Disables the RB port change interrupt |
|
|
|
|
|
|
|
|
||||||
|
bit |
2: |
T0IF: TMR0 Overflow Interrupt Flag bit |
|
|
|
|
|
|
|
|
|||||||
|
|
|
1 |
= TMR0 register has overflowed (must be cleared in software) |
|
|
|
|||||||||||
|
|
|
0 |
= TMR0 register did not overflow |
|
|
|
|
|
|
|
|
||||||
|
bit |
1: |
INTF: RB0/INT External Interrupt Flag bit |
|
|
|
|
|
|
|
|
|||||||
|
|
|
1 |
= The RB0/INT external interrupt occurred (must be cleared in software) |
|
|
||||||||||||
|
|
|
0 |
= The RB0/INT external interrupt did not occur |
|
|
|
|
|
|
||||||||
|
bit |
0: |
RBIF: RB Port Change Interrupt Flag bit |
|
|
|
|
|
|
|
|
|||||||
|
|
|
1 |
= At least one of the RB7:RB4 pins changed state (must be cleared in software) |
||||||||||||||
|
|
|
0 |
= None of the RB7:RB4 pins have changed state |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1998 Microchip Technology Inc. |
DS30605A-page 17 |
PIC16C63A/65B/73B/74B
2.2.2.4PIE1 REGISTER
This register contains the individual enable bits for the |
Note: |
Bit PEIE (INTCON<6>) must be set to |
|||||||||||||||
peripheral interrupts. |
|
|
|
|
|
|
|
|
enable any peripheral interrupt. |
||||||||
FIGURE 2-6: PIE1 REGISTER (ADDRESS 8Ch) |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
R/W-0 |
|
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
|
|
|
|||||
|
PSPIE(1) |
|
ADIE(2) |
RCIE |
TXIE |
|
SSPIE |
|
CCP1IE |
|
TMR2IE |
TMR1IE |
|
R |
= Readable bit |
|
|
|
bit7 |
|
|
|
|
|
|
|
|
|
|
|
bit0 |
W |
= Writable bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
|
|
bit 7: |
PSPIE(1): Parallel Slave Port Read/Write Interrupt Enable bit |
|
|
|
|
|
||||||||||
|
|
|
1 |
= Enables the PSP read/write interrupt |
|
|
|
|
|
|
|
|
|||||
|
|
|
0 |
= Disables the PSP read/write interrupt |
|
|
|
|
|
|
|
|
|||||
|
bit |
6: |
ADIE(2): A/D Converter Interrupt Enable bit |
|
|
|
|
|
|
||||||||
|
|
|
1 |
= Enables the A/D interrupt |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
0 |
= Disables the A/D interrupt |
|
|
|
|
|
|
|
|
|
|
|||
|
bit |
5: |
RCIE: USART Receive Interrupt Enable bit |
|
|
|
|
|
|
||||||||
|
|
|
1 |
= Enables the USART receive interrupt |
|
|
|
|
|
|
|
|
|||||
|
|
|
0 |
= Disables the USART receive interrupt |
|
|
|
|
|
|
|
|
|||||
|
bit |
4: |
TXIE: USART Transmit Interrupt Enable bit |
|
|
|
|
|
|
||||||||
|
|
|
1 |
= Enables the USART transmit interrupt |
|
|
|
|
|
|
|||||||
|
|
|
0 |
= Disables the USART transmit interrupt |
|
|
|
|
|
|
|||||||
|
bit |
3: |
SSPIE: Synchronous Serial Port Interrupt Enable bit |
|
|
|
|
|
|
||||||||
|
|
|
1 |
= Enables the SSP interrupt |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
0 |
= Disables the SSP interrupt |
|
|
|
|
|
|
|
|
|
|
|||
|
bit |
2: |
CCP1IE: CCP1 Interrupt Enable bit |
|
|
|
|
|
|
|
|
||||||
|
|
|
1 |
= Enables the CCP1 interrupt |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
0 |
= Disables the CCP1 interrupt |
|
|
|
|
|
|
|
|
|||||
|
bit |
1: |
TMR2IE: TMR2 to PR2 Match Interrupt Enable bit |
|
|
|
|
|
|
||||||||
|
|
|
1 |
= Enables the TMR2 to PR2 match interrupt |
|
|
|
|
|
|
|||||||
|
|
|
0 |
= Disables the TMR2 to PR2 match interrupt |
|
|
|
|
|
|
|||||||
|
bit |
0: |
TMR1IE: TMR1 Overflow Interrupt Enable bit |
|
|
|
|
|
|
||||||||
|
|
|
1 |
= Enables the TMR1 overflow interrupt |
|
|
|
|
|
|
|
|
|||||
|
|
|
0 |
= Disables the TMR1 overflow interrupt |
|
|
|
|
|
|
|
|
Note 1: PIC16C63A/73B devices do not have a Parallel Slave Port implemented. This bit location is reserved on these devices. Always maintain this bit clear.
2:PIC16C63A/65B devices do not have an A/D module. This bit location is reserved on these devices. Always maintain this bit clear.
DS30605A-page 18 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
2.2.2.5 |
PIR1 REGISTER |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
Note: |
Interrupt flag bits get set when an interrupt |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
This register contains the individual flag bits for the |
|
condition occurs regardless of the state of |
||||||||||||||||||
peripheral interrupts. |
|
|
|
|
|
|
|
|
|
its corresponding enable bit or the global |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enable bit, GIE (INTCON<7>). User soft- |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ware should ensure the appropriate inter- |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rupt flag bits are clear prior to enabling an |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interrupt. |
|
|
|
|
FIGURE 2-7: PIR1 REGISTER (ADDRESS 0Ch) |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
R/W-0 |
|
|
R/W-0 |
R-0 |
R-0 |
R/W-0 |
R/W-0 |
R/W-0 |
R/W-0 |
|
|
|
|||||||
|
PSPIF(1) |
|
|
ADIF(2) |
|
RCIF |
|
TXIF |
|
SSPIF |
|
CCP1IF |
|
TMR2IF |
TMR1IF |
|
R |
= Readable bit |
|
|
|
bit7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bit0 |
W |
= Writable bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
|
|
bit 7: |
|
PSPIF(1): Parallel Slave Port Read/Write Interrupt Flag bit |
|
|
|
|
|
||||||||||||
|
|
|
1 |
= A read or a write operation has taken place (must be cleared in software) |
||||||||||||||||
|
|
|
0 |
= No read or write has occurred |
|
|
|
|
|
|
|
|
||||||||
|
bit |
6: |
|
ADIF(2): A/D Converter Interrupt Flag bit |
|
|
|
|
|
|
|
|
||||||||
|
|
|
1 |
= An A/D conversion completed (must be cleared in software) |
|
|
|
|||||||||||||
|
|
|
0 |
= The A/D conversion is not complete |
|
|
|
|
|
|
|
|
||||||||
|
bit |
5: |
|
RCIF: USART Receive Interrupt Flag bit |
|
|
|
|
|
|
|
|
||||||||
|
|
|
1 |
= The USART receive buffer is full (cleared by reading RCREG) |
|
|
|
|||||||||||||
|
|
|
0 |
= The USART receive buffer is empty |
|
|
|
|
|
|
|
|
||||||||
|
bit |
4: |
|
TXIF: USART Transmit Interrupt Flag bit |
|
|
|
|
|
|
|
|
||||||||
|
|
|
1 |
= The USART transmit buffer is empty |
(cleared by writing to TXREG) |
|
|
|
||||||||||||
|
|
|
0 |
= The USART transmit buffer is full |
|
|
|
|
|
|
|
|
||||||||
|
bit |
3: |
|
SSPIF: Synchronous Serial Port Interrupt Flag bit |
|
|
|
|
|
|
||||||||||
|
|
|
1 |
= The transmission/reception is complete (must be cleared in software) |
|
|
|
|||||||||||||
|
|
|
0 |
= Waiting to transmit/receive |
|
|
|
|
|
|
|
|
|
|
||||||
|
bit |
2: |
|
CCP1IF: CCP1 Interrupt Flag bit |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
Capture Mode |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
1 |
= A TMR1 register capture occurred (must be cleared in software) |
|
|
|
|||||||||||||
|
|
|
0 |
= No TMR1 register capture occurred |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
Compare Mode |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
1 |
= A TMR1 register compare match occurred (must be cleared in software) |
|
|
||||||||||||||
|
|
|
0 |
= No TMR1 register compare match occurred |
|
|
|
|
|
|
||||||||||
|
|
|
|
PWM Mode |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
Unused in this mode |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
bit |
1: |
|
TMR2IF: TMR2 to PR2 Match Interrupt Flag bit |
|
|
|
|
|
|
||||||||||
|
|
|
1 |
= TMR2 to PR2 match occurred (must be cleared in software) |
|
|
|
|||||||||||||
|
|
|
0 |
= No TMR2 to PR2 match occurred |
|
|
|
|
|
|
|
|
||||||||
|
bit |
0: |
|
TMR1IF: TMR1 Overflow Interrupt Flag bit |
|
|
|
|
|
|
||||||||||
|
|
|
1 |
= TMR1 register overflowed (must be cleared in software) |
|
|
|
|
|
|||||||||||
|
|
|
0 |
= TMR1 register did not overflow |
|
|
|
|
|
|
|
|
Note 1: PIC16C63A/73B devices do not have a Parallel Slave Port implemented. This bit location is reserved on these devices. Always maintain this bit clear.
2:PIC16C63A/65B devices do not have an A/D module. This bit location is reserved on these devices. Always maintain this bit clear.
1998 Microchip Technology Inc. |
DS30605A-page 19 |
PIC16C63A/65B/73B/74B
2.2.2.6PIE2 REGISTER
This register contains the individual enable bit for the
CCP2 peripheral interrupt.
FIGURE 2-8: PIE2 REGISTER (ADDRESS 8Dh)
|
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
R/W-0 |
|
|
|
|
|
|
— |
— |
— |
— |
|
— |
— |
— |
CCP2IE |
R |
= Readable bit |
|
|
|
bit7 |
|
|
|
|
|
|
|
bit0 |
|
W |
= Writable bit |
|
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
|
|
bit 7-1: |
Unimplemented: Read as '0' |
|
|
|
|
|
|
|
|
|||
|
bit 0: |
CCP2IE: CCP2 Interrupt Enable bit |
|
|
|
|
|
|
|
||||
|
|
1 = Enables the CCP2 interrupt |
|
|
|
|
|
|
|
|
|||
|
|
0 = Disables the CCP2 interrupt |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DS30605A-page 20 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
2.2.2.7PIR2 REGISTER
This register contains the CCP2 interrupt flag bit.
.
Note: Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the global enable bit, GIE (INTCON<7>). User software should ensure the appropriate interrupt flag bits are clear prior to enabling an interrupt.
FIGURE 2-9: PIR2 REGISTER (ADDRESS 0Dh)
U-0 |
|
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
R/W-0 |
|
|
|
|
— |
|
— |
— |
— |
|
— |
— |
— |
CCP2IF |
R |
= Readable bit |
|
bit7 |
|
|
|
|
|
|
|
|
bit0 |
|
W |
= Writable bit |
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
bit 7-1: |
Unimplemented: Read as '0' |
|
|
|
|
|
|
|
||||
bit 0: |
CCP2IF: CCP2 Interrupt Flag bit |
|
|
|
|
|
|
|
||||
|
Capture Mode |
|
|
|
|
|
|
|
|
|
||
|
1 |
= A TMR1 register capture occurred (must be cleared in software) |
|
|
|
|||||||
|
0 |
= No TMR1 register capture occurred |
|
|
|
|
|
|
||||
|
Compare Mode |
|
|
|
|
|
|
|
|
|
||
|
1 |
= A TMR1 register compare match occurred (must be cleared in software) |
|
|||||||||
|
0 |
= No TMR1 register compare match occurred |
|
|
|
|
|
PWM Mode
Unused
1998 Microchip Technology Inc. |
DS30605A-page 21 |
PIC16C63A/65B/73B/74B
2.2.2.8 |
PCON REGISTER |
|
|
|
|
|
|
|
Note: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
If the BODEN configuration bit is set, BOR |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
The Power Control (PCON) register contains a flag bit |
|
|
|
is ’1’ on Power-on Reset. If the BODEN |
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
configuration bit is clear, BORis unknown |
|
|||||||||||||||||||||||||||||||||
to allow |
differentiation |
between |
a Power-on |
Reset |
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
on Power-on Reset. |
|
|||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
(POR) to an external MCLR Reset or WDT Reset. |
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
Those devices with brown-out detection circuitry con- |
|
|
|
The |
BOR |
|
status bit is a "don't care" and is |
||||||||||||||||||||||||||||||
tain an additional bit to differentiate a Brown-out Reset |
|
|
|
not necessarily predictable if the brown-out |
|||||||||||||||||||||||||||||||||
condition from a Power-on Reset condition. |
|
|
|
|
|
|
|
circuit is disabled (the BODEN configura- |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tion bit is clear). |
|
|
|
must then be set by |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOR |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
the user and checked on subsequent |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resets to see if |
|
is clear, indicating a |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
brown-out has occurred. |
|
||||||||||||||||
FIGURE 2-10: PCON REGISTER (ADDRESS 8Eh) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
U-0 |
|
U-0 |
U-0 |
U-0 |
U-0 |
|
U-0 |
R/W-0 |
R/W-q |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
— |
|
— |
|
— |
|
— |
|
— |
|
— |
|
|
|
|
|
|
|
|
|
R |
= Readable bit |
|
|
||||||||||||
|
|
|
|
|
|
|
|
POR |
BOR |
||||||||||||||||||||||||||||
|
bit7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bit0 |
|
W |
= Writable bit |
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
= Unimplemented bit, |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
read as ‘0’ |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- n = Value at POR reset |
|
|
|||||||||
|
bit 7-2: |
|
Unimplemented: Read as '0' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
bit |
1: |
|
|
: Power-on Reset Status bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
POR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
1 = No Power-on Reset occurred |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs) |
|
||||||||||||||||||||||||||||||||
|
bit |
0: |
|
|
: Brown-out Reset Status bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
BOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
1 = No Brown-out Reset occurred |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
0 = A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs) |
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DS30605A-page 22 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
2.3PCL and PCLATH
The program counter (PC) specifies the address of the instruction to fetch for execution. The PC is 13 bits wide. The low byte is called the PCL register. This register is readable and writable. The high byte is called the PCH register. This register contains the PC<12:8> bits and is not directly readable or writable. All updates to the PCH register go through the PCLATH register.
2.3.1STACK
The stack allows a combination of up to 8 program calls and interrupts to occur. The stack contains the return address from this branch in program execution.
Mid-Range devices have an 8 level deep x 13-bit wide hardware stack. The stack space is not part of either program or data space and the stack pointer is not readable or writable. The PC is PUSHed onto the stack when a CALL instruction is executed or an interrupt causes a branch. The stack is POPed in the event of a RETURN, RETLW or a RETFIE instruction execution.
PCLATH is not modified when the stack is PUSHed or POPed.
After the stack has been PUSHed eight times, the ninth push overwrites the value that was stored from the first push. The tenth push overwrites the second push (and so on).
2.4Program Memory Paging
The CALL and GOTO instructions provide 11 bits of address to allow branching within any 2K program memory page. When doing a CALL or GOTO instruction the upper bit of the address is provided by PCLATH<3>. When doing a CALL or GOTO instruction, the user must ensure that the page select bit is programmed so that the desired program memory page is addressed. If a return from a CALL instruction (or interrupt) is executed, the entire 13-bit PC is pushed onto the stack. Therefore, manipulation of the PCLATH<3> bit is not required for the return instructions (which POPs the address from the stack).
1998 Microchip Technology Inc. |
DS30605A-page 23 |
PIC16C63A/65B/73B/74B
2.5Indirect Addressing, INDF and FSR Registers
The INDF register is not a physical register. Addressing INDF actually addresses the register whose address is contained in the FSR register (FSR is a pointer). This is indirect addressing.
EXAMPLE 2-1: INDIRECT ADDRESSING
•Register file 05 contains the value 10h
•Register file 06 contains the value 0Ah
•Load the value 05 into the FSR register
•A read of the INDF register will return the value of 10h
•Increment the value of the FSR register by one (FSR = 06)
•A read of the INDR register now will return the value of 0Ah.
Reading INDF itself indirectly (FSR = 0) will produce 00h. Writing to the INDF register indirectly results in a no-operation (although STATUS bits may be affected).
FIGURE 2-11: DIRECT/INDIRECT ADDRESSING
A simple program to clear RAM locations 20h-2Fh using indirect addressing is shown in Example 2-2.
EXAMPLE 2-2: HOW TO CLEAR RAM USING INDIRECT ADDRESSING
|
movlw |
0x20 |
;initialize pointer |
|
movwf |
FSR |
; to RAM |
NEXT |
clrf |
INDF |
;clear INDF register |
|
incf |
FSR |
;inc pointer |
|
btfss |
FSR,4 |
;all done? |
|
goto |
NEXT |
;NO, clear next |
CONTINUE |
|
|
|
|
: |
|
;YES, continue |
An effective 9-bit address is obtained by concatenating the 8-bit FSR register and the IRP bit (STATUS<7>), as shown in Figure 2-11. However, IRP is not used in the PIC16C63A/65B/73B/74B.
|
|
|
Direct Addressing |
|
|
|
|
|
|
|
|
|
Indirect Addressing |
|
||||||||||||
RP1:RP0 |
6 |
from opcode |
0 |
|
|
|
IRP |
7 |
|
FSR register |
0 |
|||||||||||||||
(2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
(2) |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bank select |
location select |
|
|
|
|
bank select |
|
|
|
location select |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
00 |
01 |
10 |
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
00h |
|
80h |
100h |
180h |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
not used Data (3) (3)
Memory(1)
7Fh |
FFh |
17Fh |
1FFh |
|
|
|
|
Bank 0 |
Bank 1 |
Bank 2 |
Bank 3 |
Note 1: For register file map detail see Figure 2-2.
2:Maintain RP1 and IRP as clear for upward compatibility with future products.
3:Not implemented.
DS30605A-page 24 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
3.0I/O PORTS
Some pins for these I/O ports are multiplexed with an alternate function for the peripheral features on the device. In general, when a peripheral is enabled, that pin may not be used as a general purpose I/O pin.
Additional information on I/O ports may be found in the PICmicro Mid-Range Reference Manual, (DS33023).
3.1PORTA and the TRISA Register
PORTA is a 6-bit wide bi-directional port. The corresponding data direction register is TRISA. Setting a TRISA bit (=1) will make the corresponding PORTA pin an input, i.e., put the corresponding output driver in a hi-impedance mode. Clearing a TRISA bit (=0) will make the corresponding PORTA pin an output, i.e., put the contents of the output latch on the selected pin.
Note: On a Power-on Reset, these pins are configured as inputs and read as '0'.
Reading the PORTA register reads the status of the pins, whereas writing to it will write to the port latch. All write operations are read-modify-write operations. Therefore, a write to a port implies that the port pins are read. This value is modified and then written to the port data latch.
Pin RA4 is multiplexed with the Timer0 module clock input to become the RA4/T0CKI pin. The RA4/T0CKI pin is a Schmitt Trigger input and an open drain output. All other RA port pins have TTL input levels and full CMOS output drivers.
On PIC16C73B/74B devices, other PORTA pins are multiplexed with analog inputs and analog VREF input. The operation of each pin is selected by clearing/setting the control bits in the ADCON1 register (A/D Control Register1).
Note: On a Power-on Reset, these pins are configured as analog inputs and read as '0'.
The TRISA register controls the direction of the RA pins, even when they are being used as analog inputs. The user must ensure the bits in the TRISA register are maintained set when using them as analog inputs.
EXAMPLE 3-1: INITIALIZING PORTA
BCF |
STATUS, RP0 |
; |
|
CLRF |
PORTA |
; Initialize |
PORTA by |
|
|
; clearing output |
|
|
|
; data latches |
|
BSF |
STATUS, RP0 |
; Select Bank 1 |
|
MOVLW |
0xCF |
; Value used |
to |
|
|
; initialize |
data |
|
|
; direction |
|
MOVWF |
TRISA |
; Set RA<3:0> as inputs |
|
|
|
; RA<5:4> as |
outputs |
|
|
; TRISA<7:6> |
are always |
|
|
; read as '0'. |
FIGURE 3-1: BLOCK DIAGRAM OF RA3:RA0 AND RA5 PINS
Data |
|
|
|
bus |
Q |
|
|
D |
|
|
|
WR |
|
VDD |
|
|
|
|
|
Port |
Q |
|
|
CK |
P |
|
|
|
|
|
|
Data Latch |
|
|
|
D |
Q |
N |
I/O pin(1) |
WR |
|
|
|
TRIS |
Q |
VSS |
|
CK |
|
||
|
|
Analog |
|
TRIS Latch |
input |
|
|
mode |
|
||
|
|
(73B/74B |
|
|
|
only) |
|
|
RD TRIS |
|
TTL |
|
|
|
input |
|
Q |
D |
buffer |
|
|
||
|
|
EN |
|
RD PORT |
|
|
|
To A/D Converter (73B/74B only)
Note 1: I/O pins have protection diodes to VDD and VSS.
FIGURE 3-2: BLOCK DIAGRAM OF RA4/T0CKI PIN
Data |
|
|
|
|
bus |
D |
Q |
|
|
|
|
|
||
WR |
|
|
|
|
PORT |
CK |
Q |
|
I/O pin(1) |
|
N |
|||
|
|
|
|
|
|
Data Latch |
|
|
|
|
D |
Q |
VSS |
|
WR |
|
|
|
|
TRIS |
CK |
Q |
Schmitt |
|
|
Trigger |
|
||
|
|
|
|
|
|
TRIS Latch |
input |
|
|
|
buffer |
|
||
|
|
|
|
|
|
RD TRIS |
|
|
|
|
|
Q |
D |
|
|
|
|
ENEN |
|
RD PORT |
|
|
|
|
TMR0 clock input |
|
|
Note 1: I/O pin has protection diodes to VSS only.
1998 Microchip Technology Inc. |
DS30605A-page 25 |
PIC16C63A/65B/73B/74B
TABLE 3-1: |
PORTA FUNCTIONS |
|||||
|
|
|
|
|
||
Name |
|
Bit# |
Buffer |
Function |
||
|
|
|
|
|
||
|
|
|
|
|
||
RA0/AN0 |
|
bit0 |
TTL |
Input/output or analog input(1) |
||
RA1/AN1 |
|
bit1 |
TTL |
Input/output or analog input(1) |
||
RA2/AN2 |
|
bit2 |
TTL |
Input/output or analog input(1) |
||
RA3/AN3/VREF |
|
bit3 |
TTL |
Input/output or analog input(1) or VREF(1) |
||
RA4/T0CKI |
|
bit4 |
ST |
Input/output or external clock input for Timer0 |
||
|
|
|
|
|
|
Output is open drain type |
|
|
|
|
|
|
Input/output or slave select input for synchronous serial port or analog input(1) |
RA5/SS/AN4 |
|
bit5 |
TTL |
Legend: TTL = TTL input, ST = Schmitt Trigger input
Note 1: On PIC16C73B/74B devices only.
TABLE 3-2: SUMMARY OF REGISTERS ASSOCIATED WITH PORTA
|
|
|
|
|
|
|
|
|
|
Value on |
Value on all |
|||
Address |
Name |
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
POR, |
||||
other resets |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
BOR |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
05h |
PORTA |
— |
— |
RA5 |
RA4 |
RA3 |
RA2 |
RA1 |
RA0 |
--0x |
0000 |
--0u |
0000 |
|
85h |
TRISA |
— |
— |
PORTA Data Direction Register |
|
|
|
--11 |
1111 |
--11 |
1111 |
|||
9Fh |
ADCON1(1) |
— |
— |
— |
— |
— |
PCFG2 |
PCFG1 |
PCFG0 |
---- -000 |
---- -000 |
Legend: x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by PORTA. Note 1: On PIC16C73B/74B devices only.
DS30605A-page 26 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
3.2PORTB and the TRISB Register
PORTB is an 8-bit wide bi-directional port. The corresponding data direction register is TRISB. Setting a TRISB bit (=1) will make the corresponding PORTB pin an input, i.e., put the corresponding output driver in a hi-impedance mode. Clearing a TRISB bit (=0) will make the corresponding PORTB pin an output, i.e., put the contents of the output latch on the selected pin.
EXAMPLE 3-1: INITIALIZING PORTB
BCF |
STATUS, RP0 |
; |
|
CLRF |
PORTB |
; Initialize |
PORTB by |
|
|
; clearing output |
|
|
|
; data latches |
|
BSF |
STATUS, RP0 |
; Select Bank 1 |
|
MOVLW |
0xCF |
; Value used |
to |
|
|
; initialize |
data |
|
|
; direction |
|
MOVWF |
TRISB |
; Set RB<3:0> as inputs |
|
|
|
; RB<5:4> as |
outputs |
|
|
; RB<7:6> as |
inputs |
Each of the PORTB pins has a weak internal pull-up. A single control bit can turn on all the pull-ups. This is performed by clearing bit RBPU (OPTION_REG<7>). The weak pull-up is automatically turned off when the port pin is configured as an output. The pull-ups are disabled on a Power-on Reset.
FIGURE 3-3: BLOCK DIAGRAM OF RB3:RB0 PINS
VDD
RBPU(2)
Data bus
WR Port
WR TRIS
RB0/INT
|
|
P |
weak |
|
|
|
pull-up |
||
Data Latch |
|
|
||
D |
Q |
|
|
|
CK |
|
|
I/O |
|
|
|
pin(1) |
||
TRIS Latch |
|
|
||
D |
Q |
TTL |
|
|
|
|
|
||
CK |
|
Input |
|
|
|
Buffer |
|
||
RD TRIS |
|
|
||
|
Q |
D |
|
|
RD Port |
|
EN |
|
|
Schmitt Trigger |
RD Port |
|||
Buffer |
||||
|
|
Note 1: I/O pins have diode protection to VDD and VSS.
2:To enable weak pull-ups, set the appropriate TRIS bit(s) and clear the RBPU bit (OPTION_REG<7>).
Four of PORTB’s pins, RB7:RB4, have an interrupt on change feature. Only pins configured as inputs can cause this interrupt to occur (i.e. any RB7:RB4 pin configured as an output is excluded from the interrupt on change comparison). The input pins (of RB7:RB4) are compared with the old value latched on the last read of PORTB. The “mismatch” outputs of RB7:RB4 are OR’ed together to generate the RB Port Change Interrupt with flag bit RBIF (INTCON<0>).
This interrupt can wake the device from SLEEP. The user, in the interrupt service routine, can clear the interrupt in the following manner:
a)Any read or write of PORTB. This will end the mismatch condition.
b)Clear flag bit RBIF.
A mismatch condition will continue to set flag bit RBIF. Reading PORTB will end the mismatch condition, and allow flag bit RBIF to be cleared.
The interrupt on change feature is recommended for wake-up on key depression operation and operations where PORTB is only used for the interrupt on change feature. Polling of PORTB is not recommended while using the interrupt on change feature.
FIGURE 3-4: BLOCK DIAGRAM OF RB7:RB4 PINS
|
|
VDD |
|
RBPU(2) |
|
P |
weak |
|
|
pull-up |
|
Data bus |
Data Latch |
|
|
D |
Q |
|
|
|
|
||
WR Port |
|
|
I/O |
CK |
|
pin(1) |
|
|
|
TRIS Latch
|
D |
Q |
|
|
WR TRIS |
CK |
|
TTL |
|
|
|
Input |
|
|
|
|
|
|
|
|
|
|
Buffer |
ST |
|
|
|
|
Buffer |
|
RD TRIS |
Latch |
|
|
|
|
|
|
|
|
|
Q |
D |
|
Set RBIF |
RD Port |
|
EN |
Q1 |
|
|
|
|
|
From other |
|
Q |
D |
|
|
|
|
RD Port |
|
RB7:RB4 pins |
|
|
|
|
|
|
|
EN |
Q3 |
|
|
|
|
|
RB7:RB6 in serial programming mode |
|
|
Note 1: I/O pins have diode protection to VDD and VSS.
2:To enable weak pull-ups, set the appropriate TRIS bit(s) and clear the RBPU bit (OPTION_REG<7>).
1998 Microchip Technology Inc. |
DS30605A-page 27 |
PIC16C63A/65B/73B/74B
TABLE 3-3: |
PORTB FUNCTIONS |
||
|
|
|
|
Name |
Bit# |
Buffer |
Function |
|
|
|
|
|
|
|
|
RB0/INT |
bit0 |
TTL/ST(1) |
Input/output pin or external interrupt input. Internal software |
|
|
|
programmable weak pull-up. |
RB1 |
bit1 |
TTL |
Input/output pin. Internal software programmable weak pull-up. |
RB2 |
bit2 |
TTL |
Input/output pin. Internal software programmable weak pull-up. |
RB3 |
bit3 |
TTL |
Input/output pin. Internal software programmable weak pull-up. |
RB4 |
bit4 |
TTL |
Input/output pin (with interrupt on change). Internal software programmable |
|
|
|
weak pull-up. |
RB5 |
bit5 |
TTL |
Input/output pin (with interrupt on change). Internal software programmable |
|
|
|
weak pull-up. |
RB6 |
bit6 |
TTL/ST(2) |
Input/output pin (with interrupt on change). Internal software programmable |
|
|
|
weak pull-up. Serial programming clock. |
RB7 |
bit7 |
TTL/ST(2) |
Input/output pin (with interrupt on change). Internal software programmable |
|
|
|
weak pull-up. Serial programming data. |
Legend: TTL = TTL input, ST = Schmitt Trigger input
Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt. 2: This buffer is a Schmitt Trigger input when used in serial programming mode.
TABLE 3-4: SUMMARY OF REGISTERS ASSOCIATED WITH PORTB
|
|
|
|
|
|
|
|
|
|
|
|
Value on |
Value on all |
Address |
Name |
|
Bit 7 |
|
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
POR, |
|
|
|
other resets |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
BOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
06h |
PORTB |
|
RB7 |
|
RB6 |
RB5 |
RB4 |
RB3 |
RB2 |
RB1 |
RB0 |
xxxx xxxx |
uuuu uuuu |
|
|
|
|
|
|
|
|
|
|
|
|
||
86h |
TRISB |
PORTB Data Direction Register |
|
|
|
|
1111 1111 |
1111 1111 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81h |
OPTION_ |
|
|
|
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
1111 1111 |
1111 1111 |
|
RBPU |
||||||||||||
|
REG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Legend: x = unknown, u = unchanged. Shaded cells are not used by PORTB.
DS30605A-page 28 |
1998 Microchip Technology Inc. |
PIC16C63A/65B/73B/74B
3.3PORTC and the TRISC Register
PORTC is an 8-bit wide bi-directional port. The corresponding data direction register is TRISC. Setting a TRISC bit (=1) will make the corresponding PORTC pin an input, i.e., put the corresponding output driver in a hi-impedance mode. Clearing a TRISC bit (=0) will make the corresponding PORTC pin an output, i.e., put the contents of the output latch on the selected pin.
PORTC is multiplexed with several peripheral functions (Table 3-5). PORTC pins have Schmitt Trigger input buffers.
When enabling peripheral functions, care should be taken in defining TRIS bits for each PORTC pin. Some peripherals override the TRIS bit to make a pin an output, while other peripherals override the TRIS bit to make a pin an input. Since the TRIS bit override is in effect while the peripheral is enabled, read-modify- write instructions (BSF, BCF, XORWF) with TRISC as destination should be avoided. The user should refer to the corresponding peripheral section for the correct TRIS bit settings.
EXAMPLE 3-1: INITIALIZING PORTC
BCF |
STATUS, RP0 |
; Select Bank 0 |
|
CLRF |
PORTC |
; Initialize |
PORTC by |
|
|
; clearing output |
|
|
|
; data latches |
|
BSF |
STATUS, RP0 |
; Select Bank 1 |
|
MOVLW |
0xCF |
; Value used |
to |
|
|
; initialize |
data |
|
|
; direction |
|
MOVWF |
TRISC |
; Set RC<3:0> as inputs |
|
|
|
; RC<5:4> as |
outputs |
|
|
; RC<7:6> as |
inputs |
FIGURE 3-5: PORTC BLOCK DIAGRAM (PERIPHERAL OUTPUT OVERRIDE)
PORT/PERIPHERAL Select(2) |
|
|||
Peripheral Data Out |
0 |
VDD |
||
|
|
|||
Data bus |
|
|
||
D |
Q |
P |
||
WR |
||||
|
1 |
|||
|
|
|||
PORT |
|
|
||
CK |
Q |
|
||
|
|
|||
|
Data Latch |
|
||
WR |
D |
Q |
I/O |
|
|
|
pin(1) |
||
TRIS |
CK |
Q |
N |
|
|
||||
|
TRIS Latch |
VSS |
||
|
|
|
||
|
RD TRIS |
Schmitt |
||
|
Trigger |
|||
Peripheral |
|
|
||
|
|
|
||
OE(3) |
|
Q |
D |
|
|
RD |
|
EN |
|
|
|
|
||
|
PORT |
|
|
|
Peripheral input |
|
|
Note 1: I/O pins have diode protection to VDD and VSS.
2:Port/Peripheral select signal selects between port data and peripheral output.
3:Peripheral OE (output enable) is only activated if peripheral select is active.
1998 Microchip Technology Inc. |
DS30605A-page 29 |
PIC16C63A/65B/73B/74B
TABLE 3-5: |
PORTC FUNCTIONS |
|
||
|
|
|
|
|
Name |
|
Bit# |
Buffer Type |
Function |
|
|
|
|
|
|
|
|
|
|
RC0/T1OSO/T1CKI |
bit0 |
ST |
Input/output port pin or Timer1 oscillator output/Timer1 clock input |
|
|
|
|
|
|
RC1/T1OSI |
|
bit1 |
ST |
Input/output port pin or Timer1 oscillator input |
|
|
|
|
|
RC2/CCP1 |
|
bit2 |
ST |
Input/output port pin or Capture1 input/Compare1 output/PWM1 |
|
|
|
|
output |
|
|
|
|
|
RC3/SCK/SCL |
|
bit3 |
ST |
RC3 can also be the synchronous serial clock for both SPI and I2C |
|
|
|
|
modes. |
|
|
|
|
|
RC4/SDI/SDA |
|
bit4 |
ST |
RC4 can also be the SPI Data In (SPI mode) or data I/O (I2C mode). |
RC5/SDO |
|
bit5 |
ST |
Input/output port pin or Synchronous Serial Port data output |
|
|
|
|
|
RC6 |
|
bit6 |
ST |
Input/output port pin |
|
|
|
|
|
RC7 |
|
bit7 |
ST |
Input/output port pin |
|
|
|
|
|
Legend: ST = Schmitt Trigger input
TABLE 3-6: |
SUMMARY OF REGISTERS ASSOCIATED WITH PORTC |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value on |
Value on all |
Address |
Name |
|
Bit 7 |
Bit 6 |
Bit 5 |
|
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
POR, |
|
|
|
other resets |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
BOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
07h |
PORTC |
|
RC7 |
RC6 |
RC5 |
|
RC4 |
RC3 |
RC2 |
RC1 |
RC0 |
xxxx xxxx |
uuuu uuuu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87h |
TRISC |
|
PORTC Data Direction Register |
|
|
|
|
|
1111 1111 |
1111 1111 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Legend: x = unknown, u = unchanged.
DS30605A-page 30 |
1998 Microchip Technology Inc. |