REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD RAFAEL URDANETA FACULTAD DE INGENIERIA ESCUELA DE COMPUTACIÓN S O D VA R E S E R S HO EC R E D DESARROLLO DE UN SISTEMA DE INFORMACIÓN PARA EL CONTROL DE RIEGO DE PASTOS EN HACIENDAS GANADERAS Trabajo Especial de Grado para optar al Título de Ingeniero en Computación Bachilleres: Borhot Hamoud, Agadir C.I. 14.945.647 Romero Sandoval, Adalberto C.I. 13.471.014 Tutor: Ing. Nerio Villalobos JULIO, 2002 i Este Jurado aprueba el Trabajo Especial titulado DESARROLLO DE UN SISTEMA DE INFORMACIÓN PARA EL CONTROL DE RIEGO DE PASTOS EN HACIENDAS GANADERAS, que los Bachilleres Borhot Hamoud, Agadir y Romero Sandoval, Adalberto presentan para optar al S O D VA R E S Título de Ingeniero en Computación. E R S HO EC R E D Maracaibo, Julio del 2002 ………………………………. Tutor ………………………………. ………………………………. ………………………………. ………………………………. ii DEDICATORIA Primeramente a Dios, por guiarme y darme la ley para conseguir mis metas, a la Virgen de Betania, por darme esa fé que nunca perdí. S O D VA R E S E R S HO A mis Padres, por ser pilares fundamentales en mi crecimiento como EC R E D ser humano; gracias por tanto amor y sobre todo por orientarme hacia el buen camino, y desarrollar en mí el respeto y amor hacia los demás. A ti Mami, por ser ejemplo de constancia y fuerza de voluntad, luchando siempre con las adversidades, dándome la ternura y la paciencia que siempre recibí de ti. A ti Papá, por mostrarme lo bueno, lo malo y confiar tanto en mi. A mis Hermanas y Hermanos, por estar siempre conmigo y ser incondicionales en todos los momentos importantes de mi vida. A ti Lala; mi mejor amiga por soportarme y ser algo más que mi hermana; mi apoyo y mi fuerza cuando sentí que decaía. Te quiero Mucho!!. iii A ti, porque a lo largo de estos años me has brindado felicidad y alegrías que se transformaron en sonrisas que cultivé y que lograron despertar en mí el deseo de ser cada vez mejor. S O D VA R E S E R S HO EC R E D iv Agadir. DEDICATORIA A Dios, mi señor y creador omnipotente, por hacer de mí lo que hoy soy. S O D RVAmi sendero. A mí siempre madre Virgen María,S por iluminar E E R S HO C E DER A mis seres amados: Mis Padres y Hermanas, que siempre me apoyaron y estuvieron conmigo en todo momento. Adalberto. v AGRADECIMIENTO Agradezco infinitamente a Dios por todas las cosas que me ha dado. S O D VA R E S A mis Padres; por haberme ayudado a ser hoy lo que soy, por E R S HO educarme y quererme tanto, gracias los amo. EC R E D A mis Hermanas y Hermanos por apoyarme y aconsejarme con tanto cariño, gracias por haber confiado en mí. A ti Lala; por ser mi confidente y mi mejor amiga. A ustedes; Omar y Adnen, por ser parte de mi carrera y por estar a mi lado en todo momento. A mis Cuñadas, por escuchar siempre mis problemas y por ser mis grandes amigas; en especial a Badia por quererme como si fuese su hija, y por brindarme su hogar para poder alcanzar esta meta. Gracias de verdad. A mis Sobrinas y Sobrinos, por ser tan dulces y tiernos conmigo, en especial a mi sobrina Abir por estar siempre a mi lado. vi A mis Profesores; en especula al Ing. Nerio Villalobos por enseñarme lo que sé y ser ese gran amigo. Al Prof. Pedro Méndez por ayudarme en los primeros pasos de mi carrera. Al Ing. Víctor Galban, por ser tan comprensible conmigo. A la Prof. Betilia Ramos, por brindarme su gran ayuda en la elaboración de mi tesis. S O D VA R E S E R S HO EC R E D A mis mejores Amigas: Cristina Mango; Erika Moreno; Mariana Duarte; Angela Vargas; Moraima Pérez; Eyirda Sánchez, gracias por esa ayuda y los momentos hermosos que hemos vivido. A mis amigas y compañeras: Yenis Ibáñez, Walqueria Romero, Meyla Lisboa, Edilsa Morán, Yenipher Martínez, Lisnora Quiroz, Edilma Sánchez, Rosita Mauzo, Yunis García, Irene Reyes, Solaine Villalobos, Roxymar Martínez, Aura Durán, Mary Chacín, María Albertina, María Valencia, Mary Rincón, Maryory Urdaneta. A mis mejores Amigos y Compañeros: Kenny Ferreira por brindarme siempre su alegría y paciencia. Adalberto Romero, por haber compartido este proyecto conmigo. Roberto Machado, por ser mi amigo incondicional, a Darwin Bonilla, Luis Longard, Marcos Palmar, Reinier Rodríguez, Alberto Ortega, Like Rincón, Rubén Martínez, Elio Cuevas, Aldrin Vilchez, Hebert Lisboa, Idelmiro Ferrer, Alfonzo Chacín, Luis M. Urdaneta, Ernesto Martínez, vii Jean Carlos, Darío Méndez, Argenis Corzo, Ivan Piacuda, José Fuenmayor, Eduardo, Gregorio, Rafael Zuleta, Alonzo, Carlos Piña, Víctor Romero, Jesús Peralta, Jesús Brito… Mil gracias a todos! S O D VA R E S Y finalmente, a todos aquellos que a través de su apoyo y ejemplo E R S HO contribuyeron a el logro de esta meta. EC R E D Agadir. viii AGRADECIMIENTO A mis padres, mis grandes tesoros sobre la tierra; por hacer suyas mis S O D VA R E S preocupaciones y mis ideales. E R S O por apoyarme siempre. A mis hermanas yH sobrinos, C E DER A mi novia, puesto que su lucha porque desistiera de mi ideal, fortaleció mi empuje y entrega para la culminación de mi proyecto. A todas aquellas personas que me animaron en momentos difíciles, a mis amigos y compañeros de estudio. ¡Mil Gracias! Adalberto. ix RESUMEN Borhot A., Agadir; Romero S., Adalberto E. DESARROLLO DE UN SISTEMA DE INFORMACIÓN PARA EL CONTROL DE RIEGO DE PASTOS EN HACIENDAS GANADERAS. Trabajo Especial de Grado para optar al Título de Ingeniero en Computación. Universidad Rafael Urdaneta. Julio 2002 S O D VA R E S E R S HO EC R E D Los sistemas de riego han sido de gran ayuda para el sector ganadero, ya que permiten tener un pasto verde en tiempo de sequía y verano. La siguiente investigación tiene como objetivo implementar un sistema programable de riego para pastos en haciendas ganaderas. Se realizó un análisis de los sistemas de riego existentes en el mercado en donde se pudo constatar la poca efectividad de los mismos. Posteriormente se realizó un sistema de información para el control de riego de pastos con la finalidad de hacer un trabajo más fácil al momento de la utilización de dicho sistema en las haciendas ganaderas. El sistema diseñado es amigable para el usuario, debido a que su operación es sencilla, además el sistema desarrollado posee un bajo costo, resultando atractivo para los ganaderos. Este sistema cubre una gran necesidad por parte de los ganaderos debido a que permiten trabajar por tiempo y de manera sencilla la actividad de riego. Palabras Claves: Sistema, Riego, Programable, Información, Control, Haciendas. x INDICE GENERAL Pág. VEREDICTO……………………………………………………………….. ii DEDICATORIA……………………………………………………………. iii AGRADECIMIENTO………………………………………………………. vi RESUMEN…………………………………………………………………. x INDICE GENERAL………………………………………………………… xi INTRODUCCIÓN…………………………………………………………. 1 CAPÍTULO I: EL PROBLEMA…………………………………………… 4 1. PLANTEAMIENTO DEL PROBLEMA……………………………….. 4 1.1. FORMULACIÓN DEL PROBLEMA…………………………….. 6 2. OBJETIVOS DE LA INVESTIGACIÓN……………………………… 6 2.1. OBJETIVO GENERAL…………………………………………… 6 2.2. OBJETIVOS ESPECÍFICOS……………………………………. 6 S O D VA R E S E R S HO EC R E D 3. JUSTIFICACIÓN E IMPORTANCIA DE LA INVESTIGACIÓN……. 7 4. DELIMITACIÓN DE LA INVESTIGACIÓN…………………………… 8 CAPÍTULO II: MARCO TEÓRICO……………………………………….. 10 1. ANTECEDENTES………………………………………………………. 10 2. FUNDAMENTACIÓN TEÓRICA………………………………………. 15 xi Pág. 3. DEFINICIONES DE TÉRMINOS BÁSICOS………………………….. 22 CAPÍTULO III: MARCO METODOLÓGICO……………………………… 27 1. TIPO DE INVESTIGACIÓN…………………………………………….. 27 2. METODOLOGÍA………………………………………………………… 28 3. FACTIBILIDAD DEL PROYECTO…………………………………….. 30 3.1. FACTIBILIDAD TÉCNICA………………………………………… 30 3.2. FACTIBILIDAD ECONÓMICA……………………………………. 31 CAPÍTULO IV: ANÁLISIS DE LOS RESULTADOS…………………….. 33 CAPÍTULO V: MANUAL DEL USUARIO…………………………………. 40 CONCLUSIONES…………………………………………………………… 43 RECOMENDACIONES……………………………………………………… 45 REFERENCIAS BIBLIOGRÁFICAS……………………………………… 47 S O D VA R E S E R S HO EC R E D ANEXOS. xii INTRODUCCION Los sistemas de riego resultan una herramienta imprescindible a nivel mundial, en el caso de Venezuela, estos tienen un lugar muy importante para el Agro y la Ganadería en todo el país. S O D VA R E S E R S HO EC R E D De este modo, el presente trabajo especial de grado dirige su investigación en implementar un sistema programable de riego para pastos en haciendas ganaderas.. El contenido se desarrolla en cinco capítulos: Capítulo I refiere al planteamiento y formulación del problema, la justificación, los objetivos y delimitación de la investigación. Por su parte, el Capítulo II desarrolla el Marco Teórico, exponiendo los antecedentes, fundamentaciones teóricas y definición a los términos básicos. El Capítulo III, refiere los lineamientos metodológicos seguidos en el estudio. Adicionalmente se hace referencia a las herramientas utilizadas para la realización del sistema propuesto de riego. xiii El Capítulo IV, trata sobre los resultados obtenidos con su correspondiente análisis y explicación. El Capítulo V, se refiere sobre el Manual del Usuario para el Sistema de Riego Programable. S O D VA R E S E R S HO EC R E D Por último se exponen conclusiones del trabajo aportándose una serie de recomendaciones. xiv CAPÍTULO I EL PROBLEMA S O D VA R E S E R S HO 1. PLANTEAMIENTO DEL PROBLEMA. EC R E EnDla actualidad, los sistemas de riego existentes a nivel mundial, específicamente en Venezuela, abarcan un lugar importante dentro del Agro y la Ganadería. Estos sistemas de riego han sido de gran ayuda para el sector ganadero, ya que permiten tener un pasto verde en tiempo de sequía y verano. Pero se han presentado ciertos inconvenientes en el manejo de estos sistemas y que son operados manualmente por una persona, que no lo realiza de la manea más eficiente ocasionando inexactitud en el suministro de agua, por no tener un patrón que indique la cantidad de flujo (agua) necesaria para obtener un regado que estimule la producción del pasto. En ocasiones el operador sobrepasa el nivel en los potreros y otras veces lo deja en niveles muy bajos lo que ocasiona perdidas en los cultivos del pasto. xv Esto trae como consecuencia una mala alimentación en el ganado ya que el pasto constituye la base alimenticia de estos animales. Al no alimentarse adecuadamente presentan baja producción de leche, trayendo pérdidas a los ganaderos, ya que ellos obtienen la mayor parte de su S O D VA R E S sustento de la venta de la leche; por esta razón es necesario realizar los E R S HO sistemas de regado de una forma automatizada, ya que su funcionamiento EC R E D depende de un obrero que percibe un salario por la supervisión de este sistema, el cual no se realiza de una forma adecuada, lo que representa otra fuga de dinero para los ganaderos. El hecho de que el regado lo haga una persona, que no lo realiza de la forma más adecuada, y produce en ocasiones un regado excesivo lo que trae consigo un derroche de agua. Esto significa que le está cancelando a una persona que no realiza el trabajo adecuadamente lo cual significa un gasto no justificado para los ganaderos, además que este derroche de agua causa que el ganadero deba costear más dinero (innecesariamente) por el consumo eléctrico de las bombas, las cuales trabajan tiempos mayores a los debidos. xvi 1.1. FORMULACIÓN DEL PROBLEMA. De lo anteriormente expuesto en el planteamiento surge la siguiente interrogante: S O D VA R E S E R S HO ¿Cómo desarrollar un sistema información para el control de riego de EC R E D pastos en las haciendas? 2. OBJETIVOS DE LA INVESTIGACIÓN 2.1. OBJETIVO GENERAL. Implementar un sistema programable de riego para pastos en haciendas ganaderas. 2.2. OBJETIVOS ESPECÍFICOS. Indagar sobre los sistemas de riego existentes. Estudiar los diferentes microcontroladores existentes en el mercado. Depurar la interacción entre el Software y el Hardware. Seleccionar el microcontrolador adecuado. Implementar un Software que controle las señales del campo. xvii Verificar el funcionamiento correcto del prototipo desarrollado. 3. JUSTIFICACIÓN E IMPORTANCIA DE LA INVESTIGACIÓN. S O D VA R E S En la actualidad los sistemas de riego han adquirido un alto valor en el E R S HO agro ya que proporciona beneficios, por esta razón se ve la necesidad de EC R E D desarrollar un sistema automatizado que controle las variables a medir. El desarrollo de este sistema reducirá el trabajo manual al mínimo logrando un regado eficiente, que permitirá el crecimiento de un pasto apto para el consumo animal y por ende el aumento de la producción lechera. Por otra parte, la cantidad de fluido de agua será controlada ya que este sistema cuenta con un medidor de flujo que evita gastos innecesarios de agua. Cabe destacar que esta investigación es de gran importancia para los ganaderos ya que con la automatización de estos sistemas de riego beneficiamos su producción lechera. Por otra parte estos sistemas son de fácil instalación y económicos debido a que los materiales se encuentran disponibles en el mercado, fácil de manejarlos y el mantenimiento es mínimo. También no será necesario la supervisión permanente del obrero ya que este sistema controla el regado automáticamente aprovechando el tiempo xviii disponible del obrero para que realice otras tareas que contribuya el aumento de la producción. Otro aspecto del sistema de control de riego es el uso de la S O D VA R E S electricidad, como impulsor de las bombas, este factor es importante debido E R S HO a los altos gastos que supone en el presupuesto en el de una organización EC R E D ganadera. Con este sistema reducirá al mínimo necesario el tiempo de operación de la bomba ya que esta permanece encendida hasta que el obrero supervisará el regado, ocasionando altos consumos de electricidad y pérdida en el consumo de agua, la cual se reducirá con la implantación de este sistema. 4. DELIMITACIÓN DE LA INVESTIGACIÓN Esta investigación se realizará en la Villa del Rosario, Municipio Rosario de Perijá del Estado Zulia, en el período comprendido de 6 meses, entre Octubre del 2001 hasta Abril del 2002. xix CAPITULO II MARCO TEORICO S O D VA a los Antecedentes y En este Capítulo se desarrollará lo concerniente R E S E R Situación actual de la investigación, OS Fundamentación Teórica y la Definición H C E de los Términos DERBásicos. 1. ANTECEDENTES. Hernández (1990) realizó un estudio titulado Automatización del Sistema de Inyección de Agua y de Formación del Terminal Puerto Miranda. Esto se llevó a cabo utilizando una metodología descriptiva haciendo estudios sobre las conexiones y especificaciones de los elementos a utilizar en el proceso de inyección de agua. Las conclusiones que arrojó este estudio fueron que el sistema a base de relé presentaban continuas fallas debido al deterioro de sus contactos afrontando así datos errónicos y aumentando las horas, hombres en operaciones. xx De esta manera es recomendable reemplazar el sistema a base del relé por un sistema de control automático con la utilización del P.L.C. (Controlador Lógico Programable). S O D VA R E S Una de las principales semejanzas de la investigación por Hernández E R S HO y la presente con las exposiciones hecha en lo referente a los problemas que EC R E D se presentan por la ineficiencia de control y la carencia del monitoreo del sistema y que además se plantea como solución por medio de un P.L.C. En esta investigación se plantea la implementación de un P.I.C. que es menos costoso y más fácil operación ya que el mismo puede realizar el control del proceso. Entre las ventajas que posee esta nueva tecnología en que esta hecha a base de circuito electrónico que no necesitan mantenimiento preventivo y por su alta capacidad de autodiagnóstico que brinda una mayor seguridad a la hora de efectuar cualquier acción garantizando así que los equipos periféricos estén protegidos y trabajando en el punto óptimo de operación. Como punto coincidente entre las tesis se encontró que ambos están inclinados así en el área de instrumentación y electrónica y entre los puntos no coincidentes en esta tesis no utilizan una gran cantidad de componente electrónico incluyendo el P.I.C. xxi En lo que se refiere a la investigación presentada por Hernández (1990) se observó la utilización de válvulas solenoides en el proyecto presentado, estas válvulas solenoides serán utilizadas en el proyecto que se está realizando ya que dicha válvula sirve para el control de dos (02) S O D VA R E S posiciones (abierto y cerrado). La válvula solenoide es una combinación de E R S HO dos (02) unidades funcionales básicas actuador y en el cuerpo, estos EC R E D funcionan de la siguiente manera; a la bobina de la solenoides llega la señal eléctrica proveniente del control esta se ennegrecerá trayendo como consecuencia la reacción de un campo magnético la cual atraerá el núcleo. Como el núcleo esta acoplado al tapón esta se moverá para abrir o cerrar el paso del fluido (agua). Por otra parte, Barboza y Ramírez (1998) realizaron un estudio titulado Desarrollo de un Sistema de control con Microcontroladores para la Supervisión Continua de Riego en Zonas Agrícolas. El estudio consistió en llevar a cabo un sistema de control con microcontroladores para la supervisión continua de riego en zonas agrícolas. La investigación se clasifica según su propósito al que es adaptable a diferentes necesidades. Para elaborar el sistema se realiza una investigación xxii de los conceptos y procedimientos que integran la siembra y riego además se realizó un sondeo de opinión en la organización agrícola para así conocer los procedimientos aplicados a los riegos. S O D VA R E S Una de las principales semejanzas a esta investigación son la de E R S HO Barboza y Ramírez ya que tienen como objetivo la supervisión y control de EC R E D flujo en los sistemas de riego y esta se refiere al mismo tópico. En cuanto a la diferencia existente entre ambas investigaciones es que utiliza como medio de control un medidor de flujo el cual tiene una indicación visible de la variable medida en la cual podemos visualizar la cantidad de flujo consumido. Por consiguiente en la investigación planteada se observó la utilización del microcontrolador P.I.C. Hardware y Software ya tiene un estudio de compatibilidad en el programa a efectuar Hardware diseñado en este caso, se va a lograr mediante el lenguaje de programación del microcontrolador P.I.C. cuya programación se logra mediante el sistema P.I.C. Star que es el paquete que permite la programación a través del computador para simulacro en marcha del programa. xxiii Este paquete posee ciertas ventajas debido a que es bajo el ambiente Windows y permite la simulación paso a paso de todas las etapas del programa, así como también la simulación de las entradas que físicamente estarían llegando al computador y por último, permite la programación del S O D VA R E S microcontrolador para su probado físicamente. E R S HO EC R E D En este proyecto también se utilizan la pantalla L.C.D. la cual se utiliza para visualizar la cantidad de flujo, litros por segundo, el tiempo cuando se está realizando el regado. Otro dispositivo importante observado en este proyecto es la implementación de un medidor de flujo que será utilizado en nuestra investigación ya que dicho medidor consiste en un rotor que gira al paso del fluido con una velocidad directamente proporcional al caudal; los pulsos son generados en la bobina detectora, tiene la forma de onda seonidad y si es necesario se puede transmitir electrónicamente a grandes distancias a una gran cantidad de dispositivo de lectura para computación, indicación, registro, control o automatización. xxiv 2. FUNDAMENTACIÓN TEÓRICA. La innovación tecnológica se ha integrado en las haciendas ganaderas, automatizando sus procesos productivos logrando obtener sus S O D VA R E S productos con menos pérdidas de los mismos. E R S HO EC R E D Basado en esta descripción las haciendas buscan adaptarse a estos cambios tecnológicos a través de la automatización de los sistemas de riego de los mismos. El riego permite alcanzar altos rendimientos y calidad de los productos al asegurar el agua indispensable a los cultivos para su desarrollo si no también posibilita el uso de cultivos mejorados de otro potencial productivo y el establecimiento de un mayor número de pastos por hectáreas, todos los sistemas de riego a nivel de hacienda consiste en una fuente de agua: ríos, quebradas, lagunas, pozos, una red de conducción de agua (tuberías) desde la fuente hasta el campo de cultivo, dicha red contará con un mecanismo de fluido. Un medidor de flujo de turbina que conforme gira el rotor de la turbina cada aleta genera un pulso y representa una unidad de volumen litros/segundo para la totalización de flujo. xxv Los pulsos generados por la bobina detectora tiene forma de onda senoidal se puede transmitir eléctricamente a distancia a una gran variedad de dispositivo de lectura para computación, registros o la utilización de válvulas solenoides que son dispositivos de dos (02) posiciones (abierto y S O D VA R E S cerrado) ya que cuando se le aplica un voltaje a su bobina esta produce un E R S HO campo magnético que atrape al embolo y este al obturador de la válvula que EC R E D abrirá o cerrará el paso del fluido de agua para realizar el regado de pasto. Este tipo de control es de lazo abierto ya que se obtendrá una indicación del flujo y el sistema de riego está controlado por un tiempo determinado, es decir, que el campo que sigue la señal es sin retroalimentación. Por consiguiente se encuentran los sistemas de control discreto. Los sistemas digitales realizan todas sus operaciones en binario o algún código discreto, cualquier información que se quiera introducir en el sistema digital debe ser colocada en forma binaria antes que pueda ser procesada por los circuitos digitales. La salida de un circuito digital también está en un código discreto y usualmente de ser transformado según la aplicación que tengan las variables del sistema, por lo general las señales que se analizan en el circuito son xxvi señales analógicas, muchos dispositivos en entradas y salidas de sistemas digitales para servir como vínculo de comunicación del mundo analógico. Estos dispositivos suministran el medio por el cual un sistema digital es capaz de monitorear o adquirir información de un proceso externo y además S O D VA R E S tomar acciones para controlar en el lado de las entradas las magnitudes de E R S HO los procesos monitoreados que son analógico por naturaleza los mismos son EC R E D traducidos y enviados a un convertidor analógico digital el cual transforma la cantidad análoga en una representación digital, la señal ya situada en el sistema digital puede ser usada y llevada de nuevo al mundo exterior usando un convertidor digital analógico; un convertidor analógico digital toma como entrada una señal analógica desconocida usualmente un voltaje y la convierte en una palabra binaria de N BITS la cual puede ser fácilmente manipulada por un sistema digital. Por otra parte cuenta con un modulo L.C.D. que responde a un conjunto especial de instrucciones las cuales deben ser enviadas por el microcontrolador o sistema de control display según la operación que se requiera, esas instrucciones que se envían al display se almacenan en la memoria R.A.N. del módulo cuyos datos son visibles en la pantalla. Estas pantallas de cristal líquido son dispositivos autoelectrónicos diseñados para desplegar información gráfica o alfanumérica sobre generalmente plana, mediante la emisión o absorción de luz. xxvii una pantalla Este cuenta con varias características importantes las formas de utilizarlos y sus interfaces son similares, por eso se pueden emplear cualquiera de ellos. S O D VA R E S Algunos módulos L.C.D. tienen luz posterior o “Backlight” para mejorar E R S HO su visualización, la cual se maneja a través de dos (2) pines que EC R E D normalmente se conectan a + 5 v y a tierra, para evitar que se presenten altas temperaturas debido a la luz posterior. Los pines de conexión de estos módulos incluyen un bus de datos de ocho (8) bits, un pin de habilitación (E), un pin de selección, que indica que el dato es una instrucción o un carácter del mensaje (RS) y un pin que indica si se va a escribir o leer en módulo L.C.D. (R/W). Según la operación que se desee realizar sobre el modulo de cristal líquido, los pines de control E, RS, y R/W deben tener un estado determinado. Además de tener en el bus de datos un código que indiquen un carácter para mostrar en la pantalla o una instrucción de control. El modulo L.C.D. depende o responde a un conjunto especial de instrucciones, esta deben ser enviadas por el microcontrolador o sistema de control al módulo, según sea la operación que se requiere. xxviii Las interfaces entre el microcontrolador y el modulo de cristal líquido se puede hacer con el bus de datos trabajando a 4 u 8 bits. También se encuentra un microcontrolador P.I.C. que es el que se va S O D VA R E S a encargar de controlar el sistema cuya programación se logra mediante el E R S HO sistema P.I.C. Star que es el paquete que permite la programación a través EC R E D de un computador para la simulación de la marcha del programa. Este paquete es bajo el ambiente Windows y permite la simulación paso a paso de todas las etapas del programa así como también la simulación de las entradas que llegan al computador y por último permite la programación del programa del microcomputador P.I.C. Este sistema de control tiene como objetivo la captura y control de la variable presente en un campo (flujo de agua) las cuales en la mayoría de los casos son inaccesibles para el obrero y presenta inconvenientes para una lectura directa. La principal función de este sistema es que la bomba estará arrancada durante un tiempo a la cual se halla programado. Microcontroladores PIC16F84 y PIC16C55 son microcontroladores con memoria de programa tipo flash, lo que representa gran facilidad en el desarrollo de prototipo y en su aprendizaje ya que no se requiere de borrado con luz ultravioleta como las versiones EPROM sino, permiten reprogramarlo xxix nuevamente sin ser borrado con anterioridad. Por esta razón, los usaremos en la mayoría de las aplicaciones que se desarrollan a lo largo del estudio. De igual manera existen unas ventajas del microcontrolador sobre el S O D VA R E S microprocesador. El circuito impreso es más pequeño ya que muchos de los E R S HO componentes se encuentran dentro del circuito integrado. EC R E D Los problemas de ruidos que puedan afectar los sistemas con microprocesadores se eliminan, debido a que todo el sistema principal se encuentra en un solo encapsulado. El tiempo de desarrollo de un sistema se reduce notablemente. De igual manera aparecen las características del 16F584: • Memoria de programa: 1K x 14 flash. • Memorias de datos RAM: 68 x 8 Bytes. • Memorias de datos EPROM: 64 x 8 bytes. • Juego de instrucciones: 35. • Encapsulado: plástico DIP de 18 pines. • Frecuencia de trabajo: 4 Mhz máximo. • Temporizadores: 1 • Perro guardián (WDT) xxx • Líneas de E/S digitales: 13. • Corriente máxima absorbida: 80 ma puerta A y 150 ma puerta B. • Corriente máxima suministrada: 50 ma puerta A y 100 ma puerta B. • Corriente máxima absorbida por línea: 25 ma. • Voltaje de alimentación (VDC): De 2 a 5 VDC. S O D VA R E S E R S HO EC R E D Características del 16C55: • Memoria de programa: 512K x 12 flash. • Memorias de datos RAM: 24 x 8 Bytes. • Juego de instrucciones: 33. • Encapsulado: plástico DIP de 28 pines. • Frecuencia de trabajo: 4 Mhz máximo. • Temporizadores: 1 • Perro guardián (WDT) • Líneas de E/S digitales: 20 • Corriente máxima absorbida: 80 ma puerta A y 150 ma puerta B. • Corriente máxima suministrada: 50 ma puerta A y 100 ma puerta B. • Corriente máxima absorbida por línea: 25 ma. • Voltaje de alimentación (VDC): De 2 a 5 VDC. xxxi 3. DEFINICIONES DE TÉRMINOS BÁSICOS. Arquitectura del Microcontrolador: La alta velocidad de ejecución del P.I.C. 16F84 y 16C55 se puede atribuir a las características comúnmente S O D VA R E S encontrados en los microprocesadores. Para comenzar el P.I.C. utilizó la E R S HO arquitectura del Hardware, en el cual el programa de datos se accesan en EC R E D memorias separadas, esto mejora al ancho de arquitectura tradicional de Von Neuman, donde el programa y los datos son traídos de la misma memoria. Puede direccionar directa o indirectamente su registro (memorias de datos) todos los registros de funciones especiales incluyendo el controlador de programa están mapeados en la memoria de datos. El set de instrucciones es claramente ortogonal (simétrico), lo que hace posible llevar a cabo cualquier operación en cualquier registro usando cualquier modo de direccionamiento. (Angulo, 1983, p. 48) Calibración: Es ajustar la salida de un instrumento a valores deseados dentro de una tolerancia deseada por valores particulares de las señales de entradas. (Ogata, 1993, p. 78) Control Digital: Un sistema de control digital es aquel que controla la salida o condición provenientes del campo. El modelo de entrada procesa la xxxii información por medio de un convertidor analógico digital, para llevar datos binarios que podrán ser analizados en un modulo de control. (Ogata, 1993, p. 81) S O D VA R E S Instrumentación: Es la aplicación de los instrumentos en un proceso E R S HO con el propósito de medir y controlar una actividad. (Creus, 1992, p. 52) EC R E D Instrumento: Es cualquier dispositivo que realice una función de medición y control de un proceso. (Creus, 1992, p. 50) Flujo: Puede ser definido como el movimiento de un fluido, no es más que la cantidad e fluido que pasa por un punto por unidad de tiempo. (Fusagri, 1995, p. 41) Medidor de Turbina: Consiste de un rotor que gira al paso del fluido con una velocidad directamente proporcional al caudal. La velocidad del fluido ejerce una fuerza de arrastre del rotor, la diferencia de presión es debido al cambio de área entre el rotor y como posterior ejerce una fuerza igual y expuesta. (Fusagri, 1995, p. 84) Microcontrolador: Es un dispositivo electrónico el cual posee la capacidad de controlar un proceso mediante la previa codificación de un xxxiii programa que analice la variable de la salida de dicho proceso y emita la salida de acuerdo a un punto de referencia. (Ogata, 1993, p. 83) Riego por Inundación: Este sistema se aplica en terrenos planos y S O D VA R E S en aquellos que permitan su nivelación. Requiere un suministro relativamente E R S HO grande de agua, y un subsuelo menos permeable. El riego por inundación se EC R E D usa principalmente para el cultivo de arroz, y, en menor grado, para ciertas hortalizas y pastos. (Fusagri, 1995, p. 45) Señal Digital: Son aquellas que son tomadas directamente y vienen representadas en dos (02) niveles de voltaje uno (1) y cero (0), o sea, no hay variación. (Ogata, 1993, p. 95) Señal Analógica: Son aquellas que vienen representadas por señales de uno (1) a cinco (5) V.N.C. o de cuatro (4) a veinte (20) M.A. y varía en el tiempo. (Ogata, 1993, p. 95) Sistema Automático: Un sistema automático ajusto su operación en respuesta a los cambios de las condiciones externas entre pasos, medias, evolución y control en las medidas se tiene que el sistema responde a los cambios del medio ambiente externo que deben ser medidos por variables físicos del mismo ambiente. (Ogata, 1993, p. 74) xxxiv Válvula Solenoide: Es una combinación de dos (02) unidades funcionales básicas, el solenoide propiamente dicho (actuador) con su núcleo (vástago) y el cuerpo y el funcionamiento es el siguiente: S O D VA R E S A la bobina de solenoide llega la señal eléctrica proveniente del E R S HO controlador o cualquier otro dispositivo, esto se energizará trayendo como EC R E D consecuencia la creación de un campo magnético el cual atraerá el núcleo. Como el núcleo esta acoplado al tapón, este moverá para abrir o cerrar el paso de algún fluido. (Fusagri, 1995, p. 45) xxxv CAPITULO III MARCO METODOLOGICO S O D VA R E S E R S HO En este capítulo de la investigación se desarrollará lo que integra el EC R E D Marco Metodológico, Tipo de Investigación, Metodología y la factibilidad del Proyecto. 1. TIPO DE INVESTIGACIÓN. Se determina que el tipo de investigación a la cual pertenece el siguiente estudio es factible y aplicada. Es factible ya que en esta tesis se busca la solución del problema a través de la elaboración y desarrollo de una propuesta de modelos operativos viables, ya que tiene apoyo de otras investigaciones recolectadas a través de tesis y textos, también se evalúan procesos y otros aspectos muy importantes ya que se conocen los resultados de la investigación. Por otra parte es aplicada ya que en esta tesis se aplican los conocimientos teóricos adquiridos a través de estudios anteriores como son xxxvi los microcontroladores, de los chips, el control de lazo abierto, control digital, mecanismo de los fluidos que ayudarán a resolver el problema planteado en un corto tiempo. 2. METODOLOGÍA. S O D VA R E S EC R E D E R S HO Para el desarrollo del prototipo se utilizará la metodología propuesta por Angulo (1983) quien recomienda nueve actividades: 1) Definición de las Especificaciones: Se define como la mayor precisión posible el funcionamiento del sistema a desarrollar, para esto, solo debe establecer los estímulos de entrada y salida, sin detenerse a explicar las razones. 2) Diseño y Sistema General de Hardware: Se debe desarrollar en forma de bloques funcionales todas las etapas del sistema interconectado entre sí de manera lógica. Se asume como bloques funcionales, cada una de las partes elementales del sistema encargado de hacer un único trabajo en particular. 3) Ordigrama General: Aquí se establece el diagrama de flujo que se estimó será el que regirá el funcionamiento del circuito. Este diagrama se xxxvii denomina general porque su propósito es el de servir como base para el desarrollo del Software el cual está sujeto a modificación. Este se realiza en forma general pero que ilustre el funcionario del sistema. S O D VA R E S 4) Adaptación entre Hardware y Software: Una vez establecida la E R S HO forma de Hardware y del Software se establece los diferentes mecanismos EC R E D para la comunicación entre ambos, garantizando que la información entra y sale en forma correcta. 5) Ordigrama Modulares y Codificación de Programa: En este programa cada uno de los diferentes bloques generales, del diagrama de flujo se codifica individualmente, asegurándose que cada parte realiza el trabajo en forma eficiente y segura. 6) Implementación del Hardware: Acá es necesario materializar el circuito. Pero debe estudiar las hojas del fabricante de los diferentes circuitos a optimizar. Debe tenerse especial cuidado en las corrientes de consumo y las que puede entregar cada una de las salidas, con el fin de no sobrecargar cada una de las partes. Así como se debe prever el uso de todos y cada uno de los fines para no dejar ninguno conectados. xxxviii 7) Depuración de Software: El programa se prueba y depura hasta que su funcionamiento sea el adecuado. Es imperativo probar exhaustivamente todas y cada una de las diferentes bifurcaciones del programa, incluso, se debe determinar su funcionamiento bajo condiciones extremas. S O D VA R E S E R S HO 8) Integración del Hardware con el Software: Finalmente se prueba la EC R E D interacción entre ambas partes, confirmando que totalidad del sistema interactivo funciona de manera correcta y eficiente. 9) Construcción del Prototipo y Prueba Final: Si es necesario implantar todo el sistema, a nivel de Hardware debe materializarse con una placa de Baquelita o Fibra de Vidrio y el programa debe establecerse compilado y debe probarse nuevamente la funcionalidad de la totalidad del sistema. 3. FACTIBILIDAD DEL PROYECTO. 3.1. FACTIBILIDAD TÉCNICA. En cuanto a la factibilidad técnica en esta investigación se debe a que la programación de microcontrolador es de fácil manejo los componentes se encuentran disponibles en el mercado y el sistema de control de riego es de fácil instalación. xxxix 3.2. FACTIBILIDAD ECONÓMICA. El desarrollo de este sistema de control para riego de pastos en las haciendas arroja beneficios económicos ya que lo componentes utilizados S O D VA R E S son de bajos costos y no implica la inversión de grandes cantidades de E R S HO dinero ya que los materiales utilizados son los siguientes: EC R E D Cuadro 1 Lista de Materiales Cant. 01 01 01 01 01 06 06 01 08 02 05 01 01 03 06 Descripción Microcontrolador PIC16F84 Microcontrolador PIC16C55 Cristal 4MHz Pantalla LCD 16 columnas x 2 línea Teclado matricial 4 x 4 Relé de 12 v /3A / 220 V Led Resistencia2.2 K Ohm x ¼ Watt Resistencia 10 K Ohm x ¼ Watt Pulsador normalmente abierto Resistencia 220 K Ohm x ¼ Watt Capacitador 10mF Buffer inversor ULN2803 Pista de Protoboard Diodo 1N4006 Fuente: Romero 2002. xl Precio Unitario 6.000,00 7.000,00 745,00 18.400,00 10.000,00 1.500,00 150,00 100,00 100,00 300,00 100,00 150,00 1.300,00 9.000,00 150,00 Total Total 6.000,00 7.000,00 745,00 18.400,00 10.000,00 9.000,00 900,00 100,00 800,00 600,00 500,00 150,00 1.300,00 27.000,00 900,00 83.395,00 CAPITULO IV ANÁLISIS DE LOS RESULTADOS DE LA INVESTIGACIÓN S O D VA R E S E R S HO Fase I: Definición de las Especificaciones. EC R E D Se define y diseña el panel de control que permitirá su operación, siendo amigable con el usuario, tendrá una serie de leds indicadores que mostrará las operaciones de los dispositivos (electroválvulas), a su vez contará con un teclado, el cual servirá para programar los tiempos de trabajos de las mimas y el tiempo de descanso de la bomba. Este sistema podrá detectar la cantidad de flujo a través del medidor de flujo (agua). Fase 2: Diseño y Esquema General hardware. El esquema general integra un microcontrolador, el cual es considerado como un pequeño computador donde a través de un programa ejerce su operación, los dispositivos que lo secundan son: xli • Alimentación: consiste en aplicar un voltaje al circuito 5VDC a través de una fuente de poder alimentada con 110 VDC. • Leds indicadores: permite la visualización de la operación del sistema. • Pantalla LCD: sirve para mostrar el valor de tiempo y descanso de riego. • Medidor de flujo: sirve para medir la cantidad de flujo (agua) utilizada por el sistema de riego. • E R S HO C se Eutiliza R E D Teclado: S O D VA R E S para introducir el programa de riego al microcontrolador. • Bombas sumergibles: es la encargada de traer el agua del suelo y llevarla. • Válvulas Solenoides: se encarga de abrir el paso o cerrar para indicar el fluido a los potreros. Alimentación del Circuito Teclado Microcontrolador Pantalla LCD Leds Indicadores Medidor de Flujo Bomba de Riego Fuente: Romero 2002 xlii Válvulas Solenoides Para la realización del diseño del circuito se colocan los microcontroladores los cuales poseen un circuito de reset externo el mismo está compuesto por un capacitador y una resistencia especificada por el fabricante los cuales deben tener un valor de 10 mf y 10 Kilo Ohmio y van S O D VA R E S conectada en el pin 1 del PIC por otra parte se encuentra el circuito de E R S HO oscilación el cual se compone por un cristal de cuarzo de 4 Mhz en paralelo EC R E D con dos capacitadores de 20 Pf especificado en la tabla. De igual manera se colocó una resistencia de 5 kilo Ohmio para ajustar el contraste de la pantalla LCD. En el diseño de este circuito se utilizaron 11 señales que van a la pantalla LCD. También 7 señales que van al buffer inversor los cuales energizarán los relé de arranque, ya que esto reciben la señal de cero lógico debido a que tiene 5VDC presente en uno de su terminal por otro lado se encuentra el teclado que recibe 7 señales las cuales se utilizan para programar el trabajo del sistema de riego. Fase 3: Diagrama de Flujo de Estimado. El diagrama de flujo a realizar en la secuencia lógica que se utilizará para la elaboración del programa controlador en el momento que es colocado el sistema stanby, por medio del teclado se procede colocar las horas de xliii trabajo de las mismas y las horas de descanso de la bomba, se inicia el riego que anteriormente fue programado. Mientras se cumple el proceso de riego, el sistema censa sus puertos S O D VA R E S en alerta a una señal de fallas, de presentarse alguna fallas se detendría el E R S HO proceso de riego, y en el panel de control los leds indicadores se encargarán EC R E D de encender para mostrar la falla ocurrida una vez visualizada la falla, el sistema espera por un reset. Fase 4: Adaptación entre el Hardware y Software. La adaptación entre el Hardware y Software se obtiene a través de un estudio coincidente entre el Software o ejecutar el prototipo diseñado. El Software diseñado en el resultado del análisis efectuado al diagrama de flujo. Fase 5: Ordigrama Modulares y Codificaciones de Programa: En esta etapa se codifican los diferentes bloques del diagrama de flujo, utilizando el lenguaje de programación y sus instrucciones; el cual comienza con la declaración de las constantes EQU del sistema y en segundo lugar se establecen las variables RES, pasando a un tercer lugar xliv donde se plasma el Software que regirá el mediante el funcionamiento del microcontrolador. El software se elaborará lenguaje de los S O D VelAcual nos permite una R PIC star que trabaja bajo ambiente Windows, E S E R OS simulación completa del funcionamiento y comportamiento de sus puerto H C E R E la grabación el programa de los microcontroladores para Dtambién (I/O) como microcontroladores PIC 16F84 y 16C55, este se logrará a través del paquete ser probado y depurado. Los PIC contienen instrucciones que se encargan de llevar el tiempo de riego, la medición de flujo y también contiene una ruptina de barrido de la pantalla LCD, donde son visualizados los tiempos de programas para ejecutar la acción. Al mismo tiempo actúan una rutina capaz de leer los valores ingresados por el teclado. Fase 6: Implementación del Hardware. En este punto se integran y materializan las correcciones respectivas, los bloques funcionales descrito en la fase dos. Los microcontroladores son conectados de acuerdo a lo establecido en el diseño, donde se tiene conectado al teclado que introduce los datos a los microcontrolador también esta conectado a un cristal de cuarzo de 4 Mhz, el cual proporciona la xlv oscilación necesaria del mismo, el circuito cuenta con una serie de leds indicadores que muestran el funcionamiento del mismo. Las funciones de las pantallas LCD que indican las horas de trabajos. S O D VA R E S Fase 7: Depuración del Software. E R S O pruebas con el fin de detectar fallas en las En esta fase se H hicieron C E R DEdel bifurcaciones programa, se tomaron en cuenta condiciones extremas para determinar la ejecución correcta del software y así asegurar el buen funcionamiento del sistema. Fase 8: Integración del Hardware con el Software. Una vez depurado los programas, se graban en el microcontrolador para luego realizar prueba que permitan observar la forma como interactúa el software y el hardware a las conexiones de las mismas, logrando el comportamiento deseado. Fase 9: Construcción del Prototipo definitivo y Prueba Final. En esta etapa se montó el circuito definitivo del prototipo y compilado al programa, en el caso de la investigación que se realizó, la implementación no figura como objetivo es por ello que el circuito definitivo no es llevado a una baquelita o fibra de vidrio. El circuito final se realizó en el protoboard. xlvi CAPITULO V MANUAL DEL USUARIO S O D VA R E S E R S HO En este capítulo se describe el Manual del Usuario para el Sistema EC R E D Programable de Riego. 1. MANUAL DEL USUARIO. • Alimentación del circuito • Voltaje de Alimentación 5VDC • Corriente del Circuito 420 ma. Antes de conectar el cable de alimentación se debe tomar en cuenta la polaridad y compruebe si la tensión nominal mostrada concuerda con la tensión colocada en el circuito (5VDC). Para encender el circuito coloque el swith en la posición DN y aparecerá en la pantalla: xlvii SISTEMA PROGRAMABLE DE RIEGO S O D VA R E S Pulsar la Tecla de Asterisco (*) para entrar y modificar la hora actual y E R S HO la secuencia de encendido y apagado de las válvulas. EC R E D Posteriormente, se modifica la hora actual para adelantar la hora, de nuevo, se pulsa la Tecla 1, para poder modificar los minutos se presiona la Tecla 2; para cambiar el día actual, pulsamos la Tecla 3. Luego de determinar la selección, se presiona la Tecla B para aceptar lo antes seleccionado. Inmediatamente, nos trasladamos al menú de los Días de la Semana para poder establecer la selección de encendido y apagado de las válvulas. Para modificar la hora de encendido y apagado de válvulas se debe presionar la Tecla 1; para cambiar las horas de encendido, más adelante, se presiona la Tecla 2 para la modificación de los minutos. xlviii Ahora bien, para el cambio de la secuencia de apagado se debe presionar la Tecla 3 para la modificación de la hora y luego, con la Tecla A se cambian los minutos de apagado. S O D VA R E S Ya establecida la selección deseada se pulsa la Tecla B para aceptar E R S HO y guardar los cambios realizados, así mismo, se presentará el estado de la EC R E D válvula siguiente para implantar su selección y así, sucesivamente, hasta terminar el programado de los días y las válvulas para poder comenzar con el ciclo de riego. Al final, debe aparecer un recuadro parecido al siguiente, el cual indicará: Día: Lun Val: 1 E: 8:30 A: 9:00 xlix CONCLUSIONES Al diseñar el prototipo se logró entrar en contacto con la tecnología del Microchips. Esta tecnología permite el desarrollo de una extensa gama de S O D VA R E S dispositivos de manera económica y sencilla debido a los bajos costos y E R S HO adaptabilidad del P.I.C., los mismos se constituyen como los dispositivos EC R E D fundamentales de diseño del prototipo. Al recopilarse la información acerca de los procedimientos que integran los riegos, se organizó información, adaptando el diseño a las necesidades de los ganaderos, obteniendo como resultado un amplio beneficio al momento de su implantación. Un resultado importante lo constituye, que el sistema diseñado es amigable para el usuario, debido a que su operación es sencilla, además el sistema desarrollado posee un bajo costo, resultando atractivo para los ganaderos. Al momento de su implantación el prototipo será una fuerza laboral para las haciendas, ya que se encargará de la operación de riego, esto permitirá que el personal dispuesto para la labor de riego, pueda ser asignado a otras tareas relacionadas con la actividad ganadera (agrícola) l obteniendo así mejoras en las haciendas y aumento en la producción. Este sistema cubre una gran necesidad por parte de los ganaderos debido a que permiten trabajar por tiempo y de manera sencilla la actividad de riego. S O D VA R E S E R S HO EC R E D li RECOMENDACIONES La investigación realizada se limitó en el desarrollo del prototipo, sin S O D A debe tomar en cuenta debido a esto, se hace la siguiente recomendación Vque R E S E R al momento de su implantación: OS H C E DER embargo, la idea de su implantación es realmente el motivo de lo mismo, El lugar donde se desea implantar este sistema debe existir por lo menos un tanque de almacenamiento, pozo, río, laguna, bomba sumergible. Los instrumentos a utilizar deben ser confiables y de alta calidad, pues son los encargados de tomar información y llevarlo al dispositivo, de ocurrir una falla en los sensores del sistema no responderá de la forma deseada. En el caso de relee, se recomienda el uso de relee de estado sólido ya que estos requieren una baja corriente para ser exilados, de esta manera se garantiza el funcionamiento encargado de sistema de control. La ubicación del panel de control debe colocarse en un sitio estratégico, donde pueda ser observado por el encargado de la hacienda, este permitirá al usuario de este informado de lo que ocurre en el proceso. lii Debe colocarse una alarma sonora la cual alertará a distancia la presencia de una falla en el sistema de proceso de riego. S O D VA R E S E R S HO EC R E D liii REFERENCIAS BIBLIOGRÁFICAS ANGULO, J. (1983). Robótica Práctica. 2da. Edición. Caracas, Venezuela. BARBOZA, RAMÍREZ. (1998). Desarrollo de un Sistema de Control con Microcontroladores para la supervisión continua de Riego en zonas Agrícolas. Universidad Rafael Belloso Chacin. Tesis de Grado. S O D VA R E S E R S HO BARBOZA URDANETA. (1998). Desarrollo de un Prototipo de un Sistema de Supervisión y Control para la Inyección de Agua en pozos petroleros. Tesis de Grado. Universidad Rafael Belloso Chacín. EC R E D CREUS S., A. (1992). Instrumentación Industrial. 5ta. Edición. Caracas. FUSAGRI. (1995). Sistema de Riego. Caracas. Venezuela. OGATA, K. (1993). Ingeniería de Control Moderno. 2da. Edición. Caracas, Venezuela. liv S O D VA R E S E R S HO EC R E D ANEXOS lv ;***************************************************************** ;******************************************************************* ;*** *** ;*** S I S T E M A P R O G R A M A B L E D E R I E G O *** ;*** *** ;*** *** ;*** *** ;*** *** ;*** *** ;*** *** ;**************************************************************** ; S O D VA R E S E R S HO EC R E D K_0 EQU 0X20 CBLOCK K_0 LA_HORA (BIN) LOS_MIN (BIN) EL_DIA INDGENR ;CONTIENE LA HORA PARA VISUALIZAR ;CONTIENE LOS MIN. PARA VISUALIZAR ;CONTIENE EL DIA PARA VISUALIZAR ;CONTIENE LOS INDICADORES DEL TIEMPO DIGITO4 DIGITO3 ;CONTIENE LAS DECENAS DE LA HORA (BCD) ;CONTIENE LAS UNIDADES DE LA HORA DIGITO2 DIGITO1 ;CONTIENE LAS DECENAS DE LOS MIN. (BCD) ;CONTIENE LAS UNIDADES DE LOS MIN. (BIN) (BCD) BCDH ;REG. QUE CONTIENE LA PARTE ALTA DEL BCDL ;REG. QUE CONTIENE LA PARTE BAJA DEL BCD BCD BINARIO ;REGISTRO QUE CONTIENE EL NUMERO CNT_FUN ;REGISTRO QUE INDICA EN QUE FUNCION BINARIO ESTA TMP_FUN ;REGISTRO QUE TEMORIZA EL TIEMPO P_DIAS ;REG. QUE CONTIENE EL DIOA PROGRAMADO P_HORAS ;REG. QUE CONTIENE LA HORA PROGRAMADA P_MINUTOS ;REFG. QUE CONTIENE LOS MINUTOS lvi PROGRM. CONSTRU OPCIONES Nº_PRGM ;REG. PARA LA CONSTRUCCION DE ;REG. CON EL Nº DE PROGRAMA A VER O MOD Nº_PRGM2 ;REG. CON EL Nº DE PROGRAMA DE S O D VA R E S SALIDAS Nº_SALD Nº_LCD EEADR2 REG_ON REG_OFF SAL_PGM PROGRAM. CONT SEG_2 K_1 ENDC E R S HO EC R E D BANK_0 BANK_1 BANK_2 BANK_3 ;TEMPORIZADOR EQU 0X000 EQU 0X080 EQU 0X100 EQU 0X180 #DEFINE BANCO_0 #DEFINE BANCO_1 #DEFINE BANCO_2 #DEFINE BANCO_3 #DEFINE LED #DEFINE PITO #DEFINE LUZ #DEFINE FUSE_1 #DEFINE FURE_2 ;REG. CON EL Nº DE SALIDA SELECCIONADA ;REG. CON EL Nº DE CONTRASTE DEL LCD ;REG. DE RESPALDO DEL REG. EEADR ;REG. PARA IDENTIFICAR SALIDAS ACTIV. ;REG. PARA IDENTIFICAR SALIDAS DESACT. ;REG. CON LAS SALIDAS ACTIVAS. ;INICIO DEL BANCO 0 ;INICIO DEL BANCO 1 ;INICIO DEL BANCO 2 ;INICIO DEL BANCO 3 BANKSEL BANK_0 BANKSEL BANK_1 BANKSEL BANK_2 BANKSEL BANK_3 ;PASA AL BANCO 0 ;PASA AL BANCO 1 ;PASA AL BANCO 2 ;PASA AL BANCO 3 PORTC,2 PORTD,6 PORTD,7 PORTA,4 PORTA,5 #DEFINE FZ STATUS,Z ;BANDERA DE CERO “Z” #DEFINE FDC STATUS,DC ;BANDERA DE ACARREO DIGITAL “DC” #DEFINE FC STATUS,C ;BANDERA DE ACARREO “C” #DEFINE AM INDGENR,0 ;INDICADOR DE AM lvii #DEFINE PM INDGENR,1 ;INDICADOR DE PM #DEFINE TITILAR INDGENR,2 ;INDICADOR DE TITILAR LOS “:” #DEFINE MODIFC INDGENR,3 ;INDICADOR DE CAMBIO FORZADO DEL RELOJ #DEFINE PRI_SEG INDGENR,4 ;INDICADOR DE MODIF. EN LA DEC. O UNI. #DEFINE ANOFF INDGENR,5 ;INDICADOR DE HORA ON/OFF DE LOS PROGM. #DEFINE IGUAL INDGENR,6 ;INDICADOR DE TIEMPO PRGM= TIEMPO REAL S O D VA R E S E R S HO EC R E D #DEFINE I_FAL_0 I_FAL,0 #DEFINE I_FAL_1 I_FAL,1 #DEFINE I_FAL_2 I_FAL,3 LIST P=16F877 ;INDICADOR DE FALLA EN EL LCD ;INDICADOR DE FALLA EN EL LCD ;INDICADOR DE FALLA EN EL LCD ;TIPO DE MICROCONTROLADOR A UTILIZAR ; ;-----------------------------------------------------------------------------;--- PROGRAMA PRINCIPAL DE TEMPORIZADOR DE SEIS SALIDAS --;-----------------------------------------------------------------------------; ORG 0X00 ;VECTOR DE RESET NOP NOP GOTO ORIGEN ;VA AL PRINCIPIO DEL PROGRAMA NOP NOP MOVWF W2 ;GUARDA VALOR DE W MOVF STATUS,W ;GUARDA VALOR DE STATUS MOVWF STATUS2 MOVF PCLATH,W ;GUARDA VALOR DE PCLATH MOVWF PCLATH2 CLRF PCLATH GOTO INTERRU ;VA A LA RUTINA DE INTERRUPCIONES ;--PROGRAMA PRINCIPAL --INICIO CLRF PORTA ;INICIALIZA TODOS LOS PUERTOS CLRF PORTB CLRF PORTC CLRF PORTD lviii CLRF PORTE BANCO_1 ;BANCO 1 MOVLW 0XFF MOVWF TRISA ;RA0-RA5 = ENTRADA CLRF TRISB ;RB0-RB7 = SALIDA MOVLW B’11111001’ MOVWF ADCON1 ;RC0,RC3-RC7 = ENT. Y RCI-RC2 = SAL. CLRF TRISD ;RD0,RC7 = SALIDA CLRF TRISE ;RE0-RE2 = SALIDA MOVLW B’10001101’ MOVWF ADCON1 ;RE0-RE2,RA5 = DIG. Y RA0-RA3 = ANALOG. BANCO_0 ;BANCO 0 BSF LUZ MOVLW .5 MOVWF TMP_LUZ GOTO SIGUE S O D VA R E S E R S HO EC R E D INCLUDE “LCD.H” MOVWF MENSAJE CALL DISPLAY MOVLW 0X40 MOVWF DIRINC ;RUTINA QUE CONTROLA EL MODULO LCD ;INDICA CUAL ES EL MENSAJE ;VA A ESCRIBIR EL MENSAJE ;DIRECCION DE INICIO DEL MOVLW MOVWF MENSAJE ;INDICA CUAL ES EL CALL DISPLAY ;VA A ESCRIBIR EL MENSAJE L_FUN_0 BCF 150MSEG ;BORRA BANDERA DE 50 MILISEG. CALL OUT_ACT ;VA A VERIFICAR SI DEBE ACTIVAR SALIDA CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BTFSS IUNSEG ;VERIFICA SI A TRANSCURRIDO 1 SEGUNDO B $+5 BCF IUNSEG ;LIMPIA BANDERA DE UN SEGUNDO DECFSZ TMP_FUN,F ;VERIFICA SI A PASADO 10 SEGUNDOS B $+2 B CIC_REL ;SALTA A LA FUNCION TRAS 10 SEG MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON CAMBIOS XORWF TECLA,W SKPNZ lix B CIC_REL MOVLW 0X0A XORWF TECLA,W SKPZ B L_FUN_0 INCF CNT_FUN,F B MENU FUN_1 CALL INICIA CLRF DIRINC MOVLW SEL_PGM MOVWF MENSAJE CALL DISPLAY MOVLW 0X40 MOVWF DIRINC MOVLW BOTONES MOVWF MENSAJE CALL DISPLAY L_FUN_1 BCF 150MSEG CALL OUT_ACT SALIDA CALL ESP_TMP LCALL FALLAS BTFSS IUNSEG B $+5 ;VA A LA FUNCION 0 ;VE SI DEBE DE SALIR DE LA RUTINA ;VA AL PRINCIPIO DEL LAZO POR RESPUESTA ;PASA A LA PROXIMA FUNCION DEL MENU ;VA A MENU PRINCIPAL DE OPCIONES S O D VA R E S ;INICIALIZA MODULO LCD ;DIRECCION DE INICIO DEL MENSAJE E R S HO ;INDICA CUAL ES EL MENSAJE EC R E D BCF IUNSEG DECFSZ TMP_FUN,F ;VA A ESCRIBIR EL MENSAJE ;DIRECCION DE INICIO DEL MENSAJE ;INIDICA CUAL ES EL MENSAJE ;VA A ESCRIBIR EL MENSAJE ;BORRA BANDERA DE 50 MILISEG. ;VA A VERIFICAR SI DEBE ACTIVAR ;VA A SUBRUTINA DE ESP_TMP ;VA A REVISAR SI HAY FALLAS ;VERIFICA SI A TRANSCURRIDO 1 SEGUNDO ;LIMPIA BANDERA DE UN ;VERIFICA SI A PASADO 10 B B CIC_PGM ;SALTA A LA FUNCION TRAS 10 MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON XORWF SKPNZ B CIC_PGM MOVLW 0X0A ;VA A LA FUNCION ;VE SI DEBE DE SALIR DE LA lx ORWF TECLA,W SKPZ B L_FUN_1 INCF CNT_FUN,F B MENU ;VA AL PRINCIPIO DEL LAZO POR RESPUESTA ;PASA A LA PROXIMA FUNCION DEL MENU ;VA A MENU PRINCIPAL DE OPCIONES FUN_2 CALL INICIA CLRF DIRINC MOVLW SEL_SAL MOVWF MENSAJE CALL DISPLAY MOVLW 0X40 MOVWF DIRINC MOVLW BOTONES MOVWF MENSAJE CALL DISPLAY L_FUN_2 BCF 150MSEG CALL OUT_ACT CALL ESP_TMP LCALL FALLAS BTFSS IUNSEG B $+7 BCF IUNSEG DECFSZ TMP_FUN,F B $+4 LGOTO CIC_SAL MOVLW 0X0B XORWF TECLA,W SKPZ B $+4 S O D VA R E S ;INICIALIZA MODULO LCD ;DIRECCION DE INICIO DEL MENSAJE E CUAL ES EL MENSAJE ;INDICA R S HO;VA A ESCRIBIR EL MENSAJE EC R E D LGOTO CIC_SAL MOVLW 0X0A XORWF TECLA,W SKPZ B L_FUN_2 ;DIRECCION DE INICIO DEL MENSAJE ;INDICA CUAL ES EL MENSAJE ;VA A ESCRIBIR EL MENSAJE ;BORRA BANDERA DE 50 MILISEG. ;VA A VERIFICA SI DEBE ACTIVAR SALIDA ;VA A SUBRUTINA DE ESP_TMP ;VA A REVISAR SI HAY FALLAS ;VERIFICA SI A TRANSCURRIDO 1 SEGUNDO ;LIMPIA BANDERA DE UN SEGUNDO ;VERIFICA SI A PASADO 10 SEGUNDOS ;SALTA A LA FUNCION TRAS 10 SEG ;VE SI ENTRA A LA RUTINA CON CAMBIOS ;VA A LA FUNCION 0 ;VE SI DEBE DE SALIR DE LA RUTINA ;VA AL PRINCIPIO DEL LAZO POR RESPUESTA INCLUDE “TECLADO.H” ;RUTINA QUE LEE TECLADO SIGUE CALL INICIA BSF LUZ lxi CALL LP_TMP CALL BEEP CALL LP_TMP CALL LP_TMP CALL BEET CALL LP_TMP CALL LP_TMP CALL BEEP CALL LP_TMP CLRF CNT_FUN CLRF P_DIAS CLRF P_HORAS CLRF P_MINUTOS CLRF Nº_LCD CLRF I_FAL MOVLW 0X01 MOVWF Nº_PRGM MOVWF Nº_SALD S O D VA R E S E R S HO EC R E D MENU NOP CLRF PCLATH MOVLW 0XFF MOVWF TECLA MOVLW .10 ;PREPARA TEMPORIZADORA A 10 SEG. MOVWF TMP_FUN BSF MODIFIC MOVF CNT_FUN,W ;VERIFICA SI ES < Día y Hora > SUBLW 0X00 SKPNZ B FUN_0 ;SALTA A LA FUNCION 0 MOVF CNT_FUN,W ;VERIFICA SI ES < Programación > SUBLW 0X01 SKPNZ B FUN_1 ;SALTA A LA FUNCION 1 MOVF CNT_FUN,W ;VERIFICA SI ES <Act/Des Salida> SUBLW 0X02 SKPNZ B FUN_3 ;SALTA A LA FUNCION 3 CLRF CNT_FUN B MENU FUN_0 CALL INICIA ;INICIALIZA MODULO LCD lxii CLRF DIRINC MOVLW SEL_REL INCF CNT_FUN,F B MENU ;DIRECCION DE INICIO DEL MENSAJE ;PASA A LA PROXIMA FUNCION DEL MENU ;VA A MENU PRINCIPAL DE OPCIONES FUN_3 CALL INICIA ;INICIALIZA MODULO LCD CLRF DIRINC ;DIRECCION DE INICIO DEL MENSAJE MOVLW SEL_CNT MOVWF MENSAJE ;INIDICA CUAL ES EL MENSAJE CALL DISPLAY ;VA A ESCRIBIR EL MENSAJE MOVLW 0X40 MOVWF DIRINC ;DIRECCION DE INICIO DEL MENSAJE MOVLW BOTONES MOVWF MENSAJE ;INDICA CUAL ES EL MENSAJE CALL DISPLAY ;VA A ESCRIBIR EL MENSAJE L_FUN_3 BCF 150MSEG ;BORRA BANDERA DE 50 MILISEG CALL OUT_ACT ;VA A VERIFICAR SI DEBE ACTIVAR SALIDA CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BTFSS IUNSEG ;VERIFICA SI A TRANSCURRIDO 1 SEGUNDO B $+7 BCF IUNSEG ;LIMPIA BANDERA DE UN SEGUNDO DECFSZ TMP_FUN,F ;VERIFICA SI A PASADO 10 SEGUNDOS B $+4 LGOTO CIC:LCD ;SALTA A LA FUNCION TRAS 10 SEG MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON CAMBIOS XORWF TECLA,W SKPZ B $+4 LGOTO CIC_LCD ;VA A LA FUNCION 3 MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORFWF TECLA,W SKPZ B L_FUN_3 ;VA AL PRINCIPIO DEL LAZO POR RESPUESTA CLRF CNT_FUN ;PASA A LA PROXIMA FUNCION DEL MENU B MENU ;VA A MENU PRINCIPAL DE OPCIONES S O D VA R E S E R S HO EC R E D ;--RUTINAS PARA MOSTRAR LA HORA EN LA PANTALLA LCD --CIC_REL MOVLW 0XFF ;BORRA CONTENIDO DEL REGISTRO TECLA MOVWF TECLA lxiii CALL INICIA BSF MODIFIC MOVLW 0X40 MOVWF DIRINC MOVLW SEL_REL MOVWF MENSAJE CALL DISPLAY ;VA A INICIALIZAR EL MODULO LCD ;ESCRIBE MENSAJE S O D A POR TIEMPO VENTRA R MOS_REL BTFSC IMEDSEG ;VERIFICA SI E S E B VER_REL R S ;VERIFICA SI ENTRA POR ORDEN BTESS MODIFIC HO C B NO_REL RE E D VER_REL BCF AM BCF PM MOVF DIAS,W ;MUEVE EL DIA AL REG. EL_DIA MOVWF EL_DIA MOVF HORAS,W ;MUEVE LA HORA AL REG. LA HORA MOVWF LA_HORA MOVF MINUTOS,W ;MUEVE LOS MINUTOS AL REG. LOS_MIN MOVWF LOS_MIN MOVF LA_HORA,W ;ENCIENDE INDICADOR DE A.M. O P.M. SUBLW .11 SKPNC BSF AM SKPC BSF PM MOVF LOS_MIN, W ;CONVIERTE MINUTOS A BCD PARA MOSTRARLO CALL BIN_BCD MOVF BCDL, W MOVWF DIGITO1 MOVF BCDH, W MOVWF DIGITO2 MOVF LA HORA, W ;BUSCA EQUIVALENTE HORA MILITAR A NORMAL SUBLW .12 SKPNC ;VERIFICA SI LA HORA ES MAYOR DE 12 B NO_PASA MOVLW .12 lxiv SUBWF LA HORA, W B LISTACH NO_PASA TSTF LA_HORA SKPZ B ANTLIST MOVLW .12 B LISTACH ;VERIFICA SI LA HORA ES CERO 0--> 12 S O D VA R ;CONVIERTE HORAS A BCD E S E R S HO ANTLIST MOVF LA_HORA, W PARA MOSTRARLO LISTACH CALL BIN_BCD MOVF BCDL, W MOVWF DIGITO3 MOVF BCDH, W MOVWF DIGITO4 CLRF DIRINC ;UBICA DIA DE LA SEMANA MOVF EL_DIA, W ;INDICA EL DIA DE LA SEMANA CALL DEC_DIA MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EL DIA DE LA SEMANA MOVLW 0X04 ;UBICA LA HORA MOVWF DIRINC MOVF DIGITO, W ;VERIFICA SI DECENA DE HORA ES CERO BNZ NO_CERO MOVLW ESPACIO ;COLOCA UN ESPACIO EN DECENA DE HORA B SIGUE_R NO_CERO CALL T_ASCII ;BUSCA UBICACIÓN EN LA TABLA SIGUE_R MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVF DIGITO3, W CALL T_ASCII ;BUSCA UBICACIÓN EN LA TABLA MOVWF MENSAJE CALL PROXIMO ;VA A ESCRIBIR EN LA PANTALLA MOVLW 0X07 ;UBICA LOS MINUTOS MOVWF DIRINC MOVF DIGITO2, W CALL T_ASCII ;BUSCA UBICACIÓN EN LA TABLA MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVF DIGITO1, W EC R E D lxv CALL T_ASCII ;BUSCA UBICACIÓN EN LA PANTALLA MOVWF MENSAJE CALL PROXIMO ;VA A ESCRIBIR EN LA PANTALLA MOVLW 0X09 ;UBICA INDICADORES DE AM O PM MOVWF DIRINC BTFSS AM ;VERIFICA SI ES AM O PM B ES_PM MOVLW A.M. ;ES AM B LISTO_R ES_PM MOVLW P.M. ;ES PM LISTO_R MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVLW 0X06 MOVWF DIRINC ;UBICA DIRECCION DE LOS DOS PUNTOS BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE “:” S O D VA R E S E R S HO EC R E D B NO_TITI BCF TITILAR SI_TITI MOVLW PUNTOS ;ES “:” B ESCRIB NO_TITI BSF TITILAR MOVLW ESPACIO ;ES “ ” ESCRIB MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA BCF IMEDSEG ;BORRA BANDERA DE ½ SEG. BCF MODIFC ;BORRA BANDERA DE MODIFICACION NO_REL BCF 150MSEG ;BORRA BANDERA DE 50 MILISEG. CALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS MOVLW 0X0A ;VE SI DEBE DE SALIR DE LARUTINA XORWF TECLA, W SKPNZ B MENU ;VA A MENU PRINCIPAL DE OPCIONES MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON CAMBIOS XORWF TECLA, W SKPNZ B CMB_REL ;VA A CAMBIAR EL DIA Y LA HORA B MOS_REL ;VA AL CICLO DEL RELOJ ;--- RUTINA PARA CAMBIAR EL DIA Y LA HORA EN EL RELOJ --CMB_REL MOVLW OXFF ;BORRA CONTENIDO DEL REGISTRO lxvi TECLA MOVWF TECLA CALL INICIA BCF AM BCF PM MOVF DIAS, W MOVWF EL_DIA MOVF HORAS, W MOVWF LA_HORA MOVF MINUTOS, W LOS_MIN ;VA A INICIALIZAR EL MODULO LCD ;MUEVE EL DIA AL REG. EL_DIA S O D RVA AL REG. ;MUEVE S LOS MINUTOS E E R S HO ;MUEVE LA HORA AL REG. LA_HORA EC R E D MOVWF CALL MOVLW 0X40 ;ESCRIBE MENSAJE MOVWF DIRINC MOVLW BOTONES MOVWF MENSAJE CALL DISPLAY CALL OUT_ACT CALL ESP_TMP LCALL FALLAS BCF 150MSEG CALL RC_DIA MOVLW 0X0A ;VA A VERIFICA SI DEBE ACTIVAR SALIDA ;VA A SUBRUTINA DE ESP_TMP ;VA A REVISAR SI HAY FALLAS ;BORRA BANDERA DE 50 MILISEG ;VA A RUTINA DE ;VE SI SALE A LA RUTINA SIN XORWF SKPNZ B MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON CAMBIOS XORWF TECLA, W SKPZ B CIC_REL MOVF EL DIA, W ;MUEVE EL DIA AL REG. EL_DIA lxvii MOVWF DIAS MOVF LA_HORA, W MOVWF HORAS MOVF LOS_MIN, W LOS_MIN MOVWF MINUTOS B CIC_REL ;MUEVE LA HORA AL REG. LA HORA ;MUEVE LOS MINUTOS AL REG. S O D VA R E S VER_CRL NOP MOVF LA_HORA, W ;ENCIENDE INDICADOR DE A.M. O P.M. SUBLW .11 SKPNC BSF AM SKPC BSF PM MOVF LOS_MIN, W ;CONVIERTE MINUTOS A BCD PARA MOSTRARLO CALL BIN_BCD MOVF BCDL, W MOVWF DIGITO1 MOVF BCDH, W MOVWF DIGITO2 MOVF LA_HORA, W ;BUSCA EQUIVALENTE HORA MILITAR A NORMAL SUBLW .12 SKPNC ;VERIFICA SI LA HORA ES MAYOR DE 12 B NO_PAS1 E R S HO EC R E D MOVLW .12 SUBWF LA_HORA, W B LISTAC1 NO_PAS1 TSTF LA HORA ;VERIFICA SI LA HORA ES CERO 0--> 12 SKPZ B ANTLISI MOVLW .12 B LISTAC1 ANTLIS1 MOVF LA_HORA, W ;CONVIERTE HORAS A BCD PARA MOSTRARLO LISTAC1 CALL BIN_BCD MOVF BCDL, W MOVWF DIGITO3 lxviii MOVF BCDH, W MOVWF DIGITO4 CLRF DIRINC MOVF EL_DIA, W ;UBICA DIA DE LA SEMANA ;INDICA EL DIA DE LA SEMANA? CALL BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE PROGRAM B NO_TIPG BCF TITILAR SI_TIPG MOVF Nº_PRGM, W ;ESCRIBE Nº DE PROGRAMA CALL T ASCII B ESCRIPG NO_TIPG BSF TITILAR MOVLW ESPACIO ;BORRA Nº DE PROGRAMA ESCRIPG MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA BCF IMEDSEG ;BORRA BANDERA DE ½ SEG. BCF MODIFIC ;BORRA BANDERA DE MODIFICACIÓN NO_PGM BCF 150MSEG ;BORRA BANDERA DE 50 MILISEG CALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W SKPNZ B MENU ;VA A MENU PRINCIPAL DE OPCIONES MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON CAMBIOS XORWF TECLA, W SKPNZ B CMB_PGM ;VA A CAMBIAR EL DIA Y LA HORA MOVF TECLA, W ;VERIFICA SI HAY UNA NUEVA TECLA XORLW 0XFF ;...PULSADA S O D VA R E S E R S HO EC R E D SKPNZ B NO_CBPG MOVF TECLA, W TECLA... SUBLW 0X06 SKPC B SI_CBPG TSTF TECLA ;VERIFICA SI LA SELECCIÓN DE LA ;...ESTA ENTRE 1 Y 6 lxix SKPNZ B SI_CBPG MOVF TECLA, W ;CAMBIA EL Nº SI SELECCIÓN ES VALIDA MOVWF Nº_PRGM SI_CBPG B CIC_PGM ;VA AL PRINCIPIO DE LA RUTINA DE PROGRM NO_CBPG B MOS_PGM ;VA AL CICLO DE VISUALIZACIÓN DE PROGRM S O D VA R E S E R S HO ;--- RUTINA PARA CAMBIAR EL DIA Y LA HORA EN EL PROGRAMA --CMB_PGM BCF ONOFF CMB_PG2 MOVLW 0XFF ;BORRA CONTENIDO DEL REGISTRO TECLA MOVWF TECLA CALL INICIA ;VA A INICIALIZAR EL MODULO LCD EC R E D CALL LEER CALL LOAD PG VARIABLES ;VA A CARGAR EL PROGRAMA EN BCF AM BCF PM MOVF P_DIAS, W ;MUEVE EL DIA PROGRAMADO AL REG. EL_DIA MOVWF EL_DIA MOVF HORAS, W ;MUEVE LA HORA PROGRAMADA AL REG. LA_HORA MOVWF LA_HORA MOVF P_MINUTOS, W ;MUEVE LOS MINUTOS PROGRAMADO AL REG. LOS_MIN MOVWF LOS_MIN CALL VER_CPG MOVLW 0X42 ;ESCRIBE MENSAJE MOVWF DIRINC MOVLW PROGRAM MOVLW ESPACIO MOVWF MENSAJE CALL PROXIMO MOVF Nº PRGM, W CALL T_ASCII INIDICA EL NUMERO DEL PROGRAMA lxx MOVWF MENSAJE CALL PROXIMO MOVLW ESPACIO MOVWF MENSAJE CALL PROXIMO MOVLW ESLATCH MOVWF MENSAJE CALL PROXIMO MOVLW ON BTFSC ONOFF MOVLF OFF MOVWF MENSAJE CALL PROXIMO CALL OUT_ACT CALL ESP_TMP LCALL FALLAS BCF I50MSEG CALL RC_PD1A MOVLW 0X0A XORWF TECLA, W SKPNZ B CIC_PGM MOVLW 0X0B XORWF TECLA, W SKPZ B CIC_PGM CALL ESCRIBA EEPROM BTFSC ONOFF B CIC_PGM PROGRAMACION BSF ONOFF B CMB_PG2 S O D VA R E S E R S HO EC R E D ;VA A VERIFICA SI DEBE ACTIVAR SALIDA ;VA A SUBRUTINA DE ESP_TMP ;VA A REVISAR SI HAY FALLAS ;BORRA BANDERA DE 50 MILISEG ;VA A RUTINA DE MODIFICACION ;VE SI SALE A LA RUTINA SIN CAMBIOS ;REGRESA SI SE ABORTO PROGRAMACION ;VE SI ENTRA A LA RUTINA CON CAMBIOS ;REGRESA SI ES UNA TECLA DESCONOCIDA ;VA A ESCRIBIR PROGRAMA EN LA ;VERIFICA SI ES PARTE ON O OFF ;REGRESA SI A FINALIZADO ;REGRESA A ESCRIBIR PARTE OFF VER_CPG MOVF LA_HORA, W ;ENCIENDE INIDCADOR DE A.M. O P.M. SUBLW .11 SKPNC BSF AM SKPC BSF PM MOVF LOS_MIN, W ;CONVIERTE MINUTOS A BCD PARA lxxi MOSTRARLO CALL BIN_BCD MOVF BCDL, W MOVWF DIGITO1 MOVF BCDH, W MOVWF DIGITO2 MOVF LA_HORA, W ;BUSCA EQUIVALENTE HORA MILITAR A NORMAL SUBLW .12 SKPNC ;VERIFICA SI LA HORA ES MAYOR DE 12 B NO_PPG1 MOVLW .12 SUBWF LA_HORA, W B LISTPG1 NO_PPG1 TSTF LA_HORA ;VERIFICA SI LA HORA ES CERO 0--> 12 SKPZ B ANTILPG1 MOVLW .12 B LISTPG1 ANTLPG1 MOVF LA_HORA, W ;CONVIERTE HORAS A BCD PARA MOSTRARLO LISTPG1 CALL BIN_BCD MOVF BCDL, W MOVWF DIGITO3 MOVF BCDH,W MOVWF DIGITO4 CLRF DIRINC ;UBICA DIA DE LA SEMANA MOVF EL_DIA, W ;UBICA EL DIA DE LA SEMANA CALL DEC_DIA MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EL DIA DE LA SEMANA MOVLW 0X04 ;UBICA LA HORA MOVWF DIRINC MOVF DIGITO4, W ;VERIFICA SI DECENA DE HORA ES CERO BNZ NO_CPG1 MOVLW ESPACIO ;COLOCA UN ESPACIO EN DECENA DE HORA B SIGPG_ NO_COG1 CALL T_ASCII ;BUSCA UBICACION EN LA TABLA SIGPG_1 MOVWF MENSAJE S O D VA R E S EC R E D E R S HO lxxii CALL DISPLAY MOVF DIGITO3, W CALL T_ASCII MOVWF MENSAJE CALL PROXIMO MOVLW 0X07 MOVWF DIRINC MOVF DIGITO2, W CALL T_ASCII ;VA A ESCRIBIR EN LA PANTALLA ;BUSCA UBICACIÓN EN LA TABLA ;VA A ESCRIBIR EN LA PANTALLA ;UBICA LA MINUTOS S O D VA R E S ;BUSCA UBICACIÓN EN LA TABLA E R S MOVWF MENSAJEHO EC ;VA A ESCRIBIR EN LA PANTALLA CALL DISPLAY R E D DIGITO1, W MOVF CALL T_ASCII ;BUSCA UBICACIÓN EN LA TABLA MOVWF MENSAJE CALL PROXIMO ;VA A ESCRIBIR EN LA PANTALLA MOVWF DIRNC BTFSS AM ;VERIFICA SI ES AM O PM B ES_OGPM MOVLW A.M. ;ES AM B LISPG_1 ES_PGPM MOVLW P.M. ;ES PM LISPG_1 MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVLW 0X06 MOVWF DIRINC ;UBICA DIRECCION DE LOS DOS PUNTOS MOVLW PUNTOS ;ES “:” MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA RETURN ;RETORNA ;--- SUBRUTINA PARA CAMBIAR EL DIA EN LOS PROGRAMAS -RC_PDIA MOVLW 0XFF ;BORRA CONTENIDO DEL REGISTRO TECLA MOVWF TECLA CALL VER_CPG ;REFRESCA PANTALLA LCD LC_PDIA CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BCF I50MSEG ;BORRA BANDERA DE 50 MILISEG. MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W lxxiii SKPNZ RETURN ;SALE DE LA RUTINA R_PDIA MOVF TECLA, W ;VERIFICA SI LA SELECCIÓN DE LA TECLA... SUBLW 0X07 ;...ESTA ENTRE 1 Y 7 MOVF TECLA, W ;CAMBIA EL DIA SI SELECCIÓN ES VALIDA MOVWF EL_DIA TITILDP BTFSS IMEDSEG ;VERIFICA SI TITILA LA SELECCIÓN B SIGUEDP BCF IMEDSEG ;BORRA BANDERA INDICADORA DE ½ SEG. CLRF DIRINC ;INDICA DIRECCION DE INICIO BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE “:” B NO_TIDP BCF TITILAR S O D VA R E S E R S HO EC R E D SI_TIDP MOVF EL_DIA, W CALL DEC_DIA ;ES EL DIA MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA B SIGUEDP NO_TIDP BSF TITILAR MOVLW ESPACIO ;SON ESPACIOS MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVLW ESPACIO MOVWF MENSAJE CALL PROXIMO MOVLW ESPACIO MOVWF MENSAJE CALL PROXIMO SIGUEDP MOVLW 0X0B ;VE SI SALE DE LA RUTINA CON CAMBIOS XORWF TECLA, W SKPNZ B RC_PHOR ;PROSIGUE CON EL CAMBIO DE DIA Y HORA CALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA BLC_PDIA ;SALTA AL PRINCIPIO DE LA RUTINA ;--- SUBRUTINA PARA CAMBIAR LA HORA EN LOS PROGRAMAS --RC_PHOR MOVLW 0XFF ;BORRA CONTENIDO DEL REGISTRO lxxiv TECLA MOVWF TECLA CALL VER_CPG ;REFRESCA PANTALLA LCD BCF PRI_SEG ;GARANTIZA QUE PRIMERO SEA LA DECENAS LC_PHOR CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BCF I50MSEG ;BORRA BANDERA DE 50 MILISEG. MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W SKPNZ RETURN ;SALIR DE LA RUTINA R_PHORA BTFSC PRI_SEG ;VERIFICA SI SON LAS DEC. O LAS UNIDADES B C_PUNH MOVLW 0X01 XORWF TECLA, W ;VERIFICA QUE SI ES UNO SKPZ B PG_ES10 MOVF TECLA, W MOVWF DIGITO4 ;ESCRIBE UNO (DECENAS) BSF PRI_SEG S O D VA R E S E R S HO EC R E D B C_PHOR1 PG_ES10 MOVF TECLA,F ;VERIFICA SI ES CERO SKPZ B C_PHORI CLRF DIGITO4 ;ESCRIBE CERO (DECENAS) BSF PRI_SEG B C_PHOR1 C_PUNH TSTF DIGITO4 SKPNZ B C_PUNHR MOVF DIGITO3, W SUBLW 0X02 SKPC CLRF DIGITO3 MOVF TECLA, W SUBLW 0X02 ;VERIFICA SI ES 2 O MENOR SKPC B PG_ES0X B C_PUNHB lxxv C_PUNHR MOVF TECLA, W SUBLW 0X09 ;VERIFICA SI ES 9 O MENOR SKPC B PG_ES0X C_PUNHB MOVF TECLA, W SUBLW 0X00 ,VERIFICA QUE SEA 1 O MAYOR SKPNC B PG_ES0X MOVF TECLA, W MOVWF DIGITO3 ;ESCRIBE DEL 1 AL 9 (UNIDADES) BCF PRI_SEG B C_PHOR1 PG_ES0X MOVF TECLA,F ;VERIFICA SI ES CERO SKPZ B C_PHORI MOVF DIGITO4,F SKPNZ B C_PHORI CLRF DIGITO3 ;ESCRIBE CERO (UNIDADES) BCF PRI_SEG C_PHORI TSTF DIGITO4 ;VERIFICA QUE NO SEA H=H=0 (00:MM) SKPNZ TSTF DIGITO3 SKPNZ INCF DIGITO,F MOVLW 0X04 ;GUARDA VALORES PARA RUTINA TITILAR MOVWF DIRINC S O D VA R E S E R S HO EC R E D TITILHP BTFSS IMEDSEG ;VERIFICA SI TITILA LA SELECCIÓN B SIGUEHP BCF IMEDSEG ;BORRA BANDERA INDICADORA DE ½ SEG. BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE “:” B NO_TIHP BCF TITILAR SI_TIHP MOVF DIGITO4, W ;DECENA DE HORA CALL T_ASCII MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVF DIGITO3, W ;UNIDAD DE HORA CALL T_ASCII MOVWF MENSAJE lxxvi CALL PROXIMO ;VA A ESCRIBIR EN LA PANTALLA B SIGUEHP NO_TIHP BSF TITILAR MOVLW ESPACIO ;SON ESPACIOS MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVLW ESPACIO MOVWF MENSAJE CALL PROXIMO SIGUEHP MOVLW 0X0B ;VE SI SALE DE LA RUTINA CON CAMBIOS XORWF TECLA, W SKPNZ B CV_PHOR ;VA A CONVERTIR DE BCD A BINARIO CALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA B LC_PHOR ;SALTA Al PRINCIPIO DE LA RUTINA ON_PHOR MOVF DIGITO4, W MOVWF BCDH MOVF DIGITO3, W ;CONVIERTE DE BCD A BINARIO MOVWF BCDL CALL BCD_BIN MOVF BINARIO, W MOVWF LA_HORA S O D VA R E S E R S HO EC R E D ;--- SUBRUTINA PARA CAMBIAR LOS MINUTOS EN LOS PROGRAMAS --RC_PMIN MOVLW OXOFF ;BORRA CONTENIDO DEL REGISTRO TECLA MOVWF TECLA CALL VER_CPG ;REFRESCA PANTALLA LCD BCF PRI_SEG ;GARANTIZA QUE PRIMERO SEA LA DECENAS LC_PMIN CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BCF I50MSEG ;BORRA BANDERA DE 50 MILISEG. MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W SKPNZ RETURN ;SALE DE LA RUTINA R_PMIN BTFSC PRI_SEG ;VERIFICA SI SON LAS DEC. O LAS UNIDADES lxxvii B C_PUNMN MOVF TECLA, W ;VERIFICA SI ES 5 O MENOR MOVF TECLA, W ;VERIFICA QUE SEA 1 O MAYOR SUBLW 0X00 SPKNC B PG_10MN MOVF TECLA, W MOVWF DIGITO2 ;ESCRIBE UNO (DECENAS) BSF PRI SEG B C_OMIN1 PG_10MN MOVF TECLA,F ;VERIFICA SI ES CERO SKPZ B C_PMIN1 CLRF DIGITO2 ;ESCRIBE CERO (DECENAS) BSF PRI-SEG B C_PMIN1 C_PUNMN MOVF TECLA, W SUBLW 0X09 ;VERIFICA SI ES 9 O MENOR SKPC B PG_OXMN MOVF TECLA, W SUBLW 0X00 ;VERIFICA QUE SEA 1 O MAYOR SKPNC B PG_0XMN MOVF TECLA, W MOVWF DIGITO1 ;ESCRIBE DEL 1 AL 9 (UNIDADES) BCF PRI_SEG B C_PMIN1 PG_0XMN MOVF TECLA,F ;VERIFICA SI ES CERO SKPZ B C_PMIN1 CLRF DIGITO1 ;ESCRIBE CERO (UNIDADES) BCF PRI_SEG C_PMIN1 MOVLW 0X07 ;GUARDA VALORES PARA LA RUTINA TITILAR MOVWF DIRINC TITILMP BTFSS IMEDSEG ;VERIFICA SI TITILA LA SELECCIÓN B SIGUEMP BCF IMEDSEG ;BORRA BANDERA INDICADORA DE ½ SEG. BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE “:” S O D VA R E S E R S HO EC R E D B NO_TIMP lxxviii BCF TITILAR SI_TIMP MOVF DIGITO2, W ;DECENA DE HORA CALL T_ASCII MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVF DIGITO1, W ;UNIDAD DE HORA CALL T_ASCII MOVWF MENSAJE CALL PROXIMO ;VA A ESCRIBIR EN LA PANTALLA B SIGUEMP NO_TIMP BSF TITILAR MOVLW ESPACIO ;SON ESPACIOS MOVWF MENSAJE CALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA MOVLW ESPACIO MOVWF MENSAJE CALL PROXIMO SIGUEMP MOVLW 0X0B ;VE SI SALE DE LA RUTINA CON CAMBIOS XORWF TECLA, W SKPNZ B CV_PMIN ;VA A CONVERTIR DE BCD A BINARIO CALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA B LC_PMIN ;SALTA AL PRINCIPIO DE LA RUTINA CV_PMIN MOVF DIGITO2, W MOVWF BCDH MOVF DIGITO, W ;CONVIERTE DE BCD A BINARIO MOVWF BCDL CALL BCD_BIN MOVF BINARIO, W MOVWF LOS_MIN S O D VA R E S E R S HO EC R E D ;--- SUBRUTINA PARA CAMBIAR AM <-> PM EN LOS PROGRAMAS RC_PMAM MOVLW 0XFF ;BORRA CONTENIDO DEL REGISTRO TECLA MOVWF TECLA CALL VER_CPG ;REFRESCA PANTALLA LCD LC_PMAM CALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BCF I50MSEG ;BORRA BANDERA DE 60 MILISEG MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W MOVLW 0X01 lxxix XORWF TECLA, W SKPZ B PG_ES1 BTFSC AM B PG_ES1 BCF PM BSF AM MOVLW .12 SUBWF LA_HORA,F PG_ES1 MOVLW 0X02 XORWF TECLA, W SKPZ B C_PMAM BTFSC PM B C_PMAM BCF AM BSF PM MOVLW .12 ADDWF LA_HORA,F C_PMAM MOVLW 0X09 TITILAR MOVWF DIRINC TITILPP BTFSS IMEDSEG B SIGUEPP BCF IMEDSEG BTFSS TITILAR B NO_TIPP BCF TITILAR SI_TIPP BTFSS AM B ES_PM.P MOVLW A.M. B $+2 ES_PM.P MOVLW P.M. MOVWF MENSAJE CALL DISPLAY B SIGUEPP NO_TIPP BSF TITILAR MOVLW ESPACIO MOVWF MENSAJE CALL DISPLAY MOVLW ESPACIO ;VERIFICA QUE SI ES UNO S O D VA R E S EC R E D E R S HO ;VERIFICA QUE SI ES UNO ;GUARDA VALORES PARA LA RUTINA ;VERIFICA SI TITILA LA SELECCIÓN ;BORRA BANDERA INDICADORA DE ½ SEG. ;VERIFICA SI APAGA O ENCIENDE “:” ;VERIFICA SI ESCRIBE AM O PM ;VA A ESCRIBIR EN LA PANTALLA ;SON ESPACIOS ;VA A ESCRIBIR EN LA PANTALLA lxxx MOVWF MENSAJE CALL PROXIMO SIGUEPP MOVLW 0X0B ;VE SI SALE DE LA RUTINA CON CAMBIOS XORWF TECLA, W SKPNZ RETURN ;ACEPTA CAMBIOS DEL DIA Y HORA CALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA B LC_PMAM ;SALTA AL PRINCIPIO DE LA RUTINA S O D VA R E S E R S O QUE TRANSCURRA 50 mS Y ;--- SUBRUTINA PARA ESPERAR H C E EXPLORARE TECLADO R --ESP_TMPD CALL TECLADO ;VA A RETINA DE LECTURA DEL TECLADO LP_TMP BTFSS I50MSEG ;VERIFICA SI YA A TRANSCURRIDO 50 mS GOTO LP_TMP NOP RETURN ;REGRESA AL CULMINAR LOS 50 MILISEG. ;--SUBRUTINA PARA LA CONVERSION DE BINARIO A BCD BIN_BCD CLRF BCDH MOVWF BCDL LAZOBCD MOVLW .10 SUBWF BCDL, W SKPC B LISTO MOVWF BCDL INCF BCDH,F B LAZOBCD LISTO RETURN --- ;--SUBRUTINA PARA LA CONVERSION DE BCD A BINARIO --BCD_BIN MVF BCDH, W MOVWF BINARIO CLRC RLF BINARIO, W MOVWF BCDH RLF BINARIO,F RLF BINARIO,F lxxxi RLF BINARIO,F MOVF BCDH, W ADDWF BINARIO,F MOVF BCDL, W ADDWF BINARIO,F RETURN S O D VA R E S ;--RUTINA PARA LEER LOS DATOS EN LA MEMORIA EEPROM --LEER CALL PREPARA ;VA A PREPARAR REGISTRO EEADR LEER2 CALL EE_LEER ;VA A LEER EEPROM MOVWF P_DIAS ;GUARDA DATO EN P_DIAS BANCO_2 ;BANCO 2 INCF EEADR,F ;UBICA DIRECCION DEL NUEVO DATO CALL EE_LEER ;VA A LEER EEPROM E R S HO EC R E D MOVWF P_HORAS ;GUARDA DATO EN P_HORAS BANCO_2 ;BANCO 2 INCF EEADR,F ;UBICA DIRECCION DEL NUEVO DATO CALL EE_LEER ;VA A LEER EEPROM MOVWF P_MINUTOS ;GUARDA DATO EN P_MINUTOS RETURN ;RETORNA ;--RUTINA PARA ESCRIBIR LOS DATOS EN LA MEMORIA EEPROM --ESCRIBA CALL PREPARA ;VA A PREPARAR REGISTRO EEADR MOVF EL_DIA, W CALL VA_ESC ;VA PREPARAR EE_DATA Y ESCRIBIR EEPROM MOVF LA_HORA, W CALL VA_ESC ;VA PREPARAR EE_DATA Y ESCRIBIR EEPROM MOVF LOS_MIN, W CALL VA_ESC ;VA PREPARAR EE DATA Y ESCRIBIR EEPROM RETURN RETORNA ;--- SUBRUTINA QUE TRASPASA LOS DATOS DEL PRGM. A LOS REGISTRO DE VIS.--LOAD_PG MOVF P_DIAS, W ;BUSCA VALOR ACTUAL DEL DIA lxxxii PROGRAMADO MOVWF EL_DIA MOVF P_HORAS, W PROGRAM. MOVWF LA_HORA MOVF P_MINUTOS, W MINUTOS PROG. MOVWF LOS_MIN RETURN ;BUSCA VALOR ACTUAL DE LA HORA ;BUSCA VALOR ACTUAL DE LOS S O D VA R E S E R S HO ;--- SUBRUTINAS VARIADAS QUE PERMITEN EL MANEJO DE LA MEMORIA EEPROM --PREPARA BANCO_2 ;VA AL BANCO 2 CLRF EEADR ;ACONDICIONA DIRECCION DE DATOS EEPROM BANCO_0 SWAPF Nº_PRGM, W ;UBICA EL PROGRAMA ANDLW B’01110000’ BTESC ONOFF IORLW B’00000100’ ;INDICA SI ES ON / OFF BANCO_2 EC R E D IORWF EEADR,F BANCO_0 RETURN VA_ESC BANCO_2 ;BANCO 2 MOVWF EEDATA ;ESCRIBE DATO ENREG. EEDATA CALL EE_ESCR ;VA A ESCRIBIR DATO BANCO 2 ;BANCO 2 INCF EEADR,F ;AJUSTA EEADR PARA LA PROXIMA ESCRITURA BANCO_0 ;BANCO 0 RETURN ;RETORNA EE_LEER BANCO_3 CLRF EECON 1 BSF EECON1,RD BANCO_2 ;BANCO 3 ;LIMPIA REGISTRO EECON 1 ;ACTIVA LECTURA DE LA EEPROM ;BANCO 2 lxxxiii MOVF EEDATA, W ;GUARDA EN W RESULTADO BANCO_0 ;BANCO 0 RETURN ;RETORNA EE_ESCR BANCO_3 ;BANCO 3 CLRF EECON1 ;LIMPIA REGISTRO EECON1 BCF INTCON,GIE ;DESHABILITA LAS INTERRUPCIONES BSF EECON1, WREN ;HABILITA LA ESCRITURA MOVLW 0X55 MOVWF EECON2 ;SECUENCIA DE SEGURIDAD PARA ESCRIBIR MOVLW 0XAA MOVWF EECON2 BSF EECON1, WR ;COMIENZA PROCESO DE ESCRITURA EN EEPROM BSF INTCON,GIE ;HABILITA DE NUEVO LAS INTERRUPCIONES NO_TERM BTFSC EECON1,WR ;VERIFICA SI TERMINO PROCESO (ESCRITURA) GOTO NO_TERM BANCO_0 ;BANCO 0 RETURN ;RETORNA S O D VA R E S E R S HO EC R E D ;--- RUTINA PARA ACTIVAR Y DESACTIVAR LAS SALIDAS OUT_ACT BANCO_2 ;BANCO 2 MOVF EEADR,W ;GUARDA REGISTRO EEADR BANCO 0 ;BANCO_0 MOVWF EEADR2 MOVLW B’00100000’ MOVWF REG_ON MOVLW B’11011111’ MOVWF REG_OFF MOVLW .6 MOVWF Nº_PRGM2 MOVF PORTD, W ;GUARDA LAS SALIDAS QUE ESTAN ACTIVAS MOVWF SAL_PGM LAZ_SAL SWAPF Nº_PRGM2, W ;UBICA EL PROGRAMA ANDLW B’01110000’ lxxxiv --- BANCO 2 CLRF EEADR EEPROM IORWF EEADR,F BANCO_0 LCALL LEER2 BSF PCLATH,3 CALL COMPARA HORA ;ACONDICIONA DIRECCION DE DATOS ;VA A LEER LA EEPROM ;UBICA BANCO ACTUAL DE LA ROM ;COMPARA SI DATO DE EEPROM = DIA Y S O D VA R E S E R S HO MOVF REG_ON, W BTFSC IGUAL IORWF SAL_PGM,F SWAPF Nº PRGM2, W ANDLW B’01110000’ BANCO_2 BSF EEADR,2 BANCO_0 LCALL LEER2 BSF PCLATH,3 CALL COMPARA HORA EC R E D ;LA ACTIVA SI ES IGUAL ;UBICA EL PROGRAMA ;VA A LEER LA EEPROM ;UBICA BANCO ACTUAL DE LA ROM ;COMPARA SI DATO DE EEPROM = DIA Y MOVF REG_OFF, W BTFSC IGUAL ANDWF SAL_PGM,F LA DESACTIVA SI ES IGUAL CLRC RRF REG_ON,F SETC RRF REG_OFF, F DECESZ Nº_PRGM2, F GOTO LAZ_SAL ;SALTA A LEER PROXIMO PROGRAMA MOVF SAL_PGM, W ;ACTIVA SALIDAS PROGRAMADAS Y FORZADAS MOVWF PORTD ;ACTIVA LAS SALIDAS MOVF EEADR2, W ;DEVUELVE VALORES ORIGINALES A EEADR BANCO_2 ;BANCO 2 MOVWF EEADR BANCO_0 ;BANCO 0 CLRF PCLATH RETURN lxxxv COMPARA BCF IGUAL ;LIMPIA BANDERA DE TIEMPO IGUAL MOVF P_DIAS, W ;MUEVE DIA PROGRAMADO A W SKPNZ ;PRUEBA SI ES 0 PARA NO COMPARAR GOTO DIA_0 XORWF DIAS, W ;PRUEBA SI DIAS ES IGUAL A PDIAS SKPZ RETURN ;RETORNA SI NO SON IGUALES DIA_0 MOVF_HORAS, W ;MUEVE HORA PROGRAMADA A W XORWF HORAS, W ;PRUEBA SI HORAS ES IGUAL A PHORAS SKPZ RETURN ;RETORNA SINO SON IGUALES MOVF P_MINUTOS, W ;MUEVE MINUTOS PROGRAMADA A W XORWF MINUTOS, W ;PRUEBA SI MINUTOS ES IGUAL A PMIN BTESC FZ ;SALTA SI NO SON IGUALES BSF IGUAL ;ACTIVA BANDERA DE IGUALDAD RETURN ;RETORNA S O D VA R E S E R S HO EC R E D ;--- RUTINAS PARA MOSTRAR LAS SALIDAS EN LA PANTALLA LCD --CIC_SAL MOVLW 0XFF ;BORRA CONTENIDO DEL REGISTRO TECLA MOVWF TECLA LCALL INICIA ;VA A INICIALIZA EL MODULO LCD BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM BSF MODIFIC MOVLW 0X40 ;ESCRIBE MENSAJE LCALL DISPLAY BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM MOVLW 0X00 ;ESCRIBE MENSAJE MOVWF DIRINC MOVLW SALIDA MOVWF MENSAJE LCALL DISPLAY BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM CLRF CONSTRU L_CNSTS INCF CONSTRU,F MOVLW 0X07 XORWF CONTRU,W BZ MOS_SAL MOVLW ESPACIO lxxxvi MOVWF MENSAJE LCALL PROXIMO MOVF CONSTRU,W LCALL T_ASCII MOVWF MENSAJE LCALL PROXIMA BSF PCLATH,3 B L_CNSTS ;UBICA BANCO ACTUAL DE LA ROM S O D A POR TIEMPO V R MOS_SAL BTFSC IMEDSEG ;VERIFICA SI ENTRA E S E B VER_SAL R S BTFSS MODIFIC HO ;VERIFICA SI ENTRA POR ORDEN C E B NO_SAL DER VER_SAL MOVLW 0X03 MOVWF DIRINC CLRC RLF Nº_SALD, W ADDWF DIRINC,F BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE Nº PROGRAM B NO_TISL BCF TITILAR SI_TISL MOVF Nº_SALD, W ;ESCRIBE Nº DE PROGRAMA LCALL T_ASCII BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM B ESCRISL NO_TISL BSF TITILAR MOVLW ESPACIO ;BORRA Nº DE PROGRAMA ESCRISL MOVWF MENSAJE LCALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM BCF IMEDSEG ;BORRA BANDERA DE ½ SEG. BCF MODIFIC ;BORRA BANDERA DE MODIFICACION NO_SAL BCF I50MSEG ;BORRA BANDERA DE 50 MILISEG. LCALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA LCALL ESP_TMP ;VA A SUBRUTINA DE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W SKPNZ B MENUSL ;VA A MENU PRINCIPAL DE OPCIONES lxxxvii MOVLW 0X0B XORWF TECLA, W SKPNZ ;VE SI ENTRA A LA RUTINA CON CAMBIOS B MOD_SAL MOVF TECLA, W XORLW 0XFF SKPNZ B NO_CBSL MOVF TECLA, W TECLA... SUBLW 0X06 SKPC B SI_CBSL TSTF TECLA SKPNZ B SI_CBSL MOVF TECLA, W MOVWF Nº_SALD SI_CBSL B CIC_SAL PROGRM NO CBSL B MOS_SAL PROGRM ;VA A CAMBIAR EL DIA Y LA HORA ;VERIFICA SI HAY UNA NUEVA TECLA... ;...PULSADA S O D VA R E S E R S HO EC R E D MOD_SAL NOP MOVF Nº_SALD, W XORLW .6 SKPZ B $+7 BTFSS PORTD,5 B $+4 NOP BCF PORTD,5 B $+2 BSF PORTD,5 NOP MOVF Nº_SALD, W XORLW .5 SKPZ B $+7 BTFSS PORTD, 4 B $+4 ;VERIFICA SI LA SELECCIÓN DE LA ;...ESTA ENTREW 1 Y 6 ;CAMBIA EL Nº SI SELECCIÓN ES VALIDA ;VA AL PRINCIPIO DE LA RUTINA DE ;VA AL CICLO DE VISUALIZACION DE ;VERIFICA SI LA ORDEN ES LA SALIDA 6 ;VERIFICA SI LA SALIDA ESTA ENCENDIDA ;APAGA SALIDA 6 :ENCIENDE SALIDA 6 ;VERIFICA SI LA ORDEN ES LA SALIDA 5 ;VERIFICA SI LA SALIDA ESTA ENCENDIDA lxxxviii NOP BCF PORTD,4 B $+2 BSF PORTD,4 NOP MOVF Nº_SALD, W XORLW .4 SKPZ B $+7 ;APAGA SALIDA 5 ;ENCIENDE SALIDA 5 ;VERIFICA SI LA ORDEN ES LA SALIDA 4 S O D VA R E S EC R E D E R S HO;VERIFICA SI LA SALIDA ESTA ENCENDIDA BTFSS PORTD,3 BSF PORTD,3 NOP MOVF Nº_SALD, W XORLW .3 SKPZ B $+7 BTFSS PORTD,2 B $+4 NOP BCF PORTD,2 B $+2 BSF PORTD,2 NOP MOVF Nº_SALD, W XORLW .2 SKPZ B $+7 BTFSS PORTD,1 B $+4 NOP BCF PORTD,1 B $+2 BSF PORTD,1 NOP MOVF Nº_SALD, W XORLW .1 SKPZ B $+7 BTFSS PORTD,0 B $+4 NOP ;ENCIENDE SALIDA 4 ;VERIFICA SI LA ORDEN ES LA SALIDA 3 ;VERIFICA SI LA SALIDA ESTA ENCENDIDA ;APAGA SALIDA 3 ;ENCIENDE SALIDA 3 ;VERIFICA SI LA ORDEN ES LA SALIDA 2 ;VERIFICA SI LA SALIDA ESTA ENCENDIDA ;APAGA SALIDA 2 ;ENCIENDE SALIDA 2 ;VERIFICA SI LA ORDEN ES LA SALIDA 1 ;VERIFICA SI LA SALIDA ESTA ENCENDIDA lxxxix BCF PORTD,0 B $+2 BSF PORTD,0 NOP B CIC_SAL ;APAGA SALIDA 1 ;ENCIENDE SALIDA 1 MENUSL LGOTO MENU S O D VA R ;--- RUTINAS PARA MOSTRAR LAS SALIDAS EN LA PANTALLA LCD E S E --R S CIC_LCD MOVLW 0XFFHO ;BORRA CONTENIDO DEL REGISTRO C TECLA RE E D MOVWF TECLA LCALL INICIA ;VA A INICIALIZAR EL MODULO LCD BSF PCLATH,3 BSF MODIFIC MOVLW 0X40 MOVWF DIRINC MOVLW SEL_CNT MOVWF MENSAJE LCALL DISPLAY BSF PCLATH,3 MOVLW 0X05 MOVWF DIRINC MOVLW CONTRAS MOVWF MENSAJE LCALL DISPLAY BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM ;ESCRIBE MENSAJE ;UBICA BANCO ACTUAL DE LA ROM ;ESCRIBE MENSAJE ;UBICA BANCO ACTUAL DE LA ROM MOS_LCD BTFSC IMEDSEG ;VERIFICA SI ENTRA POR TIEMPO B VER_LCD BTFSS MODIFIC ;VERIFICA SI ENTRA POR ORDEN B NO_LCD VER_LCD MOVLW 0X0A MOVWF DIRINC BTFSS TITILAR ;VERIFICA SI APAGA O ENCIENDE B NO_TICT BCF TITILAR SI_TICT MOVF Nº_LCD, W ;ESCRIBE Nº DE CONTRASTE LCALL T_ASCII xc BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM B ESCRICT NO_TICT BSF TITILAR MOVLW ESPACIO ;BORRA Nº DE PROGRAMA ESCRICT MOVWF MENSAJE LCALL DISPLAY ;VA A ESCRIBIR EN LA PANTALLA BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM BCF IMEDSEG ;BORRA BANDERA DE ½ SEG. BCF MODIFIC ;BORRA BANDERA DE MODIFICACION NO_LCD BCF I50MSEG ;BORRA BANDERA DE 50 MILISEG. LCALL OUT_ACT ;VA A VERIFICA SI DEBE ACTIVAR SALIDA LCALL ESP_TMP ;VA A SUBRUTINA SE ESP_TMP LCALL FALLAS ;VA A REVISAR SI HAY FALLAS BSF PCLATH,3 ;UBICA BANCO ACTUAL DE LA ROM MOVLW 0X0A ;VE SI DEBE DE SALIR DE LA RUTINA XORWF TECLA, W SKPNZ B MENUCT ;VA A MENU PRINCIPAL DE OPCIONES MOVLW 0X0B ;VE SI ENTRA A LA RUTINA CON CAMBIOS XORWF TECLA, W S O D VA R E S E R S HO EC R E D SKPNZ B MOD_LCD MOVF TECLA, W XORLW 0XFF SKPNZ B NO_CBCT MOVF TECLA, W TECLA... SUBLW 0X09 SKPC B SI_CBCT MOVF TECLA, W MOVWF Nº_LCD SI_CBCT B CIC_LCD NO_CBCT B MOS_LCD ;VA A CAMBIAR EL DIA Y LA HORA ;VERIFICA SI HAY UNA NUEVA TECLA... ;...PULSADA ;VERIFICA SI LA SELECCIÓN DE LA ;...ESTA ENTRE 0 Y 9 ;CAMBIA EL Nº SI SELECCIÓN ES VALIDA ;VA AL PRINCIPIO DE LA RUTINA ;VA AL CICLO DE VISUALIZACION MOD_LCD NOP B CIC_LCD MENUCT LGOTO MENU xci