Paso 2: El programa
El PIC10F206 es un muy simple interrupciones no parte y sólo una pila de nivel 2, por lo que no puede hacer cualquier subrutinas anidadas-vas Ver liberal uso de goto en el programa como resultado. El chip está funcionando a 4 MHz usando el oscilador interno RC ejecuta instrucciones de 1M por segundo. Cuando un objeto rompe los rayos IR, toma el IS471 acerca de chips 400 Estados Unidos cambiar el estado. De allí la uC necesita unos pocos microsegundos a detectar el cambio y el relé de cierre de la orden. El relé lleva unos 1,5 ms a dando por resultado sobre un retraso total de 2 ms de vigas rotas al relé cerrado.Desarrollé el programa chip usando el MPLAB. Es gratis ensamblador/IDE de Microchip Tech. También usé mi clon chino ICD2 (unos 50 dólares en ebay) realmente programar el IC. Necesitaba utilizar un montón de bucles de retardo, así que sus raíces de la web y encontré un programa llamado PICLoops aquí:
http://www.mnsi.net/~Boucher/picloops.html
PICLoops genera automáticamente código de ensamblador de bucle de tiempo para ti si le dices a qué uC está utilizando y la velocidad de reloj. Más tarde me topé con un programa similar en línea aquí:
http://www.piclist.com/techref/piclist/CODEGEN/Delay.htm
El segundo se generará retrasos que son precisos para un ciclo de reloj único donde PICLoops no es tan precisa. Tampoco está muy bien para esta aplicación porque tiempo no es crítico y la uC se está ejecutando en un oscilador RC de todos modos.
El programa principalmente bops y hacia atrás entre comprobando el botón mode y a comprobar si las vigas son interrumpidas. El interruptor de modo funciona por mantener una cuenta corriente del número de veces el botón ha sido presionado. Cada vez que se pulsa el botón el retraso entre los pulsos al relé obtiene acortado lo suficiente al paso de la frecuencia del pulso por 1 Hz. La mayor parte del código es las demoras diferentes utilizadas por los modos de pulso.
Cuando se cambia el modo de pulso el LED destella para indicar que el nuevo modo. Usted puede decir lo que la nueva frecuencia del pulso es contando los parpadeos de LED - 4 veces significa 4 Hz, etc.. El LED parpadea ha sido tiempo bastante lento que podrás contar. Si la unidad está en modo de pulso de 10 Hz, pulsar el botón otra vez te lleva volver a modo continuo.
Hay un contador de tiempo del perro guardián que se ejecuta mientras el programa se ejecuta. Si no reinicia el temporizador antes de se desborda, la uC se resetea. Por esta razón sosteniendo que el botón de modo durante 2,3 segundos provoca la uC restaurar a modo continuo. Cuando usted empuja el botón, la uC espera lanzar antes de hacer nada. Una de las primeras cosas que hace después de que la libere es reiniciar el temporizador perro guardián. Si no suelta el botón, el temporizador perro guardián se desborda y reinicia el programa en el modo continuo.
He adjuntado la Asamblea listado archivo para aquellos que son curiosos y el archivo .hex para aquellos que sólo quieren quemar el chip y hacer con ella. Acojo con satisfacción cualquier crítica de mi técnica de programación de cualquiera de usted foto montaje expertos por ahí.
Nota: el relé se cierra durante ms de 25 cuando opera en modo de pulso. Algunas cámaras pueden requerir un pulso más largo. Ese retraso se encuentra en la línea que dice "call delay25" cerca de la parte superior de la sección rlypuls del código. Si ms 25 es demasiado corta para la cámara, cambiar esa línea para decir "call delay50", entonces cambiar la línea que dice "call delay75" para decir "call delay50". Aumentará el tiempo de pulso de 50 ms y conservan todas las frecuencias del pulso en pasos de 1 Hz incluso.
El programa ocupa sólo 173 bytes de los 512 bytes disponibles en el chip, lo que permite incorporar a todo tipo de funcionalidad a lo si lo desea, aunque la interfaz de usuario va a ser algo limitantes.