You are on page 1of 28

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

You might also like