Getting Started With Microchip PIC18 Architecture
Getting Started With Microchip PIC18 Architecture
Architecture Basics
Instruction Pipelining
Long Word Instructions
Instruction Set Overview
Memory Organization and Addressing
Modes
Special Features
Hands-on Exercises
movlw 0x05 -
Instruction Cycles
T0
Example Program
1 MAIN movlw 0x05 Fetch
2 movwf REG1
3 rcall SUB1
4 addwf REG2
T0 T1
Example Program
1 MAIN movlw 0x05 Fetch Execute
3 rcall SUB1
4 addwf REG2
T0 T1 T2
Example Program
1 MAIN movlw 0x05 Fetch Execute Time to execute normal instruction
4 addwf REG2
T0 T1 T2 T3
Example Program
1 MAIN movlw 0x05 Fetch Execute
T0 T1 T2 T3 T4
Example Program
1 MAIN movlw 0x05 Fetch Execute
52 return
53 SUB2 movf PORTC,w
54 return
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 10
Instruction Pipelining
Pre-Fetched Instruction Executing Instruction
T0 T1 T2 T3 T4 T5
Example Program
1 MAIN movlw 0x05 Fetch Execute
52 return Fetch
T0 T1 T2 T3 T4 T5 T6
Example Program
1 MAIN movlw 0x05 Fetch Execute
54 return
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 12
Instruction Pipelining
Pre-Fetched Instruction Executing Instruction
T0 T1 T2 T3 T4 T5 T6 T7
Example Program
1 MAIN movlw 0x05 Fetch Execute
54 return
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 13
Long Word Instruction
8-bit Program Memory 8-bit Instruction on typical 8-bit MCU
Example: Freescale ‘Load Accumulator A’:
• 2 Program Memory Locations
• 2 Instruction Cycles to Execute
ldaa #k
Limits Bandwidth
1 0 0 0 0 1 1 0
Increases Memory Size
k k k k k k k k Requirements
movlw k
0 0 0 0 1 1 1 0 k k k k k k k k
Opcode a f f f f f f f f
OR
Opcode d a f f f f f f f f
File Register Address
Destination (W or F) Access Bank
ADDWF 0x25, W, A
File Register Address Use Access Bank
Destination (Optional)
15 11 9 8 7 0
Opcode b b b a f f f f f f f f
File Register Address
BSF 0x25, 3, A
File Register Address Access Bank
Bit Position (Optional)
Opcode k k k k k k k k
OR
Opcode
MOVLW 0x25
Literal Value
Opcode f s f s f s fs fs fs fs f s fs f s fs f s
Opcode f d f d f d fd fd f d fd f d fd f d fd fd
Destination Register Address
Opcode n8 n7 n6 n5 n4 n3 n2 n1
Opcode n20 n19 n18 n17 n16 n15 n14 n13 n12 n11 n10 n9
CALL 0x1125
Subroutine Address
ALU
addwf myVal,W
1) Adds the Working register and “myVal” then …
ALU
addwf myVal,W
1) Adds the Working register and “myVal” then …
2) Stores the result in the Working register
ALU = Arithmetic Logic Unit
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 23
ALU Datapath
Output to File Register
ALU output can be stored in
Working register or data memory
W Register Data Memory
02 01
01 20h : myVal
21h
22h
ALU
addwf myVal,F
1) Adds the Working register and “myVal” then …
256 Bytes
that is accessible DFFh
GPR
F00h
Bank 15 GPR
F7Fh
F80h
FFFh Access SFR
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 26
SFR Register Map
Bank 15
UPPER ADDRESS BITS
0 0 0 1 0 0 1 1 1 1 1 1 0 0x27E
Bank0 Bank1 Bank2 Bank13 Bank14 Bank15
00 FF FF
FF FF
FF FF
FF FF FF
01 FF FF
FF FF
FF FF
FF FF FF
02 FF FF
FF FF
FF FF
FF FF FF
03 FF FF
FF FF
FF FF
FF FF FF
7D FF FF
FF FF
FF FF
FF FF FF
7E FF FF
FF FF FF
FF FF FF
7F FF FF
FF FF
FF FF
FF FF FF
80 FF FF
FF FF
FF FF
FF FF FF
81 FF FF
FF FF
FF FF
FF FF FF
82 FF FF
FF FF
FF FF
FF FF FF
FC FF FF
FF FF
FF FF
FF FF FF
FD FF FF
FF FF
FF FF
FF FF FF
FE FF FF
FF FF
FF FF
FF FF FF
FF FF FF
FF FF
FF FF
FF FF FF
0 1 1 0 1 0 1 1 1 1 1 1 0 0xD7E
Bank0 Bank1 Bank2 Bank13 Bank14 Bank15
00 FF FF
FF FF
FF FF
FF FF FF
01 FF FF
FF FF
FF FF
FF FF FF
02 FF FF
FF FF
FF FF
FF FF FF
03 FF FF
FF FF
FF FF
FF FF FF
7D FF FF
FF FF
FF FF
FF FF FF
7E FF FF
FF FF
FF FF FF FF
7F FF FF
FF FF
FF FF
FF FF FF
80 FF FF
FF FF
FF FF
FF FF FF
81 FF FF
FF FF
FF FF
FF FF FF
82 FF FF
FF FF
FF FF
FF FF FF
FC FF FF
FF FF
FF FF
FF FF FF
FD FF FF
FF FF
FF FF
FF FF FF
FE FF FF
FF FF
FF FF
FF FF FF
FF FF FF
FF FF
FF FF
FF FF FF
1 XXXX 1 0 0 0 0 0 1 0 0xF82
Bank0 Bank1 Bank2 Bank13 Bank14 Bank15
00 FF FF
FF FF
FF FF
FF FF FF
01 FF FF
FF FF
FF FF
FF FF FF
02 FF FF
FF FF
FF FF
FF FF FF
03 FF FF
FF FF
FF FF
FF FF FF
7D FF FF
FF FF
FF FF
FF FF FF
7E FF FF
FF FF
FF FF
FF FF FF
7F FF FF
FF FF
FF FF
FF FF FF
80 FF FF
FF FF
FF FF
FF FF FF
81 FF FF
FF FF
FF FF
FF FF FF
82 FF FF
FF FF
FF FF
FF FF FF
FC FF FF
FF FF
FF FF
FF FF FF
FD FF FF
FF FF
FF FF
FF FF FF
FE FF FF
FF FF
FF FF
FF FF FF
FF FF FF
FF FF
FF FF
FF FF FF
0 0 0 0 1 1 0 0 0 0 0 1 0 0x182
Bank0 Bank1 Bank2 Bank13 Bank14 Bank15
00 FF FF
FF FF
FF FF
FF FF FF
01 FF FF
FF FF
FF FF
FF FF FF
02 FF FF
FF FF
FF FF
FF FF FF
03 FF FF
FF FF
FF FF
FF FF FF
7D FF FF
FF FF
FF FF
FF FF FF
7E FF FF
FF FF
FF FF
FF FF FF
7F FF FF
FF FF
FF FF
FF FF FF
80 FF FF
FF FF
FF FF
FF FF FF
81 FF FF
FF FF
FF FF
FF FF FF
82 FF FF FF
FF FF
FF FF
FC FF FF
FF FF
FF FF
FF FF FF
FD FF FF
FF FF
FF FF
FF FF FF
FE FF FF
FF FF
FF FF
FF FF FF
FF FF FF
FF FF
FF FF
FF FF FF
(1MWord)
21-bit Program Counter
On-chip Program Memory
Stack Level 1
007FFEh
Stack Level 2
008000h
Stack Level 30
Stack Level 31
Unimplemented
31 Level Stack Program Memory
(Read as ‘0’)
1FFFFEh
0x000001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x000000
0x000003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x000002
0x000005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x000004
0x000007 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x000006
0x000009 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x000008
0x00000B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x00000A
0x00000D 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x00000C
0x00000F 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x00000E
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Program Counter
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0] PC 01
Register
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0]
PC
Register
PC 01
call
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0] PC
Register
PC
PC 01
Interrupt
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0]
Pushed Data
Register PC
PC
PC 01
push
STKPTR Register
STKOVFSTKUNF SP4:SP0
1 0 X
7 6 5 4 0
Pushed Data
PC
PC
PC 01
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0] PC
Register
PC
PC 01
pop
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0]
PC
Register
PC 01
RETFIE
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 0 X
7 6 5 4 0
STKPTR [SP4:SP0] PC 01
Register
return
STKPTR Register
STKOVFSTKUNF SP4:SP0
0 1 X
7 6 5 4 0
PC 01
STKPTR [SP4:SP0]
Register Under Flow Error
Events
Events that
that wake
wake processor
processor from
from sleep
sleep
MCLR Master Clear Pin Asserted (pulled low)
WDT Watchdog Timer Timeout
INT INT Pin Interrupt
TMR1 Timer 1 Interrupt (or also TMR3 on PIC18)
ADC A/D Conversion Complete Interrupt
CMP Comparator Output Change Interrupt
CCP Input Capture Event
PORTB PORTB Interrupt on Change
SSP Synchronous Serial Port (I22C Mode) Start / Stop Bit Detect Interrupt
PSP Parallel Slave Port Read or Write
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 49
Watchdog Timer
Helps recover from software malfunction
Uses its own free-running on-chip RC oscillator
WDT is cleared by CLRWDT instruction
Enabled WDT (WDTEN) cannot be disabled by software
WDT overflow resets the chip
Programmable timeout period: 18ms to 3.0s typical
Operates in SLEEP; on time out, wakes up CPU
WDT Ripple
Postscaler
Counter
WDTEN
SWDTEN 8:1 Mux
WDT Timeout
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 50
In-Circuit Serial Programming™
Pin
Pin Function
Function
Only two pins required for
VPP Programming Voltage = 13V
programming PP
VDD Supply Voltage
DD
MCLR/VPP
ICSP™ Connector
ICSP Connector
PIC18Fxxxx
VDD
VSS
RB6
RB7
Isolation
To application circuit
circuits
VDD
BVDD
72ms
Internal
Reset
VDD
BVDD
72ms
Internal
Reset <72ms
VDD
BVDD
72ms
Internal
Reset
16-bit Multiplexer
points:
1.8V up to 4.5V in LVDIF
Write PORTx
Read LATx Read PORTx
Write LATx
LATx Register
(PORTx Output
Latches)
V on PORTx,PINy Q4 Q1 Q2 Q3
VIL
t
Port Sampled in RMW Operation
VIL
AN12
AN11
AN10
PCFG3:
AN9
AN8
AN7
AN6
AN5
AN4
AN3
AN2
AN1
AN0
PCFG0
0000 A A A A A A A A A A A A A
0001 A A A A A A A A A A A A A
0010 A A A A A A A A A A A A A
0011 D A A A A A A A A A A A A
1100 D D D D D D D D D D A A A
1101 D D D D D D D D D D D A A
1110 D D D D D D D D D D D D A
1111 D D D D D D D D D D D D D
ANx
ANx==11for
forAnalog
Analog
ANx = 0 for Digital
ANx = 0 for Digital
PIC18 Architecture
PIC18 Instruction Set
PIC18 Memory Organization
Simple Programming Techniques
More than 100 App notes, design guides and other reference material!
www.microchip.com
© 2012 Microchip Technology Incorporated. All Rights Reserved. Slide 66
Resources
www.microchip.com/PIC18