Beruflich Dokumente
Kultur Dokumente
Data Sheet
18/20/28-Pin Flash Microcontrollers
with nanoWatt XLP Technology
Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.
There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchips Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
Microchip is willing to work with the customer who is concerned about the integrity of their code.
Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as unbreakable.
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchips code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
ECCP (Half-Bridge)
Program Data
ECCP (Full-Bridge)
Timers (8/16-bit)
10-bit ADC (ch)
CapSense (ch)
Memory Memory
Comparators
SR Latch
EUSART
Data EEPROM
Device
I/Os(1)
MSSP
CCP
(bytes)
(bytes)
Words
PIC16LF1826 2K SRAM
256 256 16 12 12 2 2/1 1 1 1 Yes
PIC16F1826 2K 256 256 16 12 12 2 2/1 1 1 1 Yes
PIC16LF1827 4K 384 256 16 12 12 2 4/1 1 2 1 1 2 Yes
PIC16F1827 4K 384 256 16 12 12 2 4/1 1 2 1 1 2 Yes
Note 1: One pin is input only.
RA2/AN2/CPS2/C12IN2-/C12IN+/VREF-/DACOUT 1 18 RA1/AN1/CPS1/C12IN1-/SS2(2)
RA3/AN3/CPS3/C12IN3-/C1IN+/VREF+/C1OUT/CCP3(2)/SRQ 2 17 RA0/AN0/CPS0/C12IN0-/SDO2(2)
RA4/AN4/CPS4/C2OUT/T0CKI/CCP4(2)/SRNQ 3 16 RA7/OSC1/CLKIN/P1C(1)/CCP2(1,2)/P2A(1,2)
RA5/MCLR/VPP/SS1 (1,2)
4 15 RA6/OSC2/CLKOUT/CLKR/P1D(1)/P2B(1,2)/SDO1(1)
VSS 5 14 VDD
(1) (1)
RB0/SRI/T1G/CCP1 /P1A /INT/SRI/FLT0 6 13 RB7/AN6/CPS6/T1OSO/P1D(1)/P2B(1,2)/MDCIN1/ICSPDAT
SSOP
Preliminary
RA2/AN2/CPS2/C12IN2-/C12IN+/VREF-/DACOUT 1 20 RA1/AN1/CPS1/C12IN1-/SS2(2)
RA3/AN3/CPS3/C12IN3-/C1IN+/VREF+/C1OUT/CCP3(2)/SRQ 2 19 RA0/AN0/CPS0/C12IN0-/SDO2(2)
RA4/AN4/CPS4/C2OUT/T0CKI/CCP4(2)/SRNQ 3 18 RA7/OSC1/CLKIN/P1C(1)/CCP2(1,2)/P2A(1,2)
RA5/MCLR/VPP/SS1(1,2) 4 17 RA6/OSC2/CLKOUT/CLKR/P1D(1)/P2B(1,2)/SDO1(1)
VSS 5 16 VDD
VSS 6 15 VDD
(1) (1)
RB0/SRI/T1G/CCP1 /P1A /INT/FLT0 7 14 RB7/AN6/CPS6/T1OSO/P1D(1)/P2B(1,2)/MDCIN1/ICSPDAT
PIC16F/LF1826/27
RB1/AN11/CPS11/RX (1,3)/DT(1,3)/SDA1/SDI1
8 13 RB6/AN5/CPS5/T1CKI/T1OSI/P1C(1,3)/CCP2(1,2)/P2A(1,2)/ICSPCLK
RB2/AN10/CPS10/MDMIN/TX(1,3)/CK(1,3)/RX(1)/DT(1)/SDA2(2)/SDI2(2)/SDO1(1,3) 9 12 RB5/AN7/CPS7/P1B/TX(1)/CK(1)/SCL2(2)/SCK2(2)/SS1(1)
(1) (1)
RB3/AN9/CPS9/MDOUT/CCP1 /P1A 10 11 RB4/AN8/CPS8/SCL1/SCK1/MDCIN2
DS41391B-page 5
PIC16F/LF1826/27
PIC16F/LF1826/27
Pin Diagram 28-Pin QFN/UQFN (PIC16F/LF1826/27)
RA3/AN3/CPS3/C12IN3-/C1IN+/VREF+/C1OUT/CCP3(2)/SRQ
QFN/UQFN
RA2/AN2/CPS2/C12IN2-/C12IN+/VREF-/DACOUT
RA4/AN4/CPS4/C2OUT/T0CKI/CCP4(2)/SRNQ
RA0/AN0/CPS0/C12IN0-/SDO2(2)
RA1/AN1/CPS1/C12IN1-/SS2(2)
NC
NC
28
26
23
27
25
24
22
10
11
12
13
14
NC
NC
RB1/AN11/CPS11/RX(1)/DT(1)/SDA1/SDI1
RB4/AN8/CPS8/SCL1/SCK1/MDCIN2
RB2/AN10/CPS10/MDMIN/TX(1)/CK(1)/RX(1)/DT(1)/SDA2(2)/SDI2(2)/SDO1(1)
RB3/AN9/CPS9/MDOUT/CCP1(1)/P1A(1)
(1)
RB5/AN7/CPS7/P1B/TX /CK /SCL2 /SCK2 /SS1
(2)
(2)
(1)
(1)
I/O
A/D
CCP
Basic
MSSP
Timers
ANSEL
Pull-up
EUSART
Interrupt
SR Latch
Reference
Modulator
Cap Sense
Comparator
20-Pin SSOP
18-Pin PDIP/SOIC
28-Pin QFN/UQFN
RA0 17 19 23 Y AN0 CPS0 C12IN0- SDO2(2) N
RA1 18 20 24 Y AN1 CPS1 C12IN1- SS2(2) N
RA2 1 1 26 Y AN2 VREF- CPS2 C12IN2- N
DACOUT C12IN+
Preliminary
RB2 8 9 9 Y AN10 CPS10 RX(1),DT(1) SDA2(2) IOC MDMIN Y
TX(1,4) SDI2(2)
CK(1,4) SDO1(1,4)
RB3 9 10 10 Y AN9 CPS9 CCP1(1,4) IOC MDOUT Y
P1A(1,4)
RB4 10 11 12 Y AN8 CPS8 SCL1 IOC MDCIN2 Y
SCK1
RB5 11 12 13 Y AN7 CPS7 P1B TX(1) SCL2(2) IOC Y
CK(1) SCK2(2)
SS1(1,4)
RB6 12 13 15 Y AN5 CPS5 T1CKI P1C(1,4) IOC Y ICSPCLK/
T1OSI CCP2(1,2,4) ICDCLK
P2A(1,2,4)
RB7 13 14 16 Y AN6 CPS6 T1OSO P1D(1,4) IOC MDCIN1 Y ICSPDAT/
P2B(1,2,4) ICDDAT
VDD 14 15,16 17,19 VDD
Vss 5 5,6 3,5 VSS
Note 1: Pin functions can be moved using the APFCON register(s)
2: Functions are only available on the PIC16F/LF1827.
3: Weak pull-up always enabled when MCLR is enabled, otherwise the pull-up is under user control.
4: Default function location.
DS41391B-page 7
PIC16F/LF1826/27
PIC16F/LF1826/27
Table of Contents
1.0 Device Overview ........................................................................................................................................................................ 11
2.0 Enhanced Mid-range CPU ......................................................................................................................................................... 17
3.0 Memory Organization ................................................................................................................................................................. 19
4.0 Device Configuration .................................................................................................................................................................. 49
5.0 Oscillator Module (With Fail-Safe Clock Monitor)....................................................................................................................... 55
6.0 Reference Clock Module ............................................................................................................................................................ 71
7.0 Resets ........................................................................................................................................................................................ 75
8.0 Interrupts .................................................................................................................................................................................... 83
9.0 Power-Down Mode (Sleep) ........................................................................................................................................................ 99
10.0 Watchdog Timer (WDT) ........................................................................................................................................................... 101
11.0 Data EEPROM and Flash Program Memory Control ............................................................................................................... 105
12.0 I/O Ports ................................................................................................................................................................................... 117
13.0 Interrupt-on-Change ................................................................................................................................................................. 131
14.0 Fixed Voltage Reference (FVR) ............................................................................................................................................... 135
15.0 Analog-to-Digital Converter (ADC) Module .............................................................................................................................. 137
16.0 Digital-to-Analog Converter (DAC) Module .............................................................................................................................. 151
17.0 Comparator Module.................................................................................................................................................................. 157
18.0 SR Latch................................................................................................................................................................................... 167
19.0 Timer0 Module ......................................................................................................................................................................... 173
21.0 Timer1 Module ......................................................................................................................................................................... 177
22.0 Timer2/4/6 Modules.................................................................................................................................................................. 189
23.0 Data Signal Modulator (DSM) .................................................................................................................................................. 193
24.0 Capture/Compare/PWM (ECCP1, ECCP2, ECCP3, CCP4) Modules...................................................................................... 203
25.0 Master Synchronous Serial Port (MSSP) Module .................................................................................................................... 233
26.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART) ............................................................... 287
27.0 Capacitive Sensing Module ...................................................................................................................................................... 315
28.0 In-Circuit Serial Programming (ICSP) ................................................................................................................................ 321
29.0 Instruction Set Summary .......................................................................................................................................................... 323
30.0 Electrical Specifications............................................................................................................................................................ 337
31.0 DC and AC Characteristics Graphs and Tables ....................................................................................................................... 371
32.0 Development Support............................................................................................................................................................... 373
33.0 Packaging Information.............................................................................................................................................................. 377
Appendix A: Revision History............................................................................................................................................................. 387
Appendix B: Device Differences......................................................................................................................................................... 387
Index .................................................................................................................................................................................................. 389
The Microchip Web Site ..................................................................................................................................................................... 397
Customer Change Notification Service .............................................................................................................................................. 397
Customer Support .............................................................................................................................................................................. 397
Reader Response .............................................................................................................................................................................. 398
Product Identification System............................................................................................................................................................. 399
Errata
An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current
devices. 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:
Microchips Worldwide Web site; http://www.microchip.com
Your local Microchip sales office (see last page)
The Microchip Corporate Literature Center; U.S. FAX: (480) 792-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.
PIC16F/LF1826
PIC16F/LF1827
Peripheral
ADC
Capacitive Sensing Module
Digital-to-Analog Converter (DAC)
Digital Signal Modulator (DSM)
EUSART
Fixed Voltage Reference (FVR)
Reference Clock Module
SR Latch
Capture/Compare/PWM Modules
ECCP1
ECCP2
CCP3
CCP4
Comparators
C1
C2
Master Synchronous Serial Ports
MSSP1
MSSP2
Timers
Timer0
Timer1
Timer2
Timer4
Timer6
Program
Flash Memory
RAM EEPROM
CLKR
Clock
Reference
OSC2/CLKO Timing
OSC1/CLKI Generation
PORTA
CPU
INTRC
Oscillator
(Figure 2-1)
PORTB
MCLR
SR ADC Timer2-
Timer0 Timer1 Types DAC Comparators
Latch 10-Bit
15 Configuration
15 Data Bus 8
Program Counter
Flash
MUX
Program
Memory 16-Level
8 Level Stack
Stack
RAM
(15-bit)
(13-bit)
Program
14 Program Memory 9 RAM Addr
Bus
Read (PMR)
Addr MUX
Instruction
InstructionReg.
reg
Indirect
Direct Addr 7 Addr 12
15 12
FSR0 Reg.
FSR reg
FSR1
FSR Reg.
reg
15 STATUS
STATUSReg.
reg
8
3 MUX
Power-up
Timer
Instruction Oscillator
Decode
Decodeand & Start-up Timer
ALU
Control
OSC1/CLKIN Power-on
Reset 8
Timing Watchdog
OSC2/CLKOUT Generation Timer W
WReg.
reg
Brown-out
Reset
Internal
Oscillator
Block
VDD VSS
PC<14:0> PC<14:0>
CALL, CALLW 15 CALL, CALLW
RETURN, RETLW 15
RETURN, RETLW
Interrupt, RETFIE Interrupt, RETFIE
Stack Level 0 Stack Level 0
Stack Level 1 Stack Level 1
Wraps to Page 0
my_function
; LOTS OF CODE
movlw DATA_INDEX
call constants
; THE CONSTANT IS IN W
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared q = Value depends on condition
Note 1: For Borrow, the polarity is reversed. A subtraction is executed by adding the twos complement of the
second operand.
00h
Core Registers
(12 bytes)
0Bh
0Ch
Special Function Registers
(20 bytes maximum)
1Fh
20h
6Fh
70h
Common RAM
(16 bytes)
7Fh
Preliminary
01Bh PR2 09Bh ADRESL 11Bh SRCON1 19Bh SPBRGL 21Bh SSP2MASK(1) 29Bh PWM2CON(1) 31Bh 39Bh
01Ch T2CON 09Ch ADRESH 11Ch 19Ch SPBRGH 21Ch SSP2STAT(1) 29Ch CCP2AS(1) 31Ch 39Ch MDCON
01Dh 09Dh ADCON0 11Dh APFCON0 19Dh RCSTA 21Dh SSP2CON(1) 29Dh PSTR2CON(1) 31Dh 39Dh MDSRC
01Eh CPSCON0 09Eh ADCON1 11Eh APFCON1 19Eh TXSTA 21Eh SSP2CON2(1) 29Eh CCPTMRS(1) 31Eh 39Eh MDCARL
01Fh CPSCON1 09Fh 11Fh 19Fh BAUDCON 21Fh SSP2CON3(1) 29Fh 31Fh 39Fh MDCARH
020h 0A0h 120h 1A0h 220h General 2A0h 320h 3A0h
Purpose
General General General
Register
Purpose Purpose Purpose Unimplemented Unimplemented Unimplemented
48 Bytes(1)
General Register Register Register Read as 0 Read as 0 Read as 0
Purpose 80 Bytes 80 Bytes 80 Bytes(1) Unimplemented
Register Read as 0
06Fh 0EFh 16Fh 1EFh 26Fh 2EFh 36Fh 3EFh
070h 96 Bytes 0F0h 170h 1F0h 270h 2F0h 370h 3F0h
Accesses Accesses Accesses Accesses Accesses Accesses Accesses
70h 7Fh 70h 7Fh 70h 7Fh 70h 7Fh 70h 7Fh 70h 7Fh 70h 7Fh
07Fh 0FFh 17Fh 1FFh 27Fh 2FFh 37Fh 3FFh
DS41391B-page 25
PIC16F/LF1826/27
TABLE 3-4: PIC16F/LF1826/27 MEMORY MAP, BANKS 8-15
BANK 8 BANK 9 BANK 10 BANK 11 BANK 12 BANK 13 BANK 14 BANK 15
400h INDF0 480h INDF0 500h INDF0 580h INDF0 600h INDF0 680h INDF0 700h INDF0 780h INDF0
401h INDF1 481h INDF1 501h INDF1 581h INDF1 601h INDF1 681h INDF1 701h INDF1 781h INDF1
402h PCL 482h PCL 502h PCL 582h PCL 602h PCL 682h PCL 702h PCL 782h PCL
403h STATUS 483h STATUS 503h STATUS 583h STATUS 603h STATUS 683h STATUS 703h STATUS 783h STATUS
DS41391B-page 26
404h FSR0L 484h FSR0L 504h FSR0L 584h FSR0L 604h FSR0L 684h FSR0L 704h FSR0L 784h FSR0L
405h FSR0H 485h FSR0H 505h FSR0H 585h FSR0H 605h FSR0H 685h FSR0H 705h FSR0H 785h FSR0H
406h FSR1L 486h FSR1L 506h FSR1L 586h FSR1L 606h FSR1L 686h FSR1L 706h FSR1L 786h FSR1L
407h FSR1H 487h FSR1H 507h FSR1H 587h FSR1H 607h FSR1H 687h FSR1H 707h FSR1H 787h FSR1H
408h BSR 488h BSR 508h BSR 588h BSR 608h BSR 688h BSR 708h BSR 788h BSR
409h WREG 489h WREG 509h WREG 589h WREG 609h WREG 689h WREG 709h WREG 789h WREG
40Ah PCLATH 48Ah PCLATH 50Ah PCLATH 58Ah PCLATH 60Ah PCLATH 68Ah PCLATH 70Ah PCLATH 78Ah PCLATH
40Bh INTCON 48Bh INTCON 50Bh INTCON 58Bh INTCON 60Bh INTCON 68Bh INTCON 70Bh INTCON 78Bh INTCON
40Ch 48Ch 50Ch 58Ch 60Ch 68Ch 70Ch 78Ch
40Dh 48Dh 50Dh 58Dh 60Dh 68Dh 70Dh 78Dh
40Eh 48Eh 50Eh 58Eh 60Eh 68Eh 70Eh 78Eh
40Fh 48Fh 50Fh 58Fh 60Fh 68Fh 70Fh 78Fh
PIC16F/LF1826/27
Preliminary
418h 498h 518h 598h 618h 698h 718h 798h
419h 499h 519h 599h 619h 699h 719h 799h
41Ah 49Ah 51Ah 59Ah 61Ah 69Ah 71Ah 79Ah
41Bh 49Bh 51Bh 59Bh 61Bh 69Bh 71Bh 79Bh
41Ch TMR6(1) 49Ch 51Ch 59Ch 61Ch 69Ch 71Ch 79Ch
41Dh PR6(1) 49Dh 51Dh 59Dh 61Dh 69Dh 71Dh 79Dh
41Eh T6CON(1) 49Eh 51Eh 59Eh 61Eh 69Eh 71Eh 79Eh
41Fh 49Fh 51Fh 59Fh 61Fh 69Fh 71Fh 79Fh
420h 4A0h 520h 5A0h 620h 6A0h 720h 7A0h
Preliminary
818h 898h 918h 998h A18h A98h B18h B98h
819h 899h 919h 999h A19h A99h B19h B99h
81Ah 89Ah 91Ah 99Ah A1Ah A9Ah B1Ah B9Ah
81Bh 89Bh 91Bh 99Bh A1Bh A9Bh B1Bh B9Bh
81Ch 89Ch 91Ch 99Ch A1Ch A9Ch B1Ch B9Ch
81Dh 89Dh 91Dh 99Dh A1Dh A9Dh B1Dh B9Dh
81Eh 89Eh 91Eh 99Eh A1Eh A9Eh B1Eh B9Eh
81Fh 89Fh 91Fh 99Fh A1Fh A9Fh B1Fh B9Fh
820h 8A0h 920h 9A0h A20h AA0h B20h BA0h
DS41391B-page 27
PIC16F/LF1826/27
TABLE 3-6: PIC16F/LF1826/27 MEMORY MAP, BANKS 24-31
BANK 24 BANK 25 BANK 26 BANK 27 BANK 28 BANK 29 BANK 30 BANK 31
C00h INDF0 C80h INDF0 D00h INDF0 D80h INDF0 E00h INDF0 E80h INDF0 F00h INDF0 F80h INDF0
C01h INDF1 C81h INDF1 D01h INDF1 D81h INDF1 E01h INDF1 E81h INDF1 F01h INDF1 F81h INDF1
C02h PCL C82h PCL D02h PCL D82h PCL E02h PCL E82h PCL F02h PCL F82h PCL
C03h STATUS C83h STATUS D03h STATUS D83h STATUS E03h STATUS E83h STATUS F03h STATUS F83h STATUS
DS41391B-page 28
C04h FSR0L C84h FSR0L D04h FSR0L D84h FSR0L E04h FSR0L E84h FSR0L F04h FSR0L F84h FSR0L
C05h FSR0H C85h FSR0H D05h FSR0H D85h FSR0H E05h FSR0H E85h FSR0H F05h FSR0H F85h FSR0H
C06h FSR1L C86h FSR1L D06h FSR1L D86h FSR1L E06h FSR1L E86h FSR1L F06h FSR1L F86h FSR1L
C07h FSR1H C87h FSR1H D07h FSR1H D87h FSR1H E07h FSR1H E87h FSR1H F07h FSR1H F87h FSR1H
C08h BSR C88h BSR D08h BSR D88h BSR E08h BSR E88h BSR F08h BSR F88h BSR
C09h WREG C89h WREG D09h WREG D89h WREG E09h WREG E89h WREG F09h WREG F89h WREG
C0Ah PCLATH C8Ah PCLATH D0Ah PCLATH D8Ah PCLATH E0Ah PCLATH E8Ah PCLATH F0Ah PCLATH F8Ah PCLATH
C0Bh INTCON C8Bh INTCON D0Bh INTCON D8Bh INTCON E0Bh INTCON E8Bh INTCON F0Bh INTCON F8Bh INTCON
C0Ch C8Ch D0Ch D8Ch E0Ch E8Ch F0Ch F8Ch
C0Dh C8Dh D0Dh D8Dh E0Dh E8Dh F0Dh F8Dh
C0Eh C8Eh D0Eh D8Eh E0Eh E8Eh F0Eh F8Eh
C0Fh C8Fh D0Fh D8Fh E0Fh E8Fh F0Fh F8Fh
PIC16F/LF1826/27
Preliminary
C18h C98h D18h D98h E18h E98h F18h F98h
C19h C99h D19h D99h E19h E99h F19h F99h
C1Ah C9Ah D1Ah D9Ah E1Ah E9Ah F1Ah F9Ah
C1Bh C9Bh D1Bh D9Bh E1Bh E9Bh F1Bh F9Bh
C1Ch C9Ch D1Ch D9Ch E1Ch E9Ch F1Ch F9Ch
C1Dh C9Dh D1Dh D9Dh E1Dh E9Dh F1Dh F9Dh
C1Eh C9Eh D1Eh D9Eh E1Eh E9Eh F1Eh F9Eh
C1Fh C9Fh D1Fh D9Fh E1Fh E9Fh F1Fh F9Fh
C20h CA0h D20h DA0h E20h EA0h F20h FA0h
Unimplemented Unimplemented Unimplemented Unimplemented Unimplemented Unimplemented Unimplemented See Table 3-7 for
Read as 0 Read as 0 Read as 0 Read as 0 Read as 0 Read as 0 Read as 0 more information
Bank 1
080h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
081h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
082h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
083h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
084h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
085h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
086h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
087h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
088h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
089h(2) WREG Working Register 0000 0000 uuuu uuuu
08Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
08Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
08Ch TRISA TRISA7 TRISA6 TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 1111 1111 1111 1111
08Dh TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111
08Eh Unimplemented
08Fh Unimplemented
090h Unimplemented
091h PIE1 TMR1GIE ADIE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 0000 0000 0000 0000
092h PIE2 OSFIE C2IE C1IE EEIE BCL1IE CCP2IE(1) 0000 0--0 0000 0--0
(1)
093h PIE3 CCP4IE CCP3IE TMR6IE TMR4IE --00 0-0- --00 0-0-
094h PIE4(1) BCL2IE SSP2IE ---- --00 ---- --00
095h OPTION_REG WPUEN INTEDG TMR0CS TMR0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
096h PCON STKOVF STKUNF RMCLR RI POR BOR 00-- 11qq qq-- qquu
097h WDTCON WDTPS4 WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN --01 0110 --01 0110
098h OSCTUNE TUN5 TUN4 TUN3 TUN2 TUN1 TUN0 --00 0000 --00 0000
099h OSCCON SPLLEN IRCF3 IRCF2 IRCF1 IRCF0 SCS1 SCS0 0011 1-00 0011 1-00
09Ah OSCSTAT T1OSCR PLLR OSTS HFIOFR HFIOFL MFIOFR LFIOFR HFIOFS 10q0 0q00 qqqq qq0q
09Bh ADRESL A/D Result Register Low xxxx xxxx uuuu uuuu
09Ch ADRESH A/D Result Register High xxxx xxxx uuuu uuuu
09Dh ADCON0 CHS4 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON -000 0000 -000 0000
09Eh ADCON1 ADFM ADCS2 ADCS1 ADCS0 ADNREF ADPREF1 ADPREF0 0000 -000 0000 -000
09Fh Unimplemented
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 2
100h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
101h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
102h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
103h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
104h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
105h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
106h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
107h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
108h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
109h(2) WREG Working Register 0000 0000 uuuu uuuu
10Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
10Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
10Ch LATA LATA7 LATA6 LATA4 LATA3 LATA2 LATA1 LATA0 xx-x xxxx uu-u uuuu
10Dh LATB LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 xxxx xxxx uuuu uuuu
10Eh Unimplemented
10Fh Unimplemented
110h Unimplemented
111h CM1CON0 C1ON C1OUT C1OE C1POL C1SP C1HYS C1SYNC 0000 -100 0000 -100
112h CM1CON1 C1INTP C1INTN C1PCH1 C1PCH0 C1NCH1 C1NCH0 0000 --00 0000 --00
113h CM2CON0 C2ON C2OUT C2OE C2POL C2SP C2HYS C2SYNC 0000 -100 0000 -100
114h CM2CON1 C2INTP C2INTN C2PCH1 C2PCH0 C2NCH1 C2NCH0 0000 --00 0000 --00
115h CMOUT MC2OUT MC1OUT ---- --00 ---- --00
116h BORCON SBOREN BORRDY 1--- ---q u--- ---u
117h FVRCON FVREN FVRRDY Reserved Reserved CDAFVR1 CDAFVR0 ADFVR1 ADFVR0 0qrr 0000 0qrr 0000
118h DACCON0 DACEN DACLPS DACOE --- DACPSS1 DACPSS0 --- DACNSS 000- 00-0 000- 00-0
119h DACCON1 --- --- --- DACR4 DACR3 DACR2 DACR1 DACR0 ---0 0000 ---0 0000
11Ah SRCON0 SRLEN SRCLK2 SRCLK1 SRCLK0 SRQEN SRNQEN SRPS SRPR 0000 0000 0000 0000
11Bh SRCON1 SRSPE SRSCKE SRSC2E SRSC1E SRRPE SRRCKE SRRC2E SRRC1E 0000 0000 0000 0000
11Ch Unimplemented
11Dh APFCON0 RXDTSEL SDO1SEL SS1SEL P2BSEL(1) CCP2SEL(1) P1DSEL P1CSEL CCP1SEL 0000 0000 0000 0000
11Eh APFCON1 --- --- --- --- --- --- --- TXCKSEL ---- ---0 ---- ---0
11Fh Unimplemented
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 3
180h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
181h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
182h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
183h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
184h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
185h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
186h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
187h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
188h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
189h(2) WREG Working Register 0000 0000 uuuu uuuu
18Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
18Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
18Ch ANSELA ANSA4 ANSA3 ANSA2 ANSA1 ANSA0 ---1 1111 ---1 1111
18Dh ANSELB ANSB7 ANSB6 ANSB5 ANSB4 ANSB3 ANSB2 ANSB1 1111 111- 1111 111-
18Eh Unimplemented
18Fh Unimplemented
190h Unimplemented
191h EEADRL EEPROM / Program Memory Address Register Low Byte 0000 0000 0000 0000
192h EEADRH EEPROM / Program Memory Address Register High Byte -000 0000 -000 0000
193h EEDATL EEPROM / Program Memory Read Data Register Low Byte xxxx xxxx uuuu uuuu
194h EEDATH EEPROM / Program Memory Read Data Register High Byte --xx xxxx --uu uuuu
195h EECON1 EEPGD CFGS LWLO FREE WRERR WREN WR RD 0000 x000 0000 q000
196h EECON2 EEPROM control register 2 0000 0000 0000 0000
197h Unimplemented
198h Unimplemented
199h RCREG USART Receive Data Register 0000 0000 0000 0000
19Ah TXREG USART Transmit Data Register 0000 0000 0000 0000
19Bh SPBRGL Baud Rate Generator Data Register Low 0000 0000 0000 0000
19Ch SPBRGH Baud Rate Generator Data Register High 0000 0000 0000 0000
19Dh RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000x 0000 000x
19Eh TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 0000 0010 0000 0010
19Fh BAUDCON ABDOVF RCIDL SCKP BRG16 WUE ABDEN 01-0 0-00 01-0 0-00
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 4
200h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
201h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
202h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
203h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
204h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
205h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
206h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
207h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
208h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
209h(2) WREG Working Register 0000 0000 uuuu uuuu
20Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
20Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
20Ch WPUA WPUA5 --1- ---- --1- ----
20Dh WPUB WPUB7 WPUB6 WPUB5 WPUB4 WPUB3 WPUB2 WPUB1 WPUB0 1111 1111 1111 1111
20Eh Unimplemented
20Fh Unimplemented
210h Unimplemented
211h SSP1BUF Synchronous Serial Port Receive Buffer/Transmit Register xxxx xxxx uuuu uuuu
212h SSP1ADD ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 0000 0000 0000 0000
213h SSP1MSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 1111 1111 1111 1111
214h SSP1STAT SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000
215h SSP1CON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
216h SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 0000 0000
217h SSP1CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE AHEN DHEN 0000 0000 0000 0000
218h Unimplemented
219h SSP2BUF(1) Synchronous Serial Port Receive Buffer/Transmit Register xxxx xxxx uuuu uuuu
21Ah SSP2ADD(1) ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 0000 0000 0000 0000
21Bh SSP2MSK(1) MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 1111 1111 1111 1111
21Ch SSP2STAT(1) SMP CKE D/A P S R/W UA BF 0000 0000 0000 0000
21Dh SSP2CON1(1) WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 0000 0000 0000 0000
21Eh SSP2CON2(1) GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000 0000 0000 0000
21Fh SSP2CON3(1) ACKTIM PCIE SCIE BOEN SDAHT SBCDE AHEN DHEN 0000 0000 0000 0000
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 5
280h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
281h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
282h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
283h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
284h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
285h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
286h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
287h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
288h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
289h(2) WREG Working Register 0000 0000 uuuu uuuu
28Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
28Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
28Ch Unimplemented
28Dh Unimplemented
28Eh Unimplemented
28Fh Unimplemented
290h Unimplemented
291h CCPR1L Capture/Compare/PWM Register 1 (LSB) xxxx xxxx uuuu uuuu
292h CCPR1H Capture/Compare/PWM Register 1 (MSB) xxxx xxxx uuuu uuuu
293h CCP1CON P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 0000 0000
294h PWM1CON P1RSEN P1DC6 P1DC5 P1DC4 P1DC3 P1DC2 P1DC1 P1DC0 0000 0000 0000 0000
295h CCP1AS CCP1ASE CCP1AS2 CCP1AS1 CCP1AS0 PSS1AC1 PSS1AC0 PSS1BD1 PSS1BD0 0000 0000 0000 0000
296h PSTR1CON STR1SYNC STR1D STR1C STR1B STR1A ---0 0001 ---0 0001
297h Unimplemented
298h CCPR2L(1) Capture/Compare/PWM Register 2 (LSB) xxxx xxxx uuuu uuuu
299h CCPR2H(1) Capture/Compare/PWM Register 2 (MSB) xxxx xxxx uuuu uuuu
29Ah CCP2CON(1) P2M1 P2M0 DC2B1 DC2B0 CCP2M3 CCP2M2 CCP2M1 CCP2M0 0000 0000 0000 0000
29Bh PWM2CON(1) P2RSEN P2DC6 P2DC5 P2DC4 P2DC3 P2DC2 P2DC1 P2DC0 0000 0000 0000 0000
29Ch CCP2AS(1) CCP2ASE CCP2AS2 CCP2AS1 CCP2AS0 PSS2AC1 PSS2AC0 PSS2BD1 PSS2BD0 0000 0000 0000 0000
29Dh PSTR2CON(1) STR2SYNC STR2D STR2C STR2B STR2A ---0 0001 ---0 0001
29Eh CCPTMRS(1) C4TSEL1 C4TSEL0 C3TSEL1 C3TSEL0 C2TSEL1 C2TSEL0 C1TSEL1 C1TSEL0 0000 0000 0000 0000
29Fh Unimplemented
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 6
300h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
301h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
302h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
303h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
304h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
305h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
306h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
307h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
308h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
309h(2) WREG Working Register 0000 0000 uuuu uuuu
30Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
30Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
30Ch Unimplemented
30Dh Unimplemented
30Eh Unimplemented
30Fh Unimplemented
310h Unimplemented
311h CCPR3L(1) Capture/Compare/PWM Register 3 (LSB) xxxx xxxx uuuu uuuu
312h CCPR3H(1) Capture/Compare/PWM Register 3 (MSB) xxxx xxxx uuuu uuuu
313h CCP3CON(1) DC3B1 DC3B0 CCP3M3 CCP3M2 CCP3M1 CCP3M0 --00 0000 --00 0000
314h Unimplemented
315h Unimplemented
316h Unimplemented
317h Unimplemented
318h CCPR4L(1) Capture/Compare/PWM Register 4 (LSB) xxxx xxxx uuuu uuuu
319h CCPR4H(1) Capture/Compare/PWM Register 4 (MSB) xxxx xxxx uuuu uuuu
31Ah CCP4CON(1) DC4B1 DC4B0 CCP4M3 CCP4M2 CCP4M1 CCP4M0 --00 0000 --00 0000
31Bh Unimplemented
31Ch Unimplemented
31Dh Unimplemented
31Eh Unimplemented
31Fh Unimplemented
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 7
380h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
381h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
382h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
383h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
384h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
385h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
386h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
387h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
388h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
389h(2) WREG Working Register 0000 0000 uuuu uuuu
38Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
38Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
38Ch Unimplemented
38Dh Unimplemented
38Eh Unimplemented
38Fh Unimplemented
390h Unimplemented
391h Unimplemented
392h Unimplemented
393h Unimplemented
394h IOCBP IOCBP7 IOCBP6 IOCBP5 IOCBP4 IOCBP3 IOCBP2 IOCBP1 IOCBP0 0000 0000 0000 0000
395h IOCBN IOCBN7 IOCBN6 IOCBN5 IOCBN4 IOCBN3 IOCBN2 IOCBN1 IOCBN0 0000 0000 0000 0000
396h IOCBF IOCBF7 IOCBF6 IOCBF5 IOCBF4 IOCBF3 IOCBF2 IOCBF1 IOCBF0 0000 0000 0000 0000
397h Unimplemented
398h Unimplemented
399h Unimplemented
39Ah CLKRCON CLKREN CLKROE CLKRSLR CLKRDC1 CLKRDC0 CLKRDIV2 CLKRDIV1 CLKRDIV0 0011 0000 0011 0000
39Bh Unimplemented
39Ch MDCON MDEN MDOE MDSLR MDOPOL MDBIT 0010 ---0 0010 ---0
39Dh MDSRC MDMSODIS MDMS3 MDMS2 MDMS1 MDMS0 x--- xxxx u--- uuuu
39Eh MDCARL MDCLODIS MDCLPOL MDCLSYNC MDCL3 MDCL2 MDCL1 MDCL0 xxx- xxxx uuu- uuuu
39Fh MDCARH MDCHODIS MDCHPOL MDCHSYNC MDCH3 MDCH2 MDCH1 MDCH0 xxx- xxxx uuu- uuuu
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 8
400h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
401h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
402h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
403h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
404h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
405h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
406h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
407h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
408h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
409h(2) WREG Working Register 0000 0000 uuuu uuuu
40Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
40Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
40Ch Unimplemented
40Dh Unimplemented
40Eh Unimplemented
40Fh Unimplemented
410h Unimplemented
411h Unimplemented
412h Unimplemented
413h Unimplemented
414h Unimplemented
415h TMR4(1) Timer4 Module Register 0000 0000 0000 0000
416h PR4(1) Timer4 Period Register 1111 1111 1111 1111
417h T4CON(1) T4OUTPS3 T4OUTPS2 T4OUTPS1 T4OUTPS0 TMR4ON T4CKPS1 T4CKPS0 -000 0000 -000 0000
418h Unimplemented
419h Unimplemented
41Ah Unimplemented
41Bh Unimplemented
41Ch TMR6(1) Timer6 Module Register 0000 0000 0000 0000
41Dh PR6(1) Timer6 Period Register 1111 1111 1111 1111
41Eh T6CON(1) T6OUTPS3 T6OUTPS2 T6OUTPS1 T6OUTPS0 TMR6ON T6CKPS1 T6CKPS0 -000 0000 -000 0000
41Fh Unimplemented
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Banks 9-30
x00h/ INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
x80h(2) (not a physical register)
x00h/ INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
x81h(2) (not a physical register)
x02h/ PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
x82h(2)
x03h/ STATUS TO PD Z DC C ---1 1000 ---q quuu
x83h(2)
x04h/ FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
x84h(2)
x05h/ FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
x85h(2)
x06h/ FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
x86h(2)
x07h/ FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
x87h(2)
x08h/ BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
x88h(2)
x09h/ WREG Working Register 0000 0000 uuuu uuuu
x89h(2)
x0Ah/ PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
x8Ah(2)
x0Bh/ INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
x8Bh(2)
x0Ch/ Unimplemented
x8Ch
x1Fh/
x9Fh
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
Bank 31
F80h(2) INDF0 Addressing this location uses contents of FSR0H/FSR0L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
F81h(2) INDF1 Addressing this location uses contents of FSR1H/FSR1L to address data memory xxxx xxxx xxxx xxxx
(not a physical register)
F82h(2) PCL Program Counter (PC) Least Significant Byte 0000 0000 0000 0000
F83h(2) STATUS TO PD Z DC C ---1 1000 ---q quuu
F84h(2) FSR0L Indirect Data Memory Address 0 Low Pointer 0000 0000 uuuu uuuu
F85h(2) FSR0H Indirect Data Memory Address 0 High Pointer 0000 0000 0000 0000
F86h(2) FSR1L Indirect Data Memory Address 1 Low Pointer 0000 0000 uuuu uuuu
F87h(2) FSR1H Indirect Data Memory Address 1 High Pointer 0000 0000 0000 0000
F88h(2) BSR BSR4 BSR3 BSR2 BSR1 BSR0 ---0 0000 ---0 0000
F89h(2) WREG Working Register 0000 0000 uuuu uuuu
F8Ah(2) PCLATH Write Buffer for the upper 7 bits of the Program Counter -000 0000 -000 0000
F8Bh(2) INTCON GIE PEIE TMR0IE INTE IOCIE TMR0IF INTF IOCIF 0000 000x 0000 000u
F8Ch Unimplemented
FE3h
FE4h STATUS_ Z DC C ---- -xxx ---- -uuu
SHAD
FE5h WREG_ Working Register Shadow 0000 0000 uuuu uuuu
SHAD
FE6h BSR_ Bank Select Register Shadow ---x xxxx ---u uuuu
SHAD
FE7h PCLATH_ Program Counter Latch High Register Shadow -xxx xxxx uuuu uuuu
SHAD
FE8h FSR0L_ Indirect Data Memory Address 0 Low Pointer Shadow xxxx xxxx uuuu uuuu
SHAD
FE9h FSR0H_ Indirect Data Memory Address 0 High Pointer Shadow xxxx xxxx uuuu uuuu
SHAD
FEAh FSR1L_ Indirect Data Memory Address 1 Low Pointer Shadow xxxx xxxx uuuu uuuu
SHAD
FEBh FSR1H_ Indirect Data Memory Address 1 High Pointer Shadow xxxx xxxx uuuu uuuu
SHAD
FECh Unimplemented
FEDh STKPTR Current Stack pointer ---1 1111 ---1 1111
FEEh TOSL Top-of-Stack Low byte xxxx xxxx uuuu uuuu
FEFh TOSH Top-of-Stack High byte -xxx xxxx -uuu uuuu
Legend: x = unknown, u = unchanged, q = value depends on condition, - = unimplemented, r = reserved.
Shaded locations are unimplemented, read as 0.
Note 1: PIC16F/LF1827 only.
2: These registers can be addressed from any bank.
14 PCH PCL 0
PC BRA
15
PC + OPCODE <8:0>
0x0C
0x0B
0x0A
0x01
0x00
Stack Reset Enabled
TOSH:TOSL 0x1F 0x0000 STKPTR = 0x1F (STVREN = 1)
0x0F
0x0E
0x0D
0x0C
0x0B
0x0A
This figure shows the stack configuration
0x09 after the first CALL or a single interrupt.
If a RETURN instruction is executed, the
0x08 return address will be placed in the
0x07 Program Counter and the Stack Pointer
decremented to the empty state (0x1F).
0x06
0x05
0x04
0x03
0x02
0x01
0x0F
0x0E
0x0D
0x08
0x07
TOSH:TOSL 0x06 Return Address STKPTR = 0x06
0x0000 0x0000
Traditional
Data Memory
0x0FFF 0x0FFF
0x1000
Reserved
0x1FFF
0x2000
Linear
Data Memory
0x29AF
0x29B0
FSR Reserved
0x7FFF
Address
Range 0x8000 0x0000
Program
Flash Memory
0xFFFF 0x7FFF
Note: Not all memory regions are completely implemented. Consult device memory tables for memory limits.
0x7F
Bank 0 Bank 1 Bank 2 Bank 31
0xF20
Bank 30 0x7FFF
0xFFFF
0x29AF 0xF6F
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Enabling Brown-out Reset does not automatically enable Power-up Timer.
2: The entire data EEPROM will be erased when the code protection is turned off during an erase.
3: The entire program memory will be erased when the code protection is turned off.
Note 1: Enabling Brown-out Reset does not automatically enable Power-up Timer.
2: The entire data EEPROM will be erased when the code protection is turned off during an erase.
3: The entire program memory will be erased when the code protection is turned off.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: The LVP bit cannot be programmed to 0 when Programming mode is entered via LVP.
4.4 User ID
Four memory locations (8000h-8003h) are designated
as ID locations where the user can store checksum or
other code identification numbers. These locations are
readable and writable during normal execution. See
Section 11.4 Configuration Word and Device ID
Access for more information on accessing these
memory locations. For more information on checksum
calculation, see the PIC16F/LF1826/27 Memory
Programming Specification (DS41390).
External
Oscillator LP, XT, HS, RC, EC
OSC2
Sleep
4 x PLL Sleep
OSC1
Oscillator Timer1 FOSC<2:0> = 100 T1OSC CPU and
MUX
T1OSO Peripherals
T1OSCEN
Enable
T1OSI Oscillator IRCF<3:0>
Internal Oscillator
16 MHz
8 MHz
Internal
Oscillator 4 MHz
Block 2 MHz
Clock
Postscaler
1 MHz
HFPLL Control
MUX
OSC1/CLKIN OSC1/CLKIN
C1 To Internal C1 To Internal
Logic Logic
Quartz
RF(2) Sleep RP(3)
Crystal RF(2) Sleep
C2 OSC2/CLKOUT
RS(1) OSC2/CLKOUT
C2 Ceramic RS(1)
Resonator
Note 1: A series resistor (RS) may be required for
quartz crystals with low drive level. Note 1: A series resistor (RS) may be required for
ceramic resonators with low drive level.
2: The value of RF varies with the Oscillator mode
selected (typically between 2 M to 10 M). 2: The value of RF varies with the Oscillator mode
selected (typically between 2 M to 10 M).
3: An additional parallel feedback resistor (RP)
Note 1: Quartz crystal characteristics vary according may be required for proper ceramic resonator
to type, package and manufacturer. The operation.
user should consult the manufacturer data
sheets for specifications and recommended
application. 5.2.1.3 Oscillator Start-up Timer (OST)
2: Always verify oscillator performance over If the oscillator module is configured for LP, XT or HS
the VDD and temperature range that is modes, the Oscillator Start-up Timer (OST) counts
expected for the application. 1024 oscillations from OSC1. This occurs following a
3: For oscillator design assistance, reference Power-on Reset (POR) and when the Power-up Timer
the following Microchip Applications Notes: (PWRT) has expired (if configured), or a wake-up from
Sleep. During this time, the program counter does not
AN826, Crystal Oscillator Basics and increment and program execution is suspended. The
Crystal Selection for rfPIC and PIC OST ensures that the oscillator circuit, using a quartz
Devices (DS00826) crystal resonator or ceramic resonator, has started and
AN849, Basic PIC Oscillator Design is providing a stable system clock to the oscillator
(DS00849) module.
AN943, Practical PIC Oscillator In order to minimize latency between external oscillator
Analysis and Design (DS00943) start-up and code execution, the Two-Speed Clock
AN949, Making Your Oscillator Work Start-up mode can be selected (see Section 5.4
(DS00949) Two-Speed Clock Start-up Mode).
5.2.1.4 4X PLL
The oscillator module contains a 4X PLL that can be
used with both external and internal clock sources to
provide a system clock source. The input frequency for
the 4X PLL must fall within specifications. See the PLL
Clock Timing Specifications in Section 29.0
Electrical Specifications.
The 4X PLL may be enabled for use by one of two
methods:
1. Program the PLLEN bit in Configuration Word 2
to a 1.
2. Write the SPLLEN bit in the OSCCON register to
a 1. If the PLLEN bit in Configuration Word 2 is
programmed to a 1, then the value of SPLLEN
is ignored.
LFINTOSC
IRCF <3:0> 0 =0
System Clock
LFINTOSC
IRCF <3:0> 0 =0
System Clock
LFINTOSC HFINTOSC/MFINTOSC
LFINTOSC turns off unless WDT or FSCM is enabled
LFINTOSC
Start-up Time 2-cycle Sync Running
HFINTOSC/
MFINTOSC
IRCF <3:0> =0 0
System Clock
Default system oscillator determined by FOSC The Timer1 oscillator is enabled using the T1OSCEN
bits in Configuration Word 1 control bit in the T1CON register. See Section 20.0
Timer1 Module with Gate Control for more
Timer1 32 kHz crystal oscillator
information about the Timer1 peripheral.
Internal Oscillator Block (INTOSC)
5.3.4 TIMER1 OSCILLATOR READY
5.3.1 SYSTEM CLOCK SELECT (SCS)
(T1OSCR) BIT
BITS
The user must ensure that the Timer1 Oscillator is
The System Clock Select (SCS) bits of the OSCCON
ready to be used before it is selected as a system clock
register selects the system clock source that is used for
source. The Timer1 Oscillator Ready (T1OSCR) bit of
the CPU and peripherals.
the OSCSTAT register indicates whether the Timer1
When the SCS bits of the OSCCON register = 00, oscillator is ready to be used. After the T1OSCR bit is
the system clock source is determined by value of set, the SCS bits can be configured to select the Timer1
the FOSC<2:0> bits in the Configuration Word 1. oscillator.
When the SCS bits of the OSCCON register = 01,
the system clock source is the Timer1 oscillator.
When the SCS bits of the OSCCON register = 1x,
the system clock source is chosen by the internal
oscillator frequency selected by the IRCF<3:0>
bits of the OSCCON register. After a Reset, the
SCS bits of the OSCCON register are always
cleared.
Note: Any automatic clock switch, which may
occur from Two-Speed Start-up or Fail-Safe
Clock Monitor, does not update the SCS
bits of the OSCCON register. The user can
monitor the OSTS bit of the OSCSTAT
register to determine the current system
clock source.
When switching between clock sources, a delay is
required to allow the new clock to stabilize. These oscil-
lator delays are shown in Table 5-1.
INTOSC
TOST
OSC2
Program Counter PC - N PC PC + 1
System Clock
Sample Clock
System Oscillator
Clock Failure
Output
Note: The system clock is normally at a much higher frequency than the sample clock. The relative frequencies in
this example have been chosen for clarity.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared q = Conditional
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: If the base clock rate is selected without a 6.4 Operation During Sleep
divider, the output clock will always have
a duty cycle equal to that of the source As the reference clock module relies on the system
clock, unless a 0% duty cycle is selected. clock as its source, and the system clock is disabled in
If the clock divider is set to base clock/2, Sleep, the module does not function in Sleep, even if
then 25% and 75% duty cycle accuracy an external clock source or the Timer1 clock source is
will be dependent upon the source clock. configured as the system clock. The module outputs
will remain in their current state until the device exits
For information on using the reference clock output
Sleep.
with the modulator module, see Section 22.0 Data
Signal Modulator.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: In this mode, the 25% and 75% duty cycle accuracy will be dependent on the source clock duty cycle.
2: In this mode, the duty cycle will always be equal to the source clock duty cycle, unless a duty cycle of 0%
is selected.
3: To route CLKR to pin, CLKOUTEN of Configuration Word 1 = 1 is required. CLKOUTEN of Configuration
Word 1 = 0 will result in FOSC/4.
External Reset
MCLRE
MCLR
Sleep
WDT
Time-out
Device
Power-on Reset
Reset
VDD
Brown-out
Reset
BOR
Enable
PWRT
Zero
64 ms
LFINTOSC
PWRTEN
SBOREN
TBORRDY
BORRDY BOR Protection Active
VDD
VBOR
Internal
Reset TPWRT(1)
VDD
VBOR
VDD
VBOR
Internal
Reset TPWRT(1)
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared q = Value depends on condition
VDD
Internal POR
TPWRT
Power-up Timer
MCLR
TMCLR
Internal RESET
Oscillator Modes
External Crystal
TOST
Oscillator Start Up Timer
Oscillator
FOSC
Internal Oscillator
Oscillator
FOSC
CLKIN
FOSC
Legend:
HC = Bit is cleared by hardware HS = Bit is set by hardware
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -m/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared q = Value depends on condition
INTF
Interrupt to CPU
INTE
IOCIF
IOCIE
From Peripheral Interrupt
Logic (Figure 8-2)
PEIE
GIE
TMR1GIF
TMR1GIE
ADIF
ADIE
RCIF
RCIE
TXIF
TXIE
SSP1IF
SSP1IE
CCP1IF
CCP1IE
TMR2IF
TMR2IE
TMR1IF
TMR1IE
OSFIF
OSFIE
C2IF
C2IE To Interrupt Logic
C1IF
C1IE (Figure 5-1)
EEIF
EEIE
BCL1IF
BCL1IE
CCP2IF(1)
CCP2IE(1)
CCP4IF(1)
CCP4IE(1)
CCP3IF(1)
CCP3IE(1)
TMR6IF(1)
TMR6IE(1)
TMR4IF(1)
TMR4IE(1)
BCL2IF(1)
BCL2IE(1)
SSP2IF(1)
SSP2IE(1)
OSC1
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Interrupt
GIE
Interrupt
GIE
Interrupt
GIE
Interrupt
GIE
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
OSC1
CLKOUT (3)
(4)
INT pin
(1)
(1)
INTF (5) Interrupt Latency (2)
GIE
INSTRUCTION FLOW
PC PC PC + 1 PC + 1 0004h 0005h
Instruction
Fetched Inst (PC) Inst (PC + 1) Inst (0004h) Inst (0005h)
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HS = Bit is set by hardware
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HS = Bit is set by hardware
GIE bit
(INTCON reg.) Processor in
Sleep
Instruction Flow
PC PC PC + 1 PC + 2 PC + 2 PC + 2 0004h 0005h
Instruction Inst(PC + 1) Inst(PC + 2) Inst(0004h) Inst(0005h)
Fetched Inst(PC) = Sleep
Instruction Sleep Inst(PC + 1) Dummy Cycle Dummy Cycle
Executed Inst(PC - 1) Inst(0004h)
WDTE<1:0> = 01
SWDTEN
WDTE Device WDT When a WDT time-out occurs while the device is in
Config bits
SWDTEN
Mode Mode Sleep, no Reset is generated. Instead, the device
wakes up and resumes operation. The TO and PD bits
WDT_ON (11) X X Active in the STATUS register are changed to indicate the
event. See Section 3.0 Memory Organization and
WDT_NSLEEP (10) X Awake Active The STATUS register (Register 3-1) for more
WDT_NSLEEP (10) X Sleep Disabled information.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -m/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
bit 7-0 EEDATL<7:0>: 8 Least Significant data bits of data EEPROM or Read from program memory
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
bit 7-0 EEADRL<7:0>: 8 Least Significant Address bits for EEPROM or program memory
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
S = Bit can only be set x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HC = Bit is cleared by hardware
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
S = Bit can only be set x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
;
;First instruction after BSF EECON1,RD executes normally
NOP
NOP ;Any instructions here are ignored as program
;memory is read in second cycle after BSF EECON1,RD
BANKSEL EEDATL ;
MOVF EEDATL, W ;W = LS Byte of Program Memory
MOVWF LOWPMBYTE ;
MOVF EEDATH, W ;W = MS Byte of Program EEDATL
MOVWF HIGHPMBYTE ;
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
Flash Data INSTR (PC) INSTR (PC + 1) EEDATH,EEDATL INSTR (PC + 3) INSTR (PC + 4)
RD bit
EEDATH
EEDATL
Register
EERHLT
6 8
14 14 14 14
Program Memory
START_WRITE
BCF EECON1,LWLO ; No more Latches only - Actually start write
Read LATx
TRISx
D Q
Write LATx
Write PORTx
CK VDD
Data Register
Data Bus
I/O pin
Read PORTx
To peripherals
VSS
ANSELx
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Writes to PORTA are actually written to corresponding LATA register. Reads from PORTA register is return
of actual I/O pin values.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Writes to PORTA are actually written to corresponding LATA register. Reads from PORTA register is return
of actual I/O pin values.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Global WPUEN bit of the OPTION register must be cleared for individual pull-ups to be enabled.
2: The weak pull-up device is automatically disabled if the pin is in configured as an output.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: When setting a pin to an analog input, the corresponding TRIS bit must be set to Input mode in order to
allow external control of the voltage on the pin.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Writes to PORTB are actually written to corresponding LATB register. Reads from PORTB register is
return of actual I/O pin values.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
bit 7-1 ANSB<7:1>: Analog Select between Analog or Digital Function on Pins RB<7:1>, respectively
0 = Digital I/O. Pin is assigned to port or digital special function.
1 = Analog input. Pin is assigned as analog input(1). Digital input buffer disabled.
bit 0 Unimplemented: Read as 0
Note 1: When setting a pin to an analog input, the corresponding TRIS bit must be set to Input mode in order to
allow external control of the voltage on the pin.
RB0 RB6
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HS = Bit is set by hardware
IOCIE
IOCBNx D Q IOCBFx
IOCBPx D Q
CK
Q2 Clock Cycle
ADC input channel The ADFVR<1:0> bits of the FVRCON register are
used to enable and configure the gain amplifier settings
ADC positive reference
for the reference supplied to the ADC module. Refer-
Comparator positive input ence Section 15.0 Analog-to-Digital Converter
Digital-to-Analog Converter (DAC) (ADC) Module for additional information.
The FVR can be enabled by setting the FVREN bit of The CDAFVR<1:0> bits of the FVRCON register are
the FVRCON register. used to enable and configure the gain amplifier settings
for the reference supplied to the DAC and comparator
module. Reference Section 16.0 Digital-to-Analog
Converter (DAC) Module and Section 17.0 Com-
parator Module for additional information.
ADFVR<1:0>
2
X1
X2 FVR BUFFER1
X4 (To ADC Module)
CDAFVR<1:0> 2
X1
X2 FVR BUFFER2
X4 (To Comparators, DAC)
+
FVREN 1.024V Fixed
FVRRDY _ Reference
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared q = Value depends on condition
VREF- ADNREF = 1
ADNREF = 0
VSS
VDD
ADPREF = 0X
ADPREF = 11
VREF+ ADPREF = 10
AN0 00000
AN1 00001
AN2 00010
AN3 00011
AN4 00100
AN5 00101
AN6 00110
AN7 00111
AN8 01000 ADC
AN9 01001 10
GO/DONE
AN10 01010
AN11 01011 0 = Left Justify
ADFM
1 = Right Justify
DAC 11110 ADON 16
CHS<4:0>
ADC
ADCS<2:0> 32 MHz 20 MHz 16 MHz 8 MHz 4 MHz 1 MHz
Clock Source
Fosc/2 000 62.5ns(2) 100 ns(2) 125 ns(2) 250 ns(2) 500 ns(2) 2.0 s
(2) (2) (2) (2)
Fosc/4 100 125 ns 200 ns 250 ns 500 ns 1.0 s 4.0 s
Fosc/8 001 0.5 s(2) 400 ns(2) 0.5 s(2) 1.0 s 2.0 s 8.0 s(3)
Fosc/16 101 800 ns 800 ns 1.0 s 2.0 s 4.0 s 16.0 s(3)
Fosc/32 010 1.0 s 1.6 s 2.0 s 4.0 s 8.0 s(3) 32.0 s(3)
Fosc/64 110 2.0 s 3.2 s 4.0 s 8.0 s(3) 16.0 s(3) 64.0 s(3)
(1,4) (1,4) (1,4) (1,4) (1,4)
FRC x11 1.0-6.0 s 1.0-6.0 s 1.0-6.0 s 1.0-6.0 s 1.0-6.0 s 1.0-6.0 s(1,4)
Legend: Shaded cells are outside of recommended range.
Note 1: The FRC source has a typical TAD time of 1.6 s for VDD.
2: These values violate the minimum required TAD time.
3: For faster conversion times, the selection of another clock source is recommended.
4: When the device frequency is greater than 1 MHz, the FRC clock source is only recommended if the conversion will be
performed during Sleep.
TCY - TAD TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 TAD11
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
Conversion starts
Holding capacitor is disconnected from analog input (typically 100 ns)
Set GO bit
On the following cycle:
ADRESH:ADRESL is loaded, GO bit is cleared,
ADIF bit is set, holding capacitor is connected to analog input.
ADRESH ADRESL
(ADFM = 0) MSB LSB
bit 7 bit 0 bit 7 bit 0
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: See Section 16.0 Digital-to-Analog Converter (DAC) Module for more information.
2: See Section 14.0 Fixed Voltage Reference (FVR) for more information.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
T ACQ = Amplifier Settling Time + Hold Capacitor Charging Time + Temperature Coefficient
= T AMP + T C + T COFF
= 2s + T C + [ ( Temperature - 25C ) ( 0.05s/C ) ]
1
V AP P LI ED 1 -------------------------- = V CHOLD ;[1] VCHOLD charged to within 1/2 lsb
n+1
(2 )1
TC
----------
RC
V AP P LI ED 1 e = V CHOLD ;[2] VCHOLD charge response to VAPPLIED
Tc
---------
1
V AP P LI ED 1 e = V A PP LIE D 1 -------------------------- ;combining [1] and [2]
RC
n+1
(2 )1
T C = C HOLD ( R IC + R SS + R S ) ln(1/511)
= 10pF ( 1k + 7k + 10k ) ln(0.001957)
= 1.12 s
Therefore:
T A CQ = 2s + 1.12s + [ ( 50C- 25C ) ( 0.05S /C ) ]
= 4.42s
Note 1: The reference voltage (VREF) has no effect on the equation, since it cancels itself out.
2: The charge holding capacitor (CHOLD) is not discharged after each conversion.
3: The maximum recommended impedance for analog sources is 10 k. This is required to meet the pin
leakage specification.
VA CPIN I LEAKAGE(1)
VT 0.6V CHOLD = 10 pF
5 pF
VSS/VREF-
6V
5V RSS
Legend: CHOLD = Sample/Hold Capacitance VDD 4V
3V
CPIN = Input Capacitance 2V
I LEAKAGE = Leakage current at the pin due to
various junctions
5 6 7 8 9 10 11
RIC = Interconnect Resistance
Sampling Switch
RSS = Resistance of Sampling Switch (k)
SS = Sampling Switch
VT = Threshold Voltage
Full-Scale Range
FFh
FEh
FDh
FCh
ADC Output Code
1 LSB ideal
FBh
Full-Scale
04h Transition
03h
02h
01h
00h Analog Input Voltage
1 LSB ideal
EQUATION 16-1: DAC OUTPUT VOLTAGE Clearing the DACEN bit in the DACCON0 register.
Clearing the DACLPS bit in the DACCON0 register.
VOUT = ( VSRC+ VSRC- ) ------------------------------- + VSRC-
DACR<4:0>
Configuring the DACPSS bits to the proper
32
negative source.
VSRC+ = VDD, VREF+ or FVR1 Configuring the DACRx bits to 00000 in the
DACCON1 register.
VSRC- = VSS or VREF-
This allows the comparator to detect a zero-crossing
while not consuming additional current through the DAC
module.
16.2 Ratiometric Output Level
The DAC output value is derived using a resistor ladder 16.6 DAC Voltage Reference Output
with each end of the ladder tied to a positive and
negative voltage reference input source. If the voltage The DAC can be output to the DACOUT pin by setting
of either input source fluctuates, a similar fluctuation will the DACOE bit of the DACCON0 register to 1.
result in the DAC output value. Selecting the DAC reference voltage for output on the
DACOUT pin automatically overrides the digital output
The value of the individual resistors within the ladder buffer and digital input threshold detector functions of
can be found in Section 29.0 Electrical that pin. Reading the DACOUT pin when it has been
Specifications. configured for DAC reference voltage output will
always return a 0.
16.3 Low-Power Voltage State
Due to the limited current drive capability, a buffer must
In order for the DAC module to consume the least be used on the DAC voltage reference output for
amount of power, one of the two voltage reference input external connections to DACOUT. Figure 16-2 shows
sources to the resistor ladder must be disconnected. an example buffering technique.
Either the positive voltage source, (VSRC+), or the
negative voltage source, (VSRC-) can be disabled.
FVR BUFFER2
VSRC+
VDD DACR<4:0>
5
VREF+
R
R
DACPSS<1:0>
2
R
DACEN
DACLPS R
32-to-1 MUX
32
Steps DAC
(To Comparator and
ADC Modules)
R
R
DACOUT
R
DACOE
DACNSS
VREF- VSRC-
VSS
PIC MCU
DAC
R
Module
+
Voltage DACOUT Buffered DAC Output
Reference
Output
Impedance
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: The output select bits are always right justified to ensure that any number of bits can be used without
affecting the register layout.
det
C12IN0- 0 Set CxIF
C12IN1- 1
MUX Interrupt CxINTN
C12IN2- 2 (2) det
CXPOL
C12IN3- 3 CxVN
-
CXOUT
D Q To Data Bus
Cx(3) MCXOUT
+
CxVP
Q1 EN
C1IN+ 0
MUX CxHYS
DAC 1 (2) CxSP
To ECCP PWM Logic
FVR Buffer2 2
C12IN+ 3
CXSYNC
CxON CXOE
TRIS bit
CXOUT
CXPCH<1:0> 0
2
D Q 1
(from Timer1)
T1CLK To Timer1 and SR Latch
SYNCCXOUT
det
C12IN0- 0 Set CxIF
C12IN1- 1
MUX Interrupt CxINTN
C12IN2- 2 (2) det
CXPOL
C12IN3- 3 CxVN
-
CXOUT To Data Bus
D Q
Cx(3) MCXOUT
+
CxVP
Q1 EN
C1IN+ 0
MUX CxHYS
DAC 1 (2) CxSP
To ECCP PWM Logic
FVR Buffer2 2
3
CXSYNC
VSS CxON CXOE
TRIS bit
CXOUT
CXPCH<1:0> 0
2
D Q 1
(from Timer1)
T1CLK To Timer1 and SR Latch
SYNCCXOUT
CPIN ILEAKAGE(1)
VA VT 0.6V
5 pF
Vss
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
SRLEN
SRPS Pulse SRQEN
Gen(2)
SRI
SRSPE S Q
SRCLK SRQ
SRSCKE
SYNCC2OUT(3)
SRSC2E
SYNCC1OUT(3)
SR
SRSC1E
Latch(1)
SRPR Pulse
Gen(2)
SRI
SRRPE R Q
SRCLK SRNQ
SRRCKE SRLEN
SYNCC2OUT(3) SRNQEN
SRRC2E
SYNCC1OUT(3)
SRRC1E
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared S = Bit is set only
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
FOSC/4
Data Bus
0
8
T0CKI 1
0 Sync
1 2 TCY TMR0
0 Set Flag bit TMR0IF
From CPSCLK
1 TMR0CS on Overflow
TMR0SE 8-bit
Prescaler PSA Overflow to Timer1
T0XCS
PS<2:0>
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
000 1:2
001 1:4
010 1:8
011 1 : 16
100 1 : 32
101 1 : 64
110 1 : 128
111 1 : 256
T1GSS<1:0>
T1G 00 T1GSPM
T1CKI = 1
when TMR1
Enabled
T1CKI = 0
when TMR1
Enabled
TMR1GE
T1GPOL
T1G_IN
T1CKI
T1GVAL
TMR1GE
T1GPOL
T1GTM
T1G_IN
T1CKI
T1GVAL
TMR1GE
T1GPOL
T1GSPM
Cleared by hardware on
T1GGO/ Set by software falling edge of T1GVAL
DONE
Counting enabled on
rising edge of T1G
T1G_IN
T1CKI
T1GVAL
Cleared by
TMR1GIF Cleared by software Set by hardware on software
falling edge of T1GVAL
TMR1GE
T1GPOL
T1GSPM
T1GTM
Cleared by hardware on
T1GGO/ Set by software falling edge of T1GVAL
DONE Counting enabled on
rising edge of T1G
T1G_IN
T1CKI
T1GVAL
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
TMR1CS<1:0> = 0X
This bit is ignored. Timer1 uses the internal clock when TMR1CS<1:0> = 1X.
bit 1 Unimplemented: Read as 0
bit 0 TMR1ON: Timer1 On bit
1 = Enables Timer1
0 = Stops Timer1
Clears Timer1 Gate flip-flop
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HC = Bit is cleared by hardware
Sets Flag
TMRx
bit TMRxIF
Output
Prescaler Reset
FOSC/4 TMRx
1:1, 1:4, 1:16, 1:64
2 Postscaler
Comparator
EQ 1:1 to 1:16
TxCKPS<1:0>
PRx 4
TxOUTPS<3:0>
A 4-bit counter/prescaler on the clock input allows direct Timer2 can be optionally used as the shift clock source
input, divide-by-4 and divide-by-16 prescale options. for the MSSPx modules operating in SPI mode.
These options are selected by the prescaler control bits, Additional information is provided in Section 24.0
TxCKPS<1:0> of the TxCON register. The value of Master Synchronous Serial Port (MSSP1 and
TMRx is compared to that of the Period register, PRx, on MSSP2) Module
each clock cycle. When the two values match, the
comparator generates a match signal as the timer 21.4 Timer2/4/6 Operation During Sleep
output. This signal also resets the value of TMRx to 00h
The Timerx timers cannot be operated while the
on the next cycle and drives the output
processor is in Sleep mode. The contents of the TMRx
counter/postscaler (see Section 21.2 Timer2/4/6
and PRx registers will remain unchanged while the
Interrupt).
processor is in Sleep mode.
The TMRx and PRx registers are both directly readable
and writable. The TMRx register is cleared on any
device Reset, whereas the PRx register initializes to
FFh. Both the prescaler and postscaler counters are
cleared on the following events:
a write to the TMRx register
a write to the TxCON register
Power-on Reset (POR)
Brown-out Reset (BOR)
MCLR Reset
Watchdog Timer (WDT) Reset
Stack Overflow Reset
Stack Underflow Reset
RESET Instruction
Note: TMRx is not cleared when TxCON is written.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
MDBIT 0000
MDMIN 0001
CCP1 0010 0
CCP2 0011
CCP3 0100 MDCHSYNC
CCP4 0101
Comparator C1 0110 MOD
Comparator C2 0111
MSSP1 SDO1 1000 MDOUT
MSSP2 SDO2 1001
EUSART 1010 MDOE
MDOPOL
Reserved 0011
No Channel *
*
Selected 1111
D
MDCL<3:0> SYNC
Q 1
VSS 0000
MDCIN1 0001
MDCIN2 0010
CLKR 0011 0
CCP1 0100
CCP2 0101 CARL MDCLSYNC
CCP3 0110
CCP4 0111
1000
Reserved
* MDCLPOL
No Channel
Selected *
1111
Modulator (MOD)
MDCHSYNC = 1
MDCLSYNC = 0
MDCHSYNC = 1
MDCLSYNC = 1
MDCHSYNC = 0
MDCLSYNC = 0
MDCHSYNC = 0
MDCLSYNC = 1
Modulator (MOD)
MDCHSYNC = 0
MDCLSYNC = 0
Modulator (MOD)
MDCHSYNC = 1
MDCLSYNC = 0
Modulator (MOD)
MDCHSYNC = 0
MDCLSYNC = 1
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: MDBIT must be selected as the modulation source in the MDSRC register for this operation.
2: The modulated output frequency can be greater and asynchronous from the clock that updates this
register bit, the bit value may not be valid for higher speed modulator or carrier signals.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Narrowed carrier pulse widths or spurs may occur in the signal stream if the carrier is not synchronized.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Narrowed carrier pulse widths or spurs may occur in the signal stream if the carrier is not synchronized.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Narrowed carrier pulse widths or spurs may occur in the signal stream if the carrier is not synchronized.
TABLE 22-1: SUMMARY OF REGISTERS ASSOCIATED WITH DATA SIGNAL MODULATOR MODE
Register
Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
on Page
MDCARH MDCHODIS MDCHPOL MDCHSYNC MDCH3 MDCH2 MDCH1 MDCH0 200
MDCARL MDCLODIS MDCLPOL MDCLSYNC MDCL3 MDCL2 MDCL1 MDCL0 201
MDCON MDEN MDOE MDSLR MDOPOL MDOUT MDBIT 198
MDSRC MDMSODIS MDMS3 MDMS2 MDMS1 MDMS0 199
Legend: = unimplemented, read as 0. Shaded cells are not used in the Data Signal Modulator mode.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Reset
1 = Bit is set 0 = Bit is cleared
CCP3/CCP4:
11xx = PWM mode
ECCP1/ECCP2:
1100 = PWM mode: PxA, PxC active-high; PxB, PxD active-high
1101 = PWM mode: PxA, PxC active-high; PxB, PxD active-low
1110 = PWM mode: PxA, PxC active-low; PxB, PxD active-high
1111 = PWM mode: PxA, PxC active-low; PxB, PxD active-low
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
The user must configure the CCPx pin as an output by The Special Event Trigger output starts an A/D
clearing the associated TRIS bit. conversion (if the A/D module is enabled). This feature
is only available on CCP4 for PIC16F/LF1827 and
Also, the CCPx pin function can be moved to ECCP1 on PIC16F/LF1826. This allows the CCPRxH,
alternative pins using the APFCON register. Refer to CCPRxL register pair to effectively provide a 16-bit
Section 12.1 Alternate Pin Function for more programmable period register for Timer1.
details.
Note 1: The Special Event Trigger from the CCP
Note: Clearing the CCPxCON register will force module does not set interrupt flag bit
the CCPx compare output latch to the TMR1IF of the PIR1 register.
default low level. This is not the PORT I/O
data latch. 2: Removing the match condition by
changing the contents of the CCPRxH
and CCPRxL register pair, between the
clock edge that generates the Special
Event Trigger and the clock edge that
generates the Timer1 Reset, will preclude
the Reset from occurring.
PRx CCPRxL
TxCON
CCPRxL
CCPxCON CCPRxH(2) (Slave)
The ECCP modules have the following additional CCPx
registers: Comparator R Q
ECCPxAS
S
PSTRxCON TMRx (1)
PWMxCON TRIS
TMRX = 0
( CCPRxL:CCPxCON<5:4> )
Duty Cycle Ratio = -----------------------------------------------------------------------
4 ( PRx + 1 )
FIGURE 23-5: EXAMPLE SIMPLIFIED BLOCK DIAGRAM OF THE ENHANCED PWM MODE
DCxB<1:0> PxM<1:0> CCPxM<3:0>
Duty Cycle Registers
2 4
CCPRxL
CCPx/P1A CCPx/P1A
TRISx
CCPRxH (Slave)
P1B P1B
Output TRISx
Comparator R Q
Controller
P1C P1C
TMRx (1)
S TRISx
P1D P1D
Comparator
Clear Timerx, TRISx
toggle PWM pin and
latch duty cycle
PRx PWMxCON
Note 1: The 8-bit timer TMRx register is concatenated with the 2-bit internal Q clock, or 2 bits of the prescaler to create the 10-bit
time base.
Note 1: The TRIS register value for each PWM output must be configured appropriately.
2: Clearing the CCPxCON register will relinquish ECCP control of all PWM output pins.
3: Any pin not used by an Enhanced PWM mode is available for alternate pin functions.
TABLE 23-7: EXAMPLE PIN ASSIGNMENTS FOR VARIOUS PWM ENHANCED MODES
ECCP Mode PxM<1:0> CCPx/P1A P1B P1C P1D
(1) (1) (1)
Single 00 Yes Yes Yes Yes(1)
Half-Bridge 10 Yes Yes No No
Full-Bridge, Forward 01 Yes Yes Yes Yes
Full-Bridge, Reverse 11 Yes Yes Yes Yes
Note 1: PWM Steering enables outputs in Single mode.
P1A Active
P1D Modulated
P1A Inactive
P1D Inactive
Relationships:
Period = 4 * TOSC * (PRx + 1) * (TMRx Prescale Value)
Pulse Width = TOSC * (CCPRxL<7:0>:CCPxCON<5:4>) * (TMRx Prescale Value)
Delay = 4 * TOSC * (PWMxCON<6:0>)
Note 1: Dead-band delay is programmed using the PWMxCON register (Section 23.6.6 Programmable Dead-Band Delay
Mode).
Pulse PRx+1
PxM<1:0> Signal 0
Width
Period
P1A Modulated
Delay(1) Delay(1)
10 (Half-Bridge) P1B Modulated
P1A Active
P1D Modulated
P1A Inactive
P1D Inactive
Relationships:
Period = 4 * TOSC * (PRx + 1) * (TMRx Prescale Value)
Pulse Width = TOSC * (CCPRxL<7:0>:CCPxCON<5:4>) * (TMRx Prescale Value)
Delay = 4 * TOSC * (PWMxCON<6:0>)
Note 1: Dead-band delay is programmed using the PWMxCON register (Section 23.6.6 Programmable Dead-Band Delay
Mode).
FET
Driver +
P1A
-
Load
FET
Driver
+
P1B
-
V+
FET FET
Driver Driver
P1A
Load
FET FET
Driver Driver
P1B
FET QA QC FET
Driver Driver
P1A
Load
P1B
FET FET
Driver Driver
P1C
QB QD
V-
P1D
P1B(2)
P1C(2)
P1D(2)
(1) (1)
Reverse Mode
Period
Pulse Width
P1A(2)
P1B(2)
P1C(2)
P1D(2)
(1) (1)
Note 1: At this time, the TMRx register is equal to the PRx register.
2: Output signal is shown as active-high.
P1A (Active-High)
P1B (Active-High)
Pulse Width
P1C (Active-High)
(2)
P1D (Active-High)
Pulse Width
Note 1: The direction bit PxM1 of the CCPxCON register is written any time during the PWM cycle.
2: When changing directions, the P1A and P1C signals switch before the end of the current PWM cycle. The
modulated P1B and P1D signals are inactive at this time. The length of this time is four Timerx counts.
P1A
P1B
PW
P1C
P1D PW
TON
External Switch C
TOFF
External Switch D
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
PWM Period
PWM Activity
Start of
PWM Period
Shutdown Event
CCPxASE bit
PWM
Shutdown Shutdown Resumes
Event Occurs Event Clears CCPxASE
Cleared by
Firmware
23.6.5 AUTO-RESTART MODE If auto-restart is enabled, the CCPxASE bit will remain
set as long as the auto-shutdown condition is active.
The Enhanced PWM can be configured to automati-
When the auto-shutdown condition is removed, the
cally restart the PWM signal once the auto-shutdown
CCPxASE bit will be cleared via hardware and normal
condition has been removed. Auto-restart is enabled by
operation will resume.
setting the PxRSEN bit in the PWMxCON register.
PWM Period
PWM Activity
Start of
PWM Period
Shutdown Event
CCPxASE bit
PWM
Shutdown Resumes
Event Occurs
Shutdown CCPxASE
Event Clears Cleared by
Hardware
FET
Driver +
P1A V
-
Load
FET
Driver
+
P1B V
-
V-
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: Bit resets to 0 with Two-Speed Start-up and LP, XT or HS selected as the Oscillator mode or Fail-Safe
mode is enabled.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: The PWM Steering mode is available only when the CCPxCON register bits CCPxM<3:2> = 11 and
PxM<1:0> = 00.
PORT Data
0
TRIS
STRxB
PORT Data 0
TRIS
STRxC
P1C pin
CCPxM1 1
PORT Data 0
TRIS
STRxD
PORT Data 0
TRIS
PWM Period
PWM
STRx
P1n = PWM
PWM
STRx
P1n = PWM
Data Bus
Read Write
SSPxBUF Reg
SDIx
SSPxSR Reg
SDOx bit 0 Shift
Clock
Edge
Select
SSPxM<3:0>
4
( TMR22Output )
SCKx
Edge Prescaler TOSC
Select 4, 16, 64
Baud rate
generator
TRIS bit (SSPxADD)
Internal
data bus [SSPxM 3:0]
Read Write
SSPxSR
Clock Cntl
MSb LSb
Receive Enable (RCEN)
Internal
Data Bus
Read Write
Shift
Clock
SSPxSR Reg
SDAx MSb LSb
SSPxMSK Reg
SSPxADD Reg
The SPI bus specifies four signal connections: If there is more data to exchange, the shift registers are
loaded with new data and the process repeats itself.
Serial Clock (SCKx)
Whether the data is meaningful or not (dummy data),
Serial Data Out (SDOx)
depends on the application software. This leads to
Serial Data In (SDIx) three scenarios for data transmission:
Slave Select (SSx)
Master sends useful data and slave sends dummy
Figure 24-1 shows the block diagram of the MSSPx data.
module when operating in SPI Mode. Master sends useful data and slave sends useful
The SPI bus operates with a single master device and data.
one or more slave devices. When multiple slave Master sends dummy data and slave sends useful
devices are used, an independent Slave Select con- data.
nection is required from the master device to each
Transmissions may involve any number of clock
slave device.
cycles. When there is no more data to be transmitted,
Figure 24-4 shows a typical connection between a the master stops sending the clock signal and it
master device and multiple slave devices. deselects the slave.
The master selects only one slave at a time. Most slave Every slave device connected to the bus that has not
devices have tri-state outputs so their output signal been selected through its slave select line must disre-
appears disconnected from the bus when they are not gard the clock and transmission signals and must not
selected. transmit out any data of its own.
Transmissions involve two shift registers, eight bits in
size, one in the master and one in the slave. With either
the master or the slave device, data is always shifted
out one bit at a time, with the Most Significant bit (MSb)
shifted out first. At the same time, a new Least
Significant bit (LSb) is shifted into the same register.
Figure 24-5 shows a typical connection between two
processors configured as master and slave devices.
Data is shifted out of both shift registers on the pro-
grammed clock edge and latched on the opposite edge
of the clock.
The master device transmits information out on its
SDOx output pin which is connected to, and received
by, the slaves SDIx input pin. The slave device trans-
mits information out on its SDOx output pin, which is
connected to, and received by, the masters SDIx input
pin.
To begin communication, the master device first sends
out the clock signal. Both the master and the slave
devices should be configured for the same clock polar-
ity.
The master device starts a transmission by sending out
the MSb from its shift register. The slave device reads
this bit from that same line and saves it into the LSb
position of its shift register.
SCLK SCLK
SPI Master
SDOx SDIx SPI Slave
SDIx SDOx #1
General I/O SSx
General I/O
General I/O SCLK
SDIx SPI Slave
SDOx #2
SSx
SCLK
SDIx SPI Slave
SDOx #3
SSx
Slave Select
General I/O SSx
Processor 1 (optional) Processor 2
Write to
SSPxBUF
SCKx
(CKP = 0
CKE = 0)
SCKx
(CKP = 1
CKE = 0)
4 Clock
SCKx Modes
(CKP = 0
CKE = 1)
SCKx
(CKP = 1
CKE = 1)
Input
Sample
(SMP = 1)
SSPxIF
SSPxSR to
SSPxBUF
SCLK SCLK
SPI Master
SDOx SDIx SPI Slave
SDIx SDOx #1
General I/O SSx
SCLK
SDIx SPI Slave
SDOx #2
SSx
SCLK
SDIx SPI Slave
SDOx #3
SSx
SSx
SCKx
(CKP = 0
CKE = 0)
SCKx
(CKP = 1
CKE = 0)
Write to
SSPxBUF
Shift register SSPxSR
and bit count are reset
SSPxBUF to
SSPxSR
SDIx bit 0
bit 7 bit 7
Input
Sample
SSPxIF
Interrupt
Flag
SSPxSR to
SSPxBUF
SSx
Optional
SCKx
(CKP = 0
CKE = 0)
SCKx
(CKP = 1
CKE = 0)
Write to
SSPxBUF
Valid
SDOx bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
SDIx
bit 7 bit 0
Input
Sample
SSPxIF
Interrupt
Flag
SSPxSR to
SSPxBUF
Write Collision
detection active
SSx
Not Optional
SCKx
(CKP = 0
CKE = 1)
SCKx
(CKP = 1
CKE = 1)
Write to
SSPxBUF
Valid
SDOx bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
SDIx
bit 7 bit 0
Input
Sample
SSPxIF
Interrupt
Flag
SSPxSR to
SSPxBUF
Write Collision
detection active
The I2C specification defines a Start condition as a A Restart is valid any time that a Stop would be valid.
transition of SDAx from a high to a low state while A master can issue a Restart if it wishes to hold the
SCLx line is high. A Start condition is always gener- bus after terminating the current transfer. A Restart
ated by the master and signifies the transition of the has the same effect on the slave that a Start would,
bus from an Idle to an active state. Figure 24-10 resetting all slave logic and preparing it to clock in an
shows wave forms for Start and Stop conditions. address. The master may want to address the same or
A bus collision can occur on a Start condition if the another slave.
module samples the SDAx line low before asserting it In 10-bit Addressing Slave mode a Restart is required
low. This does not conform to the I2C specification that for the master to clock data out of the addressed
states no bus collision can occur on a Start. slave. Once a slave has been fully addressed, match-
ing both high and low address bytes, the master can
24.4.6 STOP CONDITION issue a Restart and the high address byte with the
A Stop condition is a transition of the SDAx line from R/W bit set. The slave logic will then hold the clock
low to high state while the SCLx line is high. and prepare to clock out data.
After a full match with R/W clear in 10-bit mode, a prior
Note: At least one SCLx low time must appear
match flag is set and maintained. Until a Stop condi-
before a Stop is valid, therefore, if the SDAx
tion, a high address with R/W clear, or high address
line goes low then high again while the SCLx
match fails.
line stays high, only the Start condition is
detected. 24.4.8 START/STOP CONDITION INTERRUPT
MASKING
SDAx
SCLx
S P
Change of Change of
Data Allowed Data Allowed
Start Stop
Condition Condition
Sr
Change of Change of
When the SEN bit of the SSPxCON2 register is set, 1. S bit of SSPxSTAT is set; SSPxIF is set if inter-
SCLx will be held low (clock stretch) following each rupt on Start detect is enabled.
received byte. The clock must be released by setting 2. Matching address with R/W bit clear is clocked
the CKP bit of the SSPxCON1 register, except in. SSPxIF is set and CKP cleared after the 8th
sometimes in 10-bit mode. See Section 24.2.3 SPI falling edge of SCLx.
Master Mode for more detail. 3. Slave clears the SSPxIF.
4. Slave can look at the ACKTIM bit of the
24.5.2.1 7-bit Addressing Reception
SSPxCON3 register to determine if the SSPxIF
This section describes a standard sequence of events was after or before the ACK.
for the MSSPx module configured as an I2C slave in 5. Slave reads the address value from SSPxBUF,
7-bit Addressing mode. All decisions made by hard- clearing the BF flag.
ware or software and their effect on reception. 6. Slave sets ACK value clocked out to the master
Figure 24-13 and Figure 24-14 is used as a visual by setting ACKDT.
reference for this description.
7. Slave releases the clock by setting CKP.
This is a step by step process of what typically must 8. SSPxIF is set after an ACK, not after a NACK.
be done to accomplish I2C communication.
9. If SEN = 1 the slave hardware will stretch the
1. Start bit detected. clock after the ACK.
2. S bit of SSPxSTAT is set; SSPxIF is set if inter- 10. Slave clears SSPxIF.
rupt on Start detect is enabled.
Note: SSPxIF is still set after the 9th falling edge of
3. Matching address with R/W bit clear is received. SCLx even if there is no clock stretching and
4. The slave pulls SDAx low sending an ACK to the BF has been cleared. Only if NACK is sent to
master, and sets SSPxIF bit. master is SSPxIF not set.
5. Software clears the SSPxIF bit. 11. SSPxIF set and CKP cleared after 8th falling
6. Software reads received address from SSPx- edge of SCLx for a received data byte.
BUF clearing the BF flag. 12. Slave looks at ACKTIM bit of SSPxCON3 to
7. If SEN = 1; Slave software sets CKP bit to determine the source of the interrupt.
release the SCLx line. 13. Slave reads the received data from SSPxBUF
8. The master clocks out a data byte. clearing BF.
9. Slave drives SDAx low sending an ACK to the 14. Steps 7-14 are the same for each received data
master, and sets SSPxIF bit. byte.
10. Software clears SSPxIF. 15. Communication is ended by either the slave
11. Software reads the received byte from SSPx- sending an ACK = 1, or the master sending a
BUF clearing BF. Stop condition. If a Stop is sent and Interrupt on
12. Steps 8-12 are repeated for all received bytes Stop Detect is disabled, the slave will only know
from the master. by polling the P bit of the SSTSTAT register.
13. Master sends Stop condition, setting P bit of
SSPxSTAT, and the bus goes idle.
DS41391B-page 250
Bus Master sends
Stop condition
From Slave to Master
SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S P
SSPxIF
SSPxIF set on 9th
Preliminary
Cleared by software Cleared by software falling edge of
SCLx
BF
First byte
SSPxBUF is read of data is
available
in SSPxBUF
SSPxOV
SSPxIF
Preliminary
BF
First byte
of data is
SSPxBUF is read available
in SSPxBUF
SSPxOV
DS41391B-page 251
Master Releases SDAx Master sends
to slave for ACK sequence Stop condition
FIGURE 24-16:
DS41391B-page 252
A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
SCLx
S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 P
SSPxIF
If AHEN = 1: SSPxIF is set on
SSPxIF is set 9th falling edge of Cleared by software No interrupt
SCLx, after ACK after not ACK
BF from Slave
PIC16F/LF1826/27
Address is
read from Data is read from SSPxBUF
ACKDT SSBUF
Slave software
clears ACKDT to Slave software
ACK the received sets ACKDT to
CKP byte not ACK
Preliminary
When AHEN=1:
When DHEN=1: CKP set by software,
CKP is cleared by hardware
CKP is cleared by SCLx is released
and SCLx is stretched hardware on 8th falling
edge of SCLx
ACKTIM
P
I2C SLAVE, 7-BIT ADDRESS, RECEPTION (SEN = 0, AHEN = 1, DHEN = 1)
Stop condition
Master releases
R/W = 0 SDAx to slave for ACK sequence
Receiving Address Receive Data Receive Data ACK
SDAx ACK
A7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0
SSPxIF
Cleared by software No interrupt after
if not ACK
from Slave
BF
Received
address is loaded into Received data is SSPxBUF can be
SSPxBUF available on SSPxBUF read any time before
next byte is loaded
ACKDT
Preliminary
ACKDT to ACK not ACK
the received byte
CKP
When AHEN = 1; When DHEN = 1; CKP is not cleared
on the 8th falling edge on the 8th falling edge Set by software, if not ACK
of SCLx of an address of SCLx of a received release SCLx
byte, CKP is cleared data byte, CKP is cleared
ACKTIM
P
I2C SLAVE, 7-BIT ADDRESS, RECEPTION (SEN = 1, AHEN = 1, DHEN = 1)
PIC16F/LF1826/27
DS41391B-page 253
PIC16F/LF1826/27
24.5.3 SLAVE TRANSMISSION 24.5.3.2 7-bit Transmission
When the R/W bit of the incoming address byte is set A master device can transmit a read request to a
and an address match occurs, the R/W bit of the slave, and then clock data out of the slave. The list
SSPxSTAT register is set. The received address is below outlines what software for a slave will need to
loaded into the SSPxBUF register, and an ACK pulse is do to accomplish a standard transmission.
sent by the slave on the ninth bit. Figure 24-17 can be used as a reference to this list.
Following the ACK, slave hardware clears the CKP bit 1. Master sends a Start condition on SDAx and
and the SCLx pin is held low (see Section 24.5.6 SCLx.
Clock Stretching for more detail). By stretching the 2. S bit of SSPxSTAT is set; SSPxIF is set if inter-
clock, the master will be unable to assert another clock rupt on Start detect is enabled.
pulse until the slave is done preparing the transmit 3. Matching address with R/W bit set is received by
data. the slave setting SSPxIF bit.
The transmit data must be loaded into the SSPxBUF 4. Slave hardware generates an ACK and sets
register which also loads the SSPxSR register. Then SSPxIF.
the SCLx pin should be released by setting the CKP bit 5. SSPxIF bit is cleared by user.
of the SSPxCON1 register. The eight data bits are
6. Software reads the received address from
shifted out on the falling edge of the SCLx input. This
SSPxBUF, clearing BF.
ensures that the SDAx signal is valid during the SCLx
high time. 7. R/W is set so CKP was automatically cleared
after the ACK.
The ACK pulse from the master-receiver is latched on
8. The slave software loads the transmit data into
the rising edge of the ninth SCLx input pulse. This ACK
SSPxBUF.
value is copied to the ACKSTAT bit of the SSPxCON2
register. If ACKSTAT is set (not ACK), then the data 9. CKP bit is set releasing SCLx, allowing the mas-
transfer is complete. In this case, when the not ACK is ter to clock the data out of the slave.
latched by the slave, the slave goes idle and waits for 10. SSPxIF is set after the ACK response from the
another occurrence of the Start bit. If the SDAx line was master is loaded into the ACKSTAT register.
low (ACK), the next transmit data must be loaded into 11. SSPxIF bit is cleared.
the SSPxBUF register. Again, the SCLx pin must be 12. The slave software checks the ACKSTAT bit to
released by setting bit CKP. see if the master wants to clock out more data.
An MSSPx interrupt is generated for each data transfer Note 1: If the master ACKs the clock will be
byte. The SSPxIF bit must be cleared by software and stretched.
the SSPxSTAT register is used to determine the status
of the byte. The SSPxIF bit is set on the falling edge of 2: ACKSTAT is the only bit updated on the
the ninth clock pulse. rising edge of SCLx (9th) rather than the
falling.
24.5.3.1 Slave Mode Bus Collision 13. Steps 9-13 are repeated for each transmitted
A slave receives a Read request and begins shifting byte.
data out on the SDAx line. If a bus collision is detected 14. If the master sends a not ACK; the clock is not
and the SBCDE bit of the SSPxCON3 register is set, held, but SSPxIF is still set.
the BCLxIF bit of the PIRx register is set. Once a bus 15. The master sends a Restart condition or a Stop.
collision is detected, the slave goes idle and waits to be 16. The slave is no longer addressed.
addressed again. User software can use the BCLxIF bit
to handle a slave bus collision.
SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S P
Cleared by software
BF
BF is automatically
Received address Data to transmit is cleared after 8th falling
is read from SSPxBUF loaded into SSPxBUF edge of SCLx
CKP
When R/W is set CKP is not
SCLx is always held for not
held low after 9th SCLx Set by software ACK
falling edge
ACKSTAT
Preliminary
Masters not ACK
is copied to
ACKSTAT
R/W
R/W is copied from the
matching address byte
D/A
I2C SLAVE, 7-BIT ADDRESS, TRANSMISSION (AHEN = 0)
Indicates an address
has been received
P
PIC16F/LF1826/27
DS41391B-page 255
PIC16F/LF1826/27
24.5.3.3 7-bit Transmission with Address
Hold Enabled
Setting the AHEN bit of the SSPxCON3 register
enables additional clock stretching and interrupt gen-
eration after the 8th falling edge of a received match-
ing address. Once a matching address has been
clocked in, CKP is cleared and the SSPxIF interrupt is
set.
Figure 24-18 displays a standard waveform of a 7-bit
Address Slave Transmission with AHEN enabled.
1. Bus starts Idle.
2. Master sends Start condition; the S bit of SSPx-
STAT is set; SSPxIF is set if interrupt on Start
detect is enabled.
3. Master sends matching address with R/W bit
set. After the 8th falling edge of the SCLx line the
CKP bit is cleared and SSPxIF interrupt is gen-
erated.
4. Slave software clears SSPxIF.
5. Slave software reads ACKTIM bit of SSPxCON3
register, and R/W and D/A of the SSPxSTAT
register to determine the source of the interrupt.
6. Slave reads the address value from the SSPx-
BUF register clearing the BF bit.
7. Slave software decides from this information if it
wishes to ACK or not ACK and sets ACKDT bit
of the SSPxCON2 register accordingly.
8. Slave sets the CKP bit releasing SCLx.
9. Master clocks in the ACK value from the slave.
10. Slave hardware automatically clears the CKP bit
and sets SSPxIF after the ACK if the R/W bit is
set.
11. Slave software clears SSPxIF.
12. Slave loads value to transmit to the master into
SSPxBUF setting the BF bit.
Note: SSPxBUF cannot be loaded until after the
ACK.
13. Slave sets CKP bit releasing the clock.
14. Master clocks out the data from the slave and
sends an ACK value on the 9th SCLx pulse.
15. Slave hardware copies the ACK value into the
ACKSTAT bit of the SSPxCON2 register.
16. Steps 10-15 are repeated for each byte transmit-
ted to the master from the slave.
17. If the master sends a not ACK the slave
releases the bus allowing the master to send a
Stop and end the communication.
Note: Master must send a not ACK on the last byte
to ensure that the slave releases the SCLx
line to receive a Stop.
SCLx
S 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
SSPxIF
Cleared by software
BF BF is automatically
Received address Data to transmit is cleared after 8th falling
is read from SSPxBUF loaded into SSPxBUF edge of SCLx
ACKDT
Slave clears
ACKDT to ACK
address
Preliminary
ACKSTAT
Masters ACK
response is copied
to SSPxSTAT
CKP
When AHEN = 1; CKP not cleared
CKP is cleared by hardware When R/W = 1; Set by software, after not ACK
after receiving matching CKP is always releases SCLx
address. cleared after ACK
ACKTIM
I2C SLAVE, 7-BIT ADDRESS, TRANSMISSION (AHEN = 1)
R/W
D/A
PIC16F/LF1826/27
DS41391B-page 257
PIC16F/LF1826/27
24.5.4 SLAVE MODE 10-BIT ADDRESS 24.5.5 10-BIT ADDRESSING WITH ADDRESS OR
RECEPTION DATA HOLD
This section describes a standard sequence of events Reception using 10-bit addressing with AHEN or
for the MSSPx module configured as an I2C slave in DHEN set is the same as with 7-bit modes. The only
10-bit Addressing mode. difference is the need to update the SSPxADD register
Figure 24-19 and is used as a visual reference for this using the UA bit. All functionality, specifically when the
description. CKP bit is cleared and SCLx line is held low are the
same. Figure 24-20 can be used as a reference of a
This is a step by step process of what must be done by slave in 10-bit addressing with AHEN set.
slave software to accomplish I2C communication.
Figure 24-21 shows a standard waveform for a slave
1. Bus starts Idle. transmitter in 10-bit Addressing mode.
2. Master sends Start condition; S bit of SSPxSTAT
is set; SSPxIF is set if interrupt on Start detect is
enabled.
3. Master sends matching high address with R/W
bit clear; UA bit of the SSPxSTAT register is set.
4. Slave sends ACK and SSPxIF is set.
5. Software clears the SSPxIF bit.
6. Software reads received address from SSPx-
BUF clearing the BF flag.
7. Slave loads low address into SSPxADD,
releasing SCLx.
8. Master sends matching low address byte to the
slave; UA bit is set.
Note: Updates to the SSPxADD register are not
allowed until after the ACK sequence.
Master sends
Stop condition
Receive First Address Byte Receive Second Address Byte Receive Data Receive Data
SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 P
S
SCLx is held low
while CKP = 0
SSPxIF
Set by hardware Cleared by software
on 9th falling edge
BF
Data is read
Preliminary
If address matches Receive address is
SSPxADD it is loaded into read from SSPxBUF from SSPxBUF
SSPxBUF
UA
When UA = 1; Software updates SSPxADD
SCLx is held low and releases SCLx
CKP
DS41391B-page 259
Receive First Address Byte R/W = 0 Receive Second Address Byte Receive Data Receive Data
FIGURE 24-21:
DS41391B-page 260
SCLx S 1 2 3 4 5 6 7 8 9 UA 1 2 3 4 5 6 7 8 9 UA 1 2 3 4 5 6 7 8 9 1 2
SSPxIF
Set by hardware Cleared by software Cleared by software
PIC16F/LF1826/27
BF
Preliminary
Slave software clears
ACKDT to ACK
the received byte
UA
Master sends
Master sends Stop condition
Restart event Master sends
not ACK
SCLx 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 P
S
Sr
SSPxIF
BF
Preliminary
UA
High address is loaded
UA indicates SSPxADD After SSPxADD is back into SSPxADD
must be updated updated, UA is cleared
CKP and SCLx is released
Indicates an address
has been received
I2C SLAVE, 10-BIT ADDRESS, TRANSMISSION (SEN = 0, AHEN = 0, DHEN = 0)
PIC16F/LF1826/27
DS41391B-page 261
PIC16F/LF1826/27
24.5.6 CLOCK STRETCHING 24.5.6.2 10-bit Addressing Mode
Clock stretching occurs when a device on the bus In 10-bit Addressing mode, when the UA bit is set, the
holds the SCLx line low effectively pausing communi- clock is always stretched. This is the only time the
cation. The slave may stretch the clock to allow more SCLx is stretched without CKP being cleared. SCLx is
time to handle data or prepare a response for the mas- released immediately after a write to SSPxADD.
ter device. A master device is not concerned with
Note: Previous versions of the module did not
stretching as anytime it is active on the bus and not
stretch the clock if the second address byte
transferring data it is stretching. Any stretching done
did not match.
by a slave is invisible to the master software and han-
dled by the hardware that generates SCLx. 24.5.6.3 Byte NACKing
The CKP bit of the SSPxCON1 register is used to con-
When AHEN bit of SSPxCON3 is set; CKP is cleared
trol stretching in software. Any time the CKP bit is
by hardware after the 8th falling edge of SCLx for a
cleared, the module will wait for the SCLx line to go
received matching address byte. When DHEN bit of
low and then hold it. Setting CKP will release SCLx
SSPxCON3 is set; CKP is cleared after the 8th falling
and allow more communication.
edge of SCLx for received data.
24.5.6.1 Normal Clock Stretching Stretching after the 8th falling edge of SCLx allows the
Following an ACK if the R/W bit of SSPxSTAT is set, a slave to look at the received address or data and
read request, the slave hardware will clear CKP. This decide if it wants to ACK the received data.
allows the slave time to update SSPxBUF with data to 24.5.7 CLOCK SYNCHRONIZATION AND
transfer to the master. If the SEN bit of SSPxCON2 is THE CKP BIT
set, the slave hardware will always stretch the clock
after the ACK sequence. Once the slave is ready; CKP Any time the CKP bit is cleared, the module will wait
is set by software and communication resumes. for the SCLx line to go low and then hold it. However,
clearing the CKP bit will not assert the SCLx output
Note 1: The BF bit has no effect on whether the low until the SCLx output is already sampled low.
clock will be stretched or not. This is differ- Therefore, the CKP bit will not assert the SCLx line
ent than previous versions of the module until an external I2C master device has already
that would not stretch the clock, clear CKP, asserted the SCLx line. The SCLx output will remain
if SSPxBUF was read before the 9th falling low until the CKP bit is set and all other devices on the
edge of SCLx. I2C bus have released SCLx. This ensures that a write
2: Previous versions of the module did not to the CKP bit will not violate the minimum high time
stretch the clock for a transmission if requirement for SCLx (see Figure 24-22).
SSPxBUF was loaded before the 9th fall-
ing edge of SCLx. It is now always cleared
for read requests.
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
SDAx DX DX 1
SCLx
Master device
CKP asserts clock
Master device
releases clock
WR
SSPxCON1
SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S
SSPxIF
BF (SSPxSTAT<0>)
Cleared by software
SSPxBUF is read
GCEN (SSPxCON2<7>)
1
Master mode is enabled by setting and clearing the The master device generates all of the serial clock
appropriate SSPxM bits in the SSPxCON1 register and pulses and the Start and Stop conditions. A transfer is
by setting the SSPxEN bit. In Master mode, the SCLx ended with a Stop condition or with a Repeated Start
and SDAx lines are set as inputs and are manipulated condition. Since the Repeated Start condition is also
by the MSSPx hardware. the beginning of the next serial transfer, the I2C bus will
not be released.
Master mode of operation is supported by interrupt
generation on the detection of the Start and Stop con- In Master Transmitter mode, serial data is output
ditions. The Stop (P) and Start (S) bits are cleared from through SDAx, while SCLx outputs the serial clock. The
a Reset or when the MSSPx module is disabled. Con- first byte transmitted contains the slave address of the
trol of the I 2C bus may be taken when the P bit is set, receiving device (7 bits) and the Read/Write (R/W) bit.
or the bus is idle. In this case, the R/W bit will be logic 0. Serial data is
transmitted 8 bits at a time. After each byte is transmit-
In Firmware Controlled Master mode, user code ted, an Acknowledge bit is received. Start and Stop
conducts all I 2C bus operations based on Start and conditions are output to indicate the beginning and the
Stop bit condition detection. Start and Stop condition end of a serial transfer.
detection is the only active circuitry in this mode. All
other communication is done by the user software In Master Receive mode, the first byte transmitted con-
directly manipulating the SDAx and SCLx lines. tains the slave address of the transmitting device
(7 bits) and the R/W bit. In this case, the R/W bit will be
The following events will cause the SSPx Interrupt Flag logic 1. Thus, the first byte transmitted is a 7-bit slave
bit, SSPxIF, to be set (SSPx interrupt, if enabled): address followed by a 1 to indicate the receive bit.
Start condition detected Serial data is received via SDAx, while SCLx outputs
the serial clock. Serial data is received 8 bits at a time.
Stop condition detected
After each byte is received, an Acknowledge bit is
Data transfer byte transmitted/received transmitted. Start and Stop conditions indicate the
Acknowledge transmitted/received beginning and end of transmission.
Repeated Start generated A Baud Rate Generator is used to set the clock fre-
Note 1: The MSSPx module, when configured in quency output on SCLx. See Section 24.7 Baud
I2C Master mode, does not allow queue- Rate Generator for more detail.
ing of events. For instance, the user is not
allowed to initiate a Start condition and
immediately write the SSPxBUF register
to initiate transmission before the Start
condition is complete. In this case, the
SSPxBUF will not be written to and the
WCOL bit will be set, indicating that a write
to the SSPxBUF did not occur
2: When in Master mode, Start/Stop detec-
tion is masked and an interrupt is gener-
ated when the SEN/PEN bit is cleared and
the generation is complete.
SDAx DX DX 1
BRG decrements on
Q2 and Q4 cycles
BRG
03h 02h 01h 00h (hold off) 03h 02h
Value
TBRG
SCLx
S
TBRG
Preliminary
BF (SSPxSTAT<0>)
PEN
R/W
I2C MASTER MODE WAVEFORM (TRANSMISSION, 7 OR 10-BIT ADDRESS)
PIC16F/LF1826/27
DS41391B-page 269
PIC16F/LF1826/27
24.6.7 I2C MASTER MODE RECEPTION 24.6.7.4 Typical Receive Sequence:
Master mode reception is enabled by programming the 1. The user generates a Start condition by setting
Receive Enable bit, RCEN bit of the SSPxCON2 the SEN bit of the SSPxCON2 register.
register. 2. SSPxIF is set by hardware on completion of the
Note: The MSSPx module must be in an Idle Start.
state before the RCEN bit is set or the 3. SSPxIF is cleared by software.
RCEN bit will be disregarded. 4. User writes SSPxBUF with the slave address to
The Baud Rate Generator begins counting and on each transmit and the R/W bit set.
rollover, the state of the SCLx pin changes 5. Address is shifted out the SDAx pin until all 8 bits
(high-to-low/low-to-high) and data is shifted into the are transmitted. Transmission begins as soon
SSPxSR. After the falling edge of the eighth clock, the as SSPxBUF is written to.
receive enable flag is automatically cleared, the con- 6. The MSSPx module shifts in the ACK bit from
tents of the SSPxSR are loaded into the SSPxBUF, the the slave device and writes its value into the
BF flag bit is set, the SSPxIF flag bit is set and the Baud ACKSTAT bit of the SSPxCON2 register.
Rate Generator is suspended from counting, holding 7. The MSSPx module generates an interrupt at
SCLx low. The MSSPx is now in Idle state awaiting the the end of the ninth clock cycle by setting the
next command. When the buffer is read by the CPU, SSPxIF bit.
the BF flag bit is automatically cleared. The user can
8. User sets the RCEN bit of the SSPxCON2 regis-
then send an Acknowledge bit at the end of reception
ter and the Master clocks in a byte from the slave.
by setting the Acknowledge Sequence Enable, ACKEN
bit of the SSPxCON2 register. 9. After the 8th falling edge of SCLx, SSPxIF and
BF are set.
24.6.7.1 BF Status Flag 10. Master clears SSPxIF and reads the received
byte from SSPxUF, clears BF.
In receive operation, the BF bit is set when an address
or data byte is loaded into SSPxBUF from SSPxSR. It 11. Master sets ACK value sent to slave in ACKDT
is cleared when the SSPxBUF register is read. bit of the SSPxCON2 register and initiates the
ACK by setting the ACKEN bit.
24.6.7.2 SSPxOV Status Flag 12. Masters ACK is clocked out to the slave and
In receive operation, the SSPxOV bit is set when 8 bits SSPxIF is set.
are received into the SSPxSR and the BF flag bit is 13. User clears SSPxIF.
already set from a previous reception. 14. Steps 8-13 are repeated for each received byte
from the slave.
24.6.7.3 WCOL Status Flag
15. Master sends a not ACK or Stop to end
If the user writes the SSPxBUF when a receive is communication.
already in progress (i.e., SSPxSR is still shifting in a
data byte), the WCOL bit is set and the contents of the
buffer are unchanged (the write does not occur).
begin Start condition ACK from Master Set ACKEN, start Acknowledge sequence
Master configured as a receiver SDAx = ACKDT = 0 SDAx = ACKDT = 1
SEN = 0 by programming SSPxCON2<3> (RCEN = 1)
PEN bit = 1
Write to SSPxBUF occurs here, RCEN cleared RCEN = 1, start RCEN cleared
ACK from Slave next receive automatically written here
start XMIT automatically
Transmit Address to Slave R/W = 0 Receiving Data from Slave Receiving Data from Slave
Bus master
ACK is not sent terminates
transfer
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
SCLx S P
Data shifted in on falling edge of CLK Set SSPxIF at end
of receive Set SSPxIF interrupt
Set SSPxIF interrupt at end of Acknow-
Set SSPxIF interrupt ledge sequence
at end of receive at end of Acknowledge
SSPxIF sequence
Set P bit
Cleared by software Cleared by software Cleared by software Cleared by software (SSPxSTAT<4>)
SDAx = 0, SCLx = 1 Cleared in
while CPU software and SSPxIF
responds to SSPxIF
BF
Preliminary
(SSPxSTAT<0>) Last bit is shifted into SSPxSR and
contents are unloaded into SSPxBUF
SSPxOV
ACKEN
RCEN
I2C MASTER MODE WAVEFORM (RECEPTION, 7-BIT ADDRESS)
Master configured as a receiver RCEN cleared ACK from Master RCEN cleared
by programming SSPxCON2<3> (RCEN = 1) automatically SDAx = ACKDT = 0 automatically
PIC16F/LF1826/27
DS41391B-page 271
PIC16F/LF1826/27
24.6.8 ACKNOWLEDGE SEQUENCE 24.6.9 STOP CONDITION TIMING
TIMING A Stop bit is asserted on the SDAx pin at the end of a
An Acknowledge sequence is enabled by setting the receive/transmit by setting the Stop Sequence Enable
Acknowledge Sequence Enable bit, ACKEN bit of the bit, PEN bit of the SSPxCON2 register. At the end of a
SSPxCON2 register. When this bit is set, the SCLx pin is receive/transmit, the SCLx line is held low after the
pulled low and the contents of the Acknowledge data bit falling edge of the ninth clock. When the PEN bit is set,
are presented on the SDAx pin. If the user wishes to the master will assert the SDAx line low. When the
generate an Acknowledge, then the ACKDT bit should SDAx line is sampled low, the Baud Rate Generator is
be cleared. If not, the user should set the ACKDT bit reloaded and counts down to 0. When the Baud Rate
before starting an Acknowledge sequence. The Baud Generator times out, the SCLx pin will be brought high
Rate Generator then counts for one rollover period and one TBRG (Baud Rate Generator rollover count)
(TBRG) and the SCLx pin is deasserted (pulled high). later, the SDAx pin will be deasserted. When the SDAx
When the SCLx pin is sampled high (clock arbitration), pin is sampled high while SCLx is high, the P bit of the
the Baud Rate Generator counts for TBRG. The SCLx pin SSPxSTAT register is set. A TBRG later, the PEN bit is
is then pulled low. Following this, the ACKEN bit is auto- cleared and the SSPxIF bit is set (Figure 24-30).
matically cleared, the Baud Rate Generator is turned off
and the MSSPx module then goes into Idle mode 24.6.9.1 WCOL Status Flag
(Figure 24-29). If the user writes the SSPxBUF when a Stop sequence
is in progress, then the WCOL bit is set and the
24.6.8.1 WCOL Status Flag contents of the buffer are unchanged (the write does
If the user writes the SSPxBUF when an Acknowledge not occur).
sequence is in progress, then WCOL is set and the
contents of the buffer are unchanged (the write does
not occur).
SCLx 8 9
SSPxIF
Cleared in
SSPxIF set at software
the end of receive Cleared in
software SSPxIF set at the end
of Acknowledge sequence
Note: TBRG = one Baud Rate Generator period.
SDAx ACK
P
TBRG TBRG TBRG
SCLx brought high after TBRG
SDAx asserted low before rising edge of clock
to setup Stop condition
SDAx
BCLxIF
SDAx
SCLx
Set SEN, enable Start SEN cleared automatically because of bus collision.
condition if SDAx = 1, SCLx = 1 SSPx module reset into Idle state.
SEN
SDAx sampled low before
Start condition. Set BCLxIF.
S bit and SSPxIF set because
BCLxIF SDAx = 0, SCLx = 1.
SSPxIF and BCLxIF are
cleared by software
SSPxIF
TBRG TBRG
SDAx
SSPxIF 0 0
FIGURE 24-35: BRG RESET DUE TO SDA ARBITRATION DURING START CONDITION
SDAx = 0, SCLx = 1
Set S Set SSPxIF
Less than TBRG
TBRG
SCLx S
SCLx pulled low after BRG
time-out
SEN
Set SEN, enable Start
sequence if SDAx = 1, SCLx = 1
BCLxIF 0
SSPxIF
SDAx = 0, SCLx = 1, Interrupts cleared
set SSPxIF by software
SDAx
SCLx
RSEN
BCLxIF
Cleared by software
S 0
SSPxIF 0
TBRG TBRG
SDAx
SCLx
S 0
SSPxIF
PEN
BCLxIF
P 0
SSPxIF 0
SDAx
PEN
BCLxIF
P 0
SSPxIF 0
SSPxM<3:0> SSPxADD<7:0>
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HS = Bit is set by hardware C = User cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared HC = Cleared by hardware S = User set
bit 7 GCEN: General Call Enable bit (in I2C Slave mode only)
1 = Enable interrupt when a general call address (0x00 or 00h) is received in the SSPxSR
0 = General call address disabled
bit 6 ACKSTAT: Acknowledge Status bit (in I2C mode only)
1 = Acknowledge was not received
0 = Acknowledge was received
bit 5 ACKDT: Acknowledge Data bit (in I2C mode only)
In Receive mode:
Value transmitted when the user initiates an Acknowledge sequence at the end of a receive
1 = Not Acknowledge
0 = Acknowledge
bit 4 ACKEN: Acknowledge Sequence Enable bit (in I2C Master mode only)
In Master Receive mode:
1 = Initiate Acknowledge sequence on SDAx and SCLx pins, and transmit ACKDT data bit.
Automatically cleared by hardware.
0 = Acknowledge sequence idle
bit 3 RCEN: Receive Enable bit (in I2C Master mode only)
1 = Enables Receive mode for I2C
0 = Receive idle
bit 2 PEN: Stop Condition Enable bit (in I2C Master mode only)
SCKx Release Control:
1 = Initiate Stop condition on SDAx and SCLx pins. Automatically cleared by hardware.
0 = Stop condition Idle
bit 1 RSEN: Repeated Start Condition Enabled bit (in I2C Master mode only)
1 = Initiate Repeated Start condition on SDAx and SCLx pins. Automatically cleared by hardware.
0 = Repeated Start condition Idle
bit 0 SEN: Start Condition Enabled bit (in I2C Master mode only)
In Master mode:
1 = Initiate Start condition on SDAx and SCLx pins. Automatically cleared by hardware.
0 = Start condition Idle
In Slave mode:
1 = Clock stretching is enabled for both slave transmit and slave receive (stretch enabled)
0 = Clock stretching is disabled
Note 1: For bits ACKEN, RCEN, PEN, RSEN, SEN: If the I2C module is not in the Idle mode, this bit may not be
set (no spooling) and the SSPxBUF may not be written (or writes to the SSPxBUF are disabled).
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Note 1: For daisy-chained SPI operation; allows the user to ignore all but the last received byte. SSPxOV is still set
when a new byte is received and BF = 1, but hardware continues to write the most recent byte to
SSPxBUF.
2: This bit has no effect in Slave modes that Start and Stop condition detection is explicitly listed as enabled.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
REGISTER 24-6: SSPXADD: MSSPX ADDRESS AND BAUD RATE REGISTER (I2C MODE)
R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0 R/W-0/0
ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0
bit 7 bit 0
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Master mode:
bit 7-3 Not used: Unused for Most Significant Address byte. Bit state of this register is a dont care. Bit pat-
tern sent by master is fixed by I2C specification and must be equal to 11110. However, those bits are
compared by hardware and are not affected by the value in this register.
bit 2-1 ADD<2:1>: Two Most Significant bits of 10-bit address
bit 0 Not used: Unused in this mode. Bit state is a dont care.
10-Bit Slave mode Least Significant Address byte:
TXEN
TRMT SPEN
Baud Rate Generator FOSC
n
TX9
BRG16 n
+1 Multiplier x4 x16 x64
TX9D
SYNC 1 X 0 0 0
SPBRGH SPBRGL BRGH X 1 1 0 0
BRG16 X 1 0 1 0
BRG16
+1 n
Multiplier x4 x16 x64
SYNC 1 X 0 0 0
SPBRGH SPBRGL BRGH FIFO
X 1 1 0 0 FERR RX9D RCREG Register
BRG16 X 1 0 1 0
8
Data Bus
RCIF Interrupt
RCIE
The EUSART transmitter block diagram is shown in The TXIF interrupt can be enabled by setting the TXIE
Figure 25-1. The heart of the transmitter is the serial interrupt enable bit of the PIE1 register. However, the
Transmit Shift Register (TSR), which is not directly TXIF flag bit will be set whenever the TXREG is empty,
accessible by software. The TSR obtains its data from regardless of the state of TXIE enable bit.
the transmit buffer, which is the TXREG register. To use interrupts when transmitting data, set the TXIE
bit only when there is more data to send. Clear the
25.1.1.1 Enabling the Transmitter TXIE interrupt enable bit upon writing the last character
The EUSART transmitter is enabled for asynchronous of the transmission to the TXREG.
operations by configuring the following three control
bits:
TXEN = 1
SYNC = 0
SPEN = 1
All other EUSART control bits are assumed to be in
their default state.
Setting the TXEN bit of the TXSTA register enables the
transmitter circuitry of the EUSART. Clearing the SYNC
bit of the TXSTA register configures the EUSART for
asynchronous operation. Setting the SPEN bit of the
RCSTA register enables the EUSART and automatically
configures the TX/CK I/O pin as an output.
Write to TXREG
Word 1
BRG Output
(Shift Clock)
TX/CK
pin Start bit bit 0 bit 1 bit 7/8 Stop bit
Word 1
TXIF bit
(Transmit Buffer 1 TCY
Reg. Empty Flag)
Word 1
TRMT bit Transmit Shift Reg.
(Transmit Shift
Reg. Empty Flag)
Write to TXREG
Word 1 Word 2
BRG Output
(Shift Clock)
TX/CK
pin Start bit bit 0 bit 1 bit 7/8 Stop bit Start bit bit 0
TXIF bit 1 TCY Word 1 Word 2
(Transmit Buffer
Reg. Empty Flag) 1 TCY
CREN = 1 Immediately after all data bits and the Stop bit have
been received, the character in the RSR is transferred
SYNC = 0
to the EUSART receive FIFO and the RCIF interrupt
SPEN = 1 flag bit of the PIR1 register is set. The top character in
All other EUSART control bits are assumed to be in the FIFO is transferred out of the FIFO by reading the
their default state. RCREG register.
Setting the CREN bit of the RCSTA register enables the Note: If the receive FIFO is overrun, no additional
receiver circuitry of the EUSART. Clearing the SYNC bit characters will be received until the overrun
of the TXSTA register configures the EUSART for condition is cleared. See Section 25.1.2.5
asynchronous operation. Setting the SPEN bit of the Receive Overrun Error for more
RCSTA register enables the EUSART and automatically information on overrun errors.
configures the RX/DT I/O pin as an input.
25.1.2.3 Receive Interrupts
Note: When the SPEN bit is set the TX/CK I/O
pin is automatically configured as an The RCIF interrupt flag bit of the PIR1 register is set
output, regardless of the state of the whenever the EUSART receiver is enabled and there is
corresponding TRIS bit and whether or not an unread character in the receive FIFO. The RCIF
the EUSART transmitter is enabled. The interrupt flag bit is read-only, it cannot be set or cleared
PORT latch is disconnected from the by software.
output driver so it is not possible to use the RCIF interrupts are enabled by setting all of the
TX/CK pin as a general purpose output. following bits:
RCIE interrupt enable bit of the PIE1 register
PEIE peripheral interrupt enable bit of the
INTCON register
GIE global interrupt enable bit of the INTCON
register
The RCIF interrupt flag bit will be set when there is an
unread character in the FIFO, regardless of the state of
interrupt enable bits.
Read Rcv
Buffer Reg.
RCREG
RCIF
(Interrupt Flag)
OERR bit
CREN
Note: This timing diagram shows three words appearing on the RX input. The RCREG (receive buffer) is read after the third word,
causing the OERR (overrun) bit to be set.
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
TABLE 25-4: SUMMARY OF REGISTERS ASSOCIATED WITH THE BAUD RATE GENERATOR
Register
Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
on Page
BAUDCON ABDOVF RCIDL SCKP BRG16 WUE ABDEN 298
RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 297
SPBRGL Baud Rate Generator Data Register Low 299*
SPBRGH Baud Rate Generator Data Register High 299*
TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D 296
Legend: = unimplemented read as 0. Shaded cells are not used for the Baud Rate Generator.
* Page provides register information.
BAUD FOSC = 32.000 MHz FOSC = 20.000 MHz FOSC = 18.432 MHz FOSC = 11.0592 MHz
RATE SPBRG SPBRG SPBRG SPBRG
Actual % Actual % Actual % Actual %
value value value value
Rate Error Rate Error Rate Error Rate Error
(decimal) (decimal) (decimal) (decimal)
300
1200
2400
9600 9615 0.16 207 9615 0.16 129 9600 0.00 119 9600 0.00 71
10417 10417 0.00 191 10417 0.00 119 10378 -0.37 110 10473 0.53 65
19.2k 19.23k 0.16 103 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35
57.6k 57.14k -0.79 34 56.82k -1.36 21 57.60k 0.00 19 57.60k 0.00 11
115.2k 117.64k 2.12 16 113.64k -1.36 10 115.2k 0.00 9 115.2k 0.00 5
BAUD FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz
RATE SPBRG SPBRG SPBRG SPBRG
Actual % Actual % Actual % Actual %
value value value value
Rate Error Rate Error Rate Error Rate Error
(decimal) (decimal) (decimal) (decimal)
300 300 0.16 207
1200 1202 0.16 207 1200 0.00 191 1202 0.16 51
2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25
9600 9615 0.16 51 9615 0.16 25 9600 0.00 23
10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 10417 0.00 5
19.2k 19231 0.16 25 19.23k 0.16 12 19.2k 0.00 11
57.6k 55556 -3.55 8 57.60k 0.00 3
115.2k 115.2k 0.00 1
BAUD FOSC = 32.000 MHz FOSC = 20.000 MHz FOSC = 18.432 MHz FOSC = 11.0592 MHz
RATE SPBRG SPBRG SPBRG SPBRG
Actual % Actual % Actual % Actual %
value value value value
Rate Error Rate Error Rate Error Rate Error
(decimal) (decimal) (decimal) (decimal)
300 300.0 0.00 6666 300.0 -0.01 4166 300.0 0.00 3839 300.0 0.00 2303
1200 1200 -0.02 3332 1200 -0.03 1041 1200 0.00 959 1200 0.00 575
2400 2401 -0.04 832 2399 -0.03 520 2400 0.00 479 2400 0.00 287
9600 9615 0.16 207 9615 0.16 129 9600 0.00 119 9600 0.00 71
10417 10417 0.00 191 10417 0.00 119 10378 -0.37 110 10473 0.53 65
19.2k 19.23k 0.16 103 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35
57.6k 57.14k -0.79 34 56.818 -1.36 21 57.60k 0.00 19 57.60k 0.00 11
115.2k 117.6k 2.12 16 113.636 -1.36 10 115.2k 0.00 9 115.2k 0.00 5
BAUD FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz
RATE SPBRG SPBRG SPBRG SPBRG
Actual % Actual % Actual % Actual %
value value value value
Rate Error Rate Error Rate Error Rate Error
(decimal) (decimal) (decimal) (decimal)
300 299.9 -0.02 1666 300.1 0.04 832 300.0 0.00 767 300.5 0.16 207
1200 1199 -0.08 416 1202 0.16 207 1200 0.00 191 1202 0.16 51
2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25
9600 9615 0.16 51 9615 0.16 25 9600 0.00 23
10417 10417 0.00 47 10417 0.00 23 10473 0.53 21 10417 0.00 5
19.2k 19.23k 0.16 25 19.23k 0.16 12 19.20k 0.00 11
57.6k 55556 -3.55 8 57.60k 0.00 3
115.2k 115.2k 0.00 1
BAUD FOSC = 32.000 MHz FOSC = 20.000 MHz FOSC = 18.432 MHz FOSC = 11.0592 MHz
RATE SPBRG SPBRG SPBRG SPBRG
Actual % Actual % Actual % Actual %
value value value value
Rate Error Rate Error Rate Error Rate Error
(decimal) (decimal) (decimal) (decimal)
300 300.0 0.00 26666 300.0 0.00 16665 300.0 0.00 15359 300.0 0.00 9215
1200 1200 0.00 6666 1200 -0.01 4166 1200 0.00 3839 1200 0.00 2303
2400 2400 0.01 3332 2400 0.02 2082 2400 0.00 1919 2400 0.00 1151
9600 9604 0.04 832 9597 -0.03 520 9600 0.00 479 9600 0.00 287
10417 10417 0.00 767 10417 0.00 479 10425 0.08 441 10433 0.16 264
19.2k 19.18k -0.08 416 19.23k 0.16 259 19.20k 0.00 239 19.20k 0.00 143
57.6k 57.55k -0.08 138 57.47k -0.22 86 57.60k 0.00 79 57.60k 0.00 47
115.2k 115.9k 0.64 68 116.3k 0.94 42 115.2k 0.00 39 115.2k 0.00 23
BAUD FOSC = 8.000 MHz FOSC = 4.000 MHz FOSC = 3.6864 MHz FOSC = 1.000 MHz
RATE SPBRG SPBRG SPBRG SPBRG
Actual % Actual % Actual % Actual %
value value value value
Rate Error Rate Error Rate Error Rate Error
(decimal) (decimal) (decimal) (decimal)
300 300.0 0.00 6666 300.0 0.01 3332 300.0 0.00 3071 300.1 0.04 832
1200 1200 -0.02 1666 1200 0.04 832 1200 0.00 767 1202 0.16 207
2400 2401 0.04 832 2398 0.08 416 2400 0.00 383 2404 0.16 103
9600 9615 0.16 207 9615 0.16 103 9600 0.00 95 9615 0.16 25
10417 10417 0 191 10417 0.00 95 10473 0.53 87 10417 0.00 23
19.2k 19.23k 0.16 103 19.23k 0.16 51 19.20k 0.00 47 19.23k 0.16 12
57.6k 57.14k -0.79 34 58.82k 2.12 16 57.60k 0.00 15
115.2k 117.6k 2.12 16 111.1k -3.55 8 115.2k 0.00 7
BRG Clock
RCIDL
RCIF bit
(Interrupt)
Read
RCREG
Note 1: The ABD sequence requires the EUSART module to be configured in Asynchronous mode.
RCIF
Cleared due to User Read of RCREG
Note 1: The EUSART remains in Idle while the WUE bit is set.
Note 1: If the wake-up event requires long oscillator warm-up time, the automatic clearing of the WUE bit can occur while the stposc signal is
still active. This sequence should not depend on the presence of Q clocks.
2: The EUSART remains in Idle while the WUE bit is set.
Write to TXREG
Dummy Write
BRG Output
(Shift Clock)
RX/DT
pin bit 0 bit 1 bit 2 bit 7 bit 0 bit 1 bit 7
Word 1 Word 2
TX/CK pin
(SCKP = 0)
TX/CK pin
(SCKP = 1)
Write to
TXREG Reg Write Word 1 Write Word 2
TXIF bit
(Interrupt Flag)
TRMT bit
1 1
TXEN bit
Note: Sync Master mode, SPBRG = 0, continuous transmission of two 8-bit words.
TX/CK pin
Write to
TXREG reg
TXIF bit
TRMT bit
TXEN bit
RX/DT
pin bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7
TX/CK pin
(SCKP = 0)
TX/CK pin
(SCKP = 1)
Write to
bit SREN
SREN bit
CREN bit 0 0
RCIF bit
(Interrupt)
Read
RCREG
Note: Timing diagram demonstrates Sync Master mode with bit SREN = 1 and bit BRGH = 0.
Timer0 Module
Set
TMR0CS
T0XCS TMR0IF
FOSC/4 0
Overflow
T0CKI 0 TMR0
1
1
CPSCH<3:0>
CPSON(1)
CPS0
CPS1
CPS8 T1GSEL<1:0>
CPSRNG<1:0>
CPS9
T1G
CPS10 Timer1 Gate
Control Logic
SYNCC1OUT
CPS11
SYNCC2OUT
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
Legend:
R = Readable bit W = Writable bit U = Unimplemented bit, read as 0
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
1 = Bit is set 0 = Bit is cleared
External
Programming VDD Device to be
Signals Programmed
VDD VDD
10k
VPP MCLR/VPP
VSS VSS
Data ICSPDAT
Clock ICSPCLK
* * *
To Normal Connections
OPCODE only
13 0
OPCODE
CONTROL OPERATIONS
BRA k Relative Branch 2 11 001k kkkk kkkk
BRW Relative Branch with W 2 00 0000 0000 1011
CALL k Call Subroutine 2 10 0kkk kkkk kkkk
CALLW Call Subroutine with W 2 00 0000 0000 1010
GOTO k Go to address 2 10 1kkk kkkk kkkk
RETFIE k Return from interrupt 2 00 0000 0000 1001
RETLW k Return with literal in W 2 11 0100 kkkk kkkk
RETURN Return from Subroutine 2 00 0000 0000 1000
INHERENT OPERATIONS
CLRWDT Clear Watchdog Timer 1 00 0000 0110 0100 TO, PD
NOP No Operation 1 00 0000 0000 0000
OPTION Load OPTION_REG register with W 1 00 0000 0110 0010
RESET Software device Reset 1 00 0000 0000 0001
SLEEP Go into Standby mode 1 00 0000 0110 0011 TO, PD
TRIS f Load TRIS register with W 1 00 0000 0110 0fff
C-COMPILER OPTIMIZED
ADDFSR n, k Add Literal to FSRn 1 11 0001 0nkk kkkk
MOVIW n mm Move INDFn to W, with pre/post inc/dec 1 00 0000 0001 0nmm Z 2
k[n] Move INDFn to W, Indexed Indirect. 1 11 1111 0nkk kkkk Z 2
MOVWI n mm Move W to INDFn, with pre/post inc/dec 1 00 0000 0001 1nmm 2
k[n] Move W to INDFn, Indexed Indirect. 1 11 1111 1nkk kkkk 2
Note 1: 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.
2: If this instruction addresses an INDF register and the MSb of the corresponding FSR is set, this instruction will require
one additional instruction cycle.
C register f 0 Words: 1
Cycles: 1
Example: MOVF FSR, 0
After Instruction
LSRF Logical Right Shift
W = value in FSR register
Syntax: [ label ] LSLF f {,d} Z = 1
Operands: 0 f 127
d [0,1]
Operation: 0 dest<7>
(f<7:1>) dest<6:0>,
(f<0>) C,
Status Affected: C, Z
Description: The contents of register f are shifted
one bit to the right through the Carry
flag. A 0 is shifted into the MSb. If d is
0, the result is placed in W. If d is 1,
the result is stored back in register f.
0 register f C
00 Preincrement ++FSRn
01 Predecrement --FSRn
10 Postincrement FSRn++ RESET Software Reset
11 Postdecrement FSRn-- Syntax: [ label ] RESET
Operands: None
Description: This instruction is used to move data Operation: Execute a device Reset. Resets the
between W and one of the indirect nRI flag of the PCON register.
registers (INDFn). Before/after this
move, the pointer (FSRn) is updated by Status Affected: None
pre/post incrementing/decrementing it. Description: This instruction provides a way to
execute a hardware Reset by soft-
Note: The INDFn registers are not ware.
physical registers. Any instruction that
accesses an INDFn register actually
accesses the register at the address
specified by the FSRn.
Description: The W register is loaded with the eight Description: The contents of register f are rotated
bit literal k. The program counter is one bit to the left through the Carry
loaded from the top of the stack (the flag. If d is 0, the result is placed in
return address). This is a two-cycle the W register. If d is 1, the result is
instruction. stored back in register f.
Words: 1 C Register f
Cycles: 2
Words: 1
Example: CALL TABLE;W contains table
;offset value Cycles: 1
;W now has table value Example: RLF REG1,0
TABLE
Before Instruction
REG1 = 1110 0110
ADDWF PC ;W = offset
C = 0
RETLW k1 ;Begin table
After Instruction
RETLW k2 ;
REG1 = 1110 0110
W = 1100 1100
C = 1
RETLW kn ; End of table
Before Instruction
W = 0x07
After Instruction
W = value of k8
3.6
2.5
2.3
2.0
1.8
0 4 10 16 32
Frequency (MHz)
Note 1: The shaded region indicates the permissible combinations of voltage and frequency.
2: Refer to Table 29-1 for each Oscillator modes supported frequencies.
3.6
2.5
2.3
2.0
1.8
0 4 10 16 32
Frequency (MHz)
Note 1: The shaded region indicates the permissible combinations of voltage and frequency.
2: Refer to Table 29-1 for each Oscillator modes supported frequencies.
125
+ 5%
85
Temperature (C)
60
2%
25
0
-20
+ 5%
-40
1.8 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5
VDD (V)
VDD
VPOR
VPORR
VSS
NPOR
POR REARM
VSS
TVLOW(2) TPOR(3)
2.0 A 5.0
D023 0.5 A 1.8 LPWDT Current (Note 1)
0.8 A 3.0
D023 1.9 A 1.8 LPWDT Current (Note 1)
2.3 A 3.0
2.4 A 5.0
D023A 8.5 A 1.8 FVR current (Note 1)
8.5 A 3.0
D023A 32 A 1.8 FVR current (Note 1)
38 A 3.0
68 mA 5.0
D024 8.1 A 3.0 BOR Current (Note 1)
D024 17 A 3.0 BOR Current (Note 1)
18 A 5.0
D025 0.6 A 1.8 T1OSC Current (Note 1)
0.8 A 3.0
D025 3.0 A 1.8 T1OSC Current (Note 1)
3.5 A 3.0
4.0 A 5.0
D026 0.1 A 1.8 A/D Current (Note 1, Note 3), no
0.1 A 3.0 conversion in progress
25 A 5.0
* These parameters are characterized but not tested.
Data in Typ column is at 3.0V, 25C unless otherwise stated. These parameters are for design guidance only and are
not tested.
Legend: TBD = To Be Determined
Note 1: The peripheral current is the sum of the base IDD or IPD and the additional current consumed when this peripheral is
enabled. The peripheral current can be determined by subtracting the base IDD or IPD current from this limit. Max
values should be used when calculating total current consumption.
2: The power-down current in Sleep mode does not depend on the oscillator type. Power-down current is measured with
the part in Sleep mode, with all I/O pins in high-impedance state and tied to VDD.
3: A/D oscillator source is FRC.
280 A 5.0
D027 3.5 A 1.8 Cap Sense Low Power
7 A 3.0 Oscillator mode (Note 1)
32 A 5.0
D027A 4.2 A 1.8 Cap Sense Medium Power
6 A 3.0 Oscillator mode (Note 1)
11 A 5.0
D027B 12 A 1.8 Cap Sense High Power
32 A 3.0 Oscillator mode (Note 1)
42 A 5.0
D028 6.9 A 1.8 Comparator Current, Low Power
7.0 A 3.0 mode, one comparator enabled
(Note 1)
D028 9.0 A 1.8 Comparator Current, Low Power
9.3 A 3.0 mode, one comparator enabled
(Note 1)
9.8 A 5.0
D028A 6.6 A 1.8 Comparator Current, Low Power
6.8 A 3.0 mode, two comparators enabled
(Note 1)
D028A 8.5 A 1.8 Comparator Current, Low Power
8.8 A 3.0 mode, two comparators enabled
(Note 1)
9.2 A 5.0
* These parameters are characterized but not tested.
Data in Typ column is at 3.0V, 25C unless otherwise stated. These parameters are for design guidance only and are
not tested.
Legend: TBD = To Be Determined
Note 1: The peripheral current is the sum of the base IDD or IPD and the additional current consumed when this peripheral is
enabled. The peripheral current can be determined by subtracting the base IDD or IPD current from this limit. Max
values should be used when calculating total current consumption.
2: The power-down current in Sleep mode does not depend on the oscillator type. Power-down current is measured with
the part in Sleep mode, with all I/O pins in high-impedance state and tied to VDD.
3: A/D oscillator source is FRC.
TH01 JA Thermal Resistance Junction to Ambient TBD C/W 18-pin PDIP package
TBD C/W 18-pin SOIC package
TBD C/W 20-pin SSOP package
TBD C/W 28-pin UQFN 4x4mm package
TBD C/W 28-pin QFN 6x6mm package
TH02 JC Thermal Resistance Junction to Case TBD C/W 18-pin SPDIP package
TBD C/W 18-pin SOIC package
TBD C/W 20-pin SSOP package
TBD C/W 28-pin UQFN 4x4mm package
TBD C/W 28-pin QFN 6x6mm package
TH03 TJMAX Maximum Junction Temperature 150 C
TH04 PD Power Dissipation W PD = PINTERNAL + PI/O
TH05 PINTERNAL Internal Power Dissipation W PINTERNAL = IDD x VDD(1)
TH06 PI/O I/O Power Dissipation W PI/O = (IOL * VOL) + (IOH * (VDD - VOH))
TH07 PDER Derated Power W PDER = PDMAX (TJ - TA)/JA(2)
Legend: TBD = To Be Determined
Note 1: IDD is current to run the chip alone without driving any load on the output pins.
2: TA = Ambient Temperature
3: TJ = Junction Temperature
1. TppS2ppS
2. TppS
T
F Frequency T Time
Lowercase letters (pp) and their meanings:
pp
cc CCP1 osc OSC1
ck CLKOUT rd RD
cs CS rw RD or WR
di SDIx sc SCKx
do SDO ss SS
dt Data in t0 T0CKI
io I/O PORT t1 T1CKI
mc MCLR wr WR
Uppercase letters and their meanings:
S
F Fall P Period
H High R Rise
I Invalid (High-impedance) V Valid
L Low Z High-impedance
Pin CL
VSS
Q4 Q1 Q2 Q3 Q4 Q1
OSC1/CLKIN
OS02
OS04 OS04
OS03
OSC2/CLKOUT
(LP,XT,HS Modes)
OSC2/CLKOUT
(CLKOUT Mode)
OS01 FOSC External CLKIN Frequency(1) DC 0.5 MHz EC Oscillator mode (low)
DC 4 MHz EC Oscillator mode (medium)
DC 32 MHz EC Oscillator mode (high)
Oscillator Frequency(1) 32.768 kHz LP Oscillator mode
0.1 4 MHz XT Oscillator mode
1 4 MHz HS Oscillator mode, VDD 2.3V
1 20 MHz HS Oscillator mode, VDD > 2.3V
DC 4 MHz RC Oscillator mode
OS02 TOSC External CLKIN Period(1) 27 s LP Oscillator mode
250 ns XT Oscillator mode
50 ns HS Oscillator mode
31.25 ns EC Oscillator mode
Oscillator Period(1) 30.5 s LP Oscillator mode
250 10,000 ns XT Oscillator mode
50 1,000 ns HS Oscillator mode
250 ns RC Oscillator mode
OS03 TCY Instruction Cycle Time(1) 125 DC ns TCY = FOSC/4
OS04* TosH, External CLKIN High, 2 s LP oscillator
TosL External CLKIN Low 100 ns XT oscillator
20 ns HS oscillator
OS05* TosR, External CLKIN Rise, 0 ns LP oscillator
TosF External CLKIN Fall 0 ns XT oscillator
0 ns HS oscillator
* These parameters are characterized but not tested.
Data in Typ column is at 3.0V, 25C unless otherwise stated. These parameters are for design guidance only and are not
tested.
Note 1: Instruction cycle period (TCY) equals four times the input oscillator time base period. All specified values are based on
characterization data for that particular oscillator type under standard operating conditions with the device executing code.
Exceeding these specified limits may result in an unstable oscillator operation and/or higher than expected current con-
sumption. All devices are tested to operate at min values with an external clock applied to OSC1 pin. When an external
clock input is used, the max cycle time limit is DC (no clock) for all devices.
MFINTOSC
Wake-up from Sleep Start-up Time 20 30 s
*These parameters are characterized but not tested.
Data in Typ column is at 3.0V, 25C unless otherwise stated. These parameters are for design guidance only and are not
tested.
Note 1: Instruction cycle period (TCY) equals four times the input oscillator time base period. All specified values are based on
characterization data for that particular oscillator type under standard operating conditions with the device executing code.
Exceeding these specified limits may result in an unstable oscillator operation and/or higher than expected current con-
sumption. All devices are tested to operate at min values with an external clock applied to the OSC1 pin. When an exter-
nal clock input is used, the max cycle time limit is DC (no clock) for all devices.
2: To ensure these oscillator frequency tolerances, VDD and VSS must be capacitively decoupled as close to the device as
possible. 0.1 F and 0.01 F values in parallel are recommended.
3: By design.
FOSC
OS11 OS12
OS20
CLKOUT OS21
OS19 OS16 OS18
OS13 OS17
I/O pin
(Input)
OS15 OS14
I/O pin Old Value New Value
(Output)
OS18, OS19
FIGURE 29-8: RESET, WATCHDOG TIMER, OSCILLATOR START-UP TIMER AND POWER-UP
TIMER TIMING
VDD
MCLR
30
Internal
POR
33
PWRT
Time-out 32
OSC
Start-Up Time
Internal Reset(1)
Watchdog Timer
Reset(1)
31
34
34
I/O pins
VDD
VBOR and VHYST
VBOR
37
Reset
33(1)
(due to BOR)
T0CKI
40 41
42
T1CKI
45 46
47 49
TMR0 or
TMR1
CC01 CC02
CC03
BSF ADCON0, GO
1 TCY
AD134 (TOSC/2(1))
AD131
Q4
AD130
A/D CLK
A/D Data 7 6 5 4 3 2 1 0
ADIF 1 TCY
GO DONE
Sampling Stopped
Sample AD132
Note 1: If the A/D clock source is selected as RC, a time of TCY is added before the A/D clock starts. This allows the
SLEEP instruction to be executed.
BSF ADCON0, GO
AD134 (TOSC/2 + TCY(1)) 1 TCY
AD131
Q4
AD130
A/D CLK
A/D Data 7 6 5 4 3 2 1 0
ADIF 1 TCY
GO DONE
Note 1: If the A/D clock source is selected as RC, a time of TCY is added before the A/D clock starts. This allows the
SLEEP instruction to be executed.
Param
Sym. Characteristics Min. Typ. Max. Units Comments
No.
CM01 VIOFF Input Offset Voltage 7.5 60 mV
CM02 VICM Input Common Mode Voltage 0 VDD V
CM03 CMRR Common Mode Rejection Ratio 50 dB
CM04 TRESP Response Time 150 400 ns Note 1
CM05 TMC2OV Comparator Mode Change to 10 s
Output Valid*
CM06 CHYSTER Comparator Hysterisis 65 mV
* These parameters are characterized but not tested.
Note 1: Response time measured with one comparator input at VDD/2, while the other input transitions
from VSS to VDD.
Param
Sym. Characteristics Min. Typ. Max. Units Comments
No.
DAC01* CLSB Step Size(2) VDD/32 V
DAC02* CACC Absolute Accuracy 1/2 LSb
DAC03* CR Unit Resistor Value (R) TBD
DAC04* CST Settling Time(1) 10 s
* These parameters are characterized but not tested.
Legend: TBD = To Be Determined
Note 1: Settling time measured while DACR<4:0> transitions from 0000 to 1111.
CK
US121 US121
DT
US120 US122
CK
US125
DT
US126
SSx
SP70
SCKx
(CKP = 0)
SP71 SP72
SP78 SP79
SCKx
(CKP = 1)
SP79 SP78
SP80
SP75, SP76
SP74
SP73
SSx
SP81
SCKx
(CKP = 0)
SP71 SP72
SP79
SP73
SCKx
(CKP = 1)
SP80
SP78
SP75, SP76
SP74
SSx
SP70
SCKx SP83
(CKP = 0)
SP71 SP72
SP78 SP79
SCKx
(CKP = 1)
SP79 SP78
SP80
SP74
SP73
SP82
SSx
SP70
SCKx SP83
(CKP = 0)
SP71 SP72
SCKx
(CKP = 1)
SP80
SP77
SP75, SP76
SDIx
MSb In bit 6 - - - -1 LSb In
SP74
SCLx
SP91 SP93
SP90 SP92
SDAx
Start Stop
Condition Condition
SCLx
SP90
SP106
SP107
SP91 SP92
SDAx
In
SP110
SP109
SP109
SDAx
Out
VCTH
VCTL
ISRC ISNK
Enabled Enabled
XXXXXXXXXXXXXXXXX PIC16F1826-I/P
XXXXXXXXXXXXXXXXX 0910017
YYWWNNN
XXXXXXXXXXXX PIC16C1826-I
XXXXXXXXXXXX /SO
XXXXXXXXXXXX 0910017
YYWWNNN
XXXXXXXXXXX PIC16F1827
XXXXXXXXXXX -I/SS
YYWWNNN 0910017
XXXXXXXX 16F1827
XXXXXXXX /ML
YYWWNNN 0910017
Note: In the event the full Microchip part number cannot be marked on one line, it will
be carried over to the next line, thus limiting the number of available
characters for customer-specific information.
* Standard PICmicro device marking consists of Microchip part number, year code, week code and
traceability code. For PICmicro device marking beyond this, certain price adders apply. Please check
with your Microchip Sales Office. For QTP devices, any special marking adders are included in QTP
price.
3
&'
!&" &4# *!(!!&
4%&
&#&
&&255***'
'54
NOTE 1
E1
1 2 3
D
A A2
L c
A1
b1
b e eB
6&! 7,8.
'!
9'&! 7 7: ;
7"')
%! 7 <
& 1,
&
& = =
##4
4!! -
1!&
& = =
"# &
"# >#& . - - -
##4>#& . <
: 9& <<
&
& 9 -
9#
4!! <
6 9#>#& ) ?
9
* 9#>#& ) <
:
*+ 1 = = -
!"#$%&" ' ()"&'"!&)
&#*&&&#
+%&, & !&
- '!
!#.#
&"#'
#%!
& "!
!
#%!
& "!
!!
&$#/ !#
'!
#&
.0
1,2 1!'!
&$& "!
**&
"&&
!
* ,1
! "
!" #$ %&' !"(
3
&'
!&" &4# *!(!!&
4%&
&#&
&&255***'
'54
E1
NOTE 1
1 2 3
e
b
h
h
c
A A2
A1 L
L1
& I B = <B
9#
4!! = --
9#>#& ) - =
# %&
D B = B
# %&1
&&
' E B = B
!"#$%&" ' ()"&'"!&)
&#*&&&#
+%&, & !&
- '!
!#.#
&"#'
#%!
& "!
!
#%!
& "!
!!
&$#'' !#
'!
#&
.0
1,2 1!'!
&$& "!
**&
"&&
!
.32 % '!
("!"*&
"&&
(%
%
'&
"
!!
* ,1
)
!*+, ! "
!! '& !!"
3
&'
!&" &4# *!(!!&
4%&
&#&
&&255***'
'54
D
N
E1
NOTE 1
1 2
e
b
c
A A2
A1
L1 L
& B B <B
9#>#& ) = -<
!"#$%&" ' ()"&'"!&)
&#*&&&#
'!
!#.#
&"#'
#%!
& "!
!
#%!
& "!
!!
&$#'' !#
- '!
#&
.0
1,2 1!'!
&$& "!
**&
"&&
!
.32 % '!
("!"*&
"&&
(%
%
'&
"
!!
* ,1
)
- .
$
,/ 0 121 -.
3
* &'' (
/
*
3
&'
!&" &4# *!(!!&
4%&
&#&
&&255***'
'54
D D2
EXPOSED
PAD
E
b
E2
2 2
1 1 K
N N
NOTE 1 L
TOP VIEW BOTTOM VIEW
A3 A1
)
- .
$
,/ 0 121 -.
3
* &'' (
/
*
3
&'
!&" &4# *!(!!&
4%&
&#&
&&255***'
'54
Note: For the most current package drawings, please see the Microchip Packaging Specification located at
http://www.microchip.com/packaging
Note: For the most current package drawings, please see the Microchip Packaging Specification located at
http://www.microchip.com/packaging
W
Wake-up on Break ............................................................ 303
Wake-up Using Interrupts ................................................... 98
Watchdog Timer (WDT) ...................................................... 76
Modes ....................................................................... 100
Specifications............................................................ 356
WCOL ....................................................... 263, 266, 268, 270
WCOL Status Flag .................................... 263, 266, 268, 270
WDTCON Register ........................................................... 101
WPUB Register ......................................................... 119, 125
Write Protection .................................................................. 51
WWW Address.................................................................. 394
WWW, On-Line Support ....................................................... 7
From: Name
Company
Address
City / State / ZIP / Country
Telephone: (_______) _________ - _________ FAX: (______) _________ - _________
Application (optional):
Would you like a reply? Y N
Questions:
2. How does this document meet your hardware and software development needs?
3. Do you find the organization of this document easy to follow? If not, why?
4. What additions to the document do you think would enhance the structure and subject?
5. What deletions from the document could be made without affecting the overall usefulness?
03/26/09