Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Sesion 1
1. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.1
ARQUITECTURA Y PROGRAMACIÓN DE
MICROCONTROLADORES AVR EN LENGUAJE C
SESIÓN I
I. Arquitectura del microcontrolador AVR y programación de Puertos Digitales en
Lenguaje C
Objetivos:
Entender el concepto de microcontrolador.
Conocer la familia de los microcontroladores AVR fabricados por Atmel.
Reconocer los elementos básicos de la arquitectura de un microcontrolador AVR.
Manejar el entorno de programación Atmel Studio y proyectos en Lenguaje C.
Manejar el periférico de puertos digitales en el microcontrolador Atmega8.
1. Los microcontroladores
Un microcontrolador es un circuito integrado que contiene el hardware completo de una
computadora (poseen un procesador y memorias).
Dicho procesador lee las instrucciones almacenadas en la memoria Flash y las ejecuta en forma
de operaciones matemáticas o lógicas y almacena los resultados en variables de la memoria
RAM.
Debido a que toda esta computadora se encuentra limitada por el espacio dentro del chip, la
cantidad de memoria y capacidad del procesador, difícilmente se podrán comparar al de una
computadora personal, sin embargo se pueden encontrar estos dispositivos en múltiples
aplicaciones comerciales como:
2. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.2
Electrodomésticos:
Dentro de un horno microondas, es un microcontrolador el dispositivo encargado de leer la
entrada de los botones que presiona el usuario, mostrar el tiempo en un display de dígitos y
calcular el tiempo de encendido del horno.
Dentro de un control remoto, un microcontrolador lee la entrada de los botones y genera
pulsos para encender y apagar un LED infrarrojo que representa comandos para que un
televisor se encienda, cambie de canal o suba volumen.
Robótica e Industria:
Los microcontroladores son el cerebro detrás de robots de competencia, por ejemplo un
robot seguidor de línea, donde el microcontrolador lee la señal de entrada de ciertos sensores
ópticos sobre la pista, y toma decisiones respecto a si seguir hacia adelante, girar derecha,
izquierda, etc.
En máquinas de aplicación industrial, tales como Cortadoras CNC, brazos robóticos o
impresoras 3D, los motores de dichas máquinas son controlados por microcontroladores, estos
se encargan de regular su velocidad y posición dependiendo de algún comando enviado por el
usuario u otro sistema.
3. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.3
2. Arquitectura del microcontrolador AVR
Los microcontroladores AVR fabricados por Atmel son microcontroladores RISC (Reduced
Instruction Set Computer) arquitectura Harvard modificada donde la memoria de programa
(Memoria Flash)y la memoria de datos (Memoria RAM) se encuentran en dos buses separados
dentro del chip. Su procesador cuenta con un ALU que accede a 32 registros de propósito
general de 8bits (arquitectura de 8bits) y tiene un sistema de PipeLine de 4 etapas.
Esta arquitectura hace que los microcontroladores AVR sean muy veloces y eficientes.
La velocidad del procesador en un microcontrolador AVR puede alcanzar una frecuencia
máxima recomendada de 20MHz, esto sumado a que las instrucciones se ejecutan en un ciclo
de reloj hace que el AVR pueda alcanzar una capacidad de ejecutar 20MIPS (20 Mega-
Instrucciones-Por-Segundo), es decir en un segundo que el microcontrolador este activo, podrá
ejecutar 20 × 106
instrucciones de Assembler (ASM).
La capacidad de memoria Flash para un AVR está entre 1kB en los dispositivos más pequeños
(Familia ATtiny) hasta los 256kB en dispositivos más potentes (Familia ATmega y ATXmega).
La capacidad de memoria RAM está entre valores de 512 bytes y 16kB de RAM aunque es
posible anexar memoria RAM externa, generalmente 1kB de RAM es suficiente para muchas
aplicaciones.
4. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.4
El microcontrolador a usar en el curso es el clásico ATmega8 que posee:
8kB de memoria Flash
1kB de memoria RAM
16MHz de Velocidad Máxima Recomendada
Oscilador RC Interno de 1MHz configurado por defecto desde fábrica.
Puertos Digitales B,C,D
USART (Universal Synchronous Asynchronous Receiver Transmitter)
ADC (Analog to Digital Converter)
SPI (Serial Peripheral Interface)
TWI (Two Wire Interface)
TIMER0 (Temporizador de 8bits)
TIMER1 (Temporizador de 16bits)
TIMER2 (Temporizador de 8bits)
Interrupciones Externas por los pines INT0 e INT1.
AC (Analog Comparator)
Soporte de BootLoader de hasta 2048 bytes (1024 words)
5 Modos Sleep para optimizar el consumo de energía.
Sistema avanzado de RESET para el microcontrolador (Power on Reset, External Reset,
Watchdog Reset y Brown-out Reset).
19 Fuentes de Interrupción independientes.
Empaquetadura DIP de 28pines y empaquetadura TQFP / MLF de 32 pines
5. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.5
6. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.6
3. Entorno de Programación
Existen algunas opciones en lenguajes de programación para usar en los microcontroladores
AVR.
Lenguaje ASM:
Es el lenguaje máquina de más bajo nivel, el cual se carga directamente hacia la memoria
Flash del AVR. La ventaja del lenguaje Assembler es que es muy veloz y predecible al momento
de ejecutarlo. La desventaja es que escribir un programa complejo en Assembler tomará
mucho más tiempo y muchas más líneas de código.
El lenguaje Assembler deberá ser usado cuando se busque ejecución más rápida y eficiente
dentro de un programa para el microcontrolador.
Lenguaje C:
Este es un lenguaje de alto nivel que permite programar los microcontroladores AVR al
manipular directamente los valores en sus registros. Antes de programar la memoria Flash del
microcontrolador con un programa en Lenguaje C, este debe ser compilado, es decir convertir
el código en C a código en ASM. La ventaja del lenguaje C es que es mucho más fácil de
aprender y simplifica muchas operaciones matemáticas, lógicas y acceso de memoria, dentro
del microcontrolador. La desventaja es que un programa en lenguaje C tendrá una ejecución
más lenta que un programa escrito en ASM.
Para propósitos educativos y para el resto del presente curso, se usará el Lenguaje de
programación C debido a que permite desarrollar sistemas más complejos de manera más
rápida que en lenguaje ASM.
El entorno de programación a usar será el software oficial del fabricante: Atmel Studio.
Este es un IDE (Integrated Development Environment) que contiene las herramientas
necesarias para escribir programas en ASM, Lenguaje C, Simular, Depurar y Programar
cualquier microcontrolador de la familia AVR.
7. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.7
4. Creación de un Proyecto en Atmel Studio:
Dentro de la ventana de Atmel Studio podemos entrar a la ventana de creación de un nuevo
proyecto con el atajo: Ctrl + Shift + N
O pueden acceder a la misma ventana desde el menú File -> New -> Project…
A lo largo del curso crearemos proyectos en lenguaje C con el compilador AVR-GCC.
Para eso debemos seleccionar, crear un GCC C Executable Project que aparecerá en la ventana
New Project.
Podemos ingresar el nombre a nuestro proyecto. En este ejemplo el nombre será:
programa1_atmega8.
Por defecto la ruta donde se guarda el proyecto es Mis DocumentosAtmel Studio6.1 pero
esta ruta se puede modificar a gusto del usuario.
Al dar clic en el botón OK, la siguiente ventana Device Selection permite elegir el
microcontrolador a usar en el proyecto. Durante las 4 sesiones elegiremos el clásico ATmega8.
8. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.8
La lista que muestra la ventana contiene todos los dispositivos fabricados por Atmel, incluidos
AVR y ARM. Para reducir la búsqueda, podemos escribir en la barra superior derecha el
nombre del dispositivo que vamos a usar.
Finalmente el proyecto muestra una plantilla de programación en C donde se muestra la
función principal main(), donde escribiremos líneas de código para configurar e inicializar el
Hardware del microcontrolador que vamos a usar, y un bucle infinito while(1), donde
escribiremos líneas de código que representan acciones repetitivas que ejecutará el
microcontrolador mientras esté activo.
Para verificar que la sintaxis del lenguaje esté escrita de manera correcta, compilaremos la
sección del código presente en el proyecto.
Para compilar podemos usar el atajo: Ctrl + Shift + B o F7
O podemos usar el menú Build -> Build Solution
9. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.9
Aparecerán resultados en la consola de salida Output que indicarán el proceso que realiza el
compilador, finalmente los resultados que buscamos en una compilación exitosa es la
siguiente:
Ya en este punto de la creación del proyecto estamos listos para iniciar agregando líneas de
código en sintaxis del Lenguaje C para poder manejar los periféricos del microcontrolador
Atmega8.
Debemos tener clara que la idea de configuración y manejo de periféricos, en realidad solo
consiste en escribir valores dentro de los registros internos del microcontrolador.
Entonces para gobernar cualquier periférico dentro del microcontrolador AVR debemos de
conocer cuáles son sus registros de control y cuáles son los valores que debemos escribir en
estos registros para lograr el comportamiento deseado del dispositivo.
Compilación Exitosa
Memoria Flash usada
Memoria RAM usada
10. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.10
5. Manejo de Periféricos: Puertos Digitales de Entrada y Salida
El microcontrolador cuenta con periféricos que le permite intercambiar datos con el exterior.
El periférico más sencillo de usar y a la vez más útil en cualquier aplicación es el de los Puertos
Digitales dentro del microcontrolador.
Estos puertos están conformados por pines de Entrada y Salida que sirven para controlar o
transferir datos a otros dispositivos (tales como LEDs, Motores, Relays, etc) o para obtener
datos de otros dispositivos (tales como pulsadores, switches, sensores, etc).
Un Puerto Digital consta generalmente de 8 pines de Entrada o Salida Digital (I/O) de Propósito
General. Estos pines son capaces de generar un nivel de voltaje HIGH o LOW o leer un nivel de
voltaje HIGH o LOW dependiendo del valor de los registros que gobiernan dicho Puerto Digital.
Estos registros son DDRx, PORTx y PINx donde x Representa la letra asignada al Puerto.
Por ejemplo en el ATmega8 existe el Puerto B, Puerto C y Puerto D. Cada uno de esos puertos
están gobernados por los registros DDRB, PORTB, PINB; DDRC, PORTC, PINC; DDRD, PORTD,
PIND.
11. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.11
DDRx : Data Direction Register :
Es el registro que configura si un pin en el puerto será entrada o salida digital.
Escribiremos un valor en este registro para configurar las salidas digitales.
Si se escribe un ‘1’ en la posición del bit PB4 hará que PB4 sea una salida digital
SI se escribe un ‘0’ en la posición del bit PB7 hará que PB7 sea una entrada digital
PORTx: Pin Output Register:
Es el registro que configura si una salida digital en el puerto tendrá estado HIGH o estado LOW.
También activa el resistor Pull-up interno en caso sea una entrada digital.
Escribiremos un valor en este registro para manipular el voltaje de una salida digital o para
activar el pull-up de una entrada digital.
Si se escribe un ‘1’ en la posición del bit PC2 y PC2 es salida, hará que PC2 esté en voltaje HIGH.
SI se escribe un ‘0’ en la posición del bit PC2 y PC2 es salida, hará que PC2 esté en voltaje LOW.
Si se escribe un ‘1’ en la posición del bit PC0 y PC0 es entrada, hará que PC0 tenga Pull-Up.
PINx: Pin Input Register:
Es el registro que muestra el nivel de voltaje lógico en cierto pin del puerto, sea entrada o
salida digital.
Leeremos este registro para verificar el nivel de voltaje en una entrada digital.
Ahora veamos algunos ejemplos de cómo usar estos registros dentro de un programa en
Lenguaje C y cómo simular dicho programa en el mismo IDE de Atmel Studio y en el software
licenciado ISIS Proteus.
Ejemplo 0: Acceso a Registros del microcontrolador AVR desde Lenguaje C
En el lenguaje C para microcontroladores AVR, el acceso a registros se realiza de manera muy
sencilla y transparente, solo debemos conocer el nombre del registro que deseamos acceder y
que valores poner. Todos los registros internos del microcontrolador AVR de la familia ATmega
son de 8bits, por tanto los valores que pueden contener estos registros están entre 0 y 255.
12. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.12
// Este ejemplo muestra cómo acceder a los registros
// de control de periféricos desde el Lenguaje C
#include <avr/io.h>
int main(void)
{
DDRD = 15; //Asignandole un valor al registro DDRD
PORTC = 0x03; //Asignandole un valor al registro PORTC
while(1)
{ //(1): Aqui inicia el bucle infinito
PORTD = 0b00001001;//Dandole un valor al registro PORTD
PORTD = 0b00001010;//Valor en notación binaria del
lenguaje C
PORTD = 0x06; //Valor en notación hexadecimal del
lenguaje C
PORTD = 5; //Valor en notación decimal del lenguaje
C
//(2): Aquí el bucle salta a la parte (1) y todo se repite
}
}
6. Simulación del programa desde Atmel Studio:
Atmel Studio provee una herramienta llamada AVR Simulator que permite ejecutar el código
escrito en el programa principal paso a paso a manera de depuración (debugging), para poder
visualizar los resultados a nivel de registros del microcontrolador.
Para iniciar con el AVR Simulator y sesión de depuración podemos usar el atajo: Alt + F5
O se puede acceder desde el menú Debug -> Start Debugging and Break.
Aparecerá una ventana que puede mostrar el contenido de la memoria Flash, RAM y EEPROM
del microcontrolador AVR simulado.
13. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.13
Al lado derecho de la ventana podemos ver algunos datos del microcontrolador simulado.
Estos son el valor del registro de estatus y la frecuencia de operación, por defecto asignado
1MHz tal como lo tendría un dispositivo nuevo.
Para poder ver los registros que controlan los periféricos debemos sacar la ventana I/O View
que se puede encontrar haciendo clic en el botón del mismo nombre.
Ahora la ventana aparece en la barra del lado derecho. Podemos dar clic al conjunto PORTD
que contiene todos los registros que gobiernan el Puerto D del microcontrolador (DDRD,
PORTD, PIND).
Ahora para ejecutar el código línea por línea a modo de depuración, podemos usar el atajo:
F10
O podemos dar clic al botón Step-Over en la barra de depuración.
Podemos dar clic varias veces para observar cómo avanza la ejecución del programa (el texto
resaltado) y como va cambiando los valores de los registros que se usan en el código.
I/O View
Step Over
14. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.14
La herramienta AVR Simulator de Atmel Studio es muy útil para analizar, de manera rápida, la
secuencia de ejecución de algún programa para el microcontrolador AVR y para ver como
varían los registros. Sin embargo esta herramienta no permite simular la conexión de
dispositivos externos al microcontrolador.
Ahora evaluaremos la simulación de programas para microcontroladores AVR usando el
software ISIS Proteus.
Registros del
Puerto D
15. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.15
7. Simulación del programa desde ISIS Proteus:
ISIS Proteus es un software de simulación muy potente que nos permite simular circuitos
integrados (microcontroladores, compuertas, memorias) y dispositivos discretos (pasivos y
activos).
Dentro de la ventana del software agregaremos un Atmega8 buscándolo entre las librerías del
programa, que se accede con la letra p.
Dentro de esta ventana de búsqueda escribimos el nombre “ATMEGA8” para encontrar el
dispositivo deseado.
Una vez con el dispositivo seleccionado, sacaremos algunos otros componentes (resistencia,
capacitor y pulsador) para armar el siguiente circuito:
16. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.16
Esta configuración se usará durante todas las sesiones donde se simule el circuito del Atmega8
en ISIS Proteus, a menos que se indique lo contrario.
El último paso para iniciar la simulación en Proteus es seleccionar el archivo de formato *.hex
que se crea en el proceso de compilación del proyecto en Atmel Studio.
Dicho archivo se encuentra en la carpeta del proyecto creado, es decir en este caso, la ruta
será:
…Mis DocumentosAtmel Studio6.1programa1_atmega8debugprograma1_atmega8.hex
Para indicar esta ruta en Proteus damos doble clic sobre el Atmega8 en Proteus y en la nueva
ventana Edit Component, damos clic sobre el botón Program File y buscamos la ruta del
archivo *.hex.
Finalmente damos OK en la ventana Edit Component.
Ahora se puede iniciar la simulación dando clic al botón Play en la parte inferior izquierda del
programa.
17. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.17
Y podemos ver los resultados en cómo se mueven los bits en el Puerto D, resultado de usar los
registro DDRD y PORTD en el programa de Atmel Studio.
A continuación se mostrará programas que manejan los puertos digitales del Atmega8 usando
algunos dispositivos externos para visualizar los resultados.
Ejemplo1: Salida Digital, parpadeo de un LED
Una salida digital en un microcontrolador le permite cambiar el nivel de voltaje lógico (HIGH o
LOW) en cierto pin, dependiendo del valor en el registro PORTx.
// Este ejemplo realiza el encendido y apagado de un
// LED conectado a la salida digital PD0
#define F_CPU 1000000 //Velocidad de reloj 1MHz
#include <avr/io.h> //Librerías por defecto
#include <util/delay.h> //Librería para usar delay
int main(void) //Programa Principal
{
DDRD = 0b00000001; //PD0 es salida digital
//porque hay un '1' en su posición del registro DDRD
while(1) //Bucle Infinito
{
PORTD = 0b00000001; //PD0 está en HIGH
_delay_ms(500); //espera 500mS antes de continuar
PORTD = 0b00000000; //PD0 está en LOW
_delay_ms(500); //espera 500mS antes de continuar
}
}
18. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.18
Simulacion1: Salida Digital, parpadeo de un LED
Este es el circuito de prueba para la simulación del Ejemplo1 en ISIS Proteus.
El LED se puede obtener con el nombre “LED-YELLOW” en la ventana de búsqueda de
componentes.
Ejemplo2: Entrada Digital, lectura de un pulsador
Una entrada digital en un microcontrolador le permite leer el nivel de voltaje lógico (HIGH o
LOW) en cierto pin. Se puede activar un resistor Pull-Up interno a dicho pin para evitar que
esta entrada digital lea ruido del medio alrededor del microcontrolador.
// Este ejemplo realiza el encendido de un LED
// en PB0 cuando se presiona un pulsador en PB5
#define F_CPU 1000000 //Velocidad de reloj 1MHz
#include <avr/io.h> //Librerías por defecto
#include <avr/portpins.h> //Librerías para definición de pines
#include <util/delay.h> //Librería para usar delay
int main(void)
{
DDRB = (1<<PB0); //PB0 es salida, el resto entrada
PORTB = (1<<PB5); //Pullup en PB5, LED apagado
while(1)
{
if(bit_is_clear(PINB,PB5)) //Si el pulsador está
presionado
{ PORTB |= (1<<PB0); } //enciende solo PB0
else //De lo contrario
{ PORTB &= ~(1<<PB0); } //apaga solo PB0
}
}
19. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.19
Simulacion2: Entrada Digital, lectura de un pulsador
Este es el circuito de prueba para la simulación del Ejemplo2 en ISIS Proteus.
Ejemplo3: Uso de librerías, manejo de una pantalla LCD
Una de las aplicaciones de las salidas digitales es comunicarse con otros periféricos, por
ejemplo el controlador de un Display de LCD.
Para simplificar dicha comunicación paralela de 4 bits, se ha escrito una librería que contiene
las funciones adecuadas.
// Este ejemplo realiza el encendido de un LED
// en PB0 cuando se presiona un pulsador en PB5
// Tambien muestra el valor de PB5 en el LCD
#define F_CPU 1000000 //Velocidad de reloj 1MHz
#include <avr/io.h> //Librería por defecto
#include "AVR_lcd16x2_cidiacctec.h"//Librería para usar el LCD 16x2
int main(void)
{
DDRB = (1<<PB0); //PB0 es salida, el resto entrada
PORTB = (1<<PB5); //Pullup en PB5, LED apagado
LCD16x2_iniciar(); //Inicia y configura el LCD
LCD16x2_imprimir("Lectura PB5:"); //Muestra mensaje en la
pantalla
while(1)
{
int pulsador = bit_is_clear(PINB,PB5); //Lee el estado
de PB5
LCD16x2_cursor(0,1); //línea de abajo
LCD16x2_imprimir("%u",pulsador); //Muestra variable en
LCD
20. Centro de Investigación Desarrollo Innovación Asesoría
y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC
http://www.cidiacctec.com
E-mail: cidiacctec@cidiacctec.com; cidiacctec@hotmail.com
Telf: (01) 5620704 – RPC: 987512630/ 987512628 – RPM: #488905
Microcontroladores AVR I
Pág.20
if(pulsador == 1) //Si está presionado
{ PORTB |= (1<<PB0); } //Encender el LED
else //De lo contrario
{ PORTB &= ~(1<<PB0); } //Apagar el LED
}
}
Simulacion3: Uso de librerías, manejo de una pantalla LCD
Este es el circuito de prueba para la simulación del Ejemplo2 en ISIS Proteus.
El LCD se puede obtener con el nombre “LM016” en la ventana de búsqueda de componentes.