Академический Документы
Профессиональный Документы
Культура Документы
Peripheral Features:
Low-Power Features:
Standby Current:
- 50 nA @ 2.0V, typical
Operating Current:
- 11 A @ 32 kHz, 2.0V, typical
- 220 A @ 4 MHz, 2.0V, typical
Watchdog Timer Current:
- 1 A @ 2.0V, typical
DS41291G-page 1
PIC16F882/883/884/886/887
Pin Diagrams PIC16F884/887, 40-Pin PDIP
RE3/MCLR/VPP
RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+
RA3/AN3/VREF+/C1IN+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RE0/AN5
RE1/AN6
RE2/AN7
VDD
VSS
RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/P1A/CCP1
RC3/SCK/SCL
RD0
RD1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PIC16F884/887
40-Pin PDIP
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
RB7/ICSPDAT
RB6/ICSPCLK
RB5/AN13/T1G
RB4/AN11
RB3/AN9/PGM/C12IN2RB2/AN8
RB1/AN10/C12IN3RB0/AN12/INT
VDD
VSS
RD7/P1D
RD6/P1C
RD5/P1B
RD4
RC7/RX/DT
RC6/TX/CK
RC5/SDO
RC4/SDI/SDA
RD3
RD2
DS41291G-page 7
PIC16F882/883/884/886/887
PIC16F884/PIC16F887 BLOCK DIAGRAM
Configuration
13
Program Counter
Flash
4K(1)/8K X 14
Program
Memory
Program
Bus
Data Bus
RAM
256(1)/368 Bytes
File
Registers
8-Level Stack
(13-Bit)
14
RAM Addr
PORTA
RA0
RA1
RA2
RA3
RA4
RA5
RA6
RA7
PORTB
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
9
Addr MUX
Instruction Reg
7
Direct Addr
Indirect
Addr
FSR Reg
STATUS Reg
PORTC
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7
8
3
MUX
Power-up
Timer
Instruction
Decode and
Control
Oscillator
Start-up Timer
ALU
Power-on
Reset
OSC1/CLKIN
Timing
Generation
PORTD
Watchdog
Timer
W Reg
CCP2
Brown-out
Reset
OSC2/CLKOUT
RD0
RD1
RD2
RD3
RD4
RD5
RD6
RD7
Internal
Oscillator
Block
CCP2
MCLR
VDD
PORTE
VSS
RE0
RE1
RE2
RE3
Timer0
Timer1
VREF+
VREF-
Timer2
AN0
AN1
AN2
AN3
AN4
AN5
AN6
AN7
AN8
AN9
AN10
AN11
AN12
AN13
Analog-To-Digital Converter
(ADC)
Note
1:
EUSART
SCK/SCL
Master Synchronous
ECCP
2 Analog Comparators
and Reference
SDI/SDA
SDO
P1D
P1C
P1B
T1CKI
RX/DT
T1G
T0CKI
C1IN+
C12IN0C12IN1C12IN2C12IN3C1OUT
C2IN+
C2OUT
T1OSO
TX/CK
Timer1
32 kHz
Oscillator
T1OSI
CCP1/P1A
In-Circuit
Debugger
(ICD)
SS
FIGURE 1-2:
VREF+
VREFCVREF
EEDATA
256 Bytes
Data
EEPROM
EEADDR
PIC16F884 only.
DS41291G-page 17
PIC16F882/883/884/886/887
2.0
MEMORY ORGANIZATION
2.1
FIGURE 2-1:
FIGURE 2-2:
PC<12:0>
CALL, RETURN
RETFIE, RETLW
Stack Level 2
Stack Level 8
PC<12:0>
13
13
Stack Level 1
CALL, RETURN
RETFIE, RETLW
On-Chip
Program
Memory
Stack Level 1
Reset Vector
0000h
Interrupt Vector
0004h
0005h
Page 0
07FFh
0800h
Page 1
0FFFh
Stack Level 2
FIGURE 2-3:
Stack Level 8
Reset Vector
0000h
Interrupt Vector
On-Chip
Program
Memory
Page 0
0004h
0005h
CALL, RETURN
RETFIE, RETLW
13
Stack Level 1
07FFh
Stack Level 2
Stack Level 8
Reset Vector
0000h
Interrupt Vector
0004h
0005h
Page 0
On-Chip
Program
Memory
Page 1
Page 2
07FFh
0800h
0FFFh
1000h
17FFh
1800h
Page 3
1FFFh
DS41291G-page 23
PIC16F882/883/884/886/887
FIGURE 2-6:
File
File
File
Address
Address
Address
Address
00h
80h
100h
180h
TMR0
01h
OPTION_REG
81h
TMR0
101h
OPTION_REG
181h
PCL
02h
PCL
82h
PCL
102h
PCL
182h
STATUS
03h
STATUS
83h
STATUS
103h
STATUS
183h
FSR
04h
FSR
84h
FSR
104h
FSR
184h
PORTA
05h
TRISA
85h
WDTCON
105h
SRCON
185h
PORTB
06h
TRISB
86h
PORTB
106h
TRISB
186h
PORTC
07h
TRISC
87h
CM1CON0
107h
BAUDCTL
187h
PORTD(2)
08h
TRISD(2)
88h
CM2CON0
108h
ANSEL
188h
PORTE
09h
TRISE
89h
CM2CON1
109h
ANSELH
189h
PCLATH
0Ah
PCLATH
8Ah
PCLATH
10Ah
PCLATH
18Ah
INTCON
0Bh
INTCON
8Bh
INTCON
10Bh
INTCON
18Bh
PIR1
0Ch
PIE1
8Ch
EEDAT
10Ch
EECON1
18Ch
PIR2
0Dh
PIE2
8Dh
EEADR
10Dh
EECON2(1)
18Dh
TMR1L
0Eh
PCON
8Eh
EEDATH
10Eh
Reserved
18Eh
TMR1H
0Fh
OSCCON
8Fh
EEADRH
10Fh
Reserved
18Fh
T1CON
10h
OSCTUNE
90h
110h
190h
TMR2
11h
SSPCON2
91h
111h
191h
T2CON
12h
PR2
92h
112h
192h
SSPBUF
13h
SSPADD
93h
113h
193h
SSPCON
14h
SSPSTAT
94h
114h
194h
CCPR1L
15h
WPUB
95h
115h
195h
CCPR1H
16h
IOCB
96h
CCP1CON
17h
VRCON
97h
RCSTA
18h
TXSTA
98h
TXREG
19h
SPBRG
99h
General
Purpose
Registers
116h
16 Bytes
119h
117h
118h
General
Purpose
Registers
196h
16 Bytes
199h
197h
198h
RCREG
1Ah
SPBRGH
9Ah
11Ah
19Ah
CCPR2L
1Bh
PWM1CON
9Bh
11Bh
19Bh
CCPR2H
1Ch
ECCPAS
9Ch
11Ch
19Ch
CCP2CON
1Dh
PSTRCON
9Dh
11Dh
19Dh
ADRESH
1Eh
ADRESL
9Eh
11Eh
19Eh
ADCON0
1Fh
ADCON1
9Fh
11Fh
19Fh
20h
General
Purpose
Registers
3Fh
96 Bytes
6Fh
40h
A0h
7Fh
120h
General
Purpose
Registers
80 Bytes
70h
Bank 0
General
Purpose
Registers
80 Bytes
EFh
accesses
70h-7Fh
F0h
FFh
Bank 1
1A0h
General
Purpose
Registers
80 Bytes
16Fh
accesses
70h-7Fh
Bank 2
170h
17Fh
1EFh
accesses
70h-7Fh
1F0h
1FFh
Bank 3
DS41291G-page 27
PIC16F882/883/884/886/887
TABLE 2-1:
Addr
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on all
other Resets
Bank 0
00h
INDF
Addressing this location uses contents of FSR to address data memory (not a physical register)
xxxx xxxx
xxxx xxxx
01h
TMR0
xxxx xxxx
uuuu uuuu
02h
PCL
0000 0000
0000 0000
03h
STATUS
0001 1xxx
000q quuu(5)
IRP
RP1
RP0
TO
PD
DC
04h
FSR
xxxx xxxx
uuuu uuuu
05h
PORTA(3)
RA6
RA5
RA4
RA3
RA2
RA1
RA0
xxxx xxxx
0000 0000
06h
PORTB(3)
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
0000 0000
07h
PORTC(3)
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
xxxx xxxx
0000 0000
08h
PORTD(3,4)
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
xxxx xxxx
0000 0000
09h
PORTE(3)
RE3
RE2(4)
RE1(4)
RE0(4)
---- xxxx
---- 0000
0Ah
PCLATH
---0 0000
---0 0000
0Bh
INTCON
GIE
PEIE
T0IE
RBIE
T0IF
INTF
RBIF(1)
0000 000x
0000 000u
0Ch
PIR1
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
-000 0000
0000 0000
0Dh
PIR2
OSFIF
C2IF
C1IF
EEIF
BCLIF
ULPWUIF
CCP2IF
0000 00-0
0000 0000
0Eh
TMR1L
Holding Register for the Least Significant Byte of the 16-bit TMR1 Register
xxxx xxxx
uuuu uuuu
0Fh
TMR1H
Holding Register for the Most Significant Byte of the 16-bit TMR1 Register
xxxx xxxx
uuuu uuuu
0000 0000
uuuu uuuu
0000 0000
0000 0000
-000 0000
-000 0000
10h
T1CON
11h
TMR2
12h
T2CON
13h
SSPBUF
14h
SSPCON(2)
15h
CCPR1L
16h
CCPR1H
17h
CCP1CON
P1M1
P1M0
DC1B1
DC1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
19h
TXREG
1Ah
1Bh
T1GINV
TMR1GE
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
xxxx xxxx
uuuu uuuu
0000 0000
0000 0000
xxxx xxxx
uuuu uuuu
xxxx xxxx
uuuu uuuu
0000 0000
0000 0000
0000 000x
0000 0000
0000 0000
0000 0000
RCREG
0000 0000
0000 0000
CCPR2L
xxxx xxxx
uuuu uuuu
1Ch
CCPR2H
xxxx xxxx
uuuu uuuu
1Dh
CCP2CON
1Eh
ADRESH
1Fh
ADCON0
Legend:
Note 1:
2:
3:
4:
5:
WCOL
SSPOV
SSPEN
DC2B1
CKP
DC2B0
SSPM3
CCP2M3
SSPM2
CCP2M2
SSPM1
CCP2M1
SSPM0
CCP2M0
ADCS0
CHS3
CHS2
CHS1
CHS0
GO/
DONE
ADON
--00 0000
--00 000
xxxx xxxx
uuuu uuuu
0000 0000
00-0 0000
= Unimplemented locations read as 0, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented
MCLR and WDT Reset do not affect the previous value data latch. The RBIF bit will be cleared upon Reset but will set again if the
mismatch exists.
When SSPCON register bits SSPM<3:0> = 1001, any reads or writes to the SSPADD SFR address are accessed through the SSPMSK
register. See Registers 13-2 and 13-4 for more details.
Port pins with analog functions controlled by the ANSEL and ANSELH registers will read 0 immediately after a Reset even though the data
latches are either undefined (POR) or unchanged (other Resets).
PIC16F884/PIC16F887 only.
See Table 14-5 for Reset value for specific condition.
DS41291G-page 28
PIC16F882/883/884/886/887
TABLE 2-2:
Addr
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on all
other Resets
xxxx xxxx
xxxx xxxx
1111 1111
1111 1111
Bank 1
80h
INDF
Addressing this location uses contents of FSR to address data memory (not a physical register)
81h
OPTION_REG
82h
PCL
83h
STATUS
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
RP1
RP0
TO
PD
DC
0000 0000
0000 0000
0001 1xxx
000q quuu(5)
84h
FSR
xxxx xxxx
uuuu uuuu
85h
TRISA
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
1111 1111
1111 1111
86h
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
1111 1111
1111 1111
87h
TRISC
TRISC7
TRISC6
TRISC5
TRISC4
TRISC3
TRISC2
TRISC1
TRISC0
1111 1111
1111 1111
88h
TRISD(3)
TRISD7
TRISD6
TRISD5
TRISD4
TRISD3
TRISD2
TRISD1
TRISD0
1111 1111
1111 1111
89h
TRISE
TRISE3
TRISE2(3)
---- 1111
---- 1111
8Ah
PCLATH
8Bh
INTCON
GIE
PEIE
T0IE
TRISE1(3) TRISE0(3)
RBIE
---0 0000
---0 0000
T0IF
INTF
RBIF(1)
0000 000x
0000 000u
0000 0000
8Ch
PIE1
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
-000 0000
8Dh
PIE2
OSFIE
C2IE
C1IE
EEIE
BCLIE
ULPWUIE
CCP2IE
0000 00-0
0000 0000
8Eh
PCON
ULPWUE
SBOREN
POR
BOR
--01 --qq
--0u --uu(4,6)
8Fh
OSCCON
IRCF2
IRCF1
IRCF0
OSTS
HTS
LTS
SCS
-110 q000
-110 q000
90h
OSCTUNE
TUN4
TUN3
TUN2
TUN1
TUN0
---0 0000
---u uuuu
91h
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000
0000 0000
92h
PR2
1111 1111
1111 1111
93h
SSPADD(2)
0000 0000
0000 0000
93h
SSPMSK(2)
MSK7
MSK6
MSK5
MSK4
MSK3
MSK2
MSK1
MSK0
1111 1111
1111 1111
94h
SSPSTAT
SMP
CKE
D/A
R/W
UA
BF
0000 0000
0000 0000
95h
WPUB
WPUB7
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
1111 1111
1111 1111
96h
IOCB
IOCB7
IOCB6
IOCB5
IOCB4
IOCB3
IOCB2
IOCB1
IOCB0
0000 0000
0000 0000
97h
VRCON
VREN
VROE
VRR
VRSS
VR3
VR2
VR1
VR0
0000 0000
0000 0000
98h
TXSTA
CSRC
TX9
TXEN
SYNC
SENDB
BRGH
TRMT
TX9D
0000 0010
0000 -010
99h
SPBRG
BRG7
BRG6
BRG5
BRG4
BRG3
BRG2
BRG1
BRG0
0000 0000
0000 0000
9Ah
SPBRGH
BRG15
BRG14
BRG13
BRG12
BRG11
BRG10
BRG9
BRG8
0000 0000
0000 0000
9Bh
PWM1CON
PRSEN
PDC6
PDC5
PDC4
PDC3
PDC2
PDC1
PDC0
0000 0000
0000 0000
9Ch
ECCPAS
ECCPAS0
PSSAC1
PSSAC0
PSSBD1
PSSBD0
0000 0000
0000 0000
9Dh
PSTRCON
STRSYNC
STRD
STRC
STRB
STRA
---0 0001
---0 0001
9Eh
ADRESL
xxxx xxxx
uuuu uuuu
9Fh
ADCON1
VCFG0
0-00 ----
0-00 ----
Legend:
Note 1:
2:
3:
4:
5:
6:
VCFG1
= Unimplemented locations read as 0, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented
MCLR and WDT Reset do not affect the previous value data latch. The RBIF bit will be cleared upon Reset but will set again if the mismatch
exists.
Accessible only when SSPCON register bits SSPM<3:0> = 1001.
PIC16F884/PIC16F887 only.
If VDD goes too low, Power-on Reset will be activated and registers will be affected differently.
See Table 14-5 for Reset value for specific condition.
If Reset was due to brown-out, then bit 0 = 0. All other Resets will cause bit 0 = u.
DS41291G-page 29
PIC16F882/883/884/886/887
TABLE 2-3:
Addr
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on all
other Resets
Bank 2
100h
INDF
Addressing this location uses contents of FSR to address data memory (not a physical register)
xxxx xxxx
xxxx xxxx
101h
TMR0
xxxx xxxx
uuuu uuuu
102h
PCL
0000 0000
0000 0000
103h
STATUS
0001 1xxx
000q quuu(3)
104h
FSR
105h
WDTCON
106h
PORTB
107h
IRP
RP1
RP0
TO
PD
DC
xxxx xxxx
uuuu uuuu
WDTPS3
WDTPS2
WDTPS1
WDTPS0
SWDTEN
---0 1000
---0 1000
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
0000 0000
CM1CON0
C1ON
C1OUT
C1OE
C1POL
C1R
C1CH1
C1CH0
0000 -000
0000 0-00
108h
CM2CON0
C2ON
C2OUT
C2OE
C2POL
C2R
C2CH1
C2CH0
0000 -000
0000 0-00
109h
CM2CON1
MC1OUT
MC2OUT
C1RSEL
C2RSEL
T1GSS
C2SYNC
0000 --10
0000 0--0
---0 0000
---0 0000
10Ah
PCLATH
10Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF(1)
0000 000x
0000 000u
10Ch
EEDAT
EEDAT7
EEDAT6
EEDAT5
EEDAT4
EEDAT3
EEDAT2
EEDAT1
EEDAT0
0000 0000
0000 0000
10Dh
EEADR
EEADR7
EEADR6
EEADR5
EEADR4
EEADR3
EEADR2
EEADR1
EEADR0
0000 0000
0000 0000
10Eh
EEDATH
EEDATH5
EEDATH4
EEDATH3
EEDATH2
EEDATH1
--00 0000
10Fh
EEADRH
---0 0000
Legend:
Note 1:
= Unimplemented locations read as 0, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented
MCLR and WDT Reset does not affect the previous value data latch. The RBIF bit will be cleared upon Reset but will set again if the
mismatch exists.
PIC16F886/PIC16F887 only.
See Table 14-5 for Reset value for specific condition.
2:
3:
TABLE 2-4:
Addr
Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Value on
POR, BOR
Value on all
other Resets
Bank 3
180h
INDF
181h
OPTION_REG
Addressing this location uses contents of FSR to address data memory (not a physical register) xxxx xxxx
182h
PCL
183h
STATUS
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
184h
FSR
185h
SRCON
IRP
RP1
RP0
1111 1111
1111 1111
0000 0000
0000 0000
000q quuu(3)
TO
PD
DC
0001 1xxx
xxxx xxxx
xxxx xxxx
uuuu uuuu
SR1
SR0
C1SEN
C2REN
PULSS
PULSR
FVREN
0000 00-0
0000 00-0
1111 1111
186h
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
1111 1111
187h
BAUDCTL
ABDOVF
RCIDL
SCKP
BRG16
WUE
ABDEN
01-0 0-00
01-0 0-00
188h
ANSEL
ANS7(2)
ANS6(2)
ANS5(2)
ANS4
ANS3
ANS2
ANS1
ANS0
1111 1111
1111 1111
ANS12
ANS11
ANS10
ANS9
ANS8
--11 1111
1111 1111
---0 0000
---0 0000
189h
ANSELH
ANS13
18Ah
PCLATH
18Bh
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF(1)
0000 000x
0000 000u
EEPGD
WRERR
WREN
WR
RD
x--- x000
---- q000
---- ----
---- ----
18Ch
EECON1
18Dh
EECON2
Legend:
Note 1:
2:
3:
= Unimplemented locations read as 0, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented
MCLR and WDT Reset does not affect the previous value data latch. The RBIF bit will be cleared upon Reset but will set again if the
mismatch exists.
PIC16F884/PIC16F887 only.
See Table 14-5 for Reset value for specific condition.
DS41291G-page 30
PIC16F882/883/884/886/887
2.2.2.1
STATUS Register
IRP
R/W-0
RP1
RP0
R-1
R-1
PD
TO
R/W-x
R/W-x
R/W-x
DC(1)
C(1)
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
bit 7
bit 6-5
bit 4
bit 3
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
bit 0
Note 1:
x = Bit is unknown
For Borrow, the polarity is reversed. A subtraction is executed by adding the twos complement of the second
operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high-order or low-order bit of the
source register.
DS41291G-page 31
PIC16F882/883/884/886/887
3.0
I/O PORTS
3.1
Note:
EXAMPLE 3-1:
BANKSEL
CLRF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
PORTA
PORTA
ANSEL
ANSEL
TRISA
0Ch
TRISA
INITIALIZING PORTA
;
;Init PORTA
;
;digital I/O
;
;Set RA<3:2> as inputs
;and set RA<5:4,1:0>
;as outputs
REGISTER 3-1:
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
RA7
RA6
RA5
RA4
RA3
RA2
RA1
RA0
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
bit 7-0
x = Bit is unknown
REGISTER 3-2:
R/W-1(1)
R/W-1(1)
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
TRISA7
TRISA6
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
bit 7-0
Note 1:
x = Bit is unknown
DS41291G-page 41
PIC16F882/883/884/886/887
3.2
3.2.1
ANSEL REGISTER
REGISTER 3-3:
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
ANS7(2)
ANS6(2)
ANS5(2)
ANS4
ANS3
ANS2
ANS1
ANS0
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
bit 7-0
x = Bit is unknown
Note 1:
2:
Setting a pin to an analog input automatically disables the digital input circuitry, weak pull-ups, and
interrupt-on-change if available. The corresponding TRIS bit must be set to Input mode in order to allow
external control of the voltage on the pin.
Not implemented on PIC16F883/886.
DS41291G-page 42
PIC16F882/883/884/886/887
REGISTER 3-4:
U-0
U-0
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
ANS13
ANS12
ANS11
ANS10
ANS9
ANS8
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
x = Bit is unknown
bit 7-6
Unimplemented: Read as 0
bit 5-0
Note 1:
Setting a pin to an analog input automatically disables the digital input circuitry, weak pull-ups, and
interrupt-on-change if available. The corresponding TRIS bit must be set to Input mode in order to allow
external control of the voltage on the pin.
REGISTER 3-5:
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
R/W-x
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
bit 7-0
x = Bit is unknown
REGISTER 3-6:
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
R/W-1
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
bit 7
bit 0
Legend:
R = Readable bit
W = Writable bit
-n = Value at POR
1 = Bit is set
0 = Bit is cleared
bit 7-0
x = Bit is unknown
DS41291G-page 50
PIC16F882/883/884/886/887
15.0
TABLE 15-1:
OPCODE FIELD
DESCRIPTIONS
Field
Description
Register file address (0x00 to 0x7F)
Byte-oriented operations
Bit-oriented operations
Literal and control operations
PC
Program Counter
TO
Time-out bit
Carry bit
C
DC
Z
PD
Power-down bit
FIGURE 15-1:
Read-Modify-Write Operations
13
15.1
OPCODE
0
k (literal)
11
OPCODE
10
0
k (literal)
DS41291G-page 235
PIC16F882/883/884/886/887
TABLE 15-2:
Mnemonic,
Operands
Description
Cycles
14-Bit Opcode
MSb
LSb
Status
Affected
Notes
f, d
f, d
f
f, d
f, d
f, d
f, d
f, d
f, d
f, d
f
f, d
f, d
f, d
f, d
f, d
Add W and f
AND W with f
Clear f
Clear W
Complement f
Decrement f
Decrement f, Skip if 0
Increment f
Increment f, Skip if 0
Inclusive OR W with f
Move f
Move W to f
No Operation
Rotate Left f through Carry
Rotate Right f through Carry
Subtract W from f
Swap nibbles in f
Exclusive OR W with f
BCF
BSF
BTFSC
BTFSS
f, b
f, b
f, b
f, b
Bit Clear f
Bit Set f
Bit Test f, Skip if Clear
Bit Test f, Skip if Set
1
1
1
1
1
1
1(2)
1
1(2)
1
1
1
1
1
1
1
1
1
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
dfff
dfff
lfff
0xxx
dfff
dfff
dfff
dfff
dfff
dfff
dfff
lfff
0xx0
dfff
dfff
dfff
dfff
dfff
ffff
ffff
ffff
xxxx
ffff
ffff
ffff
ffff
ffff
ffff
ffff
ffff
0000
ffff
ffff
ffff
ffff
ffff
00bb
01bb
10bb
11bb
bfff
bfff
bfff
bfff
ffff
ffff
ffff
ffff
111x
1001
0kkk
0000
1kkk
1000
00xx
0000
01xx
0000
0000
110x
1010
kkkk
kkkk
kkkk
0110
kkkk
kkkk
kkkk
0000
kkkk
0000
0110
kkkk
kkkk
kkkk
kkkk
kkkk
0100
kkkk
kkkk
kkkk
1001
kkkk
1000
0011
kkkk
kkkk
0111
0101
0001
0001
1001
0011
1011
1010
1111
0100
1000
0000
0000
1101
1100
0010
1110
0110
C, DC, Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C, DC, Z
Z
1, 2
1, 2
2
1, 2
1, 2
1, 2, 3
1, 2
1, 2, 3
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
01
01
01
01
1, 2
1, 2
3
3
2:
3:
k
k
k
k
k
k
k
k
1
1
2
1
2
1
1
2
2
2
1
1
1
11
11
10
00
10
11
11
00
11
00
00
11
11
C, DC, Z
Z
TO, PD
Z
TO, PD
C, DC, Z
Z
When an I/O register is modified as a function of itself (e.g., MOVF GPIO, 1), the value used will be that value present
on the pins themselves. For example, if the data latch is 1 for a pin configured as input and is driven low by an external
device, the data will be written back with a 0.
If this instruction is executed on the TMR0 register (and where applicable, d = 1), the prescaler will be cleared if
assigned to the Timer0 module.
If the Program Counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second
cycle is executed as a NOP.
DS41291G-page 236