Paso 12: Su primer programa
Como con toda la programación, permite hacer una aplicación "Hola mundo" básica sólo para asegurarse de que todo funcione y que el AVR está configurado ok.No meterse con los relojes externos, sólo vamos a hacer un blink LED enciende y apaga a intervalos regulares. El código se coloca por debajo y se llama "led_blinker.c", también en la carpeta de la biblioteca de demora exacta que necesitamos para este proyecto y un makefile. Se debe editar el makefile para que coincida con el chip que utilizas - si no, no funcionará cuando lo subes!
Vamos a echar un vistazo al código a continuación:
#include "adelay.h"
#include < avr/io.h >
Primero declaramos qué encabezados y las bibliotecas que estamos usando. Todo lo que necesitas para esto es el AVR y salida biblioteca y la biblioteca de la demora exacta.
IO Inicio
void init_io(void)
{
Todas las salidas en
DDR = 0XFF;
}
Esta función es llamada al inicio del programa, no toma entrada y no devuelve ningún valor, pero configura el chip listo para operaciones de entrada y salidas. DDRD se refiere al registro de dirección, en este caso, establece en el valor hexadecimal de 0xFF que es, en binario, 1111 1111. Esto establece todas las clavijas de Puerto C que salidas. Puede parecer extraño que un comando dentro de una función, pero esto se hará más grande medida que agregamos más código.
int Main
{
init_io();
while(1)
{
PORTC ^ = (1 << 1);
PORTC ^ = (1 << 2);
Delay_ms(1000);
}
retorno 1;
}
La principal función es realmente simple, primero llamamos a la función init para todo lo creado conseguir. Entonces entramos en un bucle infinito (AVRs nunca deben salir de la función principal). La siguiente función utiliza operadores bit a bit, si desea hacer cualquier programación dispositivos integrados, debe familiarizarse con esto. Un buen tutorial está aquí:. Lo que hace el código, en un apuro, es alterna el en estado de Pin 1 y 2 en Puerto C.
Para algunos formatos de instructables la razón ^ = en un exponente a veces, así que disculpas. También no tuvo gusto de la < y > todo (supongo piensa que es una etiqueta html de pícaro).
La función Delay_ms(1000) hace que el programa pausa para 1000ms (o un segundo) y luego sigue.
Por lo tanto, debe ser bastante obvio donde esta, hay un bucle infinito (como while(1) siempre es cierto) y cada vez el bucle itera, cambia el pin y retrasa un segundo, dándonos una agradable luz de intermitente de 1Hz.
Usar el makefile abajo, pero cambiarle el nombre a 'makefile' primero.
A continuación enviar esto al programador y subirlo!