Paso 3: Software
El enlace de software se enumera a continuación. Mientras que está dirigido para el 12F683, 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.
Normalmente sería definir un pin de I/O como entrada o una salida para cualquiera que sea la función que estábamos usando. En este caso, sin embargo, tenemos la obligación de cargar el condensador y luego vuelta y simultáneamente drenaje y monitorear la tensión del condensador. El registro TRISIO controla la dirección de los pines de I/O por lo debe ser modificado cada ciclo de tiempo de espera. También, puesto que el registro TRISIO y GPIO en diferentes bancos, tenemos que asegúrese de que ejecute el comando BANKSEL correcto cada vez.
El tiempo de carga necesario para el condensador está determinado por la fórmula T = R * C donde T está en segundos, R está en ohmios y C es en faradios. Para los valores de ejemplo en el diagrama, esto significa un mínimo de 11ms. El código que empecé con tenía una rutina de retardo de 100ms para a la izquierda en lugar de recortar hacia abajo más cerca del mínimo requerido. Si realmente buscas para minimizar en general uso de la energía, entonces usted podría fácilmente reducir ese retraso. Francamente, no resultar en ahorros de costos porque la mayor parte del tiempo se gasta en reposo. Lo que funciona para ahorro de energía es reducir la velocidad de reloj por lo que en este ejemplo establecemos el reloj interno a su tasa más baja (31-kHz) despejando los bits de control de frecuencia en OSCCON. OSCCON normalmente por defecto para usar la tarifa de reloj interno de 4 MHz. Un otro tip de ahorro de energía debe configurar todos los pines GPIO no utilizados como salidas.
Obviamente este ejemplo no será un ahorro de energía porque nos estamos uno de los LEDs de iluminación todo el tiempo, incluso durante el reposo. Sin los LEDs medí sueño modo corriente de unos pocos microamperios. Si no cuidamos sobre ahorro de energía o si tenemos que hacer algo en el código durante el período de tiempo de espera, podemos eliminar la instrucción SLEEP. En cualquier caso, el tiempo de espera genere una interrupción. En nuestro ejemplo el manejador de interrupción simplemente recarga el condensador cambia los LEDs y luego borra GPIF (GPIO bandera de interrupción). La salida desde el controlador de interrupción restablece automáticamente la bandera GIE (General interrupción habilitar). Bueno, eso es para el episodio 7 de diversión con PIC "montaje". Estad atentos para más episodios.