Paso 5: Escribir, subir y ejecutar el código AVR
¿Has preguntado aún cómo el 74C922 destila 8 bits de datos en líneas de datos sólo cuatro? Si has leido mi instructable usted probablemente habría averiguado lo. Bueno, tal vez ha ya averiguado lo. ¿Una vez que has hecho una tabla de verdad que has hecho a ellos, bien? :) Los 8 pines desde el teclado está codificado en binario con los pernos de cuatro datos. He hecho una tabla de verdad para usted.
Si está claro lo significa, echa un vistazo a mi instructables otros, o hacer una búsqueda de "tabla de verdad" o "lógica binaria" en su buscador favorito.
Lógica del código
No estoy seguro de entrar en los detalles de mi código cuando esté disponible para su descarga es apropiado, pero voy a introducir algunas cosas aquí y si eres una vieja sal en esta materia que puede saltar más allá de ella, de lo contrario espero que puedo enseñarte algo.
- Busque una bandera global indicando que están listos para proceso de datos
- Cuando cambia la clavija de datos disponible a alta
- Leer los pines de datos
- Conjunto de bits en un registro de propósito general debajo de 0xFF
- Establecido "disponible para el procesamiento de datos"
- Procesar los datos y hacer lo que queramos con ella
Secciones del código
He incluido un archivo zip para esta sección que contiene el archivo principal y un par de archivos axilares. Eres libre de sacar las cosas USART y a compilar el archivo principal o lo que quiera. Por lo tanto, a cubrir brevemente cómo funciona el código.
Declaraciones
Esta sección es bastante explica por sí mismo así que no entraré en él nada más excepto para llamar atención sobre los archivos de cabecera locales que he incluido que puede o no puede utilizar o eliminar.
Inicialización de
Hay dos subdivisiones para iniciar en este programa:
1. el sistema USART
2. la interrupción en el sistema de manejo
Es seguro eliminar la materia USART si quieren se comunican a través del cable USB o una consola serial externa vía un chip max232 y quite todas las referencias a él. Por lo tanto, no incluirlo siguiente ya que es fuera del alcance de esta guía.
Interrumpir el servicio de controladores
Este es el manejador de interrupción de cambio de pin. Algunas cosas en cuenta:
1. es muy corto
2. no funciones se llaman dentro del mismo
3. esta interrupción se llamará en cualquier cambio de nivel de lógica, eso significa que cuando los datos disponibles se alto (que queremos) y cuando se baja (que no nos importa).
4. un indicador global se establece y devuelve el manejador de interrupción para permitir que el bucle principal manejar el resto.
5. estoy usando un registro de I/O de propósito general debajo espacio de 0xFF. Esto significa que el acceso es muy rápido.
Principal
Todo lo que tenemos que hacer aquí es el bucle mientras se comprueba si están disponibles para procesar datos. Si es así, hacer nuestra magia, establecer nuestras banderas y trabajar registros a cero y volver.