laboratorio 1

11
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 1 LABORATORIO 1 Familiarización con las herramientas de desarrollo y Manejo de puertos E/S I. OBJETIVO Aprender a desarrollar programas elementales con el microcontrolador Atmega88P, utilizando instrucciones básicas. Aprender a manejar el entorno de desarrollo Atmel Studio y el entorno VMLAB para editar, compilar y simular un programa Aprender a utilizar la herramienta de programación AvrPUCP para grabar y ejecutar un programa en el microcontrolador Atmega88. II. MATERIALES Y EQUIPOS 1 módulo de entrenamiento “AvrPUCP -Mega88”. 1 módulo de E/S 1 Cable ISP de programación para el ATmega88 1 computadora personal 1 Fuente de alimentación 1 Cables de fuente 10 cables de E/S III. HERRAMIENTAS DE DESARROLLO Atmel Studio 6.0 VMLAB v3.15 AVRPUCP 0.98 IV. PROCEDIMIENTO A continuación se presenta el desarrollo de 3 programas, los cuáles debe editarlo con las siguientes herramientas para utilizar con el microcontrolador ATmega88: Atmel Studio 6.0 o superior: Para editar y compilar el programa VMLAB: Para simular la ejecución del programa AvrPUCP: Para programar (grabar el código máquina) el microcontrolador Atmega88. 4.1 Primer Proyecto. El primer ejemplo consiste en implementar un decodificador de 2x4, con un habilitador de entrada. Objetivos específicos Aprender a leer a leer un dato mediante el registro PINB del puerto B. Aprender a activar la resistencia interna pull up del microcontrolador Aprender a usar las funciones lógicas para enmascarar bits. Conexiones Los leds están conectados a los pines PD0, PD1, PD2, PD3, para indicar las salidas del decodificador. Los interruptores K1 y K2 están conectados a PB0 y PB1, para indicar las entradas del decodificador. El habilitador K0 está conectado a PC0. Procedimiento Se dibuja el circuito esquemático Se dibuja el diagrama de flujo En el circuito: o ¿Cuál será el valor lógico de los pines PB0 y PB1, cuando los interruptores están cerrados? La respuesta es “0” lógico. o ¿Y cuál será el valor lógico de estos pines cuándo el interruptor está abierto, tal como se muestra en el circuito? Es indeterminado. Por tanto, para nuestro ejemplo debemos activar las resistencias “pull up” que tiene cada pin de E/S del microcontrolador. En este caso la resistencia pull up que corresponde al pin PB0, PB1 y PC0.

Upload: renzo-jo-laurent

Post on 20-Jan-2016

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 1

LABORATORIO 1

Familiarización con las herramientas de desarrollo y Manejo de puertos E/S

I. OBJETIVO

Aprender a desarrollar programas elementales con el microcontrolador Atmega88P, utilizando instrucciones básicas.

Aprender a manejar el entorno de desarrollo Atmel Studio y el entorno VMLAB para editar, compilar y simular un programa

Aprender a utilizar la herramienta de programación AvrPUCP para grabar y ejecutar un programa en el microcontrolador Atmega88.

II. MATERIALES Y EQUIPOS

1 módulo de entrenamiento “AvrPUCP -Mega88”.

1 módulo de E/S

1 Cable ISP de programación para el ATmega88

1 computadora personal

1 Fuente de alimentación

1 Cables de fuente

10 cables de E/S III. HERRAMIENTAS DE DESARROLLO

Atmel Studio 6.0

VMLAB v3.15

AVRPUCP 0.98 IV. PROCEDIMIENTO

A continuación se presenta el desarrollo de 3 programas, los cuáles debe editarlo con las siguientes herramientas para utilizar con el microcontrolador ATmega88:

Atmel Studio 6.0 o superior: Para editar y compilar el programa

VMLAB: Para simular la ejecución del programa

AvrPUCP: Para programar (grabar el código máquina) el microcontrolador Atmega88.

4.1 Primer Proyecto.

El primer ejemplo consiste en implementar un decodificador de 2x4, con un habilitador de entrada. Objetivos específicos

Aprender a leer a leer un dato mediante el registro PINB del puerto B.

Aprender a activar la resistencia interna pull up del microcontrolador

Aprender a usar las funciones lógicas para enmascarar bits. Conexiones

Los leds están conectados a los pines PD0, PD1, PD2, PD3, para indicar las salidas del decodificador. Los interruptores K1 y K2 están conectados a PB0 y PB1, para indicar las entradas del decodificador. El habilitador K0 está conectado a PC0.

Procedimiento

Se dibuja el circuito esquemático Se dibuja el diagrama de flujo En el circuito: o ¿Cuál será el valor lógico de los pines PB0 y PB1, cuando los interruptores están cerrados?

La respuesta es “0” lógico. o ¿Y cuál será el valor lógico de estos pines cuándo el interruptor está abierto, tal como se

muestra en el circuito? Es indeterminado. Por tanto, para nuestro ejemplo debemos activar las resistencias “pull up” que tiene cada pin de E/S del microcontrolador. En este caso la resistencia pull up que corresponde al pin PB0, PB1 y PC0.

Page 2: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 2

¿Cómo se logra activar estas resistencias pull up? Se configura el pin como entrada y luego se escribe un “1” lógico en la posición del bit asociado al registro PORT:

DDRB = 0x00; /* Configuracion como entrada del puerto B y C */ DDRC = 0x00; PORTB = 0x03; /* Resistencias pull up activas en el pin 0 y 1 del puerto B */ PORTC = 0x01; /* Para activar la resistencia pull up del pin 0 del puerto C */

Circuito esquemático simplificado:

. ..

ATMEGA88

R1

R2

R3

VDD= 5V

R1=R2=R3=R4=180 Ω.

R4

PD0

PD3

PD2

PD1

PB0

PC0

PB1K1

K2

K0

K0,K1,K2 son interruptores

D1 D2 D3 D4

.

Diagrama de Flujo

¿habilitador

= 1?

SI

Decodificador

Leer estado de

habilitador

Inicio

NO

Valor de

selectores

Configuración de Puertos

Salida: 4 leds

Entrada: 3 interruptores

Activar

salida 0

Activar

salida 1

Activar

salida 2

Activar

salida 3

Apagar LEDs

00

01 10

11

Page 3: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 3

Programa

//************************************************************************** // PROYECTO1.c // Descripcion: El programa simula un decodificador de 2x4 // Created: 8/20/2013 12:29:14 PM // Author: Zenón Cucho //************************************************************************* #include <avr/io.h> //**************************************************************************** //*Definicion de la funcion: configuracion de puertos *********************** //**************************************************************************** void Configuracion_puertos(void) DDRB = 0x00; /* Configuracion como entrada del puerto B y C */ DDRC = 0x00; PORTB = 0x03; /* Resistencias pull up activas en el pin 0 y 1 del puerto B */ PORTC = 0x01; /* Para activar la resistencia pull up del pin 0 del puerto C */ DDRD = 0xff; /* Configuración como salida el puerto D */ PORTD = 0x00; /* Inicialmente las salidas muestran 0 */ //**************************************************************************** // Programa Principal ******************************************************** //**************************************************************************** int main(void) int hab,sel; /* variables globales hab= habilitador y sel= selectores */ Configuracion_puertos(); while(1) hab = PINC & 0x01; /* lectura del habilitador conectado a PC0 ***** si hab=0, los leds están apagados */ if(hab) sel = PINB & 0X03; /* lectura de los selectores en PB0, PB1 */ switch(sel) case 0: PORTD = 0x01; /* Salida 0 activa */ break; case 1: PORTD = 0x02; /* Salida 1 activa */ break; case 2: PORTD = 0x04; /* Salida 2 activa */ break; case 3: PORTD = 0x08; /* Salida 3 activa */ break; /* Fin de switch */ else PORTD = 0x00; /*Decodificador deshabilitado: salidas desactivadas */ /*Fin de while */

Page 4: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 4

Simulación en VMLAB Utilizar el siguiente archivo *prj K0 PC0 VSS LATCHED ; K0 es el interruptor que representa al habilitador

K1 PB0 VSS LATCHED ; K1 y K2 son las entrdas selectoras del decodificador

K2 PB1 VSS LATCHED

; Se define el hardware de la salida (4 leds) del circuito

D1 VDD N1

R1 N1 N2 180

X1 ND2 PD0 PD0 N2

D2 VDD N3

R2 N3 N4 180

X2 ND2 PD1 PD1 N4

D3 VDD N5

R3 N5 N6 180

X3 ND2 PD2 PD2 N6

D4 VDD N7

R4 N7 N8 180

X4 ND2 PD3 PD3 N8

Resultado Las salidas del decodificador se observa en los leds, para cada valor de la entrada PB0 y PB1. Si el habilitador conectado al bit 0, del puerto C tiene un “0” no se observa ningún led prendido.

4.2 Segundo proyecto.

El segundo proyecto consiste en implementar un contador de 3 bits. La cuenta se incrementa luego de presionar y soltar un pulsador. Objetivos específicos

• Aprender a configurar los puertos como entrada y salida • Aprender a manejar un pulsador • Aprender a usar las funciones lógicas para enmascarar bits.

Procedimiento

- Los leds de salida del contador están conectados a PD0, PD1, PD2. - El pulsador de entrada (K0) está conectado a PB0. - Edite el programa en Atmel Studio 6.0 y compruebe la simulación con el entorno VMLAB - Implemente el programa en el Módulo AvrPUCP y demuestre su funcionamiento

Page 5: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 5

Circuito esquemático simplificado:

PD0

PD1

PD2

ATMEGA88 R1

R2

R3

VDD= 5V . .

R1=R2=R3=180 Ω.

.

.VDD= 5V

R4=10K

. PB0

D1 D2 D3

K0

Diagrama de Flujo

¿Pulsador

presionado?No

No

¿Pulsador

liberado?

Contador

Inicio

Configuración de Puertos

Salida: 3 leds

Entrada: 1 pulsador

salida ß 0

salida ß salida + 1

¿salida =

MAXIMO?

No

salida ß 0

Mostrar salida en

LEDs

1

1

Page 6: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 6

Programa

//***************************************************************************** * PROYECTO2.c * Descripcion: Se implementa un contador de 3 bits, cuenta de 0 a 7 y se repite. * La cuenta se incrementa al presionar y soltar un pulsador * Created: 8/20/2013 2:10:09 PM * Author: Zenón Cucho //***************************************************************************** #include <avr/io.h> // librería de E/S #define MAXIMO 7 // define una constante //***************************************************************************** // Definicion de la funcion: configuracion de puertos ************************ // **************************************************************************** void Configuracion_puertos(void) DDRB = 0x00; // Se define el puerto B como entrada DDRD = 0x07; // Se define 3 pines del puerto D como salida PORTD = 0x00; // Inicialmente los leds están apagados // ***************************************************************************** // Programa Principal ********************************************************** // ***************************************************************************** int main(void) int p0, salida=0; // variables p0= pulsador ; salida= leds Configuracion_puertos(); while(1) do // espera que se presione el pulsador (PB0) p0 = PINB & 0x01; while (p0 == 0); do // espera que se libere el pulsador (PB0) p0 = PINB & 0x01; while (p0 == 1); salida++; // actualiza el valor de la cuenta if (salida == MAXIMO) salida = 0; // para reiniciar PORTD = salida; // muestra el valor actual en los leds // fin de while // fin del programa

Simulación en VMLAB Utilizar el siguiente archivo *prj D1 VDD N1 ; Led 1 está conectado a PD0

R1 N1 N2 180 ;

X1 ND2 PD0 PD0 N2

D2 VDD N3 ; Led 2 está conectado a PD1

R2 N3 N4 180

X2 ND2 PD1 PD1 N4

D3 VDD N5 ; Led 3 está conectado a PD2

R3 N5 N6 180

X3 ND2 PD2 PD2 N6

; El circuito de entrada está definido por:

K0 VDD PB0 ; Pulsador K0 está conectado a PB0

R4 PB0 VSS 10K

Page 7: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 7

Resultado Se observa, cuando PORTD=0b00000011, los leds D1 y D2 están encendidos. El pulsador K0 está conectado al bit b0, del puerto B (ver el registro PINB).

4.3 Tercer proyecto.

El tercer proyecto consiste en implementar un programa que prenda y apague un diodo led por un tiempo establecido. En el ejemplo el diodo led está encendido por 500 ms y está apagado por 1000 ms. El diodo led está conectado al puerto PB3. Objetivos específicos:

• Aprender a utilizar funciones incluidas en la Biblioteca de Atmel Studio 6.0 • Aprender a utilizar la función _delay_ms( ) para generar una demora de tiempo (pausa) durante

la ejecución de un programa. Sintaxis de la función _delay_ms( )

_delay_ms(ms) Parámetro de entrada: ms, indica el tiempo en milisegundos Parámetro de salida: ninguno

Procedimiento

- Edite el programa en Atmel Studio 6.0 y compruebe la simulación con el entorno VMLAB - Implemente el programa en el Módulo AvrPUCP y demuestre su funcionamiento

Diagrama de Flujo

Encendido / Apagado

Inicio

Configuración de puertos

Salida: 1 LED

Entrada: ninguna

Encender LED

Retardo(500ms)

Apagar LED

Retardo(500ms)

Page 8: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 8

Programa

/* * PROYECTO3.c * Descripcion: El programa prende un diodo led por 500 ms y lo apaga por 1000 seg. * Created: 8/21/2013 5:12:51 PM * Author: Zenón Cucho */ #include <avr/io.h> #include <util/delay.h> //Se agrega esta Biblioteca para utilizar la funcion delay(ms) int main(void) DDRB=0X08; // pin 3 del puerto B como salida while(1) PORTB=0X08; // PB3 <---"1" ;Inicialmente el led está encendido _delay_ms(500); // tiempo de encendido 500 ms PORTB=0X00; // PB3<--"0" ; el diodo led se apaga _delay_ms(1000); // tiempo de apagado 1000 ms

Simulación en VMLAB Utilizar el siguiente archivo *prj D1 VDD N1 ; Led 1 está conectado a PB3

R1 N1 N2 180 ;

X1 ND2 PB3 PB3 N2

Resultado Se observa el tiempo de la simulación, debe considerarse que el tiempo del simulador comparado con el tiempo real demora más tiempo.

Page 9: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 9

4.4 Cuarto proyecto. Se tiene 8 diodos conectados al puerto D del microcontrolador ATmega88, el proyecto consiste en implementar un programa que muestra el desplazamiento de un led encendido de derecha a izquierda y viceversa de forma circular. Inicialmente el led conectado a PD0 está encendido y los otros están apagados.Considere un retardo de 300 ms, por cada cambio en los leds. Dato Inicial: Se desplaza cada 300 ms

. . . . . . . . . . . . . . . . . Al llegar a prenderse, el último led, se repite de izquierda a derecha

Programa

/* * Ejemplo Cuarto_proyecto.c * Created: 3/14/2014 4:58:23 PM * Author: Zenón Cucho //Fuente: Joe Pardue programming for microcontrollers */ #include <avr/io.h> #include <util/delay.h> #define F_CPU=10000000UL int main(void) int n; DDRD = 0XFF; // Configuración del puerto D como salida while(1) // Loop for (n=1;n<=128;n=2*n) PORTD = n; _delay_ms(300); for (n=128;n>1;n=n/2) PORTD = n; _delay_ms(300);

Page 10: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 10

Simulación en VMLAB Utilizar el siguiente archivo *prj D1 VDD N1

R1 N1 N2 180

X1 ND2 PD0 PD0 N2

D2 VDD N3

R2 N3 N4 180

X2 ND2 PD1 PD1 N4

D3 VDD N5

R3 N5 N6 180

X3 ND2 PD2 PD2 N6

D4 VDD N7

R4 N7 N8 180

X4 ND2 PD3 PD3 N8

;

D5 VDD N9

R5 N9 N10 180

X5 ND2 PD4 PD4 N10

D6 VDD N11

R6 N11 N12 180

X6 ND2 PD5 PD5 N12

D7 VDD N13

R7 N13 N14 180

X7 ND2 PD6 PD6 N14

D8 VDD N15

R8 N15 N16 180

X8 ND2 PD7 PD7 N16

Problemas Propuestos: Nota: Comprobar el funcionamiento usando el entorno VMLAB: 1) Un pulsador (K1) y 4 diodos leds (D1, D2, D3, D4) están conectados al microcontrolador

ATmega88 en los pines PC5, PD2, PD3, PD4 y PD5 respectivamente. Inicialmente D1 está prendido y los otros 3 leds están apagados. Escribir un programa que cumpla con la condición siguiente: Al presionar y soltar el pulsador conectado al pin PC5 se prenden los diodos apagados y se apaga el led que estaba prendido. Hacer: a) Diagrama esquemático b) Diagrama de flujo c) Programa

2) Se tiene conectado al microcontrolador ATmega88, 2 pulsadores y 4 diodos leds. Al presionar y

soltar el pulsador 1 se debe mostrar ascendentemente los números impares de 1 a 15 y al presionar y soltar el pulsador 2 se debe mostrar la cuenta de los números pares de 0 a 14. La cuenta se modifica luego de presionar y soltar el pulsador correspondiente y comienza desde el valor inicial 0 ó 1. Si llega a su valor máximo se reinicia la cuenta. Ejemplo: Al usar el pulsador 1 y el pulsador 2, consecutivamente, se muestra: 1 3 5 7 9 11 0 2 4 6 Hacer: a) Diagrama esquemático b) Diagrama de flujo c) Programa (Comprobar su funcionamiento)

Page 11: Laboratorio 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2014-1 Ing. Zenón Cucho M. 11

3) En el anterior programa, la cuenta de los números impares se modifica cada 500 ms y la cuenta de

los números pares cada 800 ms. Los pulsadores 1 y 2 se utilizan solo para comenzar la cuenta. Implemente el programa. Use la función _delay_ms(ms)

4) Se tienen conectados al microcontrolador ATmega88 cuatro leds y un pulsador, se pide mostrar

una cuenta binaria ascendente en los leds con las siguientes características:

Es una cuenta ascendente de 5 a 12

El valor inicial de la cuenta es cinco.

La cantidad de pulsos requeridos para permitir incrementar la cuenta se incrementa en uno cada vez. Es decir, si inicialmente la cuenta está en 5, al presionar una vez el pulsador la cuenta se incrementa a 6, luego, para incrementar la cuenta a 7 se requerirán dos pulsos, luego, para mostrar el 8 se requerirán tres pulsos, y así sucesivamente hasta llegar a 12, luego termina.

Conexiones: Leds: Diodos leds conectados a: PB3, PB2, PB1, PB0 (LSB) Pulsador: conectado al pin PC5

5) Desarrollar un programa para el microcontrolador ATmega88 que implemente un contador

ascendente de 4 bits y con razón constante. El contador será gobernado por un pulsador KA para controlar la cuenta ascendente. La razón a la cual aumentará el valor de cuenta se obtiene de 3 interruptores K0, K1 y K2. El valor de cuenta deberá ser mostrado en 4 leds. Considerar que los posibles valores para la cuenta son los números del 0 al 15 y que esta cuenta es circular (después del 15 sigue el 0 y antes del 0 viene el 15) Considerar también como primer valor de cuenta el número 8. Para las conexiones considerar: Pulsador: conectado a PC2 y los interruptores a PD0 (LSB), PD1, PD2 y PD3 Leds conectados a PB3, PB2, PB1 y PB0 (LSB)

6) Modificar el problema anterior, agregando un pulsador conectado a PC5 para disminuir la cuenta,

cuya razón es la misma determinado por los 3 interruptores. 7) Para las siguientes conexiones:

Entradas: - Interruptores SW1, SW2, SW3 y SW4 conectados a PC0, PC1, PC2 y PC3 respectivamente. - Pulsador P1 conectado a PC4. Salidas: - Diodos leds D4, D3, D2, D1 conectados a PD5, PD4, PD3 y PD2 (LSB) respectivamente para

ver el número. Implementar un programa que cumpla los siguientes requerimientos:

Los interruptores permiten definir un número de 4 bits (SW4 bit más significativo, SW1 bit menos significativo, interruptor cerrado “0”, abierto “1”).

Cuando el pulsador está presionado, se muestra en los LED’s, en binario, la cantidad de 1’s en el número (led prendido = 1).

Cuando el pulsador no está presionado, se muestra el número seleccionado con los interruptores.

Ejemplo: Si SW2 y SW4 están abiertos, y SW1y SW3 están cerrados, el número es 1010. Si se pulsa el pulsador, debe aparecer: D4 apagado, D3 apagado, D2 encendido, D1 apagado. Eso representa al número 0010 que es 2 en decimal, y es la cantidad de 1’s en el número. Si se suelta el pulsador, se prenderían los LEDs D4, D2 y se apagarían D3 y D0.

Material de trabajo para el laboratorio 1: Elaborado por: Ing. Zenón Cucho Mendoza Revisado por: Ing. Freri Orihuela Quivaqui. Semestre: 2014.1

San Miguel, marzo de 2014