Paso 3: Software
El enlace de software se enumera a continuación. Mientras que se destina a la 16F688, fácilmente se adaptó a otras versiones de la foto. Usted necesitará cambiar la línea que identifica la versión de PIC (lista =) y el archivo de inclusión, pero los cambios intuitivas. La línea __CONFIG también necesite ajustar sólo porque uno o dos de las etiquetas utilizadas se deletrean diferentemente en algunos de los archivos de inclusión. Sólo asegúrese de que el PIC que uso tiene un pasador que permite una entrada de interrupción externa (generalmente etiquetados como EXT o INT).
El software de línea de base fue copiado directamente de lo que se utilizó en el episodio 2 con las rutinas de LCD eliminadas y las pequeñas modificaciones hechas para el 16F688 para reemplazar el 12F683. El software nuevo que se agregó ahorra todos los cuatro bytes del código IR recibido y luego corre a través de un simple juego de lógica para determinar si es un comando válido. Cada rutina de "tecla" alterna una línea de salida de alta a baja de 50ms simular una tecla del panel frontal. El tiempo de retardo de 50ms arbitrariamente se escogió porque la mayoría microprocesadores decidirá que es pulsar una tecla válida si la entrada no ha cambiado de valor (bounced) por eso mucho tiempo. Usted puede alargar ese tiempo, si es necesario, pero no acortarla.
En el episodio 2 simplemente enviado cada byte recibido a la pantalla LCD y no tenía necesidad para salvar la secuencia entera de cuatro bytes. Sin embargo, en esta aplicación, salvamos los cuatro y luego analizarlos datos válidos. Usted verá en la sección de declaración de variable que he definido Byte1, Byte2, Byte3 y Byte4. Mientras que sólo podríamos agregar código para determinar qué bytes hemos recibido y luego escribir en la variable apropiada, es código más eficiente para abordar los cuatro bytes como un array en C. El PIC nos permite hacer esto proporcionando un par de registros (FSR y INDF) para realizar direccionamiento indirecto. Se puede ver cómo eso se hace en la rutina de "Save_Byte". En este caso sabemos que nos va no cruzar un límite de página (256 bytes) por lo que sólo hay que preocuparse sobre la configuración de los 8 bits inferiores de la dirección de datos. Otra cosa a destacar en esta rutina es que esperamos incrementar "Byte_Count" hasta después de que lo utilizamos como un índice de dirección. Eso es porque el índice debe ser de 0-3 para nuestros datos mientras "Byte_Count" va de 1-4 contando recibe bytes de IR.
Como he mencionado anteriormente, la caja del amplificador tiene un microprocesador que determina lo que debe hacer para cada tecla. He encontrado que hace un par de cosas peculiares que me gustó por lo que parte del software ha sido añadido a "corregir" los
rarezas. Una de las cosas que hace es poder en desde el modo de espera cuando se pulsa cualquier tecla, no sólo la tecla de encendido. Podría parecer como una cosa aceptable pero causaba algunas complicaciones cuando estaba escribiendo el software. Para simplificar cosas, he añadido un cheque de la bandera de "Power_Up" en la rutina de descodificación para saltar todos los comando descifrar que el encendido si la caja del amplificador está en modo de espera.
La caja del amplificador también puede establecer el modo (estéreo) 2.1 o 5.1 (surround) modo. Lo estoy usando para un único conjunto de altavoces así que lo quiero siempre en el modo de 2.1. Por desgracia, el microprocesador en la caja del amplificador establece el modo como cada vez que la caja va de Standby a On o en cualquier momento que se cambia la fuente de entrada de audio de 5.1. Rutina "Mode_2_1" se llama en la transición del modo de espera al y cambia los canales del altavoz 2.1. Encontré que necesitaba sobre un retraso de 1 segundo después de la energía de antes de la orden de los canales de altavoz entraría en vigor. También he añadido código para "Source_Sw" para cambiar al modo 2.1 después de cambiar el audio de entrada fuente pero que requiere un más corto retrasa antes de que el segundo comando podría emitirse.
Bueno, eso es para el episodio 10 de diversión con PIC "montaje". Estad atentos para más episodios.