Paso 9: Blinky-significado de las declaraciones de codificación
Las referencias ofrecen algunos muy buenos libros y artículos para aprender C y C++ para los microcontroladores de Atmel [5-8, 11]. Los artículos a continuación esencialmente siguen el orden encontrado en el programa uno de Binky.
#include: una directiva del compilador para incluir un archivo de encabezado en el código con los métodos y funciones especificadas. La mayoría de los archivos de encabezado se puede ver colocando el cursor del ratón sobre el nombre y clic derecho y seleccionar 'ir a la aplicación'.
AVR/IO.h: se compone de otros archivos de encabezado (es decir, extensiones .h) para el MCU específico [17]. Los archivos de encabezado son palabras clave como DDRB, PORTB, PB0, TIMSK TCNT0. Al parecer no puede considerarse io.h con 'ir a la aplicación' se describe en el artículo 1.
util/Delay.h: métodos para retrasar la ejecución del programa. Incluye milisegundos de retraso y otro de microsegundos.
#define x y: A Directiva de compilación para sustituir el texto y cada vez que el texto x es encuentro en el programa. A menudo se utilizan las definiciones del compilador para que el programa puede ser cambiado fácilmente sin buscar a través de todo el código para todos los lugares para cambiar un parámetro cuando sea necesario.
#define F_CPU 8000000UL: el compilador sustituirá a 8000000UL para el texto 'F_CPU' cuando encontró en el código. Nota: el archivo de encabezado delay.h requiere la F_CPU ser definido antes de importar delay.h desde el archivo delay.h utiliza el F_CPU. La 8000000UL se refiere a la velocidad de reloj. En nuestro caso, estamos utilizando 8MHz seleccionado por los fusibles. Sin embargo, F_CPU de 16000000 sería correcto para un cristal de 16MHz por ejemplo. La UL al final se refiere a tiempo valores enteros sin signo.
int Main: main es una función que deben incorporar todos los programas C y C++. La ejecución del programa comienza en la función 'principal'. La palabra clave 'int' indica que 'principal' puede devolver un entero (16bits). Funciones tienen argumentos en paréntesis (). En este caso, 'void' indica que la función no utiliza un parámetro. Si tuviéramos el vacío de la palabra clave precede el nombre de función como por ejemplo en 'void main' entonces la función no devolvía un valor - sería una subrutina.
Llaves {}: El rango de código de definición de la función 'main' es dentro de {}. De hecho, las estructuras de codificación más de C y C++ (por ejemplo, 'cambiar' y 'si') uso llaves {} para indicar que su ámbito de aplicación. No se olvide de incluirlos!
Punto y coma: Declaraciones de codificación son terminadas por el ';'. La declaración puede ejecutar a través de varias líneas de texto según sea necesario.
_delay_ms(x): un método (es decir, función) definido en delay.h que retrasa la ejecución del programa por x milisegundos. En nuestro caso, x = 1000 y así el retardo es de 1000mS, que es 1 segundo. Aviso tha el paréntesis rodean el parámetro x.
DDRB = 0b00000001: registro de dirección de datos para el puerto B. B0 será una salida y el resto serán entradas. Para el ATTiny 2313A, el B0 es Pin12.
PORTB = 0b1: B0 Sets a 1, que se traduce en Vcc en la física del perno (12) correspondiente a B0. Una manera más simple y preferida para escribir esta declaración es PORTB = 1; o PORTB = 0 x 01;
PORTB = 0 X 00; B0 se establece en 0, que se traduce en 0v en el pin físico (12), correspondiente a B0. Esto también se podría escribir como PORTB = 0;
while(x): el MCU se ejecute las instrucciones entre los dos subsiguientes correspondientes llaves {} siempre que la declaración es verdadera x. La x podría cuestionar si dos variables a y b son iguales como un == b (Nótese el doble igual). En nuestro caso, queremos que el LED parpadee continuamente para que las declaraciones entre las abrazaderas deben ejecutar continuamente. Podríamos escribir ' while(true == true)' donde '==' es el operador de C/C++ control de igualdad lógica (un medio único de '=' para asignar algo a una variable como por ejemplo en z = 3). La instrucción 'while(true==true)' causaría el bucle infinito siempre es cierto que queremos desde 'true'. En nuestro caso, 1 se toma para ser un 'verdadero'. Tan 'while(1)' hará que el bucle infinito porque es el atajo para escribir 'mientras' que es un atajo para escribir 'while(true=true)'.