SlideShare a Scribd company logo
1 of 41
Download to read offline
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 ELECTRÓNICA
                 AREA DE CIRCUITOS Y SITEMAS ELECTRONICOS




       MICROCONTROLADORES

                                      ATMEGA8

ZENON CUCHO M.
FRERI ORIHUELA Q.
ROLANDO SÁNCHEZ P.
LAUREANO RODRÍGUEZ P.




                                           2007-I




Curso de actualización de Microcontroladores Atmega8        1
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA




                                       SESIÓN 01



            INTRODUCCION AL MICONTROLADOR ATMEGA8



PARTE TEÓRICA


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


PARTE PRÁCTICA

           •   MANEJO DEL ENTORNO DE DESARROLLO VMLAB:
           •   EDICION, COMPILACION Y EJECUCION DE PROGRAMAS
           •   PROGRAMAS USANDO INTERRUPTORES Y PULSADORES




Curso de actualización de Microcontroladores Atmega8           2
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA


                   INTRODUCCION AL MICROCONTROLADOR


1.1       Introducción


El microcontrolador es un circuito integrado de muy alta escala de integración que contiene
las partes funcionales de un computador:
      •   CPU (Central Processor Unit o Unidad de Procesamiento Central)
      •   Memorias volátiles (RAM), para datos
      •   Memorias no volátiles( ROM, PROM, EPROM) para escribir el programa
      •   Líneas de entrada y salida para comunicarse con el mundo exterior.
      •   Algunos periféricos (comunicación serial, temporizador, convertidor A/D, etc)


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


¿Que no hace el microcontrolador?
Las aplicaciones de un microcontrolador         son tan inmensas que el límite es la propia
imaginación del usuario. Estos microcontroladores están en el auto, en el televisor, en el
teléfono, en una impresora, en un horno de microondas, en un transbordador espacial, en un
juguete, etc. Alguna fuentes estiman que en una casa típica 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 automóvil: Control de motor, alarmas, regulador del servofreno,
          dosificador, etc.
      •   En la industria de los electrodomésticos: control de calefacciones, lavadoras, cocinas
          eléctricas, etc.
      •   En informática: como controlador de periféricos. Por ejemplo para controlar
          impresoras, plotters, cámaras, scanners terminales, unidades de disco, teclados,
          comunicaciones (modems), etc.




Curso de actualización de Microcontroladores Atmega8                                          3
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, magnetófono, video, etc.
En la industria, en general se utilizan en:
   •   Regulación: todas las familias de microcontroladores incorporan en alguna de sus
       versiones conversores A/D y D/A, para la regulación de la velocidad de las máquinas,
       de niveles, de temperatura, etc.
   •   Automatismos: La enorme cantidad de líneas de entrada y salidas, y su inmunidad al
       ruido le hacen muy valioso para el control secuencial de procesos. Por ejemplo control
       de máquinas, herramientas, apertura y cierre automático de puertas según condiciones,
       plantas empaquetadoras, aparatos de maniobra de ascensores, etc.
   •   Robótica: para control de los motores y captura de señales de los diferentes sensores,
       fabricación de controladores robóticos para sistemas automáticos, etc.
Instrumentos portátiles compactos:
   •   Radio paginador numérico (beeper)
   •   Planímetro electrónico
   •   Nivelímetro digital
   •   Identificador-probador de circuitos integrados
   •   Tacómetro digital
   •   Panel frontal de un osciloscopio
   •   Controlador de display LCD
   •   Analizador de espectros, etc
Dispositivos autónomos:
   •   Fotocopiadoras
   •   Máquinas de escribir
   •   Selector, Codificador decodificador de TV
   •   Localizador de peces
   •   Teléfonos de tarjeta
   •   Teléfonos celulares
   •   Cerraduras electrónicas
   •   Sistemas de seguridad
Se emplea también en medicina, en aplicaciones militares, edificios inteligentes, etc.



Curso de actualización de Microcontroladores Atmega8                                       4
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 más 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 Histórico. La siguiente es una lista cronológica de los eventos tecnológicos
más recientes que han tenido impacto sobre la aparición y el desarrollo del campo de los
microcontroladores en la electrónica digital.


1971: Intel fabrica el primer microprocesador (el 4004) de tecnología PMOS. Este era un
        microprocesador de 4 bits y fue fabricado por Intel a petición de Datapoint Corporation
        con el objeto de sustituir la CPU de terminales inteligentes fabricadas en esa fecha por
        Datapoint mediante circuitería discreta. El dispositivo fabricado por Intel resultó 10
        veces más lento de lo requerido y Datapoint no lo compró, de esta manera Intel
        comenzó a comercializarlo. El 4004 podía direccionar sólo 4096 (4k) posiciones de
        memoria de 4 bits, reconocía 45 instrucciones y podía ejecutar una instrucción en 20
        µseg en promedio.


1972:       Las aplicaciones del 4004 estaban muy limitadas por su reducida capacidad y
        rápidamente Intel desarrolló una versión más poderosa (el 8008), el cual podía

Curso de actualización de Microcontroladores Atmega8                                          5
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 podía manejar se incrementó a 16 kbytes, sin embargo, la velocidad de
       operación continuó igual.


1973: Intel lanza al mercado el 8080 el primer microprocesador de tecnología 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, además se incrementó la
       capacidad de direccionamiento de memoria a 64 kbytes. A partir del 8080 de Intel se
       produjo una revolución en el diseño de microomputadoras y varias compañías
       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 más poderosos.
       En ese mismo año, 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 doméstico y un
       caos en la proliferación de lenguajes, sistemas operativos y programas (ningún
       producto era compatible con el de otro fabricante).
1976: Surgen las primeras microcomputadoras de un solo chip, que más tarde se denominarán
       microcontroladores. Dos de los primeros microcontroladores, son el 8048 de Intel y
       el 6805R2 de Motorola.


198x : En la década de los 80's comienza la ruptura entre la evolución tecnológica de los
       microprocesadores y la de los microcontroladores, Ya que los primeros han ido
       incorporando cada vez más y mejores capacidades para las aplicaciones en donde se
       requiere el manejo de grandes volúmenes de información y por otro lado, los segundos
       han incorporado más capacidades que les permiten la interacción con el mundo físico
       en tiempo real, además de mejores desempeños en ambientes de tipo industrial.




Curso de actualización de Microcontroladores Atmega8                                         6
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

1.4    ARQUITECTURA DE UN MICROCONTROLADOR
       Según 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 través de un sistema de buses (direcciones, datos y control). Esta arquitectura
       es limitada cuando se demanda rapidez.




                                                           Memoria


                                   Bus de direcciones     Instrucciones
                     CPU                                      +
                                                             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 sólo instrucciones y otra, que
       contiene sólo datos. Ambas, disponen de sus respectivos sistemas de buses para el
       acceso y es posible realizar operaciones de acceso simultáneamente 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 actualización de Microcontroladores Atmega8                                          7
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                   Bus de direcciones   Memoria
       Instrucciones     de instrucciones       CPU               de datos         de datos



                       Bus de instrucciones                    Bus de datos




                                  Fig. 1.2 Arquitectura Harvard

Se puede observar claramente que las principales ventajas de esta arquitectura son:

a) que el tamaño de las instrucciones no esta relacionado con el de los datos, y por lo tanto
puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de
programa,     logrando      así    mayor      velocidad   y   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 operación.


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 alimentación.


    La memoria de programas o de instrucciones contiene una serie de diferentes tipos de
    memoria:
   •   Memoria ROM con máscara y es de solo lectura, cuyo contenido se graba durante la
       fabricación del chip. Es aconsejable cuando se precisan cantidades superiores a varios
       miles de unidades.




Curso de actualización de Microcontroladores Atmega8                                            8
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 grabación se realiza mediante un
           sencillo grabador controlado por una PC.
      •    Memoria EPROM (Erasable Programmable Read Only Memory), pueden borrarse y
           grabarse muchas veces. La grabación 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 sólo lectura, programable y borrable
           eléctricamente. Tanto la programación como el borrado, se realizan eléctricamente
           desde el propio grabador y bajo el control programado de un PC, y puede hacerse con
           el microcontrolador instalado en el circuito. Es muy cómoda y rápida la operación de
           grabado y la de borrado.
      •    Memoria Flash La memoria Flash es no volátil, de bajo consumo y puede grabarse y
           borrarse eléctricamente. Funciona como una ROM y una RAM pero consume menos
           energía y es más pequeña. La memoria Flash también puede programarse “en
           circuito”, es decir, sin tener que sacar el circuito integrado de la tarjeta. además, es
           más rápida, tiene mayor densidad y tolera más ciclos de escritura/borrado que la
           EEPROM




1.6       ¿Qué microcontrolador elegir?
           Sin duda la elección del microcontrolador dependerá de la tarea o proyecto que se tiene
           en mente pues los fabricantes como se mencionó anteriormente son más de 50, estos
           tienen muchos modelos enfocados a tareas específicas. Esta selección deberá ir de la
           mano con factores económicos ó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 aplicación:
      • Procesamiento de datos: Cuando se desea realizar cálculos complejos en un tiempo
           limitado, se debe seleccionar un microcontrolador suficientemente rápido para ello.


Curso de actualización de Microcontroladores Atmega8                                             9
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

       Por otro lado, habrá que tener en cuenta la precisión 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 más barata y quizá suficiente es usar librerías para manejar los datos de
       alta precisión.
      • Entrada/Salida: Se debe identificar la cantidad y tipo de señales a controlar. Una vez
       realizado este análisis puede ser necesario añadir periféricos externos o cambiar a otro
       microcontrolador más adecuado a ese sistema.
      • Consumo: algunos productos que incorporan microcontroladores están alimentados
       con baterías, puede ser que el microcontrolador esté trabajando en estado de bajo
       consumo pero debe “despertar” ante la activación de una señal (por ejemplo una
       interrupción) y ejecutar el programa adecuadamente.
      • Memoria: para detectar las necesidades de memoria de una aplicación debemos saber
       la cantidad y el tipo de memoria necesaria para esto se debe tener una versión
       preliminar (pseudo-código) de la aplicación y escoger el microcontrolador apropiado.
      • Ancho de palabra: el criterio de diseño debe ser seleccionar el microcontrolador de
       menor ancho de palabra que satisfaga los requerimientos de la aplicación. Usar un
       microcontrolador de 4 bits supondrá reducir los costos, mientras que uno de 8 bits
       puede ser el más 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).
      • Diseño de la placa: la selección de un microcontrolador concreto condicionará el
       diseño de la placa de circuitos impresos.




Curso de actualización de Microcontroladores Atmega8                                         10
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA




II.             EL MICROCONTROLADOR ATMEL AVR

2.1      Introducción


         ATMEL fabrica los microcontroladores de la familia AVR, esta nueva tecnología
proporciona todos los beneficios habituales de arquitectura RISC y memoria flash
reprogramable eléctricamente. La característica 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 también produce y vende varios
subproductos de la popular familia 8051 con la diferencia de que están basados en la memoria
flash.
         El diseño AVR de ATMEL difiere de los demás 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 más fácil de programar a nivel de lenguaje ensamblador y que sea fácil
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. Además 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 también proporciona en línea el entorno software (AVR
estudio) que permite editar, ensamblar y simular el código fuente, (la explicación del Avr
Studio 4.0, se explicará más adelante). Una vez ensamblado y depurado el código fuente del
programa, se transferirá el código máquina 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 rápidamente han crecido en el mercado y se dispone de las
siguientes categorías:
         •   TINY AVR: son microcontroladores de propósito general con memoria flash hasta
             2 Kbytes y 128 bytes de memorias SRAM y EEPROM.

Curso de actualización de Microcontroladores Atmega8                                      11
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA


       •   AVR: Microcontroladores de propósito 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 alimentación está en el rango de 1.8 a
5.5 voltios. Se presenta en la figura 2.1 sus características principales




                 Fig.2.1 Características del microcontrolador ATmega AVR




Curso de actualización de Microcontroladores Atmega8                                    12
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA




2.2    Descripción del ATMEGA8


       El microcontrolador ATMEGA8(L) es de 8 bits, su procesador presenta características
avanzadas de tipo RISC, segmentado y arquitectura Harvard.




                                Fig.2.2 Diagrama de Bloques del Atmega8




La tecnología RISC (Reduced Instruction Set Computing), o sea presentan instrucciones con
complejidad reducida, a diferencia de otros que tienen tecnología CISC (Complex Instrucción


Curso de actualización de Microcontroladores Atmega8                                    13
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Set Computing), permite una rápida ejecución de las instrucciones que se ejecutan en un solo
ciclo de reloj, el ATMEGA 8L consigue obtener 1 MIPS por Mhz, permitiendo al diseñador
del sistema optimizar su consumo de energía versus la velocidad de procesamiento). Las
instrucciones en la memoria de programas son ejecutados con estructura segmentada
(pipeling), al mismo tiempo que una instrucción es ejecutado, se realiza la búsqueda de la
próxima instrucción. Este concepto permite de habilitar instrucciones paras ser ejecutados con
cada ciclo de reloj.
Las características principales del microcontrolador (Ver el diagrama de bloques de. la
Fig.2.2) son:
       •   Tiene 32 registros de 8 bits de propósito general. Todos estos registros están
           conectados a la unidad aritmética lógica (ALU) para un rápido acceso, una
           instrucción es ejecutada con uno solo ciclo de reloj.
       •   Tipos de Memoria:

Memoria flash de 8 Kbytes

EEPROM de 512 bytes

SRAM de 1 Kbytes
    • Característica de los periféricos 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 (módulo programable para comunicación serial)
            • 1 módulo SPI, para interface serial (master/slave)
            • 1 perro guardián
            • 1 comparador analógico
            • Puertos programables de entrada/salida
                • Puerto B, con 8 líneas

Curso de actualización de Microcontroladores Atmega8                                       14
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA


                • Puerto C, con 7 líneas
                • Puerto D, con 8 líneas
            •   Velocidad de operación:
                  0 – 8 Mhz (ATMEGA8L)
                  0-16 MHZ (ATMEGA8)
            •   Voltaje de alimentación:
                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 características:
                Fuentes de interrupción internas y externas
                Oscilador interno de 1, 2, 4 y 8 Mhz.
            •   Etc.


        Se puede configurar su frecuencia de trabajo a través de su oscilador interno a 1, 2,
4 y 8     MHz (Se pide revisar el manual del Atmega8, pagina No. 28),               también el
microcontrolador puede hacer uso de un cristal externo(revisar el manual del Atmega8).


        La memoria de programas y de datos están 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 instrucción 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 cuántas líneas comprende el bus de direcciones, para la memoria de datos?.


        El Atmega8 además de poseer los 32 registros de propósito general, también 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), también de 16 bits. El registro de estado,      contiene los   8


Curso de actualización de Microcontroladores Atmega8                                        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      Descripción de los pines del ATMEGA8L




                                     Fig.2.3 Tipo PDIP



• VCC y GND. Son los pines de alimentación (+5 v) y tierra (0 v).
• XTAL1 y XTAL2. Conectores del cristal de reloj externo.
• RESET. Corresponde a la línea de reset (entrada).
• AVCC. Es el pin para conectar la fuente de alimentación al convertidor A/D.
• AREF.           Para conectar una tensión 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), página 56), por ejemplo PB6 y PB7, permiten la conexión 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 página 59, del manual
      Atmega8(L).

Curso de actualización de Microcontroladores Atmega8                                            16
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA


• Puerto D (PD0..PD7). Son 8 líneas bidireccionales de entrada/salida con resistencias
   internas pull up, para cada uno. Los pines del puerto D, también tiene otras funciones
   descritas en la página 61 del manual Atmega8, por ejemplo PD0 y PD1 permiten usar el
   periférico de comunicación serial USART, PD1           permite la transmisión de datos y PD0,
   permite la recepción de datos.


2.4 La Unidad Central de Procesos (CPU)


        La función de la CPU es controlar la operación del microcontrolador, permitiendo la
ejecución correcta del programa, habilitando el acceso           a las memorias, controlar los
periféricos 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 simultánea e independiente a la memoria de datos y a
la memoria de instrucciones (se estudiará más adelante).
Los registros de archivo de acceso rápido contienen 32 registros de propósito general de 8 bits
y son accesados con un solo ciclo de reloj. Esto permite usar un solo ciclo en una operación
aritmética-lógica(ALU), por ejemplo en una operación típica ALU, 2 operandos son extraídos
del archivo de Registros, y la operación 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 aritméticas y lógicas entre registros o entre un
registro y una constante. Luego de una operación aritmética, el registro de estados es
modificado para reflejar la información acerca del resultado de una operación.
El flujo de un programa es variado por los saltos condicionales e incondicionales y las
instrucciones de llamada para dirigirse a la nueva dirección en el espacio de memoria. Las
instrucciones del AVR, tiene normalmente un formato de compuesto por una palabra de 16




Curso de actualización de Microcontroladores Atmega8                                          17
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

bits. Cada dirección en la memoria de programas contiene instrucciones de 16 ó 32 bits (el
concepto de llamadas a subrutinas y ejecución de interrupciones se estudiará más adelante).




                                            Fig. 2.4 Arquitectura AVR




2.4      El Registro de estados


El registro de estado contiene información acerca del resultado de la mas reciente instrucción
ejecutada. Esta operación puede ser utilizada para alterar el flujo de un programa. El registro
de estados es sobrescrito luego de ejecutarse una operación en la ALU.


Bit                               7    6      5     4    3     2    1    0
                                  I    T      H     S    V     N    Z    C
Lectura/escritura              R/W    R/W    R/W   R/W   R/W R/W R/W       R/W
Valor inicial                   0      0      0     0    0   0   0        0


•     I: Global interrup enable
El bit I permite habilitar las interrupciones con “1” lógico, si el bit es “0”, no se aceptará
ningún pedido de interrupción. Se puede hacer esto usando las instrucciones SEI y CLI.

Curso de actualización de Microcontroladores Atmega8                                          18
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA


•     T: Bit copy storage
La posición 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 más 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: Two’s complement overflow flag
La bandera V se hace 1 cuando el resultado de una instrucción excede el rango de las
operaciones aritméticas, es decir, en el caso de operaciones de 8 bits cuando el resultado de
una operación 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 operación es un número 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 operación 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 operación aritmética; de lo contrario es cero.




Curso de actualización de Microcontroladores Atmega8                                            19
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA




2.5    Registros de propósito general


       Atmega8(L), dispone de 32 registros de propósito general
                       7                     0     Dirección
                                 R0               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 propósito general


       Se observa en la figura, además que a cada registro le corresponde una dirección
       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                    XL
                           7           0     7              0
                           R27                   R26
                                 YH                    YL

Curso de actualización de Microcontroladores Atmega8                                     20
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

                         7                   0        7            0
                         R29                            R28
                                   ZH                         ZL
                         7                   0        7            0
                         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 interrupción. El puntero de pila apunta (almacena la dirección) a la próxima dirección
libre de la pila y que decrementa su valor en uno cada vez que se almacena un dato(de un
byte) en ella, incrementándolo en uno cuando se retira este valor(de un byte). En el caso que
se guarda la dirección de retorno cuando se atiende a una subrutina o una interrupción el
puntero de pila es decrementado en 2 y luego de ejecutarse la última instrucción 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 dirección $60,


Bit                 15       14         13       12           11   10        9     8
                  SP15    SP14      SP13         SP12     SP11     SP10     SP9   SP8   SPH
                   SP7       SP6    SP5          SP4       SP3     SP2      SP1   SP0   SPL
                    7         6         5         4            3        2    1      0



2.6    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 actualización 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 Instrucción Set
Computer), esto permite que el set de instrucciones y el bus de la memoria de programa
pueden diseñarse de manera tal que todas las instrucciones tengan una sola posición de
memoria de programa de la misma longitud. Además, como los buses son independientes, el
CPU del microcontrolador puede estar accediendo a los datos para completar la ejecución de
una instrucción, y al mismo tiempo estar leyendo la próxima instrucción a ejecutar. En
resumen Atmega8, maneja:

   •   130 instrucciones, la mayoría se ejecuta en un solo ciclo de reloj

   •   32 registros de propósito 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. Además 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
aplicación. Para acceder al espacio comprendido entre 0 y 4095 ($FFF) direcciones, el
tamaño del registro contador de programa (PC) será de 12 bits.




Curso de actualización 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 propósito 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 alimentación.


       La siguiente figura muestra la organización de la memoria SRAM del Atmega8




Curso de actualización 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 actualización de Microcontroladores Atmega8                24
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA




2.8.    Descripción de los Puertos de Entrada y Salida


Los puertos son un conjunto de líneas (pines) programables como entrada ó salida que
dispone el microcontrolador para comunicarse con el mundo exterior.
El microcontrolador Atmega8(L), tiene 3 puertos de E/S (Puertos B, C D). Todos los pines de
cada puerto son programables como entrada o salida de datos         configurando el registro
asociado respectivo.
Cuando se programa el funcionamiento de un puerto como entrada tenemos que habilitar o
deshabilitar las resistencias pull-up internas. Cada pin del puerto tiene independiente su
resistencia pull-up como una resistencia invariante hacia la fuente de voltaje, además tiene 2
diodos de protección uno conectado a Vcc y el otro conectado a GND. (ver figura 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 actualización de Microcontroladores Atmega8                                       25
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA




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


Los registros PINx son de sólo lectura, mientras que los registros PORTx y DDRx son de
lectura/escritura. Adicionalmente, el bit “Pull-up Disable” – PUD, en el registro SFIOR
inhabilita la función 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 están indicados por los Registros DDRx E/S,
PORTxE/S y PINxE/S.(ver Register Descripción for E/S ports, pagina 63 del manual
Atmega8(L)).
El bit DDxn del Registro DDRx, establece la dirección de este pin. Si DDxn es escrito con
“1” lógico, Pxn es configurado como un pin de salida. Si en DDxn es escrito un “0”, Pxn es
configurado como un pin de entrada.


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


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




Curso de actualización 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 deshabilitarán las resistencias pull-
up de todos los puertos. El funcionamiento de la configuración de los pines de un puerto se
resume en la siguiente tabla:
    DDxn          PORTxn            PUD                E/S         Pull-up   Comentario
                                 (en SFIOR)
      0               0              X            Entrada            No       Tri-state
      0               1              0            Entrada           Yes
      0               1              1            Entrada            No       Tri-state
      1               0              X             Salida            No      Salida baja
      1               1              X             Salida            No      Salida alta
                           Tabla: Configuración de los pines del puerto.




Curso de actualización 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
    básicas.
    Aprender a manejar el entorno de desarrollo VMLAB
    Aprender a grabar la memoria flash del microcontrolador

II. MATERIALES
    • 1 módulo de entrenamiento “AvrPUCP -Mega8”.
    • 1 Módulo de entrada/salida.
    • 1 Cable de programación
    • 1 computadora personal.
    • Entorno de desarrollo VMLAB
    • Cables de conexión

III. PROCEDIMIENTO


   Ejemplo 1

   Se desea escribir un programa que permita prender 2 leds, que están conectados a 2 pines
   de un puerto del microcontrolador

   Planteamiento

       •   El microcontrolador ATmega8L tiene 23 pines programables E/S. Para la solución
           utilizaremos PB0 y PB1 de acuerdo al siguiente Circuito esquemático:




       •   Para desarrollar el programa utilizaremos el entorno VMLAB y los módulos de
           entrenamiento del laboratorio, que explicaremos a continuación.



Curso de actualización 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    Creación del primer proyecto: Edición y Compilación
       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 opción 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 actualización 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 parámetros correctos, activando las pestañas respectivas:

       1. Project name and location: C:CursoAtmega8ejemplo1.prj
       2. Luego seleccione el código del microcontrolador: Atmega8
       3. Elija el modo estándar de compilación : Standart micro manufacturer assembler/linker (por
            defecto ya está marcado)
       4. Añada el archivo ejemplo1.asm en la caja de archivos (Code files list), haciendo clic en
          el botón Add this:




                               Figura 3: Definición de un proyecto.


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

           •   Ejemplo1.asm: Aquí escribiremos nuestro programa en lenguaje ensamblador
           •   Ejemplo1.prj: Esta ventana nos permite dibujar(mediante líneas de texto definidos)
               el hardware del circuito, para los cuáles debemos conocer la sintaxis de cada
               elemento.
           •   Ventana de mensajes: Nos mostrará si hubo o no errores en la compilación tanto del
               software como del hardware del proyecto.

Curso de actualización 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 librería 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 cátodo 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 actualización 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 electrónicos que dispone VMLAB




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

Curso de actualización 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 líneas 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              ;Diodo led1 conectado a PB0 usando la resistencia R1
        R1 N1 PB0 330

        D2 VDD N2
        R2 N2 PB1 330         ; Diodo led2 conectado a PB1 usando la resistencia R2




Luego de escribir estas líneas 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 líneas de texto que define el Hardware del proyecto y su compilación.


Cuarto Paso:

EDICIÓN DEL PROGRAMA

    Abra la ventana de trabajo ejemplo1.hex, para escribir el programa
    (Antes de escribir el siguiente programa borre todas las líneas de texto que aparecen)

    Algoritmo del programa:
       Se configura 2 pines del puerto B como salida
       Se prende 2 leds con nivel bajo.
    A continuación se muestra el programa con las directivas necesarias del VMLAB, que permitirá
    compilar y simular su funcionamiento

Curso de actualización 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 DEPURACIÓN DEL PROGRAMA

Para ensamblar el programa presione la tecla F9 ó puede utilizar la opción (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 actualización 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 ningún error aparecerá en la ventana de mensajes un símbolo
    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, potenciómetro
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 propósito 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 actualización 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 (instrucción por instrucción).
      Se utiliza las teclas F6 ó F7.(también 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

Obteniéndose 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 actualización 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 librería 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 están conectados a los pines PB0 y PB7. Se prenden cuando se cierra el interruptor.

Circuito esquemático:




                                             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 actualización 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:VMLABincludem8def.inc";


.cseg
.org $0
        rjmp inicio
inicio:
        ldi    R16,0b00000011 ; Configuro PB0 y PB1 como salida y PB7 como entrada
        out    DDRB,R16           ;utilizando el registro DDRB


lazo:
        in     R16,PINB         ; Leo los pines del puerto B, pero solo interesa        PB7
        andi   R16,0b10000000 ; ==> Filtro solo el pin PB7.
        cpi    R16,0b00000000 ;       analizo si el interruptor está cerrado ¿PB7=0?
        breq   SWcerrado          ; Si el interruptor esta cerrado, prendo los leds
        ldi    R16,0b11111111 ; Si el interruptor esta abierto los leds están
                                    ;apagados
        out    PORTB,R16
        rjmp   lazo                ; retorno para una nueva lectura


SWcerrado:
        ldi    R16,0b11111100 ;Se escribe "0" lógico para prender los leds
        out    PORTB,R16
        rjmp   lazo




Archivo que define el circuito esquemático 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       ;    diodo led D2 conectado a PB1 usando la Resistencia R2 de 330Ω
 R2     N2     PB1     330
 K0     PB7    VSS      latched     ; interruptor K0 conectado al pin PB7 con una
 R3     VDD    PB7     10K          ; resistencia de 10K, conectado a la fuente VDD.




Curso de actualización 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 esquemático:




                                            Figura No.15

Diagrama de flujo

Dibujar el diagrama de flujo




Curso de actualización 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:VMLABincludem8def.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,0b11111111 ;inicialmente los leds están apagados
        out    PORTB,R18


;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 ;     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
;Se soltó el pulsador


; Luego de presionar y soltar el pulsador se prende los 2 leds
        ldi    R18,0b11111100 ;Se escribe "0" lógico para prender los leds
                                  ;(ver el circuito)
        out    PORTB,R18
lazo: rjmp     lazo




Curso de actualización de Microcontroladores Atmega8                              40
PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU
FACULTAD DE CIENCIAS E INGENIERIA
SECCION ELECTRICIDAD Y ELECTRONICA

Definición del circuito esquemático(*.prj):

    D1   VDD    N1     ; diodo D1 conectado al pin PB0 usando la Resistencia R1 de 330Ω
    R1   N1     PB0     330;
    D2   VDD    N2      ;     diodo led D2 conectado a PB1 usando la Resistencia R2 de 330Ω
    R2   N2     PB1     330


    K3   VDD    PC5      ; pulsador conectado al pin PC5
    R3   PC5    VSS     10K      ; usando la resistencia R3 de 10K, conectado a Tierra.




.


Material de trabajo elaborado por:
Zenón Cucho Mendoza
Diciembre de 2006




Curso de actualización de Microcontroladores Atmega8                                          41

More Related Content

What's hot

135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-pptCarlos Martir
 
Microcontroladores ver2.0
Microcontroladores ver2.0Microcontroladores ver2.0
Microcontroladores ver2.0ITS EL ORO
 
04 procesadores y microcontroladores
04 procesadores y microcontroladores04 procesadores y microcontroladores
04 procesadores y microcontroladoresMario Ramirez
 
PIC MICROCONTROLADORES
PIC MICROCONTROLADORESPIC MICROCONTROLADORES
PIC MICROCONTROLADORESada_laura
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresDidier Tec
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores PicAndres
 
Introduccion al msp430
Introduccion al msp430Introduccion al msp430
Introduccion al msp430Cesar MARTI
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladorestecautind
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladoresXavier Solis
 
Introducción PICs
Introducción PICsIntroducción PICs
Introducción PICsguest0ce7f8
 
Microcontroladores
MicrocontroladoresMicrocontroladores
MicrocontroladoresJuan Anaya
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladoresceiv
 
Microcontroladores
MicrocontroladoresMicrocontroladores
MicrocontroladoresJaque Beciez
 

What's hot (20)

Microcontrolador At-Mega
Microcontrolador  At-MegaMicrocontrolador  At-Mega
Microcontrolador At-Mega
 
FAMILIA MICROCONTROLADORES
FAMILIA MICROCONTROLADORESFAMILIA MICROCONTROLADORES
FAMILIA MICROCONTROLADORES
 
135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt
 
Microcontroladores ver2.0
Microcontroladores ver2.0Microcontroladores ver2.0
Microcontroladores ver2.0
 
04 procesadores y microcontroladores
04 procesadores y microcontroladores04 procesadores y microcontroladores
04 procesadores y microcontroladores
 
PIC MICROCONTROLADORES
PIC MICROCONTROLADORESPIC MICROCONTROLADORES
PIC MICROCONTROLADORES
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores Pic
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
Introduccion al msp430
Introduccion al msp430Introduccion al msp430
Introduccion al msp430
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladores
 
Resumen microcontroladores
Resumen microcontroladoresResumen microcontroladores
Resumen microcontroladores
 
Introducción PICs
Introducción PICsIntroducción PICs
Introducción PICs
 
Familia De Los Microcontroladores Pic
Familia De Los Microcontroladores PicFamilia De Los Microcontroladores Pic
Familia De Los Microcontroladores Pic
 
Tipos de microcontroladores
Tipos de microcontroladoresTipos de microcontroladores
Tipos de microcontroladores
 
Introducción
IntroducciónIntroducción
Introducción
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 

Similar to Sesion 1 atmega8

microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.pptFreddyEspejo3
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1ddarioooo
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxALEJANDRALUCEROCHAMB
 
U1 microcontroladores
U1 microcontroladoresU1 microcontroladores
U1 microcontroladoresSENA
 
U1 Microcontroladores Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores  Diseño de Productos Electrónicos con MicrocontroladoresU1 Microcontroladores  Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores Diseño de Productos Electrónicos con MicrocontroladoresSENA
 
HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.
HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.
HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.Juan Anaya
 
1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladores1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladoresOmar Felis
 
1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladores1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladoresCataldo Asaro B
 
Curso plataforma arduino......
Curso plataforma arduino......Curso plataforma arduino......
Curso plataforma arduino......Carlos Mendez
 
Introducción a los microprocesadores j. sainz
Introducción a los microprocesadores   j. sainzIntroducción a los microprocesadores   j. sainz
Introducción a los microprocesadores j. sainzWilfredy Inciarte
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELSANTIAGO PABLO ALBERTO
 
Diapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdf
Diapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdfDiapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdf
Diapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdfjorgejvc777
 
Historia de microprocesadores
Historia de microprocesadoresHistoria de microprocesadores
Historia de microprocesadoresMary Diaz
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Microcontrolador wiki
Microcontrolador wikiMicrocontrolador wiki
Microcontrolador wikiclides2006
 
Microcontrolador pic
Microcontrolador picMicrocontrolador pic
Microcontrolador picleslydavila
 

Similar to Sesion 1 atmega8 (20)

microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.ppt
 
Micro1
Micro1Micro1
Micro1
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1
 
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docxS14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
S14 GUIA LAB 09 PROYECTO DE MICROCONTROLADORES PIC.docx
 
U1 microcontroladores
U1 microcontroladoresU1 microcontroladores
U1 microcontroladores
 
U1 Microcontroladores Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores  Diseño de Productos Electrónicos con MicrocontroladoresU1 Microcontroladores  Diseño de Productos Electrónicos con Microcontroladores
U1 Microcontroladores Diseño de Productos Electrónicos con Microcontroladores
 
HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.
HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.
HISTORIA Y ORGANIZACIÓN BÁSICA DEL MICROCONTROLADOR.
 
Micro1.ppt
Micro1.pptMicro1.ppt
Micro1.ppt
 
1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladores1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladores
 
1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladores1 introduccion a_los_ucontroladores
1 introduccion a_los_ucontroladores
 
Curso plataforma arduino......
Curso plataforma arduino......Curso plataforma arduino......
Curso plataforma arduino......
 
Introducción a los microprocesadores j. sainz
Introducción a los microprocesadores   j. sainzIntroducción a los microprocesadores   j. sainz
Introducción a los microprocesadores j. sainz
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMEL
 
Diapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdf
Diapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdfDiapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdf
Diapositiva de Estudio: ppt-introduccion-a-los-microcontroladores_compress.pdf
 
Historia de microprocesadores
Historia de microprocesadoresHistoria de microprocesadores
Historia de microprocesadores
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Lista de cotejo
Lista de cotejoLista de cotejo
Lista de cotejo
 
Microcontrolador wiki
Microcontrolador wikiMicrocontrolador wiki
Microcontrolador wiki
 
T1 lozado e (digital ii)
T1 lozado e (digital ii)T1 lozado e (digital ii)
T1 lozado e (digital ii)
 
Microcontrolador pic
Microcontrolador picMicrocontrolador pic
Microcontrolador pic
 

Sesion 1 atmega8

  • 1. 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 ELECTRÓNICA AREA DE CIRCUITOS Y SITEMAS ELECTRONICOS MICROCONTROLADORES ATMEGA8 ZENON CUCHO M. FRERI ORIHUELA Q. ROLANDO SÁNCHEZ P. LAUREANO RODRÍGUEZ P. 2007-I Curso de actualización de Microcontroladores Atmega8 1
  • 2. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA SESIÓN 01 INTRODUCCION AL MICONTROLADOR ATMEGA8 PARTE TEÓRICA DESCRIPCION DEL MICROCONTROLADOR ATMEGA 8 MEMORIA DE PROGRAMAS Y ESPACIO DE MEMORIA DE DATOS DESCRIPCION DE LOS PUERTOS E/S PARTE PRÁCTICA • MANEJO DEL ENTORNO DE DESARROLLO VMLAB: • EDICION, COMPILACION Y EJECUCION DE PROGRAMAS • PROGRAMAS USANDO INTERRUPTORES Y PULSADORES Curso de actualización de Microcontroladores Atmega8 2
  • 3. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA INTRODUCCION AL MICROCONTROLADOR 1.1 Introducción El microcontrolador es un circuito integrado de muy alta escala de integración que contiene las partes funcionales de un computador: • CPU (Central Processor Unit o Unidad de Procesamiento Central) • Memorias volátiles (RAM), para datos • Memorias no volátiles( ROM, PROM, EPROM) para escribir el programa • Líneas de entrada y salida para comunicarse con el mundo exterior. • Algunos periféricos (comunicación serial, temporizador, convertidor A/D, etc) Es decir el microcontrolador es un computador integrado en un solo chip. Integrar todos estos elementos en un solo circuito integrado a significado desarrollar aplicaciones importantes en la industria al economizar materiales, tiempo y espacio. ¿Que no hace el microcontrolador? Las aplicaciones de un microcontrolador son tan inmensas que el límite es la propia imaginación del usuario. Estos microcontroladores están en el auto, en el televisor, en el teléfono, en una impresora, en un horno de microondas, en un transbordador espacial, en un juguete, etc. Alguna fuentes estiman que en una casa típica 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 automóvil: Control de motor, alarmas, regulador del servofreno, dosificador, etc. • En la industria de los electrodomésticos: control de calefacciones, lavadoras, cocinas eléctricas, etc. • En informática: como controlador de periféricos. Por ejemplo para controlar impresoras, plotters, cámaras, scanners terminales, unidades de disco, teclados, comunicaciones (modems), etc. Curso de actualización de Microcontroladores Atmega8 3
  • 4. 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, magnetófono, video, etc. En la industria, en general se utilizan en: • Regulación: todas las familias de microcontroladores incorporan en alguna de sus versiones conversores A/D y D/A, para la regulación de la velocidad de las máquinas, de niveles, de temperatura, etc. • Automatismos: La enorme cantidad de líneas de entrada y salidas, y su inmunidad al ruido le hacen muy valioso para el control secuencial de procesos. Por ejemplo control de máquinas, herramientas, apertura y cierre automático de puertas según condiciones, plantas empaquetadoras, aparatos de maniobra de ascensores, etc. • Robótica: para control de los motores y captura de señales de los diferentes sensores, fabricación de controladores robóticos para sistemas automáticos, etc. Instrumentos portátiles compactos: • Radio paginador numérico (beeper) • Planímetro electrónico • Nivelímetro digital • Identificador-probador de circuitos integrados • Tacómetro digital • Panel frontal de un osciloscopio • Controlador de display LCD • Analizador de espectros, etc Dispositivos autónomos: • Fotocopiadoras • Máquinas de escribir • Selector, Codificador decodificador de TV • Localizador de peces • Teléfonos de tarjeta • Teléfonos celulares • Cerraduras electrónicas • Sistemas de seguridad Se emplea también en medicina, en aplicaciones militares, edificios inteligentes, etc. Curso de actualización de Microcontroladores Atmega8 4
  • 5. 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 más 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 Histórico. La siguiente es una lista cronológica de los eventos tecnológicos más recientes que han tenido impacto sobre la aparición y el desarrollo del campo de los microcontroladores en la electrónica digital. 1971: Intel fabrica el primer microprocesador (el 4004) de tecnología PMOS. Este era un microprocesador de 4 bits y fue fabricado por Intel a petición de Datapoint Corporation con el objeto de sustituir la CPU de terminales inteligentes fabricadas en esa fecha por Datapoint mediante circuitería discreta. El dispositivo fabricado por Intel resultó 10 veces más lento de lo requerido y Datapoint no lo compró, de esta manera Intel comenzó a comercializarlo. El 4004 podía direccionar sólo 4096 (4k) posiciones de memoria de 4 bits, reconocía 45 instrucciones y podía ejecutar una instrucción en 20 µseg en promedio. 1972: Las aplicaciones del 4004 estaban muy limitadas por su reducida capacidad y rápidamente Intel desarrolló una versión más poderosa (el 8008), el cual podía Curso de actualización de Microcontroladores Atmega8 5
  • 6. 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 podía manejar se incrementó a 16 kbytes, sin embargo, la velocidad de operación continuó igual. 1973: Intel lanza al mercado el 8080 el primer microprocesador de tecnología 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, además se incrementó la capacidad de direccionamiento de memoria a 64 kbytes. A partir del 8080 de Intel se produjo una revolución en el diseño de microomputadoras y varias compañías 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 más poderosos. En ese mismo año, 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 doméstico y un caos en la proliferación de lenguajes, sistemas operativos y programas (ningún producto era compatible con el de otro fabricante). 1976: Surgen las primeras microcomputadoras de un solo chip, que más tarde se denominarán microcontroladores. Dos de los primeros microcontroladores, son el 8048 de Intel y el 6805R2 de Motorola. 198x : En la década de los 80's comienza la ruptura entre la evolución tecnológica de los microprocesadores y la de los microcontroladores, Ya que los primeros han ido incorporando cada vez más y mejores capacidades para las aplicaciones en donde se requiere el manejo de grandes volúmenes de información y por otro lado, los segundos han incorporado más capacidades que les permiten la interacción con el mundo físico en tiempo real, además de mejores desempeños en ambientes de tipo industrial. Curso de actualización de Microcontroladores Atmega8 6
  • 7. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA 1.4 ARQUITECTURA DE UN MICROCONTROLADOR Según 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 través de un sistema de buses (direcciones, datos y control). Esta arquitectura es limitada cuando se demanda rapidez. Memoria Bus de direcciones Instrucciones CPU + 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 sólo instrucciones y otra, que contiene sólo datos. Ambas, disponen de sus respectivos sistemas de buses para el acceso y es posible realizar operaciones de acceso simultáneamente 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 actualización de Microcontroladores Atmega8 7
  • 8. 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 Bus de direcciones Memoria Instrucciones de instrucciones CPU de datos de datos Bus de instrucciones Bus de datos Fig. 1.2 Arquitectura Harvard Se puede observar claramente que las principales ventajas de esta arquitectura son: a) que el tamaño de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y 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 operación. 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 alimentación. La memoria de programas o de instrucciones contiene una serie de diferentes tipos de memoria: • Memoria ROM con máscara y es de solo lectura, cuyo contenido se graba durante la fabricación del chip. Es aconsejable cuando se precisan cantidades superiores a varios miles de unidades. Curso de actualización de Microcontroladores Atmega8 8
  • 9. 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 grabación se realiza mediante un sencillo grabador controlado por una PC. • Memoria EPROM (Erasable Programmable Read Only Memory), pueden borrarse y grabarse muchas veces. La grabación 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 sólo lectura, programable y borrable eléctricamente. Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un PC, y puede hacerse con el microcontrolador instalado en el circuito. Es muy cómoda y rápida la operación de grabado y la de borrado. • Memoria Flash La memoria Flash es no volátil, de bajo consumo y puede grabarse y borrarse eléctricamente. Funciona como una ROM y una RAM pero consume menos energía y es más pequeña. La memoria Flash también puede programarse “en circuito”, es decir, sin tener que sacar el circuito integrado de la tarjeta. además, es más rápida, tiene mayor densidad y tolera más ciclos de escritura/borrado que la EEPROM 1.6 ¿Qué microcontrolador elegir? Sin duda la elección del microcontrolador dependerá de la tarea o proyecto que se tiene en mente pues los fabricantes como se mencionó anteriormente son más de 50, estos tienen muchos modelos enfocados a tareas específicas. Esta selección deberá ir de la mano con factores económicos ó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 aplicación: • Procesamiento de datos: Cuando se desea realizar cálculos complejos en un tiempo limitado, se debe seleccionar un microcontrolador suficientemente rápido para ello. Curso de actualización de Microcontroladores Atmega8 9
  • 10. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA Por otro lado, habrá que tener en cuenta la precisión 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 más barata y quizá suficiente es usar librerías para manejar los datos de alta precisión. • Entrada/Salida: Se debe identificar la cantidad y tipo de señales a controlar. Una vez realizado este análisis puede ser necesario añadir periféricos externos o cambiar a otro microcontrolador más adecuado a ese sistema. • Consumo: algunos productos que incorporan microcontroladores están alimentados con baterías, puede ser que el microcontrolador esté trabajando en estado de bajo consumo pero debe “despertar” ante la activación de una señal (por ejemplo una interrupción) y ejecutar el programa adecuadamente. • Memoria: para detectar las necesidades de memoria de una aplicación debemos saber la cantidad y el tipo de memoria necesaria para esto se debe tener una versión preliminar (pseudo-código) de la aplicación y escoger el microcontrolador apropiado. • Ancho de palabra: el criterio de diseño debe ser seleccionar el microcontrolador de menor ancho de palabra que satisfaga los requerimientos de la aplicación. Usar un microcontrolador de 4 bits supondrá reducir los costos, mientras que uno de 8 bits puede ser el más 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). • Diseño de la placa: la selección de un microcontrolador concreto condicionará el diseño de la placa de circuitos impresos. Curso de actualización de Microcontroladores Atmega8 10
  • 11. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA II. EL MICROCONTROLADOR ATMEL AVR 2.1 Introducción ATMEL fabrica los microcontroladores de la familia AVR, esta nueva tecnología proporciona todos los beneficios habituales de arquitectura RISC y memoria flash reprogramable eléctricamente. La característica 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 también produce y vende varios subproductos de la popular familia 8051 con la diferencia de que están basados en la memoria flash. El diseño AVR de ATMEL difiere de los demás 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 más fácil de programar a nivel de lenguaje ensamblador y que sea fácil 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. Además 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 también proporciona en línea el entorno software (AVR estudio) que permite editar, ensamblar y simular el código fuente, (la explicación del Avr Studio 4.0, se explicará más adelante). Una vez ensamblado y depurado el código fuente del programa, se transferirá el código máquina 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 rápidamente han crecido en el mercado y se dispone de las siguientes categorías: • TINY AVR: son microcontroladores de propósito general con memoria flash hasta 2 Kbytes y 128 bytes de memorias SRAM y EEPROM. Curso de actualización de Microcontroladores Atmega8 11
  • 12. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA • AVR: Microcontroladores de propósito 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 alimentación está en el rango de 1.8 a 5.5 voltios. Se presenta en la figura 2.1 sus características principales Fig.2.1 Características del microcontrolador ATmega AVR Curso de actualización de Microcontroladores Atmega8 12
  • 13. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA 2.2 Descripción del ATMEGA8 El microcontrolador ATMEGA8(L) es de 8 bits, su procesador presenta características avanzadas de tipo RISC, segmentado y arquitectura Harvard. Fig.2.2 Diagrama de Bloques del Atmega8 La tecnología RISC (Reduced Instruction Set Computing), o sea presentan instrucciones con complejidad reducida, a diferencia de otros que tienen tecnología CISC (Complex Instrucción Curso de actualización de Microcontroladores Atmega8 13
  • 14. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA Set Computing), permite una rápida ejecución de las instrucciones que se ejecutan en un solo ciclo de reloj, el ATMEGA 8L consigue obtener 1 MIPS por Mhz, permitiendo al diseñador del sistema optimizar su consumo de energía versus la velocidad de procesamiento). Las instrucciones en la memoria de programas son ejecutados con estructura segmentada (pipeling), al mismo tiempo que una instrucción es ejecutado, se realiza la búsqueda de la próxima instrucción. Este concepto permite de habilitar instrucciones paras ser ejecutados con cada ciclo de reloj. Las características principales del microcontrolador (Ver el diagrama de bloques de. la Fig.2.2) son: • Tiene 32 registros de 8 bits de propósito general. Todos estos registros están conectados a la unidad aritmética lógica (ALU) para un rápido acceso, una instrucción es ejecutada con uno solo ciclo de reloj. • Tipos de Memoria: Memoria flash de 8 Kbytes EEPROM de 512 bytes SRAM de 1 Kbytes • Característica de los periféricos 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 (módulo programable para comunicación serial) • 1 módulo SPI, para interface serial (master/slave) • 1 perro guardián • 1 comparador analógico • Puertos programables de entrada/salida • Puerto B, con 8 líneas Curso de actualización de Microcontroladores Atmega8 14
  • 15. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA • Puerto C, con 7 líneas • Puerto D, con 8 líneas • Velocidad de operación: 0 – 8 Mhz (ATMEGA8L) 0-16 MHZ (ATMEGA8) • Voltaje de alimentación: 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 características: Fuentes de interrupción internas y externas Oscilador interno de 1, 2, 4 y 8 Mhz. • Etc. Se puede configurar su frecuencia de trabajo a través de su oscilador interno a 1, 2, 4 y 8 MHz (Se pide revisar el manual del Atmega8, pagina No. 28), también el microcontrolador puede hacer uso de un cristal externo(revisar el manual del Atmega8). La memoria de programas y de datos están 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 instrucción 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 cuántas líneas comprende el bus de direcciones, para la memoria de datos?. El Atmega8 además de poseer los 32 registros de propósito general, también 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), también de 16 bits. El registro de estado, contiene los 8 Curso de actualización de Microcontroladores Atmega8 15
  • 16. 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 Descripción de los pines del ATMEGA8L Fig.2.3 Tipo PDIP • VCC y GND. Son los pines de alimentación (+5 v) y tierra (0 v). • XTAL1 y XTAL2. Conectores del cristal de reloj externo. • RESET. Corresponde a la línea de reset (entrada). • AVCC. Es el pin para conectar la fuente de alimentación al convertidor A/D. • AREF. Para conectar una tensión 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), página 56), por ejemplo PB6 y PB7, permiten la conexión 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 página 59, del manual Atmega8(L). Curso de actualización de Microcontroladores Atmega8 16
  • 17. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA • Puerto D (PD0..PD7). Son 8 líneas bidireccionales de entrada/salida con resistencias internas pull up, para cada uno. Los pines del puerto D, también tiene otras funciones descritas en la página 61 del manual Atmega8, por ejemplo PD0 y PD1 permiten usar el periférico de comunicación serial USART, PD1 permite la transmisión de datos y PD0, permite la recepción de datos. 2.4 La Unidad Central de Procesos (CPU) La función de la CPU es controlar la operación del microcontrolador, permitiendo la ejecución correcta del programa, habilitando el acceso a las memorias, controlar los periféricos 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 simultánea e independiente a la memoria de datos y a la memoria de instrucciones (se estudiará más adelante). Los registros de archivo de acceso rápido contienen 32 registros de propósito general de 8 bits y son accesados con un solo ciclo de reloj. Esto permite usar un solo ciclo en una operación aritmética-lógica(ALU), por ejemplo en una operación típica ALU, 2 operandos son extraídos del archivo de Registros, y la operación 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 aritméticas y lógicas entre registros o entre un registro y una constante. Luego de una operación aritmética, el registro de estados es modificado para reflejar la información acerca del resultado de una operación. El flujo de un programa es variado por los saltos condicionales e incondicionales y las instrucciones de llamada para dirigirse a la nueva dirección en el espacio de memoria. Las instrucciones del AVR, tiene normalmente un formato de compuesto por una palabra de 16 Curso de actualización de Microcontroladores Atmega8 17
  • 18. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA bits. Cada dirección en la memoria de programas contiene instrucciones de 16 ó 32 bits (el concepto de llamadas a subrutinas y ejecución de interrupciones se estudiará más adelante). Fig. 2.4 Arquitectura AVR 2.4 El Registro de estados El registro de estado contiene información acerca del resultado de la mas reciente instrucción ejecutada. Esta operación puede ser utilizada para alterar el flujo de un programa. El registro de estados es sobrescrito luego de ejecutarse una operación en la ALU. Bit 7 6 5 4 3 2 1 0 I T H S V N Z C Lectura/escritura R/W R/W R/W R/W R/W R/W R/W R/W Valor inicial 0 0 0 0 0 0 0 0 • I: Global interrup enable El bit I permite habilitar las interrupciones con “1” lógico, si el bit es “0”, no se aceptará ningún pedido de interrupción. Se puede hacer esto usando las instrucciones SEI y CLI. Curso de actualización de Microcontroladores Atmega8 18
  • 19. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA • T: Bit copy storage La posición 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 más 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: Two’s complement overflow flag La bandera V se hace 1 cuando el resultado de una instrucción excede el rango de las operaciones aritméticas, es decir, en el caso de operaciones de 8 bits cuando el resultado de una operación 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 operación es un número 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 operación 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 operación aritmética; de lo contrario es cero. Curso de actualización de Microcontroladores Atmega8 19
  • 20. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA 2.5 Registros de propósito general Atmega8(L), dispone de 32 registros de propósito general 7 0 Dirección R0 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 propósito general Se observa en la figura, además que a cada registro le corresponde una dirección 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 XL 7 0 7 0 R27 R26 YH YL Curso de actualización de Microcontroladores Atmega8 20
  • 21. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA 7 0 7 0 R29 R28 ZH ZL 7 0 7 0 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 interrupción. El puntero de pila apunta (almacena la dirección) a la próxima dirección libre de la pila y que decrementa su valor en uno cada vez que se almacena un dato(de un byte) en ella, incrementándolo en uno cuando se retira este valor(de un byte). En el caso que se guarda la dirección de retorno cuando se atiende a una subrutina o una interrupción el puntero de pila es decrementado en 2 y luego de ejecutarse la última instrucción 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 dirección $60, Bit 15 14 13 12 11 10 9 8 SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL 7 6 5 4 3 2 1 0 2.6 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 actualización de Microcontroladores Atmega8 21
  • 22. 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 Instrucción Set Computer), esto permite que el set de instrucciones y el bus de la memoria de programa pueden diseñarse de manera tal que todas las instrucciones tengan una sola posición de memoria de programa de la misma longitud. Además, como los buses son independientes, el CPU del microcontrolador puede estar accediendo a los datos para completar la ejecución de una instrucción, y al mismo tiempo estar leyendo la próxima instrucción a ejecutar. En resumen Atmega8, maneja: • 130 instrucciones, la mayoría se ejecuta en un solo ciclo de reloj • 32 registros de propósito 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. Además 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 aplicación. Para acceder al espacio comprendido entre 0 y 4095 ($FFF) direcciones, el tamaño del registro contador de programa (PC) será de 12 bits. Curso de actualización de Microcontroladores Atmega8 22
  • 23. 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 propósito 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 alimentación. La siguiente figura muestra la organización de la memoria SRAM del Atmega8 Curso de actualización de Microcontroladores Atmega8 23
  • 24. 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 actualización de Microcontroladores Atmega8 24
  • 25. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA 2.8. Descripción de los Puertos de Entrada y Salida Los puertos son un conjunto de líneas (pines) programables como entrada ó salida que dispone el microcontrolador para comunicarse con el mundo exterior. El microcontrolador Atmega8(L), tiene 3 puertos de E/S (Puertos B, C D). Todos los pines de cada puerto son programables como entrada o salida de datos configurando el registro asociado respectivo. Cuando se programa el funcionamiento de un puerto como entrada tenemos que habilitar o deshabilitar las resistencias pull-up internas. Cada pin del puerto tiene independiente su resistencia pull-up como una resistencia invariante hacia la fuente de voltaje, además tiene 2 diodos de protección uno conectado a Vcc y el otro conectado a GND. (ver figura 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 actualización de Microcontroladores Atmega8 25
  • 26. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA En el párrafo anterior, “x” puede ser B, C ó D. Es decir, si nos referimos al puerto B, los registros son DDRB, PORTB y PINB. Los registros PINx son de sólo lectura, mientras que los registros PORTx y DDRx son de lectura/escritura. Adicionalmente, el bit “Pull-up Disable” – PUD, en el registro SFIOR inhabilita la función 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 están indicados por los Registros DDRx E/S, PORTxE/S y PINxE/S.(ver Register Descripción for E/S ports, pagina 63 del manual Atmega8(L)). El bit DDxn del Registro DDRx, establece la dirección de este pin. Si DDxn es escrito con “1” lógico, Pxn es configurado como un pin de salida. Si en DDxn es escrito un “0”, Pxn es configurado como un pin de entrada. Si el pin PORTxn está configurado como un pin de entrada y es escrito un “1” lógico, entonces la resistencia pull-up está activada. En cambio si en PORTxn está configurado como un pin de salida ó es escrito con un “0” lógico, la resistencia pull-up está desactivada. Si el pin PORTxn está configurado como un pin de salida y es escrito con un “1” lógico, el pin toma un valor alto, en cambio si es escrito con “0” lógico el pin toma un valor bajo(cero). Curso de actualización de Microcontroladores Atmega8 26
  • 27. 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 deshabilitarán las resistencias pull- up de todos los puertos. El funcionamiento de la configuración de los pines de un puerto se resume en la siguiente tabla: DDxn PORTxn PUD E/S Pull-up Comentario (en SFIOR) 0 0 X Entrada No Tri-state 0 1 0 Entrada Yes 0 1 1 Entrada No Tri-state 1 0 X Salida No Salida baja 1 1 X Salida No Salida alta Tabla: Configuración de los pines del puerto. Curso de actualización de Microcontroladores Atmega8 27
  • 28. 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 básicas. Aprender a manejar el entorno de desarrollo VMLAB Aprender a grabar la memoria flash del microcontrolador II. MATERIALES • 1 módulo de entrenamiento “AvrPUCP -Mega8”. • 1 Módulo de entrada/salida. • 1 Cable de programación • 1 computadora personal. • Entorno de desarrollo VMLAB • Cables de conexión III. PROCEDIMIENTO Ejemplo 1 Se desea escribir un programa que permita prender 2 leds, que están conectados a 2 pines de un puerto del microcontrolador Planteamiento • El microcontrolador ATmega8L tiene 23 pines programables E/S. Para la solución utilizaremos PB0 y PB1 de acuerdo al siguiente Circuito esquemático: • Para desarrollar el programa utilizaremos el entorno VMLAB y los módulos de entrenamiento del laboratorio, que explicaremos a continuación. Curso de actualización de Microcontroladores Atmega8 28
  • 29. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA IV. MANEJO DEL VMLAB (VISUAL MICRO LAB) 4.1 Creación del primer proyecto: Edición y Compilación 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 opción 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 actualización de Microcontroladores Atmega8 29
  • 30. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA 2do.paso: Defina el proyecto con los parámetros correctos, activando las pestañas respectivas: 1. Project name and location: C:CursoAtmega8ejemplo1.prj 2. Luego seleccione el código del microcontrolador: Atmega8 3. Elija el modo estándar de compilación : Standart micro manufacturer assembler/linker (por defecto ya está marcado) 4. Añada el archivo ejemplo1.asm en la caja de archivos (Code files list), haciendo clic en el botón Add this: Figura 3: Definición de un proyecto. 5. Una vez completados todos los datos se hace clic en el botón OK, y aparecerá 3 ventanas de trabajo con líneas de texto predeterminadas (ver figura 4): • Ejemplo1.asm: Aquí escribiremos nuestro programa en lenguaje ensamblador • Ejemplo1.prj: Esta ventana nos permite dibujar(mediante líneas de texto definidos) el hardware del circuito, para los cuáles debemos conocer la sintaxis de cada elemento. • Ventana de mensajes: Nos mostrará si hubo o no errores en la compilación tanto del software como del hardware del proyecto. Curso de actualización de Microcontroladores Atmega8 30
  • 31. 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 librería 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 cátodo 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 actualización de Microcontroladores Atmega8 31
  • 32. 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 electrónicos que dispone VMLAB En el archivo de trabajo ejemplo1.prj, se observa algunas directivas y comentarios creados por defecto. Curso de actualización de Microcontroladores Atmega8 32
  • 33. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA Para nuestro caso se agrega las siguientes líneas 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 ;Diodo led1 conectado a PB0 usando la resistencia R1 R1 N1 PB0 330 D2 VDD N2 R2 N2 PB1 330 ; Diodo led2 conectado a PB1 usando la resistencia R2 Luego de escribir estas líneas 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 líneas de texto que define el Hardware del proyecto y su compilación. Cuarto Paso: EDICIÓN DEL PROGRAMA Abra la ventana de trabajo ejemplo1.hex, para escribir el programa (Antes de escribir el siguiente programa borre todas las líneas de texto que aparecen) Algoritmo del programa: Se configura 2 pines del puerto B como salida Se prende 2 leds con nivel bajo. A continuación se muestra el programa con las directivas necesarias del VMLAB, que permitirá compilar y simular su funcionamiento Curso de actualización de Microcontroladores Atmega8 33
  • 34. 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 DEPURACIÓN DEL PROGRAMA Para ensamblar el programa presione la tecla F9 ó puede utilizar la opción (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 actualización de Microcontroladores Atmega8 34
  • 35. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA Si al momento de compilar no existe ningún error aparecerá en la ventana de mensajes un símbolo 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, potenciómetro 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 propósito 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 actualización de Microcontroladores Atmega8 35
  • 36. 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 (instrucción por instrucción). Se utiliza las teclas F6 ó F7.(también 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 Obteniéndose 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 actualización de Microcontroladores Atmega8 36
  • 37. 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 librería 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 están conectados a los pines PB0 y PB7. Se prenden cuando se cierra el interruptor. Circuito esquemático: 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 actualización de Microcontroladores Atmega8 37
  • 38. 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:VMLABincludem8def.inc"; .cseg .org $0 rjmp inicio inicio: ldi R16,0b00000011 ; Configuro PB0 y PB1 como salida y PB7 como entrada out DDRB,R16 ;utilizando el registro DDRB lazo: in R16,PINB ; Leo los pines del puerto B, pero solo interesa PB7 andi R16,0b10000000 ; ==> Filtro solo el pin PB7. cpi R16,0b00000000 ; analizo si el interruptor está cerrado ¿PB7=0? breq SWcerrado ; Si el interruptor esta cerrado, prendo los leds ldi R16,0b11111111 ; Si el interruptor esta abierto los leds están ;apagados out PORTB,R16 rjmp lazo ; retorno para una nueva lectura SWcerrado: ldi R16,0b11111100 ;Se escribe "0" lógico para prender los leds out PORTB,R16 rjmp lazo Archivo que define el circuito esquemático 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 ; diodo led D2 conectado a PB1 usando la Resistencia R2 de 330Ω R2 N2 PB1 330 K0 PB7 VSS latched ; interruptor K0 conectado al pin PB7 con una R3 VDD PB7 10K ; resistencia de 10K, conectado a la fuente VDD. Curso de actualización de Microcontroladores Atmega8 38
  • 39. 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 esquemático: Figura No.15 Diagrama de flujo Dibujar el diagrama de flujo Curso de actualización de Microcontroladores Atmega8 39
  • 40. 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:VMLABincludem8def.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,0b11111111 ;inicialmente los leds están apagados out PORTB,R18 ;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 ; 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 ;Se soltó el pulsador ; Luego de presionar y soltar el pulsador se prende los 2 leds ldi R18,0b11111100 ;Se escribe "0" lógico para prender los leds ;(ver el circuito) out PORTB,R18 lazo: rjmp lazo Curso de actualización de Microcontroladores Atmega8 40
  • 41. PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA SECCION ELECTRICIDAD Y ELECTRONICA Definición del circuito esquemático(*.prj): D1 VDD N1 ; diodo D1 conectado al pin PB0 usando la Resistencia R1 de 330Ω R1 N1 PB0 330; D2 VDD N2 ; diodo led D2 conectado a PB1 usando la Resistencia R2 de 330Ω R2 N2 PB1 330 K3 VDD PC5 ; pulsador conectado al pin PC5 R3 PC5 VSS 10K ; usando la resistencia R3 de 10K, conectado a Tierra. . Material de trabajo elaborado por: Zenón Cucho Mendoza Diciembre de 2006 Curso de actualización de Microcontroladores Atmega8 41