10 Instrucciones de Transferencia

download 10  Instrucciones  de Transferencia

If you can't read please download the document

description

Instrucciones que permiten transferir datos de 8 bits entre las direrentes partes de la memoria de los ATmega

Transcript of 10 Instrucciones de Transferencia

  • 1. [email protected]
    1
    SISTEMAS
    MICROPROCESADOS
    INSTRUCCIONES DE TRANSFERENCIA DE LOS MICROCONTOLADORESATmega
    Elaborado por: Ing. Jaime E. Velarde

2. [email protected]
2
RESUMEN DE LAS INSTRUCCIONES DE TRANSFERENCIA
3. [email protected]
3
INFORMACIN DE LAS INSTRUCCIONES
EL FABRICANTE PROPORCIONA LA SIGUIENTE INFORMACIN SOBRE LAS INSTRUCCIONES:
EL MNEMNICO Y LOS OPERANDOS para la elaboracin de los programas
LA DESCRIPCIN en palabras
LA OPERACIN simblica que explica la accin o acciones que realiza
EL CDIGO DE MQUINA en formato binario
LAS BANDERAS que se afectan
EL NUMERO DE CICLOS de reloj que se demora en la ejecucin
4. [email protected]
4
COPIAR REGISTROS
COPIA DE REGISTROS (R0 R31)
MNEMNICO:MOVRd,Rr[1]
OPERACIN:RdRr
CDIGO:0010 11rd ddddrrrr
COPIA DE PAREJAS DE REGISTROS (SE ESPECIFICAN SOLO REGISTROS PARES R0, R2 R28, R30 )
MNEMNICO:MOVWRd,Rr[1]
OPERACIN:RdRrRd+1 Rr+1
CDIGO:0000 0001 ddddrrrr
5. [email protected]
5
EJEMPLOS PARA COPIAR REGISTROS
MOVR5,R20; R5 R20
0010 1110 01010100 = 0x2E54
MOVR31,R0; R31 R0
0010 1101 11110000 = 0x2DF0
MOVR8,R8; R8 R8
0010 1100 10001000 = 0x2C88
MOVW R30,R0; R30 R0R31 R1
0000 0001 11110000 = 0x01F0
MOVW R8,R18; R8 R18R9 R19
0000 0001 01001001 = 0x0149
MOVWR11,R22; R11 R22R12 R23
0000 0001 dddd1011 = 0x01?B
Error..!! No es un registro vlido
6. [email protected]
6
CARGAR A UN REGISTRO CON UN VALOR
EN UN REGISTRO (R16 R31) SE CARGA UN VALOR DE 8 BITS (0 255)
MNEMNICO:LDIRd,K[1]
OPERACIN:Rd K
CDIGO:1110 KKKKddddKKKK
7. [email protected]
7
EJEMPLOS PARA CARGAR UN REGISTROS
LDIR18,0x30; R18 0x30
1110 0011 00100000 = 0xE320
LDIR19,30; R19 30
1110 0001 00111110 = 0xE13E
LDIR10,0xA6; R10 0xA6
1110 1010dddd0110 = 0xEA?6
LDIR20,300; R20 300
1110 KKKK 0100KKKK = 0xE?4?
LDIR16,-100; R18 -100
1110 1001 00001100 = 0xE90C
Error..!! No es un registro vlido
Error..!! Operando fuera de rango
8. [email protected]
8
CARGAR DESDE LA SRAMCON DIRECCIONAMIENTO DIRECTO
EN UN REGISTRO (R0 R31) SE CARGA EL CONTENIDO DE UNA LOCALIDAD CON DIRECCIN k (0 65535), UTILIZANDO DIRECCIONAMIENTO DIRECTO
MNEMNICO:LDSRd,k[2]
OPERACIN:Rd (k)
CDIGO:1001 000d dddd 0000
kkkkkkkkkkkkkkkk
9. [email protected]
9
EJEMPLOS PARA CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO DIRECTO
LDSR18,0x13A; R18 (0x13A)
0x91200x013A
LDSR19,0x13B; R19 (0x13B)
0x91300x013B
LDSR6,0x2CF; R6 (0x2CF)
0x90600x02CF
LDSR3,0x300; R3 (0x300)
0x90300x0300
LDSR25,0x800; R25 (0x800)
0x91900x0800
Atencin..!! Direccin fuera de rango
10. [email protected]
10
CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO
EN UN REGISTRO (R0 R31) SE CARGA DESDE UNA LOCALIDAD (0 65535), UTILIZANDO DIRECCIONAMIENTO INDIRECTO
MNEMNICO:LDRd,X[2]
OPERACIN:Rd (X)
CDIGO:1001 000d dddd1100
MNEMNICO:LDRd,Y[2]
OPERACIN:Rd (Y)
CDIGO:1000 000d dddd 1000
MNEMNICO:LDRd,Z[2]
OPERACIN:Rd (Z)
CDIGO:1000 000d dddd 0000
11. [email protected]
11
EJEMPLOS PARA CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO
LDIR27,0x01; R27 0x01
1110 0000 10110001 = 0xE0B1
LDIR26,0x3A; R26 0x3A
1110 0011 10101010 = 0xE3AA
LDR18,X; R18 (X) R18 (0x013A)
1001 0001 0010 1100 = 0x912C
Inicializacin del Puntero X
LDIR29,0x01; R27 0x01
1110 0000 11010001 = 0xE0D1
LDIR28,0x3B; R26 0x3A
1110 0011 11001011 = 0xE3CB
LDR19,Y; R19 (Y) R19 (0x013B)
1000 0001 0011 1000 = 0x8138
Inicializacin del Puntero Y
12. [email protected]
12
CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO Y CON POST INCREMENTO
EN UN REGISTRO (R0 R31) SE CARGA DESDE UNA LOCALIDAD (0 65535), UTILIZANDODIRECCIONAMIENTO INDIRECTO Y EL PUNTERO SE INCREMENTA POSTERIORMENTE
MNEMNICO:LDRd,X+[2]
OPERACIN:Rd (X) X X+1
CDIGO:1001 000d dddd 1101
MNEMNICO:LDRd,Y+[2]
OPERACIN:Rd (Y) Y Y+1
CDIGO:1001 000d dddd 1001
MNEMNICO:LDRd,Z+[2]
OPERACIN:Rd (Z) Z Z+1
CDIGO:1001 000d dddd 0001
13. [email protected]
13
EJEMPLOS PARA CARGAR DESDE LA SRAM CON POST INCREMENTO
LDIR27,0x01; R27 0x01
1110 0000 10110001 = 0xE0B1
LDIR26,0x3A; R26 0x3A
1110 0011 10101010 = 0xE3AA
LDR18,X+; R18 (X) R18 (0x013A) X X+1
1001 0001 0010 1101 = 0x912D
LDR19,X+; R19 (X) R19 (0x013B) X X+1
1001 0001 0011 1101 = 0x913D
Inicializa-cin del Puntero X
14. [email protected]
14
CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO Y CON PRE DISMINUCIN
EN UN REGISTRO (R0 R31) SE CARGA DESDE UNA LOCALIDAD (0 65535), UTILIZANDODIRECCIONAMIENTO INDIRECTO EN EL QUE EL PUNTERO PREVIAMENTE SE HA DISMINUIDO
MNEMNICO:LDRd,-X[2]
OPERACIN:X X-1Rd (X)
CDIGO:1001 000d dddd 1110
MNEMNICO:LDRd,-Y[2]
OPERACIN:Y Y-1Rd (Y)
CDIGO:1001 000d dddd 1010
MNEMNICO:LDRd,-Z[2]
OPERACIN:Z Z-1Rd (Z)
CDIGO:1001 000d dddd 0010
15. [email protected]
15
EJEMPLOS PARA CARGAR DESDE LA SRAM CON PRE DISMINUCIN
LDIR29,0x01; R27 0x01
1110 0000 11010001 = 0xE0D1
LDIR28,0x3C; R26 0x3C
1110 0011 11001100 = 0xE3CC
LDR19,-Y; Y Y-1 R19 (Y) R19 (0x013B)
1001 0001 0011 1010 = 0x913A
LDR18,-Y; Y Y-1 R18 (Y) R18 (0x013A)
1001 0001 0010 1010 = 0x912A
Inicializa-cin del Puntero Y
16. [email protected]
16
CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO Y CON DESPLAZAMIENTO
EN UN REGISTRO (R0 R31) SE CARGA DESDE UNA LOCALIDAD (0 65535), UTILIZANDO DIRECCIONAMIENTO INDIRECTO AL QUE SE SUMA EL DESPLAZAMIENTO (0 63)
MNEMNICO:LDDRd,Y+q[2]
OPERACIN:Rd (Y+q)
CDIGO:10q0 qq0d dddd 1qqq
MNEMNICO:LDDRd,Z+q[2]
OPERACIN:Rd (Z+q)
CDIGO:10q0 qq0d dddd 0qqq
17. [email protected]
17
EJEMPLOS PARA CARGAR DESDE LA SRAM CON DESPLAZAMIENTO
LDIR31,0x01; R31 0x01
1110 0000 11110001 = 0xE0F1
LDIR30,0x3A; R30 0x3A
1110 0011 11101010 = 0xE3EA
LDDR19,Z+10; R19 (Z+10) R19 (0x0144)
1000 0101 0011 0010 = 0x8532
LDDR18,Z+20; R18 (Z+20) R18 (0x014E)
1000 1001 0010 0100 = 0x8924
LDDR1,Z+64; R1 (Z+64) R1 (0x017A)
10q0 qq00 0001 0qqq
Inicializa-cin del Puntero Z
Error..!! Desplazamiento fuera de rango
18. [email protected]
18
ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO DIRECTO
EN UNA LOCALIDAD CON DIRECCIN k (0 65535) UTILIZANDO DIRECCIONAMIENTO DIRECTO, SE ALMACENA EL CONTENIDO DE UN REGISTRO (R0 R31)
MNEMNICO:STSk,Rr[2]
OPERACIN:(k) Rr
CDIGO:1001 001r rrrr 0000
kkkkkkkkkkkkkkkk
19. [email protected]
19
EJEMPLOS PARA ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO DIRECTO
STS0x13A, R18; (0x13A) R18
0x93200x013A
STS0x13B,R19; (0x13B) R19
0x93300x013B
STS0x2CF,R6; (0x2CF) R6
0x92600x02CF
STS0x300,R3; (0x300) R3
0x92300x0300
STS0x800,R25; (0x800) R25
0x93900x0800
Atencin..!! Direccin fuera de rango
20. [email protected]
20
ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO INDIRECTO
EN UNA LOCALIDAD (0 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO, SE ALMACENA UN REGISTRO (R0 R31)
MNEMNICO:STX,Rr[2]
OPERACIN:(X) Rr
CDIGO:1001 001r rrrr 1100
MNEMNICO:STY,Rr[2]
OPERACIN:(Y) Rr
CDIGO:1000 001r rrrr 1000
MNEMNICO:STZ,Rr[2]
OPERACIN:(Z) Rr
CDIGO:1000 001r rrrr 0000
21. [email protected]
21
EJEMPLOS PARA ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO INDIRECTO
LDIR27,0x01; R27 0x01
1110 0000 10110001 = 0xE0B1
LDIR26,0x3A; R26 0x3A
1110 0011 10101010 = 0xE3AA
STX,R18; (X) R18 (0x013A) R18
1001 0011 0010 1100 = 0x932C
Inicializacin del Puntero X
LDIR29,0x01; R27 0x01
1110 0000 11010001 = 0xE0D1
LDIR28,0x3B; R26 0x3A
1110 0011 11001011 = 0xE3CB
STY,R19; (Y) R19 (0x013B) R19
1000 0011 0011 1000 = 0x8338
Inicializacin del Puntero Y
22. [email protected]
22
ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO INDIRECTO Y CON POST INCREMENTO
EN UNA LOCALIDAD (0 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO, SE ALMACENA UN REGISTRO (R0 R31) Y EL PUNTERO SE INCREMENTA POSTERIORMENTE
MNEMNICO:STX+,Rr[2]
OPERACIN:(X) Rr X X+1
CDIGO:1001 001r rrrr 1101
MNEMNICO:STY+,Rr[2]
OPERACIN:(Y) Rr Y Y+1
CDIGO:1001 001r rrrr1001
MNEMNICO:STZ+,Rr[2]
OPERACIN:(Z) Rr Z Z+1
CDIGO:1001 001r rrrr 0001
23. [email protected]
23
EJEMPLOS PARA ALMACENAR EN LA SRAMCON POST INCREMENTO
LDIR27,0x01; R27 0x01
1110 0000 10110001 = 0xE0B1
LDIR26,0x3A; R26 0x3A
1110 0011 10101010 = 0xE3AA
STX+,R18; (X) R18 (0x013A) R18X X+1
1001 0011 0010 1101 = 0x932D
STX+,R19; (X) R19 (0x013B) R19X X+1
1001 0011 0011 1101 = 0x933D
Inicializa-cin del Puntero X
24. [email protected]
24
ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO INDIRECTO Y CON PRE DISMINUCIN
EN UNA LOCALIDAD (0 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO EN EL QUE PREVIAMENTE SE HA DISMINUIDO EL PUNTERO, SE ALMACENA UN REGISTRO (R0 R31)
MNEMNICO:ST-X,Rr[2]
OPERACIN:X X-1 (X) Rr
CDIGO:1001 001r rrrr 1110
MNEMNICO:ST-Y,Rr[2]
OPERACIN:Y Y-1 (Y) Rr
CDIGO:1001 001r rrrr 1010
MNEMNICO:ST-Z,Rr[2]
OPERACIN:Z Z-1 (Z) Rr
CDIGO:1001 001r rrrr 0010
25. [email protected]
25
EJEMPLOS PARA ALMACENAR EN LA SRAMCON PRE DISMINUCIN
LDIR29,0x01; R27 0x01
1110 0000 11010001 = 0xE0D1
LDIR28,0x3C; R26 0x3C
1110 0011 11001100 = 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-cin del Puntero Y
26. [email protected]
26
ALMACENAR EN LA SRAMCON DIRECCIONAMIENTO INDIRECTO Y CON DESPLAZMIENTO
EN UNA LOCALIDAD (0 65535) UTILIZANDO DIRECCIONAMIENTO INDIRECTO AL QUE SE SUMA EL DESPLAZAMIENTO (0 63), SE ALMACENA UN REGISTRO (R0 R31)
MNEMNICO:STDY+q,Rr[2]
OPERACIN:(Y+q) Rr
CDIGO:10q0 qq1r rrrr 1qqq
MNEMNICO:STDZ+q,Rr[2]
OPERACIN:(Z+q) Rr
CDIGO:10q0 qq1r rrrr 0qqq
27. [email protected]
27
EJEMPLOS PARA ALMACENAR EN LA SRAMCON DESPLAZAMIENTO
LDIR31,0x01; R31 0x01
1110 0000 11110001 = 0xE0F1
LDIR30,0x3A; R30 0x3A
1110 0011 11101010 = 0xE3EA
STDZ+10,R19; (Z+10) R19 (0x0144) R19
1000 0111 0011 0010 = 0x8732
STDZ+20,R18; (Z+20) R18 (0x014E) R18
1000 1011 0010 0100 = 0x8B24
STDZ+64,R1; (Z+64) R1 (0x017A) R1
10q0 qq10 0001 0qqq
Inicializa-cin del Puntero Z
Error..!! Desplazamiento fuera de rango
28. [email protected]
28
CARGAR UN REGISTRO DESDE LA FLASH
EN UN REGISTRO SE CARGA DESDE UNA LOCALIDAD DE LA MEMORIA DEL PROGRAMA, UTILIZANDO DIRECCIONAMIENTO INDIRECTO
MNEMNICO:LPM[3]
OPERACIN:R0 (Z)
CDIGO:1001 0101 1100 1000
MNEMNICO:LPMRd,Z[3]
OPERACIN:Rd (Z)
CDIGO:1001 000d dddd 0100
MNEMNICO:LPMRd,Z+[3]
OPERACIN:Rd (Z)Z Z+1
CDIGO:1001 000d dddd 0101
29. [email protected]
29
EJEMPLOS PARA CARGAR DESDE LA FLASH
LDIR31,0x03; R31 0x01
1110 0000 11110011 = 0xE0F3
LDIR30,0x3A; R30 0x3A
1110 0001 11100000 = 0xE1E0
LPM; R0 (Z)FLASH R0 (0x0310)FLASH
1001 0101 1100 1000 = 0x95C8
LPMR7,Z; R7 (Z)FLASH R7 (0x0310)FLASH
1001 0000 0111 0100 = 0x9074
LPMR17,Z+; R17 (Z)FLASH R17 (0x0310)FLASH
;Z Z+1
1001 0001 0001 0101 = 0x9115
Inicializa-cin del Puntero Z
30. [email protected]
30
TRANSFERIR ENTRE REGISTRO Y PRTICO
ENTRADA A UN REGISTRO (R0 R31) DESDE UN PRTICO DE DIRECCIN A (0 63)
MNEMNICO:INRd,A[1]
OPERACIN:Rd I/O A
CDIGO:1011 0AAd ddddAAAA
SALIDA HACIA UN PRTICO (0 63) DESDE UN REGISTROS (R0 R31)
MNEMNICO:OUTA,Rr[1]
OPERACIN:I/O A Rr
CDIGO: 1011 1AAr rrrrAAAA
31. [email protected]
31
EJEMPLOS DE TRANSFERENCIAS CON PRTICOS
INR16,0x00; R16 PRTICO 0x00
1011 0001 00000000 = 0xB100
INR12,0x20; R12 PRTICO 0x20
1011 0010 11000100 = 0xB2C4
OUT0x02,R18; PRTICO 0x02 R18
1011 1001 00100010 = 0xB922
OUT0x1F,R9; PRTICO 0x1F R9
1011 1010 10011111 = 0xBA9F
OUT0x50,R10; PRTICO 0x50 R10
1011 1AA0 1010AAAA = 0xB?A?
Error..!! Prtico fuera de rango
32. [email protected]
32
EJERCICIO QUE UTILIZA INSTRUCCIONES DE TRANSFERENCIA
Desarrollar un programa para el microcontrolador ATmega164P, para llenar las diecisis primeras localidades de la memoria de datos, con los cdigos ASCII del signo $, del nmero 1, de la letra F mayscula y del nmero 4 en forma alternada, tal como se muestra en la siguiente lmina.
33. GRFICO DEL EJERCICIO
[email protected]
33
0x24 es el ASCII del signo $, 0x31 es el ASCII del 1, 0x46 es el ASCII de la F y 0x34 es el ASCII del 4.