Om Amriteshwaryai Namaha
1/7/2007
Amrita Vishwa Vidyapeetham
Introduction to Microcontrollers
1/7/2007
Amrita Vishwa Vidyapeetham
What Is a Computer?
A computer is made up
of hardware and
software.
The hardware of a
computer consists of
three types of
components
Processor
Input/Output Devices
Memory
1/7/2007
Amrita Vishwa Vidyapeetham
Processor
Responsible for performing all of
the computational operations and
the coordination of the usage of
resources of a computer.
A computer system may consist
of one or multiple processors.
A processor may perform
general-purpose computations or
special-purpose computations,
such as graphical rendering,
printing, or network processing.
1/7/2007
Amrita Vishwa Vidyapeetham
Input/Output Devices
Input devices:
A computer is designed to
execute programs that
manipulate certain data.
Input devices are needed to
enter the program to be
executed and data to be
processed into the computer.
Examples: keyboards,
keypads, scanners, bar code
readers, sensors, and so on.
1/7/2007
Amrita Vishwa Vidyapeetham
Input/Output Devices
Output devices:
User uses the computer to do
certain computation or to find
information from the Internet or a
database
End results must be displayed or
printed on paper so that the user
can see them.
Examples: CRT displays, flatpanel displays, seven-segment
displays, printers, light-emitting
diodes (LEDs), etc.
1/7/2007
Amrita Vishwa Vidyapeetham
Memory
Programs to be executed and data to be
processed must be stored in memory
devices so that the processor can
readily access them.
1/7/2007
Amrita Vishwa Vidyapeetham
Processor - Registers
A register is a storage location inside the
CPU.
It is used to hold data and/or a memory
address during the execution of an
instruction.
Because the register is very close to the
CPU, it can provide fast access to operands
for program execution.
The number of registers varies greatly from
processor to processor.
1/7/2007
Amrita Vishwa Vidyapeetham
Processor - Arithmetic logic unit (ALU)
Performs all the numerical computations and
logical evaluations for the processor.
Receives data from the memory, performs the
operations, and, if necessary, writes the result
back to the memory.
Todays supercomputer can perform trillions
of operations per second.
The ALU and registers together are referred
to as the datapath of the processor.
1/7/2007
Amrita Vishwa Vidyapeetham
Processor Control Unit
Contains the hardware instruction logic.
Decodes and monitors the execution of instructions.
Acts as an arbiter as various portions of the computer
system compete for the resources of the CPU.
Maintains a register called the program counter (PC)
that keeps track of the address of the next instruction
to be executed.
During the execution of an instruction, the occurrence
of an overflow, an addition carry, a subtraction
borrow, and so forth are flagged by the system and
stored in another register called a status register.
The resultant flags are then used by the programmer
for program flow control and decision making.
1/7/2007
Amrita Vishwa Vidyapeetham
10
Register, ALU, Control Units
1/7/2007
Amrita Vishwa Vidyapeetham
11
Computer Internal Organization
Address Bus
RAM
ROM
Printer
Disk
Monitor
Keyboard
CPU
Data Bus
Read/Write
Control Bus
1/7/2007
Amrita Vishwa Vidyapeetham
12
Microprocessor
Processor packaged in a single integrated circuit.
A microcomputer is a computer that uses a
microprocessor as its CPU.
A personal computer (PC) is a microcomputer.
Many personal computers run at a clock rate higher
than 3.0 GHz and are faster than some
supercomputers of a few years ago.
Depending on the number of bits that a
microprocessor can manipulate in one operation, a
microprocessor is referred to as 4-bit, 8-bit, 16-bit,
32-bit, or 64-bit.
This number is the word length (or datapath length)
of the microprocessor.
The most widely used microprocessors are 8-bit.
1/7/2007
Amrita Vishwa Vidyapeetham
13
Microprocessor - Performance
Although the clock rate of the microprocessor has
been increased dramatically, the improvement in the
access time (or simply called the speed) of the highcapacity memory chips has been moderate at best.
The microprocessor may complete one arithmetic
operation in one clock cycle;
However, it may take many clock cycles to access
data from the memory chip.
This disparity in speed makes the high clock rate of
the microprocessor alone useless for achieving high
throughput.
1/7/2007
Amrita Vishwa Vidyapeetham
14
Microprocessor -
Increasing Performance
Adding a small high-speed memory to the CPU chip
called cache memory.
The CPU can access data from the on-chip cache
memory in one or two clock cycles because it is very
close to the ALU.
The cache memory is effective in improving the
average memory access time because the CPU
demonstrates locality in its access behavior.
Within a short period of time, the CPU tends to
access a small area in the memory repeatedly.
Once the program segment or data has been brought
into the cache, it will be referenced many times.
This results in an average memory access time very
close to that of the access time of the cache memory
1/7/2007
Amrita Vishwa Vidyapeetham
15
Microprocessors & I/Os
Microprocessors and input/output (I/O) devices
have different characteristics and speed.
Peripheral chips (also called interface chips) are
needed to make up the difference between the
microprocessor and the I/O devices.
For example, the Intel i8255 was designed to
interface the 8-bit 8080 microprocessor from Intel
M6821 was designed to interface the 8-bit 6800
from Motorola with I/O devices.
1/7/2007
Amrita Vishwa Vidyapeetham
16
General Purpose Microprocessor System
Address Bus
Micro
Processor
RAM
ROM
I/O Port
Timer
Serial
COM
Port
Data Bus
Control Bus
1/7/2007
Amrita Vishwa Vidyapeetham
17
Microcontrollers (uC)
There are several limitations in
the initial microprocessor designs
that led to the development of
microcontrollers
External memory chips are
needed to hold programs and
data because the early
microprocessors did not have onchip memory.
Glue logic (such as address
decoder and buffer chips) is
required to interface with the
memory chips.
Peripheral chips are needed to
interface with I/O devices.
1/7/2007
Amrita Vishwa Vidyapeetham
18
What is uC?
A microcontroller,
or MCU, is a
computer
implemented on a
single very large
scale integrated
(VLSI) circuit.
1/7/2007
Amrita Vishwa Vidyapeetham
19
uC Components
CPU Registers, ALU, Control Unit
Memory
Timers, including event counting, input capture, output
compare, real-time interrupt, and watchdog timer
Pulse-width modulation (PWM)
Analog-to-digital converter (ADC)
Digital-to-analog converter (DAC)
Parallel I/O interface
Asynchronous serial communication interface (UART)
Synchronous serial communication interfaces (SPI, I2C,
and CAN)
Direct memory access (DMA) controller
Memory component interface circuitry
1/7/2007
Amrita Vishwa Vidyapeetham
20
uC Components Block diagram
1/7/2007
Amrita Vishwa Vidyapeetham
21
uC - Applications
Used as controllers for
displays, printers,
keyboards, modems, charge
card phones, palm-top
computers
Home appliances, such as
refrigerators, washing
machines, and microwave
ovens.
Used to control the
operation of engines and
machines in factories
Automobile control : Today,
a luxurious car may use
more than 100 MCUs
1/7/2007
Amrita Vishwa Vidyapeetham
22
Software
Programs are known as software.
A program is a set of instructions that the computer can
execute.
The program is stored in the computers memory in the
form of binary numbers called machine instructions.
0010 0100 0010 0000 (or 2420 in base 16)
adds the contents of the data register at the hex
address 20 to the another register
0110 1010 0000 0101 (or 6A05 in base 16)
clears contents of the data register located at the
address 5 to 0.
When a machine instruction is fetched from the
memory, it will be decoded in the control unit of the
CPU.
Appropriate control signals will then be generated to
trigger the desired operation.
1/7/2007
Amrita Vishwa Vidyapeetham
23
Assembly Language
Software development in machine language
is extremely hard
Program entering, Program debugging,
Program maintenance are difficult
Assembly language was invented to simplify
the programming job.
An assembly program consists of assembly
instructions.
An assembly instruction is the mnemonic
representation of a machine instruction
Eg : movlw k Move a value to register
Eg : bcf f,b Clear bit b of register f
1/7/2007
Amrita Vishwa Vidyapeetham
24
Assembly Language
The assembly program that the programmer enters is called
source program or source code.
The user needs to invoke an assembler program to translate the
source program into machine language so that the computer
can execute it.
The output of an assembler is also called object code.
There are two types of assemblers: native assembler and cross
assembler.
A native assembler runs on a computer and generates the
machine code to be executed on the same computer or a
different computer having the same instruction set.
A cross assembler runs on a computer but generates machine
code that will be executed by computers that have a different
instruction set.
The Microchip MPASM is a cross assembler designed to run
on a PC to translate assembly programs for the PIC MCUs.
1/7/2007
Amrita Vishwa Vidyapeetham
25
High Level Languages
High-level languages such as C, C++,
and Java are more user friendly
High-level language programs are
independent of uP assembly language.
But only Assembly language programs
gives good understanding of the
hardware.
1/7/2007
Amrita Vishwa Vidyapeetham
26
Overview of PIC uCs
1/7/2007
Amrita Vishwa Vidyapeetham
27
PIC uC
Microchip has introduced six different lines of
8-bit MCUs over the years:
1. PIC12XXX: 8-pin, 12- or 14-bit instruction
format
2. PIC14000: 28-pin, 14-bit instruction format
(same as PIC16XX)
3. PIC16C5X: 12-bit instruction format
4. PIC16CXX(PIC16F87XA): 14-bit instruction
format
5. PIC17: 16-bit instruction format
6. PIC18: 16-bit instruction format
1/7/2007
Amrita Vishwa Vidyapeetham
28
PIC uC & Peripheral blocks
1/7/2007
Amrita Vishwa Vidyapeetham
29
PIC16F87XA Peripheral Functions
I/O ports
Synchronous Serial Port( SSP)
Parallel Slave Port (PSP)
Timer functions, including counters, input capture, output
compare, real-time, interrupt, and watchdog timer
Pulse width modulation (PWM)
SPI and I2C serial interface
Universal Synchronous/Asynchronous Receiver Transmitter
(USART)
A/D converter with 10-bit resolution
Analog comparator
Low-power operation mode
SRAM and EEPROM
EPROM or flash memory
1/7/2007
Amrita Vishwa Vidyapeetham
30
PIC16F87XA Device Features
1/7/2007
Amrita Vishwa Vidyapeetham
31
PIC16F87XA Memory Organization
Memory consists of a sequence of directly
addressable locations.
A memory location is referred to as an information
unit.
Eight bits of information are called a byte.
Four bits of information are called a nibble.
A memory location can be used to store data,
instruction, the status of peripheral devices, and so
on.
Program Memory EPROM / Flash for storing
instructions
Data Memory SRAM for Registers, temporary data
storage
EEPROM Data Storage
1/7/2007
Amrita Vishwa Vidyapeetham
32
PIC16F87XA Memory Space
13
16
Instructions
(Assembly
code)
14
1/7/2007
Amrita Vishwa Vidyapeetham
33
PIC16F87XA Data memory Organization
1/7/2007
Amrita Vishwa Vidyapeetham
34
PIC16F87XA Data memory Bank0
1/7/2007
Amrita Vishwa Vidyapeetham
35
PIC16F87XA Data memory Bank1
1/7/2007
Amrita Vishwa Vidyapeetham
36
PIC16F87XA Data memory Bank2
1/7/2007
Amrita Vishwa Vidyapeetham
37
PIC16F87XA Data memory Bank3
1/7/2007
Amrita Vishwa Vidyapeetham
38
Data Memory
Data memory is implemented as SRAM.
Each location in the data memory is also referred to
as a register or file register.
Data memory is partitioned into multiple banks (Bank
0, 1, 2, 3)
Contains the General Purpose Registers (GPR) and
the Special Function Registers (SFR)
Each bank extends up to 7Fh (128 bytes).
The lower locations of each bank are reserved for the
Special Function Registers.
Above the Special Function Registers are General
Purpose Registers.
All implemented banks contain Special Function
Registers.
1/7/2007
Amrita Vishwa Vidyapeetham
39
Data Memory
GPRs are used to hold dynamic data when
the PIC CPU is executing a program.
SFRs are registers used by the CPU and
peripheral modules for controlling the desired
operation of the MCU.
Some frequently used Special Function
Registers from one bank may be mirrored in
another bank for code reduction and quicker
access.
1/7/2007
Amrita Vishwa Vidyapeetham
40
PIC16F87XA Program Memory Oragnization
1/7/2007
Amrita Vishwa Vidyapeetham
41
PIC16F87XA Program Memory
PIC16F87xA member has a 13-bit PC
Capable of addressing the 8 KB
program memory space.
Accessing a nonexistent memory
location will cause a read of all 0s.
The return address stack is not part of
the program memory space.
1/7/2007
Amrita Vishwa Vidyapeetham
42
Commonly used Registers
Status Register
Working Register
All General Purpose Registers
1/7/2007
Amrita Vishwa Vidyapeetham
43
Instruction Set Summary
1/7/2007
Amrita Vishwa Vidyapeetham
44
Fetch & Execute
Program Memory will have assembly code in
machine language format 14 bits
Each 14-bit data is an instruction
CPU fetches the instruction accessing
program memory
CPU executes the instruction
Puts the result in the Data Memory
Uses the GPRs in the Data Memory
1/7/2007
Amrita Vishwa Vidyapeetham
45
PIC16F87XA Instruction Set
Three Categories
Byte-oriented operations
Bit-oriented operations
Literal and control operations
1/7/2007
Amrita Vishwa Vidyapeetham
46
PIC16F87XA Instruction Format
1/7/2007
Amrita Vishwa Vidyapeetham
47
Opcode Field descriptions
1/7/2007
Amrita Vishwa Vidyapeetham
48
PIC16F87XA Instruction Set
1/7/2007
Amrita Vishwa Vidyapeetham
49
PIC16F87XA Instruction Set
1/7/2007
Amrita Vishwa Vidyapeetham
50
WREG - Working Register
Can any one comment on
this register arrangement?
The WREG register is
referred to as working
register
Is a special register inside
the CPU of uC
Doesnt reside in Data
Memory like SFRs
Involves in the execution of
many instructions
Can be the destination of
many instructions.
1/7/2007
Amrita Vishwa Vidyapeetham
51
Status Register
1/7/2007
Amrita Vishwa Vidyapeetham
52
Status Register
1/7/2007
Amrita Vishwa Vidyapeetham
53
Sample of PIC16F87XA Instructions
1/7/2007
Amrita Vishwa Vidyapeetham
54
Sample of PIC16F87XA Instructions
1/7/2007
Amrita Vishwa Vidyapeetham
55
Sample of PIC16F87XA Instructions
1/7/2007
Amrita Vishwa Vidyapeetham
56
Choosing a Bank in Data Memory
Default values of RP0, RP1 00
So default bank chosen is Bank0
To choose Bank1
BSF 0X03, 5
To choose Bank2
BSF 0X03, 6
To choose Bank3
BSF 0X03,5
BSF 0X03,6
Before accessing any File Register, the appropriate
Bank (0,1,2,3) MUST be chosen.
1/7/2007
Amrita Vishwa Vidyapeetham
57
Q&A
1/7/2007
Amrita Vishwa Vidyapeetham
58
Thankyou
1/7/2007
Amrita Vishwa Vidyapeetham
59