8.0 Master Synchronous Serial Port (MSSP) Module........................................................................................................................53
12.0 Special Features of the CPU.....................................................................................................................................................127
13.0 Instruction Set Summary............................................................................................................................................................ 143
14.0 Development Support ................................................................................................................................................................ 145
16.0 DC and AC Characteristics Graphs and Tables ....................................................... .. .... .... ......... .. ............................................173
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, w e will pub lish an errata sheet. The errata will specify the re vision 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 liter-
ature 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 missin g
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.
DS30275A-page 4Advance Information 1999 Microchip Technology Inc.
PIC16C77X
1.0DEVICE OVERVIEW
This document contains device-specific information.
Additional information ma y be foun d in the PIC m icro™
Mid-Range Reference Manual, (DS33023), which may
be obtained from your local Microchip Sales Representative or downloaded from the Microchip website. The
Reference Manual should be considered a complementary document to this data she et, and is h ighly recommended reading for a better understanding of the
device architecture and operation of the peripheral
modules.
FIGURE 1-1:PIC16C773 BLOCK DIAGRAM
13
Program Counter
8 Level Stack
(13-bit)
Direct Addr
7
Program
Bus
EPROM
Program
Memory
4K x 14
14
Instruction reg
RAM Addr
There a two devices (PIC16C773 and PIC16C774)
covered by this datasheet. The PIC16C773 devices
come in 28-pin packages and the PIC16C774 devices
come in 40-pin packages. The 28-pin devices do not
have a Parallel Slave Port 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 T able 1-1 and Table 1-2, respectively.
Note 1: Higher order bits are from the STATUS register.
DS30275A-page 6Advance Information 1999 Microchip Technology Inc.
PIC16C77X
TABLE 1-1PIC16C773 PINOUT DESCRIPTION
DIP,
Pin Name
SSOP,
SOIC
I/O/P
Type
Pin#
OSC1/CLKIN9I
OSC2/CLKOUT10O—Oscillator crystal output. Connects to crystal or resonator in crystal
MCLR
/VPP
1I/PSTMaster clear (reset) input or programming voltage input. This pin is an
RA0/AN02I/OTTLRA0 can also be analog input0
RA1/AN13I/OTTLRA1 can also be analog input1
RA2/AN2/V
RA3/AN3/V
REF-/VRL4I/OTTLRA2 can also be analog input2 or negative analog reference voltage
REF+/VRH5I/OTTLRA3 can also be analog input3 or positive analog reference voltage
RA4/T0CKI6I/OSTRA4 can also be the clock input to the Timer0 module. Output is
RB0/INT21I/OTTL/ST
RB1/SS
22I/OTTL/ST
RB2/AN823I/OTTLRB2 can also be analog input8
RB3/AN9/LVDIN24I/OTTLRB3 can also be analog input9 or the low voltage detect input
RB425I/OTTLInterrupt on change pin.
RB526I/OTTLInterrupt on change pin.
RB627I/OTTL/ST
RB728I/OTTL/ST
RC0/T1OSO/T1CKI11I/OSTRC0 can also be the Timer1 oscillator output or Timer1 clock input.
RC1/T1OSI/CCP212I/OSTRC1 can also be the Timer1 oscillator input or Capture2 input/
RC2/CCP113I/OSTRC2 can also be the Capture1 input/Compare1 output/PWM1
RC3/SCK/SCL14I/OSTRC3 can also be the synchronous serial clock input/output for both
RC4/SDI/SDA15I/OSTRC4 can also be the SPI Data In (SPI mode) or
RC5/SDO16I/OSTRC5 can also be the SPI Data Out (SPI mode).
RC6/TX/CK17I/OSTRC6 can also be the USART Asynchronous Transmit or
RC7/RX/DT18I/OSTRC7 can also be the USART Asynchronous Receive or
SS8PGround reference for A/D converter
AV
DD7PPositive supply for A/D converter
AV
SS19P—Ground reference for logic and I/O pins.
V
DD20P—Positiv e supply for logic and I/O pins.
V
Legend: I = inputO = outputI/O = input/outputP = power
Note 1: This buffer is a Schmitt Trigger input when configured for the multiplexed function.
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.
OSC1/CLKIN131430IST/CMOS
OSC2/CLKOUT141531O—Oscillator crystal output. Connects to crystal or resonator
/VPP1218I/PSTMaster clear (reset) input or programming voltage input.
MCLR
RA0/AN02319I/OTTLRA0 can also be analog input0
RA1/AN13420I/OTTLRA1 can also be analog input1
RA2/AN2/V
RA3/AN3/V
RA4/T0CKI6723I/OSTRA4 can also be the clock input to the Timer0 timer/
RA5/AN47824I/OTTLRA5 can also be analog input4
RB0/INT33368I/OTTL/ST
RB1/SS
RB2/AN8353810I/OTTLRB2 can also be analog input8
RB3/AN9/LVDIN363911I/OTTLRB3 can also be analog input9 or input reference for
RB4374114I/OTTLInterrupt on change pin.
RB5384215I/OTTLInterrupt on change pin.
RB6394316I/OTTL/ST
RB7404417I/OTTL/ST
Legend: I = inputO = outputI/O = input/outputP = power
Note 1: This buffer is a Schmitt Trigger input when configured for the multiplexed function.
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.
Note 1: This buffer is a Schmitt Trigger input when configured for the multiplexed function.
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.
QFP
Pin#
33,34
I/O/P
Type
Buffer
Type
Description
PORTC is a bi-directional I/O port.
Timer1 clock input.
Capture2 input/Compare2 output/PWM2 output.
output/PWM1 output.
output for both SPI and I
2
data I/O (I
C mode).
2
C modes.
(SPI mode).
Transmit or Synchronous Clock.
or Synchronous Data.
PORTD is a bi-directional I/O port or parallel slave port
when interfacing to a microprocessor bus.
(3)
(3)
(3)
(3)
(3)
(3)
(3)
(3)
PORTE is a bi-directional I/O port.
(3)
RE0 can also be read control for the parallel slave
port, or analog input5.
(3)
RE1 can also be write control for the parallel slave
port, or analog input6.
(3)
RE2 can also be select control for the parallel slave
port, or analog input7.
Ground reference for A/D converter
Positive supply for A/D converter
—These pins are not internally connected. These pins
DS30275A-page 10Advance Information 1999 Microchip Technology Inc.
PIC16C77X
2.0MEMORY ORGANIZATION
There are two memory blocks in each of these
PICmicro
gram Memory and Data Memory) has its own bus
so that concurrent access can occur.
Additional information on de vice memo ry may be foun d
in the PICmicro Mid-Range Reference Manual,
(DS33023).
2.1Program Memory Organization
The PIC16C77X PICmicros have a 13-bit program
counter capable of addressing an 8K x 14 program
memory space. Each de vi ce has 4K x 14 w ords 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
®
microcontrollers. Each block (Pro-
AND STACK
PC<12:0>
CALL, RETURN
RETFIE, RETLW
13
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.
Each bank extends up to 7Fh (128 bytes). The lower
locations of each bank are reserved for the Special
Function Registers . Abo v e the Spec ial Fun ction Re gisters 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 a ccessed ei ther direc tly, or indi-
DS30275A-page 12Advance Information 1999 Microchip Technology Inc.
General
Purpose
Register
80 Bytes
accesses
70h-7Fh
EFh
F0h
FFh
General
Purpose
Register
80 Bytes
accesses
70h - 7Fh
Bank 2
6Fh
70h
17Fh
accesses
70h - 7Fh
Bank 3
1EFh
1F0h
1FFh
PIC16C77X
2.2.2SPECIAL FUNCTION REGISTERS
The special fu nction re gisters can b e classifi ed into two
sets; core (CPU) and periphe ral. Those registers asso-
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
given in Table 2-1.
ciated 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.
TABLE 2-1PIC16C77X SPECIAL FUNCTION REGISTER SUMMARY
02h
03h
04h
05hPORTA
06hPORTBPORTB Data Latch when written: PORTB pins when readxxxx 11xxuuuu 11uu
07hPORTCPORTC Data Latch when written: PORTC pins when readxxxx xxxxuuuu uuuu
08h
09h
0Ah
0Bh
0ChPIR1PSPIF
0DhPIR2LVDIF
0EhTMR1LHolding register for the Least Significant Byte of the 16-bit TMR1 registerxxxx xxxxuuuu uuuu
0FhTMR1HHolding register for the Most Significant Byte of the 16-bit TMR1 registerxxxx xxxxuuuu uuuu
10hT1CON
11hTMR2Timer2 module’s register0000 00000000 0000
12hT2CON
13hSSPBUFSynchronous Serial Port Receive Buffer/Transmit Registerxxxx xxxxuuuu uuuu
14hSSPCONWCOLSSPOVSSPENCKPSSPM3SSPM2SSPM1SSPM00000 00000000 0000
15hCCPR1LCapture/Compare/PWM Register1 (LSB)xxxx xxxxuuuu uuuu
16hCCPR1HCapture/Compare/PWM Register1 (MSB)xxxx xxxxuuuu uuuu
17hCCP1CON
18hRCSTASPENRX9SRENCRENADDENFERROERRRX9D0000 000x0000 000x
19hTXREGUSART Transmit Data Register0000 00000000 0000
1AhRCREGUSART Receive Data Register0000 00000000 0000
1BhCCPR2LCapture/Compare/PWM Register2 (LSB)xxxx xxxxuuuu uuuu
1ChCCPR2HCapture/Compare/PWM Register2 (MSB)xxxx xxxxuuuu uuuu
1DhCCP2CON
1EhADRESHA/D High Byte Result Registerxxxx xxxxuuuu uuuu
1FhADCON0ADCS1ADCS0CHS2CHS1CHS0GO/DONE
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented read as '0'.
Note 1: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for the PC<12:8> whose contents are transferred to
INDFAddressing this location uses contents of FSR to address data memory (not a physical register)0000 00000000 0000
(4)
PCLProgram Counter's (PC) Least Significant Byte0000 00000000 0000
(4)
STATUSIRPRP1RP0TOPDZDCC0001 1xxx000q quuu
(4)
FSRIndirect data memory address pointerxxxx xxxxuuuu uuuu
——PORTA5
(5)
PORTDPORTD Data Latch when written: PORTD pins when readxxxx xxxxuuuu uuuu
(5)
PORTE—————RE2RE1RE0---- -000---- -000
(1,4)
PCLATH———Write Buffer for the upper 5 bits of the Program Counter---0 0000---0 0000
the upper byte of the program counter.
2: Other (non power-up) resets include external reset through MCLR
3: Bits PSPIE and PSPIF are reserved on the 28-pin devices, always maintain these bits clear.
4: These registers can be addressed from any bank.
5: These registers/bits are not implemented on the 28-pin devices read as '0'.
(5)
PORTA Data Latch when written: PORTA<4:0> pins when read--0x 0000--0u 0000
86hTRISBPORTB Data Direction Register1111 11111111 1111
87hTRISCPORTC Data Direction Register1111 11111111 1111
88h
89h
8Ah
8Bh
8ChPIE1PSPIE
8DhPIE2LVDIE
8EhPCON
8Fh—Unimplemented——
90h—Unimplemented——
91hSSPCON2GCENAKSTATAKDTAKENRCENPENRSENSEN0000 00000000 0000
92hPR2Timer2 Period Register1111 11111111 1111
93hSSPADDSynchronous Serial Port (I
94hSSPSTATSMPCKED /A
95h—Unimplemented——
96h—Unimplemented——
97h—Unimplemented——
98hTXSTACSRCTX9TXENSYNC
99hSPBRGBaud Rate Generator Register0000 00000000 0000
9Ah—Unimplemented——
9BhREFCONVRHENVRLENVRHOENVRLOEN
9ChLVDCON
9Ah—Unimplemented——
9EhADRESLA/D Low Byte Result Registerxxxx xxxxuuuu uuuu
9FhADCON1ADFMVCFG2VCFG1VCFG0PCFG3PCFG2PCFG1PCFG00000 0000 0000 0000
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented read as ’0’.
Note 1: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for the PC<12:8> whose contents are transferred to
INDFAddressing this location uses contents of FSR to address data memory (not a physical register)0000 00000000 0000
INTEDGT0CST0SEPSAPS2PS1PS01111 11111111 1111
(4)
PCLProgram Counter’s (PC) Least Significant Byte0000 00000000 0000
(4)
STATUSIRPRP1RP0TOPDZDCC0001 1xxx000q quuu
(4)
FSRIndirect data memory address pointerxxxx xxxxuuuu uuuu
——bit5
(5)
TRISDPORTD Data Direction Register1111 11111111 1111
(5)
TRISEIBFOBFIBOVPSPMODE—PORTE Data Direction Bits0000 -1110000 -111
(1,4)
PCLATH———Write Buffer for the upper 5 bits of the Program Counter---0 0000---0 0000
the upper byte of the program counter.
2: Other (non power-up) resets include external reset through MCLR
3: Bits PSPIE and PSPIF are reserved on the 28-pin devices, always maintain these bits clear.
4: These registers can be addressed from any bank.
5: These registers/bits are not implemented on the 28-pin devices read as '0'.
(5)
PORTA Data Direction Register--11 1111--11 1111
2
C mode) Address Register0000 00000000 0000
PSR/WUABF0000 00000000 0000
—B RGHTRMTTX9D0000 -0100000 -010
————0000 ---- 0000 ----
and Watchdog Timer Reset.
Value on:
POR,
BOR
Value on all
other resets
(2)
DS30275A-page 14Advance Information 1999 Microchip Technology Inc.
PIC16C77X
TABLE 2-1PIC16C77X SPECIAL FUNCTION REGISTER SUMMARY (Cont.’d)
105h—Unimplemented——
106hPORTBPORTB Data Latch when written: PORTB pins when readxxxx 11xxuuuu 11uu
107h—Unimplemented——
108h—Unimplemented——
109h—Unimplemented——
10Ah
10Bh
10Ch10Fh
Bank 3
180h
181hOPTION_REG RBPU
182h
183h
184h
185h—Unimplemented——
186hTRISBPORTB Data Direction Register1111 11111111 1111
187h—Unimplemented——
188h—Unimplemented——
189h—Unimplemented——
18Ah
18Bh
18Ch18Fh
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented read as ’0’.
Note 1: The upper byte of the program counter is not directly accessible. PCLATH is a holding register for the PC<12:8> whose contents are transferred to
INDFAddressing this location uses contents of FSR to address data memory (not a physical register)0000 00000000 0000
(4)
PCLProgram Counter's (PC) Least Significant Byte0000 00000000 0000
(4)
STAT USIRPRP1RP0TOPDZDCC0001 1xxx000q quuu
(4)
FSRIndirect data memory address pointerxxxx xxxxuuuu uuuu
(1,4)
PCLATH———Write Buffer for the upper 5 bits of the Program Counter---0 0000---0 0000
the upper byte of the program counter.
2: Other (non power-up) resets include external reset through MCLR
3: Bits PSPIE and PSPIF are reserved on the 28-pin devices, always maintain these bits clear.
4: These registers can be addressed from any bank.
5: These registers/bits are not implemented on the 28-pin devices read as '0'.
Write Buffer for the upper 5 bits of the Program Counter
2.2.2.1STATUS REGISTER
The STATUS register, shown in Figure 2-3, contains
the arithmetic status of th e ALU , the RE SET status an d
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. The se bi ts ar e set or c leared accordi ng to the
device logic. Fur th er more, the TO
writable. Therefore, the result of an instruction with the
STATUS register as destination may be different than
intended.
and PD bits are not
For example, CLRF STATUS will clear th e up p er- t hr ee
bits and set th e Z bi t. T his l ea v es 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 o r DC b its from th e STATUS register. F or
other instructions, not affecting any sta tus bit s , s ee th e
"Instruction Set Summary."
Note 1: The C and DC bits oper ate as a borro w and
digit borrow
See the SUBLW and SUBWF instructions for
examples.
bit 7:IRP: Register Bank Select bit (used for indirect addressing)
1 = Bank 2, 3 (100h - 1FFh)
0 = Bank 0, 1 ( 00h - FFh)
bit 6-5: RP1:RP0: Register Bank Select bits (used for direct addressing)
11 = Bank 3 (180h - 1FFh)
10 = Bank 2 (100h - 17Fh)
01 = Bank 1 (80h - FFh)
00 = Bank 0 (00h - 7Fh)
Each bank is 128 bytes
bit 4:TO
bit 3:PD
bit 2:Z: Zero bit
bit 1:DC: Digit carry/borrow
bit 0:C: Carry/borrow
: Time-out bit
1 = After power-up, CLRWDT instruction, or SLEEP instruction
0 = A WDT time-out occurred
: Power-down bit
1 = After power-up or by the CLRWDT instruction
0 = By execution of the SLEEP instruction
1 = The result of an arithmetic or logic operation is zero
0 = The result of an arithmetic or logic operation is not zero
bit (ADDWF, ADDLW,SUBLW,SUBWF instructions) (for borrow the po larity i s 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 (ADDWF, ADDLW,SUBLW,SUBWF instructions)
1 = A carry-out from the most significant bit of the result occurred
0 = No carry-out from the most significant bit of the result occurred
Note: For borrow
second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high or low order bit of
the source register.
the polarity is reversed. A subtraction is executed by adding the two’s complement of the
PDZDCCR = Readable bit
bit, respectively , in subtraction.
W = Writable bit
U = Unimplemented bit,
read as ‘0’
- n = Value at POR reset
DS30275A-page 16Advance Information 1999 Microchip Technology Inc.
2.2.2.2OPTION_REG REGISTER
Note:To achieve a 1:1 prescaler assignment for
The OPTION_REG register is a readable and writable
register which co ntains v arious control bits to conf igure
the TMR0 register, assign the prescaler to
the Watchdog Timer.
the TMR0 prescaler/WDT postscaler (single assignable regist er kno wn also as the prescale r), the Ext ernal
INT Interrupt, TMR0, and the weak pull-up s on PORTB.
2.2.2.3INTCON REGISTER
The INTCON Regi ster i s a rea dab le a nd w ritabl e regi s-
ter which contains various enable and flag bits for the
TMR0 register overflow, RB Port change and External
RB0/INT pin interrupts.
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.
2.2.2.5PIR1 REGISTER
This register contains the individual flag bits for the
peripheral interrupts.
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-7:PIR1 REGISTER (ADDRESS 0Ch)
R/W-0R/W-0R-0R-0R/W-0R/W-0R/W-0R/W-0
(1)
PSPIF
bit7bit0
bit 7:PSPIF
bit 6:ADIF: A/D Converter Interrupt Flag bit
bit 5:RCIF: USART Receive Interrupt Flag bit
bit 4:TXIF: USART Transmit Interrupt Flag bit
bit 3:SSPIF: Synchronous Serial Port Interrupt Flag bit
bit 2:CCP1IF: CCP1 Interrupt Flag bit
bit 1:TMR2IF: TMR2 to PR2 Match Interrupt Flag bit
bit 0:TMR1IF: TMR1 Overflow Interrupt Flag bit
ADIFRCIFTXIFSSPIFCCP1IFTMR2IFTMR1IFR = Readable bit
(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
1 = An A/D conversion completed (must be cleared in software)
0 = The A/D conversion is not complete
1 = The USART receive buffer is full (cleared by reading RCREG)
0 = The USART receive buffer is empty
1 = The USART transmit buffer is empty (cleared by writing to TXREG)
0 = The USART transmit buffer is full
1 = The transmission/reception is complete (must be cleared in software)
0 = Waiting to transmit/receive
Capture Mode
1 = A TMR1 re gister 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
1 = TMR2 to PR2 match occurred (must be cleared in software)
0 = No TMR2 to PR2 match occurred
1 = TMR1 register overflowed (must be cleared in software)
0 = TMR1 register did not overflow
W = Writable bit
U = Unimplemented bit,
read as ‘0’
- n = Value at POR reset
Note 1: PSPIF is reserved on the 28-pin devices, always maintain this bit clear.
DS30275A-page 20Advance Information 1999 Microchip Technology Inc.
2.2.2.6PIE2 R EGISTER
This register contains the individual enable bits for the
CCP2, SSP bus collision, and low voltage detect interrupts.
FIGURE 2-8:PIE2 REGISTER (ADDRESS 8Dh)
R/W-0U-0U-0U-0R/W-0U-0U-0R/W-0
LVDIE
bit7bit0
bit 7LVDIE: Low-voltage Detect Interrupt Enable bit
bit 6-4: Unimplemented: Read as ’0’
bit 3:BCLIE: Bus Collision Interrupt Enable bit
bit 2-1: Unimplemented: Read as ’0’
bit 0:CCP2IE: CCP2 Interrupt Enable bit
———BCLIE ——CCP2IER = Readable bit
1 = LVD Interrupt is enabled
0 = LVD Interrupt is disabled
1 = Bus Collision interrupt is enabled
0 = Bus Collision interrupt is disabled
1 = Enables the CCP2 interrupt
0 = Disables the CCP2 interrupt
2.2.2.7PIR2 REGISTER
This register contains the CCP2, SSP Bus Collision,
and Low-voltage detect interrupt flag bits.
.
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)
R/W-0U-0U-0U-0R/W-0U-0U-0R/W-0
LVDIF
bit7bit0
bit 7:LVDIF: Low-voltage Detect Interrupt Flag bit
bit 6-4: Unimplemented: Read as ’0’
bit 3:BCLIF: Bus Collision Interrupt Flag bit
bit 2-1: Unimplemented: Read as ’0’
bit 0:CCP2IF: CCP2 Interrupt Flag bit
———BCLIF ——CCP2IFR = Readable bit
1 = The supply voltage has fallen below the specified LVD voltage (must be cleared in software)
0 = The supply voltage is greater than the specified LVD voltage
1 = A bus collision has occurred while the SSP module configured in I
(must be cleared in software)
0 = No bus collision occurred
W = Writable bit
U = Unimplemented bit,
read as ‘0’
- n = Value at POR reset
2
C Master was transmitting
Capture Mode
1 = A TMR1 re gister 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
DS30275A-page 22Advance Information 1999 Microchip Technology Inc.
PIC16C77X
2.2.2.8PCON REGISTER
The Power Control (PCON) register contains a flag bit
to allow differentiation between a Power-on Reset
(POR) to an external MCLR Reset or WDT Reset.
Those devices with brown-out detection circuitry contain an additional bit to differentiate a Brown-out Reset
condition from a Power-on Reset condition.
Note:BOR is unknown on Power-on Reset. It
must then be set by the user and checked
on subsequent resets to see if BOR is
clear , i ndi ca ting a brown-out has occurre d.
The BOR status bit is a don’t care and is
not necessarily predictab le if the brow n-out
circuit is disabled (by clearing the BODEN
bit in the Configuration word).
FIGURE 2-10: PCON REGISTER (ADDRESS 8Eh)
U-0U-0U-0U-0U-0U-0R /W-0R/W-1
——————PORBORR = Readable bit
bit7bit0
bit 7-2: Unimplemented: Read as ’0’
bit 1:POR
bit 0:BOR
: Power-on Reset Status bit
1 = No Power-on Reset occurred
0 = A Power-on Reset occurred (must be set in software after a Power-on Reset occurs)
: Brown-out Reset Status bit
1 = No Brown-out Reset occurred
0 = A Brown-out Reset occurred (must be set in software after a Brown-out Reset occurs)
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 dir ect ly read able or writable . All updates
to the PCH register go through the PCLATH register.
2.3.1STACK
The stack a llows a co mbination o f up to 8 pr ogram c alls
and interrupts to occur. The stack contains the return
address from this branch in program execution.
Midrange devices have an 8 level deep x 1 3-bit wide
hardware stack. T he stack space is not part of either
program or data space and the stack pointer is not
readable or writab le. The PC is PUSHed onto the stac k
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 stac k has been PUSHe d eight t imes, th e ninth
push overw rites th e value that was stored from the first
push. The tenth push overwrites the second push (and
so on).
2.4Program Memory Paging
PIC16C77X devices are capable of addressing a continuous 8K wor d block of progra m memor y. The CALL
and GOTO instructions provide only 11 bits of address
to allow branching within any 2K program memory
page. When doing a CALL or GOTO instruction the
upper 2 bits of the address are provided by
PCLATH<4:3>. When doing a CALL or GOTO instruction, the user must ensure that the page select bits are
programmed so that the desired program memory
page is addressed. If a return from a CALL instruction
(or interrupt) is ex ecute d, the entire 1 3-bit PC is pus hed
onto the stack. Therefore, manipulation of the
PCLATH<4:3> bits are not required for the return
instructions (which POPs the address from the stack).
DS30275A-page 24Advance Information 1999 Microchip Technology Inc.
PIC16C77X
The INDF register is not a physical r e gis ter. Addressing INDF actually addresses the register whose
address is contained in the FSR register (FSR is a
pointer
). This is indirect ad dressi ng .
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).
A simple program to clear RAM locations 20h-2Fh
using indirect addressing is shown in Example 2-1.
FIGURE 2-11: DIRECT/INDIRECT ADDRESSING
RP1:RP06
bank selectlocation select
from opcode
0
00011011
00h
80h
EXAMPLE 2-1: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 c on ca tena tin g
the 8-bit FSR register an d the IRP b it (STATUS<7>), as
shown in Figure 2-11.
Indirect AddressingDirect Addressing
7
location select
100h
IRPFSR register
bank select
180h
0
Data
Memory(1)
7Fh
FFh
17Fh
Bank 0Bank 1Bank 2Bank 3
Note 1: For register file map detail see Figure 2-2.
DS30275A-page 26Advance Information 1999 Microchip Technology Inc.
PIC16C77X
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 b e found in the
PICmicro™ Mid-Range Reference Manual,
(DS33023).
3.1PORTA and the TRISA Register
PORTA is a 6-bit wide bi-directional port for the 40/44
pin devices and is 5-bits wide for the 28-pin devices.
PORTA<5> is not on the 28-pin devices. The corresponding data direction register is TRISA. Setting a
TRISA bit (=1) will m ake the correspondi ng PORTA pin
an input, i.e., put the corresponding output driver in a
hi-impedance mode. Clearing a TRISA bit (=0) will
make the corre sp ond ing PORTA pin an o utpu t, i .e., put
the contents of the output latch on the selected pin.
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 th e port pins are
read, this val ue is modifie d, and then written to th e 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.
Other PORTA pins are multiplexed with analog inputs
and analog V
ences (VRL/VRH). 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 con-
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 registe r 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’.
REF inputs and precis ion on-boa rd refer-
figured as analog inputs and read as '0'.
FIGURE 3-1:BLOCK DIAGRAM OF
RA3:RA2 PINS
Data
bus
WR
Port
WR
TRIS
RD PORT
To A/D Converter
VRH, VRL
VRHOEN, VRLOEN
Sense input for
VRO+, VRO- amplifier
Note 1: I/O pins have protection diodes to VDD and
Note 1: I/O pins have protection diodes to VDD and
SS.
V
TABLE 3-1PORTA FUNCTIONS
NameBit#Buffer Function
RA0/AN0bit0TTLInput/output or analog input0
RA1/AN1bit1TTLInput/output or analog input1
RA2/AN2/VREF-/VRLbit2TTLInput/output or analog input2 or VREF- input or internal reference
voltage low
RA3/AN3/V
REF+/VRHbit3TTLInput/output or analog input or VREF+ input or output of internal
reference voltage high
RA4/T0CKIbit4STInput/output or external clock input for Timer0
Output is open drain type
RA5/AN4
(1)
bit5TTLInput/output or analog input
Legend: TTL = TTL input, ST = Schmitt Trigger input
Note 1: RA5 is reserved on the 28-pin devices, maintain this bit clear.
TABLE 3-2SUMMARY OF REGISTERS ASSOCIATED WITH PORTA
Legend: x = unknown, u = unchanged, - = unimplemented locations read as '0'. Shaded cells are not used by PORTA.
Note 1: PORTA<5>, TRISA<5> are reserved on the 28-pin devices, maintain these bits clear.
DS30275A-page 28Advance Information 1999 Microchip Technology Inc.
PIC16C77X
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 correspon ding POR TB pin
an input, i.e., put the corresponding output driver in a
hi-impedance mode. Clearing a TRISB bit (=0) will
make the corr espond ing PO R TB pi n an outpu t, 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 ca n turn on all the pull-u ps. This is performed by clearing bit RBPU (OPTION_REG<7>). The
weak pull-up i s autom atically tur ned off when the po rt
pin is configured as an output. The pull-ups are disabled on a Power-on Reset.
The RB0 pin is multiplexed with the external interrupt
(RB0/INT).
FIGURE 3-4:BLOCK DIAGRAM OF RB0 PIN
V
TTL
Input
Buffer
EN
DD
weak
P
pull-up
RD Port
I/O
pin
(1)
(2)
RBPU
Data bus
WR Port
WR TRIS
RB0/INT
Note 1: I/O pins have diode protection to V
2: To enable weak pull-ups, set the appropriate TRIS bit(s)
and clear the RBPU
Data Latch
QD
CK
TRIS Latch
QD
CK
RD TRIS
RD Port
Schmitt Trigger
Buffer
bit (OPTION_REG<7>).
QD
DD and VSS.
The RB1 pin is multiplexed with the SSP module slave
select (RB1/SS
).
FIGURE 3-5:BLOCK DIAGRAM OF RB1/SS
PIN
V
TTL
Input
Buffer
EN
DD
weak
P
pull-up
RD Port
I/O
pin
(1)
(2)
RBPU
Data bus
WR Port
WR TRIS
SS input
Note 1: I/O pins have diode protection to V
2: To enable weak pull-ups, set the appropriate TRIS bit(s)
and clear the RBPU
Data Latch
QD
CK
TRIS Latch
QD
CK
RD TRIS
RD Port
Schmitt Trigger
Buffer
bit (OPTION_REG<7>).
QD
DD and VSS.
The RB2 pin is multiplexed with analog channel 8
(RB2/AN8).
FIGURE 3-6:BLOCK DIAGRAM OF
RB2/AN8 PIN
V
TTL
Input
Buffer
RD Port
DD
P
weak
pull-up
I/O
pin
(1)
(2)
RBPU
Data bus
WR Port
WR TRIS
To A/D converter
Data Latch
CK
TRIS Latch
CK
RD TRIS
RD Port
QD
QD
Analog
input mode
QD
EN
Note 1: I/O pins have diode protection to V
2: To enable weak pull-ups, set the appropriate TRIS bit(s)
The RB3 pin is multiplexed with analog channel 9 and
the low voltage detect input (RB3/AN9/LVDIN)
FIGURE 3-7:BLOCK DIAGRAM OF
RB3/AN9/LVDIN PIN
V
TTL
Input
Buffer
RD Port
DD
P
weak
pull-up
I/O
pin
(1)
(2)
RBPU
Data bus
WR Port
WR TRIS
To A/D converter and LVD reference input
Note 1: I/O pins have diode protection to V
2: To enable weak pull-ups, set the appropriate TRIS bit(s)
Data Latch
QD
CK
TRIS Latch
QD
CK
RD TRIS
RD Port
and clear the RBPU
Analog
input mode
or LVD input
mode
QD
EN
DD and VSS.
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 oc cur (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 va lue latc hed on the la st 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, i n the interrupt service routine , can clea r 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 opera tions
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-8:BLOCK DIAGRAM OF
RB7:RB4 PINS
V
TTL
Input
Buffer
DD
P
weak
pull-up
I/O
pin
Buffer
(1)
ST
RBPU
Data bus
WR Port
WR TRIS
(2)
Data Latch
QD
CK
TRIS Latch
QD
CK
RD TRIS
Set RBIF
From other
RB7:RB4 pins
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
RD Port
bit (OPTION_REG<7>).
Latch
QD
EN
QD
EN
Q1
RD Port
Q3
DS30275A-page 30Advance Information 1999 Microchip Technology Inc.
Loading...
+ 170 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.