Microcontrollers
8-bit PIC
Microcontroller
Systems
Elements of a digital controller
Microcontrollers
User
input
Program
downloa
d
Input
Peripheral
s
ROM
Read Only
Memory
CPU
Central
Processi
ng
Unit
Output
Peripherals
User
output
RAM
Read &
Write
Memory
The microcontroller contains all these elements in one chip
Microcontrollers
16F877 pin-out
The microcontroller pins have multiple functions
3
PIC 16F877 MCU Block diagram
Flash
ROM
Program
Memory
8192
x 14 bits
Program Counter
(13 bits)
Address
Stack
13 bits
x8
levels
0000 1FFF
Instructions
RAM
File
Registers
368
X 8 bits
000-1FF
Instruction Register
File Address
Program address
Microcontrollers
Literal
Working (W)
Register
File Select
Register
Arithmetic & Logic
Unit
Status bits
Status (Flag)
Register
Opcode
Instruction
Decode &
CPU control
Data Bus
(8 bits)
EEPROM
256 bytes
MCU
control
lines
Ports, Timers
ADC, Serial I/O
Timing control
Clock
Parallel Slave Port (PSP)
Microcontrollers MCU
Reset
Port
Shows the main parts of the chip in simplified form
PIC16F877 simplified file register map
Microcontrollers
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
020h
to
06Fh
070h
to
07Fh
80 General
Purpose
Registers
16 Common
Access GPRs
0A0h
to
0EFh
0F0h
to
0FFh
80 General
Purpose
Registers
Accesses
70h 7Fh
10Ch
to
10Fh
110h
to
16Fh
4 Peripheral
Control
Registers
96 General
Purpose
Registers
18Ch
to
18Fh
190h
to
1EFh
4 Peripheral
Control
Registers
96 General
Purpose
Registers
170h
to
17Fh
Accesses
70h 7Fh
1F0h
to
1FFh
Accesses
70h 7Fh
PIC microcontroller types
Data
word
(bits)
Program
memory
(bytes)
Typical
Instruction
Set
Speed
MIPS
=6
<= 512
33 x 12
bits
<= 2
=8
<= 2 KB
12 / 14
bits
<= 5
<= 64
<= 14 KB
35 x 14
bits
<= 5
18FXXXX
<=
100
<= 128 KB
75 x 16
bits
<= 16
24FXXXX
<=
100
16
<= 128 KB
MCU
10FXXX
Microcontrollers
12FXXX
16FXXX
Pins
76 x 24
bits
= 16
Comment
Low pin count, small form
factor, cheap
No EEPROM, none low power,
assembler program
Low pin count, small form
factor, cheap
EEPROM, 10-bit ADC, some low
power, assembler
Mid-range, UART, I2C, SPI
many low power, C or assembler
program
High range, CAN, USB
J series 3V supply, C program
Power range, 3V supply, no
EEPROM,
data RAM < 8 KB, C program
I/O pin operation
Write TRIS bit
CPU Data Bus
Microcontrollers
Write data bit
Read data bit
TRIS stands for TRIState
Data
Direction
Latch
Output
Data
Latch
Tri-state
Output
Enable
Output
Current
Driver
Input
Data
Latch
Analogue input
multiplexer
The pin can be set for input or output data transfer
7
General Timer Operation
Capture
signal
Instruction
Clock
Microcontrollers
External Pulse
Clock
Source
Select
Prescaler
(clock
divide)
Capture
register
Binary Counter
Compare
register
Post-scaler
(output
divide)
Timer
Overflow/
Timeout
(Interrupt)
Flag
Match flag
A binary counter is used as a timer when driven from the clock
ADC operation
Input volts 0-Vf
ANx
Microcontrollers
Analogue
to Digital
Converter
Reference volts, Vf
Vref+
Setup ADC
Read ADC
8-bit or 16-bit
integer result
The ADC converts an analog input into a binary code
Comparator operation
Vc+
Microcontrollers
Vc-
Compartor
status bit
Vc+ > Vc-
The comparator simply sets a bit if one input is higher than the other
10
Parallel Slave Port operation
Microcontrollers
Chip select
Read
Write
EXTERNAL
Data x 8
Interrupt
Parallel
Slave
Port
INTERNAL
Data x 8
The PSP allows an external data bus to be connected to the MCU
11
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
Microcontrollers
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
Timer Interrupt Process
Program Execution
1
Start counter
statement
2
Run
Counter
until
overflow
Program Execution
3
Timeout
Interrupt
Microcontrollers
4
Jump to
ISR
7
Continue
5
Time-out
Process
(Interrupt
Service
Routine)
6
Return
from
Interrupt
Time-out forces the program to be suspended and the ISR executed
13
USART RS232 Signal
HOST PC
PIC MCU
TX1 Transmit
Microcontrollers
RX1 Receive
Ground
Line
Driver
Interface
RX2
+/- 12V
TX2
COM PORT
Ground
Line drivers convert the signal to a bipolar, higher voltage
14
Typical USART RS232 signal
Bit period
Microcontrollers
Time
Idle
Start
Bit
Bit
0
Bit
1
Bit
2
Bit
3
Bit
4
Bit
5
Bit
6
Bit
7
Stop
Bit
The data bits are timed from the falling edge of the start bit
15
SPI Connections
Master
Serial Data Out, SDO
Serial Data In, SDI
Serial Clock, SCK
Microcontrollers
Slave 1
Slave Select
Outputs
Slave 2
SDO
SDI
SCK
SDO
SDI
SCK
!SS
!SS
SS1
SS2
SS3
SPI uses hardware slave selection and separate clock
16
SPI Signals
SDO/SDI
Microcontrollers
SCK
Data bits
Clock
Each data bit is transferred on the falling edge of the clock
17
I2C Connections
Microcontrollers
+5V
Master
Slave1
Slave2
etc
SDA
SCL
Slave selection uses addresses issued by the Master
18
I2C Signals
Start
Microcontrollers
SDA
Acknowledge
Address / Data bits
7
SCL
Data is strobed in using the master clock, and reception
is acknowledged by the slave by taking the data line low
19
A simple C program
/*
OUTBYTE.C
MPB
2-1-07
V1.0
Microcontrollers
*/
#include "16F877A.h"
// MCU select
void main()
{
output_D(255);
}
// Main block
// Switch on outputs
This minimal program outputs a binary code to Port D
20
Microcontrollers
Program hex file
The machine code is downloaded as a binary file to the chip
21
Microcontrollers
Screenshot of MPLAB Project
The C program is compiled and tested in simulation mode
22
Microcontrollers
PICkit2 demo system hardware
Basic hardware for downloading the program to a test board
23
ICSP target board connections
Application Board
Reset
MCU
10k
Microcontrollers
ICSP
Interface
Vpp/!MCLR
Vdd
Vss
PGD
PGC
1
2
3
4
5
Vdd
Vss
Board +5V Supply
Connections to the target chip for programming
In-Circuit Serial Programming
http://www.embedinc.com/picprg/icsp.htm
Data (PGD) and clock (PGC)
24
Microcontrollers
PICkit2 programmer dialogue
On-screen window for program downloading to target chip
25
Microcontrollers
Microchip ICD2 module
ICD2 provides in-circuit debugging
26
ICD2 program and debug system
Microcontrollers
Host PC
MPLAB
development
system
+ C Compiler
USB
ICD2
interface
6-WAY
connector
PIC MCU
Target
System
Block diagram of the ICD2 programming and in-circuit debugging system
27
Microcontrollers
ICD debugging windows
User interface for in-circuit programming & debugging
28