laboratorio3 2015 a
DESCRIPTION
laboratorio de microontoladores atmega de la universidad nacional del callao de ingeniera electronicaTRANSCRIPT
-
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