1 introduction to microcontroller microcontroller fundamentals & programming

Post on 18-Jan-2016

319 Views

Category:

Documents

13 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related