Bienvenid@s al curso de Sistemas Microprocesados

18
1 [email protected] 1 INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS MICROCONTOLADORES MICROCONTOLADORES MICROCONTOLADORES MICROCONTOLADORES MICROCONTOLADORES MICROCONTOLADORES MICROCONTOLADORES MICROCONTOLADORES ATmega ATmega ATmega ATmega ATmega ATmega ATmega ATmega Elaborado por: Ing. Jaime E. Velarde [email protected] 2 RESUMEN DE LAS RESUMEN DE LAS INSTRUCCIONES DE INSTRUCCIONES DE TRANSFERENCIA TRANSFERENCIA

description

Importancia de los microprocesadores

Transcript of Bienvenid@s al curso de Sistemas Microprocesados

Page 1: Bienvenid@s al curso de Sistemas Microprocesados

1

[email protected] 1

INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE INSTRUCCIONES DE TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS TRANSFERENCIA DE LOS MICROCONTOLADORESMICROCONTOLADORESMICROCONTOLADORESMICROCONTOLADORESMICROCONTOLADORESMICROCONTOLADORESMICROCONTOLADORESMICROCONTOLADORES

ATmegaATmegaATmegaATmegaATmegaATmegaATmegaATmega

Elaborado por: Ing. Jaime E. Velarde

[email protected] 2

RESUMEN DE LAS RESUMEN DE LAS INSTRUCCIONES DE INSTRUCCIONES DE TRANSFERENCIATRANSFERENCIA

Page 2: Bienvenid@s al curso de Sistemas Microprocesados

2

[email protected] 3

INFORMACIÓN DE LAS INFORMACIÓN DE LAS INSTRUCCIONESINSTRUCCIONES

EL FABRICANTE PROPORCIONA LA SIGUIENTE INFORMACIÓN SOBRE LAS INSTRUCCIONES:

– EL MNEMÓNICO Y LOS OPERANDOS para la elaboración de los programas

– LA DESCRIPCIÓN en palabras– LA OPERACIÓN simbólica que explica la acción

o acciones que realiza– EL CÓDIGO DE MÁQUINA en formato binario– LAS BANDERAS que se afectan– EL NUMERO DE CICLOS de reloj que se demora

en la ejecución

INFORMACIÓN INFORMACIÓN RESUMIDARESUMIDA

[email protected] 4

Page 3: Bienvenid@s al curso de Sistemas Microprocesados

3

INFORMACIÓN DETALLADAINFORMACIÓN DETALLADA

[email protected] 5

Mnemónico y Operandos

Descripción

Operación Simbólica

Código de Máquina

Banderas que se afectan

Ciclos del reloj que se demora

Ejemplos

[email protected] 6

COPIAR REGISTROSCOPIAR REGISTROS

• COPIA DE REGISTROS (R0 … R31)MNEMÓNICO: MOV Rd,Rr [1]OPERACIÓN: Rd ← RrCÓDIGO: 0010 11rd dddd rrrr

• COPIA DE PAREJAS DE REGISTROS (SE ESPECIFICAN SOLO REGISTROS PARES R0, R2 … R28, R30 )MNEMÓNICO: MOVW Rd,Rr [1]OPERACIÓN: Rd ← Rr Rd+1 ← Rr+1CÓDIGO: 0000 0001 dddd rrrr

Page 4: Bienvenid@s al curso de Sistemas Microprocesados

4

[email protected] 7

EJEMPLOS PARA COPIAR EJEMPLOS PARA COPIAR REGISTROSREGISTROS

MOV R5,R20 ; R5 ← R200010 1110 0101 0100 = 0x2E54

MOV R31,R0 ; R31 ← R00010 1101 1111 0000 = 0x2DF0

MOV R8,R8 ; R8 ← R80010 1100 1000 1000 = 0x2C88

MOVW R30,R0 ; R30 ← R0 R31 ← R10000 0001 1111 0000 = 0x01F0

MOVW R8,R18 ; R8 ← R18 R9 ← R190000 0001 0100 1001 = 0x0149

MOVW R11,R22 ; R11 ← R22 R12 ← R230000 0001 dddd 1011 = 0x01?B Error..!! No es un

registro válido

[email protected] 8

CARGAR A UN REGISTRO CON CARGAR A UN REGISTRO CON UN VALORUN VALOR

• EN UN REGISTRO (R16 … R31) SE CARGA UN VALOR DE 8 BITS (0 … 255)MNEMÓNICO: LDI Rd,K [1]OPERACIÓN: Rd ← KCÓDIGO: 1110 KKKK dddd KKKK

Page 5: Bienvenid@s al curso de Sistemas Microprocesados

5

[email protected] 9

EJEMPLOS PARA CARGAR UN EJEMPLOS PARA CARGAR UN REGISTROSREGISTROS

LDI R18,0x30 ; R18 ← 0x301110 0011 0010 0000 = 0xE320

LDI R19,30 ; R19 ← 301110 0001 0011 1110 = 0xE13E

LDI R10,0xA6 ; R10 ← 0xA61110 1010 dddd 0110 = 0xEA?6

LDI R20,300 ; R20 ← 3001110 KKKK 0100 KKKK = 0xE?4?

LDI R16,-100 ; R16 ← -1001110 1001 0000 1100 = 0xE90C

Error..!! No es un registro válido

Error..!! Operando fuera

de rango

[email protected] 10

CARGAR CARGAR DESDE DESDE LA LA SRAMSRAM CON CON DIRECCIONAMIENTO DIRECTODIRECCIONAMIENTO DIRECTO

• EN UN REGISTRO (R0 … R31) SE CARGA EL CONTENIDO DE UNA LOCALIDAD CON DIRECCIÓN k (0 … 65535), UTILIZANDO DIRECCIONAMIENTO DIRECTOMNEMÓNICO: LDS Rd,k [2]OPERACIÓN: Rd ← (k)CÓDIGO: 1001 000d dddd 0000

kkkk kkkk kkkk kkkk

Page 6: Bienvenid@s al curso de Sistemas Microprocesados

6

[email protected] 11

EJEMPLOS PARA CARGAR DESDE LA EJEMPLOS PARA CARGAR DESDE LA SRAMSRAM CON DIRECCIONAMIENTO CON DIRECCIONAMIENTO

DIRECTODIRECTOLDS R18,0x13A ; R18 ← (0x13A)0x9120 0x013A

LDS R19,0x13B ; R19 ← (0x13B)0x9130 0x013B

LDS R6,0x2CF ; R6 ← (0x2CF)0x9060 0x02CF

LDS R3,0x300 ; R3 ← (0x300)0x9030 0x0300

LDS R25,0x800 ; R25 ← (0x800)0x9190 0x0800 Atención..!!

Dirección fuera de rango

[email protected] 12

CARGAR CARGAR DESDE LA DESDE LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTODIRECCIONAMIENTO INDIRECTO

• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO DIRECCIONAMIENTO INDIRECTOMNEMÓNICO: LD Rd,X [2]OPERACIÓN: Rd ← (X)CÓDIGO: 1001 000d dddd 1100

MNEMÓNICO: LD Rd,Y [2]OPERACIÓN: Rd ← (Y)CÓDIGO: 1000 000d dddd 1000

MNEMÓNICO: LD Rd,Z [2]OPERACIÓN: Rd ← (Z)CÓDIGO: 1000 000d dddd 0000

Page 7: Bienvenid@s al curso de Sistemas Microprocesados

7

[email protected] 13

EJEMPLOS PARA CARGAR DESDE LA EJEMPLOS PARA CARGAR DESDE LA SRAMSRAM CON DIRECCIONAMIENTO CON DIRECCIONAMIENTO

INDIRECTOINDIRECTOLDI R27,0x01 ; R27 ← 0x011110 0000 1011 0001 = 0xE0B1

LDI R26,0x3A ; R26 ← 0x3A1110 0011 1010 1010 = 0xE3AA

LD R18,X ; R18 ← (X) ���� R18 ← (0x013A)1001 0001 0010 1100 = 0x912C

LDI R29,0x01 ; R27 ← 0x011110 0000 1101 0001 = 0xE0D1

LDI R28,0x3B ; R26 ← 0x3A1110 0011 1100 1011 = 0xE3CB

LD R19,Y ; R19 ← (Y) ���� R19 ← (0x013B)1000 0001 0011 1000 = 0x8138

Inicialización del Puntero X

Inicialización del Puntero Y

[email protected] 14

CARGAR DESDE LA CARGAR DESDE LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTO Y DIRECCIONAMIENTO INDIRECTO Y

CON POST INCREMENTOCON POST INCREMENTO• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO DIRECCIONAMIENTO INDIRECTO Y EL PUNTERO SE INCREMENTA POSTERIORMENTEMNEMÓNICO: LD Rd,X+ [2]OPERACIÓN: Rd ← (X) X ← X+1CÓDIGO: 1001 000d dddd 1101

MNEMÓNICO: LD Rd,Y+ [2]OPERACIÓN: Rd ← (Y) Y ← Y+1CÓDIGO: 1001 000d dddd 1001

MNEMÓNICO: LD Rd,Z+ [2]OPERACIÓN: Rd ← (Z) Z ← Z+1CÓDIGO: 1001 000d dddd 0001

Page 8: Bienvenid@s al curso de Sistemas Microprocesados

8

[email protected] 15

EJEMPLOS PARA CARGAR DESDE EJEMPLOS PARA CARGAR DESDE LA LA SRAMSRAM CON POST INCREMENTOCON POST INCREMENTOLDI R27,0x01 ; R27 ← 0x011110 0000 1011 0001 = 0xE0B1

LDI R26,0x3A ; R26 ← 0x3A1110 0011 1010 1010 = 0xE3AA

LD R18,X+ ; R18 ← (X) ���� R18 ← (0x013A) X ← X+1

1001 0001 0010 1101 = 0x912D

LD R19,X+ ; R19 ← (X) ���� R19 ← (0x013B) X ← X+1

1001 0001 0011 1101 = 0x913D

Inicializa-ción del Puntero X

[email protected] 16

CARGAR DESDE LA CARGAR DESDE LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTO Y DIRECCIONAMIENTO INDIRECTO Y

CON PRE DISMINUCIÓNCON PRE DISMINUCIÓN• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO DIRECCIONAMIENTO INDIRECTO EN EL QUE EL PUNTERO PREVIAMENTE SE HA DISMINUIDOMNEMÓNICO: LD Rd,-X [2]OPERACIÓN: X ← X-1 Rd ← (X)CÓDIGO: 1001 000d dddd 1110

MNEMÓNICO: LD Rd,-Y [2]OPERACIÓN: Y ← Y-1 Rd ← (Y)CÓDIGO: 1001 000d dddd 1010

MNEMÓNICO: LD Rd,-Z [2]OPERACIÓN: Z ← Z-1 Rd ← (Z)CÓDIGO: 1001 000d dddd 0010

Page 9: Bienvenid@s al curso de Sistemas Microprocesados

9

[email protected] 17

EJEMPLOS PARA CARGAR DESDE EJEMPLOS PARA CARGAR DESDE LA LA SRAMSRAM CON PRE DISMINUCIÓNCON PRE DISMINUCIÓNLDI R29,0x01 ; R27 ← 0x011110 0000 1101 0001 = 0xE0D1

LDI R28,0x3C ; R26 ← 0x3C1110 0011 1100 1100 = 0xE3CC

LD R19,-Y ; Y ← Y-1 R19 ← (Y) ���� R19 ← (0x013B)

1001 0001 0011 1010 = 0x913A

LD R18,-Y ; Y ← Y-1 R18 ← (Y) ���� R18 ← (0x013A)

1001 0001 0010 1010 = 0x912A

Inicializa-ción del Puntero Y

[email protected] 18

CARGAR DESDE LA CARGAR DESDE LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTO Y DIRECCIONAMIENTO INDIRECTO Y

CON DESPLAZAMIENTOCON DESPLAZAMIENTO• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO DIRECCIONAMIENTO INDIRECTO AL QUE SE SUMA EL DESPLAZAMIENTO (0 … 63)MNEMÓNICO: LDD Rd,Y+q [2]OPERACIÓN: Rd ← (Y+q)CÓDIGO: 10q0 qq0d dddd 1qqq

MNEMÓNICO: LDD Rd,Z+q [2]OPERACIÓN: Rd ← (Z+q)CÓDIGO: 10q0 qq0d dddd 0qqq

Page 10: Bienvenid@s al curso de Sistemas Microprocesados

10

[email protected] 19

EJEMPLOS PARA CARGAR DESDE EJEMPLOS PARA CARGAR DESDE LA LA SRAMSRAM CON DESPLAZAMIENTOCON DESPLAZAMIENTOLDI R31,0x01 ; R31 ← 0x011110 0000 1111 0001 = 0xE0F1

LDI R30,0x3A ; R30 ← 0x3A1110 0011 1110 1010 = 0xE3EA

LDD R19,Z+10 ; R19 ← (Z+10) ���� R19 ← (0x0144)

1000 0101 0011 0010 = 0x8532

LDD R18,Z+20 ; R18 ← (Z+20) ���� R18 ← (0x014E)

1000 1001 0010 0100 = 0x8924

LDD R1,Z+64 ; R1 ← (Z+64) ���� R1 ← (0x017A)

10q0 qq00 0001 0qqq Error..!! Desplazamiento fuera de rango

Inicializa-ción del Puntero Z

[email protected] 20

ALMACENAR EN LA ALMACENAR EN LA SRAMSRAM CON CON DIRECCIONAMIENTO DIRECTODIRECCIONAMIENTO DIRECTO

• EN UNA LOCALIDAD CON DIRECCIÓN k (0 … 65535) UTILIZANDO DIRECCIONAMIENTO DIRECTO, SE ALMACENA EL CONTENIDO DE UN REGISTRO (R0 … R31)MNEMÓNICO: STS k,Rr [2]OPERACIÓN: (k) ← RrCÓDIGO: 1001 001r rrrr 0000

kkkk kkkk kkkk kkkk

Page 11: Bienvenid@s al curso de Sistemas Microprocesados

11

[email protected] 21

EJEMPLOS PARA ALMACENAR EN LA EJEMPLOS PARA ALMACENAR EN LA SRAMSRAM CON DIRECCIONAMIENTO CON DIRECCIONAMIENTO

DIRECTODIRECTOSTS 0x13A, R18 ; (0x13A) ← R18 0x9320 0x013A

STS 0x13B,R19 ; (0x13B) ← R19 0x9330 0x013B

STS 0x2CF,R6 ; (0x2CF) ← R6 0x9260 0x02CF

STS 0x300,R3 ; (0x300) ← R3 0x9230 0x0300

STS 0x800,R25 ; (0x800) ← R25 0x9390 0x0800 Atención..!!

Dirección fuera de rango

[email protected] 22

ALMACENAR EN LA ALMACENAR EN LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTODIRECCIONAMIENTO INDIRECTO

• EN UNA LOCALIDAD (0 … 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO, SE ALMACENA UN REGISTRO (R0 … R31)MNEMÓNICO: ST X,Rr [2]OPERACIÓN: (X) ← RrCÓDIGO: 1001 001r rrrr 1100

MNEMÓNICO: ST Y,Rr [2]OPERACIÓN: (Y) ← RrCÓDIGO: 1000 001r rrrr 1000

MNEMÓNICO: ST Z,Rr [2]OPERACIÓN: (Z) ← RrCÓDIGO: 1000 001r rrrr 0000

Page 12: Bienvenid@s al curso de Sistemas Microprocesados

12

[email protected] 23

EJEMPLOS PARA ALMACENAR EN LA EJEMPLOS PARA ALMACENAR EN LA SRAMSRAM CON DIRECCIONAMIENTO CON DIRECCIONAMIENTO

INDIRECTOINDIRECTOLDI R27,0x01 ; R27 ← 0x011110 0000 1011 0001 = 0xE0B1

LDI R26,0x3A ; R26 ← 0x3A1110 0011 1010 1010 = 0xE3AA

ST X,R18 ; (X) ← R18 ���� (0x013A) ← R181001 0011 0010 1100 = 0x932C

LDI R29,0x01 ; R27 ← 0x011110 0000 1101 0001 = 0xE0D1

LDI R28,0x3B ; R26 ← 0x3A1110 0011 1100 1011 = 0xE3CB

ST Y,R19 ; (Y) ← R19 ���� (0x013B) ← R191000 0011 0011 1000 = 0x8338

Inicialización del Puntero X

Inicialización del Puntero Y

[email protected] 24

ALMACENAR EN LA ALMACENAR EN LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTO Y DIRECCIONAMIENTO INDIRECTO Y

CON POST INCREMENTOCON POST INCREMENTO• EN UNA LOCALIDAD (0 … 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO, SE ALMACENA UN REGISTRO (R0 … R31) Y EL PUNTERO SE INCREMENTA POSTERIORMENTEMNEMÓNICO: ST X+,Rr [2]OPERACIÓN: (X) ← Rr X ← X+1CÓDIGO: 1001 001r rrrr 1101

MNEMÓNICO: ST Y+,Rr [2]OPERACIÓN: (Y) ← Rr Y ← Y+1CÓDIGO: 1001 001r rrrr 1001

MNEMÓNICO: ST Z+,Rr [2]OPERACIÓN: (Z) ← Rr Z ← Z+1CÓDIGO: 1001 001r rrrr 0001

Page 13: Bienvenid@s al curso de Sistemas Microprocesados

13

[email protected] 25

EJEMPLOS PARA ALMACENAR EN EJEMPLOS PARA ALMACENAR EN LA LA SRAMSRAM CON POST INCREMENTOCON POST INCREMENTOLDI R27,0x01 ; R27 ← 0x011110 0000 1011 0001 = 0xE0B1

LDI R26,0x3A ; R26 ← 0x3A1110 0011 1010 1010 = 0xE3AA

ST X+,R18 ; (X) ← R18 ���� (0x013A) ← R18 X ← X+1

1001 0011 0010 1101 = 0x932D

ST X+,R19 ; (X) ← R19 ���� (0x013B) ← R19 X ← X+1

1001 0011 0011 1101 = 0x933D

Inicializa-ción del Puntero X

[email protected] 26

ALMACENAR EN LA ALMACENAR EN LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTO Y DIRECCIONAMIENTO INDIRECTO Y

CON PRE DISMINUCIÓNCON PRE DISMINUCIÓN• EN UNA LOCALIDAD (0 … 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO EN EL QUE PREVIAMENTE SE HA DISMINUIDO EL PUNTERO, SE ALMACENA UN REGISTRO (R0 … R31)MNEMÓNICO: ST -X,Rr [2]OPERACIÓN: X ← X-1 (X) ← RrCÓDIGO: 1001 001r rrrr 1110

MNEMÓNICO: ST -Y,Rr [2]OPERACIÓN: Y ← Y-1 (Y) ← RrCÓDIGO: 1001 001r rrrr 1010

MNEMÓNICO: ST -Z,Rr [2]OPERACIÓN: Z ← Z-1 (Z) ← RrCÓDIGO: 1001 001r rrrr 0010

Page 14: Bienvenid@s al curso de Sistemas Microprocesados

14

[email protected] 27

EJEMPLOS PARA ALMACENAR EN EJEMPLOS PARA ALMACENAR EN LA LA SRAMSRAM CON PRE DISMINUCIÓNCON PRE DISMINUCIÓNLDI R29,0x01 ; R27 ← 0x011110 0000 1101 0001 = 0xE0D1

LDI R28,0x3C ; R26 ← 0x3C1110 0011 1100 1100 = 0xE3CC

ST -Y,R19 ; Y ← Y-1 (Y) ← R19 ���� (0x013B) ← R19

1001 0011 0011 1010 = 0x933A

ST -Y,R18 ; Y ← Y-1 (Y) ← R18 ���� (0x013A) ← R18

1001 0011 0010 1010 = 0x932A

Inicializa-ción del Puntero Y

[email protected] 28

ALMACENAR EN LA ALMACENAR EN LA SRAMSRAM CON CON DIRECCIONAMIENTO INDIRECTO Y DIRECCIONAMIENTO INDIRECTO Y

CON CON DESPLAZMIENTODESPLAZMIENTO• EN UNA LOCALIDAD (0 … 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO AL QUE SE SUMA EL DESPLAZAMIENTO (0 … 63), SE ALMACENA UN REGISTRO (R0 … R31)MNEMÓNICO: STD Y+q,Rr [2]OPERACIÓN: (Y+q) ← RrCÓDIGO: 10q0 qq1r rrrr 1qqq

MNEMÓNICO: STD Z+q,Rr [2]OPERACIÓN: (Z+q) ← RrCÓDIGO: 10q0 qq1r rrrr 0qqq

Page 15: Bienvenid@s al curso de Sistemas Microprocesados

15

[email protected] 29

EJEMPLOS PARA ALMACENAR EN EJEMPLOS PARA ALMACENAR EN LA LA SRAMSRAM CON DESPLAZAMIENTOCON DESPLAZAMIENTOLDI R31,0x01 ; R31 ← 0x011110 0000 1111 0001 = 0xE0F1

LDI R30,0x3A ; R30 ← 0x3A1110 0011 1110 1010 = 0xE3EA

STD Z+10,R19 ; (Z+10) ← R19 ���� (0x0144) ← R19

1000 0111 0011 0010 = 0x8732

STD Z+20,R18 ; (Z+20) ← R18 ���� (0x014E) ← R18

1000 1011 0010 0100 = 0x8B24

STD Z+64,R1 ; (Z+64) ← R1 ���� (0x017A) ← R1

10q0 qq10 0001 0qqq Error..!! Desplazamiento fuera de rango

Inicializa-ción del Puntero Z

[email protected] 30

CARGAR UN REGISTRO DESDE CARGAR UN REGISTRO DESDE LA FLASHLA FLASH

• EN UN REGISTRO SE CARGA DESDE UNA LOCALIDAD DE LA MEMORIA DEL PROGRAMA, UTILIZANDO DIRECCIONAMIENTO INDIRECTOMNEMÓNICO: LPM [3]OPERACIÓN: R0 ← (Z)CÓDIGO: 1001 0101 1100 1000

MNEMÓNICO: LPM Rd,Z [3]OPERACIÓN: Rd ← (Z)CÓDIGO: 1001 000d dddd 0100

MNEMÓNICO: LPM Rd,Z+ [3]OPERACIÓN: Rd ← (Z) Z ← Z+1CÓDIGO: 1001 000d dddd 0101

Page 16: Bienvenid@s al curso de Sistemas Microprocesados

16

[email protected] 31

EJEMPLOS PARA CARGAR EJEMPLOS PARA CARGAR DESDE LA FLASHDESDE LA FLASH

LDI R31,0x03 ; R31 ← 0x031110 0000 1111 0011 = 0xE0F3

LDI R30,0x3A ; R30 ← 0x3A1110 0001 1110 0000 = 0xE1E0

LPM ; R0 ← (Z)FLASH ���� R0 ← (0x0310)FLASH

1001 0101 1100 1000 = 0x95C8

LPM R7,Z ; R7 ← (Z)FLASH ���� R7 ← (0x0310)FLASH

1001 0000 0111 0100 = 0x9074

LPM R17,Z+ ; R17 ← (Z)FLASH ���� R17 ← (0x0310)FLASH

; Z ← Z+1

1001 0001 0001 0101 = 0x9115

Inicializa-ción del Puntero Z

[email protected] 32

TRANSFERIR ENTRE REGISTRO TRANSFERIR ENTRE REGISTRO Y PÓRTICOY PÓRTICO

• ENTRADA A UN REGISTRO (R0 … R31) DESDE UN PÓRTICO DE DIRECCIÓN A (0 … 63)MNEMÓNICO: IN Rd,A [1]OPERACIÓN: Rd ← I/O ACÓDIGO: 1011 0AAd dddd AAAA

• SALIDA HACIA UN PÓRTICO (0 … 63) DESDE UN REGISTROS (R0 … R31)MNEMÓNICO: OUT A,Rr [1]OPERACIÓN: I/O A ← RrCÓDIGO: 1011 1AAr rrrr AAAA

Page 17: Bienvenid@s al curso de Sistemas Microprocesados

17

[email protected] 33

EJEMPLOS DE TRANSFERENCIAS EJEMPLOS DE TRANSFERENCIAS CON PÓRTICOSCON PÓRTICOS

IN R16,0x00 ; R16 ← PÓRTICO 0x001011 0001 0000 0000 = 0xB100

IN R12,0x20 ; R12 ← PÓRTICO 0x201011 0010 1100 0100 = 0xB2C4

OUT 0x02,R18 ; PÓRTICO 0x02 ← R181011 1001 0010 0010 = 0xB922

OUT 0x1F,R9 ; PÓRTICO 0x1F ← R91011 1010 1001 1111 = 0xBA9F

OUT 0x50,R10 ; PÓRTICO 0x50 ← R10 1011 1AA0 1010 AAAA = 0xB?A? Error..!!

Pórtico fuera de rango

[email protected] 34

EJERCICIO QUE UTILIZA EJERCICIO QUE UTILIZA INSTRUCCIONES DE INSTRUCCIONES DE TRANSFERENCIA TRANSFERENCIA

Desarrollar un programa para el microcontrolador ATmega164P, que permita llenar las dieciséis primeras localidades de la memoria de datos, con los códigos ASCII de: $1F4 por cuatro ocasiones, tal como se muestra en la siguiente lámina.

Page 18: Bienvenid@s al curso de Sistemas Microprocesados

18

GRÁFICO DEL EJERCICIO GRÁFICO DEL EJERCICIO

[email protected] 35

Donde:0x24 es el ASCII del signo $, 0x31 es el ASCII del dígito 1, 0x46 es el ASCII de la letra F y 0x34 es el ASCII del dígito 4

16 p

rim

eras

loca

lidad

es d

e d

ato

s