Paso 3: Software
El enlace de software se enumera a continuación. Aunque está dirigido para el 12F683, fácilmente es portado a versiones más grandes de la PIC. Sobre todo requiere cambiar nombres como TRISIO TRISA y GPIO a PORTA. Usted también tendrá que 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. Como hemos visto antes, la 16F688 (14 pines PIC) podría utilizarse con las mismas conexiones pin físico como el 12F683, si quieres más pines de I/O.
El programa comienza con el código de I2C para la interfaz de LCD en el episodio 22. En ese ejemplo todos nos preocupado estaba escribiendo para el bus serie I2C. Con la adición de la RTC y EEPROM tenemos ahora incluyen capacidades para la lectura del bus serie I2C. Una I2C leer operación comienza con escribir la dirección del dispositivo I2C (ahora tenemos tres dispositivos en el bus). Se sigue escribiendo la memoria o registro de ubicación de la RTC o la EEPROM. En ese momento, la foto cambia la línea SDA para ser una entrada y utiliza la línea SCL para los bits de datos de la RTC o el EEPROM del reloj. Al final de cada byte recibido, el PIC envía un reconocimiento al dispositivo esclavo.
Además el nuevo I2C leer rutinas, hay un montón de rutinas de interfaz a la RTC y la EEPROM. RTC capacidades incluyen escritura de datos de inicialización, lectura de los registros de tiempo y lectura de los registros de temperatura. La temperatura parece ser una capacidad de bono pero carece de precisión en comparación con los sensores de temperatura dedicado. Aunque tenemos acceso a los enteros y partes fraccionarias de la temperatura obtenemos sólo precisión +-3 grados. Además, la temperatura no es del aire circundante. Es la temperatura interna del chip que se utiliza para compensar el oscilador de reloj. El RTC son unos registros distintos de la información de fecha y hora utilizada aquí. Incluyen un par de alarmas y también un registro para controlar la frecuencia de salida onda cuadrada (SQW) en el módulo. También existe un registro de control que le permite cambiar de modo de tiempo de 24 horas a 12 horas.
Las rutinas para el control EEPROM básicamente a leer y escriben operaciones. El tamaño de la memoria es de 32 k bytes y se organiza como 128 páginas, con cada página que contienen 256 bytes. Esto significa que la dirección de la EEPROM es dos bytes, el primer byte es la página y el segundo byte es la ubicación dentro de la página. En el código de ejemplo el valor del entero de la temperatura se escribe en la EEPROM una vez por minuto. La temperatura incluye un bit de signo para que cada almacenamiento utiliza dos ubicaciones de memoria porque, en ese momento, la temperatura y la muestra se han convertido en caracteres ASCII. Hace para un máximo de 16384 puntos pero, por simplicidad, que número se limita a 9999. Lo que el software actualmente se escribe la dirección de la escritura se reiniciará en cada encendido del PIC. Puede modificarse para que la última dirección conocida de la escritura es también guarda en la EEPROM y luego leer detrás encendido.
Como se mencionó en la sección de hardware, cada uno de los dos interruptores hace deber doble. Cuando se presiona el interruptor 1 el software entra en el modo de inicialización de tiempo. Una vez en el modo de inicialización, interruptor 2 incrementos a través de los valores para cada parte de la hora y fecha. Por ejemplo, se pueden cambiar a través de 0-23 horas. Después de establece el valor deseado para una opción, pulsar el interruptor 1 avanzará a la siguiente opción fecha/hora. Cuando se han completado todas las opciones (día de la semana es la última opción) pulsar otro interruptor 1 hará una salida del modo de inicialización.
Durante la visualización de la fecha normal, una prensa de interruptor 2 hará que el software entrar en la EEPROM leída modo. La pantalla mostrará un contador de la línea 1 que indica que la entrada se lee (1-9999) y total cuántas entradas se han almacenado desde el encendido. Línea 2 de la pantalla mostrará el valor de la temperatura de ese lugar de almacenamiento. Cada pulsación del interruptor 1 avanzará al siguiente valor almacenado en la EEPROM. Si ha leído todos los valores almacenados, la pantalla mostrará "DONE". Una prensa de interruptor 2 hará una salida de la EEPROM leída modo en cualquier momento durante el proceso.
Bueno, eso es para el episodio 23 de la "Diversión con foto montaje". Estad atentos para más episodios.