laboratorio3 2015 a

8
Microcontroladores 1 LABORATORIO N° 3 MANEJO INSTRUCCIONES ARITMETICAS Y LOGICAS OBJETIVO Conocer las instrucciones elementales en lenguaje Ensamblador PROCEDIMIENTO Simular los siguientes ejercicios. Ejercicio 1. Programa que visualiza por el puerto D los datos ingresados por el puerto B. Programa //-------------------------------------------------------------------------------------------------------- .include "m8def.inc"; Tipo de procesador .cseg ; Segmento de codigo para memoria flash .org 0x0000; Direccion del Vector Reset rjmp inicio; Salto para empezar desde inicio inicio: ldi R16,0b00000000 ; carga la constante 0x00 en el registro R16 ldi R17,0b11111111 ; carga la constante 0xFF en el registro R17 out DDRB,R16 ; Configura todos los bits del puerto B como entradas out DDRD,R17 ; Configura todos los bits del puerto D como salidas lazo: in R18,PINB ; Almacena datos del puerto B en el registro R18 out PORTD,R18 ; Visualiza por el puerto B el dato del registro R18 rjmp lazo ; Bucle, se repite desde lazo //-------------------------------------------------------------------------------------------------------- PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT0 4 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC1 24 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA 27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 LOGICSTATE LOGICPROBE

Upload: anthony-cadillo-villanueva

Post on 06-Nov-2015

7 views

Category:

Documents


3 download

DESCRIPTION

laboratorio de microontoladores atmega de la universidad nacional del callao de ingeniera electronica

TRANSCRIPT

  • Microcontroladores

    1

    LABORATORIO N 3

    MANEJO INSTRUCCIONES ARITMETICAS Y LOGICAS OBJETIVO Conocer las instrucciones elementales en lenguaje Ensamblador PROCEDIMIENTO Simular los siguientes ejercicios. Ejercicio 1. Programa que visualiza por el puerto D los datos ingresados por el puerto B.

    Programa

    //-------------------------------------------------------------------------------------------------------- .include "m8def.inc"; Tipo de procesador .cseg ; Segmento de codigo para memoria flash .org 0x0000; Direccion del Vector Reset rjmp inicio; Salto para empezar desde inicio inicio: ldi R16,0b00000000 ; carga la constante 0x00 en el registro R16 ldi R17,0b11111111 ; carga la constante 0xFF en el registro R17 out DDRB,R16 ; Configura todos los bits del puerto B como entradas out DDRD,R17 ; Configura todos los bits del puerto D como salidas lazo: in R18,PINB ; Almacena datos del puerto B en el registro R18 out PORTD,R18 ; Visualiza por el puerto B el dato del registro R18 rjmp lazo ; Bucle, se repite desde lazo

    //--------------------------------------------------------------------------------------------------------

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL28

    AREF21

    AVCC20

    U1

    ATMEGA8

    1

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    LOGICSTATE

    LOGICPROBE

  • Microcontroladores

    2

    Ejercicio 2. Programa que suma los datos ingresados por los 4 bits menos significativos del Puerto B y Puerto C. El resultado se visualiza por el puerto D. Obs: Para realizar la resta utilizar la instruccin SUB

    Programa

    //-------------------------------------------------------------------------------------------------------- .include "m8def.inc"; Tipo de procesador .cseg ; Segmento de codigo para memoria flash .org 0x0000; Direccion del Vector Reset rjmp inicio; Salto para empezar desde inicio inicio: ldi R16,0b00000000 ; carga la constante 0x00 en el registro R16 ldi R17,0b11111111 ; carga la constante 0xFF en el registro R17 out DDRB,R16 ; Configura todos los bits del puerto B como entradas out DDRC,R16 ; Configura todos los bits del puerto B como entradas out DDRD,R17 ; Configura todos los bits del puerto D como salidas lazo: in R18,PINB ; Almacena datos del puerto B en el registro R18 in R19,PINC ; Almacena datos del puerto C en el registro R19 ADD R18,R19 ; Suma R18 y R19, el resultado se almacena en R18 out PORTD,R18 ; Visualiza por el puerto B el dato de R18 rjmp lazo ; Bucle, se repite desde lazo

    //--------------------------------------------------------------------------------------------------------

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL28

    AREF21

    AVCC20

    U1

    ATMEGA8

    1

    LOGICSTATE

    0

    0

    0

    1

    1

    0

    0

    0

    0

    1

    0

    0

    LOGICPROBE

    7SEG-BCD

    Dato B

    Dato C

    SALIDA

  • Microcontroladores

    3

    Ejercicio 3. Programa que realiza la operacin lgica AND entre los datos ingresados por los 4 bits menos significativos del Puerto B y Puerto C. El resultado se visualiza por el puerto D.

    Programa

    //-------------------------------------------------------------------------------------------------------- .include "m8def.inc"; Tipo de precesador .cseg ; Segmento de codigo para memoria flash .org 0x0000; Direccion del Vector Reset rjmp inicio; Salto para empezar desde inicio inicio: ldi R16,0b00000000 ; carga la constante 0x00 en el registro R16 ldi R17,0b11111111 ; carga la constante 0xFF en el registro R17 out DDRB,R16 ; Configura todos los bits del puerto B como entradas out DDRC,R16 ; Configura todos los bits del puerto B como entradas out DDRD,R17 ; Configura todos los bits del puerto D como salidas lazo: in R18,PINB ; Almacena datos del puerto B en el registro R18 in R19,PINC ; Almacena datos del puerto C en el registro R19 AND R18,R19 ; R18 and R19, el resultado se almacena en R18 out PORTD,R18 ; Visualiza por el puerto B el dato de R18 rjmp lazo ; Bucle, se repite desde lazo

    //--------------------------------------------------------------------------------------------------------

    Ejercicio 4. Para las dems operaciones lgicas utilizar las instrucciones: OR: Operacin lgica OR EOR: Operacin lgica OR Exclusivo

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL28

    AREF21

    AVCC20

    U1

    ATMEGA8

    1

    LOGICSTATE

    1

    0

    0

    1

    LOGICPROBE

    1

    0

    0

    Dato B

    Dato C

    SALIDA

    1

    1

    0

    0

  • Microcontroladores

    4

    Ejercicio 5. Programa que enciende un Led conectado al pin PB0 solo si se presiona un pulsador conectado al pin PB0.

    Programa

    //-------------------------------------------------------------------------------------------------------- .include "m8def.inc"; Tipo de precesador .cseg ; Segmento de codigo para memoria flash .org 0x0000; Direccion de Vector Reset rjmp INICIO; Salto para empezar desde inicio INICIO: SBI DDRB,PB1 //Configura PB1 Como salida CBI DDRB,PB0 //Configura PB1 Como entrada BUCLE: SBIC PINB,PB0 //Si PB0=0 salta a la siguiente linea CBI PORTB,PB1 //Pone a 0 en pin PB1 SBIS PINB,PB0 //Si PB0=1 salta a la siguiente linea SBI PORTB,PB1 //Pone a 1 en pin PB1 RJMP BUCLE // Se repite desde BUCLE

    //-------------------------------------------------------------------------------------------------------- EJERCICIO Realizar un programa para crear la siguiente lgica.

    Entradas Salidas

    PB0 PB1 PD0 PD1

    0 0 0 0

    0 1 1 0

    1 0 1 0

    1 1 1 1

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL28

    AREF21

    AVCC20

    U1

    ATMEGA8

    SWITCH

    R11K

    D1LED-YELLOW

    R2220

  • CONJUNTO DE INSTRUCCIONES

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

    El conjunto de instrucciones para estos microcontroladores se puede dividir en el siguiente orden de grupos: Instrucciones Aritmticas y Lgicas Instrucciones de Desvo (salto) Instrucciones de Transferencia de Datos Instrucciones 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 el microprocesador. Dependiendo de la instruccin, puede haber uno o dos operandos, incluso pueden no existir; su contenido consiste en un nmero, una variable o una direccin; normalmente el resultado de una operacin lgica, aritmtica o de carga es almacenado 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:R26 Y=R29:R28 Z=R31:R30)

    P Registros del bloque I/O

    q Desplazamiento (6-bit) por direccionamiento directo

    Admin1Texto tecleado5

  • 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 BLD o BST

    V: Indicador de complemento a dos desbordado

    I: Bandera de interrupciones globales

    RESUMEN DEL CONJUNTO DE INSTRUCCIONES

    Instrucciones Aritmticas y Lgicas Mnemnico 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 uno NEG 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 signo MULS 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 subrutina ICALL Ninguno Llamada indirecta a subrutina

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Texto tecleado6

  • 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 Compara CPC 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

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Texto tecleado7

  • 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-Decremento ST 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 Sleep WDR Ninguno Reiniciar el Watchdog

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Resaltar

    Admin1Texto tecleado8

    NomenclaturaInstrucciones aritmticasInstrucciones de desvoTransferencia de datosBit y prueba de bit