5 Architektura MCU 2010 id 4004 Nieznany (2)

background image

1

Podstawy techniki

mikroprocesorowej

ETEW006

Architektura wybranych

mikrokontrolerów

Andrzej Stępień

Katedra Metrologii Elektronicznej i Fotonicznej

C51: Typy pamięci

CODE

DATA

IDATA

IDATA

DATA

0

0

7Fh

80h

0FFh

SFR

RAM

rejestry

R

A

M

XDATA

wewn

ę

trzna

pami

ęć

kodu

programu

zewn

ę

trzna

pami

ęć

kodu

programu

zewn

ę

trzna

pami

ęć

danych

wewn

ę

trzna

pami

ęć

danych

0

C51: Adresowanie pamięci RAM i SFR

adresowanie
po

ś

rednie

(

@Ri

)

adresowanie

bezpo

ś

rednie

(

addr

)

adresowanie
rejestrowe (

Rn

)

DATA

IDATA

IDATA

DATA

0

7Fh

80h

0FFh

SFR

RAM

rejestry

R

A

M

segment bitowy

C51: - segment bitowy i pamięć RAM

adresowanie bitu CY
w rejestrze PSW
( adres 0D0h ):

CLR 0D0h.7
CLR 0D7h
CLR PSW.7
CLR C

adresowanie bitu:

CLR 2Dh.3
CLR 6Bh

C51: Rejestry specjalne (SFR)

C51, C515, C517A

Rejestry specjalne (SFR)

C51,

C515,

C517A

background image

2

C51, ST7: CPU Architecture

temp

ALU

A

RBn

ROM

SFR

RAM

SP

PSW

C51

ST72334

PC

B

temp

ALU

A

X

ROM

Periph

RAM

SP

CC

PC

Y

DPTR

internal registers

Register R1 (SP)

Register R4

Register R15

Register R3 (CG2)

ALU + Shifter

Cin

C (Carry)
Z (Zero)
N (Negative)
V (oVerflow)

Temp

Register

Increment logic

Register R0 (PC)

Memory Data
Bus MDB

Memory Address

Bus MAB

Memory Address Register MA

Instruction

Fetch

Register

S

e

q

u

e

n

c

e

r

...........

Register R2 (SR/CG1)

MSP430
CPU Architecture

MSP430

Status Register

SCG

1

SCG

0

OSC

Off

CPU

Off

GIE

N

Z

C

V

RESERVED

+2

+4

+8

+1

most used constant:



R0 - Program Counter PC



R1 - Stack Pointer SP



R2

-

Status Register SR

/ Constant Generator CG1

(+4, +8

)



R3 - Constant Generator CG2 (

0, +1, +2,

−−−−

1

)



R4 .. R15 - User working Registers

MSP430x4xx Family User’s Guide.

Texas Instruments, SLAU056G, 2007, p.4-9

MSP430

Constant Generator

R2

-

Status Register SR

/

Constant Generator CG1

(

+4, +8

)

R3 - Constant Generator CG2

(

0, +1, +2, –1

≡≡≡≡

FFh, FFFFh

):

CLR

*

Clear destination:

MOV

#

0

, dst

; 0

dst

*

):

MOV #

0

, dst

CLRC

*

Clear Carry bit:

BIC

#

1

, SR

;

0

C

*

):

BIC

#

1

, SR

CLRZ

*

Clear Zero bit:

BIC

#

2

, SR

;

0

Z

*

):

BIC

#

2

, SR

SETN

*

Clear Negative bit:

BIS

#

4

, SR

; 1

N

*

):

BIS

#

4

, SR

EINT

*

Disable general

BIS

#

8

, SR

; 1

GIE

*

):

BIS

#

8

, SR

interrupts:

INV

*

Invert destination:

INV.W dst

;

*

):

XOR #

0FFFFh

, dst

*

) Emulation

MSP430x4xx Family User’s Guide.

Texas Instruments, SLAU056G, 2007, p.4-61 ...

MSP430 —

Core

&

Emulated Instructions

MOV

- move source to destination:

scr

dst

MOV

BR

Branch to destination:

MOV Rn, PC

CLR

Clear destination:

MOV #0, dst

NOP

No operation:

MOV #0, #0

POP

Pop word from stack to destination:

MOV @SP+ dst

RET

Return from subroutine:

MOV @SP+, PC

ADD

- add source operand to the destination operand:

scr + dst

dst

ADD

INC

Increment destination:

ADD #1, dst

INCD

Double-Increment destination:

ADD #2, dst

RLA

Rotate left arithmetically:

ADD dst, dst

BIC

- clear bits in destination:

.NOT. scr .AND. dst

dst

BIC

CLRC

Clear Carry bit:

BIC #1, SR

CLRZ

Clear Zero bit:

BIC #2, SR

CLRN

Clear Negative bit:

BIC #4, SR

DINT

Disable general interrupts:

BIC #8, SR

ARM7: CPU Architecture

PC

(Program

Counter)

User

System

Supervisor

Abort

Undefined Interrupt

Fast

Interrupt

Privileged Modes

Exception Modes

R14_fiq

R13_fiq

R12_fiq

R11_fiq

R10_fiq

R9_fiq

R8_fiq

R14_irq

R13_irq

R14_und

R13_und

R14_abt

R13_abt

R14_svc

R13_svc

CPSR_svc
SPSR_svc

CPSR_abt
SPSR_abt

CPSR_und
SPSR_und

CPSR_irq
SPSR_irq

CPSR_fiq

SPSR _fiq

R0
R1
R2
R3
R4
R5
R6
R7

R8
R9

R10
R11
R12

R13

(Stack Pointer

)

R14

(Link Register)

Current Program

Status Register

CPSR

CPSR

Saved Program

Status Register

background image

3

Multiplexed Bus

(1/2)

Magistrala multipleksowana

(

Multiplexed Bus

)

- najcz

ęś

ciej poł

ą

czenie całej

lub cz

ęś

ci magistrali adresowej i danych; rozdzielenie czasowe oparte jest o

dodatkowy sygnał, np. ALE (

Address Latch Enable

) w rodzinie

C51

:

– ALE = 1 oznacza przesyłanie adresów

– ALE = 0 oznacza przesyłanie danych

Address

Bus

Data

Bus

16 bit

8 bit

Ex-
ter-

nal

Me-

mory

I/O

Non-Multiplexed Address Bus

(16 CPU Lines)

D

7

..D

0

A

15

..A

0

Address
Bus

Data Bus

8 bit

(all Bus)

Multiplexed Address Bus

(9 CPU Lines)

Buffer

Strobe

D

7

..D

0

A

15

..A

8

A

7

..A

0

Multiplexed Bus

(2/2)

Address

Bus

Data

Bus

16 bit

8 bit

Ex-
ter-

nal

Me-

mory

I/O

Address
Bus

Data Bus

8 bit

(all Bus)

Non-Multiplexed Address Bus

(16 CPU Lines)

Multiplexed Address Bus

(9 CPU Lines)

Buffer

Strobe

D

7

..D

0

D

7

..D

0

A

15

..A

0

A

15

..A

8

A

7

..A

0

A

15

..A

8

Port P2

Port P0

A

7

..A

0

Data

A

7

..A

0

ALE

Znaczniki

C, H, V, S, N, Z

(AVR - 1/2)

Rd Rr

bez znaku

C

H

V

N

S

Z

0xFF + 1 = 1111 1111b

255 + 1 = 256 !

0000 0001b

–1 + 1 = 0

C=1

0000 0000b

1

1

0

0

0

1

ze znakiem

R

H

V

C = 1,

Rd

7

=1, Rr

7

=0, R

7

=0

H = 1,

Rd

3

=1, Rr

3

=0, R

3

=0

V = 0,

Rd

7

=1, Rr

7

=0, R

7

=0

N = 0, R

7

=0

S = 0
Z = 1, all R

n

=0

7

Rd

7

R

7

R

7

Rr

7

Rr

7

Rd

C

+

+

=

0

1

4

R

R

2

R

3

R

R

5

R

6

R

7

R

Z

=

7

R

N

=

7

7

R

7

Rr

Rd

7

R

7

Rr

7

Rd

V

+

=

3

Rd

3

R

3

R

3

Rr

3

Rr

3

Rd

H

+

+

=

V

N

S

=

C51:

OV = C xor A

7 | 6

P = 0 dla parzystej liczby 1 w Acc

8-bit AVR Instruction Set.

Atmel, Rev. 0856G–AVR–07/08, doc0856, p.15

C51:

OV = C xor A

7 | 6

P = 0 dla parzystej liczby 1 w Acc i C

Znaczniki

C, H, V, S, N, Z

(AVR - 2/2)

Rd Rr

bez znaku

C

H

V

N

S

Z

0x7F + 1 = 0111 1111b

127 + 1 = 128

0000 0001b

+127 + 1 = – 128 !

C=0

1000 0000b

0

1

1

1

0

0

ze znakiem

R

H

V

C = 0,

Rd

7

=0, Rr

7

=0, R

7

=1

H = 1,

Rd

3

=1, Rr

3

=0, R

3

=0

V = 1,

Rd

7

=0, Rr

7

=0, R

7

=1

N = 1, R

7

=1

S = 0
Z = 0,

all R

n

=0

7

Rd

7

R

7

R

7

Rr

7

Rr

7

Rd

C

+

+

=

0

1

4

R

R

2

R

3

R

R

5

R

6

R

7

R

Z

=

7

R

N

=

7

7

R

7

Rr

Rd

7

R

7

Rr

7

Rd

V

+

=

3

Rd

3

R

3

R

3

Rr

3

Rr

3

Rd

H

+

+

=

V

N

S

=

C51

Program Status Register

Program Status Word

(PSW) Register:

addr in SFR = 0D0h

Carry flag

Auxiliary Carry flag

General purpose user flag

Register bank select control bits

Overflow flag

Parity flag

CY AC

F0 RS1 RS0

OV

F1

P

UM10344. P89LPC9151/9161/9171 User manual.

NXP Semiconductors, 7 January 2010, Rev. 01

C51

Conditional Branch

Test

Mnemonic

Operation

A = 0

JZ

rel

jump if Acc = 0

A

0

JNZ rel

jump if Acc

0

C = 0

JNC

rel

jump if C = 0

C = 1

JC

rel

jump if C = 1

bit = 0

JNB bit, rel

jump if bit = 0

bit = 1

JB

bit, rel

jump if bit = 1

bit = 1

JBC bit, rel

jump if bit = 1 & clear bit

Carry flag

Auxiliary Carry flag

General purpose

user flag

Register bank select

control bits

Overflow flag

Parity flag

AC

F0

RS

1

CY

F1

P

OV

RS

0

P0

TCON

P1

SCON

P2

IE

P3

PSW

ACC

B

80h

88h

90h

98h

0A0h

0A8h

0B0h

0B8h

IE

0C0h

0C8h

0D0h

0D8h

0E0h

0E8h

0F0h

0F8h

C51 SFR

Bit
addressing

SP

TMOD

SBUF

background image

4

ST7

Condition Code Register

1

1

H

1

N Z C

I

Condition Code

(CC) Register

Carry flag

Half Carry flag

General Interrupt flag

Negative flag

Zero flag

ST7 FAMILY. PROGRAMMING MANUAL.

STMicroelectronics, November 2005, p.30

ST7

Conditional

Branch

xx

Condition

Comment

NC

C = 0

Not Carry

UGE

C = 0

Unsigned Greater or Equal (>=)

C

C = 1

Carry

ULT

C = 1

Unsigned Lower Than (<)

NE

Z = 0

Not Equal

EQ

Z = 1

Equal

UGT

(C

OR

Z) = 0

Unsigned Greater Then (>)

ULE

(C

OR

Z) = 1

Unsigned Lower or Equal (<=)

T

True

(1)

RF

False

(0)

NH

H = 0

Not Half-Carry

RH

H = 1

Half-Carry

IL

Interrupt Line is Low

IH

Interrupt Line is High

NM

I = 0

Not Interrupt Mask

M

I = 1

Interrupt Mask

PL

N = 0

Plus

MI

N = 1

Minus

Test

Mnemonic

Operation

bit = 0

BTJF

dst, #pos

jump if bit is false (0)

bit = 1

BTJT

dst, #pos

jump if bit is true (1)

xx

JRxx

jump if condition is true

1 1

H

1

Z C

I

Carry flag

Half Carry

flag

General Interrupt flag

Negative

flag

Zero flag

N

MSP430

Status Register (R2)

SCG

1

SCG

0

OSC

Off

CPU

Off

GIE

N

Z

C

V

RESERVED

+2

+4

+8

+1

most used constant:

V

Overflow bit

SCG1

System clock generator 1

SCG0

System clock generator 0

OSC Off

Oscillator Off

CPU Off

CPU Off

GIE

General interrupt enable

N

Negative bit

Z

Zero bit

C

Carry bit

for Entering Low-Power

Modes

MSP430x4xx Family. User’s Guide.

Texas Instruments 2007, SLAU056G

N

Z

C

MSP430

Contitional and unconditional Jumps

JMP

; jump

JC / JHS

; jump if carry set / higher or same (

C=1

)

JEQ / JZ

; jump if equal / zero set (

Z=1

)

JGE

; jump if greater or equal (

N .xor. V=0

)

JL

; jump if less (

N .xor. V=1

)

JN

; jump if negative (

N=1

)

JNC / JLO

; jump if carry not set / lower (

C=0

)

JNE / JNZ

; jump if not equal / zero not set (

Z=0

)

jump width 10-bit signed offset

Offset

0

10

OP - Code

15

12

0

1

0

13

S

9 8

OP-Code: operand code field (6 bit)

S: sign (1 bit sign offset)

CPU

Off GIE

N

Z

C

RESERVED

OSC

Off

SCG

0

SCG

1

V

ARM7

Current/Saved Program Status Register

N

Z

C

31 30 29 28

27

26

8

I

7

6

T

4

M4 M3

3

M2

2

M1

1

M0

0

State bit:
T=1, Thumb state,

16-bit Thumb
instruction set

FIQ (Fast Interrupt Request) disable

IRQ (Interrupt Request) disable

25

24

• •

Condition code flags:

Negative or less than
Zero
Carry or borrow or extend
Overflow

V

F

Current / Saved

Program Status Register

access only in Privileged Modes

10000 User
10001 FIQ
10010 IRQ
10011 Supervisor
10111 Abort
11011 Undefined
11111 System

Steve Furber: ARM System-on-chip Architecture. Secon Edition

ARM7

Instruction Set

All ARM instruction can be

conditionally executed

no

overflow

V clear

VC

unsigned

lower

C clear

CC

/

LO

overflow

V set

VS

unsigned
higher or

same

C set

CS

/

HS

signed less

than or equal

Z set,

or

N set and V clear,

or

N clear and V set

(Z == 1 or N != V)

LE

positive or

zero

N clear

PL

not equal

Z clear

NE

signed greater

than

Z clear, and either

N set and V set,

or

N clear & V clear

(Z == 0,N == V)

GT

negative

N set

MI

equal

Z set

EQ

N

Z

C

31 30 29 28

I

T M4 M3 M2 M1 M0

V

F

0

7

ARM Architecture Reference Manual.

ARM DDI 0100E. ARM DDI 0027D,

June 2000, p.A3-6

Status Register

always

AL

signed less

than

N set and V clear,

or

N clear and V set

(N != V)

LT

signed greater

than or equal

N set and V set,

or

N clear and

V clear (N == V)

GE

unsigned lower

or same

C clear or Z set

LS

unsigned

higher

C set and Z clear

HI

background image

5

C390

- Maxim / Dallas Semiconductors

MD2

0D0h

MA

MB

MC

0C8h

0D8h

5 registers: MCNT0, MCNT1, MA, MB, MC,

on-chip arithmetic accelerator

PSW

MCNT0 MCNT1

DS80C390. Dual CAN High-Speed Microprocessor.

Maxim Integrated Products, 2005, REV: 110905, p.33

Table 2. Arithmetic Accelerator Execution Times

OPERATION

RESULT

EXECUTION

TIME (t

CLCL

)

32-Bit/16-Bit Divide

32-Bit Quotient, 16-Bit Remainder

36

16-Bit/16-Bit Divide

16-Bit Quotient, 16-Bit Remainder

24

16-Bit/16-Bit Multiply

32-Bit Product

24

32-Bit Shift Left/Right

32-Bit Result

36

32-Bit Normalize

32-Bit Mantissa, 5-Bit Exponent

36

C390

- Maxim / Dallas Semiconductors - operacje

kolejno

ść

wykonywania operacji:

pierwszy wpis
do MA lub MB

ostatni wpis
do MA, MB
lub MCNT0

MST=0
pierwszy odczyt
z MA

ostatni odczyt
z MA, MB
lub MCNT0

faza 3

faza 2

faza 1

czas

wpis do rejestrów

obliczenia

odczyt z rejestrów

C390

- Maxim / Dallas Semiconductors - typy operacji

typ

dzielenie

dzielenie

operacji

32 bity / 16 bitów

16 bitów / 16 bitów

36 t

CLCL

24 t

CLCL

pocz

ą

tek

MA

dzielna (LSB)

MA

dzielna (LSB)

w

MA

dzielna (LSB+1)

p

MA

dzielna (LSB+2)

i

MA

dzielna (MSB)

MA

dzielna (MSB)

s

MB

dzielnik (LSB)

MB

dzielnik (LSB)

koniec

MB

dzielnik (MSB)

MB

dzielnik (MSB)

pocz

ą

tek o

MA

iloraz (MSB)

MA

iloraz (MSB)

d

MA

iloraz (LSB+2)

c

MA

iloraz (LSB+1)

z

MA

iloraz (MSB)

MA

iloraz (LSB)

y

MB

reszta (MSB)

MB

reszta (MSB)

koniec

t

MB

reszta (LSB)

MB

reszta (LSB)

czekaj a

ż

MST=0

C390 - 40-Bit Accumulator



incorporates an

automatic accumulator

function, permitting the

implementation of

multiply-and-accumulate

and

divide-and-accumulate

functions

without any additional delay



each time the

accelerator

is used for a multiply or divide operation,

the result is

transparently added to a 40-bit accumulator

(this can

greatly increase speed of DSP and other high-level math operations)



accumulator

is

initialized

by performing

five writes to

the multiplier

C register

(MC;D5h), LSB first



accumulator

can be

read

by performing

five reads of

the multiplier

C register

, MSB first

DS80C390. Dual CAN High-Speed Microprocessor.

Maxim Integrated Products, 2005, REV: 110905, p.34

Assembler

Assembler

source file

.asm

.a51

Assembler

listing file

.lst

Assembler

object file

.obj

Absolute / Relocatable

object file

Assembler

Compiler

Compiler

source file

.c

.c51

Compiler

listing file

.lst

Compiler
object file

.obj

Absolute / Relocatable

object file

Compiler

Source file

.asm

.a51

.src

on
some
compilers

background image

6

Linker

Compiler
object file

.obj

Absolute / Relocatable object file

Assembler

object file

.obj

Assembler

object file

.obj

Assembler

object file

.obj

Compiler
object file

.obj

Compiler
object file

.obj

Linker

[Converter]

Map file

.map

. m51

Library file

.lib

Absolute file

.

.abs

.hex

Symbol file

.sym

C51

Arytmetyka BCD

korekcja dziesi

ę

tna

Dod_BCD: MOV A, #95h

ADD

A, #85h

DA

A

MOV

R6, A

CLR

A

MOV

Acc.0, C

MOV

R7, A

;

A

95h,

95h = 1001 0101b

; A

A + 85h,

85h = 1000 0101b

;

C=1

, AC=0, A = 1Ah = 0001 1010b

; A

A + 6 poniewa

ż

A

3..0

> 9

;

+6 = 0000 0110b

;

C=1

,

A = 20h = 0010 0000b

; A

A + 60h poniewa

ż

C=1

;

+60h = 0110 0000b

;

C=1

,

A = 80h = 1000 0000b

; R6

A

; A

0

; A

0

C,

A = 0000 0001b

; R7

A

Doda

ć

dwie liczby zapisane w

kodzie BCD: 95h i 85h.

Wynik dodawania w rejestrach:
R7 (01h) i R6 (80h).

C51

Arytmetyka BCD

DEC_8

DEC-rementacja 8-bitowej zmiennej zapisanej w kodzie BCD,
np. 00

1 = 99

DEC_arg8:

MOV A, Arg8

; (Arg8) = 0

BCD

= 0000 0000b

ADD A, #99h

;

99h = 1001 1001b

;

A = 1001 1001b, AC = 0, A

3

.. A

0

9

;

C = 0,

A

7

.. A

4

9

;

przy odejmowaniu: przekroczenie

;

zakresu liczb BCD (0 . 99)

DA

A

; brak korekcji

MOV Arg8, A

;

(Arg8)

99

MSP430

DADD scr, dst



The source operand and the destination operand are treated as four binary
coded decimals (BCD) with positive signs. The source operand and the carry
C are added decimally to the destination operand:

scr + dst + C

dst |

decimally



The result is not defined for non-BCD numbers



Status bits:



N=MSB



Z=1 if result is zero



C=1 if the result > 9999 |

WORD

or 99 |

BYTE



V=undefined

Example:

The 8-digit-BCD number contained in R4 and R5 is added decimally to a 8-
digit_BCD number contained in R6 and R7 (R4 and R6 contain the MSDs)

CLRC

; C=0

DADD

R5, R7

; (R5 + C + R7)

BCD

R7, add LSDs

DADD

R4, R6

; (R4 + C + R6)

BCD

R6, add MSDs with carry

JC

Overflow

; if carry occurs go to error handling routine

Kod ASCII

(American Standard Code for Information Interchange)

:

• 7-bitowy kod konwersji cyfr, liter, znaków interpunkcyjnych i

kodów steruj

ą

cych;

• 8-bitowy rozszerzony kod ASCII zawieraj

ą

cy znaki narodowe

@

A
F

G

Y
Z

[

^
_

64
65
70
71
89
90
91
94
95

znak

ASCII

40h
41h
46h
47h
59h

5Ah
5Bh
5Eh
5Fh

`

a

f

g
y
z

{

~

DEL

96
97

102
103
121
122
123
126
127

znak

ASCII

60h
61h
66h
67h
79h

7Ah
7Bh
7Eh
7Fh

+20h

–20h

LF

CR

space

!
/

0
1
9

:

10
13
32
33
47
48
49
57
58

znak

ASCII

0Ah
0Dh

20h
21h
2Fh
30h
31h
39h

3Ah

30h+

Kod ASCII

Przedstawi

ć

zawarto

ść

rejestru R7 w postaci znaków w kodzie ASCII

‘A’ = 41h

Addr + 1

‘1’ = 31h

R0

= Addr

1A h

R7

R0

IDATA

RAM

pozostawienie 4 mniej znacz

ą

cych bitów

dodanie 30 h

wynik > 39 h

NIE

cyfry

dodanie 7

TAK

litery

koniec

przesłanie wyniku do RAM

Zamiana Hex

ASCII

background image

7

MOV

R0, #Addr

; R0 adresuje pami

ęć

wyników

MOV

A, R7

; A

R7

SWAP A

; A

7..4

A

3..0

CALL Hex_ASCII

; wywołanie podprogramu zamiany

MOV

A, R7

; A

R7

CALL Hex_ASCII

; wywołanie podprogramu zamiany

..............................

Hex_ASCII:

; podprogram zamiany

ANL

A, #0Fh

; wydzielenie 4 mniej znacz

ą

cych bitów

ADD

A, #30h

; A

A + 30h

CJNE A, #39h+1, Hex_ASCII_1 ; je

ś

li A = 30h .. 39h (cyfry) to C = 1

Hex_ASCII_1:

; je

ś

li A > 39h (litery) to C = 0

JC

Hex_ASCII_2

ADD

A, #7

; korekcja 7 znaków : ; < = > ? @

Hex_ASCII_2:

MOV

@R0, A

; przesłanie wyniku do pami

ę

ci RAM

INC

R0

; przygotowanie do kolejnego przesłania

RET

; koniec podprogramu

C51: Hex

ASCII - obliczenia

C51

pobieranie danych z pamięci kodu

wart_1

Addr_2 = Addr_1 + A

Addr_1 = DPTR

0000h

CODE

MOV

DPTR, #data_16

; DPTR

data_16

MOVC A,

@A+DPTR

@A+PC

; A

(A + DPTR)

CODE

; A

(A + PC)

CODE

; A jest 8-bitow

ą

liczb

ą

; liczb

ą

całkowit

ą

bez znaku

; PC wskazuje adres
; pierwszego bajtu nast

ę

pnej

; instrukcji

MOV

R0, #Addr

; R0 adresuje pami

ęć

wyników

MOV

DPTR, #Tab_ASCII

; DPTR adresuje tablic

ę

kodów ASCII

MOV

A, R7

; A

R7

SWAP A

; A

7..4

A

3..0

CALL Hex_ASCII_Tab

; wywołanie podprogramu zamiany

MOV

A, R7

; A

R7

CALL Hex_ASCII_Tab

; wywołanie podprogramu zamiany

..............................

Hex_ASCII_Tab:

; podprogram zamiany

ANL

A, #0Fh

; wydzielenie 4 mniej znacz

ą

cych bitów

MOVC A, @A+DPTR

; pobranie kodu ASCII z tablicy kodów

MOV

@R0, A

; przesłanie wyniku do pami

ę

ci RAM

INC

R0

; przygotowanie do kolejnego przesłania

RET

; koniec podprogramu

Tab_ASCII:

DB

30h, 31h, 32h, 33h, 34h, 35h, 36h, 37h, 38h, 39h ; cyfry

DB

41h, 42h, 43h, 44h, 45h, 46h

; litery

C51

Hex

ASCII - tablica

(1/2)

MOV

R0, #Addr

; R0 adresuje pami

ęć

wyników

MOV

DPTR, #Tab_ASCII

; DPTR adresuje tablic

ę

kodów ASCII

MOV

A, R7

; A

R7

SWAP A

; A

7..4

A

3..0

CALL Hex_ASCII_Tab

; wywołanie podprogramu zamiany

MOV

A, R7

; A

R7

CALL Hex_ASCII_Tab

; wywołanie podprogramu zamiany

..............................

Hex_ASCII_Tab:

; podprogram zamiany

ANL

A, #0Fh

; wydzielenie 4 mniej znacz

ą

cych bitów

MOVC A, @A+DPTR

; pobranie kodu ASCII z tablicy kodów

MOV

@R0, A

; przesłanie wyniku do pami

ę

ci RAM

INC

R0

; przygotowanie do kolejnego przesłania

RET

; koniec podprogramu

Tab_ASCII:

DB

‘0123456789’

; cyfry

DB

‘ABCDEF’

; litery

C51

Hex

ASCII - tablica

(2/2)

rozmieszczenie segmentów

we wska

ź

niku 7-segmentowym

i sterowania segmentów w bajcie:

a

h

b

c

d

e

f

g

h g f e

d c b a

ą

czenie cyfry 3

wymaga wpisania

warto

ś

ci 4Fh:

0 1 0 0

1 1 1 1

a

h

b

c

d

e

f

g

Problem jak przedstawi

ć

zawarto

ść

rejestru R7 w postaci znaków

w kodzie 7-segmentowym ?

C51
Hex

7-segment - tablica

(1/2)

MOV

R0, #Addr

; R0 adresuje pami

ęć

wyników

MOV

DPTR, #Tab_ 7_Segment ; DPTR adresuje tablic

ę

kodów

MOV

A, R7

; A

R7

SWAP A

; A

7..4

A

3..0

CALL

Hex_7_Segment_Tab

; wywołanie podprogramu zamiany

MOV

A, R7

; A

R7

CALL

Hex_7_Segment_Tab

; wywołanie podprogramu zamiany

..............................

Hex_7_Segment_Tab:

; podprogram zamiany

ANL

A, #0Fh

; wydzielenie 4 mniej znacz

ą

cych bitów

MOVC A, @A+DPTR

; pobranie nowego kodu z tablicy kodów

MOV

@R0, A

; przesłanie wyniku do pami

ę

ci RAM

INC

R0

; przygotowanie do kolejnego przesłania

RET

; koniec podprogramu

Tab_7_Segment:

DB

3Fh, 06h, 5Bh, 4Fh, 66h, 6Dh, 7Dh, 07h, 7Fh, 6Fh

; cyfry

DB

77h, 7Ch, 39h, 5Eh, 79h, 71h

; litery

C51

Hex

7-segment - tablica

(2/2)


Wyszukiwarka

Podobne podstrony:
E2 2010 id 149235 Nieznany
kinetyka 5 11 2010 id 235066 Nieznany
Arot 2010 07 2010 id 69283 Nieznany
c3 19 12 2010 id 97134 Nieznany
ARKUSZ POPRAWKA 2010 id 68814 Nieznany
mat prob styczen 2010(1) id 282 Nieznany
BIOCHEMIA skrypt 2010 id 86508 Nieznany
kolokwium 2010 id 240526 Nieznany
3 1 2010 id 33377 Nieznany (2)
LATO 2010 id 263802 Nieznany
zestaw pytan MiBM 2010 id 58854 Nieznany
MSI w2 konspekt 2010 id 309790 Nieznany
kt2 2010 id 253072 Nieznany
egzamin 06 2010 1 id 151726 Nieznany
MSI w1 konspekt 2010 id 309789 Nieznany
odp maj 2010 id 332085 Nieznany
c4 18 12 2010 id 97240 Nieznany
Grawitacja 2010 id 195612 Nieznany
karta oceny projektu 2010 id 23 Nieznany

więcej podobnych podstron