2. Overview
• Microcontroller and Architecture Basics
• Variants among families
• ISA
• Programming overview
• Hardware interface/Developmental boards
2
3. Description
• PIC – “Peripheral Interface Controller”
• Made by Microchip Technology
• Most popular by industry developers and
hobbyists
– Low cost (cents to dollars)
– Availability
– Extensive application notes
– Serial programming
3
5. 8-bit Core Architecture
• Harvard (separate code
and data space)
• RISC
• One accumulator
– W Register
• Small addressable data
space (256 bytes)
– Banking
• RAM
– PC, special purpose
registers
http://www.microchip.com/_images/BaselineArch_large.jpg
5
6. Advantages & Limitations to 8-bit
Architecture
• Small ISA to learn
• Built in oscillator with selectable speeds
• Development made easy
• Inexpensive
• Device variants
• Wide range of interfaces (I2C, SPI, etc.)
• One accumulator
• Bank switching
• Hardware call stack unaddressable (no multi-tasking)
6
7. 16-bit and 32-bit Architecture
• More working registers
• No bank switching
• Assignable interrupt vector table
• More flash memory
• Cache (32-bit architecture)
7
9. 8-bit architecture
Baseline
Architecture
Mid-Range
Architecture
Enhanced Mid-Range
Architecture
PIC18 Architecture
Pin Count 6-40 8-64 8-64 18-100
Interrupts No Single interrupt
capability
Single interrupt
capability with
hardware context save
Multiple interrupt capability
with hardware context save
Performance 5 MIPS 5 MIPS 8 MIPS Up to 16 MIPS
Instructions 33, 12-bit 35, 14-bit 49, 14-bit 83, 16-bit
Program
Memory
Up to 3 KB Up to 14 KB Up to 28 KB Up to 128 KB
Data Memory Up to 138 Bytes Up to 368 Bytes Up to 1.5 KB Up to 4 KB
Features •Comparator
•8-bit ADC
•Data Memory
•Internal Oscillator
In addition to
Baseline:
•SPI/I²C™
•UART
•PWMs
•LCD
•10-bit ADC
•Op Amp
In addition to
Mid-Range:
•Multiple
Communication
Peripherals
•Linear Programming
Space
•PWMs with
Independent Time
Base
In addition to
Enhanced Mid-Range:
•8x8 Hardware Multiplier
•CAN
•CTMU
•USB
•Ethernet
•12-bit ADC
Families PIC10, PIC12, PIC16 PIC12, PIC16 PIC12FXXX, PIC16F1XX PIC18
10. INSTRUCTION DESCRIPTION OPERATION
Data Transfer Instructions
MOVLW k Move constant to W k -> w
MOVWF f Move W to f W -> f
MOVF f,d Move f to d f -> d
CLRW Clear W 0 -> W
CLRF f Clear f 0 -> f
SWAPF f,d Swap nibbles in f f(7:4),(3:0) -> f(3:0),(7:4)
Arithmetic-logic Instructions
ADDLW k Add W and constant W+k -> W
ADDWF f,d Add W and f W+f -> d
SUBLW k Subtract W from constant k-W -> W
SUBWF f,d Subtract W from f f-W -> d
ANDLW k Logical AND with W with constant W AND k -> W
ANDWF f,d Logical AND with W with f W AND f -> d
ANDWF f,d Logical AND with W with f W AND f -> d
IORLW k Logical OR with W with constant W OR k -> W
IORWF f,d Logical OR with W with f W OR f -> d
XORWF f,d Logical exclusive OR with W with constant W XOR k -> W
XORLW k Logical exclusive OR with W with f W XOR f -> d
INCF f,d Increment f by 1 f+1 -> f
DECF f,d Decrement f by 1 f-1 -> f
RLF f,d Rotate left f through CARRY bit
RRF f,d Rotate right f through CARRY bit
COMF f,d Complement f f -> d
Bit-oriented Instructions
BCF f,b Clear bit b in f 0 -> f(b)
BSF f,b Clear bit b in f 1 -> f(b)
Program Control Instructions
BTFSC f,b
Test bit b of f. Skip the following instruction if
clear.
Skip if f(b) = 0
BTFSS f,b
Test bit b of f. Skip the following instruction if
set.
Skip if f(b) = 1
DECFSZ f,d
Decrement f. Skip the following instruction if
clear.
f-1 -> d skip if Z = 1
INCFSZ f,d
Increment f. Skip the following instruction if
set.
f+1 -> d skip if Z = 0
GOTO k Go to address k -> PC
CALL k Call subroutine PC -> TOS, k -> PC
RETURN Return from subroutine TOS -> PC
RETLW k Return with constant in W k -> W, TOS -> PC
RETFIE Return from interrupt TOS -> PC, 1 -> GIE
Other instructions
NOP No operation TOS -> PC, 1 -> GIE
CLRWDT Clear watchdog timer 0 -> WDT, 1 -> TO, 1 -> PD
SLEEP Go into sleep mode 0 -> WDT, 1 -> TO, 0 -> PD
Data Transfer Instructions
INSTRUCTION DESCRIPTION OPERATION
MOVLW k Move constant to W k -> w
MOVWF f Move W to f W -> f
MOVF f,d Move f to d f -> d
CLRW Clear W 0 -> W
CLRF f Clear f 0 -> f
SWAPF f,d Swap nibbles in f
f(7:4),(3:0) ->
f(3:0),(7:4)
PIC16 ISA:
35 Instructions, 14-bit
W: Working register(Accumulator)
Registers: Memory locations
11. INSTRUCTION DESCRIPTION OPERATION
Data Transfer Instructions
MOVLW k Move constant to W k -> w
MOVWF f Move W to f W -> f
MOVF f,d Move f to d f -> d
CLRW Clear W 0 -> W
CLRF f Clear f 0 -> f
SWAPF f,d Swap nibbles in f f(7:4),(3:0) -> f(3:0),(7:4)
Arithmetic-logic Instructions
ADDLW k Add W and constant W+k -> W
ADDWF f,d Add W and f W+f -> d
SUBLW k Subtract W from constant k-W -> W
SUBWF f,d Subtract W from f f-W -> d
ANDLW k Logical AND with W with constant W AND k -> W
ANDWF f,d Logical AND with W with f W AND f -> d
ANDWF f,d Logical AND with W with f W AND f -> d
IORLW k Logical OR with W with constant W OR k -> W
IORWF f,d Logical OR with W with f W OR f -> d
XORWF f,d Logical exclusive OR with W with constant W XOR k -> W
XORLW k Logical exclusive OR with W with f W XOR f -> d
INCF f,d Increment f by 1 f+1 -> f
DECF f,d Decrement f by 1 f-1 -> f
RLF f,d Rotate left f through CARRY bit
RRF f,d Rotate right f through CARRY bit
COMF f,d Complement f f -> d
Bit-oriented Instructions
BCF f,b Clear bit b in f 0 -> f(b)
BSF f,b Clear bit b in f 1 -> f(b)
Program Control Instructions
BTFSC f,b
Test bit b of f. Skip the following instruction if
clear.
Skip if f(b) = 0
BTFSS f,b
Test bit b of f. Skip the following instruction if
set.
Skip if f(b) = 1
DECFSZ f,d
Decrement f. Skip the following instruction if
clear.
f-1 -> d skip if Z = 1
INCFSZ f,d
Increment f. Skip the following instruction if
set.
f+1 -> d skip if Z = 0
GOTO k Go to address k -> PC
CALL k Call subroutine PC -> TOS, k -> PC
RETURN Return from subroutine TOS -> PC
RETLW k Return with constant in W k -> W, TOS -> PC
RETFIE Return from interrupt TOS -> PC, 1 -> GIE
Other instructions
NOP No operation TOS -> PC, 1 -> GIE
CLRWDT Clear watchdog timer 0 -> WDT, 1 -> TO, 1 -> PD
SLEEP Go into sleep mode 0 -> WDT, 1 -> TO, 0 -> PD
Arithmetic-logic Instructions (partial)
ADDLW k
Add W and
constant
W+k -> W
ADDWF f,d Add W and f W+f -> d
INCF f,d Increment f by 1 f+1 -> f
DECF f,d Decrement f by 1 f-1 -> f
RLF f,d
Rotate left f through
CARRY bit
RRF f,d
Rotate right f
through CARRY bit
COMF f,d Complement f f -> d
SUBLW, SUBWF
ANDLW, ANDWF
IORLW, IORWF
XORLW, XORWF
12. INSTRUCTION DESCRIPTION OPERATION
Data Transfer Instructions
MOVLW k Move constant to W k -> w
MOVWF f Move W to f W -> f
MOVF f,d Move f to d f -> d
CLRW Clear W 0 -> W
CLRF f Clear f 0 -> f
SWAPF f,d Swap nibbles in f f(7:4),(3:0) -> f(3:0),(7:4)
Arithmetic-logic Instructions
ADDLW k Add W and constant W+k -> W
ADDWF f,d Add W and f W+f -> d
SUBLW k Subtract W from constant k-W -> W
SUBWF f,d Subtract W from f f-W -> d
ANDLW k Logical AND with W with constant W AND k -> W
ANDWF f,d Logical AND with W with f W AND f -> d
ANDWF f,d Logical AND with W with f W AND f -> d
IORLW k Logical OR with W with constant W OR k -> W
IORWF f,d Logical OR with W with f W OR f -> d
XORWF f,d Logical exclusive OR with W with constant W XOR k -> W
XORLW k Logical exclusive OR with W with f W XOR f -> d
INCF f,d Increment f by 1 f+1 -> f
DECF f,d Decrement f by 1 f-1 -> f
RLF f,d Rotate left f through CARRY bit
RRF f,d Rotate right f through CARRY bit
COMF f,d Complement f f -> d
Bit-oriented Instructions
BCF f,b Clear bit b in f 0 -> f(b)
BSF f,b Clear bit b in f 1 -> f(b)
Program Control Instructions
BTFSC f,b
Test bit b of f. Skip the following instruction if
clear.
Skip if f(b) = 0
BTFSS f,b
Test bit b of f. Skip the following instruction if
set.
Skip if f(b) = 1
DECFSZ f,d
Decrement f. Skip the following instruction if
clear.
f-1 -> d skip if Z = 1
INCFSZ f,d
Increment f. Skip the following instruction if
set.
f+1 -> d skip if Z = 0
GOTO k Go to address k -> PC
CALL k Call subroutine PC -> TOS, k -> PC
RETURN Return from subroutine TOS -> PC
RETLW k Return with constant in W k -> W, TOS -> PC
RETFIE Return from interrupt TOS -> PC, 1 -> GIE
Other instructions
NOP No operation TOS -> PC, 1 -> GIE
CLRWDT Clear watchdog timer 0 -> WDT, 1 -> TO, 1 -> PD
SLEEP Go into sleep mode 0 -> WDT, 1 -> TO, 0 -> PD
Program Control Instructions
BTFSC f,b
Test bit b of f. Skip
the following
instruction if clear.
Skip if f(b) = 0
BTFSS f,b
Test bit b of f. Skip
the following
instruction if set.
Skip if f(b) = 1
DECFSZ f,d
Decrement f. Skip
the following
instruction if clear.
f-1 -> d skip if Z = 1
INCFSZ f,d
Increment f. Skip
the following
instruction if set.
f+1 -> d skip if Z = 0
GOTO k Go to address k -> PC
CALL k Call subroutine PC -> TOS, k -> PC
RETURN
Return from
subroutine
TOS -> PC
RETLW k
Return with
constant in W
k -> W, TOS -> PC
RETFIE
Return from
interrupt
TOS -> PC, 1 ->
GIE
13. INSTRUCTION DESCRIPTION OPERATION
Data Transfer Instructions
MOVLW k Move constant to W k -> w
MOVWF f Move W to f W -> f
MOVF f,d Move f to d f -> d
CLRW Clear W 0 -> W
CLRF f Clear f 0 -> f
SWAPF f,d Swap nibbles in f f(7:4),(3:0) -> f(3:0),(7:4)
Arithmetic-logic Instructions
ADDLW k Add W and constant W+k -> W
ADDWF f,d Add W and f W+f -> d
SUBLW k Subtract W from constant k-W -> W
SUBWF f,d Subtract W from f f-W -> d
ANDLW k Logical AND with W with constant W AND k -> W
ANDWF f,d Logical AND with W with f W AND f -> d
ANDWF f,d Logical AND with W with f W AND f -> d
IORLW k Logical OR with W with constant W OR k -> W
IORWF f,d Logical OR with W with f W OR f -> d
XORWF f,d Logical exclusive OR with W with constant W XOR k -> W
XORLW k Logical exclusive OR with W with f W XOR f -> d
INCF f,d Increment f by 1 f+1 -> f
DECF f,d Decrement f by 1 f-1 -> f
RLF f,d Rotate left f through CARRY bit
RRF f,d Rotate right f through CARRY bit
COMF f,d Complement f f -> d
Bit-oriented Instructions
BCF f,b Clear bit b in f 0 -> f(b)
BSF f,b Clear bit b in f 1 -> f(b)
Program Control Instructions
BTFSC f,b
Test bit b of f. Skip the following instruction if
clear.
Skip if f(b) = 0
BTFSS f,b
Test bit b of f. Skip the following instruction if
set.
Skip if f(b) = 1
DECFSZ f,d
Decrement f. Skip the following instruction if
clear.
f-1 -> d skip if Z = 1
INCFSZ f,d
Increment f. Skip the following instruction if
set.
f+1 -> d skip if Z = 0
GOTO k Go to address k -> PC
CALL k Call subroutine PC -> TOS, k -> PC
RETURN Return from subroutine TOS -> PC
RETLW k Return with constant in W k -> W, TOS -> PC
RETFIE Return from interrupt TOS -> PC, 1 -> GIE
Other instructions
NOP No operation TOS -> PC, 1 -> GIE
CLRWDT Clear watchdog timer 0 -> WDT, 1 -> TO, 1 -> PD
SLEEP Go into sleep mode 0 -> WDT, 1 -> TO, 0 -> PD
Bit-oriented Instructions
BCF f,b Clear bit b in f 0 -> f(b)
BSF f,b Set bit b in f 1 -> f(b)
Other instructions
NOP No operation
TOS -> PC, 1 ->
GIE
CLRWDT
Clear watchdog
timer
0 -> WDT, 1 -> TO,
1 -> PD
SLEEP
Go into sleep
mode
0 -> WDT, 1 -> TO,
0 -> PD
14. PIC 16F887 layout
Analog I/O
UART
I2C
PORTA
http://www.mikroe.com/eng/chapters/view/74/pic-basic-book-chapter-1-
world-of-microcontrollers/
14
15. Programming a PIC
• Microchip provides the free MPLAB:
– Assembler and linker
– Application development
– Hardware emulation
– Debugging
– C or assembly compatible
• Compiler
– Can be C-based or Basic
– A free one is the CCS C Compiler for PIC12/24/26/18
(not compatible with all PICS) or the HI-TECH PICC-Lit
http://www.microchip.com/pagehandler/
en-us/family/mplabx/
15
16. Programming Tools
• Basic based environments
are available, but don’t
offer the functionality of
C
• Third party IDE’s might be
preferred due to an
enhanced software library
or debugging tools
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dD
ocName=en019469&part=SW007002
16
17. Device Programmer
• Need device to store machine code
into PIC’s memory (EEPROM or Flash)
• Can be external device, but ICSP is
easier:
– Don’t have to remove chip from its
circuit
– Provides interface between computer
(USB) and PIC
– Specific to circuit (due to interconnect
scheme and surrounding circuit)
– Communication protocol requires 5
signals
http://en.wikipedia.org/wiki/PIC_microcontroller
17
18. Device Programmer
Five Signals:
• Vpp (programming voltage)
• Vdd (power)
• Vss (ground)
• IC SPCLK (clock)
• IC SPDAT (data)
http://en.wikipedia.org/wiki/PIC_microcontroller
18
19. Necessary Connections (PIC16F877A)
• PIC can be bread-boarded, with the following
important connections:
– Power
– Ground
– Reset signal
– Crystal (oscillator)
http://www.mikroe.com/eng/chapters/view/74/pic-basic-book-chapter-1-world-of-
microcontrollers/
19
20. Development Boards
• Prepackaged boards come with a multitude of
peripherals for development and debugging:
– Programmer
– User I/O: buttons, port pinouts, LED’s
– Displays: LCD and seven segment
– Power
– Serial connection interface
20
21. Easy PIC v7 from MikroElectronika
PIC
Programmer
Power
Supply
USB Port
Port Pinouts
LEDs and
buttons
http://www.mikroe.com/eng/chapters/view/74/pic-basic-book-chapter-1-
world-of-microcontrollers/
21
The data is transferred using a two wire synchronous serial scheme, three more wires provide programming and chip power. The clock signal is always controlled by the programmer.
Vpp - Programming mode voltage. This must be connected to the MCLR pin, or the Vpp pin of the optional ICSP port available on some large-pincount PICs. To put the PIC into programming mode, this line must be in a specified range that varies from PIC to PIC. For 5V PICs, this is always some amount above Vdd, and can be as high as 13.5V. The 3.3V only PICs like the 18FJ, 24H, and 33F series use a special signature to enter programming mode and Vpp is a digital signal that is either at ground or Vdd. There is no one Vpp voltage that is within the valid Vpp range of all PICs. In fact, the minimum required Vpp level for some PICs can damage other PICs.
Vdd - This is the positive power input to the PIC. Some programmers require this to be provided by the circuit (circuit must be at least partially powered up), some programmers expect to drive this line themselves and require the circuit to be off, while others can be configured either way (like the Microchip ICD2). The Embed Inc programmers expect to drive the Vdd line themselves and require the target circuit to be off during programming.
Vss - Negative power input to the PIC and the zero volts reference for the remaining signals. Voltages of the other signals are implicitly with respect to Vss.
ICSPCLK - Clock line of the serial data interface. This line swings from GND to Vdd and is always driven by the programmer. Data is transferred on the falling edge.
ICSPDAT - Serial data line. The serial interface is bi-directional, so this line can be driven by either the programmer or the PIC depending on the current operation. In either case this line swings from GND to Vdd. A bit is transferred on the falling edge of PGC.
1. Select device
2. Load HEX file
3. Program PIC