PIC - kumbaya.name

advertisement
PIC MICROCONTROLLER
Rodolfo Rodriguez
Kevin Zhang
MJ Gellada
1
Overview
•
•
•
•
•
Microcontroller and Architecture Basics
Variants among families
ISA
Programming overview
Hardware interface/Developmental boards
2
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
v
http://www.microchip.com/stellent/images/mchpsiteimages/en537986.jpg
4
8-bit Core Architecture
• Harvard (separate code
and data space)
• RISC
• One accumulator
– W Register
• Small addressable data
space (256 bytes)
– Banking
• RAM
http://www.microchip.com/_images/BaselineArch_large.jpg
– PC, special purpose
registers
5
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
16-bit and 32-bit Architecture
•
•
•
•
•
More working registers
No bank switching
Assignable interrupt vector table
More flash memory
Cache (32-bit architecture)
7
Application Notes
• Very extensive
– 16758 items
• Description of
documentation
• PDF documenation
• Source code
http://www.microchip.com/TechDoc.aspx?type=appnotes
http://www.microchip.com/TechDoc.aspx?type=appnotes
8
Baseline
Architecture
Mid-Range
Architecture
Enhanced Mid-Range
Architecture
PIC18 Architecture
Pin Count
6-40
8-64
8-64
Interrupts
No
Single interrupt
capability
Single interrupt
Multiple interrupt capability
capability with
with hardware context save
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
8-bit architecture
18-100
INSTRUCTION
PIC16 ISA:
35 Instructions, 14-bit
Data Transfer Instructions
INSTRUCTION
MOVLW k
MOVWF f
MOVF f,d
DESCRIPTION
OPERATION
Move constant to W k -> w
Move W to f
Move f to d
W -> f
f -> d
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)
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
BCF f,b
Clear bit b in f
0 -> f(b)
BSF f,b
Clear bit b in f
1 -> f(b)
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
NOP
No operation
TOS -> PC, 1 -> GIE
CLRWDT
Clear watchdog timer
0 -> WDT, 1 -> TO, 1 -> PD
Data Transfer Instructions
Arithmetic-logic Instructions
Bit-oriented Instructions
Program Control Instructions
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)
W: Working register(Accumulator)
Registers: Memory locations
Other instructions
SLEEP
Go into sleep mode
0 -> WDT, 1 -> TO, 0 -> PD
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)
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
BCF f,b
Clear bit b in f
0 -> f(b)
BSF f,b
Clear bit b in f
1 -> f(b)
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
NOP
No operation
TOS -> PC, 1 -> GIE
CLRWDT
Clear watchdog timer
0 -> WDT, 1 -> TO, 1 -> PD
Data Transfer Instructions
Arithmetic-logic Instructions (partial)
ADDLW k
ADDWF f,d
INCF f,d
DECF f,d
RLF f,d
RRF f,d
Add W and
constant
Add W and f
Increment f by 1
Decrement f by 1
W+k -> W
W+f -> d
f+1 -> f
f-1 -> f
Rotate left f through
CARRY bit
Rotate right f
through CARRY bit
Arithmetic-logic Instructions
Bit-oriented Instructions
Program Control Instructions
COMF f,d
Complement f
SUBLW, SUBWF
ANDLW, ANDWF
IORLW, IORWF
XORLW, XORWF
f -> d
Other instructions
SLEEP
Go into sleep mode
0 -> WDT, 1 -> TO, 0 -> PD
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)
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
BCF f,b
Clear bit b in f
0 -> f(b)
BSF f,b
Clear bit b in f
1 -> f(b)
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
NOP
No operation
TOS -> PC, 1 -> GIE
CLRWDT
Clear watchdog timer
0 -> WDT, 1 -> TO, 1 -> PD
Data Transfer Instructions
Program Control Instructions
BTFSC f,b
BTFSS f,b
DECFSZ f,d
INCFSZ f,d
GOTO k
CALL k
RETURN
RETLW k
RETFIE
Test bit b of f. Skip
the following
instruction if clear.
Test bit b of f. Skip
the following
instruction if set.
Decrement f. Skip
the following
instruction if clear.
Increment f. Skip
the following
instruction if set.
Go to address
Call subroutine
Return from
subroutine
Return with
constant in W
Return from
interrupt
Arithmetic-logic Instructions
Skip if f(b) = 0
Skip if f(b) = 1
f-1 -> d skip if Z = 1
f+1 -> d skip if Z = 0
Bit-oriented Instructions
k -> PC
Program Control Instructions
PC -> TOS, k -> PC
TOS -> PC
k -> W, TOS -> PC
TOS -> PC, 1 ->
GIE
Other instructions
SLEEP
Go into sleep mode
0 -> WDT, 1 -> TO, 0 -> PD
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)
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
Bit-oriented Instructions
SUBWF f,d
Subtract W from f
f-W -> d
ANDLW k
Logical AND with W with constant
W AND k -> W
BCF f,b
Clear bit b in f
0 -> f(b)
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
BSF f,b
Set bit b in f
1 -> f(b)
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
BCF f,b
Clear bit b in f
0 -> f(b)
BSF f,b
Clear bit b in f
1 -> f(b)
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
NOP
No operation
TOS -> PC, 1 -> GIE
CLRWDT
Clear watchdog timer
0 -> WDT, 1 -> TO, 1 -> PD
Data Transfer Instructions
Arithmetic-logic Instructions
Other instructions
NOP
CLRWDT
SLEEP
No operation
Clear watchdog
timer
Go into sleep
mode
TOS -> PC, 1 ->
GIE
0 -> WDT, 1 -> TO,
1 -> PD
0 -> WDT, 1 -> TO,
0 -> PD
Bit-oriented Instructions
Program Control Instructions
Other instructions
SLEEP
Go into sleep mode
0 -> WDT, 1 -> TO, 0 -> PD
PIC 16F887 layout
Analog I/O
PORTA
I2C
UART
http://www.mikroe.com/eng/chapters/view/74/pic-basic-book-chapter-1world-of-microcontrollers/
14
Programming a PIC
• Microchip provides the free MPLAB:
–
–
–
–
–
Assembler and linker
Application development
Hardware emulation
Debugging
C or assembly compatible
• Compiler
http://www.microchip.com/pagehandler/
en-us/family/mplabx/
– 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
15
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
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
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
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-ofmicrocontrollers/
19
LED example: code
//LED example program written for
//PIC programming tutorial. From
//(http://seniord.ece.iastate.edu/dec0604/index_files/tutorialDec0604.pdf)
//standard include files
#include <stdlib.h>
#include <pic.h>
#include “delay.h”
//main function
void main()
{
PORTA = 0x00; //set RA0-RA5 low
TRISA = 0x00; //set PORTA to output
//superloop
while(1)
{
PORTA = ~PORTA;
DelayMs(250);
}
}
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
21
Easy PIC v7 from MikroElectronika
USB Port
Programmer
PIC
Power
Supply
LEDs and
buttons
Port Pinouts
http://www.mikroe.com/eng/chapters/view/74/pic-basic-book-chapter-1world-of-microcontrollers/
22
Additional Peripherals
Touch Screen
ADC converter
23
Questions?
24
References
• http://www.microchip.com/
• http://en.wikipedia.org/wiki/PIC_microcontroller
• http://www.mikroe.com/eng/chapters/view/10/c
hapter-9-instruction-set/
• http://www.mikroe.com/eng/chapters/view/74/
pic-basic-book-chapter-1-world-ofmicrocontrollers/
• http://www.slideshare.net/element14/microchip
s-16bit-and-32bit-pic-mcus-7267006
• http://www.ladyada.net/library/picvsavr.html
25
Download