GUIA1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 24

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU

FACULTAD DE CIENCIAS E INGENIERIA


SECCION ELECTRICIDAD Y ELECTRONICA

LABORATORIO: Sesión 1

Tema: Familiarización con las herramientas de desarrollo. Manejo de puertos E/S

I. OBJETIVO
Aprender a desarrollar programas elementales con el microcontrolador Atmega8, utilizando
instrucciones básicas.
Aprender a manejar el entorno de desarrollo VMLAB y AvrPUCP para editar, compilar, simular un
programa y luego grabar el código del programa en el microcontrolador.

II. MATERIALES Y EQUIPOS

• 1 módulo de entrenamiento “AvrPUCP -Mega8”. • 1 computadora personal


• 1 módulo de E/S • 1 Fuente de alimentación
• 1 Cable ISP de programación • Cables de fuente y de E/S

III. HERRAMIENTAS DE DESARROLLO


• VMLAB v3.15
• AVRPUCP v0.96

IV. PROCEDIMIENTO

La presente guía consta de 4 ejercicios desarrollados a fin de aprender a programar el


microcontrolador ATmega8, la herramienta que se utiliza es el entorno VMLAB, que permite:
• Editar el programas en lenguaje ensamblador
• Obtener el código máquina
• Simular el funcionamiento del programa, observando los resultados en los registros de
la CPU, registros de propósito general, espacios de memoria, puertos de E/S, etc.

Ejemplo 1

Se desea escribir un programa para prender 2 diodos leds, que están conectados a 2 pines de un
mismo puerto del microcontrolador ATmega8. Se pide
a) Dibuje el circuito esquemático simplificado.
b) Utilizando el entorno VMLAB, edite el programa en lenguaje ensamblador y compruebe su
funcionamiento.
c) Compruebe su funcionamiento usando la herramienta de desarrollo AvrPUCP para grabar el
programa en el microcontrolador que se encuentra en el módulo AvrPUCP-Mega8

Desarrollo

a) Circuito esquemático

Para prender 2 diodos


leds, utilizaremos el
circuito planteado en la
Figura 1.

Figura 1: Circuito esquemático

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 1


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

V. MANEJO DEL ENTORNO DE DESARROLLO VMLAB (VISUAL MICRO LAB)

Esta herramienta para programar microcontroladores, se puede obtener de la dirección:


http://www.amctools.com/download.htm

Instale en su computadora y siga los siguientes pasos:

5.1 Creación del primer proyecto: Edición y Compilación


Para editar el programa y probar su funcionamiento aprenderemos a utilizar el entorno
VMLAB

Procedimiento:

5.1.1 Ejecutar el entorno VMLAB, y aparecerá una pantalla similar a las siguiente figura:

Figura 2: Se define un nuevo proyecto

5.1.2 En la barra del menú principal, hacer clic en Proyect, luego en la opción New Proyect
para crear un nuevo proyecto y aparecerán las figuras 3 y 4:

Figura 3: Se define un nuevo proyecto


IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 2
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Figura 4: Pasos para definir unl nuevo proyecto Figura 5: Creación del proyecto Ejemplo1

5.1.3 Siga los siguientes pasos para definir el proyecto, tal como se muestra en la Figura 5:

1er.paso: Crear una carpeta de trabajo en la unidad C donde se guardarán los archivos generados
por el VMLAB, para esto haga un clic en la pestaña:

Enter name/browse/create directory

La carpeta de trabajo contendrá el nombre del curso, el horario, el número de laboratorio y el nombre
del proyecto, por ejemplo, establezca las siguientes carpetas en el orden indicado:

 Nombre de la carpeta: iee256\H0528\Lab1


 Nombre del Proyecto: Ejemplo1.prj (la extensión prj, se crea por defecto)

Luego de crear las carpetas observará en la pestaña la ruta y el nombre del proyecto como se
aprecia en la Figura 5, por ejemplo:

C:\iee256\H0528\Lab1\ejemplo1.prj

(El nombre del proyecto debe tener hasta 8 caracteres, si desea un nombre más largo,
regrese al menú principal del VMLAB, ingrese a Options, luego haga clic en Code Maker y
marque el botón que corresponde a la opción de nombres grandes: allow long names.
Luego, vuelva al paso anterior).

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 3


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

2do.paso: Ahora seleccione el código del microcontrolador: Atmega8 (se observa en la Figura 5)

3er.paso: Elija el modo estándar de compilación:

 Standard micro manufacturer assembler/linker (por defecto ya está marcado)

4to.paso: Añada el archivo ejemplo1.asm en la caja de archivos (Code files list), haciendo clic en el
botón Add this. (Se observa en la Figura 5)

5to.paso: Una vez completados todos los datos se hace clic en el botón OK, y aparecerán 3
ventanas de trabajo con líneas de texto predeterminadas (ver la Figura 6).

• Ejemplo1.hex: Aquí escribiremos nuestro programa en lenguaje ensamblador.


Observe nos muestra la estructura de un programa, que incluye algunas directivas
(.include,.def, .ORG), etiquetas, y algunas instrucciones (rjmp, reti). Los comentarios
se escriben después de un punto y coma.

• Ejemplo1.prj: Esta ventana nos permite escribir líneas de texto para representar el
hardware del circuito, para los cuáles debemos conocer la sintaxis de cada
dispositivo, lo estudiaremos mas adelante. Observe también, en la parte superior nos
indica alguna de sus características: trabaja a 5 voltios, la frecuencia es de 1 Mhz.

• Ventana de mensajes: Nos mostrará si hubo o no errores durante el ensamblaje. El


error se puede dar cuando compilamos el código del programa y el archivo de
definiciones *.prj

Figura 6: Ventanas para editar el programa, definir el circuito esquemático y ver los mensajes

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 4


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

5.2 Edición del Hardware: Se escribe las líneas de texto que definen el circuito en la ventana
generada ejemplo1.prj

Previo a ello, estudiaremos cómo se definen cada componente del circuito:


Estando en la barra del menú principal haga clic en Help, luego en Contents y seleccione el
enlace Hardware component para ver toda la lista de componentes que dispone el VMLAB, como
se muestra en figura siguiente:

Figura 7: Se muestra una lista de componentes electrónicos que dispone el entorno VMLAB

Debemos hacer clic en un componente en particular y estudiaremos la sintaxis respectiva, tales como:

Componente Sintaxis

a) Diodo Led: Para definir el diodo led se debe


tener en cuenta que el ánodo siempre está D{1-8} VDD (Nombre del nodo)
conectado a la fuente VDD y el nombre del nodo
del cátodo. En el VMLAB tenemos 8 diodos.

Ejemplo: D3 VDD nodo3

b) Puerta NAND: Es de 2 entradas y una salida, a X(<nombre>) ND2 <entrada1><entrada2><salida>


partir de ella se puede obtener un inversor.

Ejemplo: X1 ND2 PC0 PC0 nodo2

c) Resistencia: se define a partir de sus 2 extremos R(<nombre>) <nodo1><nodo2> <valor>


indicando su valor.
Ejemplo: R20 N11 N12 10K

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 5


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

d) Condensador: Se define indicando el nombre C(<nombre>) nodox VSS valor


de los nodos de sus extremos y su valor. Un
extremo siempre debe ser conectado a GND.

Ejemplo: C11 nodo5 VSS 10uF

e) Interruptor: Presenta 16 botones con


nombres de K0, K1 hasta KF. K(<nombre)> nodox nodoy LATCHED

Ejemplo: K4 PB5 VSS LATCHED

K(<nombre)> nodox nodoy


f) Pulsador: La sintaxis es similar al interruptor,
pero sin la palabra LATCHED

Los diodos leds (en total 8), los pulsadores/interruptores (en total 16 botones) se pueden observar en
la siguiente Figura 8, cuando se activa la ventana de Control Panel del VMLAB

Figura 8 Vista de los diodos leds y pulsadores/interruptores

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 6


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

5.3 Considerando el circuito de la Figura 1, escribiremos el nombre de cada elemento del circuito y
sus respectivos nodos (en una hoja aparte), tal como se muestra en la Figura 9:

Figura 9

5.4 Continuemos con el VMLAB, en la ventana que corresponde al archivo ejemplo1.prj, escriba las
siguientes líneas de texto que representan el circuito esquemático (en la figura siguiente el texto se
encuentra resaltado, se agregó algunas líneas de comentario partir del ;).

Figura 10

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 7


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

5.5 Compilar las líneas de texto que definen el circuito


Luego de escribir estas líneas de texto se ensambla para comprobar la sintaxis de cada una de las
líneas del programa y obtener el código máquina:

Presione la tecla F9, ó haga clic en el símbolo de la barra de herramientas.

Figura 11

Si al compilar0las líneas de texto no se presenta errores aparecerá una carita feliz en la


ventana de mensajes que corresponde a Project File

Figura 12

Si alguna línea de texto NO está correcto, al presionar la tecla F9 de la PC, aparece una(s) línea(s)
de texto resaltada donde se encuentra el error, mostrándose en la ventana de mensajes una “carita
triste”, , por tanto debemos corregir y compilar otra vez, hasta que salga la “carita feliz”.

¿Un símbolo de una carita feliz , significa que está bien definido el circuito? ¿Por qué?

Figura 13: Se observa una “carita triste” cuando NO se compila correctamente

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 8


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

5.6 Edición del Programa, usando el lenguaje ensamblador

Abra la ventana de trabajo ejemplo1.hex, para escribir el siguiente programa que se muestra en
la Figura 14.
(Antes de escribir el siguiente programa borre todas las líneas de texto que se observaron por
defecto al crear el proyecto).

Consideraciones importantes:

Todo programa debe contar con lo siguiente:


 Cabecera: Anote el nombre del programa, autor, horario, fecha y una pequeña
descripción general del programa.
 Variables: Se describe para que sirven cada una de ellas
 Programa Principal: Se indica con comentarios donde comienza el programa
 Es importante escribir comentarios en porciones de programa que ayuden a
entender la solución.
 Subrutinas (Se estudiará en el tercer laboratorio)

Directivas (no son instrucciones) que se utilizarán para el primer ejemplo:

 .include Contiene toda la información para hacer la programación


 .CSEG : Para indicar que se empleará la memoria de programas
 .DSEG: Para indicar que los datos siguientes utilizarán la memoria de datos
 .ORG Indica donde se inicia la programación

Cada línea de instrucción, está formado por uno o más de los siguientes campos:
Campo de etiqueta, campo de nemónicos (representan a las instrucciones) y campo de
comentarios.

El programa se muestra a continuación:

Figura 14: Programa en lenguaje ensamblador

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 9


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

5.6.1 Ensamblaje y depuración del programa

Para ensamblar el programa presione la tecla F9 ó puede usar la figura de la barra de


herramientas (haciendo un clic). Si al momento de ensamblar ó compilar no existe ningún error
aparecerá en la ventana de mensajes un símbolo similar a una medalla dorada, con un texto Succes!
All ready to run, como en la siguiente figura simplificada (Si hay errores, aparece una carita triste,
ver figura, se debe corregir el programa, en la línea de texto indicada):

a) Compilación correcta b) Al compilar se muestra errores

Figura 15

5.7 Uso del SIMULADOR


Paso 1: Para observar nuestros resultados, necesitamos 2 leds, podemos ejecutar el programa paso
a paso para ir examinado como varían los registros cuando se ejecuta cada instrucción, para ello
hacemos clic en la pestaña View de la barra del menú principal y activamos las siguientes opciones:

1. Panel de control: Permite observar el estado lógico de los 8 diodos leds (D1…D8), muestra
los 16 botones (0, 1,2…F) para simular el funcionamiento de los interruptores/pulsadores, 3
potenciómetros (S1, S2, S3), etc. Nuestra programa sólo usa 2 leds, que se a definido en la
ventana ejemplo1.prj

2. I/O ports: Para observar los valores actuales de los puertos B, C y D y sus registros
asociados DDRx, PORTx, PINx (donde x=B, C ó D).
Para nuestro ejemplo, nos interesa solo los registros asociados al puerto B: DDRB, PORTB

3. Register/flags: Para ver los valores de los registros de propósito general (R0 a R31), el
contador de programa(PC), el puntero de Pila(SP), el registro de banderas (SREG), etc.

En nuestro ejemplo 1, sólo usamos los registros R16 y R18, por tanto podemos ver sus
valores cuando se ejecuta cada instrucción.

Los valores de los registros, también se pueden visualizar en los siguientes formatos:

 entero (sin signo): rango 0 to 255


 entero (con signo): rango -128 a 127
 char (ASCII)
 hexadecimal
 binario (se muestra por defecto)

Finalmente, luego de hacer clic en las opciones indicadas, obtenemos la siguiente figura:

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 10


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

Figura 16: Se muestran los cuadros: Control Panel, Registros de propósito general y puertos B, C y D.

Paso 2: Ejecución del programa con el VMLAB

Podemos simular el funcionamiento del proyecto de 2 maneras:

1) Ejecutando todo el programa:


Para ello Presione la tecla F5 ó haga un clic en la pestaña “semáforo” de la barra de
herramientas. Compruebe y obtenga los resultados mostrados en la figura siguiente.
Observe que las líneas del programa se pintan de amarillo, y se muestran los valores de los
registros R16, R18, DDRB, PORTB, PC y los 2 leds prendidos.

Uso del botón Reset:

Para finalizar la ejecución del programa y volver a las condiciones


iniciales, presione el botón reset, de color azul (Restart deep) ubicada
en la barra de herramientas.

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 11


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

Figura 17: Se muestra los resultados

2) Ejecutando el Programa paso a paso (instrucción por instrucción):


Muchas veces es necesario ejecutar el programa instrucción por instrucción, a fin de
examinar sus registros para comprobar un resultado parcial, para ello se utiliza las teclas F6
ó F7. (También se puede usar los botones del menú (Step Over) ó (Step into), de la barra de
herramientas). Esta parte se explicará en clase.
3) La utilización del módulo AvrPUCP-Mega8: se explicará en clase

Ejercicio 1: Active la opción Program memory (ver la siguiente Figura 18) y responda:
 ¿Explique que información brinda cada columna?
 ¿Escriba el código máquina que corresponde a la instrucción ldi R18,$03?
 ¿Cuántos registros de la memoria flash ocupa el programa y que indica el registro PC?
 ¿Qué valor ocupa en el espacio de datos el registro PORTB, DDRB?
 ¿En el programa, La CPU deja de funcionar en la última línea del programa?Explique
 ¿Es posible cambiar la primera instrucción por otra que no sea rjmp?

Figura 18: Lenguaje de máquina y lenguaje ensamblador

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 12


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

Ejercicio 2. Se desea prender 3 diodos leds del puerto D y 4 diodos leds del puerto C.
a) Dibuje el circuito esquemático
b) Escriba el programa y demuestre su funcionamiento con el VMLAB

Ejemplo No, 2:

El objetivo de este proyecto es controlar el encendido y apagado de 2 focos usando un interruptor,


cuando el interruptor está cerrado se prenden los focos. Inicialmente el interruptor esta abierto y los
focos están apagados.
a) Dibuje el circuito esquemático y el diagrama de flujo
b) Escriba el programa y demuestre su funcionamiento con el entorno VMLAB

Desarrollo

Se plantea el siguiente circuito (Figura 19a) y el diagrama de flujo (Figura 19b):

De acuerdo a los pasos anteriores del ejemplo 1, cree un proyecto y edite el siguiente programa para
luego comprobar su funcionamiento.

Ejemplo 2

INICIO

Configurar Puertos
Salida: 2 leds
Entrada: 1 interruptor

Interruptor Leer Puerto de entrada

SI Interruptor NO
a) Circuito esquemático cerrado?

Se puede observar, los diodos leds se prenden cuando


el valor lógico de los puertos PB0 y PB1 toman el valor
de “0” lógico (0 voltios). Cuando el interruptor K0 está Prender Leds Apagar Leds
cerrado el valor de PB7 es 0 voltios y cuando el
interruptor K0 está abierto el pin PB7 es “1” ( 5 voltios).

b) Diagrama de Flujo

Figura 19

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 13


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

Programa:

Archivo que define el circuito esquemático del proyecto (escriba en la ventana *.prj):

D1 VDD N1 ; diodo led D1


D2 VDD N2 ; diodo led D2
R2 N2 PB1
K0 PB7 VSS LATCHED ; interruptor K0 conectado al pin PB7 con una
R3 VDD PB7 10K ; resistencia de 10K, conectado a la fuente VDD.

Ejecución del programa:

 Luego de ensamblar el código y las líneas de texto, active las ventanas del panel de control
y de los puertos, ejecute el programa presionando la tecla F5 ó haciendo un clic en la pestaña

semáforo , observará que una porción del programa se pinta de amarillo, dado que el pin
PB7, aún no es “0”, es decir aún no se cerró el interruptor, por lo tanto los leds están
apagados, ver la Figura 20.

 Cuando se cierra el interruptor (haga clic en el botón K0), PB7 es “0” lógico y el programa
continúa pintándose de amarillo el código faltante, por tanto de acuerdo a la lógica del
programa los diodos leds D1 y D2, se prenden. Ver la Figura 21

Presione repetidas veces el botón K0 y observe que sucede. Resetee el programa y en lugar de K0,
escriba KF y verifique su funcionamiento. Resetee el programa, parar crear un nuevo proyecto.

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 14


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

Figura 20 Se muestra la ejecución del programa con el interruptor abierto

Figura 21: Se muestra la ejecución del programa con el interruptor cerrado

Ejercicio 3
Ejecute nuevamente el programa pero borre antes la palabra latched en el archivo *.prj. con lo cuál
obtendremos el botón (KF) funcionará como un pulsador, es decir sólo se prenderá los leds, cuando
se tenga presionado el botón, si se suelta están apagados.

K0 PB7 VSS ; (se borró la palabra latched).

Ensamble el programa y compruebe su funcionamiento.

Ejercicio 4

El pulsador está conectado a PC4, y los diodos led están conectados a PD6 y PD7.
Cuando el pulsador está presionado se prenden los diodos leds, si se suelta se apagan. Inicialmente
el pulsador se encuentra sin presionar y los leds están apagados. Además, considere que los diodos
leds se prenden cuando la salida por los puertos es “1” lógico, como en el ejemplo 1.
a) Dibuje el circuito esquemático
b) Dibuje el diagrama de flujo.
c) Escriba el programa
d) Demuestre su funcionamiento con el entorno VMLAB

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 15


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

Ejemplo No. 3:

El objetivo de este proyecto es controlar 2 diodos leds usando un pulsador. Los leds, se prenden
luego de presionar y soltar un pulsador con resistencia de 10 K “pull down” conectado a tierra.
Considere:
Entrada: 1 pulsador “pull down”, conectado al pin PC5
Salida: 2 diodos leds conectados a PB0 y PB1
Inicialmente el pulsador se encuentra sin presionar y los leds están apagados.

Desarrollo

Para solucionar el problema dibujamos el circuito esquemático y el diagrama de flujo del problema, lo
cuál mostramos a continuación:

a) Circuito esquemático

b) Diagrama de Flujo

Figura 22: Funcionamiento de un pulsador con “pull down”

A continuación se presenta el archivo de definiciones del circuito y el programa. Demuestre su


funcionamiento.

Ejemplo3.prj
D1 VDD N1 ;define Diodo led D1 en serie con R1 de 330 Oh.
R1 N1 N2 330

D2 VDD N3 ;define diodo led D2 en serie con R2 de 330 Oh.


R2 N3 N4 330

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 16


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

X1 ND2 VDD PB0 N2 ; Definen el inversor NOT, conectado al puerto PB0 y PB1
X2 ND2 VDD PB1 N4

K5 VDD PC5 ; pulsador K5 conectado al pin PC5


R3 PC5 VSS 10K ; usando la resistencia R3 de 10K, conectado a Tierra.

ejemplo3.asm

; *******************************************************************************************
;***** Nombre: Ejemplo 3 *****
;***** Autor: Zenón Cucho M. *****
;***** Horario: 0522 *****
;***** Fecha: marzo 2010 *****
;***** Descripción del programa: al presionar y soltar el pulsador debe prender *****
;***** 2 diodos leds. El pulsador está conectado a PC5 y los diodos Leds a PB0 y PB1 *****
;********************************************************************************************
.include "C:\VMLAB\include\m8def.inc";

.cseg
.org $0
rjmp inicio
inicio:
ldi R16,0b00000011 ; Configuro PB0 y PB1 como salida
out DDRB,R16 ;utilizando el registro DDRB
ldi R18,0 ;inicialmente los leds están apagados
out PORTB,R18

;Entrada: Análisis el pulsador conectado a PC5


;********************************************************************************
PulsadorNoPresionado:
in R20,PINC ;lectura del pulsador, para analizar si está presionado
andi R20,0b00100000 ; ==> Filtro solo el pin PC5.
cpi R20,0 ; analizo el pin 5 (PC5) ¿El Pulsador está presionado?
breq PulsadorNoPresionado ;
;El pulsador está presionado, cuando PC5= 5 voltios (Ver el circuito)

SoltarPulsador:
in r20,PINC ;lectura del pulsador, para ver si soltó el pulsador
andi R20,0b00100000 ; se filtra solo el pin PC5
cpi R20,0 ;¿Soltó el pulsador?
brne SoltarPulsador ; todavía el pulsador sigue presionado, dado que PC5=”1”.
;***********************************************************************************
;Salida
ldi R18,0b00000011 ;Se escribe "1" lógico para prender los leds,
out PORTB,R18
lazo: rjmp lazo

Ejercicio 5

Modifique el problema anterior, para 2 pulsadores al presionar y soltar el pulsador K1 se prende el


diodo Led1 y al presionar y soltar 3 veces consecutivas un segundo pulsador K2 se prende el diodo
Led2. Demuestre su funcionamiento.

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 17


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

Ejemplo No, 4

Uso de las resistencias “pull up” de los puertos E/S

Se tiene 2 interruptores K0 y K1 conectados a los pines PC0 y PC1 del microcontrolador ATmega8,
de tal manera que cuando se cierra K0, se prende el led D1, y cuando se abre K0 se apaga D1. De la
misma manera cuando se cierra el interruptor K1 se prende el diodo D2 y cuando se abre se apaga.
Inicialmente los interruptores están abiertos y los diodos leds están apagados.
Escriba el programa y demuestre su funcionamiento

Desarrollo

Figura 23: Circuito esquemático

En el circuito se observa que los interruptores no tienen ninguna resistencia externa, como en el
ejemplo 2. ¿Cuál es el valor de PC0, cuando el interruptor K0 está abierto? ¿Cuál es el valor de PC1
cuando el interruptor K1 está cerrado?.

Para resolver este problema activaremos por software la resistencia interna que tiene el
microcontrolador en cada pin de sus puertos. ¿Cuántos pines son usados como lineas E/S en el
Atmega8?

¿Qué importancia tiene usar estas resistencias internas que vienen dentro del chip Atmega8?

¿Cómo se activa la resistencia interna “pull up” de un pin E/S?. Procedimiento:

1er. Paso: El pin debe ser declarado como entrada (Por defecto todos los pines son entradas):
Para el circuito, los pines de entrada son PC0 y PC1. La instrucción será:
Ldi R16, 0b00000000
Out DDRC,R16

2do. Paso: Se debe escribir “1”s en el registro PORT


Para el circuito, las instrucciones serán:
Ldi R18,0b00000011
Out PORTC,R18

Completaremos nuestro programa:

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 18


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

Ejemplo4.asm
;*********************************************************************************************
;***** Nombre: Ejemplo 4 *****
;***** Autor: Zenón Cucho M. *****
;***** Horario: 0522 *****
;***** Fecha: agosto 2008 *****
;***** Descripción del programa: Se controla el encendido/apagado *****
;***** de 2 diodos leds con 2 interruptores *****
;******* K0 (PC0) controla a D1(PB0) y K1(PC1) controla a D2(PB1) *****
;*********************************************************************************************

.include "C:\VMLAB\include\m8def.inc";

.cseg
.org $0
rjmp inicio
inicio:

;Se procede a activar las resistencias "pull up" internas del Atmega8
ldi R16,0b00000000 ;se define el puerto C como entrada (interesa DDR0 y DDR1)
out DDRC,R16
ldi R18,0b00000011 ; Se escribe "1" lógico en los bits 0 y 1 del puerto PORTC
out PORTC,R18
;*******************************************************************************************
; se define como salida el bit b0 y b1 del puerto B
ldi R20,$03
out DDRB,R20

;*******************************************************************************************
;lectura de los interruptores K0 y K1
Lectura: in R16,PINC
andi R16,$03 ; se filtra sólo PC0 y PC1
out PORTB,R16 ; muestra el valor de la lectura
rjmp Lectura

********************************************************************************************

Ejemplo4.prj
D1 VDD N1 ;define Diodo led D1
R1 N1 N2 330

D2 VDD N3 ;define diodo led D2


R2 N3 N4 330

X1 ND2 VDD PB0 N2 ; Definen el inversor NOT, conectado al puerto PB0 y PB1
X2 ND2 VDD PB1 N4

K0 PC0 VSS LATCHED ; Define interruptor K0


K1 PC1 VSS LATCHED ; Define interruptor K1

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 19


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

VI IMPLEMENTACION CON LOS MODULOS AvrPUCP-Mega8

6.1 Módulos del Laboratorio

El laboratorio, dispone del Módulo AvrPUCP-Mega8 y Periféricos para la realización de experiencias y


proyectos basados en el microcontrolador ATmega8. Se cuenta con:

 Módulo con el microcontrolador Atmega8 con comunicación serial a una PC, a través del C.I.
MAX232 que contiene la tarjeta. Adicionalmente dispone de un cristal de 8Mz y de un conector
rectangular macho de 10 pines usado para la programación de la memoria flash.

 Módulo de entrada y salida: tiene como entradas: 8 interruptores, 8 pulsadores, y 8 diodos leds
bicolores.

 Módulo con 4 visualizadores de 7segmentos de ánodo común

 Módulo de teclado matricial de 4x4

a) Módulo AvrPUCP-mega8 b) Módulo E/S

c) Módulo de 4 visualizadores de 7 segmentos d) Módulo de teclado matricial

Figura 24: Módulos de enseñanza

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 20


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

El diagrama simplificado del circuito de pulsador, del interruptor y del diodo led, se
muestra a continuación:

Figura 25: Circuito simplificado del módulo E/S

Importante: Los interruptores (en total 8) que dispone el módulo E/S del laboratorio, para que
funcionen correctamente, necesitan que se active por software la resistencia “pull up” interno del
puerto respectivo (Revisar el ejemplo 4).

6.2 El Programador AvrPUCP.

Para programar la memoria flash del microcontrolador, disponemos del entorno de


desarrollo denominado AvrPUCP, ver.0.9.6 o superior, creado por el profesor del curso Ing.
Hugo Pratt Linares.

Con el AvrPUCP, podemos:

• Programar la memoria Flash y Eeprom del microcontrolador.


Para programar la memoria flash, ¡sólo se presiona un botón! Previamente debe
haber seleccionado el archivo ejecutable con formato .hex.
• Leer la memoria flash y la memoria eeprom.
• Programar y leer los fusibles en el modo avanzado. Es decir, cuando trabajemos con
un cristal externo o cuando trabajemos con una frecuencia interna propia del
oscilador del microcontrolador ATmega8.
Por defecto en nuestro laboratorio los fusibles están “quemados” para que el
microcontrolador funcione a 1 Mhz con el circuito RC interno que dispone.
• Tiene más funciones (Revisar el manual del programador o utilizar la opción Ayuda).

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 21


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

6.3 Pasos para la programación de la memoria flash, con el AvrPUCP

1. Conectar los puertos de entrada/salida con los periféricos involucrados en la solución del problema
como los interruptores, pulsadores, leds, etc., usando el cable de E/S que tiene 2 hilos con
conector hembra en ambos extremos (Figura 26a.)

a) Cable de E/S b) Cable de programación ISP

Figura 26

2. Conectar el cable de programación ISP (Figura 26.b) entre el puerto paralelo dB25 de la PC y el
módulo AvrPUCP-Mega8 que dispone de un conector rectangular de 10 pines para ello.

3. Conecte a la fuente de alimentación de 12 VAC (Figura 27.a), el módulo AVRPUCP-Mega8


mediante el cable de fuente de poder (Figura 27.b) (El módulo recibe 12 VAC de la fuente AC y a
través de un regulador de voltaje se obtiene los 5 voltios).

a)Fuente de alimentación de 12VAC


b) Cable de fuente de poder
Figura 27

4. Ejecute el programador AvrPUCP y obtendrá una pantalla similar a la Figura 28.


Presione el botón: Iniciar modo de grabación

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 22


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

Figura 28: Pantalla de trabajo de la herramienta de desarrollo AvrPUCP

El chip del microcontrolador debe ser detectado como se indica en la pantalla de mensajes (ver
también el texto final: sincronizado con el microcontrolador). Si el microcontrolador no es
detectado, aparecerá un mensaje de error; tal como:

Figura 29

Por tanto debe:


1) Revisar que la fuente de alimentación se encuentre encendida
2) Las conexiones del cable ISP estén correctas y bien conectadas
3) Compruebe la dirección correcta del puerto paralelo, consulte al Docente

Por defecto la dirección es $0378


La dirección en modo avanzado es $4020, que se ingresa manualmente.

Y al utilizarlo deberá obtener una pantalla similar a la Figura 28

4) Puede estar defectuoso el cable ISP o el microcontrolador u otro

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 23


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

Figura 30

5. Luego que el microcontrolador ha sido detectado (desactive el modo avanzado), presione el


botón Seleccionar archivo (ver Figura 28) y ubique el archivo de texto ejecutable, con
extensión .hex, en nuestro caso: ejemplo1.hex

6. Presione el botón Grabar Flash, con lo cual inicialmente se borrará el contenido de la


memoria flash y luego aparecerá una barra indicadora del avance de la grabación,
parpadeando un led verde que se encuentra en el Módulo.

Al finalizar de la grabación aparecerá: Se completó la grabación.

Además dejará de parpadear el led.

7. Finalmente para entrar en funcionamiento el microcontrolador debe hacer clic en el botón


Salir del modo de grabación (Ver Figura 28), con lo cuál el microcontrolador estará
ejecutando el programa grabado, para nuestro ejemplo 1, se prenderán los 2 diodos leds.

Problema Propuesto:

Se tiene conectado al microcontrolador ATmega8, 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. Si llega a su valor máximo se repite la cuenta.
Hacer:
a) Diagrama esquemático
b) Diagrama de flujo
c) Programa (Comprobar su funcionamiento)

Material de trabajo para el laboratorio 1, elaborado por:


Zenón Cucho Mendoza
zcucho@pucp.edu.pe

San Miguel, marzo de 2010

IEE 256 SISTEMAS DIGITALES - LABORATORIO SEMESTRE 2010-1 ZENON CUCHO M. 24

También podría gustarte