SlideShare una empresa de Scribd logo
1 de 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.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:
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.
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.
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
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
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.
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.
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
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
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.
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.
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.
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
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
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:
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.
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
}
}
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
}
}
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
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.

Más contenido relacionado

La actualidad más candente

Automatismos 2
Automatismos 2Automatismos 2
Automatismos 2Hugo Mora
 
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PICMicrocontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PICSANTIAGO PABLO ALBERTO
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaGerardo C
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1ddarioooo
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic oskarjgf
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Miguel Angel Corona Lòpez
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladoresceiv
 
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 

La actualidad más candente (17)

Automatismos 2
Automatismos 2Automatismos 2
Automatismos 2
 
Familia De Los Microcontroladores Pic
Familia De Los Microcontroladores PicFamilia De Los Microcontroladores Pic
Familia De Los Microcontroladores Pic
 
Pic
PicPic
Pic
 
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PICMicrocontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
 
C++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación prácticaC++ para microcontroladores y aplicación práctica
C++ para microcontroladores y aplicación práctica
 
Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1Curso microprocesadores y_microcontroladores_unidad_1
Curso microprocesadores y_microcontroladores_unidad_1
 
Como programar un pic
Como programar un pic  Como programar un pic
Como programar un pic
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Curso basico de pic 16 f877
Curso basico de pic 16 f877Curso basico de pic 16 f877
Curso basico de pic 16 f877
 
Mundodelos pic
Mundodelos picMundodelos pic
Mundodelos pic
 
Introducción
IntroducciónIntroducción
Introducción
 
FAMILIA MICROCONTROLADORES
FAMILIA MICROCONTROLADORESFAMILIA MICROCONTROLADORES
FAMILIA MICROCONTROLADORES
 
Tutorial pic
Tutorial picTutorial pic
Tutorial pic
 
Familia De Los Microcontroladores
Familia De Los MicrocontroladoresFamilia De Los Microcontroladores
Familia De Los Microcontroladores
 
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
 

Similar a Sesion 1

Manual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusManual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusPaolaPerez263
 
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
 
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfdsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfEloyChoque1
 
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
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1Luis Zurita
 
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
 
Microcontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVRMicrocontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVRSANTIAGO PABLO ALBERTO
 
PROGRAMACIÓN DE MICROCONTROLADOR
PROGRAMACIÓN DE MICROCONTROLADORPROGRAMACIÓN DE MICROCONTROLADOR
PROGRAMACIÓN DE MICROCONTROLADORAlcira Gonzales
 
Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013Hector Vela Fontis
 
Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASMdave
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.pptFreddyEspejo3
 
Informe practica ecuaciones # 6
Informe practica ecuaciones # 6Informe practica ecuaciones # 6
Informe practica ecuaciones # 6Freddy Cuasapaz
 

Similar a Sesion 1 (20)

Micro1
Micro1Micro1
Micro1
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Libro basico pic
Libro basico picLibro basico pic
Libro basico pic
 
El microcontrolador PIC16F877
El microcontrolador PIC16F877El microcontrolador PIC16F877
El microcontrolador PIC16F877
 
Manual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusManual de Uso Detallado de Proteus
Manual de Uso Detallado de Proteus
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMEL
 
Introducción
IntroducciónIntroducción
Introducción
 
Diapos de pic
Diapos de picDiapos de pic
Diapos de pic
 
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfdsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
 
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
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
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
 
Microcontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVRMicrocontroladores: Microcontroladores AVR
Microcontroladores: Microcontroladores AVR
 
PROGRAMACIÓN DE MICROCONTROLADOR
PROGRAMACIÓN DE MICROCONTROLADORPROGRAMACIÓN DE MICROCONTROLADOR
PROGRAMACIÓN DE MICROCONTROLADOR
 
Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013Exposicion proyectos en electronica 2013
Exposicion proyectos en electronica 2013
 
Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASM
 
microcontroladores.ppt
microcontroladores.pptmicrocontroladores.ppt
microcontroladores.ppt
 
Informe practica ecuaciones # 6
Informe practica ecuaciones # 6Informe practica ecuaciones # 6
Informe practica ecuaciones # 6
 
Informe1
Informe1Informe1
Informe1
 

Último

Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 

Último (20)

Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
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.