-
PIC18(L)F25/26K8328-Pin, Low-Power, High-Performance
Microcontrollers
with CAN Technology
DescriptionThe PIC18(L)FXXK83 is a full-featured CAN product
family that can be used in automotive and industrial
applications.The multitude of communication peripherals found on
the product family, such as CAN, SPI, two I2Cs, two UARTs, LIN,DMX,
and DALI can handle a wide range of wired and wireless (using
external modules) communication protocols forintelligent
applications. This family includes a 12-bit ADC with Computation
(ADC2) extensions for automated signalanalysis to reduce the
complexity of the application. This, combined with the Core
Independent Peripherals integrationcapabilities, enables functions
for motor control, power supply, sensor, signal and user interface
applications.
Core Features• C Compiler Optimized RISC Architecture• Operating
Speed:
- Up to 64 MHz clock operation- 62.5 ns minimum instruction
cycle
• Two Direct Memory Access (DMA) Controllers:- Data transfers to
SFR/GPR spaces from
either Program Flash Memory, Data EEPROM or SFR/GPR spaces
- User-programmable source and destination sizes
- Hardware and software-triggered data transfers
• System Bus Arbiter with User-Configurable Priorities for
Scanner and DMA1/DMA2 with respect to the main line and interrupt
execution
• Vectored Interrupt Capability:- Selectable high/low priority-
Fixed interrupt latency- Programmable vector table base address
• 31-Level Deep Hardware Stack• Low-Current Power-on Reset
(POR)• Configurable Power-up Timer (PWRT)• Brown-Out Reset (BOR)•
Low-Power BOR (LPBOR) Option• Windowed Watchdog Timer (WWDT):
- Variable prescaler selection- Variable window size selection-
Configurable in hardware or software
Memory• Up to 64 KB Flash Program Memory• Up to 4 KB Data SRAM
Memory• Up to 1 KB Data EEPROM• Memory Access Partition (MAP):
- Configurable boot and app region sizes with individual
write-protections
• Programmable Code Protection• Device Information Area (DIA)
stores:
- Unique IDs and Device IDs- Temp Sensor factory-calibrated
data- Fixed Voltage Reference calibrated data
• Device Configuration Information (DCI) stores:- Erase row
size- Number of write latches per row- Number of user rows- Data
EEPROM memory size- Pin count
Operating Characteristics• Operating Voltage Range:
- 1.8V to 3.6V (PIC18LF25/26K83)- 2.3V to 5.5V
(PIC18F25/26K83)
• Temperature Range:- Industrial: -40°C to 85°C- Extended: -40°C
to 125°C
Power-Saving Functionality• DOZE mode: Ability to run CPU core
slower than
the system clock• IDLE mode: Ability to halt CPU core while
internal
peripherals continue operating• SLEEP mode: Lowest power
consumption• Peripheral Module Disable (PMD):
- Ability to disable unused peripherals to minimize power
consumption
2017-2020 Microchip Technology Inc. DS40001943C-page 1
-
PIC18(L)F25/26K83
eXtreme Low-Power (XLP) Features• Sleep mode: 60 nA @ 1.8V,
typical • Windowed Watchdog Timer: 720 nA @ 1.8V,
typical • Secondary Oscillator: 580 nA @ 32 kHz • Operating
Current:
- 4 uA @ 32 kHz, 1.8V, typical - 45 uA/MHz @ 1.8V, typical
Digital Peripherals• Three 8-Bit Timers (TMR2/4/6) with
Hardware
Limit Timer (HLT):- Hardware monitoring and Fault detection
• Four 16-Bit Timers (TMR0/1/3/5)• Four Configurable Logic Cell
(CLC):
- Integrated combinational and sequential logic• Three
Complementary Waveform Generators
(CWGs):- Rising and falling edge dead-band control- Full-bridge,
half-bridge, 1-channel drive- Multiple signal sources- Programmable
dead band- Fault-shutdown input
• Four Capture/Compare/PWM (CCP) modules• Four 10-bit
Pulse-Width Modulators (PWMs)• Numerically Controlled Oscillator
(NCO):
- Generates true linear frequency control- High resolution using
20-bit accumulator and
20-bit increment values• DSM: Data Signal Modulator:
- Multiplex two carrier clocks, with glitch pre-vention
feature
- Multiple sources for each carrier• Programmable CRC with
Memory Scan:
- Reliable data/program memory monitoring for fail-safe
operation (e.g., Class B)
- Calculate CRC over any portion of program memory or data
EEPROM
• Two UART Modules:- Modules are asynchronous and compatible
with RS-232 and RS-485- Support LIN Master and Slave, DMX
mode,
DALI Gear and Device protocols- Automatic and user-timed BREAK
period
generation- DMA Compatible- Automatic checksums- Programmable 1,
1.5, and two Stop bits- Wake-up on BREAK reception
• One SPI module:- Configurable length bytes- Configurable
length data packets- Receive-without-transmit option-
Transmit-without-receive option- Transfer byte counter- Separate
Transmit and Receive Buffers with
2-byte FIFO and DMA capabilities• CAN module:
- Conforms to CAN 2.0B Active Specification- Three operating
modes: Legacy (compatible
with existing PIC18CXX8/FXX8 CAN modules), Enhanced mode, and
FIFO mode.
- Message bit rates up to 1 Mbps- DeviceNet data byte filter
support- Six programmable receive/transmit buffers- Three dedicated
transmit buffers- Two dedicated receive buffers- 16 Full, 29-bit
acceptance filters with dynamic
association- Three full, 29-bit acceptance masks- Automatic
remote frame handling- Advanced error management features.
• Two I2C modules, SMBus, PMBus™ compatible:- Dedicated Address,
Transmit and Receive
buffers- Bus Collision Detection with arbitration- Bus time-out
detection and handling- Multi-Master mode- Separate Transmit and
Receive Buffers with
2-byte FIFO and DMA capabilities- I2C, SMBus 2.0 and SMBus 3.0,
and 1.8V
input level selections- Supports Standard-mode (100 kHz),
Fast-
mode (400 kHz) and Fast-mode plus (1 MHz) modes of operation
• Device I/O Port Features:- 25 I/O pins- One input-only pin
(RE3)- Individually programmable I/O direction,
open-drain, slew rate, weak pull-up control-
Interrupt-on-change- Three External Interrupt Pins
• Peripheral Pin Select (PPS):- Enables pin mapping of digital
I/O
• Two Signal Measurement Timer (SMT):- 24-bit timer/counter with
prescaler
2017-2020 Microchip Technology Inc. DS40001943C-page 2
-
PIC18(L)F25/26K83
Analog Peripherals• Analog-to-Digital Converter with
Computation
(ADC2): - 12-bit with up to 24 external channels up to
140 ksps- Automated post-processing- Automated math functions on
input signals:
averaging, filter calculations, oversampling and threshold
comparison
- Operates in Sleep- Integrated charge pump for improved
low-
voltage operation• Hardware Capacitive Voltage Divider
(CVD):
- Automates touch sampling and reduces soft-ware size and CPU
usage when touch or proximity sensing is required
- Adjustable sample and hold capacitor array- Two guard ring
output drives
• Temperature Sensor:- Internal connection to ADC- Can be
calibrated for improved accuracy
• Two Comparators:- Low-Power/High-Speed mode - Fixed Voltage
Reference at noninverting
input(s) - Comparator outputs externally accessible
• 5-Bit Digital-to-Analog Converter (DAC):- 5-bit resolution,
rail-to-rail- Positive Reference Selection - Unbuffered I/O pin
output- Internal connections to ADCs and
comparators• Voltage Reference:
- Fixed Voltage Reference with 1.024V, 2.048V and 4.096V output
levels
Flexible Oscillator Structure• High-Precision Internal
Oscillator:
- Selectable frequency range up to 64 MHz- ±1% at calibration
(nominal)
• Low-Power Internal 32 kHz Oscillator(LFINTOSC)
• External 32 kHz Crystal Oscillator (SOCS)• External Oscillator
Block with:
- x4 PLL with external sources- Three crystal/resonator modes up
to 20 MHz- Three external clock modes up to 20 MHz
• Fail-Safe Clock Monitor• Oscillator Start-up Timer (OST):
- Ensures stability of crystal oscillator sources
2017-2020 Microchip Technology Inc. DS40001943C-page 3
-
PIC18(L)F25/26K83
TABLE 1: PIC18(L)FXXK83 FAMILY TYPES
DeviceD
ata
Shee
t Ind
ex
Prog
ram
Fla
sh M
emor
y (K
B)
Dat
a EE
PRO
M (B
)
Dat
a SR
AM
(byt
es)
I/O P
ins
12-b
it A
DC
2 (c
h)
5-bi
t DA
C
Com
para
tor
8-bi
t/ (w
ith H
LT)/1
6-bi
t Tim
er
Win
dow
Wat
chdo
g Ti
mer
(WW
DT)
Sign
al M
easu
rem
ent T
imer
(SM
T)
CC
P/10
-bit
PWM
CW
G
NC
O
CLC
Zero
-Cro
ss D
etec
t
Dire
ct M
emor
y A
cces
s (D
MA
)
Mem
ory
Acc
ess
Part
ition
Vect
ored
Inte
rrup
ts
CA
N
UA
RT
with
Pro
toco
ls
I2C
/SPI
Perip
hera
l Pin
Sel
ect
Perip
hera
l Mod
ule
Dis
able
Deb
ug(1
)
PIC18(L)F25K83 (A) 32 1024 2048 25 24 1 2 3/4 Y Y 4/4 3 1 4 Y 2
Y Y Y 2 2/1 Y Y IPIC18(L)F26K83 (A) 64 1024 4096 25 24 1 2 3/4 Y Y
4/4 3 1 4 Y 2 Y Y Y 2 2/1 Y Y INote 1: I - Debugging integrated on
chip.Data Sheet Index:
A: DS40001943 PIC18(L)F25/26K83 Data Sheet, 28-Pin
Note: For other small form-factor package availability and
marking information, visithttp://www.microchip.com/packaging or
contact your local sales office.
2017-2020 Microchip Technology Inc. DS40001943C-page 4
-
PIC18(L)F25/26K83
Pin Diagrams
TABLE 2: PACKAGESDevice SPDIP SOIC SSOP UQFN QFN
PIC18(L)F25K83 PIC18(L)F26K83 Note 1: Pin details are subject to
change.
PIC
18(L
)F25
K83
1
2
3
4
5
6
78910
VPP/MCLR/RE3
RA0
RA1
RA2RA3RA4RA5
RB6/ICSPCLK
RB5
RB4
RB3RB2RB1RB0VDDVSS
1112
13
14 15
16
1718
1920
28
27
262524232221VSS
RA7RA6
RC0RC1RC2
RC3
RC5
RC4
RC7RC6
RB7/ICSPDAT
Note: See Table 3 for location of all peripheral functions.
28-pin SPDIP, SOIC, SSOP
23
6
1
18192021
1571617
RC
0
54
RB7
/ICSP
DAT
RB6
/ICSP
CLK
RB5
RB4
RB0VDDVSSRC7
RC
6R
C5
RC
4
RE3
/MC
LR/V
PP
RA0
RA1
RA2RA3RA4RA5VSSRA7RA6
RC
1R
C2
RC
3
9 10 138 141211
27 26 2328 222425RB3RB2RB1
PIC18(L)F26K83
Note 1: See Table 3 for location of all peripheral functions.2:
It is recommended that the exposed bottom pad be connected to VSS,
however it must not be the
only VSS connection to the device.
28-pin QFN (6x6x0.9mm), UQFN (4x4x0.5mm)
2017-2020 Microchip Technology Inc. DS40001943C-page 5
-
2017-2020 M
icrochip Technology Inc.D
S40001943C-page 6
PIC18(L)F25/26K
83
PiTA
CLC
NC
O
Clo
ck R
efer
ence
(CLK
R)
ECA
N
Inte
rrup
t-on
Cha
nge
Bas
ic
R CIN0(1) — — — IOCA0 —
R CIN1(1) — — — IOCA1 —
R — — — — IOCA2 —
R — — — — IOCA3 —
R — — — — IOCA4 —
R — — — — IOCA5 —
R — — — — IOCA6 OSC2CLKOUT
R — — — — IOCA7 OSC1CLKIN
R — — — — IOCB0INT0(1)
—
R — — — — IOCB1INT1(1)
—
R — — — — IOCB2INT2(1)
—
R — — — CANRX(1)
IOCB3 —
R CIN2(1) — — — IOCB4 —
R CIN3(1) — — — IOCB5 —
R — — — — IOCB6 ICSPCLK
R — — — — IOCB7 ICSPDAT
R — — — — IOCC0 SOSCO
R — — — — IOCC1 SOSCI
R — — — — IOCC2 —
R — — — — IOCC3 —
No
the other pins (e.g., RA5) will operate, but input logic
levels
n Allocation TablesBLE 3: 28-PIN ALLOCATION TABLE
(PIC18(L)F25/26K83)
I/O
28-P
in S
PDIP
/SO
IC/S
SOP
28-P
in (U
)QFN
AD
C
Volta
ge R
efer
ence
DA
C
Com
para
tors
Zero
Cro
ss D
etec
t
I2C
SPI
UA
RT
DSM
Tim
ers/
SMT
CC
P an
d PW
M
CW
G
A0 2 27 ANA0 — — C1IN0-C2IN0-
— — — — — — — — CL
A1 3 28 ANA1 — — C1IN1-C2IN1-
— — — — — — — — CL
A2 4 1 ANA2 VREF- DAC1OUT1 C1IN0+C2IN0+
— — — — — — — —
A3 5 2 ANA3 VREF+ — C1IN1+ — — — — MD1CARL(1) — — —
A4 6 3 ANA4 — — — — — — — MD1CARH(1) T0CKI(1) — —
A5 7 4 ANA5 — — — — — SS1(1,3) — MD1SRC(1) — — —
A6 10 7 ANA6 — — — — — — — — — — —
A7 9 6 ANA7 — — — — — — — — — — —
B0 21 18 ANB0 — — C2IN1+ ZCD — — — — — CCP4(1) CWG1(1)
B1 22 19 ANB1 — — C1IN3-C2IN3-
— SCL2(1,3,4) — — — — — CWG2(1)
B2 23 20 ANB2 — — — — SDA2(1,3,4) — — — — — CWG3(1)
B3 24 21 ANB3 — — C1IN2-C2IN2-
— — — — — — — —
B4 25 22 ANB4ADACT(1)
— — — — — — — — T5G(1)SMT2WIN(1)
— — CL
B5 26 23 ANB5 — — — — — — — — T1G(1)SMT2SIG(1)
CCP3(1) — CL
B6 27 24 ANB6 — — — — — — CTS2(1) — — — —
B7 28 25 ANB7 — DAC1OUT2 — — — — RX2(1) — T6IN(1) — —
C0 11 8 ANC0 — — — — — — — — T1CKI(1)T3CKI(1)T3G(1)
SMT1WIN(1)
— —
C1 12 9 ANC1 — — — — — — — — SMT1SIG(1) CCP2(1) —
C2 13 10 ANC2 — — — — — — — — T5CKI(1) CCP1(1) —
C3 14 11 ANC3 — — — — SCL1(1) SCK1(1,3) — — T2IN(1) — —
te 1: This is a PPS remappable input signal. The input function
may be moved from the default location shown to one of several
other PORTx pins.2: All output signals shown in this row are PPS
remappable.3: This is a bidirectional signal. For normal module
operation, the firmware should map this signal to the same pin in
both the PPS input and PPS output registers.4: These pins can be
configured for I2C and SMBTM 3.0/2.0 logic levels; the SCLx/SDAx
signals may be assigned to any of the RB1/RB2/RC3/RC4 pins. PPS
assignments to
will be standard TTL/ST as selected by the INLVL register,
instead of the I2C specific or SMBUS input buffer thresholds.
-
2017-2020 M
icrochip Technology Inc.D
S40001943C-page 7
PIC18(L)F25/26K
83
R — — — — IOCC4 —
R — — — — IOCC5 —
R — — — — IOCC6 —
R — — — — IOCC7 —
R — — — — IOCE3 MCLRVPP
V — — — — — —
V — — — — — —
O 1OUT2OUT3OUT4OUT
NCO CLKR CANTX — —
TA
CLC
NC
O
Clo
ck R
efer
ence
(CLK
R)
ECA
N
Inte
rrup
t-on
Cha
nge
Bas
ic
No
the other pins (e.g., RA5) will operate, but input logic
levels
C4 15 12 ANC4 — — — — SDA1(1) SDI1(1) — — — — —
C5 16 13 ANC5 — — — — — — — — T4IN(1) — —
C6 17 14 ANC6 — — — — — — CTS1(1) — — — —
C7 18 15 ANC7 — — — — — — RX1(1) — — — —
E3 1 26 — — — — — — — — — — — —
DD 20 17 — — — — — — — — — — — —
SS 8,19
5,16
— — — — — — — — — — — —
UT(2) — — ADGRDAADGRDB
— — C1OUTC2OUT
— SDA1SCL1SDA2SCL2
SS1SCK1SDO1
DTR1RTS1TX1
DTR2RTS2TX2
DSM TMR0 CCP1CCP2CCP3CCP4
PWM5OUTPWM6OUTPWM7OUTPWM8OUT
CWG1ACWG1BCWG1CCWG1DCWG2ACWG2BCWG2CCWG2DCWG3ACWG3BCWG3CCWG3D
CLCCLCCLCCLC
BLE 3: 28-PIN ALLOCATION TABLE (PIC18(L)F25/26K83)
(CONTINUED)I/O
28-P
in S
PDIP
/SO
IC/S
SOP
28-P
in (U
)QFN
AD
C
Volta
ge R
efer
ence
DA
C
Com
para
tors
Zero
Cro
ss D
etec
t
I2C
SPI
UA
RT
DSM
Tim
ers/
SMT
CC
P an
d PW
M
CW
G
te 1: This is a PPS remappable input signal. The input function
may be moved from the default location shown to one of several
other PORTx pins.2: All output signals shown in this row are PPS
remappable.3: This is a bidirectional signal. For normal module
operation, the firmware should map this signal to the same pin in
both the PPS input and PPS output registers.4: These pins can be
configured for I2C and SMBTM 3.0/2.0 logic levels; the SCLx/SDAx
signals may be assigned to any of the RB1/RB2/RC3/RC4 pins. PPS
assignments to
will be standard TTL/ST as selected by the INLVL register,
instead of the I2C specific or SMBUS input buffer thresholds.
-
PIC18(L)F25/26K83
Table of Contents1.0 Device Overview
........................................................................................................................................................................
102.0 Guidelines for Getting Started with PIC18(L)F25/26K83
Microcontrollers
.................................................................................
133.0 PIC18
CPU.................................................................................................................................................................................
164.0 Memory Organization
.................................................................................................................................................................
235.0 Device Configuration
..................................................................................................................................................................
556.0 Resets
........................................................................................................................................................................................
717.0 Oscillator Module (with Fail-Safe Clock Monitor)
.......................................................................................................................
828.0 Reference Clock Output Module
..............................................................................................................................................
1019.0 Interrupt Controller
...................................................................................................................................................................
10510.0 Power-Saving Operation Modes
..............................................................................................................................................
16111.0 Windowed Watchdog Timer (WWDT)
......................................................................................................................................
16812.0 8x8 Hardware
Multiplier............................................................................................................................................................
17713.0 Nonvolatile Memory (NVM)
Control..........................................................................................................................................
17914.0 Cyclic Redundancy Check (CRC) Module with Memory
Scanner............................................................................................
20315.0 Direct Memory Access (DMA)
..................................................................................................................................................
21816.0 I/O Ports
...................................................................................................................................................................................
25017.0 Peripheral Pin Select (PPS) Module
........................................................................................................................................
26318.0 Interrupt-on-Change
.................................................................................................................................................................
27119.0 Peripheral Module Disable
(PMD)............................................................................................................................................
27520.0 Timer0 Module
.........................................................................................................................................................................
28421.0 Timer1/3/5 Module with Gate
Control.......................................................................................................................................
29022.0 Timer2/4/6 Module
...................................................................................................................................................................
30523.0 Capture/Compare/PWM Module
..............................................................................................................................................
32724.0 Pulse-Width Modulation (PWM)
...............................................................................................................................................
34125.0 Signal Measurement Timer
(SMTX).........................................................................................................................................
34826.0 Complementary Waveform Generator (CWG) Module
............................................................................................................
39227.0 Configurable Logic Cell
(CLC)..................................................................................................................................................
42028.0 Numerically Controlled Oscillator (NCO) Module
.....................................................................................................................
43529.0 Zero-Cross Detection (ZCD)
Module........................................................................................................................................
44530.0 Data Signal Modulator (DSM)
Module......................................................................................................................................
45031.0 Universal Asynchronous Receiver Transmitter (UART) With
Protocol Support
.......................................................................
46132.0 Serial Peripheral Interface (SPI)
Module..................................................................................................................................
49833.0 I2C Module
...............................................................................................................................................................................
53034.0 CAN Module
.............................................................................................................................................................................
58335.0 Fixed Voltage Reference (FVR)
..............................................................................................................................................
65036.0 Temperature Indicator Module
.................................................................................................................................................
65237.0 Analog-to-Digital Converter with Computation (ADC2) Module
...............................................................................................
65438.0 5-Bit Digital-to-Analog Converter (DAC)
Module......................................................................................................................
69239.0 Comparator Module
.................................................................................................................................................................
69640.0 High/Low-Voltage Detect
(HLVD).............................................................................................................................................
70541.0 In-Circuit Serial Programming™ (ICSP™)
...............................................................................................................................
71342.0 Instruction Set Summary
..........................................................................................................................................................
71543.0 Register
Summary....................................................................................................................................................................
76944.0 Development
Support...............................................................................................................................................................
79045.0 Electrical
Specifications............................................................................................................................................................
79446.0 DC and AC Characteristics Graphs and
Tables.......................................................................................................................
82547.0 Packaging
Information..............................................................................................................................................................
826The Microchip Website
.....................................................................................................................................................................
841Customer Change Notification Service
.............................................................................................................................................
841Customer Support
.............................................................................................................................................................................
841Product Identification System
...........................................................................................................................................................
842
2017-2020 Microchip Technology Inc. DS40001943C-page 8
-
PIC18(L)F25/26K83
TO OUR VALUED CUSTOMERSIt is our intention to provide our valued
customers with the best documentation possible to ensure successful
use of your Microchipproducts. To this end, we will continue to
improve our publications to better suit your needs. Our
publications will be refined andenhanced as new volumes and updates
are introduced. If you have any questions or comments regarding
this publication, please contact the Marketing Communications
Department viaE-mail at [email protected]. We welcome your
feedback.
Most Current Data SheetTo obtain the most up-to-date version of
this data sheet, please register at our Worldwide Website at:
http://www.microchip.comYou can determine the version of a data
sheet by examining its literature number found on the bottom
outside corner of any page.The last character of the literature
number is the version number, (e.g., DS30000000A is version A of
document DS30000000).
ErrataAn errata sheet, describing minor operational differences
from the data sheet and recommended workarounds, may exist for
currentdevices. As device/documentation issues become known to us,
we will publish an errata sheet. The errata will specify the
revisionof silicon and revision of document to which it applies.To
determine if an errata sheet exists for a particular device, please
check with one of the following:• Microchip’s Worldwide Website;
http://www.microchip.com• Your local Microchip sales office (see
last page)When contacting a sales office, please specify which
device, revision of silicon and data sheet (include literature
number) you areusing.
Customer Notification SystemRegister on our website at
www.microchip.com to receive the most current information on all of
our products.
2017-2020 Microchip Technology Inc. DS40001943C-page 9
mailto:[email protected]://www.microchip.comhttp://www.microchip.com
-
PIC18(L)F25/26K83
1.0 DEVICE OVERVIEWThis document contains device specific
information forthe following devices:
This family offers the advantages of all PIC18 microcontrollers
– namely, high computational performance at an economical price –
with the addition of high-endurance Program Flash Memory, Universal
Asynchronous Receiver Transmitter (UART), Serial Peripheral
Interface (SPI), Inter-integrated Circuit (I2C), Direct Memory
Access (DMA), Configurable Logic Cells (CLC), Signal Measurement
Timer (SMT), Numerically Controlled Oscillator (NCO), and
Analog-to-Digital Converter with Computation (ADC2).
1.1 New Features• Direct Memory Access Controller: The
Direct
Memory Access (DMA) Controller is designed to service data
transfers between different memory regions directly without
intervention from the CPU. By eliminating the need for
CPU-intensive management of handling interrupts intended for data
transfers, the CPU now can spend more time on other tasks.
• Vectored Interrupt Controller: The Vectored Interrupt
Controller module reduces the numerous peripheral interrupt request
signals to a single interrupt request signal to the CPU. It
assembles all of the interrupt request signals and resolves the
interrupts based on both a fixed natural order priority and a
user-assigned priority, thereby eliminating scanning of interrupt
sources.
• Universal Asynchronous Receiver Transmitter: The Universal
Asynchronous Receiver Transmitter (UART) module is a serial I/O
communications peripheral. It contains all the clock generators,
shift registers and data buffers necessary to perform an input or
output serial data transfer, independent of device program
execution. The UART can be configured as a full-duplex asynchronous
system or one of several automated protocols. Full-Duplex mode is
useful for communications with peripheral systems, with
DMX/DALI/LIN support.
• Serial Peripheral Interface: The Serial Periph-eral Interface
(SPI) module is a synchronous serial data communication bus that
operates in Full-Duplex mode. Devices communicate in a master/slave
environment where the master device initiates the communication. A
slave device is controlled through a Chip Select known as Slave
Select. Example slave devices include serial EEPROMs, shift
registers, display drivers, A/D converters, or another PIC®
device.
• I2C Module: The I2C module provides a synchro-nous interface
between the microcontroller and other I2C-compatible devices using
the two-wire I2C serial bus. Devices communicate in a mas-ter/slave
environment. The I2C bus specifies two signal connections – Serial
Clock (SCL) and Serial Data (SDA). Both the SCL and SDA
con-nections are bidirectional open-drain lines, each requiring
pull-up resistors to the supply voltage.
• 12-bit A/D Converter with Computation: This module
incorporates programmable acquisition time, allowing for a channel
to be selected and a conversion to be initiated without waiting for
a sampling period and thus, reduce code overhead. It has a new
module called ADC2 with computation features, which provides a
digital filter and threshold interrupt functions.
1.2 Details on Individual Family Members
Devices in the PIC18(L)F25/26K83 family are availablein 28-pin
packages. The block diagram for this deviceis shown in Figure
3-1.The similarities and differences among the devices arelisted in
the PIC18(L)F25/26K83 Family Types Table(page 4). The pinouts for
all devices are listed inTable 3.
• PIC18F25K83 • PIC18LF25K83• PIC18F26K83 • PIC18LF26K83
2017-2020 Microchip Technology Inc. DS40001943C-page 10
-
PIC18(L)F25/26K83
TABLE 1-1: DEVICE FEATURESFeatures PIC18(L)F25K83
PIC18(L)F26K83
Program Memory (Bytes) 32768 65536Program Memory (Instructions)
16384 32768Data Memory (Bytes) 2048 4096Data EEPROM Memory (Bytes)
1024 1024
Packages
28-pin SPDIP28-pin SOIC28-pin SSOP28-pin QFN
28-pin UQFN
28-pin SPDIP28-pin SOIC28-pin SSOP28-pin QFN
28-pin UQFNI/O Ports A,B,C,E(1) A,B,C,E(1)
12-Bit Analog-to-Digital Conversion Module (ADC2) with
Computation Accelerator
5 internal24 external
5 internal24 external
Capture/Compare/PWM Modules (CCP) 410-Bit Pulse-Width Modulator
(PWM) 4Timers (16-/8-bit) 4/3Serial Communications 2 UARTs with
DMX/DALI/LIN, 2 I2C, 1 SPIComplementary Waveform Generator (CWG)
3Zero-Cross Detect (ZCD) 1Data Signal Modulator (DSM) 1Signal
Measurement Timer (SMT) 25-bit Digital to Analog Converter (DAC)
1Numerically Controlled Oscillator (NCO) 1Comparator Module 2Direct
Memory Access (DMA) 2Configurable Logic Cell (CLC) 4Control Area
Network (CAN) YesPeripheral Module Disable (PMD) Yes16-bit CRC with
Scanner YesProgrammable High/Low-Voltage Detect (HLVD) Yes
Resets (and Delays)
POR, Programmable BOR,RESET Instruction,
Stack Overflow,Stack Underflow(PWRT, OST),
MCLR, WDT, MEMV
Instruction Set 81 Instructions;87 with Extended Instruction Set
enabledMaximum Operating Frequency 64 MHz
Note 1: PORTE contains the single RE3 input-only pin.
2017-2020 Microchip Technology Inc. DS40001943C-page 11
-
PIC18(L)F25/26K83
1.3 Register and Bit naming
conventions
1.3.1 REGISTER NAMESWhen there are multiple instances of the
sameperipheral in a device, the peripheral control registerswill be
depicted as the concatenation of a peripheralidentifier, peripheral
instance, and control identifier.The control registers section will
show just oneinstance of all the register names with an ‘x’ in the
placeof the peripheral instance number. This namingconvention may
also be applied to peripherals whenthere is only one instance of
that peripheral in thedevice to maintain compatibility with other
devices inthe family that contain more than one.
1.3.2 BIT NAMESThere are two variants for bit names:• Short
name: Bit function abbreviation• Long name: Peripheral abbreviation
+ short name
1.3.2.1 Short Bit NamesShort bit names are an abbreviation for
the bit function.For example, some peripherals are enabled with
theEN bit. The bit names shown in the registers are theshort name
variant.Short bit names are useful when accessing bits in
Cprograms. The general format for accessing bits by theshort name
is RegisterNamebits.ShortName. Forexample, the enable bit, EN, in
the T0CON0 registercan be set in C programs with the
instructionT0CON0bits.EN = 1.Short names are generally not useful
in assemblyprograms because the same name may be used bydifferent
peripherals in different bit positions. When thisoccurs, during the
include file generation, all instancesof that short bit name are
appended with an underscoreplus the name of the register in which
the bit resides toavoid naming contentions.
1.3.2.2 Long Bit NamesLong bit names are constructed by adding a
peripheralabbreviation prefix to the short name. The prefix
isunique to the peripheral thereby making every long bitname
unique. The long bit name for the Timer0 enablebit is the Timer0
prefix, T0, appended with the enablebit short name, EN, resulting
in the unique bit nameT0EN.Long bit names are useful in both C and
assembly pro-grams. For example, in C the T0CON0 enable bit canbe
set with the T0EN = 1 instruction. In assembly, thisbit can be set
with the BSF T0CON0,T0EN instruction.
1.3.2.3 Bit FieldsBit fields are two or more adjacent bits in
the sameregister. For example, the four Least Significant bits
ofthe T0CON0 register contain the output prescalerselect bits. The
short name for this field is OUTPS andthe long name is T0OUTPS. Bit
field access is onlypossible in C programs. The following
exampledemonstrates a C program instruction for setting theTimer0
output prescaler to the 1:6 Postscaler:T0CON0bits.OUTPS =
0x5;Individual bits in a bit field can also be accessed withlong
and short bit names. Each bit is the field nameappended with the
number of the bit position within thefield. For example, the Most
Significant mode bit hasthe short bit name OUTPS3. The following
two exam-ples demonstrate assembly program sequences forsetting the
Timer0 output prescaler to 1:6 Postscaler:Example 1:MOVLW ~(1
-
PIC18(L)F25/26K83
2.0 GUIDELINES FOR GETTING
STARTED WITH PIC18(L)F25/26K83 MICROCONTROLLERS
2.1 Basic Connection RequirementsGetting started with the
PIC18(L)F25/26K83 family of8-bit microcontrollers requires
attention to a minimalset of device pin connections before
proceeding withdevelopment. The following pins must always be
connected:• All VDD and VSS pins (see Section 2.2 “Power
Supply Pins”)• MCLR pin (see Section 2.3 “Master Clear
(MCLR)
Pin”) These pins must also be connected if they are beingused in
the end application:• ICSPCLK/ICSPDAT pins used for In-Circuit
Serial
Programming™ (ICSP™) and debugging purposes (see Section 2.4
“ICSP™ Pins”)
• OSCI and OSCO pins when an external oscillator source is used
(see Section 2.5 “External Oscillator Pins”)
Additionally, the following pins may be required:• VREF+/VREF-
pins are used when external voltage
reference for analog modules is implementedThe minimum mandatory
connections are shown inFigure 2-1.
FIGURE 2-1: RECOMMENDED MINIMUM CONNECTIONS
2.2 Power Supply Pins
2.2.1 DECOUPLING CAPACITORSThe use of decoupling capacitors on
every pair ofpower supply pins (VDD and VSS) is required. Consider
the following criteria when using decouplingcapacitors:• Value and
type of capacitor: A 0.1 F (100 nF),
10-20V capacitor is recommended. The capacitor should be a
low-ESR device, with a resonance frequency in the range of 200 MHz
and higher. Ceramic capacitors are recommended.
• Placement on the printed circuit board: The decoupling
capacitors should be placed as close to the pins as possible. It is
recommended to place the capacitors on the same side of the board
as the device. If space is constricted, the capacitor can be placed
on another layer on the PCB using a via; however, ensure that the
trace length from the pin to the capacitor is no greater than 0.25
inch (6 mm).
• Handling high-frequency noise: If the board is experiencing
high-frequency noise (upward of tens of MHz), add a second ceramic
type capaci-tor in parallel to the above described decoupling
capacitor. The value of the second capacitor can be in the range of
0.01 F to 0.001 F. Place this second capacitor next to each primary
decoupling capacitor. In high-speed circuit designs, consider
implementing a decade pair of capacitances as close to the power
and ground pins as possible (e.g., 0.1 F in parallel with 0.001
F).
• Maximizing performance: On the board layout from the power
supply circuit, run the power and return traces to the decoupling
capacitors first, and then to the device pins. This ensures that
the decoupling capacitors are first in the power chain. Equally
important is to keep the trace length between the capacitor and the
power pins to a minimum, thereby reducing PCB trace inductance.
2.2.2 TANK CAPACITORSOn boards with power traces running longer
thansix inches in length, it is suggested to use a tank capac-itor
for integrated circuits, including microcontrollers, tosupply a
local power source. The value of the tankcapacitor should be
determined based on the traceresistance that connects the power
supply source tothe device, and the maximum current drawn by
thedevice in the application. In other words, select the
tankcapacitor so that it meets the acceptable voltage sag atthe
device. Typical values range from 4.7 F to 47 F.
C1
R1
Rev. 10-000249A9/1/2015
VDD
PIC18(L)Fxxxxx
R2MCLR
C2
VDD
Vss
Vss
Key (all values are recommendations):C1 and C2 : 0.1 �F, 20V
ceramicR1: 10 kΩR2: 100Ω to 470Ω
2017-2020 Microchip Technology Inc. DS40001943C-page 13
-
PIC18(L)F25/26K83
2.3 Master Clear (MCLR) PinThe MCLR pin provides two specific
devicefunctions: Device Reset, and Device Programmingand Debugging.
If programming and debugging arenot required in the end
application, a directconnection to VDD may be all that is required.
Theaddition of other components, to help increase theapplication’s
resistance to spurious Resets fromvoltage sags, may be beneficial.
A typicalconfiguration is shown in Figure 2-1. Other circuitdesigns
may be implemented, depending on theapplication requirements.During
programming and debugging, the resistanceand capacitance that can
be added to the pin mustbe considered. Device programmers and
debuggersdrive the MCLR pin. Consequently, specific voltagelevels
(VIH and VIL) and fast signal transitions mustnot be adversely
affected. Therefore, specific valuesof R1 and C1 will need to be
adjusted based on theapplication and PCB requirements. For example,
it isrecommended that the capacitor, C1, be isolatedfrom the MCLR
pin during programming anddebugging operations by using a jumper
(Figure 2-2).The jumper is replaced for normal
run-timeoperations.Any components associated with the MCLR
pinshould be placed within 0.25 inch (6 mm) of the pin.
FIGURE 2-2: EXAMPLE OF MCLR PIN CONNECTIONS
2.4 ICSP™ PinsThe ICSPCLK and ICSPDAT pins are used for
In-Cir-cuit Serial Programming™ (ICSP™) and debuggingpurposes. It
is recommended to keep the trace lengthbetween the ICSP connector
and the ICSP pins on thedevice as short as possible. If the ICSP
connector isexpected to experience an ESD event, a series
resistoris recommended, with the value in the range of a fewtens of
ohms, not to exceed 100Ω. Pull-up resistors, series diodes and
capacitors on theICSPCLK and ICSPDAT pins are not recommended
asthey will interfere with the programmer/debugger com-munications
to the device. If such discrete componentsare an application
requirement, they should beremoved from the circuit during
programming anddebugging. Alternatively, refer to the AC/DC
character-istics and timing requirements information in
therespective device Flash programming specification forinformation
on capacitive loading limits, and pin inputvoltage high (VIH) and
input low (VIL) requirements.For device emulation, ensure that the
“CommunicationChannel Select” (i.e., ICSPCLK/ICSPDAT
pins),programmed into the device, matches the physicalconnections
for the ICSP to the Microchip debugger/emulator tool.For more
information on available Microchipdevelopment tools connection
requirements, refer toSection 44.0 “Development Support”.
Note 1: R1 10 k is recommended. A suggestedstarting value is 10
k. Ensure that theMCLR pin VIH and VIL specifications are met.
2: R2 470 will limit any current flowing intoMCLR from the
external capacitor, C1, in theevent of MCLR pin breakdown, due
toElectrostatic Discharge (ESD) or ElectricalOverstress (EOS).
Ensure that the MCLR pinVIH and VIL specifications are met.
C1
R2R1
VDD
MCLR
JPPIC18(L)F25/26K83
2017-2020 Microchip Technology Inc. DS40001943C-page 14
-
PIC18(L)F25/26K83
2.5 External Oscillator PinsMany microcontrollers have options
for at least twooscillators: a high-frequency primary oscillator
and alow-frequency secondary oscillator (refer to Section7.0
“Oscillator Module (with Fail-Safe ClockMonitor)” for details). The
oscillator circuit should be placed on the sameside of the board as
the device. Place the oscillatorcircuit close to the respective
oscillator pins with nomore than 0.5 inch (12 mm) between the
circuitcomponents and the pins. The load capacitors shouldbe placed
next to the oscillator itself, on the same sideof the board. Use a
grounded copper pour around the oscillator cir-cuit to isolate it
from surrounding circuits. Thegrounded copper pour should be routed
directly to theMCU ground. Do not run any signal traces or
powertraces inside the ground pour. Also, if using a
two-sidedboard, avoid any traces on the other side of the
boardwhere the crystal is placed. Layout suggestions are shown in
Figure 2-3. In-linepackages may be handled with a single-sided
layoutthat completely encompasses the oscillator pins.
Withfine-pitch packages, it is not always possible to com-pletely
surround the pins and components. A suitablesolution is to tie the
broken guard sections to a mirroredground layer. In all cases, the
guard trace(s) must bereturned to ground.In planning the
application’s routing and I/O assign-ments, ensure that adjacent
port pins, and othersignals in close proximity to the oscillator,
are benign(i.e., free of high frequencies, short rise and fall
times,and other similar noise).For additional information and
design guidance onoscillator circuits, refer to these Microchip
ApplicationNotes, available at the corporate
website(www.microchip.com):• AN826, “Crystal Oscillator Basics and
Crystal
Selection for rfPIC™ and PICmicro® Devices”• AN849, “Basic
PICmicro® Oscillator Design”• AN943, “Practical PICmicro®
Oscillator Analysis
and Design”• AN949, “Making Your Oscillator Work”
2.6 Unused I/OsUnused I/O pins should be configured as outputs
anddriven to a logic low state. Alternatively, connect a 1 kΩto 10
kΩ resistor to VSS on unused pins and drive theoutput to logic
low.
FIGURE 2-3: SUGGESTED PLACEMENT OF THE OSCILLATOR CIRCUIT
GND
`
`
`
OSC1
OSC2
SOSCO
SOSCI
Copper Pour Primary OscillatorCrystal
Secondary Oscillator
Crystal
DEVICE PINS
PrimaryOscillator
C1
C2
SOSC: C1 SOSC: C2
(tied to ground)
Single-Sided and In-Line Layouts:
Fine-Pitch (Dual-Sided) Layouts:
GND
OSCO
OSCI
Bottom LayerCopper Pour
OscillatorCrystal
Top Layer Copper Pour
C2
C1
DEVICE PINS
(tied to ground)
(tied to ground)
(SOSC)
2017-2020 Microchip Technology Inc. DS40001943C-page 15
-
PIC18(L)F25/26K83
3.0 PIC18 CPUThis family of devices contains a PIC18 8-bit CPU
corebased on the modified Harvard architecture. The PIC18CPU
supports: • System Arbitration which decides memory access
allocation depending on user priorities• Vectored Interrupt
capability with automatic two
level deep context saving • 31-level deep hardware stack with
overflow and
underflow reset capabilities• Support Direct, Indirect, and
Relative Addressing
modes• 8x8 Hardware Multiplier
2017-2020 Microchip Technology Inc. DS40001943C-page 16
-
PIC18(L)F25/26K83
FIGURE 3-1: PIC18(L)F25/26K83 FAMILY BLOCK DIAGRAM
InstructionDecode and
Control
Data Latch
Data Memory
Address Latch
Data Address12
AccessBSR FSR0FSR1FSR2
inc/declogic
Address
6 14 4
PCH PCL
PCLATH
8
31-Level Stack
Program Counter
PRODLPRODH
8x8 Multiply
8
BITOP88
ALU
20
8
8
Table Pointer
inc/dec logic
21
8
Data Bus
Table Latch8
IR
12
3
ROM Latch
PCLATU
PCU
Note 1: RE3 is only available when MCLR functionality is
disabled.2: OSC1/CLKIN and OSC2/CLKOUT are only available in select
oscillator modes and when these pins are not being used as digital
I/O.
Refer to Section 7.0 “Oscillator Module (with Fail-Safe Clock
Monitor)” for additional information.
W
Instruction Bus
STKPTR Bank
8
State machinecontrol signals
Decode
8
8Power-up
TimerOscillator
Start-up TimerPower-on
Reset
WWT
OSC1(2)
OSC2(2)
Brown-outReset
InternalOscillator
Fail-SafeClock Monitor
Precision
ReferenceBand GapMCLR(1)
Block
LFINTOSCOscillator
64 MHzOscillator
Single-SupplyProgramming
In-CircuitDebugger
SOSCO
SOSCI
Address LatchProgram Memory
(8/16/32/64 Kbytes)
Data Latch
Ports
Peripherals
DataEEPROM
2017-2020 Microchip Technology Inc. DS40001943C-page 17
-
PIC18(L)F25/26K83
3.1 System ArbitrationThe System Arbiter resolves memory access
betweenthe System Level Selections (i.e., Main, Interrupt Ser-vice
Routine) and Peripheral Selection (i.e., DMA andScanner) based on
user-assigned priorities. Each ofthe system level and peripheral
selections has its ownpriority selection registers. Memory access
priority isresolved using the number written to the
correspondingPriority registers, 0 being the highest priority and 4
thelowest. The default priorities are listed in Table 3-1.In case
the user wants to change priorities, ensureeach Priority register
is written with a unique value from0 to 4.
TABLE 3-1: DEFAULT PRIORITIES
Selection Priority register Reset valueSystem Level ISR 0
MAIN 1Peripheral DMA1 2
DMA2 3SCANNER 4
2017-2020 Microchip Technology Inc. DS40001943C-page 18
-
PIC18(L)F25/26K83
3.1.1 PRIORITY LOCKThe System arbiter grants memory access to
theperipheral selections (DMAx, Scanner) when thePRLOCKED bit
(PRLOCK Register) is set. Priority selections are locked by setting
thePRLOCKED bit of the PRLOCK register. Setting andclearing this
bit requires a special sequence as an extraprecaution against
inadvertent changes. Examples ofsetting and clearing the PRLOCKED
bit are shown inExample 3-1 and Example 3-2.
EXAMPLE 3-1: PRIORITY LOCK SEQUENCE
EXAMPLE 3-2: PRIORITY UNLOCK SEQUENCE
3.2 Memory Access SchemeThe user can assign priorities to both
system level andperipheral selections based on which the
systemarbiter grants memory access. Let us consider thefollowing
priority scenarios between ISR, MAIN, andPeripherals.
3.2.1 ISR PRIORITY > MAIN PRIORITY > PERIPHERAL
PRIORITY
When the Peripheral Priority (DMAx, Scanner) is lowerthan ISR
and MAIN Priority, and the peripheralrequires: 1. Access to the
Program Flash Memory, then the
peripheral waits for an instruction cycle in whichthe CPU does
not need to access the PFM(such as a branch instruction) and uses
thatcycle to do its own Program Flash Memoryaccess, unless a PFM
Read/Write operation isin progress.
2. Access to the SFR/GPR, then the peripheralwaits for an
instruction cycle in which the CPUdoes not need to access the
SFR/GPR (such asMOVLW, CALL, NOP) and uses that cycle to do itsown
SFR/GPR access.
3. Access to the Data EEPROM, then theperipheral has access to
Data EEPROM unlessa Data EEPROM Read/Write operation is
beingperformed.
This results in the lowest throughput for the peripheralto
access the memory, and does so without any impacton execution
times.
3.2.2 PERIPHERAL PRIORITY > ISR PRIORITY > MAIN
PRIORITY
When the Peripheral Priority (DMAx, Scanner) is higherthan ISR
and MAIN Priority, the CPU operation isstalled when the peripheral
requests memory. The CPU is held in its current state until the
peripheralcompletes its operation. Since the peripheral
requestsaccess to the bus, the peripheral cannot be disableduntil
it completes its operation.This results in the highest throughput
for the peripheralto access the memory, but has the cost of
stalling otherexecution while it occurs.
; Disable interruptsBCF INTCON0,GIE
; Bank to PRLOCK registerBANKSEL PRLOCKMOVLW 55h
; Required sequence, next 4 instructionsMOVWF PRLOCKMOVLW
AAhMOVWF PRLOCK; Set PRLOCKED bit to grant memory access to
peripheralsBSF PRLOCK,0
; Enable InterruptsBSF INTCON0,GIE
; Disable interruptsBCF INTCON0,GIE
; Bank to PRLOCK registerBANKSEL PRLOCKMOVLW 55h
; Required sequence, next 4 instructionsMOVWF PRLOCKMOVLW
AAhMOVWF PRLOCK; Clear PRLOCKED bit to allow changing priority
settingsBCF PRLOCK,0
; Enable InterruptsBSF INTCON0,GIE
Note: It is always required that the ISR prioritybe higher than
Main priority.
2017-2020 Microchip Technology Inc. DS40001943C-page 19
-
PIC18(L)F25/26K83
3.2.3 ISR PRIORITY > PERIPHERAL
PRIORITY > MAIN PRIORITYIn this case, interrupt routines and
peripheral operation(DMAx, Scanner) will stall the CPU. Interrupt
willpreempt peripheral operation. This results in lowestinterrupt
latency and highest throughput for theperipheral to access the
memory.
3.2.4 PERIPHERAL 1 PRIORITY > ISR PRIORITY > MAIN PRIORITY
> PERIPHERAL 2 PRIORITY
In this case, the Peripheral 1 will stall the execution ofthe
CPU. However, Peripheral 2 can access thememory in cycles unused by
Peripheral 1.The operation of the System Arbiter is
controlledthrough the following registers:
REGISTER 3-1: ISRPR: INTERRUPT SERVICE ROUTINE PRIORITY
REGISTER
REGISTER 3-2: MAINPR: MAIN ROUTINE PRIORITY REGISTER
REGISTER 3-3: DMA1PR: DMA1 PRIORITY REGISTER
U-0 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-0/0— — — — — ISRPR
bit 7 bit 0
Legend:R = Readable bitu = Bit is unchanged1 = bit is set
W = Writable bitx = Bit is unknown0 = bit is cleared
U = Unimplemented bit, read as ‘0’-n/n = Value at POR and
BOR/Value at all other ResetsHS = Hardware set
bit 7-3 Unimplemented: Read as ‘0’bit 2-0 ISRPR: Interrupt
Service Routine Priority Selection bits
U-0 U-0 U-0 U-0 U-0 R/W-0/0 R/W-0/0 R/W-1/1— — — — — MAINPR
bit 7 bit 0
Legend:R = Readable bitu = Bit is unchanged1 = bit is set
W = Writable bitx = Bit is unknown0 = bit is cleared
U = Unimplemented bit, read as ‘0’-n/n = Value at POR and
BOR/Value at all other ResetsHS = Hardware set
bit 7-3 Unimplemented: Read as ‘0’bit 2-0 MAINPR: Main Routine
Priority Selection bits
U-0 U-0 U-0 U-0 U-0 R/W-0/0 R/W-1/1 R/W-0/0— — — — — DMA1PR
bit 7 bit 0
Legend:R = Readable bitu = Bit is unchanged1 = bit is set
W = Writable bitx = Bit is unknown0 = bit is cleared
U = Unimplemented bit, read as ‘0’-n/n = Value at POR and
BOR/Value at all other ResetsHS = Hardware set
bit 7-3 Unimplemented: Read as ‘0’bit 2-0 DMA1PR: DMA1 Priority
Selection bits
2017-2020 Microchip Technology Inc. DS40001943C-page 20
-
PIC18(L)F25/26K83
REGISTER 3-4: DMA2PR: DMA2 PRIORITY REGISTER
REGISTER 3-5: SCANPR: SCANNER PRIORITY REGISTER
REGISTER 3-6: PRLOCK: PRIORITY LOCK REGISTER
U-0 U-0 U-0 U-0 U-0 R/W-0/0 R/W-1/1 R/W-1/1— — — — — DMA2PR
bit 7 bit 0
Legend:R = Readable bitu = Bit is unchanged1 = bit is set
W = Writable bitx = Bit is unknown0 = bit is cleared
U = Unimplemented bit, read as ‘0’-n/n = Value at POR and
BOR/Value at all other ResetsHS = Hardware set
bit 7-3 Unimplemented: Read as ‘0’bit 2-0 DMA2PR: DMA2 Priority
Selection bits
U-0 U-0 U-0 U-0 U-0 R/W-1/1 R/W-0/0 R/W-0/0— — — — — SCANPR
bit 7 bit 0
Legend:R = Readable bitu = Bit is unchanged1 = bit is set
W = Writable bitx = Bit is unknown0 = bit is cleared
U = Unimplemented bit, read as ‘0’-n/n = Value at POR and
BOR/Value at all other ResetsHS = Hardware set
bit 7-3 Unimplemented: Read as ‘0’bit 2-0 SCANPR: Scanner
Priority Selection bits
U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0/0— — — — — — — PRLOCKED
bit 7 bit 0
Legend:R = Readable bitu = Bit is unchanged1 = bit is set
W = Writable bitx = Bit is unknown0 = bit is cleared
U = Unimplemented bit, read as ‘0’-n/n = Value at POR and
BOR/Value at all other ResetsHS = Hardware set
bit 7-1 Unimplemented: Read as ‘0’bit 0 PRLOCKED: PR Register
Lock bit(1, 2)
0 = Priority Registers can be modified by write operations;
Peripherals do not have access to the memory
1 = Priority Registers are locked and cannot be written;
Peripherals do not have access to the memory
Note 1: The PRLOCKED bit can only be set or cleared after the
unlock sequence.2: If PR1WAY = 1, the PRLOCKED bit cannot be
cleared after it has been set. A system Reset will clear the
bit and allow one more set.
2017-2020 Microchip Technology Inc. DS40001943C-page 21
-
PIC18(L)F25/26K83
TABLE 3-2: SUMMARY OF REGISTERS ASSOCIATED WITH CPU
Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Register on
page
ISRPR — — — — — ISRPR2 ISRPR1 ISRPR0 20
MAINPR — — — — — MAINPR2 MAINPR1 MAINPR0 20
DMA1PR — — — — — DMA1PR2 DMA1PR1 DMA1PR0 20
DMA2PR — — — — — DMA2PR2 DMA2PR1 DMA2PR0 21
SCANPR — — — — — SCANPR2 SCANPR1 SCANPR0 21
PRLOCK — — — — — — — PRLOCKED 21
Legend: — = Unimplemented location, read as ‘0’.
2017-2020 Microchip Technology Inc. DS40001943C-page 22
-
PIC18(L)F25/26K83
4.0 MEMORY ORGANIZATIONThere are three types of memory in PIC18
enhancedmicrocontroller devices:• Program Flash Memory• Data RAM •
Data EEPROM The Program Memory Flash and data RAM share thesame
bus, while data EEPROM uses a separate bus.This allows for
concurrent access of the memoryspaces. Additional detailed
information on the operation of theProgram Flash Memory and Data
EEPROM Memory isprovided in Section 13.0 “Nonvolatile Memory(NVM)
Control”.
4.1 Program Flash Memory Organization
PIC18 microcontrollers implement a 21-bit ProgramCounter, which
is capable of addressing a 2 Mbyteprogram memory space. Accessing
anyunimplemented memory will return all ‘0’s (a
NOPinstruction).These devices contains the following:•
PIC18(L)F25K83: 32 Kbytes of Flash memory, up
to 16,384 single-word instructions• PIC18(L)F26K83: 64 Kbytes of
Flash memory, up
to 32,768 single-word instructionsThe Reset vector for the
device is at address 000000h.PIC18(L)F25/26K83 devices feature a
vectored inter-rupt controller with a dedicated interrupt vector
table inthe program memory, see Section 9.0 “Interrupt
Con-troller”.
4.2 Memory Access Partition (MAP)
Program Flash Memory is partitioned into:• Application Block•
Boot Block, and• Storage Area Flash (SAF) Block
4.2.1 APPLICATION BLOCK
Application Block is where the user’s program residesby default.
Default settings of the Configuration bits(BBEN = 1 and SAFEN = 1)
assign all memory in theProgram Flash Memory area to the
Application Block.The WRTAPP Configuration bit is used to protect
theApplication Block.
4.2.2 BOOT BLOCK
Boot Block is an area in program memory that is idealfor storing
bootloader code. Code placed in this areacan be executed by the
CPU. The Boot Block can bewrite-protected, independent of the main
ApplicationBlock. The Boot Block is enabled by the BBEN bit andsize
is based on the value of the BBSIZE bits ofConfiguration word
(Register 5-7), see Table 5-1 forBoot Block sizes.The WRTB
Configuration bit is used to write-protectthe Boot Block.
4.2.3 STORAGE AREA FLASH
Storage Area Flash (SAF) is the area in programmemory that can
be used as data storage. SAF isenabled by the SAFEN bit of the
Configuration word inRegister 5-7. If enabled, the code placed in
this areacannot be executed by the CPU. The SAF block isplaced at
the end of memory and spans 128 words.The WRTSAF Configuration bit
is used to write-protectthe Storage Area Flash.
Note: For memory information on this family ofdevices, see Table
4-1 and Table 4-3.
Note: If write-protected locations are writtenfrom NVMCON
registers, memory is notchanged and the WRERR bit defined
inRegister 13-1 is set.
2017 Microchip Technology Inc. DS40001943C-page 23
-
PIC18(L)F25/26K83
TABLE 4-1: PROGRAM AND DATA EEPROM MEMORY MAP
PIC18(L)F25K83 PIC18(L)F26K83
PC PC
Note 1 Stack (31 levels) Stack (31 levels) Note 1
00 0000h Reset Vector Reset Vector 00 0000h• • • • • • • • • • •
•
00 0008h Interrupt Vector High(2) Interrupt Vector High(2) 00
0008h• • • • • • • • • • • •
00 0018h Interrupt Vector Low(2) Interrupt Vector Low(2) 00
0018h00 001Ah
•00 7FFFh
Program Flash Memory (16 KW)(3)
Program Flash Memory (32 KW)(3)
00 001Ah•00 7FFFh
00 8000h•
00 FFFFhNot present(4)
00 8000h•00 FFFFh
01 0000hNot present(4)
01 0000h
1F FFFFh 1F FFFFh20 0000h
• • •20 000Fh
User IDs (8 Words)(5)20 0000h• • •20 000Fh
20 0010h• • •
2F FFFFhReserved
20 0010h• • •2F FFFFh
30 0000h• • •
30 0009hConfiguration Words (5 Words)(5)
30 0000h• • •30 0009h
30 000Ah• • •
30 FFFFhReserved
30 000Ah• • •30 FFFFh
31 0000h• • •
31 00FFh Data EEPROM (1024 Bytes)
31 0000h• • •31 00FFh
31 0100h• • •
31 03FFh
31 0100h• • •31 03FFh
31 0400h• • •
3E FFFFhReserved
31 0400h• • •3E FFFFh
3F 0000h• • •
3F 003FhDevice Information Area(5),(7)
3F 0000h• • •3F 003Fh
3F0040h• • •
3F FEFFhReserved
3F0040h• • •3F FEFFh
3F FF00h• • •
3F FF09hDevice Configuration Information (5
Words)(5),(6),(7)
3F FF00h• • •3F FF09h
3F FF0Ah• • •
3F FFFBhReserved
3F FF0Ah• • •3F FFFBh
3F FFFCh• • •
3F FFFDhRevision ID (1 Word)(5),(6),(7)
3F FFFCh• • •3F FFFDh
3F FFFEh• • •
3F FFFFhDevice ID (1 Word)(5),(6),(7)
3F FFFEh• • •3F FFFFh
Note 1: The stack is a separate SRAM panel, apart from all user
memory panels.2: 00 0008h location is used as the reset default for
the IVTBASE register, the vector table can be relocated in the
memory by programming the
IVTBASE register.3: Storage Area Flash is implemented as the
last 128 Words of User Flash, if present.4: The addresses do not
roll over. The region is read as ‘0’.5: Not code-protected.6:
Hard-coded in silicon.7: This region cannot be written by the user
and it is not affected by a Bulk Erase.
2017 Microchip Technology Inc. DS40001943C-page 24
-
PIC18(L)F25/26K83
TABLE 4-2: PROGRAM FLASH MEMORY PARTITION
Region AddressPartition(3)
BBEN = 1SAFEN = 1
BBEN = 1SAFEN = 0
BBEN = 0SAFEN = 1
BBEN = 0SAFEN = 0
Program Flash
Memory
00 0000h• • •Last Boot Block Memory Address
APPLICATIONBLOCK
APPLICATIONBLOCK
BOOTBLOCK
BOOTBLOCK
Last Boot Block Memory Address(1) + 1• • •Last Program Memory
Address(2) - 100h APPLICATION
BLOCK
APPLICATIONBLOCK
Last Program Memory Address(2) - FEh(4)• • •Last Program Memory
Address(2)
STORAGEAREAFLASH
STORAGEAREAFLASH
Note 1: Last Boot Block Memory Address is based on BBSIZE, see
Table 5-1.2: For Last Program Memory Address, see Table 5-1.3:
Refer to Register 5-7: Configuration Word 4L for BBEN and SAFEN
definitions.4: Storage Area Flash is implemented as the last 128
Words of User Flash, if present.
2017 Microchip Technology Inc. DS40001943C-page 25
-
PIC18(L)F25/26K83
4.2.4 PROGRAM COUNTERThe Program Counter (PC) specifies the
address of theinstruction to fetch for execution. The PC is 21-bit
wideand is contained in three separate 8-bit registers. Thelow
byte, known as the PCL register, is both readableand writable. The
high byte, or PCH register, containsthe PC bits; it is not directly
readable or writable.Updates to the PCH register are performed
through thePCLATH register. The upper byte is called PCU.
Thisregister contains the PC bits; it is also notdirectly readable
or writable. Updates to the PCUregister are performed through the
PCLATU register. The contents of PCLATH and PCLATU are
transferredto the Program Counter by any operation that writesPCL.
Similarly, the upper two bytes of the ProgramCounter are
transferred to PCLATH and PCLATU byany operation that reads PCL.
This is useful for com-puted offsets to the PC (see Section4.3.2.1
“Computed GOTO”).The PC addresses bytes in the program memory.
Toprevent the PC from becoming misaligned with wordinstructions,
the Least Significant bit of PCL is fixed toa value of ‘0’. The PC
increments by two to addresssequential instructions in the program
memory.The CALL, RCALL, GOTO and program branchinstructions write
to the Program Counter directly. Forthese instructions, the
contents of PCLATH andPCLATU are not transferred to the Program
Counter.
4.2.5 RETURN ADDRESS STACKThe return address stack allows any
combination of upto 31 program calls and interrupts to occur. The
PC ispushed onto the stack when a CALL or RCALLinstruction is
executed or an interrupt is acknowledged.The PC value is pulled off
the stack on a RETURN,RETLW or a RETFIE instruction. PCLATU and
PCLATHare not affected by any of the RETURN or CALLinstructions.The
stack operates as a 31-word by 21-bit RAM and a5-bit Stack Pointer.
The stack space is not part of eitherprogram or data space. The
Stack Pointer is readableand writable and the address on the top of
the stack isreadable and writable through the Top-of-Stack
(TOS)Special File Registers. Data can also be pushed to, orpopped
from the stack, using these registers. A CALL, CALLW or RCALL
instruction causes a pushonto the stack; the Stack Pointer is first
incrementedand the location pointed to by the Stack Pointer
iswritten with the contents of the PC (already pointing tothe
instruction following the CALL). A RETURN typeinstruction causes a
pop from the stack; the contents ofthe location pointed to by the
STKPTR are transferredto the PC and then the Stack Pointer is
decremented.The Stack Pointer is initialized to ‘00000’ after
allResets. There is no RAM associated with the
locationcorresponding to a Stack Pointer value of ‘00000’; thisis
only a Reset value. Status bits in the PCON0 registerindicate if
the stack has overflowed or underflowed.
4.2.5.1 Top-of-Stack AccessOnly the top of the return address
stack (TOS) is readableand writable. A set of three registers,
TOSU:TOSH:TOSL,holds the contents of the stack location pointed to
by theSTKPTR register (Figure 4-1). This allows users toimplement a
software stack, if necessary. After a CALL,RCALL or interrupt, the
software can read the pushedvalue by reading the TOSU:TOSH:TOSL
registers. Thesevalues can be placed on a user-defined software
stack. Atreturn time, the software can return these values
toTOSU:TOSH:TOSL and do a return.The user must disable the Global
Interrupt Enable (GIE)bits while accessing the stack to prevent
inadvertentstack corruption.
2017 Microchip Technology Inc. DS40001943C-page 26
-
PIC18(L)F25/26K83
FIGURE 4-1: RETURN ADDRESS STACK AND ASSOCIATED REGISTERS
4.2.5.2 Return Stack Pointer (STKPTR)The STKPTR register
(Register 4-4) contains the StackPointer value. The STKOVF (Stack
Overflow) Status bitand the STKUNF (Stack Underflow) Status bit can
beaccessed using the PCON0 register. The value of theStack Pointer
can be 0 through 31. On Reset, the StackPointer value will be zero.
The user may read and writethe Stack Pointer value. This feature
can be used by aReal-Time Operating System (RTOS) for stack
mainte-nance. After the PC is pushed onto the stack 32
times(without popping any values off the stack), theSTKOVF bit is
set. The STKOVF bit is cleared by soft-ware or by a POR. The action
that takes place when thestack becomes full depends on the state of
theSTVREN (Stack Overflow Reset Enable) Configurationbit. (Refer to
Section 5.1 “Configuration Words” fora description of the device
Configuration bits.) If STVREN is set (default), a Reset will be
generatedand a Stack Overflow will be indicated by the STKOVFbit
when the 32nd push is initiated. This includes CALLand CALLW
instructions, as well as stacking the returnaddress during an
interrupt response. The STKOVF bitwill remain set and the Stack
Pointer will be set to zero.If STVREN is cleared, the STKOVF bit
will be set on the32nd push and the Stack Pointer will remain at 31
butno Reset will occur. Any additional pushes willoverwrite the
31st push but the STKPTR will remain at31.Setting STKOVF = 1 in
software will change the bit, butwill not generate a Reset.The
STKUNF bit is set when a stack pop returns avalue of zero. The
STKUNF bit is cleared by softwareor by POR. The action that takes
place when the stackbecomes full depends on the state of the
STVREN(Stack Overflow Reset Enable) Configuration bit.(Refer to
Section 5.1 “Configuration Words” for adescription of the device
Configuration bits).
If STVREN is set (default) and the stack has beenpopped enough
times to unload the stack, the next popwill return a value of zero
to the PC, it will set theSTKUNF bit and a Reset will be generated.
Thiscondition can be generated by the RETURN, RETLW andRETFIE
instructions.When STVREN = 0, STKUNF will be set but no Resetwill
occur.
4.2.5.3 PUSH and POP InstructionsSince the Top-of-Stack is
readable and writable, theability to push values onto the stack and
pull values offthe stack without disturbing normal program
executionis a desirable feature. The PIC18 instruction setincludes
two instructions, PUSH and POP, that permitthe TOS to be
manipulated under software control.TOSU, TOSH and TOSL can be
modified to place dataor a return address on the stack.The PUSH
instruction places the current PC value ontothe stack. This
increments the Stack Pointer and loadsthe current PC value onto the
stack.The POP instruction discards the current TOS bydecrementing
the Stack Pointer. The previous valuepushed onto the stack then
becomes the TOS value.
00011001A34h
111111111011101
000100000100000
00010
Return Address Stack
Top-of-Stack000D58h
TOSLTOSHTOSU34h1Ah00h
STKPTR
Top-of-Stack Registers Stack Pointer
Note: Returning a value of zero to the PC on anunderflow has the
effect of vectoring theprogram to the Reset vector, where thestack
conditions can be verified andappropriate actions can be taken.
This isnot the same as a Reset, as the contentsof the SFRs are not
affected.
2017 Microchip Technology Inc. DS40001943C-page 27
-
PIC18(L)F25/26K83
4.3 Register Definitions: Stack PointerREGISTER 4-1: TOSU:
TOP-OF-STACK UPPER BYTE
U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0— — — TOS
bit 7 bit 0
Legend:R = Readable bit W = Writable bit U = Unimplemented C =
Clearable only bit-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is
cleared x = Bit is unknown
bit 7-5 Unimplemented: Read as ‘0’bit 4-0 TOS: Top-of-Stack
Location bits
REGISTER 4-2: TOSH: TOP-OF-STACK HIGH BYTER/W-0 R/W-0 R/W-0
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
TOSbit 7 bit 0
Legend:R = Readable bit W = Writable bit U = Unimplemented C =
Clearable only bit-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is
cleared x = Bit is unknown
bit 7-0 TOS: Top-of-Stack Location bits
REGISTER 4-3: TOSL: TOP-OF-STACK LOW BYTER/W-0 R/W-0 R/W-0 R/W-0
R/W-0 R/W-0 R/W-0 R/W-0
TOSbit 7 bit 0
Legend:R = Readable bit W = Writable bit U = Unimplemented C =
Clearable only bit-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is
cleared x = Bit is unknown
bit 7-0 TOS: Top-of-Stack Location bits
2017 Microchip Technology Inc. DS40001943C-page 28
-
PIC18(L)F25/26K83
4.3.1 FAST REGISTER STACKThere are three levels of fast stack
registers available -one for CALL type instructions and two for
interrupts. Afast register stack is provided for the Status,
WREGand BSR registers, to provide a “fast return” option
forinterrupts. It is loaded with the current value of the
cor-responding register when the processor vectors for aninterrupt.
All interrupt sources will push values into thestack registers. The
values in the registers are thenloaded back into their associated
registers if theRETFIE, FAST instruction is used to return from
theinterrupt. Refer to Section 4.5.6 “Call Shadow Regis-ter” for
interrupt call shadow registers.Example 4-1 shows a source code
example that usesthe fast register stack during a subroutine call
andreturn.
EXAMPLE 4-1: FAST REGISTER STACK CODE EXAMPLE
REGISTER 4-4: STKPTR: STACK POINTER REGISTERU-0 U-0 U-0 R/W-0
R/W-0 R/W-0 R/W-0 R/W-0— — — STKPTR
bit 7 bit 0
Legend:R = Readable bit W = Writable bit U = Unimplemented C =
Clearable only bit-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is
cleared x = Bit is unknown
bit 7-5 Unimplemented: Read as ‘0’bit 4-0 STKPTR: Stack Pointer
Location bits
CALL SUB1, FAST ;STATUS, WREG, BSR;SAVED IN FAST
REGISTER;STACK
SUB1
RETURN, FAST ;RESTORE VALUES SAVED;IN FAST REGISTER STACK
2017 Microchip Technology Inc. DS40001943C-page 29
-
PIC18(L)F25/26K83
4.3.2 LOOK-UP TABLES IN PROGRAM
MEMORYThere may be programming situations that require
thecreation of data structures, or look-up tables, inprogram
memory. For PIC18 devices, look-up tablescan be implemented in two
ways:• Computed GOTO • Table Reads
4.3.2.1 Computed GOTOA computed GOTO is accomplished by adding
an offsetto the Program Counter. An example is shown inExample
4-2.A look-up table can be formed with an ADDWF PCLinstruction and
a group of RETLW nn instructions. TheW register is loaded with an
offset into the table beforeexecuting a call to that table. The
first instruction of thecalled routine is the ADDWF PCL
instruction. The nextinstruction executed will be one of the RETLW
nninstructions that returns the value ‘nn’ to the
callingfunction.The offset value (in WREG) specifies the number
ofbytes that the Program Counter should advance andshould be
multiples of two (LSb = 0).In this method, only one data byte may
be stored ineach instruction location and room on the returnaddress
stack is required.
EXAMPLE 4-2: COMPUTED GOTO USING AN OFFSET VALUE
4.3.2.2 Table Reads and Table WritesA better method of storing
data in program memoryallows two bytes of data to be stored in each
instructionlocation.Look-up table data may be stored two bytes
perprogram word by using table reads and writes. TheTable Pointer
(TBLPTR) register specifies the byteaddress and the Table Latch
(TABLAT) registercontains the data that is read from or written to
programmemory.Table read and table write operations are
discussedfurther in Section 13.1.1 “Table Reads and
TableWrites”.
MOVF OFFSET, WCALL TABLE
ORG nn00hTABLE ADDWF PCL
RETLW nnhRETLW nnhRETLW nnh...
2017 Microchip Technology Inc. DS40001943C-page 30
-
PIC18(L)F25/26K83
4.4 PIC18 Instruction Cycle
4.4.1 CLOCKING SCHEMEThe microcontroller clock input, whether
from aninternal or external source, is internally divided by fourto
generate four quadrature clocks (Q1, Q2, Q3 andQ4). Internally, the
Program Counter is incremented onevery Q1; the instruction is
fetched from the programmemory and latched into the instruction
register duringQ4. The instruction is decoded and executed during
thefollowing Q1 through Q4. The clocks and instructionexecution
flow are shown in Figure 4-2.
4.4.2 INSTRUCTION FLOW/PIPELININGAn “Instruction Cycle” consists
of four Q cycles: Q1through Q4. The instruction fetch and execute
arepipelined in such a manner that a fetch takes oneinstruction
cycle, while the decode and execute takeanother instruction cycle.
However, due to thepipelining, each instruction effectively
executes in onecycle. If an instruction causes the Program Counter
tochange (e.g., GOTO), then two cycles are required tocomplete the
instruction (Example 4-3).A fetch cycle begins with the Program
Counter (PC)incrementing in Q1.In the execution cycle, the fetched
instruction is latchedinto the Instruction Register (IR) in cycle
Q1. Thisinstruction is then decoded and executed during theQ2, Q3
and Q4 cycles. Data memory is read during Q2(operand read) and
written during Q4 (destinationwrite).
FIGURE 4-2: CLOCK/INSTRUCTION CYCLE
EXAMPLE 4-3: INSTRUCTION PIPELINE FLOW
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4OSC1
Q1
Q2Q3
Q4
PC
OSC2/CLKOUT(RC mode)
PC PC + 2 PC + 4
Fetch INST (PC)Execute INST (PC – 2)
Fetch INST (PC + 2)Execute INST (PC)
Fetch INST (PC + 4)Execute INST (PC + 2)
InternalPhaseClock
Note: There are some instructions that take multiple cycles to
execute. Refer to Section 42.0 “Instruction SetSummary” for
details.
TCY0 TCY1 TCY2 TCY3 TCY4 TCY51. MOVLW 55h Fetch 1 Execute 12.
MOVWF PORTB Fetch 2 Execute 23. BRA SUB_1 Fetch 3 Execute 34. BSF
PORTA, BIT3 (Forced NOP) Fetch 4 Flush (NOP)5. Instruction @
address SUB_1 Fetch SUB_1 Execute SUB_1
2017 Microchip Technology Inc. DS40001943C-page 31
-
PIC18(L)F25/26K83
4.4.3 INSTRUCTIONS IN PROGRAM
MEMORYThe program memory is addressed in bytes.Instructions are
stored as either two bytes or four bytesin program memory. The
Least Significant Byte of aninstruction word is always stored in a
program memorylocation with an even address (LSb = 0). To
maintainalignment with instruction boundaries, the PCincrements in
steps of two and the LSb will always read‘0’ (see Section 4.2.4
“Program Counter”).Figure 4-3 shows an example of how instruction
wordsare stored in the program memory.The CALL and GOTO
instructions have the absoluteprogram memory address embedded into
theinstruction. Since instructions are always stored on
wordboundaries, the data contained in the instruction is aword
address. The word address is written to PC,which accesses the
desired byte address in programmemory. Instruction #2 in Figure 4-3
shows how theinstruction GOTO 0006h is encoded in the
programmemory. Program branch instructions, which encode arelative
address offset, operate in the same manner. Theoffset value stored
in a branch instruction represents thenumber of single-word
instructions that the PC will beoffset by. Section 42.0
“Instruction Set Summary”provides further details of the
instruction set.
4.4.4 MULTI-WORD INSTRUCTIONSThe standard PIC18 instruction set
has four two-wordinstructions: CALL, MOVFF, GOTO and LFSR and
twothree-word instructions: MOVFFL and MOVSFL. In allcases, the
second and the third word of the instructionalways has ‘1111’ as
its four Most Significant bits; theother 12 bits are literal data,
usually a data memoryaddress. The use of ‘1111’ in the four MSbs of
an instructionspecifies a special form of NOP. If the instruction
isexecuted in proper sequence – immediately after thefirst word –
the data in the second word is accessedand used by the instruction
sequence. If the first wordis skipped for some reason and the
second or thirdword is executed by itself, a NOP is executed
instead.This is necessary for cases when the multi-wordinstruction
is preceded by a conditional instruction thatchanges the PC.
Example 4-4 shows how this works.
FIGURE 4-3: INSTRUCTIONS IN PROGRAM MEMORYWord Address
LSB = 1 LSB = 0 Program MemoryByte Locations
000000h000002h000004h000006h
Instruction 1: MOVLW 055h 0Fh 55h 000008hInstruction 2: GOTO
0006h EFh 03h 00000Ah
F0h 00h 00000ChInstruction 3: MOVFF 123h, 456h C1h 23h
00000Eh
F4h 56h 000010hInstruction 4: MOVFFL 123h, 456h 00h 60h
000012h
F4h 8Ch 000014hF4h 56h 000016h
000018h00001Ah
2017 Microchip Technology Inc. DS40001943C-page 32
-
PIC18(L)F25/26K83
EXAMPLE 4-4: TWO-WORD INSTRUCTIONS
EXAMPLE 4-5: THREE-WORD INSTRUCTIONS
CASE 1:Object Code Source Code0110 0110 0000 0000 TSTFSZ REG1 ;
is RAM location 0?1100 0001 0010 0011 MOVFF REG1, REG2 ; Yes, skip
this word1111 0100 0101 0110 ; Execute this word as a NOP0010 0100
0000 0000 ADDWF REG3 ; continue codeCASE 2:Object Code Source
Code0110 0110 0000 0000 TSTFSZ REG1 ; is RAM location 0?1100 0001
0010 0011 MOVFF REG1, REG2 ; No, execute this word1111 0100 0101
0110 ; 2nd word of instruction0010 0100 0000 0000 ADDWF REG3 ;
continue code
CASE 1:Object Code Source Code0110 0110 0000 0000 TSTFSZ REG1 ;
is RAM location 0?0000 0000 0110 0000 MOVFFL REG1, REG2 ; Yes, skip
this word1111 0100 1000 1100 ; Execute this word as a NOP1111 0100
0101 0110 ; Execute this word as a NOP0010 0100 0000 0000 ADDWF
REG3 ; continue codeCASE 2:Object Code Source Code0110 0110 0000
0000 TSTFSZ REG1 ; is RAM location 0?0000 0000 0110 0000 MOVFFL
REG1, REG2 ; No, execute this word1111 0100 1000 1100 ; 2nd word of
instruction1111 0100 0101 0110 ; 3rd word of instruction0010 0100
0000 0000 ADDWF REG3 ; continue code
2017 Microchip Technology Inc. DS40001943C-page 33
-
PIC18(L)F25/26K83
4.5 Data Memory OrganizationData memory in PIC18(L)F25/26K83
devices isimplemented as static RAM. Each register in the
datamemory has a 14-bit address, allowing up to 16384bytes of data
memory. The memory space is dividedinto 64 banks that contain 256
bytes each. Figure 4-5shows the data memory organization for
thePIC18(L)F25/26K83 devices in this data sheet.The data memory
contains Special Function Registers(SFRs) and General Purpose
Registers (GPRs). TheSFRs are used for control and status of the
controllerand peripheral functions, while GPRs are used for
datastorage and scratchpad operations in the user’sapplication. Any
read of an unimplemented location willread as ‘0’s.The instruction
set and architecture allow operationsacross all banks. The entire
data memory may beaccessed by Direct, Indirect or Indexed
Addressingmodes. Addressing modes are discussed later in
thissubsection.To ensure that commonly used registers (select
SFRsand GPRs) can be accessed in a single cycle, PIC18devices
implement an Access Bank. This is a 256-bytememory space that
provides fast access to some SFRsand the lower portion of GPR Bank
0 without using theBank Select Register (BSR). Section 4.5.4
“AccessBank” provides a detailed description of the AccessRAM.
4.5.1 BANK SELECT REGISTER (BSR)Large areas of data memory
require an efficientaddressing scheme to make rapid access to
anyaddress possible. Ideally, this means that an entireaddress does
not need to be provided for each read orwrite operation. For PIC18
devices, this is accom-plished with a RAM banking scheme. This
divides thememory space into 64 contiguous banks of 256
bytes.Depending on the instruction, each location can beaddressed
directly by its full 14-bit address, or an 8-bitlow-order address
and a 6-bit Bank Select Register.This SFR holds the six Most
Significant bits of a loca-tion address; the instruction itself
includes theeight Least Significant bits. Only the six lower bits
of theBSR are implemented (BSR). The upper two bitsare unused; they
will always read ‘0’ and cannot bewritten to. The BSR can be loaded
directly by using theMOVLB instruction.The value of the BSR
indicates the bank in datamemory; the eight bits in the instruction
show thelocation in the bank and can be thought of as an offsetfrom
the bank’s lower boundary. The relationshipbetween the BSR’s value
and the bank division in datamemory is shown in Figure 4-5.Since up
to 64 registers may share the same low-orderaddress, the user must
always be careful to ensure thatthe proper bank is selected before
performing a dataread or write. For example, writing what should
beprogram data to an 8-bit address of F9h while the BSRis 3Fh will
end up corrupting the Program Counter. While any bank can be
selected, only those banks thatare actually implemented can be read
or written to.Writes to unimplemented banks are ignored, whilereads
from unimplemented banks will return ‘0’s. Evenso, the STATUS
register will still be affected as if theoperation was successful.
The data memory maps inFigure 4-5 indicate which banks are
implemented.
2017 Microchip Technology Inc. DS40001943C-page 34
-
PIC18(L)F25/26K83
FIGURE 4-4: DATA MEMORY MAP FOR PIC18(L)F25/26K83 DEVICES
Bank BSR addrPIC18(L)F25K83 PIC18(L)F26K83
Addressaddr
Bank 0 00 0000
00h Access RAM Access RAM 0000h005Fh
GPR GPR 0060hFFh 00FFh
Bank 1 00 000100h
GPR GPR
0100hFFh
•••
Bank 2 00 001000hFFh
Bank 3 00 001100hFFh 03FFh
Banks4 to 7
00 0100—
00 0111
00h
GPR GPR
0400h• •• •
FFh 07FFh
Banks8 to 15
00 1000—
00 1111
00h
Unimplemented
GPR
0800h• •• •
FFh 0FFFh
Banks16 to 31
01 0000—
01 1111
00h
Unimplemented
1000h• •• •
FFh 1FFFh
Banks32 to 53
10 0000—
11 0111
00h 2000• •• •• •
FFh 37FF
Bank 54 d5400h
• CAN Test CAN Test3600h•36FFhFFh
Bank 55 d5500h
• CAN SFR CAN SFR3700h•37FFhFFh
Banks56 to 62
11 1000—
11 1110
00h
SFR SFR
3800h• •• •
FFh 3EFFh
Bank 63 11 1111
00h
SFR SFR
3F00h3F5Fh3F60h
FFh 3FFFh
Virtual Bank
Access RAM00h5Fh
SFR60hFFh
Note 1: Depends on the number of SFRs. Refer subsequent SFR
tables.
2017 Microchip Technology Inc. DS40001943C-page 35
-
2017 M
icrochip Technology Inc.D
S40001943C-page 36
PIC18(L)F25/26K
83
FIG
of the Access Bank.
URE 4-5: USE OF THE BANK SELECT REGISTER (DIRECT ADDRESSING)
Note 1: The Access RAM bit of the instruction can be used to
force an override of the selected bank (BSR) to the registers
Data Memory
Bank Select(2)
7 0From Opcode(2)
0 0 0 00000h
0100h
0200h
0300h
3F00h
3E00h
3FFFh
Bank 0
Bank 1
Bank 2
Bank 62
Bank 63
00h
FFh00h
FFh00h
FFh
00h
FFh00h
FFh
00h
FFh
Bank 3throughBank 61
0 0 1 0 1 1 1 1 1 1 1 17 0
BSR(1)
-
PIC18(L)F25/26K83
4.5.2 GENERAL PURPOSE REGISTER
FILEGeneral Purpose RAM is available starting Bank 0 ofdata
memory. GPRs are not initialized by a Power-onReset and are
unchanged on all other Resets.
4.5.3 SPECIAL FUNCTION REGISTERSThe Special Function Registers
(SFRs) are registersused by the CPU and peripheral modules for
controllingthe desired operation of the device. These registers
areimplemented as static RAM. SFRs start at the top ofdata memory
(3FFFh) and extend downward to occupyBank 56 through 63 (3800h to
3FFFh). A list of theseregisters is given in Table 4-3 to Table
4-10. A bitwisesummary of these registers can be found inSection
43.0 “Register Summary”.
4.5.4 ACCESS BANKTo streamline access for the most commonly used
datamemory locations, the data memory is configured withan Access
Bank, which allows users to access amapped block of memory without
specifying a BSR.The Access Bank consists of the first 96 bytes
ofmemory (00h-5Fh) in Bank 0 and the last 160 bytes ofmemory
(60h-FFh) in Bank 63. The lower half is knownas the “Access RAM”
and is composed of GPRs. Thisupper half is also where some of the
SFRs of the deviceare mapped. These two areas are
mappedcontiguously in the Access Bank and can be addressedlinearly
by an 8-bit address (Figure 4-5).The Access Bank is used by core
PIC18 instructionsthat include the Access RAM bit (the ‘a’
parameter inthe instruction). When ‘a’ is equal to ‘1’, the
instructionuses the BSR and the 8-bit address included in theopcode
for the data memory address. When ‘a’ is ‘0’,however, the
instruction uses the Access Bank addressmap; the current value of
the BSR is ignored. Using this “forced” addressing allows the
instruction tooperate on a data address in a single cycle, w