Transcript
Page 1: Lab N°3 Arquitectura.docx

UNIVERSIDAD NACIONAL DEL CALLAO

Facultad de Ingeniería Eléctrica y ElectrónicaEscuela Profesional de Ingeniería Electrónica

LABORATORIO N°3MANEJO DE INSTRUCCIONES

CURSO: ARQUITECTURA DE COMPUTADORAS

ALUMNO:

GARCIA VICENTE, ANDRE 1023220432

Page 2: Lab N°3 Arquitectura.docx

1

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

HARO SEGURA, PEDRO 1023220192TORRES ANDRADE, ANTHONY WILSON 1023220646

CICLO: 2015 – A

PROFESOR :

ING. CONDOR DE LA CRUZ, FLAVIO

LIMA – CALLAO2015

MANEJO DE INSTRUCCIONES OBJETIVO

Conocer las instrucciones elementales en lenguaje ensamblador Aprender a desarrollar programas con el microcontrolador Atmega8, utilizando

instrucciones básicas. Aprender a manejar el entorno de desarrollo VMLAB. Aprender a grabar la memoria flash del microcontrolador

INTRODUCCIÓN

El microcontrolador es un circuito integrado de muy alta escala de integración que contiene las partes funcionales de un computador:

CPU (Central Processor Unit o Unidad de Procesamiento Central) Memorias volátiles (RAM), para datos Memorias no volátiles( ROM, PROM, EPROM) para escribir el programa Líneas de entrada y salida para comunicarse con el mundo exterior. Algunos periféricos (comunicación serial, temporizador, convertidor A/D, etc)

Es decir el microcontrolador es un computador integrado en un solo chip. Integrar todos estos elementos en un solo circuito integrado a significado desarrollar aplicaciones importantes en la industria al economizar materiales, tiempo y espacio.

¿QUE NO HACE EL MICROCONTROLADOR?

Las aplicaciones de un microcontrolador son tan inmensas que el límite es la propia imaginación del usuario. Estos microcontroladores están en el auto, en el televisor, en el teléfono, en una impresora, en un horno de microondas, en un transbordador espacial, en un juguete, etc. Algunas fuentes estiman que en una casa típica de E.U se tiene alrededor de 250 microcontroladores.

Arquitectura de ComputadorasCiclo 2015-A

Page 3: Lab N°3 Arquitectura.docx

2

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

FUNDAMENTOS TEÓRICOS

Los puertos son un conjunto de líneas (pines) programables como entrada ó salida que dispone el microcontrolador para comunicarse con el mundo exterior.

El microcontrolador Atmega8(L), tiene 3 puertos de E/S (Puertos B, C D). Todos los pines de cada puerto son programables como entrada o salida de datos configurando el registro asociado respectivo.

Cuando se programa el funcionamiento de un puerto como entrada tenemos que habilitar o deshabilitar las resistencias pull-up internas. Cada pin del puerto tiene independiente su resistencia pull-up como una resistencia invariante hacia la fuente de voltaje, además tiene 2 diodos de protección uno conectado a Vcc y el otro conectado a GND. (Ver figura 1)

Figura N°1: Diagrama equivalente de un pin de E/S

En resumen, para cada puerto del microcontrolador (puertos B, C y D) existen tres registros de E/S que permiten configurar cada pin del puerto como entrada o salida, enviar datos a los pines configurados como salidas, y recibir datos de los pines configurados como entradas.Estos registros son:

El Registro de Direcciones de Datos DDRx. El Registro de Datos – PORTx. El registro – PINx.

En el párrafo anterior, “x” puede ser B, C ó D. Es decir, si nos referimos al puerto B, los registros son DDRB, PORTB y PINB.

Los registros PINx son de sólo lectura, mientras que los registros PORTx y DDRx son de lectura/escritura. Adicionalmente, el bit “Pull-up Disable” – PUD, en el registro SFIOR

Arquitectura de ComputadorasCiclo 2015-A

MANEJO DE PUERTOS ENTRADA Y SALIDA

Page 4: Lab N°3 Arquitectura.docx

3

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

inhabilita la función Pull-up para todos los pines de todos los puertos cuando es puesto a nivel alto. (Ver Figura 2)

Cada pin del puerto de E/S, está asociado a 3 registros DDxn, PORTxn, y PINxn, cuyas direcciones en el espacio de memoria están indicados por los Registros DDRx E/S, PORTxE/S y PINxE/S.(ver Register Descripción for E/S ports, página 63 del manual Atmega8(L)).

El bit DDxn del Registro DDRx, establece la dirección de este pin. Si DDxn es escrito con “1” lógico, Pxn es configurado como un pin de salida. Si en DDxn es escrito un “0”, Pxn es configurado como un pin de entrada.

Si el pin PORTxn está configurado como un pin de entrada y es escrito un “1” lógico, entonces la resistencia pull-up está activada. En cambio sí en PORTxn está configurado como un pin de salida ó es escrito con un “0” lógico, la resistencia pull-up está desactivada.

Si el pin PORTxn está configurado como un pin de salida y es escrito con un “1” lógico, el pin toma un valor alto, en cambio sí es escrito con “0” lógico el pin toma un valor bajo(cero).

Figura N°2: Puertos de E/S

Arquitectura de ComputadorasCiclo 2015-A

Page 5: Lab N°3 Arquitectura.docx

4

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Adicionalmente, se puede observar en el anterior diagrama que si el bit PUD(PULLUP DISABLE) del registro SFIOR, tiene un valor alto “1”, se deshabilitarán las resistencias pullup de todos los puertos. El funcionamiento de la configuración de los pines de un puerto se resume en la siguiente tabla:

DDxn PORTxn PUD (en SFIOR

E/S Pull – up Comentario

0 0 X Entrada No Tri – slate0 1 0 Entrada Yes0 1 1 Entrada No Tri – slate1 0 X Salida No Salida

baja1 1 X Salida No Salida

AltaTabla N°1: Configuración de los pines del puerto

PROCEDIMIENTO

Simular los siguientes ejercicios:

Programar que visualizar por el puerto D los datos ingresados por el puerto B.

PROGRAMA:

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" ; Tipo de procesador.cseg ; Segmentó de código para menor flash.org 0x000; ; Direcciones del vector Resetrjmp inicio; ; Salto para empezar desde inicio //--------------------------------------------------- INICIO ----------------------------------------------------inicio://-----------------------------------------------------------------------------------------------------------------ldi R16,0b0000000 ; Carga la constante 0x00 en el registro r16ldi R17,0b1111111; ; Cargar la constante 0xFF en el registro R17out DDRB,R16 ; Configurar todos los bits del Puerto B como entrada out DDRD,R17 ; Configurar todos los bits del Puerto D como salidas//--------------------------------------------------- LAZO ----------------------------------------------------lazo://-----------------------------------------------------------------------------------------------------------------in R18,PINB ; Almacena datos del Puerto B en el registro R18out PORTD,R18 ; Visualiza por el puerto D el dato del registro R18rjmp lazo ; Bucle, se repite desde lazo//------------------------------------------------------ FIN -----------------------------------------------------

PROTEUS:Arquitectura de ComputadorasCiclo 2015-A

EJERCICIO N°1

Page 6: Lab N°3 Arquitectura.docx

5

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Figura 1: Simulación del Ejercicio N°1ATMEGA 8:

Figura N°2: Programa del Ejercicio N°1

Programa que suma los datos ingresados por los 4 bits menos significativos del puerto B el puerto C. El resultado se visualizara por el puerto D.

Obs: Para realizar la resta utilizar la instrucción SUB

PROGRAMA:

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" ; Tipo de procesador.cseg ; Segmento de código para memoria flash.org 0x000 ; Dirección del vector resetrjmp inicio ; Salto para empezar desde inicio//--------------------------------------------------- INICIO ----------------------------------------------------

Arquitectura de ComputadorasCiclo 2015-A

EJERCICIO N°2

Page 7: Lab N°3 Arquitectura.docx

6

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

inicio://-----------------------------------------------------------------------------------------------------------------ldi R16,0b00000000 ; Cargar la costante 0x00 en el registro R16ldi R17,0b11111111 ; Cargar la costante 0xFF en el registro R17out DDRB,R16 ; Configurar todos los bits del Puerto B como entradaout DDRC,R16 ; Configurar todos los bits del Puerto C como entradaout DDRD,R17 ; Configurar todos los bits del Puerto D como salida//--------------------------------------------------- LAZO ----------------------------------------------------lazo://-----------------------------------------------------------------------------------------------------------------in R18,PINB ; Almacena datos del Puerto B en el registro R18in R19,PINC ; Almacena datos del Puerto C en el registro R19ADD R18,R19 ; Suma R18 y R19, el resultado se almacena en R18out PORTD,R18 ; Visualiza por el Puerto D el dato de R18rjmp lazo ; Bucle, se repite de lazo//------------------------------------------------------ FIN -----------------------------------------------------PROTEUS:

Figura 3: Simulación del Ejercicio N°2

ATMEGA 8:

Arquitectura de ComputadorasCiclo 2015-A

Page 8: Lab N°3 Arquitectura.docx

7

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Figura N°4: Programa del Ejercicio N°2

Programa que realiza la operación lógica AND entre los datos ingresados por los 4 bits menos significativos del Puerto B y el puerto C. El resultado se visualizara en el Puerto D.PROGRAMA:

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" ; Tipo de procesador.cseg ; Segmento de código para memoria flash.org 0x000 ; Dirección del vector resetrjmp inicio ; Salto para empezar desde inicio//--------------------------------------------------- INICIO ----------------------------------------------------inicio://-----------------------------------------------------------------------------------------------------------------ldi R16,0b00000000 ; Cargar la costante 0x00 en el registro R16ldi R17,0b11111111 ; Cargar la costante 0xFF en el registro R17out DDRB,R16 ; Configurar todos los bits del Puerto B como entradaout DDRC,R16 ; Configurar todos los bits del Puerto C como entradaout DDRD,R17 ; Configurar todos los bits del Puerto D como salida//--------------------------------------------------- LAZO ----------------------------------------------------lazo://-----------------------------------------------------------------------------------------------------------------in R18,PINB ; Almacena datos del Puerto B en el registro R18in R19,PINC ; Almacena datos del Puerto C en el registro R19AND R18,R19 ; Suma R18 y R19, el resultado se almacena en R18out PORTD,R18 ; Visualiza por el Puerto D el dato de R18rjmp lazo ; Bucle, se repite de lazo//------------------------------------------------------ FIN -----------------------------------------------------

Arquitectura de ComputadorasCiclo 2015-A

EJERCICIO N°3

Page 9: Lab N°3 Arquitectura.docx

8

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

PROTEUS:

Figura 5: Simulación del Ejercicio N°3ATMEGA 8:

Figura N°6: Programa del Ejercicio N°2

Para las demás operaciones lógicas utilizar las instrucciones

OR: Operación lógica OR

PROGRAMA:

Arquitectura de ComputadorasCiclo 2015-A

EJERCICIO N°4

Page 10: Lab N°3 Arquitectura.docx

9

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" ; Tipo de procesador.cseg ; Segmento de código para memoria flash.org 0x000 ; Dirección del vector resetrjmp inicio ; Salto para empezar desde inicio//--------------------------------------------------- INICIO ----------------------------------------------------inicio://-----------------------------------------------------------------------------------------------------------------ldi R16,0b00000000 ; Cargar la costante 0x00 en el registro R16ldi R17,0b11111111 ; Cargar la costante 0xFF en el registro R17out DDRB,R16 ; Configurar todos los bits del Puerto B como entradaout DDRC,R16 ; Configurar todos los bits del Puerto C como entradaout DDRD,R17 ; Configurar todos los bits del Puerto D como salida//--------------------------------------------------- LAZO ----------------------------------------------------lazo://-----------------------------------------------------------------------------------------------------------------in R18,PINB ; Almacena datos del Puerto B en el registro R18in R19,PINC ; Almacena datos del Puerto C en el registro R19OR R18,R19 ; Suma R18 y R19, el resultado se almacena en R18out PORTD,R18 ; Visualiza por el Puerto D el dato de R18rjmp lazo ; Bucle, se repite de lazo//------------------------------------------------------ FIN -----------------------------------------------------PROTEUS:

Figura 7: Simulación del Ejercicio N°4 OR

ATMEGA 8:

Arquitectura de ComputadorasCiclo 2015-A

Page 11: Lab N°3 Arquitectura.docx

10

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Figura N°8: Programa del Ejercicio N°4 OR

EOR: Operación lógica OR Exclusivo

PROGRAMA:

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" ; Tipo de procesador.cseg ; Segmento de código para memoria flash.org 0x000 ; Dirección del vector resetrjmp inicio ; Salto para empezar desde inicio//--------------------------------------------------- INICIO ----------------------------------------------------inicio://-----------------------------------------------------------------------------------------------------------------ldi R16,0b00000000 ; Cargar la costante 0x00 en el registro R16ldi R17,0b11111111 ; Cargar la costante 0xFF en el registro R17out DDRB,R16 ; Configurar todos los bits del Puerto B como entradaout DDRC,R16 ; Configurar todos los bits del Puerto C como entradaout DDRD,R17 ; Configurar todos los bits del Puerto D como salida//--------------------------------------------------- LAZO ----------------------------------------------------lazo://-----------------------------------------------------------------------------------------------------------------in R18,PINB ; Almacena datos del Puerto B en el registro R18in R19,PINC ; Almacena datos del Puerto C en el registro R19EOR R18,R19 ; Suma R18 y R19, el resultado se almacena en R18out PORTD,R18 ; Visualiza por el Puerto D el dato de R18rjmp lazo ; Bucle, se repite de lazo//------------------------------------------------------ FIN -----------------------------------------------------

Arquitectura de ComputadorasCiclo 2015-A

Page 12: Lab N°3 Arquitectura.docx

11

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

PROTEUS:

Figura 9: Simulación del Ejercicio N°4 EORATMEGA 8:

Figura N°10: Programa del Ejercicio N°4 OR

Programa que encienda un Led conectado al pin PBD solo si se presiona un pulsador conectado al pin PB0

Arquitectura de ComputadorasCiclo 2015-A

EJERCICIO N°5

Page 13: Lab N°3 Arquitectura.docx

12

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

PROGRAMA:

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" ; Tipo de procesador.cseg ; Segmento de código para memoria flash.org 0x000 ; Dirección del vector resetrjmp inicio ; Salto para empezar desde inicio//--------------------------------------------------- INICIO ----------------------------------------------------inicio://-----------------------------------------------------------------------------------------------------------------SBI DDRB, PB1 ; Configura PB1 como salidaCBI DDRB, PB0 ; Configuracion PB0 como entrada//--------------------------------------------------- BUCLE ----------------------------------------------------bucle//-----------------------------------------------------------------------------------------------------------------SBIC PINB, PB0 ; Si PB0=0 salta a la siguiente líneaCBI PORT, PB1 ; Pone a 0 en pin PB1SBIS PINB, PB0 ; Si PB0=1 salta a la siguiente líneaSBI PORTB, PB1 ; Pone a 1 en pin PB1//-----------------------------------------------------------------------------------------------------------------rjmp bucle ; Bucle, se repite de lazo//------------------------------------------------------ FIN -----------------------------------------------------PROTEUS:

Figura 11: Simulación del Ejercicio N°5

Arquitectura de ComputadorasCiclo 2015-A

Page 14: Lab N°3 Arquitectura.docx

13

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

ATMEGA 8:

Figura N°10: Programa del Ejercicio N°4 OR

EJERCICIORealizar un programa para crear la siguiente lógica.

Entrada SalidaPB0 PB1 PD0 PD1

0 0 0 00 1 1 01 0 1 01 1 1 1

PROGRAMA:

.include "m8def.inc" ; Tipo de procesador

.cseg ; Segmento de código para memoria flash

.org 0x000 ; Dirección del vector resetrjmp inicio ; Salto para empezar desde inicio

inicio:CBI DDRB, PB0 ; Configura PB0 como entradaCBI DDRB, PB1 ; Configura PB1 como entradaSBI DDRD, PD0 ; Configura PD0 como salidaSBI DDRD, PD1 ; Configura PD1 como salida

bucle:SBIS PINB, PB0 ; Si PB0=1 salta una instruccionRJMP CASO1y2RJMP CASO3y4

CASO1y2:

Arquitectura de ComputadorasCiclo 2015-A

Page 15: Lab N°3 Arquitectura.docx

14

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

SBIS PINB, PB1 ; Si PB1=1 salta una instruccuionRJMP CASO1RJMP CASO2

CASO1:CBI PORTD,PD0CBI PORTD,PD1RJMP bucle

CASO2:SBI PORTD,PD0CBI PORTD,PD1RJMP bucle

CASO3y4:SBIS PINB, PB1 ; Si PB1=1 salta una instruccuionRJMP CASO3RJMP CASO4

CASO3:SBI PORTD,PD0CBI PORTD,PD1RJMP bucle

CASO4:SBI PORTD,PD0SBI PORTD,PD1RJMP bucle

PROTEUS:

Figura 13: Simulación del Ejercicio N°6

ATMEGA 8:

Arquitectura de ComputadorasCiclo 2015-A

Page 16: Lab N°3 Arquitectura.docx

15

UNIVERSIDAD NACIONAL DEL CALLAOFACULTADA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Figura N°14: Programa del Ejercicio

Arquitectura de ComputadorasCiclo 2015-A


Top Related