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 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% 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 D 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 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 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 SP 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 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 C Condition Code Register (CCR)
24 68HC11 CPU CCR Explained Stop Disable X-Interrupt Mask Half Carry I-Interrupt Mask Carry Overflow Zero Negative 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 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 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 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 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 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 #% ADDA #% ; 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 S X H I N Z V C
36 HC11 CPU IInterrupt Mask XXIRQ mask SDisable STOP instructions Note: Bits set by the user to tell the processor how to do things Command Register
37 HC11 CPU Thank You