Lab N°4 Arquitectura

13
UNIVERSIDAD NACIONAL DEL CALLAO Facultad de Ingeniería Eléctrica y Electrónica Escuela Profesional de Ingeniería Electrónica LABORATORIO N°4 MANEJO DE INSTRUCCIONES II CURSO: ARQUITECTURA DE COMPUTADORAS ALUMNO: GARCIA VICENTE, ANDRE 1023220432 HARO SEGURA, PEDRO 1023220192 TORRES ANDRADE, ANTHONY WILSON 1023220646 CICLO: 2015 – A

description

Laboratorio de Arquitectura de Computadores, UNAC

Transcript of Lab N°4 Arquitectura

AMPLIFICADOR ESTERO DE 180 WATS PARA ROCKOLA

UNIVERSIDAD NACIONAL DEL CALLAO9

FACULTADA DE INGENIERA ELCTRICA Y ELECTRNICA

UNIVERSIDAD NACIONAL DEL CALLAO

Facultad de Ingeniera Elctrica y ElectrnicaEscuela Profesional de Ingeniera Electrnica

LABORATORIO N4MANEJO DE INSTRUCCIONES II

CURSO: ARQUITECTURA DE COMPUTADORAS

ALUMNO:GARCIA VICENTE, ANDRE 1023220432HARO SEGURA, PEDRO 1023220192TORRES ANDRADE, ANTHONY WILSON 1023220646

CICLO: 2015 A

PROFESOR: ING. CONDOR DE LA CRUZ, FLAVIO

LIMA CALLAO2015MANEJO DE INSTRUCCIONES IIOBJETIVO Conocer las instrucciones elementales en lenguaje ensamblador Aprender a desarrollar programas con el microcontrolador Atmega8, utilizando instrucciones bsicas. Aprender a manejar el entorno de desarrollo VMLAB. Aprender a grabar la memoria flash del microcontrolador

INTRODUCCINEl microcontrolador es un circuito integrado de muy alta escala de integracin que contiene las partes funcionales de un computador:

CPU (Central Processor Unit o Unidad de Procesamiento Central) Memorias voltiles (RAM), para datos Memorias no voltiles( ROM, PROM, EPROM) para escribir el programa Lneas de entrada y salida para comunicarse con el mundo exterior. Algunos perifricos (comunicacin 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 lmite es la propia imaginacin del usuario. Estos microcontroladores estn en el auto, en el televisor, en el telfono, en una impresora, en un horno de microondas, en un transbordador espacial, en un juguete, etc. Algunas fuentes estiman que en una casa tpica de E.U se tiene alrededor de 250 microcontroladores.FUNDAMENTOS TERICOS Manejo de puertos entrada y salida

Los puertos son un conjunto de lneas (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, adems tiene 2 diodos de proteccin uno conectado a Vcc y el otro conectado a GND. (Ver figura 1)

Figura N1: 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 prrafo 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 slo lectura, mientras que los registros PORTx y DDRx son de lectura/escritura. Adicionalmente, el bit Pull-up Disable PUD, en el registro SFIOR inhabilita la funcin 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 estn indicados por los Registros DDRx E/S, PORTxE/S y PINxE/S.(ver Register Descripcin for E/S ports, pgina 63 del manual Atmega8(L)).

El bit DDxn del Registro DDRx, establece la direccin de este pin. Si DDxn es escrito con 1 lgico, 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 lgico, entonces la resistencia pull-up est activada. En cambio s en PORTxn est configurado como un pin de salida es escrito con un 0 lgico, la resistencia pull-up est desactivada.

Si el pin PORTxn est configurado como un pin de salida y es escrito con un 1 lgico, el pin toma un valor alto, en cambio s es escrito con 0 lgico el pin toma un valor bajo(cero).

Figura N2: Puertos de E/S

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

DDxnPORTxnPUD (en SFIORE/SPull upComentario

00XEntradaNoTri slate

010EntradaYes

011EntradaNoTri slate

10XSalidaNoSalida baja

11XSalidaNoSalida Alta

Tabla N1: Configuracin de los pines del puerto

PROCEDIMIENTOSimular los siguientes ejercicios:

Ejercicio N1

Programa que cuenta los pulsos ingresados por uno de los pines y visualiza la cuenta por el puerto c en un display de 7 segmentos a traves de un decodificador 74LS47.

PROGRAMA:

//-----------------------------------------------------------------------------------------------------------------.include "m8def.inc" .cseg .org 0x0000 rjmp INICIO //--------------------------------------------------- INICIO ----------------------------------------------------inicio://-----------------------------------------------------------------------------------------------------------------CBI DDRB,PB0 LDI R16,0 LDI R17,255 OUT DDRC,R17 //-------------------------------------------------- BUCLE 1---------------------------------------------------BUCLE1: CLR R16 //--------------------------------------------------- BUCLE ----------------------------------------------------BUCLE: SBIS PINB,PB0 INC R16 OUT PORTC,R16 //------------------------------------------------ PULSADO ---------------------------------------------------pulsado: //-----------------------------------------------------------------------------------------------------------------SBIS PINB,PB0 RJMP pulsado CPI R16,10 BREQ BUCLE1 RJMP BUCLE //------------------------------------------------------ FIN -----------------------------------------------------

PROTEUS:

Figura 3: Simulacin del Ejercicio N1

ATMEGA 8:

Figura 4: Simulacin del Ejercicio N1

Ejercicio N2

Programa anterior para hacer un contador de pulsos externos de 2 dgitos.

(Sera hecho por el alumno en clase)

PROGRAMA://----------------------------------------------- INICIO --------------------------------------------------------INICIO: //---------------------------------------------------------------------------------------------------------------- CBI DDRB,PB0 //Configura PB0 Como entrada LDI R16,0 //Carga R16 con 0 decimal LDI R17,255 //Carga R17 con 255 LDI R19,255 OUT DDRC,R17 //Configura puerto C como salida OUT DDRD,R19BUCLE1: CLR R16 //Borra registro R16 INC R19 OUT PORTD,R19BUCLE: SBIS PINB,PB0 //Si PB0=1 salta una linea(no ejecuta INC R16) INC R16 //Se incrementa en 1 el registro R16 OUT PORTC,R16 //Saca el valor de R16 por el puerto CPULSADO: SBIS PINB,PB0 //Si PB0=1 salta (no ejecuta RJMP pulsado) RJMP pulsado //Vuelve a pulsado CPI R16,10 // Compara R16 con la constante 10 BREQ BUCLE1 //Si R16 es igual a 10 entoes va a BUCLE1 RJMP BUCLE //va a BUCLE //-----------------------------------------------------------------------------------------------------------------

PROTEUS:

Figura 5: Simulacin del Ejercicio N2

ATMEGA 8:

Figura 6: Simulacin del Ejercicio N2

TRABAJOHacer programa para que haga la cuenta en forma ascendente y descendente, dicha opcin debe ser seleccionado con un swicth.

PROGRAMA:

//----------------------------------------------- INICIO --------------------------------------------------------INICIO: //----------------------------------------------------------------------------------------------------------------- CBI DDRB,PB0 //Configura PB0 Como entrada LDI R16,0 //Carga R16 con 0 decimal LDI R17,255 //Carga R17 con 255 LDI R19,255 OUT DDRC,R17 //Configura puerto C como salida OUT DDRD,R19 LDI R19,0

BUCLE: SBIS PINB,PB0 //Si PB0=1 salta una linea(no ejecuta INC R16) RJMP incodec

PASO1: OUT PORTC,R16 //Saca el valor de R16 por el puerto C OUT PORTD,R19 PULSADO: SBIS PINB,PB0 //Si PB0=1 salta una linea(no ejecuta RJMP pulsado) RJMP pulsado //Vuelve a pulsado

CPI R16,10 // Compara R16 con la constante 10 BREQ BUCLE1 //Si R16 es igual a 10 entonces va a BUCLE1... //... de lo contrario no ejecuta CPI R16,-1 BREQ BUCLE2 RJMP BUCLE //va a BUCLE

BUCLE1: CLR R16 //Borra registro R16 INC R19 OUT PORTD,R19 RJMP BUCLE

BUCLE3: SBIC PINB,PB1 LDI R19,9 OUT PORTD,R19 RJMP BUCLEBUCLE2: LDI R16,9 OUT PORTC,R16 CPI R19,0 BREQ BUCLE3 DEC R19 OUT PORTD,R19 RJMP BUCLE INCODEC: SBIS PINB,PB1 //Se gestiona el incremento o decremento INC R16 SBIC PINB,PB1 DEC R16 RJMP PASO1//-----------------------------------------------------------------------------------------------------------------

PROTEUS:Figura 7: Simulacin del Trabajo

Arquitectura de ComputadorasCiclo 2015-A