Upload
stephanie-watson
View
288
Download
13
Tags:
Embed Size (px)
Citation preview
1
Introduction to Microcontroller
Microcontroller Fundamentals &
Programming
2
Microprocessors
What is a microprocessor?
•Only a Central Processing Unit (CPU)
•Has Address, Data and Control Buses
Note: By itself, it is totally useless.
3
Microcontrollers
What is a microcontroller?
•A processor
•Parallel and serial digital I/O
•Analog I/O
•Counters and timers
• Internal ROM and/or EPROM
4
What are microcontrollers used in?
• Watches• Microwaves• Stereo Receivers
Some products that you might know:
• NASA’s Sojourner Rover – 8-bit Intel 80C85• Palm Vx handheld – 32-bit Motorola Dragonball EZ• Sonicare toothbrush – 8-bit Zilog Z8• The Vendo V-MAX 720 Soda Machine – Motorola HC11
Microcontrollers
5
Microcontrollers
Microcontrollers are a large market
6
Microcontrollers
So what languages are they being programmed in?
Assembly ~ 21% ~ 10%
C ~ 69% ~ 80%
C++ ~ 5% ~ 6%
Java ~ 1 % ~ 2%
Other ~ 3 % ~ 2%
1998-1999
1999-2000
Source: TRON Association Survey 1998/99 & 1999/2000
7
68HC11
Motorola 68HC11E9 (features)
•ROM (12KB), EEPROM (512B), RAM (512B)
•Counter/Timer system
•A/D converter
•Parallel I/Os
•Expansion bus
•Serial communication
8
68HC11
68HC11E9 Architecture
12 KBYTES ROM
512 BYTES RAM
9
68HC11 CPU
Memory Map of MC68HC11E9
10
68HC11 CPU
68HC11 Programmer’s Model
11
68HC11 CPU
68HC11 Programmer’s Model
12
68HC11 CPU
Accumulator A and B
• ACCA or ACCB is a 8-bit general-purpose registers.
• Stores temporary data from memory or I/O devices.
• Stores result of all arithmetic and logic operations.
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 0 0 1 1 1 ACCA or ACCB
13
68HC11 CPU
Accumulator A & B
Example:
1. LDAA $8000 ; loads contents of memory ; location $8000 into ACCA
2. ADDA #$25 ; ACCA = ACCA + $25
3. STAA $9000; store result of ACCA into ; memory location
$9000
14
68HC11 CPU
68HC11 Programmer’s Model
15
68HC11 CPU
Accumulator D
• ACCD represents Accumulator-D
• ACCD = (ACCA + ACCB) to form a 16-bit register.
• ACCA represents most significant byte (MSByte)
• ACCB represents least significant byte (LSByte)
ACCD
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0
ACCA ACCB
16
68HC11 CPU
68HC11 Programmer’s Model
17
68HC11 CPU
Index Register X and Y
• Index register X and Y are two 16-bit registers.
• Use in Index Addressing Mode.
Examples:
LDX #$1000 ;loads $1000 into IX
LDAA $10,X ;memory ($10+IX) content
;load to ACCA.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0
IX or IY registers
18
68HC11 CPU
68HC11 Programmer’s Model
19
68HC11 CPU
Stack Pointer (SP)
• Stack occupied a small section in RAM memory.
• Stack Pointer (SP) register:
• a 16-bit register.• contains address of the stack.
Application of stack :
• used in subroutine and interrupts operations
• storing all the CPU registers contents.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0SP Register
20
68HC11 CPU
68HC11 Programmer’s Model
21
68HC11 CPU
Program Counter (PC)
• Program Counter (PC) is a 16-bit register .
• PC contains address of next instruction to be executed.
Example:
If PC = $0100, then;
CPU starts executing from memory location $0100 onwards.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0 Program Counter
22
68HC11 CPU
68HC11 Programmer’s Model
23
68HC11 CPU
Condition Code Register (CCR)
• CCR is an 8-bit register.
• Bits 7 to 0 labeled as S X H I N Z V C respectively.
• H, N, Z, V, C bits indicate status of last arithmetic or logic operation.
• S, X, I bits indicate the masking bits.
D7 D6 D5 D4 D3 D2 D1 D0
S X H I N Z V CCondition Code Register (CCR)
24
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
25
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
26
68HC11 CPU
N (Negative) bit• When the result of last arithmetic or logical
operation is negative; then
N = “1” (MSB = “1”)
• Whenever the result is positive; then
N = “0” (MSB = “0”)
Example
(1) LDAA #$7F ; N = “0” , msb = “0”
(2) LDAB #$80 ; N = “1” , msb = “1”
27
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
28
68HC11 CPU
Z (Zero) bit
• Z = “1” - result of last operation produces zero.
- accumulator content = $00
• Z = “0” - result of last operation greater than zero.
- accumulator content = $00
Example
(1) LDAA #$00 ; Z = “1”, ACCA = 0
(2) LDAB #$01 ; Z = “0”, ACCB > 0
29
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
30
68HC11 CPU
C (Carry) bit
• C =“1” - addition or subtraction produces a
carry or a borrow.
• C =“0” - after addition or subtraction
no carry or no borrow.
*Note: C-bit also used in shift and rotate instructions. Example:
LDAA #$80
ADDA #$90 ; C=“1”
WAI ; bit-7 carries “1” to C-bit
31
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
32
68HC11 CPU
V (Overflow) bit
• V =“1” - result is wrong, after an addition
or subtraction on 2’s complement
signed number caused an overflow
• V =“0” - result is correct, after an addition
or subtraction on 2’s complement
signed number, no overflow
33
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
34
68HC11 CPU
H (Half-carry) bit
• H =“1” - an 8-bit addition, produces a carry from bit-3 to bit-4.
• H =“0” - an 8-bit addition, produces
no carry from bit-3 to bit-4.
Example:
LDAA #% 0011 1000
ADDA #% 0011 1010 ; H=“1”
WAI ; (after adding)
1+1 produces a carry
35
68HC11 CPU
CCR Explained
Stop Disable
X-Interrupt Mask
Half Carry
I-Interrupt Mask
Carry
Overflow
Zero
Negative
7 6 5 4 3 2 1 0
S X H I N Z V C
36
HC11 CPU
I Interrupt Mask
X XIRQ mask
S Disable STOP instructions
Note:
Bits set by the user to tell the processor how to dothings
Command Register
37
HC11 CPU
Thank You