Está en la página 1de 41

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU

FACULTAD DE CIENCIAS E INGENIERIA


SECCION ELECTRICIDAD Y ELECTRONICA

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRNICA
AREA DE CIRCUITOS Y SITEMAS ELECTRONICOS

MICROCONTROLADORES
ATMEGA8
ZENON CUCHO M.
FRERI ORIHUELA Q.
ROLANDO SNCHEZ P.
LAUREANO RODRGUEZ P.
JIMMY TARRILLO O.

2007-I

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

SESIN 01

INTRODUCCION AL MICONTROLADOR ATMEGA8

PARTE TERICA
DESCRIPCION DEL MICROCONTROLADOR ATMEGA 8
MEMORIA DE PROGRAMAS Y ESPACIO DE MEMORIA DE DATOS
DESCRIPCION DE LOS PUERTOS E/S
PARTE PRCTICA

MANEJO DEL ENTORNO DE DESARROLLO VMLAB:


EDICION, COMPILACION Y EJECUCION DE PROGRAMAS
PROGRAMAS USANDO INTERRUPTORES Y PULSADORES

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

INTRODUCCION AL MICROCONTROLADOR

1.1

Introduccin

El 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. Alguna fuentes estiman que en una casa tpica de E.U se tiene alrededor de 250
microcontroladores.
Los siguientes son algunos campos en los que los microcontroladores tienen gran uso:

En la industria del automvil: Control de motor, alarmas, regulador del servofreno,


dosificador, etc.

En la industria de los electrodomsticos: control de calefacciones, lavadoras, cocinas


elctricas, etc.

En informtica: como controlador de perifricos. Por ejemplo para controlar


impresoras, plotters, cmaras, scanners terminales, unidades de disco, teclados,
comunicaciones (modems), etc.

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

En la industria de imagen y sonido: tratamiento de la imagen y sonido, control de los


motores de arrastre del giradiscos, magnetfono, video, etc.

En la industria, en general se utilizan en:

Regulacin: todas las familias de microcontroladores incorporan en alguna de sus


versiones conversores A/D y D/A, para la regulacin de la velocidad de las mquinas,
de niveles, de temperatura, etc.

Automatismos: La enorme cantidad de lneas de entrada y salidas, y su inmunidad al


ruido le hacen muy valioso para el control secuencial de procesos. Por ejemplo control
de mquinas, herramientas, apertura y cierre automtico de puertas segn condiciones,
plantas empaquetadoras, aparatos de maniobra de ascensores, etc.

Robtica: para control de los motores y captura de seales de los diferentes sensores,
fabricacin de controladores robticos para sistemas automticos, etc.

Instrumentos porttiles compactos:

Radio paginador numrico (beeper)

Planmetro electrnico

Nivelmetro digital

Identificador-probador de circuitos integrados

Tacmetro digital

Panel frontal de un osciloscopio

Controlador de display LCD

Analizador de espectros, etc

Dispositivos autnomos:

Fotocopiadoras

Mquinas de escribir

Selector, Codificador decodificador de TV

Localizador de peces

Telfonos de tarjeta

Telfonos celulares

Cerraduras electrnicas

Sistemas de seguridad

Se emplea tambin en medicina, en aplicaciones militares, edificios inteligentes, etc.

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

1.2

Principales fabricantes

Por lo general los fabricantes de microprocesadores lo son de microcontroladores. Los


fabricantes de microcontroladores son ms de 50, podemos mencionar a:

Atmel
Motorola
Intel
Microchip
NEC
Hitachi
Mitsibishi
Philips
Matsushita
Toshiba
AT&T
Zilog
Siemens
National Semiconductor
etc.

1.3 APARICION Y DESARROLLO DE LOS MICROCONTROLADORES

Breve Esbozo Histrico. La siguiente es una lista cronolgica de los eventos tecnolgicos
ms recientes que han tenido impacto sobre la aparicin y el desarrollo del campo de los
microcontroladores en la electrnica digital.

1971: Intel fabrica el primer microprocesador (el 4004) de tecnologa PMOS. Este era un
microprocesador de 4 bits y fue fabricado por Intel a peticin de Datapoint Corporation
con el objeto de sustituir la CPU de terminales inteligentes fabricadas en esa fecha por
Datapoint mediante circuitera discreta. El dispositivo fabricado por Intel result 10
veces ms lento de lo requerido y Datapoint no lo compr, de esta manera Intel
comenz a comercializarlo. El 4004 poda direccionar slo 4096 (4k) posiciones de
memoria de 4 bits, reconoca 45 instrucciones y poda ejecutar una instruccin en 20
seg en promedio.

1972:

Las aplicaciones del 4004 estaban muy limitadas por su reducida capacidad y
rpidamente Intel desarroll una versin ms poderosa (el 8008), el cual poda

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

manipular bytes completos, por lo cual fue un microprocesador de 8 bits. La memoria


que este poda manejar se increment a 16 kbytes, sin embargo, la velocidad de
operacin continu igual.

1973: Intel lanza al mercado el 8080 el primer microprocesador de tecnologa NMOS, lo cual
permite superar la velocidad de su predecesor (el 8008) por un factor de diez, es decir,
el 8080 puede realizar 500000 operaciones por segundo, adems se increment la
capacidad de direccionamiento de memoria a 64 kbytes. A partir del 8080 de Intel se
produjo una revolucin en el diseo de microomputadoras y varias compaas
fabricantes de circuitos integrados comenzaron a producir microprocesadores. Algunos
ejemplos de los primeros microprocesadores son: el IMP-4 y el SC/MP de National
Semiconductors, el PPS-4 y PPS-8 de Rockwell International, el MC6800 de
Motorola, el F-8 de Fairchild.

1975: Zilog lanza al mercado el Z80, uno de los microprocesadores de 8 bits ms poderosos.
En ese mismo ao, Motorola reduce sus costos con sus microprocesadores 6501 y
6502 (este ltimo adoptado por APPLE para su primera microcomputadora personal).
estos microprocesadores se comercializan en $20 y $25 (dls.USA) respectivamente.
Esto provoca un auge en el mercado de microcomputadoras de uso domstico y un
caos en la proliferacin de lenguajes, sistemas operativos y programas (ningn
producto era compatible con el de otro fabricante).
1976: Surgen las primeras microcomputadoras de un solo chip, que ms tarde se denominarn
microcontroladores. Dos de los primeros microcontroladores, son el 8048 de Intel y
el 6805R2 de Motorola.

198x : En la dcada de los 80's comienza la ruptura entre la evolucin tecnolgica de los
microprocesadores y la de los microcontroladores, Ya que los primeros han ido
incorporando cada vez ms y mejores capacidades para las aplicaciones en donde se
requiere el manejo de grandes volmenes de informacin y por otro lado, los segundos
han incorporado ms capacidades que les permiten la interaccin con el mundo fsico
en tiempo real, adems de mejores desempeos en ambientes de tipo industrial.

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

1.4

ARQUITECTURA DE UN MICROCONTROLADOR
Segn la arquitectura

interna de la memoria de un microcontrolador se puede

clasificar considerando como el CPU accede a los datos e instrucciones, en 2 tipos:

1.4.1 Arquitectura Von Neumann


Fue desarrollada por Jon Von Neumann, se caracteriza por tener una sola memoria
principal donde se almacenan datos e instrucciones de forma indistinta. La CPU se
conecta a travs de un sistema de buses (direcciones, datos y control). Esta arquitectura
es limitada cuando se demanda rapidez.

Memoria

Bus de direcciones
CPU

Instrucciones
+
Datos

Bus de datos

Fig.1.1 Arquitectura Von Neumann

1.4.2 Arquitectura Harvard


Fue desarrollado en Harvard, por Howard Aiken, esta arquitectura se caracteriza por
tener 2 memorias independientes una que contiene slo instrucciones y otra, que
contiene slo datos. Ambas, disponen de sus respectivos sistemas de buses para el
acceso y es posible realizar operaciones de acceso simultneamente en ambas
memorias.

Existe una variante de esta arquitectura que permite el acceso a la tabla de datos desde
la memoria de programas es la Arquitectura de Harvard Modificada. Esta ltima
arquitectura es la dominante en los microcontroladores actuales ya que la memoria de
programas es usualmente ROM, OTP, EPROM o FLASH, mientras que la memoria de

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

datos es usualmente RAM. Por ejemplo las tablas de datos pueden estar en la memoria
de programa sin que sean perdidas cada vez que el sistema es apagado.

Memoria de

Bus de direcciones

Instrucciones

de instrucciones

Bus de direcciones

CPU

de datos

Bus de instrucciones

Memoria
de datos

Bus de datos

Fig. 1.2 Arquitectura Harvard


Se puede observar claramente que las principales ventajas de esta arquitectura son:
a) que el tamao de las instrucciones no esta relacionado con el de los datos, y por lo tanto
puede ser optimizado para que cualquier instruccin ocupe una sola posicin de memoria de
programa,

logrando

as

mayor

velocidad

menor

longitud

de

programa,

b) que el tiempo de acceso a las instrucciones puede superponerse con el de los datos,
logrando una mayor velocidad de operacin.

1.5 TIPOS DE MEMORIA


Memoria RAM (Random Access Memory) Memoria de Acceso Aleatorio) en esta
memoria se guarda los datos que se est utilizando en el momento presente. El
almacenamiento es considerado temporal por que los datos permanecen en ella
mientras la memoria tiene una fuente de alimentacin.

La memoria de programas o de instrucciones contiene una serie de diferentes tipos de


memoria:

Memoria ROM con mscara y es de solo lectura, cuyo contenido se graba durante la
fabricacin del chip. Es aconsejable cuando se precisan cantidades superiores a varios
miles de unidades.

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Memoria OTP

(One Line Programmable) es no volatile y de solo lectura y

programmable una sola vez por el usuario. La grabacin se realiza mediante un


sencillo grabador controlado por una PC.

Memoria EPROM (Erasable Programmable Read Only Memory), pueden borrarse y


grabarse muchas veces. La grabacin se realiza, como en el caso de la memoria OTP.
Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en
su superficie por la que se somete a le EPROM a rayos ultravioleta por algunos
minutos.

Memoria EEPROM (Electrical EPROM) es de slo lectura, programable y borrable


elctricamente. Tanto la programacin como el borrado, se realizan elctricamente
desde el propio grabador y bajo el control programado de un PC, y puede hacerse con
el microcontrolador instalado en el circuito. Es muy cmoda y rpida la operacin de
grabado y la de borrado.

Memoria Flash La memoria Flash es no voltil, de bajo consumo y puede grabarse y


borrarse elctricamente. Funciona como una ROM y una RAM pero consume menos
energa y es ms pequea. La memoria Flash tambin puede programarse en
circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta. adems, es
ms rpida, tiene mayor densidad y tolera ms ciclos de escritura/borrado que la
EEPROM

1.6

Qu microcontrolador elegir?
Sin duda la eleccin del microcontrolador depender de la tarea o proyecto que se tiene
en mente pues los fabricantes como se mencion anteriormente son ms de 50, estos
tienen muchos modelos enfocados a tareas especficas. Esta seleccin deber ir de la
mano con factores econmicos ptimos as como de la idea del controlador incrustado
(embedded controller), el cual es un controlador dedicado a una sola tarea e
incorporado al sistema que gobierna.
Antes de seleccionar un microcontrolador es imprescindible analizar los requisitos de
la aplicacin:
Procesamiento de datos: Cuando se desea realizar clculos complejos en un tiempo
limitado, se debe seleccionar un microcontrolador suficientemente rpido para ello.

Curso de actualizacin de Microcontroladores Atmega8

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Por otro lado, habr que tener en cuenta la precisin de los datos a manejar: si no es
suficiente con un microcontrolador de 8 bits, puede ser necesario acudir a
microcontroladores de 16 32 bits, o incluso a hardware de coma flotante.
Una alternativa ms barata y quiz suficiente es usar libreras para manejar los datos de
alta precisin.
Entrada/Salida: Se debe identificar la cantidad y tipo de seales a controlar. Una vez
realizado este anlisis puede ser necesario aadir perifricos externos o cambiar a otro
microcontrolador ms adecuado a ese sistema.
Consumo: algunos productos que incorporan microcontroladores estn alimentados
con bateras, puede ser que el microcontrolador est trabajando en estado de bajo
consumo pero debe despertar ante la activacin de una seal (por ejemplo una
interrupcin) y ejecutar el programa adecuadamente.
Memoria: para detectar las necesidades de memoria de una aplicacin debemos saber
la cantidad y el tipo de memoria necesaria para esto se debe tener una versin
preliminar (pseudo-cdigo) de la aplicacin y escoger el microcontrolador apropiado.
Ancho de palabra: el criterio de diseo debe ser seleccionar el microcontrolador de
menor ancho de palabra que satisfaga los requerimientos de la aplicacin. Usar un
microcontrolador de 4 bits supondr reducir los costos, mientras que uno de 8 bits
puede ser el ms adecuado si el ancho de los datos es de un byte. Los
microcontroladores de 16 y 32 bits, debido a su elevado costo, deben reservarse para
aplicaciones que requieran altas prestaciones (Entrada/Salida grande o espacio de
direccionamiento muy elevado).
Diseo de la placa: la seleccin de un microcontrolador concreto condicionar el
diseo de la placa de circuitos impresos.

Curso de actualizacin de Microcontroladores Atmega8

10

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

II.
2.1

EL MICROCONTROLADOR ATMEL AVR


Introduccin

ATMEL fabrica los microcontroladores de la familia AVR, esta nueva tecnologa


proporciona todos los beneficios habituales de arquitectura RISC y memoria flash
reprogramable elctricamente. La caracterstica que los identifica a estos microcontroladores
de ATMEL es la memoria flash y eeprom que incorpora. AVR compite con varias familias de
microcontroladores bien establecidas en el mercado, tales como 8051 de Intel, 68HC11 de
motorola y la familia PIC de Microchip. La firma tambin produce y vende varios
subproductos de la popular familia 8051 con la diferencia de que estn basados en la memoria
flash.
El diseo AVR de ATMEL difiere de los dems microcontroladores de 8 bits por tener
mayor cantidad de registros (32) y un conjunto ortogonal de instrucciones. AVR es mucho
mas moderna que su competencia. Por ejemplo, los 8051, 6805 y los PIC, se los arreglan con
un nico acumulador, los 658HC11 y 68HC12 tienen simplemente 2. Esto hace que la
arquitectura AVR sea ms fcil de programar a nivel de lenguaje ensamblador y que sea fcil
de optimizar con un compilador. El gran conjunto de registros disminuye la dependencia
respecto a la memoria, lo cual mejora la velocidad y disminuye las necesidades de
almacenamiento de datos. Adems casi todas las instrucciones se ejecutan en 1 2 ciclos de
reloj versus 5-10 ciclos de reloj para los chips 8051, 6805, 68HC11 y PIC.
Adicionalmente, ATMEL tambin proporciona en lnea el entorno software (AVR
estudio) que permite editar, ensamblar y simular el cdigo fuente, (la explicacin del Avr
Studio 4.0, se explicar ms adelante). Una vez ensamblado y depurado el cdigo fuente del
programa, se transferir el cdigo mquina a la memoria flash del microcontrolador para esto
se debe disponer de otro entorno de desarrollo para programar en forma serial o paralelo la
memoria flash.
Las familias AVR rpidamente han crecido en el mercado y se dispone de las
siguientes categoras:

TINY AVR: son microcontroladores de propsito general con memoria flash hasta
2 Kbytes y 128 bytes de memorias SRAM y EEPROM.

Curso de actualizacin de Microcontroladores Atmega8

11

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

AVR: Microcontroladores de propsito general con 8 Kbytes de memoria flash y


512 bytes de memoria SRAM y EEPROM.

Mega AVR
Memoria flash hasta 256 Kbytes, 4 Kbytes de memoria EEPROM y SRAM

Los tipos de encapsulado del microcontrolador del ATmega presenta desde 28 pines hasta 100
pines en la forma de DIP, TQFP y MLF y su voltaje de alimentacin est en el rango de 1.8 a
5.5 voltios. Se presenta en la figura 2.1 sus caractersticas principales

Fig.2.1 Caractersticas del microcontrolador ATmega AVR

Curso de actualizacin de Microcontroladores Atmega8

12

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

2.2

Descripcin del ATMEGA8

El microcontrolador ATMEGA8(L) es de 8 bits, su procesador presenta caractersticas


avanzadas de tipo RISC, segmentado y arquitectura Harvard.

Fig.2.2 Diagrama de Bloques del Atmega8

La tecnologa RISC (Reduced Instruction Set Computing), o sea presentan instrucciones con
complejidad reducida, a diferencia de otros que tienen tecnologa CISC (Complex Instruccin
Curso de actualizacin de Microcontroladores Atmega8

13

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Set Computing), permite una rpida ejecucin de las instrucciones que se ejecutan en un solo
ciclo de reloj, el ATMEGA 8L consigue obtener 1 MIPS por Mhz, permitiendo al diseador
del sistema optimizar su consumo de energa versus la velocidad de procesamiento). Las
instrucciones en la memoria de programas son ejecutados con estructura segmentada
(pipeling), al mismo tiempo que una instruccin es ejecutado, se realiza la bsqueda de la
prxima instruccin. Este concepto permite habilitar instrucciones paras ser ejecutados con
cada ciclo de reloj.
Las caractersticas principales del microcontrolador (Ver el diagrama de bloques de. la
Fig.2.2) son:

Tiene 32 registros de 8 bits de propsito general. Todos estos registros estn


conectados a la unidad aritmtica lgica (ALU) para un rpido acceso, una
instruccin es ejecutada con uno solo ciclo de reloj.

Tipos de Memoria:

Memoria flash de 8 Kbytes


EEPROM de 512 bytes
SRAM de 1 Kbytes
Caracterstica de los perifricos internos:

2 temporizador/contador de 8 bits con pre-escalador y comparador

1 temporizador/contador de 16 bits con pre-escalador, comparador y

capturador

8 canales de entrada para cada convertidor A/D (en TQFP y MLF)


6 canales A/D de 10 bits y 2 canales A/D de 8 bits

6 canales de entrada para cada convertidor A/D (tipo PDIP)


4 canales A/D de 10 bits
2 canales A/D de 8 bits.

1 USART (mdulo programable para comunicacin serial)


1 mdulo SPI, para interface serial (master/slave)
1 perro guardin
1 comparador analgico
Puertos programables de entrada/salida
Puerto B, con 8 lneas
Curso de actualizacin de Microcontroladores Atmega8

14

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Puerto C, con 7 lneas


Puerto D, con 8 lneas

Velocidad de operacin:
0 8 Mhz (ATMEGA8L)
0-16 MHZ (ATMEGA8)

Voltaje de alimentacin:
2.7 a 5.5 voltios (ATMEGA 8L)
4.5 a 5.5 voltios (ATMEGA8)

Tipo de empaque:
PDIP de 28 pines
TQFP de 32 pines
MLF de 32 pines

Otras caractersticas:
Fuentes de interrupcin internas y externas
Oscilador interno de 1, 2, 4 y 8 Mhz.

Etc.

Se puede configurar su frecuencia de trabajo a travs de su oscilador interno a 1, 2,


4 y 8

MHz (Se pide revisar el manual del Atmega8, pagina No. 28),

tambin el

microcontrolador puede hacer uso de un cristal externo(revisar el manual del Atmega8).

La memoria de programas y de datos estn separadas (arquitectura Harvard). Para la


memoria de programas, el microcontrolador maneja un bus de direcciones de 14 bits, por lo
tanto puede direccionar hasta 4KB, dado que la memoria de programas (Flash de 8Kx8) est
organizado en 4Kx16. Una instruccin tiene un formato de 16 bits.

La memoria de datos tiene su propio bus de direcciones y datos. El bus de datos es de


8. De cuntas lneas comprende el bus de direcciones, para la memoria de datos?.

El Atmega8 adems de poseer los 32 registros de propsito general, tambin dispone


de 3 registros ndices de 16 bits, X , Y, Z, un registro contador de programa PC y un puntero
de pila, SP (stack pointer), tambin de 16 bits. El registro de estado, contiene los
Curso de actualizacin de Microcontroladores Atmega8

8
15

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

indicadores: C (bandera de acarreo), V (bandera de desbordamiento), Z (bandera de resultado


cero), N (bandera negativo), H (bandera de acarreo a la mitad), I (habilitador

de

interrupciones), T (copia, almacena un bit), y S (bit de signo).

2.3

Descripcin de los pines del ATMEGA8L

Fig.2.3 Tipo PDIP

VCC y GND. Son los pines de alimentacin (+5 v) y tierra (0 v).


XTAL1 y XTAL2. Conectores del cristal de reloj externo.
RESET. Corresponde a la lnea de reset (entrada).
AVCC. Es el pin para conectar la fuente de alimentacin al convertidor A/D.
AREF.

Para conectar una tensin de referencia para el conversor A/D interno.

Puerto B(PB7 .. PB0). Compuesto de 8 bits, a cada pin le corresponde un bit, son
bidireccionales con resistencia interna pull up para cada bit.
Alternativamente, cada pin tiene otras funciones alternativas (ver el manual de
Atmega8(L), pgina 56), por ejemplo PB6 y PB7, permiten la conexin a un cristal
externo.

Puerto C(PC0 .. PC5). Tiene 7 bits, bidireccionales con resistencias internas pull up, para
cada bit.

PC6/RESET. El bit 6, puede ser usado como entrada/salida si los fusibles han sido
programados, en caso contrario, PC6 es usado para la entrada Reset. Un bajo nivel en este
pin generar un reset.
Las otras funciones de cada pin del puerto C, son descritos en la pgina 59, del manual
Atmega8(L).

Curso de actualizacin de Microcontroladores Atmega8

16

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Puerto D (PD0..PD7). Son 8 lneas bidireccionales de entrada/salida con resistencias


internas pull up, para cada uno. Los pines del puerto D, tambin tiene otras funciones
descritas en la pgina 61 del manual Atmega8, por ejemplo PD0 y PD1 permiten usar el
perifrico de comunicacin serial USART, PD1

permite la transmisin de datos y PD0,

permite la recepcin de datos.

2.4 La Unidad Central de Procesos (CPU)

La funcin de la CPU es controlar la operacin del microcontrolador, permitiendo la


ejecucin correcta del programa, habilitando el acceso

a las memorias, controlar los

perifricos y manejar las interrupciones.


Para obtener una mejor perfomance y paralelismo, el AVR, utiliza la arquitectura Harvard
gracias a ella se puede acceder de forma simultnea e independiente a la memoria de datos y a
la memoria de instrucciones (se estudiar ms adelante).
Los registros de archivo de acceso rpido contienen 32 registros de propsito general de 8 bits
y son accesados con un solo ciclo de reloj. Esto permite usar un solo ciclo en una operacin
aritmtica-lgica(ALU), por ejemplo en una operacin tpica ALU, 2 operandos son extrados
del archivo de Registros, y la operacin es ejecutada, el resultado es almacenado de nuevo en
el Registro de archivos(Rd), en un solo ciclo de reloj.
Rd Rd + Rr

De los 32 registros de 8 bits 6 pueden ser usados como 3 registros de 16 bits para
direccionamiento indirecto apuntando el espacio de memoria de datos. Estos registros
adicionales son X, Y, y Z, de 16 bits.

La ALU, permite realizar las operaciones aritmticas y lgicas entre registros o entre un
registro y una constante. Luego de una operacin aritmtica, el registro de estados es
modificado para reflejar la informacin acerca del resultado de una operacin.
El flujo de un programa es variado por los saltos condicionales e incondicionales y las
instrucciones de llamada para dirigirse a la nueva direccin en el espacio de memoria. Las
instrucciones del AVR, tiene normalmente un formato de compuesto por una palabra de 16

Curso de actualizacin de Microcontroladores Atmega8

17

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

bits. Cada direccin en la memoria de programas contiene instrucciones de 16 32 bits (el


concepto de llamadas a subrutinas y ejecucin de interrupciones se estudiar ms adelante).

Fig. 2.4 Arquitectura AVR

2.4

El Registro de estados

El registro de estado contiene informacin acerca del resultado de la mas reciente instruccin
ejecutada. Esta operacin puede ser utilizada para alterar el flujo de un programa. El registro
de estados es sobrescrito luego de ejecutarse una operacin en la ALU.

Bit

Lectura/escritura
Valor inicial

R/W
0

R/W
0

R/W
0

R/W
0

R/W R/W R/W


0
0
0

R/W
0

I: Global interrup enable

El bit I permite habilitar las interrupciones con 1 lgico, si el bit es 0, no se aceptar


ningn pedido de interrupcin. Se puede hacer esto usando las instrucciones SEI y CLI.
Curso de actualizacin de Microcontroladores Atmega8

18

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

T: Bit copy storage

La posicin del bit T, permite ser el destino o la fuente de un bit determinado (es como un
lugar temporal para guardar un bit). Para esto se utiliza las instrucciones BLD(bit LoaD) y
BST (Bit Store).
Ejemplo:
Bst

R5,3

; guarda el bit 3 del registro R5 en la bandera T

Bld

R0,4

; carga la el valor de la bandera T dentro del bit 4 del registro R0.

H: Half carry flag

Es la bandera de medio acarreo, se pone a 1 si en una suma de operandos de 8 bits, hay un


acarreo del nible menos significativo, al ms significativo. Se pone a 0 en caso contrario.

S: Sign Bit

El bit S siempre es un or-exclusivo entre la bandera negativa N y la bandera de desborde


V.

V: Twos complement overflow flag

La bandera V se hace 1 cuando el resultado de una instruccin excede el rango de las


operaciones aritmticas, es decir, en el caso de operaciones de 8 bits cuando el resultado de
una operacin no est entre 128 y +127 decimal y en el caso de 16 bits entre 32768 y
+32767 decimal. Esto es algo que sucede usualmente en el complemento a dos.

N: Negative flag

La bandera N, se hace 1 cuando el resultado de una operacin es un nmero negativo, o sea el


bit mas significativo del resultado vale 1. Se pone a 0 en caso contrario.

Z: Zero flag

Se hace 1 cuando el resultado de un operacin es cero, de lo contrario es cero.

C: Carry flag

La bandera de acarreo (C) se hace 1 cuando existe acarreo en el bit de mayor significado de
una operacin aritmtica; de lo contrario es cero.

Curso de actualizacin de Microcontroladores Atmega8

19

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

2.5

Registros de propsito general

Atmega8(L), dispone de 32 registros de propsito general


7
R0

Direccin
0x00

R1

0x01

R2

0x02

...
R13

0x0D

R14

0x0E

R15

0x0F

R16

0x10

R17

0x11

...
R26

0x1A

R27

0x1B

R28

0x1C

R29

0x1D

R30

0x1E

R31

0x1F

Fig.2.5 Registros de propsito general

Se observa en la figura, adems que a cada registro le corresponde una direccin


dentro de las 32 primeras posiciones en el espacio de memoria de datos.
Los registros R26..R31 tienen algunas funciones adicionales.

Registros X, Y, Z

Los registros R26 y R27 forman el registro X de 16 bits, los registros R28 y R29
forman el registro Y de 16 bits, los registros R30 y R31 forman el registro apuntador
Z de 16 bits.
XH
7

XL
0

R27

R26
YH

YL

Curso de actualizacin de Microcontroladores Atmega8

20

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

R29

R28
ZH

ZL

R31

R30

Fig.2.6 Los Registros X, Y, Z

Puntero de Pila

La pila es el rea de espacio de memoria, utilizado temporalmente para guardar y


recuperar datos y/o direcciones cuando el CPU est ejecutando una subrutina programada o
una interrupcin. El puntero de pila apunta (almacena la direccin) a la prxima direccin
libre de la pila y que decrementa su valor en uno cada vez que se almacena un dato(de un
byte) en ella, incrementndolo en uno cuando se retira este valor(de un byte). En el caso que
se guarda la direccin de retorno cuando se atiende a una subrutina o una interrupcin el
puntero de pila es decrementado en 2 y luego de ejecutarse la ltima instruccin de retorno de
la subrutina, el puntero de pila es incrementado en 2.

El puntero de pila en el AVR es implementado con 2 registros de 8 bits en el espacio


de memoria E/S. El programador debe darle el valor inicial al puntero de pila en la memoria
de datos SRAM por encima de la direccin $60,
Bit

2.6

15

14

13

12

11

10

SP15

SP14

SP13

SP12

SP11

SP10

SP9

SP8

SPH

SP7

SP6

SP5

SP4

SP3

SP2

SP1

SP0

SPL

La arquitectura Harvard y RISC

El microcontrolador ATmega8

utiliza la

arquitectura conocida como Harvard,

consiste simplemente en un esquema en el que el CPU est conectado a dos memorias por
intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones
del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y
es llamada Memoria de Datos. Ambos buses son totalmente independientes y pueden ser de
Curso de actualizacin de Microcontroladores Atmega8

21

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

distintos anchos. En cuanto a sus instrucciones es de tipo RISC (Reduced Instruccin Set
Computer), esto permite que el set de instrucciones y el bus de la memoria de programa
pueden disearse de manera tal que todas las instrucciones tengan una sola posicin de
memoria de programa de la misma longitud. Adems, como los buses son independientes, el
CPU del microcontrolador puede estar accediendo a los datos para completar la ejecucin de
una instruccin, y al mismo tiempo estar leyendo la prxima instruccin a ejecutar. En
resumen Atmega8, maneja:

130 instrucciones, la mayora se ejecuta en un solo ciclo de reloj

32 registros de propsito general de 8 bits

Hasta 16 MIPS si trabaja a 16 Mhz.

2.7 Memoria de programa y memoria de datos

El microcontrolador ATmega8 define 2 tipos de espacio de memoria, el espacio de la


memoria de datos y el espacio de memoria de programas. Adems tiene una memoria
EEPROM.
La memoria flash del Atmega8 tiene una capacidad de 8K x 8, las instrucciones son de 16
bits o 32 bits, por tanto esta memoria es organizado como 4Kx16 bits. Para mayor seguridad
el espacio de la memoria flash(memoria de programas) est dividido en 2 reas: arranque y de
aplicacin. Para acceder al espacio comprendido entre 0 y 4095 ($FFF) direcciones, el
tamao del registro contador de programa (PC) ser de 12 bits.

Curso de actualizacin de Microcontroladores Atmega8

22

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Fig.2.8 Memoria de programas

Memoria de datos
En la memoria de datos residen los registros de propsito general (R0...R31), los
registros de E/S y los registros de la SRAM interna.
El espacio de EEPROM consta de 512 bytes, donde opcionalmente se pueden guardar
datos que no se pierden al desconectar la alimentacin.

La siguiente figura muestra la organizacin de la memoria SRAM del Atmega8

Curso de actualizacin de Microcontroladores Atmega8

23

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Fig.2.9 Mapa de la memoria de datos

Curso de actualizacin de Microcontroladores Atmega8

24

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

2.8.

Descripcin de los Puertos de 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 4.1)

Fig.4.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, y

el registro PINx, .

Curso de actualizacin de Microcontroladores Atmega8

25

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

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 4.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, pagina 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 si 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 si es escrito con 0 lgico el pin toma un valor bajo(cero).

Curso de actualizacin de Microcontroladores Atmega8

26

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Fig.4.2 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:
DDxn

PORTxn

PUD

E/S

Pull-up

Comentario

Tri-state

(en SFIOR)
0

Entrada

No

Entrada

Yes

Entrada

No

Tri-state

Salida

No

Salida baja

Salida

No

Salida alta

Tabla: Configuracin de los pines del puerto.

Curso de actualizacin de Microcontroladores Atmega8

27

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

PRACTICA N 1
MANEJO DE PUERTOS ENTRADA/SALIDA
I.

OBJETIVO
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

II. MATERIALES
1 mdulo de entrenamiento AvrPUCP -Mega8.
1 Mdulo de entrada/salida.
1 Cable de programacin
1 computadora personal.
Entorno de desarrollo VMLAB
Cables de conexin

III. PROCEDIMIENTO

Ejemplo 1
Se desea escribir un programa que permita prender 2 leds, que estn conectados a 2 pines
de un puerto del microcontrolador
Planteamiento

El microcontrolador ATmega8L tiene 23 pines programables E/S. Para la solucin


utilizaremos PB0 y PB1 de acuerdo al siguiente Circuito esquemtico:

Para desarrollar el programa utilizaremos el entorno VMLAB y los mdulos de


entrenamiento del laboratorio, que explicaremos a continuacin.

Curso de actualizacin de Microcontroladores Atmega8

28

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

IV.

MANEJO DEL VMLAB (VISUAL MICRO LAB)

4.1

Creacin del primer proyecto: Edicin y Compilacin


El problema planteado tiene como objetivo encender 2 leds, conectados a los pines PB0 y PB1
del microcontrolador ATmega8.
Procedimiento:

1er Paso:
Ejecutar el entorno VMLAB, y del men principal, escoger Proyect, luego la opcin New
Proyect, y aparecen las siguientes figuras:

Figura 1. Barra de herramientas del men principal del VMLAB

Figura 2. Pantalla para definir el nuevo proyecto


Curso de actualizacin de Microcontroladores Atmega8

29

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

2do.paso:
Defina el proyecto con los parmetros correctos, activando las pestaas respectivas:
1. Project name and location: C:\CursoAtmega8\ejemplo1.prj
2. Luego seleccione el cdigo del microcontrolador: Atmega8
3. Elija el modo estndar de compilacin : Standart micro manufacturer assembler/linker (por
defecto ya est marcado)

4. Aada el archivo ejemplo1.asm en la caja de archivos (Code files list), haciendo clic en
el botn Add this:

Figura 3: Definicin de un proyecto.

5. Una vez completados todos los datos se hace clic en el botn OK, y aparecer 3 ventanas
de trabajo con lneas de texto predeterminadas (ver figura 4):

Ejemplo1.asm: Aqu escribiremos nuestro programa en lenguaje ensamblador


Ejemplo1.prj: Esta ventana nos permite dibujar(mediante lneas de texto definidos)
el hardware del circuito, para los cules debemos conocer la sintaxis de cada
elemento.
Ventana de mensajes: Nos mostrar si hubo o no errores en la compilacin tanto del
software como del hardware del proyecto.

Curso de actualizacin de Microcontroladores Atmega8

30

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Figura 4: Ventanas de trabajo (*.hex y *.prj) y de mensajes

3er. Paso:
Definiendo el hardware del proyecto
Para construir nuestro circuito debemos usar la ayuda del men principal Help, en su contenido
muestra la lista de componentes que conforman toda la librera del hardware (abrir el enlace
Hardware component) y aparece la figura siguiente. ( Debemos abrir el componente en particular y
estudiar la sintaxis respectiva)
Ejemplos:
(a) Para definir el diodo led se debe tener que el nodo siempre est conectado a la fuente VDD.
La sintaxis es la siguiente:
D{1-8} VDD (Nombre del nodo)
Ejemplo:
D1 VDD NODO1 ; el nodo del diodo est conectado a la fuente VDD y el ctodo al nodo 1.

(b) En la lista de componentes no existe la puerta inversora, pero s existe la puerta NAND de 2 entradas
con la cual se formar el inversor. La sintaxis de la compuerta NAND es la siguiente:
Curso de actualizacin de Microcontroladores Atmega8

31

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

X(<nombre de la compuerta>) ND2 <entrada1><entrada2><salida>


Ejemplo:
X1 ND2 <nodo2><nodo3><nodo4>

( c) La resistencia tiene la siguiente sintaxis:


R(<nombre de la resistencia>) <nodo1><nodo2> <valor>
Ejemplo para definir una resistencia de 180 ohmios entre 2 nodos N1 y N2:
R1 N1 N2 180.

Figura 5: Se muestra una lista de componentes electrnicos que dispone VMLAB

En el archivo de trabajo ejemplo1.prj, se observa algunas directivas y comentarios creados por


defecto.
Curso de actualizacin de Microcontroladores Atmega8

32

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Para nuestro caso se agrega las siguientes lneas de texto que definen el hardware del proyecto: 2 leds
con 2 resistencias en serie conectados a los pines PB0 y PB1.
D1 VDD N1
R1 N1 PB0 330
D2 VDD N2
R2 N2 PB1 330

;Diodo led1 conectado a PB0 usando la resistencia R1

; Diodo led2 conectado a PB1 usando la resistencia R2

Luego de escribir estas lneas de texto se compila (presionar la tecla F9), apareciendo una carita feliz
en la ventana de mensajes. Si algo no est correcto debemos corregir y compilar otra vez.

Figura 6: Se muestra las lneas de texto que define el Hardware del proyecto y su compilacin.

Cuarto Paso:
EDICIN DEL PROGRAMA
Abra la ventana de trabajo ejemplo1.hex, para escribir el programa
(Antes de escribir el siguiente programa borre todas las lneas de texto que aparecen)
Algoritmo del programa:
Se configura 2 pines del puerto B como salida
Se prende 2 leds con nivel bajo.
A continuacin se muestra el programa con las directivas necesarias del VMLAB, que permitir
compilar y simular su funcionamiento
Curso de actualizacin de Microcontroladores Atmega8

33

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Figura 7. Se muestra el programa en leguaje ensamblador

Quinto Paso:
ENSAMBLAJE Y DEPURACIN DEL PROGRAMA
Para ensamblar el programa presione la tecla F9 puede utilizar la opcin (haciendo un clic) que se
muestra en la siguiente figura.

Build (F9)

De la barra de herramientas

Figura 8: Forma de ensamblar un programa

Curso de actualizacin de Microcontroladores Atmega8

34

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Si al momento de compilar no existe ningn error aparecer en la ventana de mensajes un smbolo


similar a una carita feliz, con un texto Succes! All ready to run, como en la siguiente figura
simplificada (Si hay errores se debe corregir el programa):

Figura 9

4.2. USO DEL SIMULADOR


Paso 1:
Para observar nuestros resultados activaremos las siguientes opciones de la barra de herramientas
View:
Panel de control: Permite observar los leds, interruptores/pulsadores, potencimetro
I/O ports : Para observar las modificaciones de los puertos B, C y D y sus registros asociados.
Register/flags: Para ver los registros de propsito general (R0 a R31) y de control, Flags, PC

Figura 10. Se observan los leds, los registros y los puertos que presenta el VMLAB

Curso de actualizacin de Microcontroladores Atmega8

35

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Paso 2:
Podemos simular el funcionamiento del proyecto de 2 maneras:
1) Ejecutando el Programa paso a paso (instruccin por instruccin).
Se utiliza las teclas F6 F7.(tambin se puede usar los botones del men (Step Over) (Step
into))
2) Ejecutando todo el programa .
Se utiliza la tecla F5 los botones del men GO/Continue

Go (F5)
De la barra de herramientas
Figura 11

Obtenindose el siguiente resultado: se comprueba los valores de los registros R20,R16,


DDRB, PORTB y se prenden 2 leds, como se observa en la siguiente figura:

Figura 12: Se observa los resultados obtenidos

Curso de actualizacin de Microcontroladores Atmega8

36

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Ejercicio 1:
Modifique su programa para prender los leds, cuando los pines de salida del
microcontrolador tienen un nivel alto 1, para esto en el archivo ejemplo1.prj, introduzca
el uso de la compuerta NAND de 2 entradas para simular un inversor y luego haga los
cambios necesarios en el programa. Use la librera del VMLAB para la sintaxis respectiva.

Figura No.13

Ejemplo No, 2:
El objetivo de este proyecto es controlar 2 leds usando un interruptor.
Condiciones:
El interruptor est conectado al pin PB7, usando una resistencia pull up (resistencia a fuente de 5 V.)
Los diodos leds estn conectados a los pines PB0 y PB7. Se prenden cuando se cierra el interruptor.
Circuito esquemtico:

Figura No.14
Programa: De acuerdo a los pasos anteriores, compruebe el funcionamiento del siguiente programa,
creando un nuevo proyecto en el entorno VMLAB:
; ******************************************************
Curso de actualizacin de Microcontroladores Atmega8

37

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA
; * Laboratorio de sistemas digitales
; * El Programa prende 2 leds, mediante un interruptor
; *

Entrada: 1 pulsador, conectado al pin PB7

; *

Salida: 2 leds, conectados 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 y PB7 como entrada

out

DDRB,R16

in

R16,PINB

andi

R16,0b10000000 ; ==> Filtro solo el pin PB7.

cpi

R16,0b00000000 ;

breq

SWcerrado

ldi

R16,0b11111111 ; Si el interruptor esta abierto los leds estn

out

PORTB,R16

rjmp

lazo

;utilizando el registro DDRB

lazo:
; Leo los pines del puerto B, pero solo interesa

PB7

analizo si el interruptor est cerrado PB7=0?

; Si el interruptor esta cerrado, prendo los leds


;apagados
; retorno para una nueva lectura

SWcerrado:
ldi

R16,0b11111100 ;Se escribe "0" lgico para prender los leds

out

PORTB,R16

rjmp

lazo

Archivo que define el circuito esquemtico del proyecto:


D1

VDD

N1

; diodo led D1 conectado al pin PB0 usando la Resistencia R1 de 330

R1

N1

PB0

330;

D2

VDD

N2

R2

N2

PB1

330

K0

PB7

VSS

R3

VDD

PB7

diodo led D2 conectado a PB1 usando la Resistencia R2 de 330

latched
10K

; interruptor K0 conectado al pin PB7 con una

; resistencia de 10K, conectado a la fuente VDD.

Curso de actualizacin de Microcontroladores Atmega8

38

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Ejercicio 2
Ejecute nuevamente el programa pero borre la palabra latched en el archivo *.prj
Con lo que tendremos un pulsador.
Ensamble el programa y compruebe su funcionamiento usando el control panel del VMLAB

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
Considere:
Entrada:
1 pulsador conectado al pin PC5
Salida:
2 diodos leds conectados a PB0 y PB1
Circuito esquemtico:

Figura No.15

Diagrama de flujo
Dibujar el diagrama de flujo

Curso de actualizacin de Microcontroladores Atmega8

39

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

;Programa

; ******************************************************
;El programa prende 2 leds, luego de presionar y soltar un pulsador
;Entrada: 1 pulsador conectado al pin PC5
;Salida: 2 leds conectados 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

ldi

R18,0b11111111 ;inicialmente los leds estn apagados

out

PORTB,R18

;utilizando el registro DDRB

;el pulsador est 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 ;

breq

PulsadorNoPresionado ;

analizo el pin 5 (PC5) El Pulsador est presionado?

;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 ; todava el pulsador sigue presionado


;Se solt el pulsador
; Luego de presionar y soltar el pulsador se prende los 2 leds
ldi

R18,0b11111100 ;Se escribe "0" lgico para prender los leds

out

PORTB,R18

;(ver el circuito)
lazo: rjmp

lazo

Curso de actualizacin de Microcontroladores Atmega8

40

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU


FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Definicin del circuito esquemtico(*.prj):


D1

VDD

N1

; diodo D1 conectado al pin PB0 usando la Resistencia R1 de 330

R1

N1

PB0

D2

VDD

N2

R2

N2

PB1

330

K3

VDD

PC5

R3

PC5

VSS

330;
diodo led D2 conectado a PB1 usando la Resistencia R2 de 330

; pulsador conectado al pin PC5


10K

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

Material de trabajo elaborado por:


Zenn Cucho Mendoza
Diciembre de 2006

Curso de actualizacin de Microcontroladores Atmega8

41

También podría gustarte