2 microchip pic
DESCRIPTION
GioiThieuTRANSCRIPT
Mic
roco
ntr
olle
rs
8-bit PIC
Microcontroller
Systems
1
Mic
roco
ntr
olle
rs
Elements of a digital controller
CPU
Central
Processi
ng
Unit
Input
Peripheral
s
Output
Peripherals
ROM
Read Only
Memory
RAM
Read &
Write
Memory
Program
downloa
d
User
input
User
output
The microcontroller contains all these elements in one chip
2
Mic
roco
ntr
olle
rs
The microcontroller pins have multiple functions
3
16F877 pin-out
Mic
roco
ntr
olle
rs
PIC 16F877 MCU Block diagram
Shows the main parts of the chip in simplified form
Flash
ROM
Program
Memory
8192
x 14 bits
0000 – 1FFF
Instruction Register
MCU
control
lines
Program Counter
(13 bits)
Stack
13 bits
x 8
levels
RAM
File
Registers
368
X 8 bits
000-1FF
Data Bus
(8 bits)
File Select
Register
Working (W)
Register
File Address
Literal
Op-
code
Instructions
Address
Arithmetic & Logic
Unit
Ports, Timers
ADC, Serial I/O
Status bits
Timing control
EEPROM
256 bytes
Clock Reset
Port A B C D E
Program address
Instruction
Decode &
CPU control
Status (Flag)
Register
4
Parallel Slave Port (PSP)
Microcontrollers MCU
Mic
roco
ntr
olle
rs
5
Bank 0 (000 – 07F)
Bank 1 (080 – 0FF)
Bank 2 (100-180)
Bank 3(180-1FF)
Address
Register
Address
Register
Address
Register
Address
Register
000h
Indirect
080h
Indirect
100h
Indirect
180h
Indirect
001h
Timer0
081h
Option
101h
Timer0
181h
Option
002h
PC Low
082h
PC Low
102h
PC Low
182h
PC Low
003h
Status Reg
083h
Status Reg
103h
Status Reg
183h
Status Reg
004h
File Select
084h
File Select
104h
File Select
184h
File Select
005h
Port A data
085h
PortA direction 105h
-
185h
-
006h
Port B data
086h
PortB direction 106h
Port B data
186h
PortB direction
007h
Port C data
087h
PortC direction 107h
-
187h
-
008h
Port D data
088h
PortD direction 108h
-
188h
-
009h
Port E data
089h
PortE direction 109h
-
189h
-
00Ah
PC High 08Ah
PC High 10Ah
PC High 18Ah
PC High
00Bh
Interrupt Control
08Bh
Interrupt Control
10Bh
Interrupt Control
18Bh
Interrupt Control
00Ch
to
01Fh
20 Peripheral
Control
Registers
08Ch
to
09Fh
20 Peripheral
Control
Registers
10Ch
to
10Fh
4 Peripheral
Control
Registers
18Ch
to
18Fh
4 Peripheral
Control
Registers
110h
to
16Fh
96 General
Purpose
Registers
190h
to
1EFh
96 General
Purpose
Registers
020h
to
06Fh
80 General
Purpose
Registers
0A0h
to
0EFh
80 General
Purpose
Registers
070h
to
07Fh
16 Common
Access GPRs
0F0h
to
0FFh
Accesses
70h – 7Fh
170h
to
17Fh
Accesses
70h – 7Fh
1F0h
to
1FFh
Accesses
70h – 7Fh
PIC16F877 simplified file register map
Mic
roco
ntr
olle
rs
PIC microcontroller types
MCU
Pins
Data
word
(bits)
Program
memory
(bytes)
Typical
Instruction
Set
Speed
MIPS
Comment
10FXXX
= 6
8
<= 512
33 x 12
bits
<= 2
Low pin count, small form
factor, cheap
No EEPROM, none low power,
assembler program
12FXXX
= 8
8
<= 2 KB
12 / 14
bits
<= 5
Low pin count, small form
factor, cheap
EEPROM, 10-bit ADC, some low
power, assembler
16FXXX
<= 64
8
<= 14 KB
35 x 14
bits
<= 5
Mid-range, UART, I2C, SPI
many low power, C or assembler
program
18FXXXX
<=
100
8
<= 128 KB
75 x 16
bits
<= 16
High range, CAN, USB
J series 3V supply, C program
24FXXXX
<=
100
16
<= 128 KB
76 x 24
bits
= 16
Power range, 3V supply, no
EEPROM,
data RAM < 8 KB, C program
6
Mic
roco
ntr
olle
rs
I/O pin operation
The pin can be set for input or output data transfer
CPU Data Bus
Output
Current
Driver
Output
Data
Latch
Data
Direction
Latch Tri-state
Output
Enable
Input
Data
Latch
Write data bit
Read data bit
Write TRIS bit
Analogue input
multiplexer
7
TRIS stands for TRIState
Mic
roco
ntr
olle
rs
General Timer Operation
A binary counter is used as a timer when driven from the clock
Binary Counter
Pre-
scaler
(clock
divide)
Post-scaler
(output
divide)
Timer
Overflow/
Timeout
(Interrupt)
Flag
Clock
Source
Select
Instruction
Clock
External Pulse
Capture
register
Compare
register
Capture
signal
Match flag
8
Mic
roco
ntr
olle
rs
ADC operation
The ADC converts an analog input into a binary code
ANx
Analogue
to Digital
Converter
Vref+
Input volts 0-Vf
Reference volts, Vf 8-bit or 16-bit
integer result
Setup ADC
Read ADC
9
Mic
roco
ntr
olle
rs
Comparator operation
Vc+
Vc-
Compartor
status bit
Vc+ > Vc-
The comparator simply sets a bit if one input is higher than the other
10
Mic
roco
ntr
olle
rs
Parallel Slave Port operation
The PSP allows an external data bus to be connected to the MCU
Parallel
Slave
Port
Chip select
Read
Write
EXTERNAL
Data x 8
Interrupt
INTERNAL
Data x 8
11
Mic
roco
ntr
olle
rs
Interrupts sources in the PIC 16F877
Interrupt Source
Interrupt trigger event
CCS C Interrupt label
TIMERS
Timer 0
Timer 0 register overflow
INT_TIMER0
Timer 1
Timer 1 register overflow
INT_TIMER1
CCP 1
Timer 1 capture or compare detected
INT_CCP1
Timer 2
Timer 2 register overflow
INT_TIMER2
CCP2
Timer 2 capture or compare detected
INT_CCP2
PORTS
RB0/INT pin
Change on single pin RB0
INT_EXT
Port B pins
Change on any of four pins RB4 – RB7
INT_RB
Parallel Slave Port
Data received at PSP (write input active)
INT_PSP
Analog Converter
A/D conversion completed
INT_AD
Analog Comparator
Voltage compare true
INT_COMP
SERIAL
UART Serial Port
Received data available
INT_RDA
UART Serial Port
Transmit data buffer empty
INT_TBE
SPI Serial Port
Data transfer completed (read or write)
INT_SSP
I2C Serial Port
Interface activity detected
INT_SSP
I2C Serial Port
Bus collision detected
INT_BUSCOL
MEMORY
EEPROM
Non-volatile data memory write complete
INT_EEPROM
12
Mic
roco
ntr
olle
rs
Program Execution
Program Execution
1
Start counter
statement
2
Run
Counter
until
overflow
5
Time-out
Process
(Interrupt
Service
Routine)
7
Continue
3
Timeout
Interrupt
6
Return
from
Interrupt
4
Jump to
ISR
Timer Interrupt Process
Time-out forces the program to be suspended and the ISR executed
13
Mic
roco
ntr
olle
rs
PIC MCU
TX1 Transmit
RX1 Receive
Ground
HOST PC
RX2
TX2
COM PORT
Ground
Line
Driver
Interface
USART RS232 Signal
Line drivers convert the signal to a bipolar, higher voltage
+/- 12V
14
Mic
roco
ntr
olle
rs
Typical USART RS232 signal
Bit
2
Bit
3
Idle Start
Bit
Bit
0
Bit
1
Bit
4
Bit
5
Bit
6
Bit
7
Stop
Bit
Time
1
0
Bit period
The data bits are timed from the falling edge of the start bit
15
Mic
roco
ntr
olle
rs
Master
Serial Data Out, SDO
Serial Data In, SDI
Serial Clock, SCK
Slave Select SS1
Outputs SS2
SS3
Slave 1
SDO
SDI
SCK
!SS
Slave 2
SDO
SDI
SCK
!SS
SPI Connections
SPI uses hardware slave selection and separate clock
16
Mic
roco
ntr
olle
rs
SPI Signals
7 6 5 4 3 2 1 0 Data bits SDO/SDI
SCK Clock
Each data bit is transferred on the falling edge of the clock
17
Mic
roco
ntr
olle
rs
Master Slave1 Slave2 +5V
SDA
SCL
etc
I2C Connections
Slave selection uses addresses issued by the Master
18
Mic
roco
ntr
olle
rs
7 6 5 4 3 2 1 0 SDA
SCL
Acknowledge Address / Data bits
Start
I2C Signals
Data is strobed in using the master clock, and reception
is acknowledged by the slave by taking the data line low
19
Mic
roco
ntr
olle
rs A simple C program
/*
OUTBYTE.C MPB 2-1-07 V1.0
*/
#include "16F877A.h" // MCU select
void main() // Main block
{
output_D(255); // Switch on outputs
}
This minimal program outputs a binary code to Port D
20
Mic
roco
ntr
olle
rs
Program hex file
The machine code is downloaded as a binary file to the chip 21
Mic
roco
ntr
olle
rs
Screenshot of MPLAB Project
The C program is compiled and tested in simulation mode
22
Mic
roco
ntr
olle
rs
PICkit2 demo system hardware
Basic hardware for downloading the program to a test board
23
Mic
roco
ntr
olle
rs
ICSP target board connections
Application Board
MCU
Vpp/!MCLR
Vdd
Vss
PGD
PGC
1
2
3
4
5
ICSP
Interface
Reset
10k
Vdd Vss
Board +5V Supply
Connections to the target chip for programming
24
In-Circuit Serial Programming
http://www.embedinc.com/picprg/icsp.htm
Data (PGD) and clock (PGC)
Mic
roco
ntr
olle
rs
PICkit2 programmer dialogue
On-screen window for program downloading to target chip
25
Mic
roco
ntr
olle
rs
Microchip ICD2 module
ICD2 provides in-circuit debugging
26
Mic
roco
ntr
olle
rs
ICD2 program and debug system
Host PC
MPLAB
development
system
+ C Compiler
ICD2
interface
PIC MCU
Target
System USB 6-WAY
connector
Block diagram of the ICD2 programming and in-circuit debugging system
27
Mic
roco
ntr
olle
rs
ICD debugging windows
User interface for in-circuit programming & debugging
28