Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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:
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.1
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 dic has 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.
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.2
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 MegaInstrucciones-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 entre valores de 512 bytes y 16kB de RAM aunque es posible anexar memoria RAM externa, generalmente 1kB de RAM es suficiente para muchas m uchas aplicaciones.
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.3
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 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
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.4
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.5
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
3. Entorno de Programación Existen algunas opciones en lenguajes de programación para usar en los microcontroladores mi crocontroladores 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 efic iente 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 o peraciones 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 f abricante: 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.
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.6
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 l a 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 l a 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 Documentos\Atmel Studio\6.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 Selection permite elegir el microcontrolador a usar en el proyecto. Durante las 4 sesiones elegiremos el clásico ATmega8. http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.7
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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(), 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), 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
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.8
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
Aparecerán resultados en la consola de salida Output que que indicarán el proceso que realiza el compilador, finalmente los resultados que buscamos en una compilación exitosa es la siguiente:
Memoria Flash usada
Memoria RAM usada Compilación Exitosa
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.
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.9
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 c omo 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.
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.10
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 l a 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 l a 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 l a 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.
http://www.cidiacctec.com E-mail:
[email protected];
[email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.11
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
// //
Este ejemplo muestra cómo acceder a los registros de control de periféricos desde el Lenguaje C
#include
int main(void main(void) ) { DDRD = 15; //Asignandole un valor al registro DDRD PORTC = 0x03; //Asignandole un valor al registro PORTC while(1) while (1) { //(1): Aqui inicia el bucle infinito PORTD = 0b00001001;//Dandole 0b00001001;//Dandole un valor al registro PORTD PORTD = 0b00001010;//Valor 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 llamada AVR Simulator que 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.
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.12
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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.
I/O View
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). 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.
Step Over
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.
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.13
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
Registros del Puerto D La herramienta AVR herramienta AVR Simulator de 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 co nexión de dispositivos externos al microcontrolador. Ahora evaluaremos la simulación de programas para microcontroladores AVR usando el software ISIS Proteus.
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.14
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 para encontrar el dispositivo deseado.
Una vez con el dispositivo seleccionado, sacaremos algunos otros componentes (resistencia, capacitor y pulsador) para armar el siguiente circuito:
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.15
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 Documentos\Atmel Studio\6.1\programa1_atmega8\debug\programa1_ Studio\6.1\programa1_atmega8\debug\programa1_atmega8.hex 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.
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.16
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
Y podemos ver los resultados en cómo c ómo se mueven los bits en el Puerto D, resultado de usar los lo s 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 //Librerías por defecto #include //Librería para usar delay int main(void main(void) ) //Programa Principal { DDRD = 0b00000001; //PD0 es salida digital //porque hay un '1' en su posición del registro DDRD while(1) while(1) //Bucle Infinito { PORTD = 0b00000001; _delay_ms(500); PORTD = 0b00000000; _delay_ms(500); }
//PD0 está en HIGH //espera 500mS antes de continuar //PD0 está en LOW //espera 500mS antes de continuar
}
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.17
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 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 //Librerías por defecto #include //Librerías para definición de pines #include //Librería para usar delay int main(void main(void) ) { DDRB = (1<
//Si el pulsador está }
//enciende solo PB0
//De lo contrario } //apaga solo PB0
} }
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.18
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
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 //Librería por defecto #include "AVR_lcd16x2_cidiacctec.h" #include "AVR_lcd16x2_cidiacctec.h"//Librería //Librería para usar el LCD 16x2 int main(void main(void) ) { DDRB = (1<
–
Pág.19
Centro de Investigación Desarrollo Innovación Asesoría y Capacitación en Ciencia y Tecnología CIDIACCTEC SAC Microcontroladores AVR I
if(pulsador == 1) if(pulsador { PORTB |= (1<
//Si } //De }
está presionado //Encender el LED lo contrario //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 en la ventana de búsqueda de componentes.
http://www.cidiacctec.com E-mail: [email protected]; [email protected] Telf: (01) 5620704 RPC: RPC: 987512630/ 987512628 RPM: RPM: #488905 –
–
Pág.20