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. Sólo asegúrese de que usted elija uno que tiene la entrada puerta de Timer1 (T1G) y una entrada de interrupción externa (INT o EXT). 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.
El manejador de interrupción aquí es un poco más elegante que la utilizada en el episodio 2, no porque tiene que ser, sino porque demuestra cómo puede manejar múltiples fuentes de interrupción. Básicamente sólo Compruebe para ver que bandera de interrupción individual ha sido conjunto y luego ir ese controlador. Si más de una bandera de interrupción se ha establecido puede comprobarse desde dentro del manejador de interrupción o simplemente volver de la interrupción. Si todavía está otra bandera de interrupción, el manejador de interrupción se activará automáticamente.
Como se indica en el encabezado del software, el módulo ultrasónico requiere un 10us o pulso de gatillo más largo. Luego toma hasta 38ms el pulso eco completar, con 38ms considerada un valor "sin eco". La rutina de Ping envía un pulso de disparador de sobre 14us y luego espera 50ms para el pulso de eco. Se espera que la interrupción ocurrirá durante ese tiempo de retardo. El manejador de interrupción sólo guarda los valores de la cuenta de temporizador 1 (los 16-bits) y luego borra el temporizador y la bandera de interrupción externa. La habilitación de interrupción general (GIE) se vuelve a activar automáticamente cuando sale el controlador de interrupción. El retardo de 200ms en el LCD_Loop es un valor arbitrario que limita las actualizaciones de medición de distancia a cerca de 4 por segundo.
El alcance efectivo de los resultados del módulo de ultrasonidos es un pulso máximo de unos 25ms o 168 pulgadas. El software, por conveniencia, ha limitado a un máximo de cerca de 98 pulgadas (3800 hex). Los factores de conversión para tanto en centímetros como en pulgadas se observan en la cabecera del software así que no dudes en modificar la rutina de conversión para extender el intervalo notificable o cambiar las unidades de medida.
La pantalla mostrará el mensaje "xx pulgadas" a menos que la rutina convierte determina que la distancia es mayor que el límite arbitrario de 98 pulgadas. En ese caso, el visor mostrará "Fuera de rango".
Bueno, eso es para el episodio 3 de "Diversión con foto montaje". Estad atentos para más episodios.