Instruciones Avr Español

download Instruciones Avr Español

of 33

Transcript of Instruciones Avr Español

  • 7/23/2019 Instruciones Avr Espaol

    1/33

    En este apartado se comentan las instrucciones de ensamblador que poseen los C AVRde 8-BIT. Se explica la funcin de cada una de ellas, su sintaxis, operandos utilizados yuna descripcin con ejemplos.

    El conjunto de instrucciones para estos microcontroladores se puede dividir en elsiguiente orden de grupos:

    Instrucciones Aritmticas y LgicasInstrucciones de Desvo (salto)Instrucciones de Transferencia de DatosInstrucciones de Bit y prueba de Bit

    Una lnea tpica en lenguaje ensamblador est dada de la siguiente forma:

    [Mnemnico] operando1, operando2

    Los Mnemnicos son las instrucciones en lenguaje ensamblador que puede reconocer elmicroprocesador. Dependiendo de la instruccin, puede haber uno o dos operandos,incluso pueden no existir; su contenido consiste en un nmero, una variable o unadireccin; normalmente el resultado de una operacin lgica, aritmtica o de carga esalmacenado en operando1.

    NOMENCLATURA DEL CONJUNTO DE INSTRUCCIONES

    Registros y operandos

    Rd Registro destino (y fuente) del bloque de registros de trabajo

    Rr Registro fuente del bloque de registros de trabajo

    R Resultado despus de que una instruccin es ejecutada

    K Dato inmediato (constante)

    k Direccin de memoria

    b Bit de un registro I/O (7-0)

    s Bit en el registro de estado (SREG)

    X,Y,Z Registros de direccionamiento indirecto o registros de palabra (X=R27:R26Y=R29:R28 Z=R31:R30)

    P Registros del bloque I/O

    q Desplazamiento (6-bit) por direccionamiento directo

    4

    CONJUNTO DE INSTRUCCIONESAVR

  • 7/23/2019 Instruciones Avr Espaol

    2/33

    Banderas del registros de estado (SREG)

    C: Bandera de acarreo S: NV para pruebas de signo

    Z: Bandera de resultado cero H: Bandera de medio acarreo

    N: Bandera de resultado negativo T: Bit transferido por la instruccin BLDo BST

    V: Indicador de complemento a dosdesbordado

    I: Bandera de interrupciones globales

    RESUMEN DEL CONJUNTO DE INSTRUCCIONES

    Instrucciones Aritmticas y LgicasMnemnico Operandos Descripcin

    ADD Rd,Rr Suma sin acarreo

    ADC Rd,Rr Suma sin acarreo

    ADIW Rd, K Suma un inmediato a un registro de palabra

    SUB Rd,Rr Resta sin acarreo

    SUBI Rd,K Resta un inmediato

    SBC Rd,Rr Resta con acarreo

    SBCI Rd,K Resta un inmediato con acarreo

    AND Rd,Rr AND lgico

    ANDI Rd,K AND lgico con inmediato

    OR Rd,Rr OR lgico

    ORI Rd,K OR lgico con inmediato

    EOR Rd,Rr OR exclusivo

    COM Rd Complemento a unoNEG Rd Complemento a dos

    SBR Rd,K Pon a uno los bits de un registro

    CBR Rd,K Pon a cero los bits de un registro

    INC Rd Incrementa al registro

    DEC Rd Decrementa al registro

    TST Rd Revisa si es cero o menor

    CLR Rd Borra el registro

    SER Rd Carga los bits de un registro

    ADIW Rd+1:Rd,K Suma un inmediato a un registro de palabra

    SBIW Rd+1:Rd,K Resta un inmediato a un registro de palabra

    MUL Rd,Rr Multiplica sin signoMULS Rd,Rr Multiplica con signo

    MULSU Rd,Rr Multiplica signado con no signado

    Instrucciones de desvo (salto)

    Mnemnicos Operandos Descripcin

    RJMP k Salto relativo

    IJMP Ninguno Salto indirecto

    EIJMP Ninguno Salto indirecto extendido

    JMP k Salto

    RCALL k Llamada relativa a subrutinaICALL Ninguno Llamada indirecta a subrutina

    5

  • 7/23/2019 Instruciones Avr Espaol

    3/33

    EICALL Ninguno Llamada indirecta a subrutina extendida

    CALL k Llamada a subrutina

    RET Ninguno Regreso de subrutina

    RETI Ninguno Regreso de interrupcin

    CPSE Rd,Rr Compare y salta si es igual

    CP Rd,Rr ComparaCPC Rd,Rr Compara con acarreo

    CPI Rd,K Compara con inmediato

    SBRC Rr,b Salta si el bit del registro es cero

    SBRS Rr,b Salta si el bit del registro es uno

    SBIC P,b Salta si el bit del registro I/O es cero

    SBIS P,b Salta si el bit del registro I/O es uno

    BRBC s,k Salta si el bit de SREG es cero

    BRBS s,k Salta si el bit de SREG es uno

    BREQ k Salta si es igual

    BRNE k Salta si es diferente

    BRCS k Salta si C est a uno

    BRCC k Salta si C est a cero

    BRSH k Salta si es mayor o igual

    BRLO k Salta si es menor

    BRMI k Salta si es negativo

    BRPL k Salta si es mayor

    BRGE k Salta si es mayor o igual (con signo)

    BRLT k Salta si es menor (con signo)

    BRHS k Salta si H est a uno

    BRHC k Salta si H est a cero

    BRTS k Salta si T est a uno

    BRTC k Salta si T est a cero

    BRVS k Salta si V esta a uno

    BRVC k Salta si V est a cero

    BRIE k Salta si I est a uno

    BRID k Salta si I est a cero

    Instrucciones de Transferencia de Datos

    Mnemnicos Operandos Descripcin

    MOV Rd,Rr Copia de registros

    MOVW Rd,Rr Copia registros de palabra

    LDI Rd,K Carga de un inmediato

    LDS Rd,k Carga directa

    LD Rd,X Carga indirecta

    LD Rd,X+ Carga indirecta con Post-Incremento

    LD Rd,-X Carga indirecta con Pre-Decremento

    LD Rd,Y Carga indirecta

    LD Rd,Y+ Carga indirecta con Post-Incremento

    LD Rd,-Y Carga indirecta con Pre-Decremento

    LDD Rd,Y+q Carga indirecta con desplazamiento

    LD Rd,Z Carga indirecta con

    LD Rd,Z+ Carga indirecta con Post-Incremento

    LD Rd,-Z Carga indirecta con Pre-Decremento

    LDD Rd,Z+q Carga indirecta con desplazamiento

    STS k,Rr Almacena directamente

    6

  • 7/23/2019 Instruciones Avr Espaol

    4/33

    ST X,Rr Almacena indirectamente

    ST X+,Rr Almacena indirectamente con Post-Incremento

    ST -X,Rr Almacena indirectamente con Pre-Decremento

    ST Y,Rr Almacena indirectamente

    ST Y+,Rr Almacena indirectamente con Post-Incremento

    ST -Y,Rr Almacena indirectamente con Pre-DecrementoST Y+q,Rr Almacena indirectamente con desplazamiento

    ST Z,Rr Almacena indirectamente

    ST Z+,Rr Almacena indirectamente con Post-Incremento

    ST -Z,Rr Almacena indirectamente con Pre-Decremento

    ST Z+q,Rr Almacena indirectamente con desplazamiento

    LPM Ninguno Carga memoria de programa

    SPM Ninguno Almacena memoria de programa

    IN Rd,P Cargar un registro con un I/O

    OUT P,Rr Cargar un I/O con un registro

    PUSH Rr Cargar registro en la pila

    POP Rd Sacar dato de la pila

    Instrucciones de Bit y prueba de Bit

    Mnemnicos Operandos Descripcin

    LSL Rd Desplazamiento a la izquierda

    LSR Rd Desplazamiento a la derecha

    ROL Rd Rotacin a la izquierda con acarreo

    ROR Rd Rotacin a la derecha con acarreo

    ASR Rd Desplazamiento aritmtico

    SWAP Rd Intercambio de nibbles

    BSET s Poner a uno la bandera

    BCLR s Poner a cero la bandera

    SBI P,b Poner a uno el bit de un registro I/O

    CBI P,b Poner a cero el bit de un registro I/O

    BST Rr,b Guarda en T el bit de un registro

    BLD Rd,b Carga T en el bit de un registro

    SEC Ninguno Poner a uno la bandera C

    CLC Ninguno Poner a cero la bandera C

    SEN Ninguno Poner a uno la bandera N

    CLN Ninguno Poner a cero la bandera N

    SEZ Ninguno Poner a uno la bandera Z

    CLZ Ninguno Poner a cero la bandera Z

    SEI Ninguno Poner a uno la bandera I

    CLI Ninguno Poner a cero la bandera I

    SES Ninguno Poner a uno la bandera S

    CLN Ninguno Poner a cero la bandera S

    SEV Ninguno Poner a uno la bandera V

    CLV Ninguno Poner a cero la bandera V

    SET Ninguno Poner a uno la bandera T

    CLT Ninguno Poner a cero la bandera T

    SEH Ninguno Poner a uno la bandera H

    CLH Ninguno Poner a cero la bandera H

    NOP Ninguno No operacin

    SLEEP Ninguno Modo SleepWDR Ninguno Reiniciar el Watchdog

    7

  • 7/23/2019 Instruciones Avr Espaol

    5/33

    ADC Suma de dos registros con acarreo

    Sintaxis: ADC Rd, Rr

    Operacin: Rd Rd + Rr + C

    Operandos: 0 d 31, 0 r 31

    Descripcin: Suma dos registros y el contenido de la bandera C;deja el resultado en el registro destino Rd.

    Banderasafectadas:

    H: Se activa si hay un acarreo del bit 3, de lo contrario seborrar.V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si hay acarreo del bit MSB del resultado, de locontrario se borrar.

    Ejemplo:

    ADC r1, r2 ; Suma r1, r2 y C; el resultado lo pone en r1

    ADD Suma de dos registros sin acarreo

    Sintaxis: ADD Rd, Rr

    Operacin: Rd Rd + Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Suma dos registros sin considerar la bandera C ydeja el resultado en el registro destino Rd.

    Banderasafectadas:

    H: Se activa si hay un acarreo del bit 3, de lo contrario seborrar.V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si hay acarreo del bit MSB del resultado, de locontrario se borrar.

    Ejemplo:

    ADD r1, r2 ; Suma r2 a r1 (r1=r1+r2)ADD r28, r28 ; Suma r28 a s mismo (r28=r28+r28)

    ADIW Suma un dato inmediato a un registro de

    palabra

    Sintaxis: ADIW Rd+1:Rd,K

    Operacin: Rd +1: Rd Rd+1: Rd + K

    Operandos:Operando1: Puede ser uno de los 3 registros de 16 bits. Podemosindicarlo de las siguientes maneras: XH:XL o slo a XL; YH:YLo slo a YL; ZH:ZL o slo es a ZL. Tambin podemos utilizarR27:R26 o slo a R26; R29:R28 o slo a R28; R31:R30 o slo aR30. Tambin podemos usar el registro de 16 bits compuesto porR25:R24 al que tambin podemos indicar como R24.

    Operando2:0K 63

    Descripcin: Agrega un valor K a un par de registros y deja elresultado en el par de registros

    Banderasafectadas:

    S: Se activa slo si una de las banderas V o N est a uno.V: Se activa si hay desbordamiento en el complemento a dos dela operacin.N: Se activa si el bit MSB est a uno.Z: Se activa si el resultado es 0x00.C: Seactivasi hay acarreo del bit MSB.

    Ejemplo:

    ADIW R25:R24, 1 ; Suma 1 a R24 y en caso de que haya; acarreo se lo suma a R25

    AND Funcin lgica AND entre registros

    Sintaxis: AND Rd, Rr

    Operacin: Rd Rd (AND) Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Se realiza el AND lgico entre el contenido delregistro Rd y del registro Rr; deja el resultado en el registrodestino Rd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    AND r2, r3 ; AND lgico entre r2 y r3, resultado en r2LDI r16, 1 ; Poner 0000 0001 en r16AND r2, r16 ; Aislar el bit 0 en r2

    8

  • 7/23/2019 Instruciones Avr Espaol

    6/33

    ANDI Funcin lgica AND entre un registro yun dato inmediato

    Sintaxis: AND Rd, K

    Operacin: Rd Rd (AND) K

    Operandos: 0 d 31, 0 K 255

    Descripcin: Se realiza el AND lgico entre el contenido delregistro Rd y el valor K; deja el resultado en el registro destinoRd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    ANDI r17, $0F ; Borrar el nibble alto de r17

    ANDI r18, $10 ; Aislar el bit 4 en r18ANDI r19, $AA ; Borrar los bits impares de r19

    ASR Desplazamiento aritmtico a la derecha

    Sintaxis: ASR Rd

    Operacin:

    Operandos: 0 d 31

    Descripcin: Desplaza todos los bits de Rd una posicin hacia laderecha. El bit 7 se mantiene constante. El bit 0 se carga dentrode la bandera C. Esta operacin divide entre dos un valor consigno sin cambiar su signo. La bandera C puede usarse pararedondear el resultado.

    Banderasafectadas:

    S:N C, para prueba de signo

    V:N C (para N y C despus del desplazamiento)N: Se pone a uno si el MSB de Rd esta a uno.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa antes del desplazamiento el LSB de Rd estaba auno.

    Ejemplo:

    LDI r16, $10 ; Cargar 16 decimal en r16ASR r16 ; r16 = r16 / 2LDI r17, $FC ; Cargar -4 en r17ASR r17 ; r17 = r17 / 2

    BCLR Poner a cero el bit de una banderaSintaxis: BCLR s

    Operacin: SREG(s) 0

    Operandos: 0 s 7

    Descripcin: Pone a cero un bit especfico del registro debanderas SREG.

    Banderasafectadas:

    I: 0 si s = 7; de lo contrario sin cambioT: 0 si s = 6; de lo contrario sin cambioH: 0 si s = 5; de lo contrario sin cambioS: 0 si s = 4; de lo contrario sin cambioV: 0 si s = 3; de lo contrario sin cambioN: 0 si s = 2; de lo contrario sin cambioZ: 0 si s = 1; de lo contrario sin cambioC: 0 si s = 0; de lo contrario sin cambio

    Ejemplo:

    BCLR 0 ; Borrar la bandera CBCLR 7 ; Deshabilitar interrupciones

    BLD Carga en un registro la bandera TSintaxis: BLD Rd, b

    Operacin: Rd(b) T

    Operandos: 0 d 31, 0 b 7

    Descripcin: Carga la bandera T del registro SREG en el bit bdel registro Rd.

    Banderasafectadas: Ninguna

    Ejemplo:

    BST r1, 2 ; Guardar el bit 2 de r1 en la bandera TBLD r0, 4 ; Cargar T en el bit 4 de r0

    9

  • 7/23/2019 Instruciones Avr Espaol

    7/33

    BRBC Brinca si el bit de SREG es cero

    Sintaxis: BRBC s, k

    Operacin: Si SREG(s) = 0 entonces PC PC + k +1Si SREG(s) = 1 entonces PC PC + 1

    Operandos: 0 s 7, -64 k 63

    Descripcin: Examina un bit del registro SREG y realiza unsalto relativo en el PC (contador de programa) si el bit est acero. La instruccin desva relativamente al PC en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.

    Banderasafectadas: Ninguna

    Ejemplo:

    CPI r20, 5 ; Comparar r20 con el valor 5BRBC 1, dife ; Salta si la bandera Z es cero

    ...dife: NOP ; Destino de desvo (No hacer nada)

    BRBS Brinca si el bit de SREG est a set (uno)

    Sintaxis: BRBS s, k

    Operacin: Si SREG(s) = 1 entonces PC PC + k +1Si SREG(s) = 0 entonces PC PC + 1

    Operandos: 0 s 7, -64 k 63

    Descripcin: Examina un bit del registro SREG y realiza unsalto relativo en el PC (contador de programa) si el bit est a uno. La instruccin desva relativamente al PC en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.

    Banderasafectadas: Ninguna

    Ejemplo:

    BST r0, 3 ; Carga la bandera T con el bit 3 de r0BRBS 6, salto ; Salta si el bit T est a uno...

    salto: NOP ; Destino de desvo (No hacer nada)

    BRCC Salta si la bandera C es ceroSintaxis: BRCS k

    Operacin: Si C = 0 entonces PC PC + k + 1Si C = 1 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera C y si es cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 0, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    ADD r22, r23 ; Suma r23 a r22BRCC desvo ; Desva si C est borrado...

    desvo: NOP ; Destino de desvo

    BRCS Salta si la bandera C est a set (uno)Sintaxis: BRCS k

    Operacin: Si C = 1 entonces PC PC + k + 1Si C = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera C y si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 0, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    CPI r26, $56 ; Comparar r26 con $56BRCS desvo ; Desva si C est a uno

    ...desvo: NOP ; Destino de desvo

    10

  • 7/23/2019 Instruciones Avr Espaol

    8/33

    BREAK Pausa

    Sintaxis: BREAK

    Operacin: Pausa en la depuracin

    Operandos: Ninguno

    Descripcin: Se utiliza para la depuracin y normalmente no seutiliza en el programa de la aplicacin. Cuando la instruccin esejecutada el CPU del AVR se pone en modo de inactividad. Estole da al depurador acceso a los recursos internos.

    La instruccin no est disponible para todos los modelos deAVRs.

    Banderasafectadas: Ninguna

    BREQ Salta si es igual

    Sintaxis: BREQ k

    Operacin: Si Rd = Rr : Z = 1 entonces PC PC + k + 1Si Rd Rr : Z = 0 entonces PCPC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera Z y ejecuta un salto relativo enPC (contador de programa) si Z est a uno. Si la instruccin seejecuta inmediatamente despus de alguna de las instruccionesCP, CPI, SUB o SUBI, el salto ocurre si el nmero binario con osin signo representado en Rd es igual al nmero binario con o sinsigno representado en Rr. Esta instruccin desva relativamente aPC en cualquier direccin (PC - 63 destino PC + 64). Elparmetro k es el offset de PC y es representado en forma decomplemento a dos. (Equivalente a la instruccin BRBS 1, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    CP r1, r0 ; Comparar registros r1 y r0BREQ igual ; Salta si Z=0 (los registros son iguales)...

    igual: NOP ; Destino de desvo (No hacer nada)

    BRGE Salta si es mayor o igual (con signo)Sintaxis: BRGE k

    Operacin: Si Rd Rr : (N V = 0) entonces PC PC + k + 1

    Si Rd < Rrentonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera S y si est a cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBC 0, k). Si la instruccin seejecuta inmediatamente despus de alguna de las instruccionesCP, CPI, SUB o SUBI, el desvo puede ocurrir si y slo si elnmero binario con o sin signo representado en Rd es mayor oigual al nmero binario con o sin signo representado en Rr.

    Banderasafectadas: Ninguna

    Ejemplo:

    CP r11, r12 ; Comparar los registros r11 y r12BRGE desvo ; Desva si r11 r12 (con signo)

    ...desvo: NOP ; Destino de desvo

    BRHC Salta si la bandera H est a ceroSintaxis: BRHS k

    Operacin: Si H = 0 entonces PC PC + k + 1Si H = 1 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera H y si est a cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 5, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    BRHC desvio ; Desvo si la bandera H est a cero...

    desvio: NOP ; Destino de desvo

    11

  • 7/23/2019 Instruciones Avr Espaol

    9/33

    BRHS Salta si la bandera H est a uno

    Sintaxis: BRHS k

    Operacin: Si H = 1 entonces PC PC + k + 1Si H = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera H y si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 5, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    BRHS desvio ; Desvo si la bandera H est a uno...

    desvio: NOP ; Destino de desvo

    BRID Salta si la bandera I est a cero

    Sintaxis: BRID k

    Operacin: Si T = 0 entonces PC PC + k + 1Si T = 1 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera I; si est a cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 7, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    BRIE desvio ; Desva si la bandera I est a cero...

    desvio: NOP ; Destino de desvo

    BRIE Salta si la bandera I est a unoSintaxis: BRIE k

    Operacin: Si I = 1 entonces PC PC + k + 1Si I = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera I; si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 7, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    BRIE desvio ; Desva si la bandera I est a uno...

    desvio: NOP ; Destino de desvo

    BRLO Salta si es menorSintaxis: BREQ k

    Operacin: Si Rd < Rr : C = 1 entonces PC PC + k + 1Si Rd Rr : C = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin:Examina la bandera C y si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBC 0, k). Si la instruccin seejecuta inmediatamente despus de alguna de las instruccionesCP, CPI, SUB o SUBI, el desvo puede ocurrir si y slo si elnmero binario con o sin signo representado en Rd es mayor oigual al nmero binario con o sin signo representado en Rr.

    Banderasafectadas: Ninguna

    Ejemplo:

    CP r1, r0 ; Comparar registros r1 y r0BREQ igual ; Salta si Z=0 (los registros son iguales)...

    igual: NOP ; Destino de desvo (No hacer nada)

    12

  • 7/23/2019 Instruciones Avr Espaol

    10/33

    BRLT Salta si es menor (con signo)

    Sintaxis: BRLT k

    Operacin: Si Rd Rr : (N V = 1) entonces PC PC + k + 1

    Si Rd < Rrentonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera S y si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBC 0, k). Si la instruccin seejecuta inmediatamente despus de alguna de las instruccionesCP, CPI, SUB o SUBI, el desvo puede ocurrir si y slo si elnmero binario con o sin signo representado en Rd es mayor oigual al nmero binario con o sin signo representado en Rr.

    Banderasafectadas: Ninguna

    Ejemplo:

    CP r16, r1 ; Comparar los registros r16 con r1BRLT desvo ; Desva si r16 < r1 (con signo)...

    desvo: NOP ; Destino de desvo (No hacer nada)

    BRMI Salta si es negativo

    Sintaxis: BRMI k

    Operacin: Si N = 1 entonces PC PC + k + 1Si N = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera N y si est a uno se desvarelativamente al PC (contador de programa en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 2, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    SUBI r18, 4 ; Restar 4 de r18BRMI desvo ; Desva si la bandera N=1

    ...desvo: NOP ; Destino de desvo

    BRNE Salta si es diferenteSintaxis: BRNE k

    Operacin: Si Rd = Rr : Z = 0 entonces PC PC + k + 1Si Rd Rr : Z = 1 entonces PCPC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera Z y ejecuta un salto relativo enPC (contador de programa) si Z est a cero. Si la instruccin seejecuta inmediatamente despus de alguna de las instruccionesCP, CPI, SUB o SUBI, el salto ocurre si el nmero binario con osin signo representado en Rd es diferente al nmero binario cono sin signo representado en Rr. Esta instruccin desvarelativamente a PC en cualquier direccin (PC - 63 destino PC + 64). El parmetro k es el offset de PC y es representado enforma de complemento a dos. (Equivalente a la instruccinBRBS 1, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    EOR r27, r27 ; Borrar r27loop: INC r27 ; Incrementar r27

    ...CPI r27,5 ; Comparar r27 con 5BRNE loop ; Desvo si r27 5NOP ; Salida de Loop

    BRPL Salta si es positivoSintaxis: BRPL k

    Operacin: Si N = 0 entonces PC PC + k + 1Si N = 1 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera N y si est a cero se desvarelativamente al PC (contador de programa en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 2, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    SUBI r26, $50 ; Restar $50 de r26BRPL desvo ; Desva si r26 es positivo

    ...desvo: NOP ; Destino de desvo

    13

  • 7/23/2019 Instruciones Avr Espaol

    11/33

    BRSH Salta si es mayor o igual (sin signo)

    Sintaxis: BRSH k

    Operacin: Si Rd Rr : C = 0 entonces PC PC + k + 1Si Rd < Rr : C = 1 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera C y si est a cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBC 0, k). Si la instruccin seejecuta inmediatamente despus de alguna de las instruccionesCP, CPI, SUB o SUBI, el desvo puede ocurrir si y slo si elnmero binario con o sin signo representado en Rd es mayor oigual al nmero binario con o sin signo representado en Rr.

    Banderasafectadas: Ninguna

    Ejemplo:

    SUBI r19, 4 ; Restar 4 de r19BRSH desvo ; Desva si r19 4 (sin signo)...

    desvo: NOP ; Destino de desvo

    BRTC Salta si la bandera T est a cero

    Sintaxis: BRTC k

    Operacin: Si T = 0 entonces PC PC + k + 1Si T = 1 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera T y si est a cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 5, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    BST r3, 5 ; cargar el bit 5 de r3 en la bandera TBRTS desvio ; Desva si ese bit est a cero

    ...desvio: NOP ; Destino de desvo

    BRTS Salta si la bandera T est a unoSintaxis: BRTS k

    Operacin: Si T = 1 entonces PC PC + k + 1Si T = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera T y si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 6, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    BST r3, 5 ; cargar el bit 5 de r3 en la bandera TBRTS desvio ; Desva si ese bit est a uno

    ...desvio: NOP ; Destino de desvo

    BRVC Salta si la bandera V est a ceroSintaxis: BRTC k

    Operacin: Si V = 1 entonces PC PC + k + 1Si V = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera V y si est a cero desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 6, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    ADD r3, r4 ; Suma el registro r4 a r3BRVS desvio ; Desva si no hay desbordamiento

    ...desvio: NOP ; Destino de desvo

    14

  • 7/23/2019 Instruciones Avr Espaol

    12/33

    BRVS Salta si la bandera V est a uno

    Sintaxis: BRVS k

    Operacin: Si V = 1 entonces PC PC + k + 1Si V = 0 entonces PC PC + 1

    Operandos: -64 k 63

    Descripcin: Examina la bandera V y si est a uno desvarelativamente al PC (contador de programa) en cualquierdireccin (PC - 63 destino PC + 64). El parmetro k es eloffset de PC y es representado en forma de complemento a dos.(Equivalente a la instruccin BRBS 6, k).

    Banderasafectadas: Ninguna

    Ejemplo:

    ADD r3, r4 ; Suma el registro r4 a r3BRVS desvio ; Desva si hay desbordamiento

    ...desvio: NOP ; Destino de desvo

    BSET Poner a uno el bit de una bandera

    Sintaxis: BSET s

    Operacin: SREG(s) 1

    Operandos: 0 s 7

    Descripcin: Pone a uno un bit especfico del registro debanderas SREG.

    Banderasafectadas:

    I: 1 si s = 7; de lo contrario sin cambioT: 1 si s = 6; de lo contrario sin cambioH: 1 si s = 5; de lo contrario sin cambioS: 1 si s = 4; de lo contrario sin cambioV: 1 si s = 3; de lo contrario sin cambioN: 1 si s = 2; de lo contrario sin cambioZ: 1 si s = 1; de lo contrario sin cambioC: 1 si s = 0; de lo contrario sin cambio

    Ejemplo:

    BSET 6 ; Poner a uno la bandera TBSET 7 ; Interrupcin habilitada

    BST Guarda en T el bit de un registroSintaxis: BST Rd, b

    Operacin: T Rd(b)

    Operandos: 0 d 31, 0 b 7

    Descripcin: Guarda el bit b del registro Rd en la bandera T delregistro de SREG.

    Banderasafectadas:

    T: Se pone a uno si el bit b del registro Rd est a uno, de locontrario se pone a cero.

    Ejemplo:

    BST r1, 2 ; Guardar el bit 2 de r1 en la bandera TBLD r0, 4 ; Cargar T en el bit 4 de r0

    CALL llamada larga a subrutinaSintaxis: CALL k

    Operacin: PC k Dispositivos con PC de 16 bitsPC k Dispositivos con PC de 22 bits

    Operandos: 0 k 64K0 k 4M

    Pila: Stack PC + 2 : SP SP -2 (2 Bytes)Stack PC + 2 : SP SP -3 (3 Bytes)

    Descripcin: Llama a una subrutina en cualquier lugar de lamemoria de programa. La direccin de retorno se almacena en lapila. El puntero de pila SP es post-decrementado durante lainstruccin CALL.

    Banderasafectadas: Ninguna

    Ejemplo:

    MOV r16, r0 ; Copiar r0 en r16CALL check ; Llamado a subrutina

    ...check: CPI r16, $42 ; Compara r16 con un valor

    ; especfico...

    BREQ error ; Salta si son igualesRET ; Retorno de subrutina

    error: RJMP error ; Ciclo infinito

    15

  • 7/23/2019 Instruciones Avr Espaol

    13/33

    CBI Poner a cero un bit del registro I/O

    Sintaxis: CBI P, b

    Operacin: (P, b) 1

    Operandos: 0 P 31, 0 b 7

    Descripcin: Pone a cero un bit especfico en un registro de I/O.Esta operacin funciona en los 32 registros de I/O ms bajos, yen los registros de trabajo de 0 a 31.

    Banderasafectadas: Ninguna

    Ejemplo:

    CBI $12, 7 ; Poner a cero el bit 7 de Port D

    CBR Pone a cero los bits del registro

    Sintaxis: CBR Rd, K

    Operacin: Rd Rd AND ($FF K)

    Operandos: 16 d 31, 0 K 255

    Descripcin: Pone a uno los bits del registro Rd indicados.Realiza la operacin ORI lgica entre el contenido del registroRd y una constante K, y deja el resultado en el registro destinoRd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    CBR r16, $F0 ; Borra el nibble alto de r16

    CBR r18, 1 ; Borra el bit 0 de r18

    CLC Poner a cero la bandera CSintaxis: CLC

    Operacin: C 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de acarreo C del registro deestado SREG.

    Banderasafectadas:

    C: Se pone a cero

    Ejemplo:

    ADD r0, r0 ; Sumar r0 a s mismoCLC ; Borrar la bandera de acarreo

    CLH Poner a cero la bandera HSintaxis: CLH

    Operacin: H 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de medio acarreo H delregistro de estado SREG.

    Banderasafectadas:

    H: Se pone a cero

    Ejemplo:

    CLH ; Borrar la bandera H

    16

  • 7/23/2019 Instruciones Avr Espaol

    14/33

    CLI Deshabilitar las interrupciones globales

    Sintaxis: CLI

    Operacin: N 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de habilitacin deinterrupciones globales I del registro de estado SREG.

    Banderasafectadas:

    I: Se pone a cero

    Ejemplo:

    CLI ; Interrupciones deshabilitadasIN r11, $16 ; Leer el Puerto BSEI ; Interrupciones habilitadas

    CLN Poner a cero la bandera N

    Sintaxis: CLN

    Operacin: N 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de resultado negativo N delregistro de estado SREG.

    Banderasafectadas:

    C: Se pone a cero

    Ejemplo:

    ADD r2, r3 ; Sumar r3 a r2

    CLN ; Borrar la bandera N

    CLR Borra un registroSintaxis: CLR Rd

    Operacin: Rd Rd (XOR) Rd

    Operandos: 0 d 31

    Descripcin: Borra un registro. Esta instruccin realiza una ORexclusiva entre un registro y en s mismo. Borrar todos los bitsdel registro.

    Banderasafectadas:

    V: Se pone a cero.N: Se pone a ceroZ: Se pone a uno.

    Ejemplo:

    CLR r18 ; Borrar r18loop: INC r18 ; Incrementar r18

    ...CPI r18, $50 ; Comparar r18 con $50

    BRNE loop

    CLS Poner a cero la bandera SSintaxis: CLS

    Operacin: S 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de signo S del registro deestado SREG.

    Banderasafectadas:

    S: Se pone a cero

    Ejemplo:

    ADD r2, r3 ; Sumar r3 a r2CLS ; Borrar la bandera S

    17

  • 7/23/2019 Instruciones Avr Espaol

    15/33

    CLT Poner a cero la bandera T

    Sintaxis: CLT

    Operacin: T 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera T del registro de estadoSREG.

    Banderasafectadas:

    T: Se pone a cero

    Ejemplo:

    CLT ; Borrar la bandera T

    CLV Poner a cero la bandera V

    Sintaxis: CLV

    Operacin: V 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de desbordamiento V delregistro de estado SREG.

    Banderasafectadas:

    V: Se pone a cero

    Ejemplo:

    ADD r2, r3 ; Sumar r3 a r2

    CLV ; Borrar la bandera V

    CLZ Poner a cero la bandera ZSintaxis: CLZ

    Operacin: Z 0

    Operandos: Ninguno

    Descripcin: Pone a cero la bandera de resultado cero Z delregistro de estado SREG.

    Banderasafectadas:

    Z: Se pone a cero

    Ejemplo:

    ADD r2, r3 ; Suma r3 a r2CLZ ; Borra la bandera Z

    COM Complemento a unoSintaxis: COM Rd

    Operacin: Rd $FF - Rd

    Operandos: 0 d 31

    Descripcin: Realiza el complemento a uno del registro Rd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: se pone a uno.

    Ejemplo:

    COM r4 ; Realiza el complemento a uno de r4BREQ prueba ; brinca si la bandera Z est en uno....

    prueba: NOP ; Destino de desvo (No hacer nada)

    18

  • 7/23/2019 Instruciones Avr Espaol

    16/33

    CP Compara

    Sintaxis: CP Rd, Rr

    Operacin: Rd -Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Efecta una comparacin entre dos registros Rd yRr. Ninguno de los registros es cambiado. Todos los desvoscondicionales pueden usarse despus de esta instruccin.

    Banderasafectadas:

    H: Se activa si hay un acarreo negativo del bit 3, de lo contrariose borrar.V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si el valor absoluto del contenido de Rr es mayorque el contenido de Rd, de lo contrario se borrar.

    Ejemplo:

    CP r4, r19 ; Comparar r4 con r19BRNE noteq ; Desva si la bandera Z est activa.

    ...noteq: NOP ; Destino de desvo (No hacer nada)

    CPC Compara con acarreo

    Sintaxis: CPC Rd, Rr

    Operacin: Rd Rr -C

    Operandos: 0 d 31, 0 r 31

    Descripcin: Realiza una comparacin entre dos registros Rd yRr y tambin se toma en cuenta el estado de la bandera C previo.Ninguno de los registros es cambiado. Todos los desvoscondicionales pueden usarse despus de esta instruccin

    Banderasafectadas:

    H: Se activa si hay un acarreo negativo del bit 3, de lo contrariose borrar.V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: El valor previo permanece sin cambio cuando el resultado esce o, de lo contrario se borrar.r

    CEstar a uno si el valor absoluto del contenido de Rr + C, esmayor que el contenido de Rd, de lo contrario se borrar.

    Ejemplo:

    ; Comparar r3:r2 con r1:r0CP r2, r0 ; Compara el byte bajoCPC r3, r1 ; Compara el byte altoBRNE noteq ; Desva si la bandera Z est activa

    ...noteq: NOP ; Destino de desvo( no hacer nada)

    CPI Compara un registro con dato inmediatoSintaxis: CPI Rd, K

    Operacin: Rd -K

    Operandos: 16 d 31, 0 K 255

    Descripcin: Efecta una comparacin entre el registro Rd y undato inmediato. El registro no es cambiado. Todos los desvoscondicionales pueden usarse despus de esta instruccin.

    Banderasafectadas:

    H: Se activa si hay un acarreo negativo del bit 3, de lo contrariose borrar.V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si el valor absoluto del contenido de K es mayor queel contenido de Rd, de lo contrario se borrar.

    Ejemplo:

    CPI r19,3 ; Comparar r19 con 3BRNE error ; Desva si la bandera Z est activa

    ...error: NOP ; Destino de desvo (No hacer nada)

    CPSE Compara y saltar si es igualSintaxis: CPSE Rd, Rr

    Operacin: Si Rd = Rr entonces PC PC + 2 ( o 3)Si Rd Rr entonces PC PC + 1

    Operandos: 0 d 31, 0 r 31

    Descripcin: Ejecuta una comparacin entre dos registros Rd yRr, y si Rd Rr entonces la siguiente instruccin se ejecuta de locontrario la siguiente instruccin es brincada.

    Banderasafectadas: Ninguna

    Ejemplo:

    INC r4 ; Incrementar r4CPSE r4, r0 ; Comparar r4 con r0NEG r4 ; Slo ejecutar si r4 r0NOP ; Continuar (No hacer nada)

    19

  • 7/23/2019 Instruciones Avr Espaol

    17/33

    DEC Decrementar el registro

    Sintaxis: DEC Rd

    Operacin: Rd Rd -1

    Operandos: 0 d 31

    DescripcinSe decrementa en uno al contenido del registro Rd ydeja el resultado en Rd. La bandera C de SREG no es afectadapor la operacin. Al funcionar con nmeros sin signo, slo sepuede esperar que funcionen de forma consistente lasinstrucciones BREQ y BRNE. Al operar con valores encomplemento a dos todas las instrucciones de desvo estndisponibles.

    Banderasafectadas:

    V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar. Undesbordamiento del complemento a dos ocurrir si y slo si Rdera $80 antes de la operacin.N: Se activa si el bit MSB del resultado est a uno, de lo

    contrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    LDI r17, $10 ; Cargar constante en r17Loop: ADD r1, r2 ; Sumar r2 a r1

    DEC r17 ; Decrementar r17BRNE loop ; Desvo si r17 0NOP ; Continuar (No hacer nada)

    EOR Funcin lgica OR-exclusiva (

    ) entreregistros

    Sintaxis: EOR Rd, Rr

    Operacin: Rd Rd Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Se realiza el XOR lgico entre el contenido delregistro Rd y del registro Rr; deja el resultado en el registrodestino Rd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    EOR r4, r4 ; Borrar r4

    EOR r0, r22 ; OR exclusiva entre r0 y r22

    ICALL llamada indirecta a subrutinaSintaxis: ICALL

    Operacin: PC (15:0) Z (15:0)

    Operandos: Ninguno

    Pila: Stack PC + 1 : SP SP -2 (2 Bytes)

    Descripcin: Realiza una llamada indirecta a una subrutinaapuntada por el registro puntero Z. El registro puntero Z es de 16bit y permite la llamada a subrutina dentro de los 64K words(128K bytes) ms bajos de la seccin de espacio de memoria deprograma. El SP (puntero de pila) utiliza durante el ICALL unesquema de post-decremento.

    Banderasafectadas: Ninguna

    Ejemplo:

    MOV r30, r0 ; Poner offset a la tabla de llamadaICALL ; Rutina de llamada que apunta a r31:r30

    IJMP Salto indirectoSintaxis: IJMP

    Operacin: PC Z(15:0)

    Operandos: Ninguno

    Descripcin: Efecta un salto indirecto a una direccin apuntadapor el registro puntero Z. El registro puntero Z es de 16 bits ypermite saltos hacia los 64K words (128K bytes) ms bajos de laseccin de memoria de programa. La instruccin no estdisponible para todos los modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    MOV r30, r0 ; Poner offset a la tabla de saltoIJMP ; Saltar a la rutina apuntada por r31:r30

    20

  • 7/23/2019 Instruciones Avr Espaol

    18/33

    IN Cargar un registro de trabajo con I/O

    Sintaxis: IN Rd, P

    Operacin: Rd P

    Operandos: 0 d 31, 0 P 63

    Descripcin: Carga un dato proveniente del bloque de registrosI/O (Puertos, Timers, registros de configuracin, etc.) en elregistro de trabajo Rd.

    Banderasafectadas: Ninguna

    Ejemplo:

    IN r25, $16 ; Carga en r25 el ;dato;contenido en Puerto B

    CPI r25,4 ; Comparar el valor de r25 con; un dato inmediato

    BREQ exit ; Desva si r25 = 4...

    exit: NOP ; Destino de desvo

    INC Incrementar el registro

    Sintaxis: INC Rd

    Operacin: Rd Rd +1

    Operandos: 0 d 31

    DescripcinSe incrementa en uno al contenido del registro Rd ydeja el resultado en el registro Rd. La bandera C de SREG no esafectada por la operacin. Al funcionar con nmeros sin signo,slo se puede esperar que funcionen de forma consistente lasinstrucciones BREQ y BRNE. Al operar con valores encomplemento a dos todas las instrucciones de desvo estndisponibles.

    Banderasafectadas:

    V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar. Undesbordamiento del complemento a dos ocurrir si y slo si Rdera $7F antes de la operacin.N: Se activa si el bit MSB del resultado est a uno, de lo

    contrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    CLR r22 ; Borrar r22loop: INC r22 ; Incrementar r22

    ...CPI r22, $4F ; Comparar r22 con $4fBRNE loop ; Desvo si no son igualesNOP ; Continuar (No hacer nada)

    JMP SaltoSintaxis: JMP k

    Operacin: PC k

    Operandos: 0 k 4M

    Descripcin: Ejecuta un salto a cualquier posicin de lamemoria de programa. La instruccin no es disponible para todoslos modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    MOV r1, r0 ; Copia r0 en r1JMP lejos ; Salto incondicional

    lejos: nop ; Destino de salto

    LDI Carga de un dato inmediatoSintaxis: LDI Rd, K

    Operacin: Rd K

    Operandos: 16 Rd 31, 0 K 255

    Descripcin: Carga un dato inmediato de 8-bits en cualquiera delos registros de trabajo a partir de R16 hasta R31.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r31 ; Borra el byte alto de ZLDI r30, $F0 ; Pone el byte bajo de Z a $F0LPM ; Carga una constante de la memoria

    ; de programa apuntada por Z

    21

  • 7/23/2019 Instruciones Avr Espaol

    19/33

    LD Carga indirecta usando X

    Sintaxis: LD Rd, XLD Rd, X+LD Rd, -X

    Operacin: Rd (X) X: Sin cambios

    Rd (X), X X+1 X: Con post-incrementoX X1, Rd (X) X: Con pre-decremento

    Operandos: 0 d 31

    DescripcinSe carga un byte de manera indirecta procedente delrea de datos hacia un registro de trabajo. Para los dispositivoscon SRAM, el rea de datos se compone de los registros de:trabajo, I/O y SRAM interna (y SRAM externa si es aplicable).Para los dispositivos sin SRAM, el espacio de datos se componeslo por los registros de trabajo. La EEPROM tiene un espaciode direccin separado.

    La direccin de los datos es apuntado por el registro puntero X(16 bits). Se limita el acceso de memoria al segmento de datos de64K bytes. Para acceder a otro segmento de datos en dispositivos

    con ms de 64K bytes de datos de espacio, el registro I/ORAMPX tiene que ser correctamente configurado.

    El registro puntero X puede permanecer sin cambios por laoperacin, puede post-incrementarse o pre-decrementarse. Estascaractersticas son apropiadas para acceder a matrices, tablas yuso del puntero de pila con el registro puntero X. Slo el bytebajo del puntero X se ocupa para dispositivos sin ms de 256bytes de espacio de datos. Para tales dispositivos, el byte alto delpuntero no es usado por esta instruccin y puede usarse paraotros propsitos.

    El resultado de estas combinaciones es indefinido:

    LD r26, X+

    LD r27, X+

    LD r26, -X

    LD r27, -X

    Algunas variantes de esta instruccin no son disponibles paratodos los modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r27 ; Borra el byte alto de XLDI r26, $60 ; Pone el byte bajo de X a $60LD r0, X+ ; Carga en r0 el dato de la localidad $60

    ;(X post-incrementado)LD r1, X ; Carga en r1 el dato contenido en la

    ; localidad $61LDI r26, $63 ; Pone el byte bajo de X a $63LD r2, X ; Carga en r2 el dato de la localidad $63LD r3, -X ; Cargar en r3 el dato de la localidad $62

    ;(X pre-decremento)

    LD (LDD) Carga indirecta usando YSintaxis: LD Rd, Y

    LD Rd, Y+LD Rd, -YLDD Rd, Y+q

    Operacin: Rd (Y) Y: Sin cambiosRd (Y), Y Y+1 Y: Con post-incrementoY Y1, Rd (Y) Y: Con pre-decrementoRd (Y+q) Y: Sin cambios,

    q: DesplazamientoOperandos: 0 d 31, 0 q 63

    DescripcinSe carga un byte de manera indirecta procedente delrea de datos hacia un registro de trabajo. Para los dispositivoscon SRAM, el rea de datos se compone de los registros de:trabajo, I/O y SRAM interna (y SRAM externa si es aplicable).Para los dispositivos sin SRAM, el espacio de datos se componeslo por los registros de trabajo. La EEPROM tiene un espaciode direccin separado.

    La direccin de los datos es apuntado por el registro puntero Y(16 bits). Se limita el acceso de memoria al segmento de datos de64K bytes. Para acceder a otro segmento de datos en dispositivoscon ms de 64K bytes de datos de espacio, el registro I/ORAMPY tiene que ser correctamente configurado.

    El registro puntero Y puede permanecer sin cambios por laoperacin, puede post-incrementarse o pre-decrementarse. Estascaractersticas son apropiadas para acceder a matrices, tablas yuso del puntero de pila con el registro puntero Y. Slo el bytebajo del puntero Y se ocupa para dispositivos sin ms de 256

    bytes de espacio de datos. Para tales dispositivos, el byte alto delpuntero no es usado por esta instruccin y puede usarse paraotros propsitos.

    El resultado de estas combinaciones es indefinido:

    LD r28, Y+

    LD r29, Y+

    LD r28, -Y

    LD r29, -Y

    Algunas variantes de esta instruccin no son disponibles paratodos los modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r29 ; Borra el byte alto de YLDI r28, $60 ; Pone el byte bajo de Y a $60LD r0, Y+ ; Carga en r0 el dato de la localidad $60

    ; (Y post-incrementado)LD r1, Y ; Carga en r1 el dato de la localidad $61LDI r28, $63 ; Pone el byte bajo de Y a $63LD r2, Y ; Carga en r0 el dato de la localidad $63LD r3,-Y ; Carga en r0 el dato de la localidad $62

    ; (Y pre-decrementado)LDD r4, Y+2 ; Carga en r4 el dato de la localidad $64

    22

  • 7/23/2019 Instruciones Avr Espaol

    20/33

    LD (LDD) Carga indirecta usando Z

    Sintaxis: LD Rd, ZLD Rd, Z+LD Rd, -ZLDD Rd, Z+q

    Operacin: Rd (Z) Z: Sin cambiosRd (Z), Z Z+1 Z: Con post-incrementoZ Z 1, Rd (Z) Z: Con pre-decrementoRd (Z+q) Z: Sin cambios,

    q: DesplazamientoOperandos: 0 d 31, 0 q 63

    DescripcinSe carga un byte de manera indirecta procedente delrea de datos hacia un registro de trabajo. Para los dispositivoscon SRAM, el rea de datos se compone de los registros de:trabajo, I/O y SRAM interna (y SRAM externa si es aplicable).Para los dispositivos sin SRAM, el espacio de datos se componeslo por los registros de trabajo. La EEPROM tiene un espaciode direccin separado.

    La direccin de los datos es apuntado por el registro puntero Z

    (16 bits). Se limita el acceso de memoria al segmento de datos de64K bytes. Para acceder a otro segmento de datos en dispositivoscon ms de 64K bytes de datos de espacio, el registro I/ORAMPX tiene que ser correctamente configurado.

    El registro puntero Z puede permanecer sin cambios por laoperacin, puede post-incrementarse o pre-decrementarse. Estascaractersticas son apropiadas para acceder a matrices, tablas yuso del puntero de pila; Sin embargo, debido a que este punteropuede usarse para las llamadas indirectas a subrutinas y los saltosindirectos, es mejor usar a los punteros X o Y para direccionar alpuntero de pila..

    Slo el byte bajo del puntero Z se ocupa para dispositivos sinms de 256 bytes de espacio de datos. Para tales dispositivos, elbyte alto del puntero no es usado por esta instruccin y puedeusarse para otros propsitos.

    El resultado de estas combinaciones es indefinido:

    LD r30, Z+

    LD r31, Z+

    LD r30, -Z

    LD r31, -Z

    Algunas variantes de esta instruccin no son disponibles paratodos los modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r31 ; Borra el byte alto de ZLDI r30, $60 ; Pone el byte bajo de Z a $60LD r0, Z+ ; Carga en r0 el dato de la localidad $60

    ; (Z post-incrementado)LD r1, Z ; Carga en r1 el dato de la localidad $61LDI r30, $63 ; Pone el byte bajo de Z a $63LD r2, Z ; Carga en r0 el dato de la localidad $63LD r3,-Z ; Carga en r0 el dato de la localidad $62

    ; (Z pre-decrementado)LDD r4, Z+2 ; Carga en r4 el dato de la localidad $64

    LDS Carga directa desde SRAMSintaxis: LDS Rd, k

    Operacin: Rd (k)

    Operandos: 0 d 31, 0 k 65535

    Descripcin: Carga un byte del espacio de memoria de datos aun registro de trabajo. Para los dispositivos con SRAM, elespacio de datos est compuesto por los registros de trabajo,memoria de I/O y SRAM interna (y SRAM externa si esaplicable). Para los dispositivos sin SRAM, el espacio de datosest compuesto slo por los registros de trabajo. La EEPROMtiene un espacio de direcciones separado. Debe proporcionarseuna direccin de 16-bit. Se limita el acceso de memoria alsegmento de datos de 64K bytes. Para acceder a otro segmentode datos en dispositivos con ms de 64K bytes de datos deespacio, el registro I/O RAMPD tiene que ser correctamenteconfigurado.

    Banderasafectadas: Ninguna

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    LDS r2, $FF00 ; Carga r2 con el contenido de la localidad; $FF00 de la memoria de datos

    ADD r2, r1 ; Sumar r1 a r2

    STS $FF00, r2 ; Escribir en SRAM el contenido de r2

    LPM Carga memoria de programaSintaxis: LPM

    LPM Rd, ZLPM Rd, Z+

    Operacin: R0 (Z) Z: Sin cambio, R0 implcitoRd (Z) Z: Sin cambioRd (Z), Z Z + 1 Z: Post-incrementado

    Operandos: 0 d 31

    Descripcin: Se carga un byte apuntado por el registro Z en elregistro R0. La memoria de programa est organizada en palabra(word) de 16-bits; el bit menos significativo del puntero Zselecciona el byte bajo (0) o el byte alto (1). Esta instruccinpuede dirigirse a los primeros 64K bytes (32K words) dememoria de programa. El registro puntero Z queda inalterado porel funcionamiento.

    Banderasafectadas: Ninguna

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    CLR r31 ; Borrar el byte alto de ZLDI r30, $F0 ; Poner a cero el byte bajo de ZLPM ; Cargar la constante de la

    ;memoria de programa

    ;apuntada por Z (r31:r30)

    23

  • 7/23/2019 Instruciones Avr Espaol

    21/33

    LSL Desplazamiento a la izquierda

    Sintaxis: LSL Rd

    Operacin:

    Operandos: 0 d 31

    Descripcin: Desplaza todos los bits de Rd una posicin hacia laizquierda. El bit 7 se carga en la bandera C de SREG.Prcticamente esta operacin multiplica por dos al contenido deRd.

    Banderasafectadas:

    H: Se activa si hay un acarreo del bit 3, de lo contrario seborrar.

    S:N C, para prueba de signo

    V:N C (para N y C despus del desplazamiento)N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si antes del desplazamiento el MSB del Rd est a

    uno, de lo contrario se borrar.

    Ejemplo:

    ADD r0, r4 ; Sumar r4 a r0LSL r0 ; Multiplicar r0 por 2

    LSR Desplazamiento a la derecha

    Sintaxis: LSR Rd

    Operacin:

    Operandos: 0 d 31

    Descripcin: Desplaza todos los bits de Rd una posicin hacia laderecha. En el bit 7 se carga un cero, en la bandera C se carga elLSB de Rd. Prcticamente esta operacin divide entre dos alcontenido de Rd.

    Banderasafectadas:

    S:N C, para prueba de signo

    V:N C (para N y C despus del desplazamiento)N: Se pone a ceroZ: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si el LSB de Rd antes del desplazamiento estaba auno.

    Ejemplo:

    ADD r0, r4 ; Sumar r4 a r0LSR r0 ; Dividir a r0 entre 2

    MOV Copia de registrosSintaxis: MOV Rd, Rr

    Operacin: Rd Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Efecta una copia de un registro en otro registro.El registro fuente Rr permanece sin cambiar, mientras el registrodestino Rd es cargado con una copia de Rr.

    Banderasafectadas: Ninguna

    Ejemplo:

    MOV r16,r0 ; Copiar r0 en r16CALL check ; Llamada a subrutina

    ...check: CPI r16,$11 ; Comparar r16 con $11

    ...

    RET ; Retorno de subrutina

    MOVW Copia de registros de palabraSintaxis: MOVW Rd + 1: Rd, Rr + 1: Rr

    Operacin: Rd + 1: Rd Rr + 1: Rr

    Operandos: d {0,2,,30} r {0,2,,30}

    Descripcin: Efecta una copia de un par de registros en otro parde registros. Los registros fuente Rr permanecen sin cambiar,mientras los registros destino Rd son cargados con una copia deRr.

    Banderasafectadas: Ninguna

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    MOVW r17:r16,r1:r0 ; Copiar r1:r0 en r17:r16CALL check ; Llamada a subrutina

    ...check: CPI r16, $11 ; Comparar r16 con $11

    ...RET ; Retorno de subrutina

    24

  • 7/23/2019 Instruciones Avr Espaol

    22/33

    NEG Complemento a dosSintaxis: NEG Rd

    Operacin: Rd $00 - Rd

    Operandos: 0 d 31

    Descripcin: Cambia el contenido del registro Rd con sucomplemento a dos; el valor $80 se deja sin cambiar.

    Banderasafectadas:

    H: Se activa si haba un acarreo negativo (Borrow) del bit 3, delo contrario se borrar (cero).V: Se activa si ocurre un desbordamiento del complemento a dosde la resta implcita de cero, de lo contrario se borrar. Undesbordamiento del complemento a dos ocurrir si y slo si elcontenido del registro despus de la operacin es $80.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si hay un acarreo negativo (borrow) en la restaimplcita de cero, de lo contrario se borrar. La bandera C seactiva en todos los casos excepto cuando el contenido delregistro despus de la operacin es $00.

    Ejemplo:

    SUB r11, r0 ; Restar r0 de r11BRPL prueba ; Desvo si la bandera N est a cero.NEG r11 ; Realizar el complemento a dos de r11

    prueba: NOP ; Destino de desvo (No hacer nada)

    NOP No operacinSintaxis: NOP

    Operacin: Ninguna

    Operandos: Ninguno

    Descripcin: Consume un ciclo sin realizar operaciones.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r16 ; Borrar r16SER r17 ; Poner a uno r17OUT $18, r16 ; Escribir ceros en el Puerto BNOP ; Esperar (No hacer nada)OUT $18, r17 ; Escribir unos en el Puerto B

    MULS Multiplicacin con signo

    Sintaxis: MULS Rd, Rr

    Operacin: R1:R0 Rd x Rr

    Operandos: 16 d 31, 0 r 16

    Descripcin: El multiplicando Rd y el multiplicador Rr sonregistros con nmeros signados. El resultado con signo es de 16-bit y se coloca la parte ms significativa del resultado en registroR1 y la menos significativa en R0.

    Banderasafectadas:

    C: Se pone a uno si el bit 15 del resultado est a uno.Z: Se pone a uno si el resultado es cero.

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    MUL r21 r20 ; Multiplica R21 con R20MOVW r20, r0 ; Copia el resultado en R21: R20

    MUL Multiplicacin sin signo

    Sintaxis: MUL Rd, Rr

    Operacin: R1:R0 Rd x Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: El multiplicando Rd y el multiplicador Rr sonregistros con nmeros sin signo. El resultado sin signo es de 16-bit y se coloca la parte ms significativa del resultado en registroR1 y la menos significativa en R0. Si el multiplicando y elmultiplicador son R1 y R0 el resultado se sobrescribir en ellos.

    Banderasafectadas:

    C: Se pone a uno si el bit 15 del resultado est a uno.Z: Se pone a uno si el resultado es cero.

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    MUL r5, r4 ; Multiplica R5 con R4MOVW r4, r0 ; Copia el resultado en R5: R4

    25

  • 7/23/2019 Instruciones Avr Espaol

    23/33

    OR Funcin lgica OR entre registros

    Sintaxis: OR Rd, Rr

    Operacin: Rd Rd (OR) Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Se realiza el OR lgico entre el contenido delregistro Rd y del registro Rr; deja el resultado en el registrodestino Rd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    OR r15, r16 ; Hacer OR lgico entre registrosBST r15, 6 ; Almacena el bit 6 de r15 en el flag T

    BRTS ok ; Desvo si el flag T est a uno...ok: NOP ; Destino de desvo (No hacer nada)

    ORI Funcin lgica OR entre un registro y undato inmediato

    Sintaxis: ORI Rd, K

    Operacin: Rd Rd (OR) K

    Operandos: 0 d 31, 0 K 255

    Descripcin: Se realiza el OR lgico entre el contenido delregistro Rd y el valor K; deja el resultado en el registro destinoRd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    ORI r16, $F0 ; Poner a uno el nibble alto de r16

    ORI r17, 1 ; Poner a uno el bit 0 de r17

    OUT Cargar en I/O un registro de trabajoSintaxis: OUT P, Rr

    Operacin: P Rr

    Operandos: 0 r 31, 0 P 63

    Descripcin: Carga en un registro del bloque I/O el contenido deun registro trabajo.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r16 ; Borrar r16SER r17 ; Poner a unos r17OUT $18, r16 ; Escribir ceros en el Puerto BNOP ; Esperar (No hacer nada)OUT $18, r17 ; Escribir unos en el Puerto B

    POP Sacar registro de la pilaSintaxis: POP Rr

    Operacin: Rr STACK

    Operandos: 0 r 31

    Descripcin: Carga el registro Rd con un byte de la pila. Elpuntero de pila es incrementado en uno antes del POP

    Banderasafectadas: Ninguna

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    CALL routine ; Llamar a subrutina...

    routine: PUSH r14 ; Guardar r14 en la pilaPUSH r13 ; Guardar r13 en la pila...POP r13 ; Restaurar r13POP r14 ; Restaurar r14RET ; Retorno de subrutina

    26

  • 7/23/2019 Instruciones Avr Espaol

    24/33

    PUSH Guardar registro en la pila

    Sintaxis: PUSH Rr

    Operacin: STACK Rr

    Operandos: 0 r 31

    Descripcin: Guarda el contenido del registro Rr en la pila. Elpuntero de pila es post-decrementado en uno despus del PUSH

    Banderasafectadas: Ninguna

    Esta instruccin no es disponible para todos los modelos deAVRs.

    Ejemplo:

    CALL routine ; Llamar a subrutina...

    routine: PUSH r14 ; Guardar r14 en la pilaPUSH r13 ; Guardar r13 en la pila...

    POP r13 ; Restaurar r13POP r14 ; Restaurar r14RET ; Retorno de subrutina

    RCALL llamada relativa a subrutina

    Sintaxis: RCALL k

    Operacin: PC PC + k + 1

    Operandos: -2K k 2K

    Pila: Stack PC + 1 : SP SP -2 (2 Bytes)

    Descripcin: Realiza una llamada relativa a una direccin que seencuentra dentro de PC - 2K + 1 y PC +2K (words, palabra). Enensamblador, se usan etiquetas en lugar de operadores relativos.Para los microcontroladores AVR con memoria de programa queno excede 4K words (8K bytes) esta instruccin puededireccionar a toda la memoria desde cualquier posicin. El SP(puntero de pila) utiliza durante el RCALL un esquema de post-decremento.

    Banderasafectadas: Ninguna

    Ejemplo:

    RCALL routine ; Llamada a subrutina...routine: PUSH r14 ; Guardar r14 en la pila

    ...POP r14 ; Restaurar r14

    RET ; Retorno de subrutina

    RET Retorno de subrutinaSintaxis: RET

    Operacin: PC Stack

    Operandos: Ninguno

    Pila: SP SP + 2 (bytes)

    Descripcin: Efecta un retorno de subrutina. La direccin deretorno es cargada de la pila. El SP (puntero de pila) utilizadurante el RET un esquema de post-incremento.

    Banderasafectadas: Ninguna

    Ejemplo:

    CALL routine ; Llamada a subrutina...

    routine: PUSH r14 ; Guardar r14 en la pila...

    POP r14 ; Restaurar r14RET ; Retorno de subrutina

    RETI Retorno de interrupcinSintaxis: RETI

    Operacin: PC Stack

    Operandos: Ninguno

    Pila: SP SP + 2 (bytes)

    Descripcin: Realiza un retorno de una interrupcin. Ladireccin de retorno es cargada desde la pila; la bandera I deSREG (interrupcin global) se pone a uno. El registro de estadono se guarda automticamente al entrar en una rutina deinterrupcin, y no se restaura al volver de la rutina interrupcin.De ser necesario el programa debe incluir una rutina paramanejar adecuadamente esta situacin. El puntero de pila usa unesquema de pre-incremento durante el RETI.

    Banderasafectadas:

    I: Se pone a uno.

    Ejemplo:...

    extint: PUSH r0 ; Guardar r0 en la pila...

    POP r0 ; Restaurar r0RETI ; Retorno y habilitacin de interrupciones

    27

  • 7/23/2019 Instruciones Avr Espaol

    25/33

    RJMP Salto relativo

    Sintaxis: RJMP k

    Operacin: PC PC + k + 1

    Operandos: -2K k 2K

    Descripcin: Ejecuta un salto relativo a una direccin que seencuentra dentro de PC - 2K + 1 y PC +2K. En ensamblador, seusan etiquetas en lugar de operadores relativos. Para losmicrocontroladores AVR con memoria de programa que noexcede 4K words (8K bytes) esta instruccin puede dirigirse atoda la memoria desde cualquier posicin de direccin.

    Banderasafectadas: Ninguna

    Ejemplo:

    CPI r16, $42 ; Compara r16 con $42BRNE error ; Desvo si r16 $42RJMP ok ; Salto incondicional

    error: ADD r16, r17 ; Suma r17 a r16INC r16 ; Incrementa r16

    ok: NOP ; Destino de RJMP

    ROL Desplazamiento a la izquierdo con acarreo

    Sintaxis: ROL Rd

    Operacin:

    Operandos: 0 d 31

    Descripcin: Desplaza todos los bits de Rd una posicin hacia laizquierda. La bandera C se desplaza al bit 0 de Rd. El bit 7 sedesplaza hacia la bandera C. Esta operacin combinada con LSL,multiplica por dos a valores multi-byte con o sin signo.

    Banderasafectadas:

    H: Se activa si hay un acarreo del bit 3, de lo contrario seborrar.

    S:N C, para prueba de signo

    V:N C (para N y C despus del desplazamiento)N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si antes del desplazamiento el MSB del Rd est auno, de lo contrario se borrar.

    Ejemplo:

    LSL r18 ; Multiplica r19:r18 por dosROL r19 ; r19:r18 es un entero de dos

    ;bytes -con o sin signo-BRCS oneenc ; Desva si C est a uno

    ...oneenc: NOP ; Destino de desvo

    ROR Desplazamiento a la derecha con acarreo

    Sintaxis: ROR Rd

    Operacin:

    Operandos: 0 d 31

    Descripcin: Desplaza todos los bits de Rd una posicin hacia laderecha. La bandera C se desplaza al bit 7 de Rd. El bit 0 sedesplaza hacia la bandera C. Esta operacin combinada con LSRdivide entre dos a valores multi-byte con o sin signo.

    Banderasafectadas:

    S:N C, para prueba de signo

    V:N C (para N y C despus del desplazamiento)

    N: Se pone a uno si el MSB de Rd esta a uno.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa antes del desplazamiento el LSB de Rd estaba auno.

    Ejemplo:

    ADD r0, r4 ; Sumar r4 a r0LSL r0 ; Multiplicar r0 por 2

    SBC Resta de dos registros con acarreo

    Sintaxis: SBC Rd, Rr

    Operacin: Rd Rd Rr - C

    Operandos: 0 d 31, 0 r 31

    Descripcin: Resta dos registros y resta la bandera C; deja elresultado en el registro Rd.

    Banderasafectadas:

    H: Se activa si haba un acarreo negativo (Borrow) del bit 3, delo contrario se borrar (cero).V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.

    N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: El estado anterior permanece sin cambio cuando el resultadoes cero, de lo contrario se borrar.C: Se activa si el valor absoluto del contenido de Rr + el acarreoprevio es mayor que el valor absoluto de Rd, de lo contrario seborrar.

    Ejemplo:

    ; Restar r1:r0 de r3:r2SUB r2, r0 ; Restar el byte bajoSBC r3, r1 ; Restar con acarreo el byte alto

    28

  • 7/23/2019 Instruciones Avr Espaol

    26/33

    SBCI Resta a un registro una constante y elacarreo

    Sintaxis: ADD Rd, Rr

    Operacin: Rd Rd K - C

    Operandos: 16 d 31, 0 K 255

    Descripcin: Resta una constante con un registro y con labandera C; deja el resultado en el registro destino Rd..Banderasafectadas:

    H: Se activa si haba un acarreo negativo (Borrow) del bit 3, delo contrario se borrar (cero).V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: El estado anterior permanece sin cambio cuando el resultadoes cero, de lo contrario se borrar.C: Se activa si el valor absoluto del contenido de Rr + el acarreoprevio es mayor que el valor absoluto de Rd, de lo contrario se

    borrar.

    Ejemplo:; Resta $4F23 de r17:r16

    SUBI r16, $23 ; Restar el byte bajoSBCI r17, $4F ; Restar con acarreo el byte alto

    SBI Poner a uno un bit del registro I/O

    Sintaxis: SBI P, b

    Operacin: (P, b) 1

    Operandos: 0 P 31, 0 b 7

    Descripcin: Pone a uno un bit especfico de un registro delbloque I/O. Esta operacin funciona en los 32 registros de I/Oms bajos. Direcciones de $00 a $1F.

    Banderasafectadas: Ninguna

    Ejemplo:

    OUT $1E, r0 ; Escribir la direccin de EEPROMSBI $1C, 0 ; Poner a uno el bit 0 de EECRIN r1, $1D ; Leer datos de EEPROM

    SBIC Salta si el bit del registro I/O es cero

    Sintaxis: SBCI P, b

    Operacin: Si I/O(P,b) = 0 entonces PC PC + 2 ( o 3)Si I/O(P,b) 0 entonces PC PC + 1

    Operandos: 0 P 31, 0 b 7

    Descripcin: Examina un bit del registro de I/O seleccionado ysalta la siguiente instruccin si el bit est en cero. Est operacinfunciona en los 32 registros de I/O ms bajos, direcciones 0-31).

    Banderasafectadas: Ninguna

    Ejemplo:

    espera: SBIC $1C, 1 ; Saltar prxima instruccin si ; EEWE* est borradoRJMP espera ; Escritura de EEPROM no

    ; terminadaNOP ; Continuar (No hacer nada)

    * EEWE es el bit 1 del registro EECR (Registro de Control de lamemoria EEprom) mapaeado en la localidad $1C de la memoriaRAM.

    SBIS Salta si el bit del registro I/O es uno

    Sintaxis: SBIS P, b

    Operacin: Si I/O(P,b) = 1 entonces PC PC + 2 ( o 3)Si I/O(P,b) 1 entonces PC PC + 1

    Operandos: 0 P 31, 0 b 7

    Descripcin: Examina un bit del registro de I/O seleccionado ysalta la siguiente instruccin si el bit est en uno. Est operacinfunciona en los 32 registros de I/O ms bajos, direcciones 0-31).

    Banderasafectadas: Ninguna

    Ejemplo:

    espera: SBIS $10, 0 ; Saltar la siguiente instruccin ; si el bit 0 en el Puerto D est a uno

    RJMP espera ; Bit 0 borradoNOP ; Continuar (No hacer nada)

    29

  • 7/23/2019 Instruciones Avr Espaol

    27/33

    SBIW Resta un dato inmediato a un registro depalabra

    Sintaxis: SBIW Rd+1:Rd,K

    Operacin: Rd +1: Rd Rd+1 : Rd - K

    Operandos:Operando1: Puede ser uno de los 3 registros de 16 bits. Podemosindicarlo de las siguientes maneras: XH:XL o slo a XL; YH:YLo slo a YL; ZH:ZL o slo es a ZL. Tambin podemos utilizarR27:R26 o slo a R26; R29:R28 o slo a R28; R31:R30 o slo aR30. Tambin podemos usar el registro de 16 bits compuesto porR25:R24 al que tambin podemos indicar como R24.

    Operando2:0K 63

    Descripcin: SBIW resta un valor K a un par de registros y dejael resultado en el par de registros

    Banderasafectadas:

    S: Se activa slo si una de las banderas V o N est a uno.

    V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $0000, de lo contrario se borrar.C: Se activa si el valor absoluto de K es mayor que el valorabsoluto de Rd, de lo contrario se borrar.

    Ejemplo:

    SBIW r24, 1 ; Restar 1 de r25:r24SBIW r28, 63 ; Restar 63 del puntero Y (r29:r28)

    SBR Pone a uno los bits del registro

    Sintaxis: SBR Rd, K

    Operacin: Rd Rd v K

    Operandos: 16 d 31, 0 K 255

    Descripcin: Pone a uno los bits del registro Rd indicados.Realiza la operacin ORI lgica entre el contenido del registroRd y una constante K, y deja el resultado en el registro destinoRd.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    SBR r16, 3 ; Poner a uno los bits 0 y 1 de r16

    SBR r17, $F0 ; Poner a uno los 4 MSB en r17

    SBRC Salta si el bit del registro es ceroSintaxis: SBRC Rr, b

    Operacin: Si Rr(b) = 0 entonces PC PC + 2 ( o 3)Si Rr(b) 0 entonces PC PC + 1

    Operandos: 0 r 31, 0 b 7

    Descripcin: Examina un bit del registro seleccionado y salta lasiguiente instruccin si el bit est borrado (cero).

    Banderasafectadas: Ninguna

    Ejemplo:

    SUB r0, r1 ; Restar r1 de r0SBRC r0, 7 ; Saltar si el bit 7 en r0 est borradoSUB r0, r1 ; Slo se ejecuta si el bit 7 en r0 es unoNOP ; Continuar (No hacer nada)

    SBRS Salta si el bit del registro es unoSintaxis: SBRC Rr, b

    Operacin: Si Rr(b) = 1 entonces PC PC + 2 ( o 3)Si Rr(b) 1 entonces PC PC + 1

    Operandos: 0 r 31, 0 b 7

    Descripcin: Examina un bit del registro seleccionado y salta lasiguiente instruccin si el bit est a uno.

    Banderasafectadas: Ninguna

    Ejemplo:

    SUB r0, r1 ; Restar r1 de r0SBRS r0, 7 ; Saltar si el bit 7 en r0 est a unoSUB r0, r1 ; Slo se ejecuta si el bit 7 en r0 es ceroNOP ; Continuar (No hacer nada)

    30

  • 7/23/2019 Instruciones Avr Espaol

    28/33

    SEC Poner a uno la bandera C

    Sintaxis: SEC

    Operacin: C 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de acarreo C del registro deestado SREG.

    Banderasafectadas:

    C: Se pone a uno

    Ejemplo:

    SEC ; Poner a uno la bandera de acarreo

    ADC r0, 1 ; r0 = r0 + r1 + 1

    SEH Pone a uno la bandera H

    Sintaxis: SEH

    Operacin: H 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de medio acarreo H delregistro de estado SREG.

    Banderasafectadas:

    H: Se pone a uno

    Ejemplo:

    SEH ; Poner a uno la bandera H

    SEI Habilitar las interrupciones globalesSintaxis: SEI

    Operacin: I 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de habilitacin deinterrupciones globales I del registro de estado SREG.

    Banderasafectadas:

    I: Se pone a uno

    Ejemplo:

    SEI ; Interrupciones habilitadasSLEEP ; Activacin de modo SLEEP, esperando

    ; alguna interrupcin

    SEN Poner a uno la bandera NSintaxis: SEN

    Operacin: N 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de resultado negativo N delregistro de estado SREG.

    Banderasafectadas:

    N: Se pone a uno

    Ejemplo:

    ADD r2, r19 ; Sumar r19 a r2SEN ; Poner a uno la bandera N

    31

  • 7/23/2019 Instruciones Avr Espaol

    29/33

    SER Carga todos los bits de un registro

    Sintaxis: SER Rd

    Operacin: Rd $FF

    Operandos: 16 d 31

    Descripcin: SER Carga directamente $FF al registroseleccionado.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r16 ; Borrar r16SER r17 ; Poner a uno r17OUT $18, r16 ; Escribir ceros al Puerto BNOP ; Retardo (No hacer nada)OUT PORTB, r17 ; Escribir unos en el Puerto B

    SES Pone a uno la bandera S

    Sintaxis: SES

    Operacin: S 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de signo S del registro deestado SREG.

    Banderasafectadas:

    S: Se pone a uno

    Ejemplo:

    ADD r2, r19 ; Sumar r19 a r2

    SES ; Poner a uno la bandera S

    SET Pone a uno la bandera TSintaxis: SET

    Operacin: T 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera T del registro de estadoSREG.

    Banderasafectadas:

    T: Se pone a uno

    Ejemplo:

    SET ; Poner a uno la bandera T

    SEV Pone a uno la bandera VSintaxis: SEV

    Operacin: V 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de desbordamiento V delregistro de estado SREG.

    Banderasafectadas:

    V: Se pone a uno

    Ejemplo:

    ADD r2, r19 ; Sumar r19 a r2SEV ; Poner a uno la bandera V

    32

  • 7/23/2019 Instruciones Avr Espaol

    30/33

    SEZ Poner a uno la bandera Z

    Sintaxis: SEZ

    Operacin: Z 1

    Operandos: Ninguno

    Descripcin: Pone a uno la bandera de resultado cero Z delregistro de estado SREG.

    Banderasafectadas:

    Z: Se pone a uno

    Ejemplo:

    ADD r2, r19 ; Suma r19 a r2SEZ ; Poner a uno la bandera Z

    SLEEP Activar modo sleep

    Sintaxis: SLEEP

    Operacin: Consulta el manual del dispositivo para obtener unainformacin detalla acerca de este modo de operacin.

    Operandos: Ninguno

    Descripcin: Pone en modo Sleep al microcontrolador

    Banderasafectadas: Ninguna

    Ejemplo:

    MOV r0, r11 ; Copiar r11 en r0LDI r16, (1

  • 7/23/2019 Instruciones Avr Espaol

    31/33

    ST (STD) Almacenar indirectamente usando Y

    Sintaxis: LD Y, RrLD Y+, RrLD -Y, RrSTD Y+q, Rr

    Operacin: (Y) Rr Y: Sin cambios(Y) Rr, Y Y+1 Y: Con post-incrementoY Y1, (Y) Rr Y: Con pre-decremento

    (Y+q) Rr Y: Sin cambios,q: Desplazamiento

    Operandos: 0 r 31, 0 q 63

    DescripcinSe almacena un byte de manera indirectaprocedente de un registro de trabajo hacia el rea de datos. Paralos dispositivos con SRAM, el rea de datos se compone de losregistros de: trabajo, I/O y SRAM interna (y SRAM externa sies aplicable). Para los dispositivos sin SRAM, el espacio dedatos se compone slo por los registros de trabajo. La EEPROMtiene un espacio de direccin separado.

    La direccin de los datos es apuntado por el registro puntero Y

    (16 bits). Se limita el acceso de memoria al segmento de datos de64K bytes. Para acceder a otro segmento de datos en dispositivoscon ms de 64K bytes de datos de espacio, el registro I/ORAMPY tiene que ser correctamente configurado.

    El registro puntero Y puede permanecer sin cambios por laoperacin, puede post-incrementarse o pre-decrementarse. Estascaractersticas son apropiadas para acceder a matrices, tablas yuso del puntero de pila con el registro puntero Y. Slo el bytebajo del puntero Y se ocupa para dispositivos sin ms de 256bytes de espacio de datos. Para tales dispositivos, el byte alto delpuntero no es usado por esta instruccin y puede usarse paraotros propsitos.

    El resultado de estas combinaciones es indefinido:

    ST Y+, r28

    ST Y+, r29

    ST -Y, r28

    ST -Y, r29

    Algunas variantes de esta instruccin no son disponibles paratodos los modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r29 ; Borra el byte alto de YLDI r28, $60 ; Pone el byte bajo de Y a $60ST Y+, r0 ; Almacena r0 en la localidad $60

    ; (Y post-incrementado)ST Y, R1 ; Almacena r1 en la localidad $61

    LDI r28, $63 ; Pone el byte bajo de Y a $63ST Y, r2 ; Almacena r0 en la localidad $63ST -Y, r3 ; Almacena r0 en la localidad $62

    ; (Y pre-decrementado)STD Y+2, r4 ; Almacena r4 en la localidad $64

    ST (STD) Almacenar indirectamente usando ZSintaxis: LD Z, Rr

    LD Z+, RrLD -Z, RrSTD Z+q, Rr

    Operacin: (Z) Rr Z: Sin cambios(Z) Rr, Z Z+1 Z: Con post-incrementoZ Z1, (Z) Rr Z: Con pre-decremento

    (Z+q) Rr Z: Sin cambios,q: Desplazamiento

    Operandos: 0 r 31, 0 q 63

    DescripcinSe almacena un byte de manera indirectaprocedente de un registro de trabajo hacia el rea de datos. Paralos dispositivos con SRAM, el rea de datos se compone de losregistros de: trabajo, I/O y SRAM interna (y SRAM externa sies aplicable). Para los dispositivos sin SRAM, el espacio dedatos se compone slo por los registros de trabajo. La EEPROMtiene un espacio de direccin separado.

    La direccin de los datos es apuntado por el registro puntero Z(16 bits). Se limita el acceso de memoria al segmento de datos de64K bytes. Para acceder a otro segmento de datos en dispositivoscon ms de 64K bytes de datos de espacio, el registro I/ORAMPZ tiene que ser correctamente configurado.

    El registro puntero Z puede permanecer sin cambios por laoperacin, puede post-incrementarse o pre-decrementarse. Estascaractersticas son apropiadas para acceder a matrices, tablas yuso del puntero de pila; Sin embargo, debido a que este punteropuede usarse para las llamadas indirectas a subrutinas y los saltos

    indirectos, es mejor usar a los punteros X o Y para direccionar alpuntero de pila.

    Slo el byte bajo del puntero Z se ocupa para dispositivos sinms de 256 bytes de espacio de datos. Para tales dispositivos, elbyte alto del puntero no es usado por esta instruccin y puedeusarse para otros propsitos.

    El resultado de estas combinaciones es indefinido:

    ST Z+, r30

    ST Z+, r31

    ST -Z, r30

    ST -Z, r31

    Algunas variantes de esta instruccin no son disponibles paratodos los modelos de AVRs.

    Banderasafectadas: Ninguna

    Ejemplo:

    CLR r31 ; Borra el byte alto de ZLDI r30, $60 ; Pone el byte bajo de Z a $60ST Z+, r0 ; Almacena r0 en la localidad $60

    ; (Z post-incrementado)ST Z, r1 ; Almacena r1 en la localidad $61LDI r30, $63 ; Pone el byte bajo de Z a $63ST Z, r2 ; Almacena r0 en la localidad $63ST Z, r3 ; Almacena r0 en la localidad $62

    ; (Z pre-decrementado)STD Z+2, r4 ; Almacena r4 en la localidad $64

    34

  • 7/23/2019 Instruciones Avr Espaol

    32/33

    STS Almacena directamente en SRAM

    Sintaxis: STS (k), Rr

    Operacin: (k) Rd

    Operandos: 0 r 31, 0 k 65535

    Descripcin: Almacena un byte de un registro de trabajo en lamemoria de datos. Para los dispositivos con SRAM, el espaciode datos est compuesto por los registros de trabajo, memoria deI/O y SRAM interna (y SRAM externa si es aplicable). Para losdispositivos sin SRAM, el espacio de datos est compuesto slopor los registros de trabajo. La EEPROM tiene un espacio dedirecciones separado. Debe proporcionarse una direccin de 16-bit. Se limita el acceso de memoria al segmento de datos de 64Kbytes. Para acceder a otro segmento de datos en dispositivos conms de 64K bytes de datos de espacio, el registro I/O RAMPDtiene que ser correctamente configurado.

    Banderasafectadas: Ninguna

    Esta instruccin no es disponible para todos los modelos de

    AVRs.

    Ejemplo:

    LDS r2, $FF00 ; Carga r2 con el contenido de la localidad; $FF00 de la memoria de datos

    ADD r2, r1 ; Sumar r1 a r2STS $FF00, r2 ; Escribir en SRAM el contenido de r2

    SUB Resta de dos registros sin acarreo

    Sintaxis: SUB Rd, Rr

    Operacin: Rd Rd - Rr

    Operandos: 0 d 31, 0 r 31

    Descripcin: Resta dos registros sin considerar la bandera C ydeja el resultado en el registro destino Rd.

    Banderasafectadas:

    H: Se activa si hay un acarreo negativo (Borrow) del bit 3, de locontrario se borrar.V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si el valor absoluto del contenido de Rr es mayorque el valor absoluto de Rd, de lo contrario se borrar.Ejemplo:

    ADD r1, r2 ; Suma r2 a r1 (r1=r1+r2)ADD r28, r28 ; Suma r28 a s mismo (r28=r28+r28)

    SUBI Resta un dato inmediato a un registro

    Sintaxis: SUBI Rd,Rr

    Operacin: Rd Rd - K

    Operandos: 16 d 31, 0 K 255

    Descripcin: Resta un registro con una constante y deja elresultado en el registro Rd. Esta instruccin trabaja con losregistros R16 a R31 y es ideal para utilizarla con los punteros X,Y y Z.

    Banderasafectadas:

    H: Se activa si hay un acarreo negativo (Borrow) del bit 3, de lo

    contrario se borrar (cero).V: Se activa si ocurre un desbordamiento del complemento a doscomo resultado de la operacin, de lo contrario se borrar.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.C: Se activa si el valor absoluto de K es mayor que el valorabsoluto de Rd, de lo contrario se borrar.

    Ejemplo:

    SUBI r22, $11 ; Resta la constante (dato inmediato) $11 al;registro de trabajo r22

    SWAP Intercambia los nibblesSintaxis: SWAP Rd

    Operacin: R(7:4) Rd(3:0), R(3:0) Rd(7:4)

    Operandos: 0 d 31

    Descripcin: Intercambia al nibble bajo con el nibble alto delRd.

    Banderasafectadas: Ninguna

    Ejemplo:

    INC r1 ; Incrementar r1SWAP r1 ; Intercambiar los nibbles alto y bajo de r1INC r1 ; Incrementar r1SWAP r1 ; Intercambiar otra vez

    35

  • 7/23/2019 Instruciones Avr Espaol

    33/33

    TST revisa si es cero o menor

    Sintaxis: TST Rd

    Operacin: Rd Rd (AND) Rd

    Operandos: 0 d 31

    Descripcin: Prueba si el registro es cero o negativo. Realiza unAND lgico entre el registro y l mismo. El registro permanecesin cambios.

    Banderasafectadas:

    V: Se pone a cero.N: Se activa si el bit MSB del resultado est a uno, de locontrario se borrar.Z: Se activa si el resultado es $00, de lo contrario se borrar.

    Ejemplo:

    TST r0 ; Prueba r0BREQ prueba ; Brinca si r0 = 0

    ...prueba: NOP ; Destino de desvo (No hacer nada)

    WDR Reinicio del Watchdog

    Sintaxis: WDR

    Operacin: Reinicio del temporizador Watchdog

    Operandos: Ninguno

    Descripcin: Hace un Reinicio del Temporizador Watchdog. Lainstruccin debe ejecutarse en un tiempo limitado por elprescaler del Watchdog. Consulta las especificaciones delWatchdog en el manual del dispositivo.

    Banderasafectadas: Ninguna

    Ejemplo:

    WDR ; Reinicializa el temporizador del Watchdog