Capítulo 1 - IIT - Universidad Pontificia Comillas

Anuncio
DOCUMENTO Nº 1
MEMORIA
ÍNDICES
2
DOCUMENTO Nº1. MEMORIA
ÍNDICE DE CONTENIDO
Índice de Contenido
ÍNDICE DE LA MEMORIA
ÍNDICES ____________________________________________________________ 2
Índice de Contenido________________________________________________________ 3
Índice de Figuras __________________________________________________________ 8
Índice de Tablas __________________________________________________________10
PARTE I: MEMORIA ________________________________________________ 11
Capítulo 1
1.
2.
3.
4.
5.
6.
Introducción _______________________________________________12
Estado del arte ___________________________________________________________ 12
Motivación ______________________________________________________________ 13
Objetivo ________________________________________________________________ 14
Metodología _____________________________________________________________ 15
Recursos ________________________________________________________________ 16
Contenidos ______________________________________________________________ 17
Capítulo 2
Descripción del sistema ____________________________________18
1.
Elementos de las unidades de tratamiento de aire ______________________________ 18
1.1.
Ventilador de succión _________________________________________________ 18
1.2.
Servomotor bélimo joventa: ___________________________________________ 18
1.3.
Medidor de calidad de aire ____________________________________________ 19
1.4.
Potenciómetro de mínima apertura _____________________________________ 19
1.5.
Baterías de enfriamiento/calentamiento del climatizador ____________________ 20
1.6.
Electroválvula neumática de 2 vías ______________________________________ 20
1.7.
Presostato __________________________________________________________ 20
1.8.
Filtro de partículas: __________________________________________________ 21
1.9.
Filtro hepa: _________________________________________________________ 21
1.10.
Filtro de carbón activo: _______________________________________________ 21
1.11.
Batería de humidificación y deshumidicacion ______________________________ 21
1.12.
Medidor de la humedad del aire ________________________________________ 22
1.13.
Ventilador de impulsión _______________________________________________ 22
1.14.
Difusores orientables: ________________________________________________ 22
1.15.
Equipo completo ____________________________________________________ 22
2.
Funcionamiento de la unidad de tratamiento de aire ____________________________ 24
3.
Funcionamiento del control de la unidad de tratamiento de aire ___________________ 26
Capítulo 3
1.
2.
3.
4.
5.
6.
Capítulo 4
1.
2.
3.
4.
Utilización del microprocesador Motorola MC68HC908LJ12 ___30
Características destacables. _________________________________________________ 30
Asignación de pines _______________________________________________________ 33
Alimentación ____________________________________________________________ 34
Puertos _________________________________________________________________ 35
Mapa de memoria ________________________________________________________ 35
Vector de interrupción _____________________________________________________ 38
Utilización del microprocesador PIC16F877A ________________39
Características destacables. _________________________________________________ 40
Asignación de pines _______________________________________________________ 43
Alimentación ____________________________________________________________ 44
Puertos _________________________________________________________________ 44
3
DOCUMENTO Nº1. MEMORIA
5.
6.
ÍNDICE DE CONTENIDO
Mapa de memoria ________________________________________________________ 45
Vector de interrupción _____________________________________________________ 46
Capítulo 5
Descripción del Hardware __________________________________47
1.
Introducción _____________________________________________________________ 47
2.
Pulsadores ______________________________________________________________ 49
3.
Memoria EEPROM ________________________________________________________ 51
4.
Comunicaciones serie _____________________________________________________ 53
5.
Lectura de registros. ______________________________________________________ 55
6.
Escritura de registros. _____________________________________________________ 56
7.
Relés de salida. ___________________________________________________________ 56
8.
Sensores de temperatura. __________________________________________________ 58
9.
Conversor digital-analógico (D/A). ___________________________________________ 59
10. Comunicación con free-cooling. _____________________________________________ 60
11. Pantalla de cristal líquido. __________________________________________________ 63
12. Conector de programación. _________________________________________________ 64
13. Fuente de tensión. ________________________________________________________ 67
14. Oscilador. _______________________________________________________________ 68
15. Referencia de tensión para el convertidor A/D. _________________________________ 69
16. Otros dispositivos necesarios. _______________________________________________ 70
16.1.
Regulador de tensión. ________________________________________________ 70
16.2.
Transistores Darlington. _______________________________________________ 71
16.3.
Amplificadores operacionales. _________________________________________ 72
16.4.
Supercap. __________________________________________________________ 73
16.5.
Diodos Zener. _______________________________________________________ 73
16.6.
Diodos Schottky._____________________________________________________ 73
16.7.
Transiles. ___________________________________________________________ 74
16.8.
Puente de diodos. ___________________________________________________ 74
17. Dispositivos necesarios en la tarjeta S98 ______________________________________ 74
17.1.
Potenciómetro de mínima apertura _____________________________________ 75
17.2.
Servomotor de apertura de puertas _____________________________________ 75
17.3.
Controlador de humedad ______________________________________________ 76
17.4.
Medidor de calidad del aire ____________________________________________ 77
17.5.
Medidor de presión para control de filtros ________________________________ 77
17.6.
Interruptor _________________________________________________________ 78
17.7.
Modulo de comunicaciones ____________________________________________ 78
17.8.
MC34064 __________________________________________________________ 79
Capítulo 6
1.
2.
3.
4.
5.
Descripción del Software ___________________________________80
Introducción _____________________________________________________________ 80
Rutina de inicialización. ____________________________________________________ 82
Rutina de autotest. _______________________________________________________ 84
Programa principal del control de climatización ________________________________ 87
Subrutinas destacables del la tarjeta TX98. ____________________________________ 89
5.1.
MEDIA. ____________________________________________________________ 89
5.2.
CALPI. _____________________________________________________________ 89
5.3.
DISPL. _____________________________________________________________ 90
5.4.
VPULS. _____________________________________________________________ 90
5.5.
PRMODE. __________________________________________________________ 90
5.6.
WPER. _____________________________________________________________ 90
5.7.
DIGI, DIG2 Y DIG3. ___________________________________________________ 91
5.8.
DPMH. _____________________________________________________________ 91
5.9.
BTNDEC. ___________________________________________________________ 91
5.10.
Memoria EEPROM: PROG y READ. ______________________________________ 91
5.11.
Interrupciones: RTC, INTAD, TIMER. _____________________________________ 92
4
DOCUMENTO Nº1. MEMORIA
ÍNDICE DE CONTENIDO
5.12.
Watch-dog (WDOG). _________________________________________________ 92
5.13.
Tabla de temperaturas. _______________________________________________ 93
6.
Programa principal del la tarjeta S98 _________________________________________ 94
7.
Subrutinas destacables de la tarjeta S98 ______________________________________ 95
7.1.
Tabla de calidad del aire ______________________________________________ 95
7.2.
Tabla de humedad ___________________________________________________ 96
Capítulo 7
Descripción del programa para el PC ________________________98
1.
2.
Introducción _____________________________________________________________ 98
Pantalla principal. ________________________________________________________ 98
2.1.
Descripción general. __________________________________________________ 98
2.2.
Botones disponibles. _________________________________________________ 99
2.3.
Información disponible. ______________________________________________ 100
3.
Pantalla de climatizadores. ________________________________________________ 103
3.1.
Descripción general. _________________________________________________ 103
3.2.
Botones disponibles. ________________________________________________ 103
3.3.
Información disponible. ______________________________________________ 104
4.
Pantalla de la unidad de tratamiento de aire individual. _________________________ 105
4.1.
Descripción general. _________________________________________________ 105
4.2.
Botones disponibles. ________________________________________________ 106
4.3.
Información disponible. ______________________________________________ 106
5.
Pantalla de programaciones horarias.________________________________________ 107
5.1.
Descripción general _________________________________________________ 107
5.2.
Botones disponibles. ________________________________________________ 107
5.3.
Funciones disponibles. _______________________________________________ 108
Capítulo 8
Conclusiones ____________________________________________ 111
Capítulo 9
Futuros desarrollos ______________________________________ 113
Bibliografia___________________________________________________________ 115
PARTE II: CÁLCULOS ______________________________________________ 116
Capítulo 1
Cálculos de Hardware ___________________________________ 117
1.
2.
3.
Resistencias de pull-up de los pulsadores. ____________________________________ 117
Sondas de temperatura. __________________________________________________ 118
Resistencias para el circuito TL43L. __________________________________________ 119
3.1.
Resistencias para fijar tensión de salida. _________________________________ 119
3.2.
Resistencia para suministrar la corriente de cátodo mínima _________________ 120
4.
Consumo. ______________________________________________________________ 121
5.
Condensadores del circuito de alimentación. __________________________________ 122
Capítulo 2
1.
2.
Cálculos de Software_____________________________________ 124
Frecuencia. _____________________________________________________________ 124
NTC: Tabla de temperaturas. _______________________________________________ 127
PARTE III: ESTUDIO ECONÓMICO _________________________________ 130
Capítulo 1
Estudio Económico _______________________________________ 131
PARTE IV: MANUAL DE USUARIO __________________________________ 132
Capítulo 1
1.
2.
Características notables __________________________________ 133
Operación automática ____________________________________________________ 133
Pantalla simbólica _______________________________________________________ 134
5
DOCUMENTO Nº1. MEMORIA
Capítulo 2
1.
2.
3.
4.
5.
6.
7.
8.
9.
Programación de la unidad de tratamiento de aire _________ 135
Planifique su horario de utilización __________________________________________ 135
Puesta en hora y día de la unidad de tratamiento de aire ________________________ 136
Introducción/ Modificación del programa horario ______________________________ 137
Copia del programa diario _________________________________________________ 138
Anulación de la programación de un periodo __________________________________ 139
Anulación de la programación de un día______________________________________ 139
Activación/Desactivación del programa horario _______________________________ 140
Saltarse temporalmente la programación horaria. _____________________________ 140
Como recuperar la programación horaria durante un override o un standby ________ 141
Capítulo 3
1.
2.
3.
4.
5.
6.
ÍNDICE DE CONTENIDO
Manejo de la unidad de tratamiento de aire _______________ 142
Puesta en marcha/parada de la unidad de tratamiento de aire. ___________________ 142
.Como bloquear/ desbloquear la unidad de tratamiento de aire __________________ 143
Limitación de elección de temperatura de confort _____________________________ 143
Selección de la temperatura de confort ______________________________________ 144
Selección de modo de funcionamiento _______________________________________ 144
Comprobación del estado de la unidad de tratamiento de aire. ___________________ 145
PARTE V: MANUAL DEL INSTALADOR______________________________ 146
Capítulo 1
1.
2.
3.
4.
5.
Capítulo 2
1.
2.
3.
4.
5.
6.
Preparación _____________________________________________ 147
Introducción ____________________________________________________________ 147
Consideraciones generales ________________________________________________ 147
Alimentación eléctrica ____________________________________________________ 148
Comprobación del contenido ______________________________________________ 148
Manipulación del termostato ______________________________________________ 149
Instalación ______________________________________________ 150
Ubicación de la unidad de tratamiento de aire. ________________________________ 150
Sustitución de una unidad de tratamiento de aire existente. _____________________ 151
Montaje _______________________________________________________________ 152
Conexionado eléctrico ____________________________________________________ 153
Comprobación de funcionamiento.__________________________________________ 154
Fin de la instalación ______________________________________________________ 155
PARTE VI: CÓDIGO FUENTE _______________________________________ 157
Capítulo 1
1.
Capítulo 2
1.
Código de la tarjeta TX98 ________________________________ 158
Código fuente ___________________________________________________________ 158
Código fuente de la tarjeta SA98 __________________________ 251
Código fuente ___________________________________________________________ 251
PARTE VI: Datasheets ______________________________________________ 364
Capítulo 1
1.
2.
3.
4.
5.
6.
7.
Datasheets ______________________________________________ 365
Termistor NTC __________________________________________________________ 366
MAX487 _______________________________________________________________ 368
MAX500 _______________________________________________________________ 376
ULN-2803 ______________________________________________________________ 383
MC34084 ______________________________________________________________ 386
TL431 _________________________________________________________________ 389
Relé OM-G5V-1 _________________________________________________________ 392
6
DOCUMENTO Nº1. MEMORIA
ÍNDICE DE CONTENIDO
LISTA DE PLANOS ____________________________ ¡Error! Marcador no definido.
Índice de Contenido___________________________ ¡Error! Marcador no definido.
Capítulo 1
1.
2.
3.
Capítulo 2
1.
2.
3.
Planos De La Tarjeta S98______ ¡Error! Marcador no definido.
Plano electrónico de control de la U.T.A. _______________ ¡Error! Marcador no definido.
Circuito impreso de control de la U.T.A. capa superior ____ ¡Error! Marcador no definido.
Circuito impreso de control de la U.T.A. capa inferior ____ ¡Error! Marcador no definido.
Capítulo 3
1.
2.
3.
Planos De La Tarjeta TX98 ____ ¡Error! Marcador no definido.
Plano electrónico de control del climatizador ___________ ¡Error! Marcador no definido.
Circuito impreso de control del climatizador capa superior ¡Error! Marcador no definido.
Circuito impreso de control del climatizador capa imferior ¡Error! Marcador no definido.
Planos De La U.T.A. ___________ ¡Error! Marcador no definido.
Vista frontal de la caja ______________________________ ¡Error! Marcador no definido.
Esquema de conexionado ___________________________ ¡Error! Marcador no definido.
Dimensiones de Display LCD _________________________ ¡Error! Marcador no definido.
PLIEGO DE CONDICIONES ___________________ ¡Error! Marcador no definido.
Índice de Contenido___________________________ ¡Error! Marcador no definido.
Capítulo 1 Pliego de Condiciones Generales y Económicas _________ ¡Error!
Marcador no definido.
1.
2.
Condiciones Generales _____________________________ ¡Error! Marcador no definido.
Condiciones Económicas. ___________________________ ¡Error! Marcador no definido.
Capítulo 2 Pliego de Condiciones Técnicas y Particulares ¡Error! Marcador
no definido.
1.
2.
3.
4.
5.
6.
7.
Equipo informático. ________________________________ ¡Error! Marcador no definido.
Placas de circuito impreso. __________________________ ¡Error! Marcador no definido.
2.1.
Soporte. ____________________________________ ¡Error! Marcador no definido.
2.2.
Diseño de las pistas. ___________________________ ¡Error! Marcador no definido.
Sistema de radiofrecuencia. _________________________ ¡Error! Marcador no definido.
Normas de calidad. ________________________________ ¡Error! Marcador no definido.
Normas de Seguridad e Higiene. ______________________ ¡Error! Marcador no definido.
Vida útil del producto. ______________________________ ¡Error! Marcador no definido.
Otras criterios de diseño. ____________________________ ¡Error! Marcador no definido.
PRESUPUESTO _______________________________ ¡Error! Marcador no definido.
Índice de Contenido___________________________ ¡Error! Marcador no definido.
Índice de Tablas ______________________________ ¡Error! Marcador no definido.
Capítulo 1
1.
Capítulo 2
2.
3.
4.
Coste De Ingeniería ___________ ¡Error! Marcador no definido.
Gasto de desarrollo ________________________________ ¡Error! Marcador no definido.
Coste Material ________________ ¡Error! Marcador no definido.
Software _________________________________________ ¡Error! Marcador no definido.
Hardware ________________________________________ ¡Error! Marcador no definido.
Coste total material ________________________________ ¡Error! Marcador no definido.
Capítulo 3
Capítulo 4
Coste Intereses En Curso ______ ¡Error! Marcador no definido.
Coste Total Del Proyecto _______ ¡Error! Marcador no definido.
7
DOCUMENTO Nº1. MEMORIA
ÍNDICE DE FIGURAS
Índice de Figuras
Fig. 1: Conexionado de los componentes al control _______ ¡Error! Marcador no
definido.
Figure 1: Conexions between the components and the control units _____ ¡Error!
Marcador no definido.
ÍNDICES ___________________________________________________________________ 2
PARTE I: MEMORIA _______________________________________________________11
Figura ‎2.1: Funcionamiento de la U.T.A. ________________________________ 23
Figura ‎3.1: Diagrama de bloques del MC68HC908LJ12 ____________________ 32
Figura ‎3.2: Asignación de pines ________________________________________ 33
Figura ‎3.3: Bypass en la alimentación ___________________________________ 34
Figura ‎3.4: Alimentación del microprocesador ___________________________ 35
Figura ‎3.5: Mapa de memoria __________________________________________ 37
Figura ‎4.1: Diagrama de bloques del PIC16F877A ________________________ 42
Figura ‎4.2: Asignación de pines ________________________________________ 43
Figura ‎4.3: Alimentación del microprocesador ___________________________ 44
Figura ‎4.4: Mapa de memoria __________________________________________ 46
Figura ‎5.1: Pulsadores ________________________________________________ 50
Figura ‎5.2: Conexión de memoria EEPROM _____________________________ 52
Figura ‎5.3: Comunicaciones ___________________________________________ 54
Figura ‎5.4: Relees de salida ____________________________________________ 57
Figura ‎5.5: Acoplamiento de sondas de temperatura ______________________ 58
Figura ‎5.6: Conversor analógico digital MAX 500_________________________ 60
Figura ‎5.7: Comunicación con free-cooling ______________________________ 60
Figura ‎5.8: PTA1 Envía señal __________________________________________ 61
Figura ‎5.9: PTA2 Recibe señal _________________________________________ 62
Figura ‎5.10: Comienzo transmisión _____________________________________ 62
Figura ‎5.11: Ejemplo de funcionamiento del mando ______________________ 63
Figura ‎5.12: Display __________________________________________________ 64
Figura ‎5.13: Conector de programación tarjeta TX98 ______________________ 65
Figura ‎5.14: Conector de programación de la tarjeta S98 ___________________ 65
8
DOCUMENTO Nº1. MEMORIA
ÍNDICE DE FIGURAS
Figura ‎5.15: Fuente de tensión de la tarjeta TX98 _________________________ 67
Figura ‎5.16: Fuente de alimentación de la tarjeta S98 ______________________ 68
Figura ‎5.17: Reloj con cristal de cuarzo para MC68HC908LJ12 _____________ 69
Figura ‎5.18: Reloj de cuarzo para PIC16F877A ___________________________ 69
Figura ‎5.19: Circuito fijador de tensión del convertidor A/D del µP _________ 70
Figura ‎5.20: Circuito ULN2803 _________________________________________ 71
Figura ‎5.21: Amplificadores operacionales ______________________________ 72
Figura ‎5.22: Amplificador operacional USA _____________________________ 73
Figura ‎5.23: Conexión de potenciómetro de mínima apertura ______________ 75
Figura ‎5.24: Servomotor para apertura de compuerta _____________________ 76
Figura ‎5.25: Medidor de humedad interior ______________________________ 77
Figura ‎5.26: Sensor de calidad de aire ___________________________________ 77
Figura ‎5.27: Conexión del presostato ___________________________________ 78
Figura ‎5.28: Interruptor _______________________________________________ 78
Figura ‎5.29: Módulo de comunicaciones ________________________________ 79
Figura ‎5.30: MC34064 ________________________________________________ 79
Figura ‎6.1: Diagrama de flujo 1: Inicialización____________________________ 84
Figura ‎6.2: Diagrama de flujo 2: Autotest ________________________________ 86
Figura ‎6.3: Diagrama de flujo 3: Programa principal climatizador __________ 88
Figura ‎6.4: Diagrama de flujo del programa principal de la S98_____________ 97
PARTE II: Cálculos ______________________________________________________ 116
Figura ‎1.1: Resistencias de pull-up ____________________________________ 117
Figura ‎1.2: Cálculo de la NTC ________________________________________ 118
Figura ‎1.3: Resistencias de TL43L _____________________________________ 119
9
DOCUMENTO Nº1. MEMORIA
ÍNDICE DE TABLAS
Índice de Tablas
PARTE II: CÁLCULOS ____________________________________________________ 116
Tabla ‎0.1: Consumo de componentes______________________________________131
Tabla ‎0.2: Rango de frecuencias__________________________________________136
Tabla ‎0.3: Parámetros__________________________________________________137
Tabla ‎0.4: Cálculo para la NTC__________________________________________139
PARTE IV: MANUAL DEL USUARIO________________________________________142
Tabla ‎0.5: Planificación de horario________________________________________146
PRESUPUESTO _________________________________________________________ 132
Tabla ‎1.1: Coste total de desarrollo ________________ ¡Error! Marcador no definido.
Tabla ‎2.1: Coste del software _____________________ ¡Error! Marcador no definido.
Tabla ‎2.2: Coste de la tarjeta del climatizador _______ ¡Error! Marcador no definido.
Tabla ‎2.3: Coste de la tarjeta de ampliación _________ ¡Error! Marcador no definido.
Tabla ‎2.4: Coste de materiales a montar ____________ ¡Error! Marcador no definido.
Tabla ‎2.5: Coste total material ___________________ ¡Error! Marcador no definido.
Tabla ‎3.1: Coste de intereses en curso ______________ ¡Error! Marcador no definido.
Tabla ‎4.1: Coste del equipo ______________________ ¡Error! Marcador no definido.
Tabla ‎4.2: Coste total del proyecto ________________ ¡Error! Marcador no definido.
10
PARTE I: MEMORIA
11
MEMORIA
I. Memoria
Capítulo 1. Introducción
Capítulo 1
Introducción
E
Capítulo 1
Introducción
1.
Daigual
n este capítulo se estudia la mejor forma de controlar las unidades de
tratamiento de aire (más conocidas como UTA). Se ha de tener en
cuenta que en este proyecto no solo se va tratar las características del aire
como limpieza y humedad sino también la temperatura de este. A partir de
este estudio se mencionan cuáles han sido los incentivos del proyecto, cuáles
son sus objetivos y cómo y con qué medios va a ser abordado.
1. Estado del arte
Como ya se sabe hay unidades de tratamiento de aire en el mercado
desde hace ya bastante tiempo. Para estas unidades cada una de las
empresas ha diseñado una manera diferente de controlarlas aunque siempre
con un mismo objetivo, permitir al usuario decidir la calidad, humedad y
temperatura del aire en el local.
Antes de las unidades de tratamiento de aire se empezó con las bases de
la máquina de refrigeración (Willis Carrier en 1902), está maquina tenía un
gran problema al aplicarse en espacios cerrados y era el aumento de la
humedad. Aunque este problema se fue solucionado después con el
desarrollo de un proceso industrial que permitía tanto el control de la
temperatura como el de la humedad de la misma. [1]
12
MEMORIA
I. Memoria
Capítulo 1. Introducción
Años más tarde se le fueron añadiendo mejoras a la maquina hasta llegar
a lo que hoy en día es conocido como UTA controlada. Lo único que le
faltaba al invento de Willis Carrier para tener una UTA era añadirle los
filtros encargados de mantener la calidad del aire.
Una vez se ha explicado de forma breve la historia del desarrollo y la
construcción a través de los años de la UTA hay que centrarse en el objetivo
de este proyecto, el control de las unidades de tratamiento de aire.
Existen muchas empresas que ya comercializan unidades de tratamiento
de aire en las que el usuario mediante un panel de control es capaz de
decidir la temperatura, la humedad y ver la calidad del aire que le entra en
su local.
El control de estas unidades está ya presente dentro de las propias
unidades de tratamiento de aire o en un panel que se coloca fuera de estas.
Este control permite decidir la cantidad de aire que tiene que entrar por el
ventilador (velocidad del ventilador), humedad del aire y tiene también la
temperatura de dicho aire.
2. Motivación
En 1902 Willis Carrier sentó las bases de la maquinaria de refrigeración
moderna y al intentar aplicarla a los espacios habitados, se encontró con el
problema del aumento de la humedad relativa del aire enfriado, y al
estudiar cómo evitarlo, desarrolló el concepto de climatización de verano.
Por aquella época un impresor neoyorquino tenía serias dificultades
durante el proceso de impresión, que impedían el comportamiento normal
del papel, obteniendo una calidad muy pobre debido a las variaciones de
temperatura, calor y humedad. Carrier se puso a investigar con tenacidad
13
MEMORIA
I. Memoria
Capítulo 1. Introducción
para resolver el problema: diseñó una máquina específica que controlaba la
humedad por medio de tubos enfriados, dando lugar a la primera unidad de
refrigeración de la historia. A partir de este momento el objetivo principal
era mejorar el desarrollo del proceso industrial con máquinas que
permitieran el control de la temperatura y la humedad de un local.
A este climatizador se le han ido añadiendo componentes y mejoras
hasta conseguir lo que hoy en día es la climatizadora dentro de una unidad
de tratamiento de aire.
Una vez construida la U.T.A. las empresas encargadas de comercializar
la máquina le incluyen un control electrónico a través del cual el usuario
puede decidir el modo de funcionamiento de la unidad. Como mejora del
control significativa se introduce la conexión de este al PC lo que permite
que desde solo una CPU pueda controlarse la calidad del aire de un
complejo industrial o de hoteles y restaurantes donde se necesitan introducir
diferentes parámetros para cada unidad dispuesta en cada habitación.
3. Objetivo
El objetivo de este proyecto es el diseño del control de las unidades de
tratamiento de aire. En primer lugar se diseñará la tarjeta que contenga el
hardware necesario.
En la tarjeta se montará el hardware común y el específico para cada
aplicación según sea el caso. Este proyecto se centra en el control de
climatizadores, por lo que sólo se describirán los elementos relativos al
mismo.
14
MEMORIA
I. Memoria
Capítulo 1. Introducción
En segundo lugar se elaborará el programa para el microprocesador de
tarjeta.
La explicación de cómo se llega a este objetivo se explicara en este
proyecto dejando claro las fases a seguir hasta llegar a un control total de
dichas unidades.
1. Planteamiento de las variables que van a poder ser modificadas por
el usuario.
2. Diseño de la tarjeta de control que se va a implantar en las unidades
de tratamiento de aire.
3. Programación
e
implantación
de
dicho
control
en
los
microprocesadores que forman parte del panel de control embebido
en cada unidad.
4.
Implantar y evaluar (mediante programas de simulación y al final
mediante un prototipo) la estrategia de control diseñada para las
unidades de tratamiento de aire.
4. Metodología
La metodología que se va a seguir para poder cumplir el objetivo final es
la siguiente:

Mediante el estudio del sistema ha de ser decidido que variables es
necesario controlar (consignas introducidas por el usuario) y con esto
proporcionarle al control la información que necesita para funcionar.
15
MEMORIA
I. Memoria

Capítulo 1. Introducción
Desarrollo del Hardware, construcción de las dos tarjetas: La de la
parte del climatizador y la del resto del tratamiento de aire (calidad y
humedad del aire)

Desarrollo del Software que se implantará en los microprocesadores
del hardware.

Implantación y testeo del prototipo del control una vez introducido
en una unidad de tratamiento de aire.
5. Recursos
Para el desarrollo de este proyecto van a ser utilizadas diferentes
herramientas. A continuación se especifican cuales son:

Orcad 16®. Con la ayuda de este programa se diseña el circuito
electrónico del control que se implantará en la tarjeta. Con las
diferentes aplicaciones de esta herramienta se pueden generar todos
los planos para poder fabricar la tarjeta, tanto el esquema electrónico
como esquema del circuito impreso.

MPLAB IDE®. Herramienta grafica para la programación y
depuración del programa de control introducido en el microchip PIC
de la tarjeta. Es un programa muy útil ya que se ejecuta en Windows
y permite al programador encontrar y eliminar los errores que
pueden producir fallos en el sistema si no se solucionan antes de
implantarlo en las unidades de tratamiento de aire.

VISUAL BASIC®. Programa grafico utilizado en este proyecto para
el desarrollo de las comunicaciones de las unidades de tratamiento
16
MEMORIA
I. Memoria
Capítulo 1. Introducción
de aire y el PC. Con él el usuario puede controlar todos los equipos a
través del PC.
6. Contenidos
En los siguientes capítulos se detallan los pasos que se han seguido para
desarrollar este proyecto, empezando por explicar en qué consiste una
unidad de tratamiento de aire y siguiendo con la descripción del hardware,
software y los diferentes elementos utilizados en el diseño del control de la
UTA.
Al final del documento se adjuntan el estudio económico del proyecto,
el código fuente, utilizado para la ejecución del mismo y las instrucciones de
montaje.
17
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
Capítulo 2
Descripción del sistema
Capítulo 2
Descripción del sistema
2.
Daigu
E
n este capítulo se va a explicar tanto el funcionamiento como los
elementos que forman la unidad de tratamiento de aire del que se
quiere diseñar el control
1. Elementos de las unidades de tratamiento de aire
En este apartado se van a explicar los diferentes elementos que
componen la unidad de tratamiento de aire.
1.1.
Ventilador de succión
El ventilador de succión es el encargado de extraer del interior de la
máquina el aire producido por la batería cuyo efecto es el inverso al
deseado, de forma que éste es debidamente canalizado y expulsado al
exterior. Como la presión de dentro de la maquina es más alta que la de
fuera es posible expulsarlo a través del ventilador, si esto no fuera así el
ventilador no serviría para nada. El aire expulsado será de baja temperatura
cuando la máquina trabaje en función de bomba de calor y de alta
temperatura cuando trabaje en función de refrigeración.
1.2.
Servomotor bélimo joventa:
El objetivo de este servomotor, es la apertura y cierre independiente de
compuertas de entrada de aire del exterior para cumplir con las
18
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
renovaciones deseadas sustituyendo el aire contaminado del interior del
habitáculo, o por el contrario la apertura y cierre de la compuerta encargada
de la recirculación del aire de la habitación para su tratamiento en ciclo
cerrado. En este proyecto se utilizan dos.
Además los servos deben siempre abrir según la condición más
restrictiva que puede venir por el potenciómetro de mínima apertura, por el
controlador de la calidad del aire o por que la temperatura del aire exterior
sea beneficiosa para la temperatura que se quiere en el interior del local.
Aunque esto siempre lo decide el microprocesador y le manda la tensión
correspondiente a los servomotores.
1.3.
Medidor de calidad de aire
Para conocer la calidad del aire se necesita este componente. Este
dispositivo es un sensor que recoge las moléculas de carbono que hay en el
aire. Estas moléculas tapan el sensor y así este puede producir una salida de
0-10V dependiendo de la cantidad de carbono que tenga el aire. Es un
dispositivo que como se ve en la se coloca detrás del ventilador de succión
ya que así permite al control abrir más o menos una u otra compuerta según
el valor en voltios que reciba de dicho elemento.
1.4.
Potenciómetro de mínima apertura
Este dispositivo hace falta desde que la ley obligó que todos los locales
deben renovar un 20% del aire y reciclar el resto bien filtrado procedente del
local.
Con este componente si el control se estropea siempre se mantiene
abierta la compuerta del exterior y se pueda renovar el aire.
19
MEMORIA
I. Memoria
1.5.
Capítulo 2. Descripción del sistema
Baterías de enfriamiento/calentamiento del climatizador
Constituidas por tuberías dispuestas formando un serpentín, unidas
mediante láminas. Son las encargadas del cambio de estado del fluido
portador de energía mediante saltos entálpicos de gas a líquido y viceversa.
Se utilizan dos baterías, de una de ellas extraemos la temperatura deseada
para tratar el aire interno desechando el aire que contiene la temperatura
producida por la batería anexa.
1.6.
Electroválvula neumática de 2 vías
Esta electroválvula neumática dispone de una entrada y una salida de
manera que da paso a la batería de enfriamiento o calentamiento, de manera
que en su estado inactivo mantiene la salida del compresor unida a la batería
interna, por lo que la máquina trabaja al enfriamiento. y en su estado activo
comunica la salida del compresor con la batería externa, de forma que la
máquina trabaja como bomba de calor.
1.7.
Presostato
El presostato diferencial es el encargado de indicar el mal estado de los
filtros. Cuando los filtros estén obstruidos debido a la suciedad contenida no
permitirán que el aire pase a través de ellos con facilidad, creando una sobre
presión que podrá ser medida por este presostato.
El presostato tiene dos medidores uno a la entrada y otra a la salida del
filtro y lo que hace es ver la diferencia de presión entre la entrada y la salida
y guarda en el registro el valor que da el presostato con el que el control
decide si han de cambiarse los filtros.
20
MEMORIA
I. Memoria
1.8.
Capítulo 2. Descripción del sistema
Filtro de partículas:
Este filtro está constituido de tela de aproximadamente 1mm de grosor y
ubicado en primer lugar en la unidad de tratamiento de aire. Este es el
encargado de retener las partículas de mayor grosor contenidas en el aire a
tratar.
1.9.
Filtro hepa:
El objetivo de este filtro, constituido de celulosa es el encargado de
atrapar las partículas de menor grosor contenidas en el aire. Se estima que
retiene el 99% de las partículas contenidas en el aire a tratar.
1.10. Filtro de carbón activo:
Este filtro es el encargado de retener las partículas que contienen
carbono en el aire que se quiere tratar, de modo que retiene bacterias, virus y
hongos generados en el aire interno eliminando así los olores derivados de la
existencia de éstos.
1.11. Batería de humidificación y deshumidicacion
Es la encargada de mantener el porcentaje de humedad deseado en la
unidad de tratamiento de aire, normalmente para humidificar se usa una
esponja húmeda debajo de la cual hay una bandeja para el agua sobrante de
la esponja. La esponja está colocada detrás de los filtros y el aire pasa por
ella para conseguir la humedad deseada aunque normalmente el rango de
humedad del lugar es muy extenso y no hace falta la esponja. Para
deshumidificar se utiliza la batería de frio ya que al enfriar se reseca el aire.
21
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
1.12. Medidor de la humedad del aire
Se necesitan dos uno para medir la humedad del aire de dentro de la
máquina y otro para medir la del aire exterior. Esto es necesario porque si
hay que humidificar el aire interior y el exterior tiene la humedad necesaria
se abre más la compuerta y no se usa la esponja de humidificación y en el
caso contrario igual.
1.13. Ventilador de impulsión
Su objetivo es el de impulsar el aire tratado desde la batería
correspondiente a través de los filtros expulsándolo al interior del
habitáculo, de manera que la velocidad de éste es controlable y regulable
respondiendo a las disposiciones exigidas por el usuario.
1.14. Difusores orientables:
Su misión es la de adecuar la salida de aire al interior de la habitación
orientándolo y repartiéndolo a gusto del usuario.
1.15. Equipo completo
Con los componentes explicados en los subapartados anteriores está
formada la máquina de tratamiento de aire tal y como se muestra en la
Figura 2.1
22
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
Figura ‎2.1: Funcionamiento de la U.T.A.
23
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
2. Funcionamiento de la unidad de tratamiento de aire
El funcionamiento del conjunto de los elementos de la máquina será el
siguiente:
En primer lugar el aire entrará por la compuerta de entrada de aire del
exterior que será abierta por el servomotor y entrará directamente a
quedarse alojado en la unidad de tratamiento de aire. Debido a la ubicación
de cada una de las baterías y al ventilador de succión y el de impulsión, el
aire se repartirá equitativamente expulsando fuera de la máquina el aire con
la temperatura no deseada, el cual será el calor cuando se trabaje como
unidad enfriadora y el frío cuando se trabaje como calentador. Quedando el
aire con la temperatura deseada dentro de la máquina para su posterior
tratamiento.
El tratamiento de este aire vendrá dado gracias al ventilador de
impulsión, el cual arrastrará el aire a la unidad de tratamiento.
La elección que batería funciona se realizará mediante las electroválvula,
de forma que la salida del compresor alimenta a una u otra batería.
Los filtros serán dispuestos siguiendo el siguiente orden lógico, en
primer lugar el filtro de partículas, seguido del filtro hepa y por último el
filtro de carbono.
El tratamiento del aire en la U.T.A. será el siguiente:
Las partículas de mayor tamaño serán atrapadas por el filtro de
partículas dejando pasar únicamente las partículas inferiores a 1mm de
grosor, las cuales serán atrapadas en el filtro hepa, del cual se estima un
rendimiento del 99% de efectividad en la captación del resto de partículas de
24
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
pequeño tamaño, dejando pasar el aire limpio y sin impurezas en cuanto a
ácaros, polvo, etc.
Por último el aire atravesará el filtro de carbón activo, cuya misión
principal es atrapar las partículas que contienen carbono, entre las que se
encuentran los hongos, bacterias y virus, liberando así al aire a tratar de
cualquier olor y sustancia que pudiera resultar perjudicial para la salud y el
confort en el habitáculo.
El estado de estos filtros vendrá controlado mediante un presostato
ubicado delante del filtro de partículas, de forma que cuando cualquiera de
los filtros resultara obstruido debido a las partículas retenidas impedirían el
paso normal del aire y la presión en la parte delantera de los filtros subiría.
De esta forma podemos indicar cuando estos filtros debieran ser
sustituidos por otros nuevos.
Seguidamente y en última posición en la unidad de tratamiento de aire,
se controlará la humedad, manteniéndola en valores entre el 60% y el 80% a
disposición y control del usuario. Esto será llevado a cabo mediante una
batería de humidificación y deshumidificación que eliminará humedad
cuando el valor esté por encima del deseado y humectará cuando el valor
esté por debajo de los parámetros marcados, mediante resistencias para
eliminar la humedad o una esponja húmeda para aumentarla.
Una vez realizado este proceso el aire tratado será impulsado gracias al
ventilador de impulsión a la velocidad elegida por el usuario, de manera
que se cumpla que el aire cubra 2/3 de la habitación objeto del tratamiento
para facilitar así la correcta renovación del aire interno del habitáculo.
25
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
La dirección del chorro de aire podrá ser controlada por el usuario
gracias a unos difusores orientables ubicados en la boca de salida, de forma
que el usuario sea quien disponga el ancho de difusión y el alcance de éste.
Además de este uso la máquina debe tener en cuenta cuanto aire debe
entrar del exterior y cuanto debe ser realimentado desde el local. La ley
exige que se cambie el 20% del aire viciado por el del exterior aunque la
cantidad de aire que quiera el usuario que entre del exterior podrá
modificarlo por medio del control.
Mediante un sensor de calidad de aire que mide las partículas de
carbono que tiene el aire, se indicará los períodos en los que se abrirá la
compuerta de aire exterior para su renovación (cuando detecte el mal estado
del aire recirculado interno cerrará la compuerta de recirculación y abrirá la
de renovación), dejando así continuamente un aire en buen estado, libre de
contaminación, correctamente climatizado, filtrado y humectado en el
interior de la habitación.
Aunque la ley diga que se tiene que abrir un 20% si el control encuentra
una condición más restrictiva hace caso de esta y si no la deja abierta un
20%.
3. Funcionamiento del control de la unidad de tratamiento de
aire
El funcionamiento del control se entiende de la siguiente manera:
En primer lugar el control lee y registra la información introducida por el
usuario. Dependiendo de lo introducido el control manda unas ordenes u
otras, ya que existen los siguientes modos de funcionamiento: Automático,
frío, calor y ventilación.
26
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
Según el modo de funcionamiento el control modifica la velocidad de los
ventiladores de succión e impulsión.
El aire entra dentro de la unidad a través de un filtro de protección del
ventilador, y justo después de esto una NTC mide la temperatura del aire y
se la manda al control, al mismo tiempo el sensor de calidad del aire envía al
control un valor entre 0-10V dependiendo del tanto por ciento de carbono
que tenga el aire para que según la medida el control determine la apertura
de las compuertas.
Quedando como mínimo la compuerta del exterior
abierta un 20%, lo que se lleva a cabo con un potenciómetro de mínima
apertura que es una manera de asegurarse de que aunque el control no
funcionase el aire se renueva tal y como dice la ley.
Después de pasar por las compuertas el aire pasa por la batería de
calentamiento y la de enfriamiento.
Según la temperatura que haya
introducido el usuario y la temperatura del aire que entra en la máquina se
abre una válvula u otra. Dependiendo de si el aire exterior tiene un valor de
27
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
temperatura más cercano a la demanda que el aire del interior se abre
más la compuerta del exterior y se cierra más la de bypass. Como
consecuencia de ello la apertura de la válvula es menor ya que se necesita
calentar o enfriar menos. Si el aire del exterior no fuera beneficioso las
compuertas se dejan según lo que el sensor de calidad indique ya que es más
restrictivo la condición de buena calidad que menor gasto para conseguir la
temperatura deseada.
El aire pasa entonces por los filtros. Primero por el de partículas, después
el Hepa y por último el de carbono. Delante del filtro de partículas hay una
patilla del medidor de presión y a la salida del filtro de carbono otra. Con
ellas se mide la presión y da un valor entre 0-10V que se introduce en el
control. Si el valor en voltios es muy alto el control enciende un led para
avisar al usuario de que se han de cambiar los filtros.
Después el aire va a través de una resistencia y a continuación por una
esponja húmeda. Según la humedad del aire y el valor introducido por el
usuario el control pone en funcionamiento la resistencia o los difusores que
humedecen la esponja.
Como último paso antes de salir el aire al exterior se vuelve a medir su
temperatura y se compara con la deseada si no es igual se apaga el
ventilador de impulsión y da error de la máquina.
Las conexiones entrada/salida de los componentes al control se muestra
en la Figura 1 mostrando las entradas en verde y las salidas en rojo.
28
MEMORIA
I. Memoria
Capítulo 2. Descripción del sistema
Figura ‎2.2: Conexionado de los componentes al control
29
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
Capítulo 3
Utilización del microprocesador
Motorola MC68HC908LJ19
Capítulo 3
Utilización del microprocesador
Motorola MC68HC908LJ12
3.
Daigu
E
n este capítulo se va a explicar las características este microprocesador
que se utilizan en la tarjeta que controla el climatizador de la unidad de
tratamiento de aire.
El equipo se controlará mediante el microcontrolador Motorola
MC68HC908LJ12 de 8-bit, y cuya memoria de programa es de tipo flash,
incorporándose en el equipo un conector de grabación, para permitir la
grabación del programa con el microcontrolador ya montado.
La elección de este microcontrolador fue debida a que tiene un bajo coste
y un alto rendimiento, siendo su memoria y frecuencia adecuadas a los
requisitos de la aplicación. Además se tuvieron en cuenta otras
características propias que resultaban útiles para el sistema.
1. Características destacables.

Frecuencia de bus interna máxima:
- 8 MHz a tensión de operación 5 V.
- 4 MHz a tensión de operación de 3,3 V
30
MEMORIA
I. Memoria

Capítulo 4. Utilización del µP PIC16F877A
Entrada para cristal oscilador de 32 KHz con PLL (Phase Lock Loop)
incorporado, que permite obtener hasta 32 MHz.

12 kbyes de memoria de usuario tipo FLASH.

512 bytes de memoria RAM.

2 timers de 16 bits.

Reloj de tiempo real (RTC: Real time Clock) con reloj, calendario,
alarma y funciones de cronógrafo.

Módulo de comunicaciones serie (SCI)

Pin de interrupción externa IRO con pull-up integrado.

32 pines de propósito general, pines de entrada/salida.

Controlador para pantalla de cristal líquido (LCD: Liquid Crystal
Display), con 4 terminales comunes y un máximo de 27 líneas.

6 canales para conversor analógico-digital (ADC) de l0 bits.

Diseño de baja potencia (con modo espera y parada).

Pin de reset (con pull-up integrado) y reset de encendido (POR:
Power-on Reset).

Características de protección del sistema:
- Computer Operating Properly (COP) reset.
31
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
- Detección de bajo voltaje con reset o interrupción opcional.
- Detección de código de operación ilegal con reset.
- Detección de dirección ilegal con reset

64 pines en formato cuadrangular plano.
En la Figura 3.1 se muestra la estructura general del MC68HC908LJI2.
Figura ‎3.1: Diagrama de bloques del MC68HC908LJ12
32
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
2. Asignación de pines
Los pines disponibles microcontrolador se muestran en la Figura 3.2.La
conexión en cada pin a los distintos dispositivos de la tarjeta se verá más
adelante en el Capitulo 5: Descripción del hardware.
Figura ‎3.2: Asignación de pines
33
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
3. Alimentación
Para lograr la máxima inmunidad al ruido posible se montan
condensadores entre los pines de alimentación (Vop, Vss y Vooa). Dichos
condensadores deben situarse 1o más próximo posible al microcontrolador.
El montaje adoptado es el sugerido por el manual, según se muestra en la
Figura 3.3.
Figura ‎3.3: Bypass en la alimentación
Además de los condensadores se montará un transil para proteger frente
a ruidos. También se incluirán 2 parejas de diodos Schottky para proteger las
entradas al microprocesador, así como un diodo zener de 4,3 V para que se
detecte baja tensión y el microprocesador entre en modo parada. El supercap
se incluye para poder mantener la hora en situación de parada (ver capitulo
5.13 Otros dispositivos necesarios).
34
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
Figura ‎3.4: Alimentación del microprocesador
4. Puertos
Se dispone de 4 puertos de entrada/salida cada uno de ellos con 8 pines
(0-7): puerto A, puerto B, puerto C y puerto D. Como se pudo ver en el
esquema de asignación de pines (ver Figura 3.2) y en el diagrama de bloques
(ver Figura 3.1) todas las líneas están compartidas con otras funciones
(conversor A/D, comunicaciones…) Su uso se verá más adelante en Capitulo
5: Descripción del hardware.
NOTA: Para más detalles acerca de las funciones de los pines consultar
el manual del microcontrolador.
5. Mapa de memoria
El microcontrolador dispone de 64 Kbytes de memoria, que incluyen:

12 Kbytes de memoria FLASH de usuario (donde irá ubicado el
programa).

5l2 bytes de RAM.
35
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A

48 bytes de vectores definidos por usuario.

960 bytes de monitor ROM.
36
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
Figura ‎3.5: Mapa de memoria
37
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
6. Vector de interrupción
Como se vio en el apartado 5-Mapa de memoria. Las últimas posiciones
de memoria están ocupadas por vectores de interrupción ordenados por
prioridad. Los 2 últimos byes son los de reset como podemos ver en la
Figura 3.6.
Figura ‎3.6: Vectores de interrupción
38
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
Capítulo 4
Utilización del microprocesador
PIC16F877A
Capítulo 4
Utilización del
microprocesador PIC16F877A
4.
Daigu
E
n este capítulo se va a explicar las características del microprocesador
que se utilizan en la tarjeta ampliación que controla la humedad, la
presión y la calidad del aire de la unidad de tratamiento de aire.
El equipo se controlará mediante el microcontrolador PIC 16F877A de 8bit, y cuya memoria de programa es de tipo flash, incorporándose en el
equipo un conector de grabación, para permitir la grabación del programa
con el microcontrolador ya montado.
El PIC16F873A es el microprocesador que se ha utilizado para la unidad
de tratamiento de aire, porque ofrece un alto desempeño computacional a
un precio muy económico, con la adición de alta resistencia, con 8 canales de
10-bit A/D, un CCP y un ECCP (Enhanced CCP), una mejora de la memoria
del programa Flash de 14 Kbytes y 368 bytes de memoria RAM.
Al igual que todos los dispositivos de Microchip PIC16, el modelo
utilizado en este proyecto, está disponible en la versión estándar o en la
versión de bajo voltaje. Para el diseño de la unidad de tratamiento de aire se
ha optado por el dispositivo estándar de memoria Flash, designada con una
"F" en el número de pieza, con una gama de funcionamiento VDD de 3.0V a
5.0V, en vez del microprocesador de baja tensión, designado por "LF", cuyo
39
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
abanico de VDD es de 2.0V a 5.5V, ya que con el modelo estándar se cubren
las características necesarias para el diseño.
1. Características destacables.

Frecuencia de bus interna máxima:
- 10 MHz a tensión de operación 5 V.
- 4 MHz a tensión de operación de 2 V

Entrada para cristal oscilador de 32 KHz con PLL (Phase Lock Loop)
incorporado, que permite obtener hasta 32 MHz.

256 Bytes de EEPROM

14 Kbytes de memoria de usuario tipo FLASH.

368 Bytes de memoria RAM.

1 timer de 8 bits y 2 timers de 16 bits.

Módulo de comunicaciones serie (SCI) y módulo de comunicaciones
en paralelo.

Pin de interrupción externa.

32 pines de propósito general, pines de entrada/salida.

Controlador para pantalla de cristal líquido (LCD: Liquid Crystal
Display).
40
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A

8 canales para conversor analógico-digital (ADC) de l0 bits.

Diseño de baja potencia (con modo espera y parada).

Pin de reset (con pull-up integrado) y reset de encendido (POR:
Power-on Reset).

Características de protección del sistema:
- Computer Operating Properly (COP) reset.
- Detección de bajo voltaje con reset o interrupción opcional.
- Detección de código de operación ilegal con reset.
- Detección de dirección ilegal con reset.
- Protección de las E/S mediante diodos.

44 pines en formato cuadrangular plano.
En la Figura 4.1 se muestra la estructura general del PIC16F877A.
41
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
Figura ‎4.1: Diagrama de bloques del PIC16F877A
42
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
2. Asignación de pines
Los pines disponibles microcontrolador se muestran en la Figura 4.2.La
conexión en cada pin a los distintos dispositivos de la tarjeta se verá más
adelante en el Capitulo 5: Descripción del hardware.
Figura ‎4.2: Asignación de pines
43
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
3. Alimentación
Para lograr la máxima inmunidad al ruido posible se montan
condensadores entre los pines de alimentación. Dichos condensadores deben
situarse lo más próximo posible al microcontrolador.
Se incluirán un diodo Schottky para proteger las entradas al
microprocesador.
Figura ‎4.3: Alimentación del microprocesador
4. Puertos
La familia de los PIC16F8 disponen de dos puertos serie síncronos
(capaces de SPI o I2C) y dos puertos serie asíncronos (USARTs con
capacidad LIN) para expandir su conectividad.
Se dispone de 5 puertos de entrada/salida. El puerto A de 6 bits y los
otros 4 de 8 pines (0-7) cada uno puerto B, puerto C y puerto D y puerto E.
Como se pudo ver en el esquema de asignación de pines (ver Figura 4.2).
Todas las líneas están compartidas con otras funciones (conversor A/D,
comunicaciones…) Su uso se verá más adelante en Capitulo 5: Descripción del
hardware.
44
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
De los puertos A al D a través de su registro se configura el puerto como
entrada o salida pero el puerto D funciona de manera diferente ya que tiene
3 pines que pueden configurarse de manera independiente como pines de
entrada salida.
5. Mapa de memoria
El microcontrolador dispone de 64 Kbytes de memoria, que incluyen:

256 Bytes de EEPROM

14 Kbytes de memoria de usuario tipo FLASH.

368 Bytes de memoria RAM.
45
MEMORIA
I. Memoria
Capítulo 4. Utilización del µP PIC16F877A
Figura ‎4.4: Mapa de memoria
6. Vector de interrupción
Como se vio en el apartado 5-Mapa de memoria. El vector 0000H es el
vector de reset mientras que el vector 0004H es el de interrupción.
46
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Capítulo 5
Descripción del Hardware
Capítulo 5
Descripción del Hardware
5.
Daigu
E
n este capítulo se describe el diseño del hardware de las tarjetas para el
control de las unidades de tratamiento de aire.
1. Introducción
Además de los microprocesadores descritos en los epígrafes anteriores
son necesarios los periféricos descritos en los siguientes apartados de este
capítulo. Hay bastantes componentes que se utilizan en las dos tarjetas ya
que son básicos para el correcto funcionamiento de la tarjeta.
Además en el último epígrafe de este capítulo se van a explicar los
dispositivos específicos de la tarjeta SA98 encargada de controlar la parte
de la unidad que se encarga del tratamiento del aire y no la climatización.

Pulsadores.

Memoria EEPROM. (2 líneas)

Comunicaciones serie. (3 líneas)

Relees de salida

Sensores de temperatura
47
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware

Conversor Digital/Analógico (D/A)

Comunicación Free-cooling (una entrada y una salida)

Pantalla de cristal liquido.

Fuente de tensión.

Oscilador.

Referencia de tensión para el convertidor A/D.

Otros dispositivos necesarios:
-
Regulador de tensión.
-
Transistores Darlington.
-
Amplificadores operacionales.
-
Supercap.
-
Diodos zener.
-
Diodos schottky.
-
Transiles.
-
Puentes de diodos.
Las conexiones de estos elementos a los pines del microprocesador se
resumen en la Figura 5.1.
48
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.1: Conexiones de los pines
2. Pulsadores
A cada uno de los pulsadores se le incorporará una resistencia de pullup de valor 100K (ver CÁLCULOS.).
49
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.2: Pulsadores
El equipo incorpora 8 pulsadores con las siguientes funciones:
ON/OFF: Tiene la función de encendido y apagado del equipo.
SUBIR: Permite incrementar la consigna, así como la hora programación
y ajuste de reloj, y todos los demás parámetros.
BAJAR: Permite disminuir la consigna, así como la hora programación y
ajuste de reloj, y todos los demás parámetros.
MODO: Sirve para cambiar el modo de funcionamiento entre frío, calor,
ventilación, auto y humedad.
SEL: Se emplea para activar y desactivar la programación, así como para
moverse por los diferentes campos al realizar la programación de los
arranques y paradas.
PRG: Permite entrar en el modo de programación de arranques y
paradas.
COPY: Sirve para copiar la programación de un día a otro.
CLK: Permite el acceso al ajuste del reloj en tiempo real (RTC) del que
dispone el microprocesador.
50
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Para usos más complejos de los pulsadores, como pueden ser
pulsaciones conjuntas, se puede usar el Manual del usuario.
Se asignan a los pulsadores el puerto D del microprocesador (PTD
[0…7]).
3. Memoria EEPROM
Se dispondrá una memoria EEPROM de conexión serie mediante bus
I2C para almacenamiento de los diferentes parámetros de los equipos, así
como la programación semanal de arranques y paradas.
El tipo de bus empleado (I2C) usa la misma línea para entrada y salida;
esto la hace más lenta respecto a las del tipo microwiree (3 líneas), pero sigue
siendo suficientemente eficaz en esta aplicación. Las ventajas es que solo
requiere 2 líneas: Una para direcciones y datos, y otra para el reloj (clock).
El modelo empleado es el NM24C02, cuya característica, así como sus
diagramas de conexión y sus ciclos de operación pueden verse más adelante.
Se empleará la memoria de 2K-bit ya que en esta aplicación no se requiere
más espacio del proporcionado por esta memoria.
Los parámetros que se guardarán en esta memoria son los siguientes:
-
Histéresis
-
Zona muerta
-
Límite de la temperatura de impulsión modo frio.
-
Margen del bloqueo parcial de la consigna.
51
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
-
Tiempo mínimo ON.
-
Tiempo mínimo OFF.
-
Parámetro del regulador Pi: Banda proporcional, tiempo de
integración y tiempo de modulación.
-
Versión
-
Clave.
-
Tipo de control
-
Si el control es programable o no
-
Dirección
-
Programaciones horarias
La forma de hacer las conexiones se muestra en la Figura 8 y se explica a
continuación.
Figura ‎5.3: Conexión de memoria EEPROM
52
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Se conectarán los terminales 5, 6 y 7 a las líneas PTB5 y PTB4 del puerto
B y a laPTC2 del C. Por SDA (pin 5) se produce la entrada y salida de datos y
SCL (pin 6) es la entrada del reloj. Aunque en principio sólo necesitamos 2
líneas para transmitir datos entre el dispositivo y el microprocesador, se
añade una tercera línea que sirve para controlar la protección contra
escritura (WP: write protection). Las 3 líneas llevan incorporadas las
correspondientes resistencias de pull-up, de valor l00K como en el caso de
los pulsadores".
Los pines A0, A1, A2 forman la dirección del dispositivo, y como en este
caso sólo hay uno, será la 0 y por tanto se conectaran todos a tierra.
Los pines de tensión se conectarán uno a tierra (Vss) y otro a +5V (Vcc).
Se incluirá un condensador de desacoplo de valor 100 nF, colocado entre
la alimentación y tierra y lo más próximo posible al componente. Este
condensador tiene como misión eliminar ruidos.
4. Comunicaciones serie
Se incorpora una conexión RS-485 para poder conectar el controlador a
un PLC o, como en este caso, a un ordenador mediante bus de comunicación
serie. La conexión se realiza mediante el circuito MAX487 (ver Datasheet)
que está diseñado para aplicaciones "half-duplex" y permite conectar hasta
128 equipos en el bus (frente a los 32 que permite el MAX485 y otros). Esto
último puede resultar muy útil puesto que en una gran instalación, como
pudiera ser un hotel, se alcanza fácilmente ese número de equipos entre
unidades de tratamiento de aire, fan-coils y otras máquinas.
53
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
El esquema de conexión se detalla en la Figura 5.3 y se explica a
continuación.
Figura ‎5.4: Comunicaciones
El circuito se alimenta a Vcc = 5 V.
Las resistencias de 10 K (R3 y Rl3) son resistencias de pull-up, mientras
que las de 10 Ω (R8 y R9) se utilizan para limitar la corriente en caso de
cortocircuito en la línea de comunicación. La resistencia restante (Rl2), de
120, se debe a un requerimiento de la norma RS-485, según el cual, en caso
de que haya varios equipos conectados al bus, hay que ponerla tanto en el
primero como en el último. En previsión de esto, y dado que se desconoce en
qué posición será colocado el equipo, se pone un jumper (JP1) que permite
incorporarla al montaje o no en función de las necesidades.
Por último el elemento D3 es un transil y se emplea para proteger de
ruidos.
Se le asignarán las líneas PTB0, PTBI y PTB2 del puerto B.
El protocolo empleado para las comunicaciones serie es el MODBUS
modo RTU (ver Datasheet) con las siguientes características:
54
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware

Velocidad de comunicación: 9600 baudios.

Formato de datos:
-
8 bits
-
Sin paridad
-
1 bit de stop

Registros de 16 bits

Usa un chequeo por redundancia cíclica: CRC (añade una serie de
bits conforme a un algoritmo), según polinomio x15 + x13 + 1.
Modificaciones respecto al protocolo MODBUS estándar:
-
La dirección de comunicación tendrá 8 bits, reservándose la
dirección FF para mensajes de broadcast, pero existirá otro dato
de 8 bits de identificador del equipo.
-
Las medidas se representarán en décimas de grado en 16 bits, en
binario y complemento a 2.
5. Lectura de registros.
Para la lectura de registros se utiliza el código de comando 03 con la
siguiente estructura de mensaje:
Número esclavo - Código (03) - Dirección ler registro (2 bytes) (00-XX) Número de registros a leer (2 bytes) (00, YY) - CRC 16 (2 bytes)
55
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
La contestación de la tarjeta tiene la siguiente estructura de mensaje:
Número esclavo - Código (03) - No de bytes de datos - Datos (2 bytes
para cada registro) - CRCI6 (2 bytes).
6. Escritura de registros.
Para la escritura de registros se utiliza el código de comando 06 con el
siguiente formato:
Número esclavo - Código (06) - Dirección del ler registro (00-XX) –
Numero de registros a escribir (1) (l byte) (00-01) - Numero de bytes de
datos (02) - Datos a escribir en los registros (AA-BB) - CRCI6 (2 bytes)
La contestación de la tarjeta es un eco de la llamada.
7. Relés de salida.
Bajo cualquier configuración se dispone de una salida mediante
contacto de relé para MARCHA / PARO de la unidad de tratamiento de
aire.
En caso de que las salidas para las válvulas de frío y calor sean
mediante contacto de relés para controlar sólo la activación/desactivación
de las mismas, se dispone de otros 2 relés adicionales (uno por válvula),
haciendo un total de 3 relés. En caso de que se empleen salidas analógicas
se utilizará un conversor digital/analógico y no se montará ningún relé
adicional al de marcha/paro. El cambio de configuración puede llevarse a
cabo rápidamente mediante el uso de jumpers (JP3, JP4, JP5).
56
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
El modelo de relé empleado es el OM-G5V- 1, cuyas características
pueden verse el datasheet, donde se adjunta la fotocopia de su catálogo.
Dado que la tensión lógica es distinta a la tensión de los relés, es
necesario usar transistores. Al objeto de conseguir una intensidad de base
reducida, se emplea una configuración tipo Darlington a través del circuito
ULN-2803 descrito más adelante en Otros dispositivos necesarios.
En cuanto a su conexión, se puede observar en la Figura 5.4 el esquema
de montaje. Los terminales "1" se conectan a los circuitos ULN-2803 y los"2"
a la tensión de relé, de 24 V. El relé 1 (RL1) es el de marcha/paro y va
conectado a las bornes 1 y 2 (ver Plano Nº 20: Esquema de conexionado)
que van al ventilador. El relé 2 (RL2) es el de la válvula de frío y mediante
el jumper JP3 se puede conectar ésta al relé o bien a una de las salidas del
conversor D/A (según el tipo de salida). El relé 3 (RL3) es el de la válvula
de calor y el jumper JP4 permite alternar el tipo de salida. Por último el
terminal común de las válvulas, a través del jumper JP5, se conectará a los
relés, o bien a tierra en caso de usar el montaje con el conversor D/A.
Figura ‎5.5: Relees de salida
57
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Se conectarán a las líneas PTA6, PTA5 y PTA4 a través del circuito
ULN-2803.
8. Sensores de temperatura.
El equipo dispone de 2 entradas de sondas de temperatura NTC
remotas para la medida de la temperatura de retorno y de impulsión,
realizándose las medidas en el convertidor A/D que incorpora el
microprocesador y disponiéndose una tensión de referencia de 4Vcc.
En la Figura 5.5 se muestra el montaje necesario. El terminal común se
pone a tierra, mientras que cada una de las sondas se conectará a las líneas
PTB6 y pTB7 del microprocesador a través de una resistencia de 100H (Rl8,
R19). La misión de esta resistencia es limitar los posibles picos de corriente.
R1 y R2 son las resistencias de pull-up que tienen el valor calculado en el
apartado de CÁLCULOS. Como protección contra el ruido se emplean un
condensador de 10 nF (C4, C5) y un transíl (D4, D6). Por último se
montarán 2 diodos Schottky para cada línea con el objetivo de proteger la
entrada al microprocesador. Por tanto se conectará uno entre +5V y la línea
(D1, D2), que impedirá que se sobrepasen los 5,2V, y otro entre la línea y
tierra (D5, D7), que impedirá que la tensión caiga por debajo de -0,2V.
Figura ‎5.6: Acoplamiento de sondas de temperatura
58
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
9. Conversor digital-analógico (D/A).
Cada una de las tarjetas tiene un convertidor digital analógico MAX500
aunque no están igual conectados al circuito ya que el de la tarjeta S98
utiliza las 4 salidas disponibles (para compuertas Free-Cooling) mientras
que el de la tarjeta TX98 solo usa 2 salidas (para válvulas de frio y calor).
Pero si que todas las salidas conectadas del convertidor están conectadas al
circuito de la misma forma, mediante un amplificador seguidor de tensión
(véase Otros dispositivos necesarios).
En caso de las válvulas de frío y calor (tarjeta TX98) y el control de las
compuertas que controlan el Free-Cooling (tarjeta S98) de salida analógica
de 0-10 Vcc se incorporarán convertidores D/A de 8 bits, utilizándose el
circuito MAX500 que dispone de 4 (ver Datasheet). En esta situación no es
necesario añadir ningún relé adicional al de marcha / paro.
Se alimentará a +15 V a través de VDD. Al ser la salida analógica de 0 a
l0 V, la tensión de referencia (VREF) será l0 V para los 4 convertidores y la
obtendremos por medio de un diodo Zener conectado a la alimentación de
15 V a través de R30. Mientras que VSS se conecta a la tierra analógica.
AGND y DGND se conectan a la tierra analógica y a la digital
respectivamente.
59
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.7: Conversor analógico digital MAX 500
Se conecta al microprocesador utilizando 3 líneas: SDA es la línea para
datos (a PTC6), SCL es la del reloj (a PTC5), y LOAD es la línea que inicia
la transferencia de datos cuando está en nivel bajo (a PTC7).
10.
Comunicación con free-cooling.
Se dispone de una conexión a 2 hilos para poder interconectar este
equipo con el equipo de control de free-cooling de mando serie.
Figura ‎5.8: Comunicación con free-cooling
Se colocan las inductancias L1 y L2 para evitar interferencias.
60
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Se le asignaran las líneas PTA1 para enviar (salida) y PTA2 para recibir
(entrada). La comunicación se produce a través de microcortes en la
tensión de alimentación entre las tarjetas. Para enviar se provoca que haya
un consumo por la resistencia R20 al poner un “l” en PTA1, con lo que se
genera una bajada de tensión en la tarjeta del free-cooling. Para recibir, el
consumo se provoca en la tarjeta del free- cooling de la misma manera, y
éste se traduce en una baja tensión en la tarjeta del termostato que al
compararse en el amplificador operacional U5A genera un "1" en PTA2.
Estos cortes de tensión no afectan al funcionamiento del equipo ya que son
de muy corta duración (2 y 6 ms).
La comunicación desde la tarjeta al free-cooling se realiza mandando el
bytes de MANDO, que contiene la información de si el equipo se encuentra
en modo frío o calor, y si hay demanda o no. El free-cooling responde
devolviendo el byte de MANDO con cambios si va a actuar o sin
modificaciones si no lo va a hacer.
Un microcorte de 2 ms (provocado por un pulso de 2 ms en PTA1) se
interpretará como un ”0”, mientras que uno de 6 ms se interpretará como
un "1". Entre 2 bits habrá un intervalo de 6 ms" El procedimiento de
comunicación es el siguiente:

PTA1 envía señal
Figura ‎5.9: PTA1 Envía señal
61
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware

PTA2 recibe señal
Figura ‎5.10: PTA2 Recibe señal

Al comienzo de cada comunicación se provocará un START, que
se realiza mediante un pulso de 50 ms.
START:
Figura ‎5.11: Comienzo transmisión

Transmisión del byte de mando:
START - 0 - 1 - 8 bits de MANDO - Paridad - 1 – 0.
El bit de paridad será "0" si el número de 1's del byte de MANDO es
par y "l" en caso de que sea impar.
. Ejemplo: MANDO: 01001100
62
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.12: Ejemplo de funcionamiento del mando
11.
Pantalla de cristal líquido.
El cristal líquido (LCD: liquid cristal display) es un material llamado
nemático que tiene la propiedad de efectuar un giro a la luz cuando se le
aplica un campo eléctrico. Este material se coloca entre 2 polarizadores que
están girados el uno con respecto al otro. Si el LCD no está polarizado, la
luz que atraviesa el primer polarizador, no se gira de forma que no
atraviesa el segundo polarizador y por tanto se rechaza. Si el LCD está
polarizado, la luz que atraviesa el primer polarizador se gira y atraviesa el
segundo y por tanto se absorbe, apareciendo el elemento en color negro.
El microprocesador realiza la multiplexión, y en este caso se utilizarán
4 "backplanes" ó comunes (BP0 a BP3) y l9 "frontplanes" o líneas (FPl A
FPl9), con lo que podemos emplear hasta 19x4 =76 segmentos.
En la Figura 5.12 se muestran todos los segmentos disponibles para la
pantalla.
63
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.13: Display
12.
Conector de programación.
Se emplea para conectar el programador directamente a la tarjeta, de
modo que podemos programar el microprocesador y hacer emulación con
éste montado. Cada uno de los microprocesadores utilizados en este
proyecto tiene un conector de programación independiente.
El circuito de reset formado por diodo (D14), resistencia (R22) y
condensador (C l2), sirve para tener un "0" inicial al dar tensión, aunque no
sería necesario porque el microcontrolador incorpora un módulo de
power-on reset que lleva a cabo la misma función. R28 sirve como
resistencia de pull-up de la entrada IRQ del microprocesador.
64
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.14: Conector de programación tarjeta TX98
Para la programación del µP de la tarjeta S98 se utiliza un conector
conectado entre 0-5V que no necesita ningún circuito auxiliar Figura 5.14
Figura ‎5.15: Conector de programación de la tarjeta S98
En la Figura ‎5.16 se muestran las distintas condiciones para entrar en el
modo monitor. Se utilizan los jumpers JP7 y JP8 para poder alternar entre
"0"(0V) y "l"(5V) lógicos en PTC l, y para poner un "0" (conectar a tierra) en
PTA2, respectivamente.
65
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.16: Requerimientos y opciones para el modo monitor
66
MEMORIA
I. Memoria
13.
Capítulo 5. Descripción del Hardware
Fuente de tensión.
Las tensiones necesarias son:

15 V para el conversor D/A , los amplificadores operacionales
asociados y los relees.

5V para el resto de elementos incluido el microcontrolador.
En primer lugar se rectificará la tensión de alimentación que es alterna
de 24V para obtener dicha tensión en continua. Esto se realiza mediante un
puente de diodos (ver más adelante Otros dispositivos necesarios).
A continuación se coloca un montaje C (C14) cuya misión es hacer de
filtro. Los condensadores electrolíticos (C13 y C15) y el de tántalo (C16)
también actúan como filtro para eliminar el rizado.
Mediante el circuito LM7805 ver Capitulo 5: Regulador de tensión. Se
obtiene la tensión de 5V. Es necesario este circuito para obtener los 5V ya
que necesitamos una tensión muy estable pues va a ser la que alimente al
microprocesador.
Figura ‎5.17: Fuente de tensión de la tarjeta TX98
67
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Además se podrá obtener la tensión de 15 V, para el caso de que se
opte por las salidas analógicas de las válvulas, por medio de un regulador
de tensión.
En la tarjeta S98 se utiliza una fuente de tensión con algunos matices
más aunque con la misma función. La mayor diferencia es que en esta
tarjeta hay componentes que se alimentan a 24V por lo es necesario tener
ese valor de tensión en continua. El resto de la fuente de alimentación
como se puede ver en la Figura 5.16 es igual que la de la tarjeta TX98.
Figura ‎5.18: Fuente de alimentación de la tarjeta S98
14.
Oscilador.
Se
utilizan
dos
osciladores
uno
para
cada
uno
de
los
microprocesadores y cada uno montado en la tarjeta correspondiente.
El oscilador del control de climatización suministra la frecuencia de
referencia de reloj para el generador de frecuencia. El cristal empleado es
de 32,768 KHz, y a partir frecuencia se pueden obtener otras de MHz (en
nuestro caso 4 MHz) a través de un PLL. (Ver CÁLCULOS.). Por
68
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
recomendaciones del manual del microprocesador el montaje será el de la
Figura 5.17.
Figura ‎5.19: Reloj con cristal de cuarzo para MC68HC908LJ12
El microprocesador usado en la tarjeta del tratamiento de aire es de
4MHz y en su montaje solo se necesitan los componentes de la Figura 5.18
porque el µP funciona a 4MHz y según las especificaciones ha de montarse
así para la obtención de dicha frecuencia.
Figura ‎5.20: Reloj de cuarzo para PIC16F877A
15.
Referencia de tensión para el convertidor A/D.
Se utilizará el circuito TL431 para fijar la tensión de referencia (VREF)
del conversor A/D del microprocesador a 4 V solo necesario en la tarjeta
TX98 ya que lo impone este µP.
69
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Para fijar la tensión de salida en el cátodo (terminal l), se emplea un
divisor de tensión resistivo con R6 y R11, cuyos valores se obtienen en el
apartado de CÁLCULOS. R5 es una resistencia de pull-up cuyo valor se
calcula según la corriente de cátodo mínima en el epígrafe anteriormente
citado. Además se monta el condensador C3 buscando la inmunidad al
ruido.
Figura ‎5.21: Circuito fijador de tensión del convertidor A/D del µP
16.
Otros dispositivos necesarios.
16.1.
Regulador de tensión.
Se utilizará el circuito LM7805 para regular la tensión de alimentación
procedente de la red a través de un transformador a 24V, obteniendo así
los 5V necesarios para la alimentación del microprocesador y otros
componentes.
El circuito consta de 3 terminales:

VIN, es la tensión de entrada requerid a para mantener la
regulación.
70
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware

GND, es el terminal de tierra.

VOUT, es la tensión de salida, que en este caso está fijada a 5V.
16.2. Transistores Darlington.
Se empleará el circuito ULN-2803 que incorpora 8 montajes tipo
Darlington (2 transistores "en cascada") y además los diodos y resistencias
necesarios para que la salida por relé funcione correctamente. Para conocer
los detalles constructivos del circuito ver Datasheet.
Figura ‎5.22: Circuito ULN2803
Al terminal de entrada (IN) se conecta la línea procedente de la salida
del microprocesador, mientras que la salida (OUT) se conecta al relé
correspondiente. El terminal común (COM) se conecta a la tensión del relé,
15 V , y el GND a tierra.
El circuito incorpora un diodo entre el colector de los transistores y el
terminal común que queda en antiparalelo al relé. Su finalidad es limitar
los picos de tensión que aparezcan en el transistor producidos por las
características inductivas de la bobina del relé. De esta manera se reducen
los posibles picos al valor de la tensión que cae en el diodo (≈ 0,7 V).
71
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
16.3. Amplificadores operacionales.
Se utilizará el circuito TLC-2272 (ver ANEJO N'5-4), que incorpora 2
amplificadores operacionales. Se montarán 2 de estos circuitos ya que se
necesitan 3 amplificadores:

U6A y U6B se emplean como seguidores de tensión en las
salidas conversor D/A hacia las válvulas. Tensiones de
alimentación: VDD+ = 15V; VDD-/GND se pone a tierra.
Figura ‎5.23: Amplificadores operacionales

U5A se emplea como comparador de tensiones. La tensión del
terminal
de entrada está fijada por el divisor de tensión
formado por R24 y R26 a 1,3 V, y por tanto mientras la tensión
en el terminal
se mantenga por encima de ese valor,
aparecerán 0 V en la salida, lo que significa un "0" en PTA2. En
el momento en que la tensión de la línea que comunica con el
free-cooling baje suficientemente (para dar menos de 1,3V en
V-), aparecerán 5 V en la salida por lo que se detectará como un
“1” en PTA2. De esta manera se consigue llevar a la entrada
PTA2 los bits transmitidos del free-cooling a la tarjeta. El zener
D15 sirve para limitar la tensión de entrada de modo que no se
sobrepasen los 5 V a los que está alimentado.
72
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.24: Amplificador operacional USA
16.4. Supercap.
C10 es un condensador de gran capacidad , 47 mF en este caso, que
mantiene un cierto nivel de tensión cuando se corta la alimentación. De
esta manera se puede conservar la hora cuando el microprocesador se
ponga en modo parada al bajar de una cierta tensión umbral mínima
(4,32V).
16.5. Diodos Zener.
Este tipo de diodos se utiliza para fijar una tensión determinada en un
punto cuando se hace pasar corriente por ellos a través de una resistencia.
Se montarán un total de 5 : D16 de 10 V (para el conversor D/A), D18
de 6,8 V y D21 de l5 V (en la alimentación) y los 2 restantes (D11, DI5) de
4,3 V.
16.6. Diodos Schottky.
Son un tipo especial de diodos que tienen una caída de tensión
aproximadamente de 0,2 V, frente a los 0,7 V de los diodos convencionales.
73
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Se usan para asegurar que la tensión de un nudo se mantiene dentro de un
cierto rango, sin sobrepasar un cierto valor máximo ni rebajar un cierto
valor mínimo. De esta manera se consigue proteger un componente frente
a cambios en la tensión de entrada que podrían dañarlo. En nuestro caso es
importante proteger las entradas del microprocesador, ya que solamente
aguantan una variación de ±0,5 V en la tensión de alimentación. Se
montarán un total de 8: D1, D2, D5, D7, D9, Dl0, Dl2 y D13.
16.7. Transiles.
Son elementos que tienen como misión proteger al equipo frente al
ruido. En ocasiones se puede combinar su uso con condensadores de
desacoplo.
En total se montan 4 en la tarjeta de climatizador: D3, D4, D6 y D8.
16.8. Puente de diodos.
Se empleará el puente de diodos D19 como rectificador de tensión. Los
diodos elegidos aguantan una intensidad de 1A, suficiente para soportar la
corriente que se determina como consumo normal en el apartado de
CÁLCULOS.
17.
Dispositivos necesarios en la tarjeta S98
En este apartado se explican los componentes más importantes para el
tratamiento del aire, que son los siguientes:

Potenciómetro de mínima apertura
74
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware

Servomotor 0-10V de apertura de puertas

Controlador de humedad

Medidor de calidad de aire

Medidor de presión para control de filtros

Interruptor

Modulo de comunicaciones

MC34064
17.1. Potenciómetro de mínima apertura
Este componente está conectado entre 0-5V y tiene una salida que se
conecta al microprocesador y le envía a este una señal de entre 0-10V
indicándole cuanto se necesita que este abierta la compuerta del FreeCooling.
Figura ‎5.25: Conexión de potenciómetro de mínima apertura
17.2. Servomotor de apertura de puertas
Se utilizan dos servomotores uno para la apertura de la compuerta
encargada de expulsar el aire procedente de la maquina al exterior y el otro
75
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
tanto para la compuerta que deja pasar el aire del exterior (Free-cooling) y la
compuerta que controla la cantidad de aire de retorno.
Estos servos tienen una tensión de 0-15V y reciben del µP una tensión de
0-10V proporcional a cuanto se quiera tener abierta la compuerta. Por
ejemplo si se quiere que la compuerta se abra al 40% el µP debe dar una
tensión de 4V. Se ha de tener en cuenta que la cantidad de aire que se
expulsa tiene que ser la misma que la de aire que se introduce por el FreeCooling.
Figura ‎5.26: Servomotor para apertura de compuerta
17.3. Controlador de humedad
Hay dos, uno para medir la humedad exterior y otro para la humedad
interior (ambos se conectan igual aunque a registros diferentes del micro).
Estos guardan en los registros un valor de 0-10V proveniente de cada uno de
los medidores para que luego el control pueda mandar humidificar o
deshumidificar el aire según lo quiera el usuario.
76
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.27: Medidor de humedad interior
Hay dos en la tarjeta. Uno para medir la humedad del interior y otro
para medir la del exterior.
17.4. Medidor de calidad del aire
Para esto se utiliza un componente que guarda la calidad del aire en el
µP guardando un valor de tensión de 0-10V. Este componente es un sensor
de iones que atrae las partículas de carbono del aire y según la cantidad de
partículas manda una tensión u otra que se guarda en un registro del µP. Se
utilizan resistencias del 1% porque se quiere la mayor precisión posible.
Figura ‎5.28: Sensor de calidad de aire
17.5. Medidor de presión para control de filtros
Para saber si los filtros están sucios o no se utiliza un presostato
diferencial. Este instrumento se alimenta a 24V y da una salida de entre 010V, que se guarda en un registro del microprocesador. Cuando la salida
77
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
tiene un valor cercano a los 10V se enciende un led para avisar al usuario de
que tiene que cambiar los filtros.
Figura ‎5.29: Conexión del presostato
17.6. Interruptor
A cada interruptor se le incorporará una resistencia de pull-up de valor
100K (ver CÁLCULOS.).
Figura ‎5.30: Interruptor
17.7. Modulo de comunicaciones
Este componente es el encargado de recibir la información de la tarjeta
TX98 para que todo funcione como debe de funcionar. Con él se mantiene la
comunicación entre la tarjeta TX98 y la S98.
78
MEMORIA
I. Memoria
Capítulo 5. Descripción del Hardware
Figura ‎5.31: Módulo de comunicaciones
17.8. MC34064
Es un circuito sensor de bajo voltaje diseñado específicamente para
forzar un reset en el microprocesador. Funciona como detección d bajo
voltaje si se pone con una resistencia de pull up. Si a esto le añadimos un
condensador da un retraso programable cuando vuelve la corriente. Debe
funcionar completamente con una corriente de entrada de 1V ya que
funciona cuando hay fallo en el alimentador. La manera de conectar las
patillas se especifica en el datasheet.
Figura ‎5.32: MC34064
79
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
Capítulo 6
Descripción del Software
Capítulo 6
Descripción del Software
6.
daigu
E
n este capítulo se detalla, el lenguaje utilizado para programar el
control de la unidad de tratamiento de aire con las explicaciones
pertinentes.
1. Introducción
El programa del los microprocesadores está realizado en lenguaje
ensamblador por 2 motivos principales:
-
Se consigue que ocupe una reducida cantidad de memoria.
-
Se dispone de una librería de subrutinas para este cada uno de los
microprocesadores, ya que en cada uno de ellos está programado
una parte diferente del programa de control de la unidad de
tratamiento de aire.
En la primera parte de los dos códigos se definen los registros,
direcciones, datos y parámetros necesarios :

Registros del microprocesador: puertos, timer, PLL, conversor
A/D, reloj de tiempo real, pantalla LCD, protección de la
memoria flash, detector de baja tensión y watch-dog.
80
MEMORIA
I. Memoria

Capítulo 6. Descripción del Software
En el microprocesador usado para el control del climatizador se
dan: Direcciones de la memoria EEPROM, con los parámetros de
funcionamiento en primer lugar. Estos parámetros son:
histéresis, zona muerta, temperatura límite de impulsión,
margen de bloqueo de consigna, tiempos mínimos de encendido
y apagado, banda proporcional, tiempo de integración, tiempo
de modulación, versión, clave, tipo de control, si es programable
o no, la dirección y las programaciones horarias.

En el control de la unidad de tratamiento de aire los parámetros
son: presión mínima, valor para el potenciómetro de mínima
apertura, apertura de compuertas mínima.

Datos de la memoria RAM: se definen 4 bytes de flags, el modo
de funcionamiento, consigna, mando, salidas de válvulas,
temperaturas, tipo de control, programable o no, parámetros de
regulación, parámetros de programaciones y parámetros de
comunicaciones.

Registros de comunicaciones:
-
Registro 1: MSB Dirección, LSB Tipo de control.
-
Registro 2: MSB Modo, LSBMando.
-
Registro 3: Relés de salida.
-
Registro 4: Consigna.
-
Registro 5: Medida de la temperatura de retorno.
81
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
-
Registro 6: Medida de la temperatura de impulsión.
-
Registo 7: MSB Salida válvula frío, LSB Salida válvula
calor.

-
Registros 8 a 14: Parámetros.
-
Registros 17 a 51 : Programaciones.
Vectores de interrupción: reset, reloj de tiempo real, convertidor
A/D, timer, baja tensión.
Seguidamente comienza el programa propiamente dicho, del que se
comentan a continuación las rutinas y subrutinas más relevantes. Su código
completo puede consultarse en la parte IV de dicho documento.
En la tarjeta de ampliación se realizan diferentes medidas (encargadas de
controlar la calidad del aire) como la humedad, la presión del aire antes y
después de los filtro y la calidad del aire para poder decidir cuánto se tienen
que abrir cada una de los tres compuertas.
La subrutina de inicialización y de autotest es la misma en las dos tarjetas
por lo que solo la vamos a explicar una vez
2. Rutina de inicialización.
Antes del programa principal tiene lugar esta rutina, en la que se
inicializan los registros del microprocesador y las variables, se realiza el
autotest según el caso, y se enciende el display.
82
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
Los valores de las variables son los almacenados en la memoria
EEPROM, salvo en caso de que aún no se haya utilizado, que se cargan unos
valores por defecto. Para comprobar si la memoria es virgen se leen 2
posiciones consecutivas, que no deberían contener FF (es decir todo 1's) si la
memoria ha sido ya usada.
Se llevará a cabo un autotest del equipo si en el momento de dar tensión
se mantiene pulsado el pulsador de FLECHA ARRIBA. Para más detalles
acerca del autotest ver más adelante: apartado 3. Rutina de autotest.
En caso de que no se haya realizado nunca un autotest en el equipo,
aparecerán 3 segmentos horizontales al encenderse el display, con el resto de
segmentos apagados. Esto nos permite saber si un equipo ha sido probado o
no nada más encenderlo.
A continuación se muestra un diagrama de flujo de esta rutina de
inicialización.
83
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
Figura ‎6.1: Diagrama de flujo 1: Inicialización
3. Rutina de autotest.
Mediante esta rutina se pretende comprobar de una manera rápida el
correcto funcionamiento de los pulsadores y del display.
El procedimiento consiste en ir encendiendo unos determinados iconos
en la pantalla según el pulsador que se active, de forma que quedan
probados todos los segmentos una vez se ha actuado sobre todos los
pulsadores. Para registrar que un pulsador ha sido ya comprobado se va
poniendo un “l” en el byte VTEST para el bit correspondiente a cada
84
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
pulsador. Cuando todos los bits sean "1", es decir VTEST= FF, se habrá
concluido la prueba.
También se incluye en esta rutina la prueba de la memoria EEPROM, la
cual consiste en guardar ciertos datos en una determinada posición de la
memoria, y posteriormente leer el contenido de esa posición para comprobar
que coincide con el dato guardado. Para asegurarse de la efectividad de esta
prueba los datos utilizados son $55 y $AA, que alternan 1's y 0's, con lo que
es bastante improbable que puedan coincidir con los datos que había
originariamente en la memoria antes de la prueba. De esta manera se
comprueba el correcto funcionamiento de la escritura y lectura.
Si el resultado de estas pruebas es satisfactorio el display se encenderá y
comenzará el programa principal. En caso contrario, si se produce algún
error, la pantalla se apagará.
A continuación se muestra el diagrama de flujo completo de esta rutina.
85
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
Figura ‎6.2: Diagrama de flujo 2: Autotest
86
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
4. Programa principal del control de climatización
La parte correspondiente al programa principal se inicia en la etiqueta
COMZO (comienzo).
En primer lugar se comprueban los datos de entrada tales como las
consignas. Seguidamente se ejecutan 2 subrutinas importantes que se
explicarán más adelante en el apartado 5: Subrutinas destacables. y que son la
de visualización en pantalla y la de vigilancia de pulsadores.
Tras la toma de medidas pertinente, se debe establecer el modo de
funcionamiento del equipo, es decir las acciones que tiene que llevar a cabo
el control para tender a alcanzar la consigna fijada. Dichas acciones son las
de arrancar el ventilador y abrir o cerrar las válvulas, y dependen de la
consigna, el modo de funcionamiento demandado por el usuario
(ventilación, frío, calor y auto), la temperatura de retorno y la temperatura
de impulsión, principalmente.
Después de evaluar cuáles tienen que ser las salidas, se transmiten éstas
dando salidas por relé con los tiempos adecuados (calculados en la fase
anterior) o salidas a convertidor D/A (calculadas por medio del algoritmo
del PI).
Al final del proceso se graban los datos en la memoria EEPROM y se
vuelve al comienzo del programa.
El diagrama de flujo del programa principal se muestra a continuación, y
las subrutinas más relevantes empleadas en cada fase se describen en el
apartado 5:Subrutinas destacables.
87
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
Figura ‎6.3: Diagrama de flujo 3: Programa principal climatizador
88
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
5. Subrutinas destacables del la tarjeta TX98.
5.1.
MEDIA.
Hay dos subrutinas media que se emplean en cada tarjeta ya que las
instrucciones de cada microprocesador son diferentes, las instrucciones no
tienen ni el mismo nombre ni las mismas características aunque al final las
dos sirven para lo mismo.
La usada en la tarjeta TX98 sirve para calcular la media de los 8 últimos
valores de temperatura registrados. Con esto conseguimos que la medida
sea uniforme y no tenga saltos desmesurados debidos a posibles
interferencias en la tensión, que no reflejarían la verdadera evolución de la
temperatura, ya que ésta es una magnitud que no sufre cambios bruscos en
condiciones ambientales normales.
La que se utiliza en S98 calcula la media de los 4 últimos valores tanto de
temperatura exterior como humedad interior y exterior o presión.
5.2.
CALPI.
Efectúa el cálculo de la salida según el control PI. El algoritmo utilizado
es el siguiente:
89
MEMORIA
I. Memoria
5.3.
Capítulo 6. Descripción del Software
DISPL.
Es la subrutina de visualización, y por tanto efectúa la salida al display
según los datos de las variables. Enciende los iconos que correspondan al
modo de funcionamiento, la temperatura de retorno, la consigna y en caso
de que el control sea programable, los de la hora, el día y la información
sobre la programación.
5.4.
VPULS.
Es la subrutina de vigilancia de pulsadores. Su cometido es mirarlos y
dependiendo del que esté pulsado realizar las acciones correspondientes. Se
incorpora un retardo para filtrar el efecto de los rebotes y ruidos.
5.5.
PRMODE.
Se emplea al entrar en el modo de programación de parámetros para
realizar la misma. Deben distinguirse los parámetros de tipo temperatura y
los de tipo tiempo, ya que los primeros aumentan de 0,5 en 0,5 ºC (XX.X), es
decir el último dígito representa décimas de grado, mientras que los de
tiempo varían de 1 en 1 (XX XX).
5.6.
WPER.
Mira el periodo actual de programación, buscando hacia atrás el último
intervalo programado y mira el día y la hora de inicio del siguiente periodo,
buscando hacia delante. De esta manera se determina el funcionamiento que
debería tener actualmente y cuando se producirá el siguiente cambio,
poniendo la próxima programación en la alarma del RTC.
90
MEMORIA
I. Memoria
5.7.
Capítulo 6. Descripción del Software
DIGI, DIG2 Y DIG3.
Son subrutinas para visualizar los diferentes dígitos en el display. DIG1
realiza la escritura en display de los dígitos de la consigna. DIG2 y DIG3 se
encargan de escribir el valor de la medida, y se requieren 2 bytes ya que se
muestran también las décimas de grado. Mediante estas subrutinas se lleva a
cabo la conversión del dato a código de 7 segmentos.
5.8.
DPMH.
Subrutina utilizada para la visualización de la medida o de la hora.
5.9.
BTNDEC.
Subrutina empleada para la conversión de binario de 16 bits a número
decimal de 4 dígitos.
5.10. Memoria EEPROM: PROG y READ.
La subrutina PROG graba en la posición de memoria EEPROM que se
encuentra en la variable POSM el dato que está en ese momento en el
acumulador.
La subrutina READ lee el dato de la posición de memoria EEPROM que
está en la variable POSM y lo deja en el acumulador.
Esta subrutina también se utiliza en la programación de la tarjeta S98
aunque con las instrucciones del microprocesador usado en dicha tarjeta.
91
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
5.11. Interrupciones: RTC, INTAD, TIMER.
RTC: interrupción del reloj de tiempo real.
INTAD: interrupción del convertidor A/D. Si la medida que le llega ha
variado más de 8 bits respecto a la anterior, se suma o se resta 8 a la medida
anterior, dependiendo de si es un incremento o un decremento. De esta
forma se evita la posibilidad de tomar lecturas de temperatura disparatadas,
que no reflejarían la verdadera evolución de la temperatura.
TIMER: Temporizador para distintas variables de tiempo utilizadas en el
programa, como son la cuenta del tiempo 0 ó 1 en las transmisiones de
datos, cuenta de los tiempos de modulación de los relés...
Estas interrupciones también se usan en la programación de la tarjeta S98
puesto que hay un convertidor digital analógico y se necesita mantener las
comunicaciones con la tarjeta del TX98.
5.12. Watch-dog (WDOG).
Como indica la traducción del nombre, “perro guardián”, esta rutina se
encarga de controlar que sólo se lee dentro de la zona del programa.
El módulo Computer Operating Properly (COP) del microprocesador
contiene un contador que está corriendo continuamente, y tal que genera un
reset en caso de que se le permita llegar a un máximo (overflow). En
determinados sitios del programa se efectúa un reset del contador, de
manera que siempre que el programa discurra normalmente, el contador no
podrá llegar al máximo.
92
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
En el momento en que el stack pointer se saliese del código del
programa, ya no se pasaría por las instrucciones de reset del contador, y por
tanto sí llegaría a al máximo, con lo que se produciría un reset del
microprocesador y así se entraría otra vez dentro de la zona del programa.
El registro de control del COP está situado en la dirección $FFFF,
superpuesto al byte alto del vector de reset. Escribiendo cualquier valor en
dicha posición de memoria se pone a cero el contador y comienza una nueva
cuenta. Al leer en la dirección $FFFF se devuelve el valor del byte bajo del
vector de reset (que en nuestro caso contendrá $C0), lo que nos llevará al
comienzo del programa.
Para llevar a cabo la puesta a cero del contador se repite durante el
programa el siguiente par de instrucciones:
 Carga el valor $FF en el acumulador
 Lleva el valor del acumulador a la variable
5.13. Tabla de temperaturas.
A partir de la posición de memoria $E800 se sitúa la tabla de
temperaturas para la NTC, cuyo cálculo puede consultarse en el documento
CÁUCULOS en el apartado de software.
Para construir la tabla en el programa se siguen los siguientes pasos:
1.- Multiplicar la columna de "H" por 2 (cada valor ocupa 2 posiciones de
memoria).
2.- Sumarle el resultado a $E800 (dirección donde comienza la tabla).
93
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
3.- El resultado es la dirección de memoria en la que se debe almacenar
el dato de la temperatura en hexadecimal.
6. Programa principal del la tarjeta S98
La parte correspondiente al programa principal se inicia en la etiqueta
COMZO (comienzo).
Al comienzo del programa principal la primera vez que se entre en este
se pondrán unos valores por defecto (potenciómetro de mínima apertura).
En el segundo paso se toman cuatro medidas para cada una de las siguientes
variables: Temperatura exterior, humedad interior, humedad exterior y
presión. Con estas medidas se ejecuta la subrutina media que se explicó en el
apartado anterior. Lo siguiente es tomar una medida de la calidad del aire.
Después de esto lo que habilita son las comunicaciones con la tarjeta
TX98 con el propósito de recibir de esta los valores introducidos por el
usuario. Se recepcionan dichos datos y para comprobar si estos son correctos
se comprueba que estén dentro del rango establecido por el programador.
Una vez que los datos recibidos son correctos se calcula el Free-Cooling
para que el control decida la apertura de las compuertas. Si al calcular el
Free-Cooling da que la apertura de la compuerta exterior es menor del 20%
se activa el potenciómetro de mínima apertura.
Después de esto se compara el valor de la presión de entrada y salida del
filtro y si las dos son muy diferentes se enciende led de filtro sucio. Esto se
hace ahí pero podría haberse hecho antes.
Con los valores calculados se forma el dato de la siguiente manera:
94
MEMORIA
I. Memoria
0-1-
Capítulo 6. Descripción del Software
MANDO (8 bits) -TEMP.EXTERIOR (11 bits) -PRESION(11 bits ) APERTURA COMPUERTA(8 bits)-0-1
Al final del proceso se graban los datos en la memoria EEPROM y se
mandan los datos a través de la red de comunicaciones. Cuando esta
comunicación es correcta se vuelve al principio del programa (tomar
medidas).
El diagrama de flujo del programa principal se muestra a continuación, y
las subrutinas más relevantes empleadas y no explicadas anteriormente en
se describen en el apartado 7:Subrutinas destacables de la tarjeta S98.
7. Subrutinas destacables de la tarjeta S98
En este apartado se explican las subrutinas más importantes que no se
hayan explicado anteriormente en el apartado 5.
7.1.
Tabla de calidad del aire
A partir de lo recibido del sensor de calidad del aire (valor de 0-10V)
mediante la tabla de calidad del aire se transforma este valor a hexadecimal
que es como se guarda en memoria. El cálculo de la tabla puede consultarse
en el documento CÁUCULOS en el apartado de software.
La medida de la calidad del aire es una medida lineal.
0VCalidad del aire más alta. Corresponde en hexadecimal a 0X00
5VPeor calidad del aire. Corresponde en hexadecimal a 0XFF.
95
MEMORIA
I. Memoria
7.2.
Capítulo 6. Descripción del Software
Tabla de humedad
Con esta tabla lo que se quiere es pasar la humedad que está entre 0 y 100% a
un valor hexadecimal para poder almacenarlo en memoria.
1V Corresponde al 0%de humedad en hexadecimal OX00
4V Corresponde al 100% de humedad en hexadecimal OXE8
El valor de humedad en la tabla está multiplicado por 10 antes de pasarlo a
hexadecimal véase apartado de Cálculos.
96
MEMORIA
I. Memoria
Capítulo 6. Descripción del Software
Figura ‎6.4: Diagrama de flujo del programa principal de la S98
97
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
Capítulo 7
Descripción del programa para el PC
Capítulo 7
Descripción del programa para el
PC
7.
daigu
E
n este documento se ha descrito paso a paso el programa que se utiliza
en el PC para comunicar este dispositivo con la unidad de tratamiento
de aire.
1. Introducción
El control de la unidad de tratamiento de aire ha sido realizado con
comunicaciones, de manera que es posible conectarlo con un PC, en el cual
se incorpora un programa de visualización y control. Este programa está
realizado con Visual Basic, y ha sido diseñado para realizar la centralización
de los diferentes equipos que pueden formar parte de una instalación. En los
epígrafes que siguen se describe el funcionamiento del programa,
centrándose en los aspectos relativos a las unidades de tratamiento de aire,
que son el objeto del proyecto.
2. Pantalla principal.
2.1.
Descripción general.
En la pantalla principal aparecen varios recuadros, en los que se
representa resumen del estado de funcionamiento de los distintos elementos
de la instalación:
98
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC

FANCOILS

CLIMATIZADORES

MÁQUINAS

CALDERAS

EXTRACTORES
Mientras el programa se encuentre en esta pantalla, se estará llevando a
cabo un "rastreo", es decir, intentos de comunicación con los distintos
elementos que constituyen el sistema, para obtener la información acerca de
los parámetros de funcionamiento de cada uno de ellos.
2.2.
Botones disponibles.
En la parte inferior derecha de la pantalla se dispone de 5 botones:

MODIF. GENERAL: para modificar el estado de un grupo de
máquinas y cambiar sus consignas, aunque también se puede
hacer pinchando en la etiqueta de climatizadores. Es general
porque se selecciona el rango de máquinas que se desea
modificar, aunque si sólo se quiere modificar una máquina, se
pone el mismo número de esa máquina en los 2 espacios.

PROGR.: pasa a la pantalla de programaciones horarias (ver este
capítulo apartado 4: Pantalla de programaciones horarias.).

IMPRIMIR: realiza una impresión de la pantalla.
99
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC

AYUDA: se accede al archivo de ayuda.

CONFIG.: permite modificar la configuración del sistema,
cambiando el número de elementos de cada tipo que componen la
instalación.
Además en la parte superior derecha se sitúa el botón SALIR, que como
propio nombre indica permite finalizar la ejecución del programa. La
programación arranques y paradas quedará inactiva mientras el programa
no esté funcionando.
2.3.
Información disponible.
En la ventana UTA se visualiza el estado de hasta 8 equipos, Si en la
instalación hubiese más de 8 equipos, a la derecha de este recuadro
aparecerían
unas
flechas
para
poder
moverse
por
los
diferentes
climatizadores de la instalación en grupos de 8 (l-8, 9-16,17-24...).
Para cada unidad de tratamiento de aire se dispone de los siguientes
datos en este orden:

Nº: Identificación numérica de la unidad de tratamiento de aire.

Nombre: Identificación alfanumérica de la unidad de tratamiento
de aire. Puede ser modificada por el usuario. Para cambiar el
nombre de una unidad de tratamiento de aire hay que hacerlo a
través de CONFIG, introduciendo la clave que pide el programa,
y accediendo seguidamente a CAMBIO NOMBRES.

Marcha/paro: Indicador de si la unidad de tratamiento de aire
está en marcha o no. Cuando se ordena la marcha a una unidad
100
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
de tratamiento de aire, primeramente se enciende el círculo
correspondiente situado en la fila de la unidad de tratamiento de
aire en color amarillo y posteriormente, cuando la orden llega a la
unidad de tratamiento de aire y es confirmada por la misma se
enciende el recuadro correspondiente en color rojo. Igualmente,
haciendo click en el círculo se puede encender la unidad de
tratamiento de aire, si estaba apagado, o apagar, si estaba
encendido.
Unidad de tratamiento de aire parado y sin orden de marcha
Unidad de tratamiento de aire parado y con orden de marcha
Unidad de tratamiento de aire en marcha
Unidad de tratamiento de aire en marcha y con orden de
parada

Modo de funcionamiento: En la parte interior aparece el icono
correspondiente al modo de funcionamiento deseado por el usuario,
ventilador, frio, calor o auto. El color del recuadro exterior indica el
estado de funcionamiento de la unidad de tratamiento de aire, Fondo
rojo =Calor, Fondo azul = Frío, Fondo Gris =Ventilación, Fondo Blanco=
No demanda.
101
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
Modo Ventilación seleccionado
Modo Calor seleccionado
Modo Frío seleccionado
Modo Automático seleccionado

Temp.: Temperatura medida en el retorno de la unidad de tratamiento
de aire.

Cons.: Temperatura de consigna seleccionada para la unidad de
tratamiento de aire.

Fallo de comunicación: El programa comunica con las la unidades de
tratamiento de aire, periódicamente, encendiéndose la casilla del número
de la unidad de tratamiento de aire con el que está comunicando, si
existe cualquier fallo en la comunicación lo indicará en la columna y fila
correspondientes mediante un círculo rojo. Si tras la lectura de una
unidad de tratamiento de aire existiera una modificación de los estados
de la unidad de tratamiento de aire ésta no será mostrada hasta la nueva
lectura.
No existe fallo en la comunicación
Existe fallo en la comunicación
102
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
3. Pantalla de climatizadores.
3.1.
Descripción general.
En esta pantalla pueden verse con más detalle las 8 unidades de
tratamiento de aire que estuvieran seleccionadas en la pantalla principal
antes de pinchar sobre el nombre de una de ellas. Cuando el programa se
encuentra en esta pantalla el ordenador únicamente rastrea los datos y
parámetros de las unidades de tratamiento de aire que están en pantalla.
3.2.
Botones disponibles.
Se dispone de los siguientes pulsadores:

MARCHAPARO: para arrancar o parar las unidades de
tratamiento de aire desde esta pantalla.

FLECHAS: una hacia arriba y otra hacia abajo, que permiten
cambiar la temperatura de consigna.

PARAMETROS: Pulsando MODIFICAR e introduciendo la clave
correcta en la pantalla que se abre al hacer clic en este botón, se
puede cambiar los valores de la constante de la banda
proporcional y el tiempo de integración.

PANTALLA GENERAL: para volver a dicha pantalla.

IMPRIMIR: realiza una impresión de la pantalla.

AYUDA: se accede al archivo de ayuda correspondiente.
103
MEMORIA
I. Memoria
3.3.
Capítulo 7. Descripción del programa para PC
Información disponible.
La información que se proporciona sobre las unidades de tratamiento de
aire es la siguiente:

Nº : Identificación numérica de la unidad de tratamiento de aire.

Nombre: Identificación alfanuménca de la unidad de tratamiento
de aire.

Consigna: Temperatura seleccionada por el usuario. Se puede
modificar desde esta pantalla por medio de unas flechas hacia
arriba y abajo.

Temp. retorno: Temperatura medida en el retorno de la unidad de
tratamiento de aire.

Ap. valv. calor: Porcentaje de apertura de la válvula de calor.

Ap. valv. frío: Porcentaje de apertura de la válvula de frío.

Modo de funcionamiento: Se indica mediante el color de fondo de
la representación esquemática de la unidad de tratamiento de
aire. Fondo Amarillo = Calor, Fondo Azul= Frío, Fondo Blanco
=Ventilación.

Fallo
de
comunicación:
si
existe
cualquier
fallo
en
la
comunicación se indicará mediante un recuadro rojo en la parte
superior derecha de la unidad de tratamiento de aire en cuestión.
104
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
Pinchando sobre el nombre de una de las unidades de tratamiento de
aire se accede a la pantalla individual de la misma.
4. Pantalla de la unidad de tratamiento de aire individual.
4.1.
Descripción general.
Esta pantalla consta de 3 partes a través de las cuales podemos ver
información detallada no sólo del funcionamiento de la unidad de
tratamiento de aire, sino también de sus parámetros:

En la parte superior puede verse el mismo gráfico de la pantalla
de unidades de tratamiento de aire, pero ampliado.

En la parte derecha se muestra la lista de parámetros de la unidad
de tratamiento de aire que podrán ser modificados siempre que
dispongamos de la clave.

Se incorpora en la parte izquierda una reproducción de la parte
frontal del control, sobre la que podemos utilizar los pulsadores
de ON/OFF, MODO, FLECHA ARRIBA y FLECHA ABAJO como
si fueran los pulsadores reales del control.
Cuando el programa se encuentra en esta pantalla el ordenador
únicamente rastrea los datos y parámetros de la unidad de tratamiento de
aire que está en pantalla. FALTAN PARAMETROS DE UTA.
105
MEMORIA
I. Memoria
4.2.
Capítulo 7. Descripción del programa para PC
Botones disponibles.

PULSADORES: para encender o apagar la unidad de tratamiento
de aire, cambiar el modo de funcionamiento y aumentar o
disminuir la consigna.

PANTALLA GENERAL: para volver a dicha pantalla.

ANTERIOR / SIGUIENTE: permite desplazarse a la anterior o a
la siguiente unidad de tratamiento de aire según su número de
identificación.

IMPRIMIR: realiza una impresión de la pantalla.

AYUDA: se accede al archivo de ayuda correspondiente a esta
pantalla.

MODIFICAR PARAMETROS: para cambiar los parámetros como
la histéresis o la zona muerta, pero se requiere clave.
4.3.
Información disponible.

Se dispone en la parte superior de esta pantalla de la misma
información descrita en Pantalla de la unidad de tratamiento de
aire.

Fallo de comunicación: El programa comunicará con la unidad de
tratamiento de aire seleccionada para obtener su información. Si
existiese cualquier fallo en la comunicación lo indicará mediante
106
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
un icono rectangular de color rojo que aparecerá encima del
termostato.

Display del control: Se dispone de la misma información que
aparece en la pantalla LCD del control de la unidad de
tratamiento de aire, es decir, modo de funcionamiento, consigna y
temperatura de retorno.

Parámetros: Se muestran los parámetros de temperatura, tiempo y
control.
5. Pantalla de programaciones horarias.
5.1.
Descripción general
Se accede a esta pantalla pulsando el botón PROGR en la pantalla
principal. En esta pantalla se puede controlar las programaciones de
arranques, paradas, cambios de consigna, etc. para cada día de la semana. Se
dispone de hasta 4 arranques y paradas, de los cuales los 2 primeros
coinciden con los que aparecen en el control de la unidad de tratamiento de
aire. Los 2 restantes sólo funcionarán cuando el ordenador esté encendido.
5.2.
Botones disponibles.

FLECIIAS: para aumentar o disminuir la consigna y las horas.

COPIAR DIA: copia la programación del día anterior.

PANTALLA GENERAL: para volver a dicha pantalla.
107
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC

ANTERIOR / SIGUIENTE: permite desplazarse a la anterior o a
la siguiente unidad de tratamiento de aire según su número de
identificación.

MODIFICACION: tras introducir la clave se permite cambiar los
parámetros de la programación.

ACTIVAR / DESACTIVAR PROGRAMACIÓN.

IMPRIMIR: realiza una impresión de la pantalla.

AYUDA: se accede al archivo de ayuda correspondiente a esta
pantalla.
5.3.
Funciones disponibles.
Desde esta pantalla se pueden iniciar las siguientes operaciones:

Activar o Desactivar la programación.
La programación puede estar activada o desactivada, quedando
indicado en esta pantalla. En el rótulo de fondo blanco se indica el estado de
la programación, y en el rótulo del pulsador aparece la función que realizará
al pulsarlo.
Con la programación desactivada no se producen los arranques y
paradas aunque estuvieran programados. Cuando el ordenador está
apagado o el programa no está rodando, no se producirán los arranques y
paradas programados, estando la programación desactivada.

Modificar programación.
108
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
Pulsando el botón MODIFICACIÓN e introduciendo la clave se tiene
acceso a modificar las horas de arranques, paradas, consignas, etc. Para
ello se emplean los pulsadores subir/bajar que aparecen a la derecha de
la casilla a modificar.

Copiar programación de un día.
Si los mismos datos de programación de un día se repiten en otros
días de la semana, pueden ser copiados de la forma siguiente: Pulsar
MODIFICACIÓN, introducir la clave, aparecerán los botones de
COPIAR DIA debajo del rótulo de cada día de la semana. Se pulsa en el
botón del día que se quiere programar y después en el rótulo del día
cuyos datos de programación se quieren copiar.

Copiar programación de un equipo.
Se puede copiar la programación ya realizada de un equipo en el
grupo de equipos que hay seleccionados. Marcando la casilla "Copiar" se
abrirá otra que permite introducir el número de equipo cuyos datos de
programación se quieren repetir.

Programación por grupos de equipos.
En lugar de programar uno a uno cada equipo, la mayoría de las
veces se necesitará un conjunto de equipos con la misma programación
semanal.
Al entrar en la pantalla programación se da a elegir un grupo de
equipos. Si dentro del rango que se ha elegido ya existen programaciones
diferentes, aparecerán en la parte superior de la pantalla los números de
109
MEMORIA
I. Memoria
Capítulo 7. Descripción del programa para PC
los equipos que tienen la misma programación y un rótulo indicando el
resto del grupo que tiene programación distinta.
Se puede recorrer todo el rango seleccionado mediante los botones
ANTERIOR y SIGUIENTE.

Imprimir Pantalla.
Se puede obtener una impresión de la pantalla de programación
pulsando el botón IMPRIMIR.
NOTA: En cada una de las pantallas del programa se dispone de
un botón de ayuda, que muestra la información correspondiente a la
pantalla en la que nos encontremos, y otro de imprimir que permite
hacer una impresión de pantalla.
110
MEMORIA
I. Memoria
Capítulo 8.Conclusiones
Capítulo 8
Conclusiones
Capítulo 8
Conclusiones
8.
daigu
E
n este documento se ha descrito paso por paso el desarrollo y la
implementación de un control para las unidades de tratamiento de aire.
El modelado de las tarjetas de la máquina se ha realizado con ORCAD ha
sido un trabajo que ha requerido bastante tiempo pero necesario para
después imprimir estos circuitos cada uno en la tarjeta correspondiente.
Además el programa nos permite imprimir cada uno de los planos
requeridos para la impresión en la tarjeta y que se pueden ver más adelante
en el apartado de planos.
La programación de las funciones del control sobre la unidad de tratamiento
de aire se ha realizado con dos microprocesadores diferentes uno para cada
una de las tarjetas. Esta parte ha sido la más laboriosa de todo el proyecto
puesto que se necesitan tener muchos factores en cuenta y los programas se
han realizado en ensamblador. El lenguaje ensamblador tiene una ventaja y
es que no ocupa casi espacio en la memoria el microprocesador con lo que
nos permite utilizar microprocesadores más pequeños y baratos pero tiene
de desventaja que este lenguaje es más costoso para el programador puesto
que para la implementación de una instrucción simple en la vida real se
necesitan muchas instrucciones en este lenguaje.
Además ha de tenerse en cuenta que los dos microprocesadores utilizados
son diferentes por lo que es necesario conocer mayor numero de
instrucciones para una misma cosa porque aunque ambos se puedan
111
MEMORIA
I. Memoria
Capítulo 8.Conclusiones
programar en ensamblador la manera de mover algo a memoria no se hace
de la misma forma ha de verse la diferencia en los manuales de ambos
microprocesadores.
Todo este proyecto al final nos ha permitido tener una unidad de tratamiento
de aire lista para probarla como prototipo e incluso lista para venderla ya
que también se calcula más adelante un presupuesto que nos informa del
precio al que saldría cada unidad si quisiéramos sacarla al mercado.
112
MEMORIA
I. Memoria
Capítulo 8. Futuros desarrollos
Capítulo 9
Futuros desarrollos
Capítulo 9
C
Futuros desarrollos
9.
daigu
omo ha podido verse a lo largo de este documento, las posibilidades
que abre la electrónica al mundo de la climatización y tratamiento de
aire son inmensas.
A este mismo aparato se le podrían añadir otros muchos sistemas para tratar
el aire de manera diferente, ya que existen entornos en los que no se necesita
un tratado en el que haya que quitarle partículas al aire sino también
desinfectarlo.
Para este propósito podría añadirse dentro de la misma máquina y no con
pocas ni sencillas modificaciones el tratamiento del aire con ozono, algo para
lo que ya existen máquinas independientes pero no inmersas en un modulo
de climatización.
Además en este proyecto se ha explicado la unidad de tratamiento de aire
más simple con un numero de filtros reducidos, hay en situaciones (fabricas
donde el aire este muy contaminado o piscinas) que estas unidades
necesitaran un control de tratamiento de aire más sofisticado que el que se ha
descrito en este documento.
Otra mejora que se podría incluir en los futuros desarrollos es la
utilización de una sola tarjeta con un solo microprocesador para el control de
todos los elementos dentro de la unidad. Con esto se podrá conseguir una
máquina más compacta y se le evitaría al programador tener que hacer una
113
MEMORIA
I. Memoria
rutina
de
Capítulo 8. Futuros desarrollos
comunicaciones
entre
ambas
tarjetas
puesto
que
solo
dispondremos de una. Aunque sobre esto se ha de hacer primero un estudio
detallado puesto que se ha de ver si el coste con la reducción de espacio y el
tiempo que se ahorra merece la pena o le va a merecer la pena al usuario
porque al final la razón por la que se montan estas maquinas es para su
venta por lo que se ha de conseguir una buena relación calidad precio
114
Bibliografia
[1].
Wikipedia. “Aire acondicionado”.
[2].
Wikipedia. “Air Handling unit”.
[3].
Cesáreo Fernandez Martinez . “Estructura de ordenadores” 2º
I.T.I.E.I.
Universidad
Pontificia
Comillas
(ICAI),
Dep.
de
Electrónica y Automática, Madrid, 2008.
[4].
Cesáreo Fernández Martínez . “Informática industrial” 2º I.T.I.E.I.
Universidad Pontificia Comillas (ICAI), Dep. de Electrónica y
Automática, Madrid, 2008.
[5].
www.datasheetcatalog.com
[5]. www.microchip.com/products/Devices.aspx?dDocName=en01024
[6].
www.freescale.com/files/microcontrollers
[7].
Manual del usuario de visual basic de la pagina web:
http://msdn.microsoft.com/es-es/library/aa468084.aspx
115
PARTE II: CÁLCULOS
116
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
Capítulo 1
Cálculos de hardware
Capítulo 1
E
Cálculos de Hardware
1.
Daigu
n este capítulo se explican el por qué de los valores de los componentes
elegidos en el diseño del hardware de las unidades de tratamiento de
aire.
1. Resistencias de pull-up de los pulsadores.
Se calcula un valor máximo para las resistencias de pull-up determinado por las
características de entrada del microprocesador (IIH y VIH) y que podemos
obtener del manual. Con estos datos se elige la resistencia necesaria aplicando
las ecuaciones 1.3 y 1.4
Figura ‎1.1: Resistencias de pull-up
(1.1)
(1.2)
117
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
(1.3)
(1.4)
Dentro de este límite se eligieron resistencias de 100 K para los
pulsadores. Por tanto: R32→39 = 100 K .
2. Sondas de temperatura.
Rango de temperaturas: -20 ºC a 80 ºC.
Por tanto la máxima resistencia corresponderá a la temperatura de -20
ºC. Dicha resistencia máxima puede ser obtenida de la tabla que aparece en
el catálogo de la NTC: -20 ºC → R = 99,04 K. Para aprovechar bien la escala
nos interesa que para el mayor valor de la NTC la salida se aproxime lo más
posible a los 4 V .
Figura ‎1.2: Cálculo de la NTC
Ahora se puede obtener la resistencia de pull-up, igualando la corriente
que pasa por ambas resistencias véase ecuación 1.5:
118
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
(1.5)
Resistencia comercial : 24,9K1%
3. Resistencias para el circuito TL43L.
Figura ‎1.3: Resistencias de TL43L
3.1.
Resistencias para fijar tensión de salida.
La tensión de salida del conjunto sique la ecuación 1.6:
(1.6)
Según datos de catálogo (ver Datasheet): VREF= 2,5V, IREF =2 µA.
Además V0=4V, que es la tensión que se quiere fijar como referencia
VREFH.
119
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
Podemos despreciar la corriente IREF y por tanto utilizar la expresión
simplificada para efectuar el cálculo véase ecuación 1.7:
(1.7)
(1.8)
R6 = 2K → R11 = 1,2K
3.2.
(1.9)
Resistencia para suministrar la corriente de cátodo mínima
R5 debe ser lo suficientemente pequeña para que la corriente de cátodo
suministrada al TL431 sea ≥ lmA, y por tanto:
(1.10)
Dentro de este límite se eligió una resistencia de 220 Ω → R5 = 220 Ω
120
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
4. Consumo.
Los elementos de la tabla que tendrán un consumo apreciable, son los
siguientes:
Componente
Consumo
Microprocesador (MC68HC908LJI2)
18Ma
Conversor D/A (MAX500)
10mA
Memoria EEPROM (NM24C02)
2Ma
Amplificadores operacionales
2,5x2=5mA
(TLC2272)
Circuito para comunicaciones
0,25mA
(MAX4S7)
VREF conversión A/D
Regulador de tensión (LM7805)
3mA
Pull-up’s
1mA
Relees (OMG5V1)
6x2=12 mA
Total
55,75mA
Tabla ‎1.1: Consumo de componentes
121
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
NOTA: Se han tenido en cuenta los consumos de 2 relés y el conversor
D/A, aunque en la práctica no se tendrán de forma simultánea nada más
que 1 relé y el conversor D/A, o bien 2 relés (según sea el tipo de regulación
de válvulas por el que se opte).
Por tanto podemos considerar una IIN = 60 mA.
5. Condensadores del circuito de alimentación.
Siguiendo los pasos indicados en el manual Voltage Regulators
Handbook se obtiene:
ω = 314,16 rad/s
(1.11)
(1.12)
(1.13)
(1.14)
(1.15)
(1.16)
Del gráfico del manual se obtiene el siguiente valor:
(1.17)
122
MEMORIA
II. Cálculos
Capítulo 1. Cálculos de hardware
El valor obtenido con este cálculo es el mínimo necesario y teniendo en
cuenta la posible degradación de los condensadores electrolíticos durante su
vida se dispondrán condensadores de 220 µF.
Por tanto: C14 = C16 = 220 µF.
123
MEMORIA
II. Cálculos
Capítulo 2. Cálculos de Software
Capítulo 2
Cálculos de Software
Capítulo 2
E
Cálculos de Software
2.
Daigu
n este capítulo se explican los cálculos utilizados en la memoria en el
apartado de desarrollo de software.
1. Frecuencia.
El microprocesador dispone de un sintetizador de frecuencia, que a su
vez incluye un PLL (Phase Locked Loop), para ajustar de modo fino la
frecuencia de bus. Este ajuste se realiza por programación y los pasos a
seguir para calcular los parámetros aparecen en el manual del
microprocesador:
1. Elegir la frecuencia de bus deseada: En nuestro caso fBUS = 4 MHz.
2. Calcular la frecuencia del oscilador controlado por tensión (VCO)
incluido en el PLL:
(2.1)
P es un parámetro que puede valer 0, 1, 2 ó 3. Para escoger la
frecuencia más baja elegimos P = 0 →
3. Seleccionar una frecuencia de referencia para el PLL:
124
MEMORIA
II. Cálculos
Capítulo 2. Cálculos de Software
En este caso el cristal de cuarzo tiene una frecuencia: fRCLK=32,768
KHz.
Elegimos como divisor de la frecuencia de referencia: R = 1, porque
se recomienda que fRCLK/R sea el máximo posible.
4. Calcular el parámetro N véase ecuación 1.19:
(2.2)
Como no ha salido un valor entero se ha redondeado el valor al entero
siguiente, y posteriormente se ha pasado a hexadecimal.
5. Calcular y comprobar la validez de las frecuencias:
(2.3)
(2.4)
Ambas frecuencias son razonablemente próximas al valor deseado.
6. Elegir el parámetro E según la Tabla 2.1:
En nuestro caso E = 1 porque fVCLK=16,023 MHz.
125
MEMORIA
II. Cálculos
Capítulo 2. Cálculos de Software
Rango de frecuencia (Hz)
E
0<fVCLK<9830400
0
9830400≤fVCLK<19660800
1
19660800≤fVCLK<39321600
2
Tabla ‎2.1: Rango de frecuencias
7. Calcular el parámetro L siga ecuación 2.5:
(2.5)
8. Calcular y comprobar la frecuencia media entre la mínima y máxima
que puede alcanzar el PLL (fVRS):
(2.6)
Para que el funcionamiento sea correcto se debe cumplir:
(2.7)
126
MEMORIA
II. Cálculos
Capítulo 2. Cálculos de Software
Por tanto dicha condición se cumple.
fVCLK
fBUS
fRCLK
R
N
P
E
L
16MHz
4MHz
32,768KHz
1
1E9
0
1
D1
Tabla ‎2.2: Parámetros
2. NTC: Tabla de temperaturas.
Con el valor de resistencia calculado anteriormente, la salida tendrá unos
valores de tensión comprendidos entre 0 y 4V, y su valor exacto será:
(2.8)
Expresión en la que R es una función de la temperatura que viene dada en el
catálogo de la NTC.
Para pasar la tensión de salida a su correspondiente valor en hexadecimal
aplicaremos la siguiente proporción, teniendo en cuenta que vamos a usar una
resolución de 0,01 V, necesitaremos 400 posiciones de memoria (si 0 V→ 000,
4V→3FF)
(2.9)
127
MEMORIA
II. Cálculos
Capítulo 2. Cálculos de Software
En la Tabla 2.3 se muestran los resultados obtenidos en el proceso.
T (ºC)
R
V
H
-20
FF38
99,04
3,995
03FD
-15
FF6A
74,18
3,743
03BD
-10
FF9C
56,10
3,463
0375
-5
FFCE
42,82
3,162
0328
0
0000
32,96
2,848
02D8
5
0032
25,58
2,534
0287
10
0064
20,00
2,227
0239
15
0096
15,76
1,938
01EF
20
00C8
12,51
1,672
01AB
25
00FA
10,00
1,433
016E
30
012C
8,048
1,221
0138
35
015E
6,518
1,037
0109
128
MEMORIA
II. Cálculos
Capítulo 2. Cálculos de Software
T (ºC)
R
V
H
40
0190
5,312
0,879
00E0
45
01C2
4,354
0,744
00BE
50
01F4
3,588
0,630
00A1
55
0226
2,974
0,533
0088
60
0258
2,478
0,453
0073
65
028ª
2,074
0,384
0062
70
02BC
1,745
0,327
0053
75
02EE
1,476
0,280
0047
80
0320
1,253
0,240
003D
Tabla ‎2.3: Cálculo para la NTC
129
PARTE III: ESTUDIO
ECONÓMICO
130
MEMORIA
III. Estudio Económico
Capítulo 1. Estudio Económico
Capítulo 1
Estudio Económico
Capítulo 1
Estudio Económico
1.
Daigu
H
oy en día, gracias a la fuerte demanda por parte de la sociedad, cada
día más exigente, el desarrollo de la tecnología es uno de los
principales objetivos de las empresas. Más concretamente, es en el campo de
la electrónica donde se está produciendo un crecimiento mayor. La
evolución está teniendo un ritmo tan acelerado que el control de sistemas se
ha convertido en una de las principales misiones. Actualmente, la sociedad
reclama el control de cada vez más dispositivos o equipos para
proporcionarles una vida laboral y social más fácil, confortable y segura.
Un estudio económico del presente proyecto es necesario tanto para
evaluar la rentabilidad del mismo antes de lanzarlo al mercado como para
poderlo comercializar con un precio competente con respecto al resto de
empresas y a la vez atractivo para los posibles clientes.
El uso de un control electrónico en las unidades de tratamiento de aire,
permite que el usuario pueda elegir la calidad y condiciones del aire dentro
del local donde la maquina este situada.
131
PARTE IV: MANUAL
DE USUARIO
132
MEMORIA
III. Manual del usuario
Capítulo 1. Características notables
Capítulo 1
Características notables
Capítulo 1
E
Características notables
1.
Daigu
n este capítulo se explican el modo de funcionamiento de las unidades
de tratamiento de aire y sus características más importantes.
1. Operación automática
Las unidades de tratamiento de aire SA98 incluyen una función de
control para selección automática frío/calor. Esto significa que su termostato
ordenará automáticamente a su instalación de aire acondicionado su puesta
en marcha en frío o calor o la parada de ésta, según se necesite, para
mantener la temperatura de confort que Vd. seleccionó. Además también
pone en marcha la máquina si el usuario necesita otras propiedades del aire
diferentes. La máquina no se para hasta que la humedad o el nivel de
oxigeno del aire no es el deseado.
He aquí cómo funciona:
Durante los períodos de actividad del acondicionador de aire es posible
que se produzcan cambios en la temperatura exterior o incluso en la carga
térmica del interior (por ejemplo más personas, gente que entra y sale del
local, etc...) como consecuencia puede ser necesario dar calor en algún
momento mientras que en otros será necesario dar frío. Para conseguirlo, el
termostato mantendrá parado el acondicionador siempre que la temperatura
interior esté situada en una zona de 1ºC por debajo o por encima de la
133
MEMORIA
III. Manual del usuario
Capítulo 1. Características notables
temperatura que Vd. seleccionó. Esta banda (llamad a zona muerta) asegura
que el acondicionador no esté cambiando de frío a calor o viceversa
demasiado a menudo. Sí la temperatura baja más de 1ºC de la seleccionada
el termostato hará funcionar al equipo en calor. Por el contrario, si subiese
más de 1ºC de la seleccionada le hará trabajar en frío.
2. Pantalla simbólica
La unidad de tratamiento de aire (SA98) dispone para su comodidad de
una pantalla donde mediante símbolos podrá comprobar fácilmente el
estado de selección y funcionamiento.
Figura ‎1.1: Display para visualización
134
MEMORIA
IV. Manual del usuario
Capítulo 2. Programación de la UTA
Capítulo 1
Programación de la unidad de
tratamiento de aire
Capítulo 2
E
Programación de la unidad
de tratamiento de aire
2.
ÇDaigu
n este capítulo se explican el modo de programar las unidades de
tratamiento de aire. Solo es válido para los modelos que son
programables, ya que no todos lo son.
1. Planifique su horario de utilización
Antes de programar los períodos diarios de su unidad tómese un respiro
y establezca las horas de servicio que necesita, pensando cuáles deberán ser
los períodos de marcha, parada y/o reducción que le resulten más
convenientes en su caso.
135
MEMORIA
IV. Manual del usuario
Capítulo 2. Programación de la UTA
LUN
MAR
MIE
JUE
VIE
SAB
DOM
ARRANQUE 1
MAÑANA
PARADA 1
ARRANQUE 2
TARDE
PARADA 2
Tabla ‎2.1: Planificación de horario
2. Puesta en hora y día de la unidad de tratamiento de aire
1. Pulsar en el orificio del lateral derecho de la unidad de tratamiento de
aire con la punta de un lápiz. Los dígitos del reloj dejan de alternar con el
valor de temperatura y empiezan a parpadear.
2. Pulsar flecha arriba o flecha abajo. Con la flecha arriba, la hora aumenta;
con la flecha abajo, la hora disminuye. si se mantiene pulsado, el cambio
es muy rápido.
3. Pulsar en el orificio del lateral derecho con la punta de un lápiz. La barra
situada debajo del día actual parpadeará.
4. Flecha arriba: La barra cambia de izquierda a derecha.
Flecha abajo: la barra cambia de derecha a izquierda.
136
MEMORIA
IV. Manual del usuario
Capítulo 2. Programación de la UTA
5. Pulsar en el orificio del lateral derecho con la punta de un lápiz. El día y
la hora actual se aceptan por el termostato.
3. Introducción/ Modificación del programa horario
introducción del programa horario de arranque, parada o reducción, que
ya planificó en el apartado 2. Planifique su horario de utilización.
1. Pulse la tecla PRG para activar el modo de programación. Al acceder al
modo de programación, las barras situadas debajo de los días de la
semana indican los días que poseen alguna programación.
2. Pulse flecha arriba o abajo hasta llegar al día que desee programar.
3.
Pulse SEL. Parpadeará alguno de los siguientes símbolos:
Arranque 1
Parada 1
Arranque 2
Parada 2
4. Pulse arriba o abajo hasta que parpadee el símbolo del apartado anterior
que desee programar.
5.
Pulse SEL. Parpadeará la hora.
6. Pulsar arriba o abajo hasta llegar a la hora que desee de arranque, parada
o reducción, que haya seleccionado en el punto 4.
7. Vuelva a pulsar SEL y parpadeará de nuevo el día de la semana.
137
MEMORIA
IV. Manual del usuario
Capítulo 2. Programación de la UTA
Repita las operaciones descritas en los puntos 2 a 7 hasta que haya programado
la unidad de tratamiento de aire según la tabla de planificación horaria que
diseñó en el apartad o 1. Planifique su horario de utilización
8. Pulse PRG, el termostato acepta automáticamente los valores que se le
hayan dado y no parpadea ningún símbolo en la pantalla, funcionando
normalmente.
4. Copia del programa diario
Si el programa de un día es el mismo que el del día anterior, copie dicha
programación de la siguiente forma:
1. Pulse PRG. Parpadeará el día de la semana 1, 2, 3,...7.
2. Pulse flecha arriba o abajo hasta que llegue al día cuya programación
horaria del día anterior se desee copiar.
3. Pulse COPY. El día que eligió en el punto 2 quedará programado, igual
que el día anterior.
NOTA: Si desea programar el siguiente día con los mismos parámetros, pulse
flecha arriba y COPY, y así sucesivamente.
4.
Pulse PRG, el termostato acepta automáticamente los valores que se le
hayan dado y no parpadea ningún símbolo en la pantalla, funcionando
normalmente.
138
MEMORIA
IV. Manual del usuario
Capítulo 2. Programación de la UTA
5. Anulación de la programación de un periodo
Anulación de la programación de un arranque, parada o reducción:
1. Pulse PRG. Parpadeará el día de la semana 1, 2,3,...7.
2. Pulse flecha arriba o abajo hasta que llegue al día en el cual desee anular
ese arranque, parada o reducción.
3.
Pulse
SEL,
parpadeará
uno
de
los
siguientes
símbolos:
4. Pulse flecha arriba o abajo hasta que parpadee el símbolo que desea
anular.
5. Pulse ON-OFF y se anulará ese arranque, parada o reducción,
mostrándose como confirmación en la pantalla de la hora la indicación -:.
6.
Pulse PRG, el termostato acepta automáticamente los valores que se le
hayan dado y no parpadea ningún símbolo en la pantalla, funcionando
normalmente.
6. Anulación de la programación de un día
1.
Pulse PRG. Parpadeará el día de la semana 1,2, 3,...7.
139
MEMORIA
IV. Manual del usuario
2.
Capítulo 2. Programación de la UTA
Pulse flecha arriba o abajo hasta que llegue al día en el cual desee
anular la programación.
3.
Pulse ON-OFF y el segmento situado debajo de ese día de la semana
se apagará, quedando anulada la programación de dicho día.
4.
Pulse PRG, el termostato acepta automáticamente los valores que se
le hayan dado y no parpadea ningún símbolo en la pantalla,
funcionando normalmente.
7. Activación/Desactivación del programa horario
Si existe alguna programación, aunque la programación horaria esté
desactivada, aparecerá en el display el símbolo PRG. Si no existe ninguna
programación horaria no aparecerá ningún símbolo en la pantalla.
1. Pulse SEL estando en modo de operación normal hasta que parpadee
en la pantalla el símbolo PRG.
2.
Pulse flecha arriba o abajo. El símbolo cambiará alternativamente
3. Pulse SEL hasta que ningún símbolo parpadee en la pantalla.
8. Saltarse temporalmente la programación horaria.
1. Override
Estando en la pantalla encendidos el símbolo PRG ON y uno de los
símbolos
de
parada,
puede
poner
en
funcionamiento
acondicionador durante t hora y media procediendo como sigue:
140
el
MEMORIA
IV. Manual del usuario
Capítulo 2. Programación de la UTA
1. Pulse ON-OFF y manténgalo pulsado hasta que el símbolo PRG
ON parpadee.
NOTA: Transcurrida la hora y media de funcionamiento en override, el
termostato vuelve a funcionar con la programación que tenía establecida.
2. Standby
Estando en la pantalla encendidos el símbolo PRG ON y uno de los
símbolos de arranque, puede parar el acondicionador hasta la próxima
orden de arranque programada pulsando ON-OFF y manteniéndolo
pulsado hasta que el símbolo PRG ON parpadee.
Pasados unos segundos el símbolo PRG ON dejará de parpadear.
9. Como recuperar la programación horaria durante un
override o un standby
Durante un periodo de override es posible recuperar la programación
horaria nuevamente de la siguiente forma.
1.
Pulse ON-OFF. El símbolo PRG ON dejará de parpadear y queda
recuperada la programación horaria establecida en su momento.
141
MEMORIA
IV. Manual del usuario
Capítulo 3. Manejo de la UTA
Capítulo 3
Manejo de la unidad de tratamiento
de aire
Capítulo 3
E
Manejo de la unidad de
tratamiento de aire
3.
çDaigu
n este capítulo se explican el modo de utilización las unidades de
tratamiento de aire.
1. Puesta en marcha/parada de la unidad de tratamiento de
aire.
Cuando el termostato se encuentra en marcha pueden observarse en la
pantalla la temperatura ambiente y el símbolo que representa el modo de
funcionamiento. Pueden visualizarse además otros símbolos, dependiendo
del modelo de termostato instalado y de las opciones que se encuentren
seleccionadas.
Para detener la unidad de tratamiento de aire:
Pulsar la tecla ON-OFF, la pantalla pasará a mostrar únicamente la
temperatura ambiente manteniéndose apagados los demás símbolos, así
como también el acondicionador de aire.
Para poner en marcha la unidad de tratamiento de aire:
Pulsar la tecla ON-OFF. La pantalla mostrará los símbolos.
142
MEMORIA
IV. Manual del usuario
Capítulo 3. Manejo de la UTA
2. .Como bloquear/ desbloquear la unidad de tratamiento de
aire
La unidad dispone de una característica de bloqueo del teclado, que
impide que personas no autorizadas modifiquen la selección de funciones o
la programación horaria (sólo en los modelos programables) que se haya
establecido.
Esta alternativa resulta de especial utilidad si desean evitarse trastornos
o consumos de energía innecesarios en lugares expuestos a acceso público.
Para establecer el bloqueo / desbloqueo actúe de la siguiente forma:
Partiendo de una temperatura de confort elegida por Vd., pulse la tecla
MODO y manteniéndola pulsada pulse la tecla ABAJO, tras lo cual, el
teclado quedará bloqueado. Al volver a efectuar esta misma operación el
teclado quedará desbloqueado.
3. Limitación de elección de temperatura de confort
Partiendo de una temperatura de confort elegida por Vd., pulse la tecla
MODO y manteniéndola pulsada pulse la tecla ARRIBA, tras lo cual la
temperatura de consigna sólo podrá variarse en +2ºC sobre la elegida. Al
volver a efectuar esta misma operación la selección de consigna quedará
libre.
143
MEMORIA
IV. Manual del usuario
Capítulo 3. Manejo de la UTA
4. Selección de la temperatura de confort
Pulse la tecla flecha arriba si desea subir el valor de la temperatura de
confort o flecha abajo si desea bajarla (por ejemplo: Si la temperatura
seleccionada es 25ºC y desea bajar a 23ºC pulse dos veces la tecla ABAJO).
5. Selección de modo de funcionamiento
En función de la configuración del termostato, pulsando la tecla MOD,
su termostato puede seleccionar 4 formas diferentes de funcionamiento del
acondicionador de aire:
VENTILACION: El acondicionador ventilará continuamente el
local sin demandar ni frío ni calor.
FRÍO: El termostato ordenará al acondicionador producir frío,
siempre que ello sea necesario para mantener el nivel de confort
deseado.
CALOR: El termostato ordenará al acondicionador producir calor,
siempre que ello sea necesario para mantener el nivel de confort
deseado.
AUTOMÁTICO. El termostato ordenará al acondicionador
producir frío o calor para conseguir la temperatura de confort
elegida (ver apartado 1. Operación automática.) Transcurridos
unos segundos sin efectuar ninguna pulsación, el termostato
acepta automáticamente los valores que se le hayan dado,
funcionando normalmente.
144
MEMORIA
IV. Manual del usuario
Capítulo 3. Manejo de la UTA
6. Comprobación del estado de la unidad de tratamiento de
aire.
Para conocer cuál es la selección actual del termostato y, por lo tanto,
saber cuál es la temperatura de confort elegida, el modo de funcionamiento,
y el estado de activación o desactivación del resto de funciones, se emplea la
pantalla o display del propio termostato.
145
PARTE V: MANUAL
DEL INSTALADOR
146
MEMORIA
V. Manual del instalador
Capítulo 1. Preparación
Capítulo 1
Preparación
E
Capítulo 1
Preparación
1.
çDaigu
n este capítulo se va a explicar tanto las consideraciones generales,
alimentación eléctrica, comprobación del contenido y la manipulación
de la unidad de tratamiento de aire.
ATENCIÓN
Lea cuidadosamente todas estas instrucciones antes de comenzar a
instalar el termostato
1. Introducción
La gama de máquinas de tratamiento de aire de SISTENA S.A. está
constituida por máquinas de bajo voltaje para ambiente interior, diseñados
para su montaje en pared.
Su función es la de mantener la temperatura y la calidad del aire de la
vivienda o local controlando el funcionamiento de la calefacción, el sistema
de aire acondicionado y la calidad del aire.
2. Consideraciones generales
El seguimiento de estas instrucciones le asegurará la correcta instalación,
puesta en marcha, y cobertura de la garantía que el fabricante otorga a la
147
MEMORIA
V. Manual del instalador
gama
de
productos
Capítulo 1. Preparación
de
SISTENA
S.A.
Así
podrá
disfrutar
del
funcionamiento fiable y seguro de dichos termostatos, y de sus agradables
prestaciones durante mucho tiempo.
3. Alimentación eléctrica
El equipo necesita conectarse a una tensión de alimentación eléctrica de
24Vac para su correcto funcionamiento (terminales de conexión R y C). La
unidad de tratamiento de aire no funcionará sin esas 2 conexiones. Manual
de instalación.
CUIDADO
El voltaje de alimentación de 24 Vac sólo puede obtenerse a través de
un transformador que cumpla las normas y códigos de seguridad
nacionales.
La utilización de una alimentación eléctrica inadecuada puede causar
descargas eléctricas que dañen el termostato, e incluso daño o muerte a
las personas.
El fabricante no acepta ninguna responsabilidad por el uso incorrecto
de su propio material o de otros que él no haya suministrado.
4. Comprobación del contenido
Vd. habrá recibido la unidad de tratamiento de aire correctamente
embalado. En el embalaje encontrará una tarjeta identificada con las palabras
Lista de contenido.
148
MEMORIA
V. Manual del instalador
Capítulo 1. Preparación
Compruebe que todo el material reseñado en esta lista se encuentra en el
embalaje. SISTENA S.A. aplica a todos sus productos los más exigentes
controles de calidad. No obstante, si faltase algún elemento, o bien si su
estado no fuese el correcto, contacte con su distribuidor autorizado. Este
atenderá inmediatamente su petición.
5. Manipulación del termostato
La máquina se presenta en una caja de plástico compacta. No abra la caja
de la unidad de tratamiento de aire en ningún caso. Su apertura es
innecesaria, y le hará perder la garantía.
La unidad es un elemento muy robusto, pero también es frágil. Manéjelo
con cuidado.
El fabricante no acepta reclamaciones por daños derivados de un manejo
descuidado o negligente del aparato.
149
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
Capítulo 2
Instalación
E
Capítulo 2
Instalación
2.
çDaigu
n este capítulo se va a explicar la manera en la que el técnico tiene que
realizar la instalación de la unidad de tratamiento de aire.
1. Ubicación de la unidad de tratamiento de aire.
El termostato se deberá situar en un lugar cuya temperatura sea
representativa del ambiente general del lugar a climatizar.
Se colocará sobre un tabique interior del recinto:
-
En la habitación o en el espacio más utilizado del recinto.
-
En una parte del tabique alejada de esquinas, molduras o tubos.
-
En un lugar alejado de la influencia de rejillas de impulsión del
sistema de calefacción, aire acondicionado, o de renovación de
aire.
-
La altura de montaje será de entre 1,4m y 1,8m.
-
El lugar de montaje no estará afectado por la incidencia directa de
los rayos del sol, y estará alejado de cualquier foco de calor
intenso.
El termostato no deberá montarse:
150
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
-
Cerca de ventanas o puertas de acceso al exterior.
-
Sobre muros exteriores.
-
Expuesto a la luz solar, cerca de lámparas, cocinas u otras
fuentes de calor que puedan provocar errores de lectura de
temperatura.
2. Sustitución de una unidad de tratamiento de aire existente.
CUIDADO
Antes de iniciar las operaciones de sustitución de un termostato ya
existente en la instalación, se deberá desconectar la alimentación eléctrica
de la máquina. Puede existir más de una alimentación eléctrica que sea
necesario desconectar. Hágalo para evitar posibles descargas eléctricas
1. Desconecte las alimentaciones eléctricas de la máquina.
ATENCIÓN
Compruebe que el viejo termostato se alimenta a 24 Vac. De no ser así
no podrá ser sustituido directamente por el nuevo.
En este caso no realice la sustitución y lea atentamente la hoja titulada
Sustitución de termostato alimentado a otros voltajes, que encontrará en
el embalaje del termostato.
2. Retire de la pared el termostato que va a sustituir.
151
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
3. Desconecte uno a uno los cables del termostato existente.
4. Identifique cada uno de los cables según su significado.
5. No permita que los cables se deslicen hacia el interior de la pared.
6. Elimine el viejo termostato.
SISTENA S.A. le recomienda que lo recicle siempre que él lo sea posible.
NOTA
Algunos termostatos existentes contienen mercurio. Se trata de una
sustancia peligrosa que se debe tratar con cuidado, y siempre de acuerdo
a las normas y legislación nacionales. Nunca deberá arrojarse a la basura.
3. Montaje
1. Sitúe la base de montaje en el lugar elegido para la ubicación del
termostato, y marque la posición de los taladros.
2. Haga ambos taladros utilizando una broca de 3mm y aloje en ellos los 2
tacos incluidos en el embalaje del termostato.
3. Atornille a la pared la base de montaje usando los 2 tornillos
suministrados.
4. Efectúe la conexión eléctrica a las bornes del termostato, tal y como se
indica en el Paso 4: CONEXIONADO ELÉCTRICO.
152
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
CUIDADO
Si las conexiones eléctricas no se realizan adecuadamente, el
termostato no funcionará, o lo hará de manera incorrecta.
5. Inserte el termostato en la base de montaje, cuidando que su posición sea
la adecuada.
6. Introduzca la longitud sobrante de los cables de conexión sobre el
conducto de cables de la pared, y recoja el resto ocultándolo tras el panel
trasero del termostato.
7. Conecte la máquina a la red eléctrica y continúe a partir del Paso 5:
COMPROBACIÓN DE FUNCIONAMIENTO.
4. Conexionado eléctrico
La base de montaje del termostato está equipada con 12 bornes
enchufables, numeradas del 1 al 12.
A- Seleccione el esquema que corresponda a su modelo de termostato
(incluidos).
ATENCIÓN
Los esquemas incluidos representan una nomenclatura estándar de
conexión. Es posible que en las máquinas se emplee una nomenclatura de
identificación de conexiones distinta. En este caso utilice el esquema que
más se aproxime e introduzca las modificaciones oportunas.
153
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
B- Elimine únicamente el aislante de los hilos de conexión que vaya a
utilizar.
C- Emborne al conector cada uno de los hilos de conexión siguiendo el
esquema seleccionado. Cuando lo haga evite que queden cables sueltos que
puedan causar un cortocircuito.
D- Vuelva al Paso 3: MONTAJE de estas instrucciones y complete el
montaje.
5. Comprobación de funcionamiento.
Al aplicar voltaje de alimentación (24 Vac entre terminales R y C) la
unidad de tratamiento de aire efectúa una secuencia de auto-test, que
consiste en mantener encendido todo el display durante 5 segundos. Al
finalizar este lapso de tiempo, la máquina recupera el estado de
funcionamiento que tenía en el instante anterior a su desconexión de la
alimentación eléctrica.
1. Pulse el botón ON/OFF varias veces, y compruebe que el termostato
pasa sucesivamente de situación de marcha a situación de parada y
viceversa. En situación de parada el termostato mantiene iluminado
únicamente el display de temperatura ambiente, mientras que en
situación de marcha se indicará además el modo de funcionamiento y la
temperatura de consigna.
2. Ponga el termostato en marcha pulsando el botón ON/OFF.
154
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
3. Accione alternativamente los pulsadores ARRIBA y ABAJO y compruebe
que el indicador de temperatura deseada (consigna), aumenta y
disminuye de valor respectivamente.
Repita esta operación hasta que el display muestre la temperatura que
Vd. Desea conseguir en el recinto.
4. Accione varias veces el pulsador de MODO, y compruebe que el icono
que representa el modo de funcionamiento cambia en el siguiente orden:
VENTILACIÓN
FRÍO
CALOR
AUTO
5. Repita esta operación hasta establecer el modo de funcionamiento que
desee.
6. Fin de la instalación
1. Recoja su herramienta y despeje el lugar de la instalación de cualquier
material sobrante o residuo.
2. Enseñe al propietario del local el funcionamiento de la unidad de
tratamiento de aire.
3. Entregue el manual de usuario siempre al propietario del local.
4. Indique al usuario donde se encuentra el número del servicio de
asistencia técnica en la máquina, inscrito de manera visible e indeleble.
155
MEMORIA
V. Manual del instalador
Capítulo 2. Instalación
156
PARTE VI: CÓDIGO
FUENTE
157
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
Capítulo 1
Código de la tarjeta TX98
Capítulo 1
E
Código de la tarjeta TX98
1.
Daigu
n este capítulo se va a introducir el código en ensamblador utilizado a la
hora de realizar el control de la parte de climatización de la unidad de
tratamiento de aire.
1. Código fuente
Este código nos permite controlar los siguientes elementos incorporados
en la tarjeta:
-
Ventiladores (velocidad y modo)
-
Válvulas de frío y calor reguladas 0-10V
-
Conexión R5485 con PC
-
Temperatura de retorno y de impulsión.
158
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
HEADER 'CLIMATIZADOR'
PAGELENGTH 3B
; CONTROL CLIMATIZADOR
;MICRO MOTOROLA MC68HC908LJ12
;CONEXION CON TARJETA DE AMPLIACION
;FINAL DE ESCALA PRESION:100 PASCALES
;REGISTROS MICROPROCESADOR
PTA:
EQU 0
;PUERTO A
PTB:
EQU 1
;PUERTO B
PTC:
EQU 2
;PUERTO C
PTD:
EQU 3
;PUERTO D
DDRA:
EQU 4
; REG.DIREC.PUERT A
DDRB:
EQU 5
; REG.DIREC.PUERTO B
DDRC:
EQU 6
; REG.DIREC.PUERTO C
DDRD:
EQU 7
;REG.DIREC.PUERTO D
SCC1:
EQU $13
;REG. CONTROL COM.
SCC2:
EQU $14
SCS1:
EQU $16
SCDR:
EQU $18
SCBR:
EQU $19
CONFIG2: EQU $1D
INTSCR: EQU $1E
CONFIG1: EQU $1F
T1SC:
EQU $20
;TIMER 1
T1MODH: EQU $23
T1MODL: EQU $24
PCTL:
PBWCR:
EQU $36
;CONTROL PLL
EQU $37
PMSH:
EQU $38
PMSL:
EQU $39
159
MEMORIA
VI. Código fuente
PMRS:
EQU $3A
PMDS:
EQU $3B
Capítulo 1. Código de la tarjeta TX98
ADSCR:
EQU $3C
ADRH:
EQU $3D ;RESUL.CONV. (MSB)
ADRL:
EQU $3E ; RESUL. CONV. (LSB)
ADCLK:
;CONVA/D
EQU $3F
RTCCR1: EQU $42
;REAL TIME CLOCK
RTCCR2: EQU $43
RTCSR:
EQU $44
ALMR:
EQU $45
;RTC:MIN. ALARMA
ALHR:
EQU $46
;RTC:HORAS ALARMA
MINR:
EQU $48
;RTC:MINUTOS
HRR:
DOWR:
CHRR:
EQU $49
;RTC:HORAS
EQU $4D ;RTC:DIA DE SEMANA
EQU $4E
LCDCLK: EQU $4F
LCDCR:
;CONTROL LCD
EQU $51
LCDDAT: EQU $52
;DATOS LCD
FLBPR: EQU $FE09 ;PROTE.MEM. FLASH
LVISR:
WDOG:
EQU $FE0F ;DETEC.BAJATENSION
EQU $FFFF ;WATCH-DOG
;DIRECCIONES MEMORIA EEPROM
AP00:
EQU 0
;PARAM:HISTERESIS
AP01:
EQU 1
;ZONA MUERTA
AP02:
EQU 2
;LIM TEMP.IMPUL FRIO
AP03:
EQU 3 ;MARGEN BLOQ CONSIG
AP04:
EQU 4 ;DIFERENCIAL FRIO(F-C)
AP05:
EQU 5
;RESERVA
AP06:
EQU 6
;CONSIG. PRESION (PA)
AP07:
EQU 8
;TIEMPO MINIMO ON
160
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
AP08:
EQU 9
;TIEMPO MINIMO OFF
AP09:
EQU $A
AP10:
EQU $B ;0- VALV.,1-NO. VALV.
AP11:
EQU $C ;BANDA PROPORCIONAL
AP12:
EQU $D
;T.INTEGR.(SEGS./REP)
AP13:
EQU $E
;T.MODULAC. (SEGS.)
AP14:
EQU $F ;BAND PROP CNTROL PRES
AP15:
EQU $10
;VERSION
AP16:
EQU $11
;CLAVE
;RESERVA
ACONF1: EQU $12
;TIPO DE CONTROL
ACONF2: EQU $13
;PROGRAMAB. O NO
ADIR:
APARO:
EQU $14
EQU $20
AMOM1: EQU $26
AMOP1:
;DIRECCION
;PROGRAM.HORARIA
EQU $28
AMOM2: EQU $2A
AMOP2:
EQU $2C
AMOR1: EQU $2E
ATUM1:
ATUP1:
ATUM2:
EQU $30
EQU $32
EQU $34
ATUP2:
EQU $36
ATUR1:
EQU $38
AWEM1: EQU $3A
AWEP1:
EQU $3C
AWEM2: EQU $3E
AWEP2:
EQU $40
AWER1: EQU $42
ATHM1:
ATHP1:
EQU $44
EQU $46
161
MEMORIA
VI. Código fuente
ATHM2:
EQU $48
ATHP2:
EQU $4A
ATHR1:
EQU $4C
Capítulo 1. Código de la tarjeta TX98
AFRM1: EQU $4E
AFRP1:
EQU $50
AFRM2: EQU $52
AFRP2:
EQU $54
AFRR1: EQU $56
ASAM1:
EQU $58
ASAP1:
EQU $5A
ASAM2:
EQU $5C
ASAP2:
EQU $5E
ASAR1:
EQU $60
ASUM1:
EQU $62
ASUP1:
ASUM2:
EQU $64
EQU $66
ASUP2:
EQU $68
ASUR1:
EQU $6A
ADATA:
EQU $80
AGHORA: EQU $90
ADATAC: EQU $A0
ORG $60
;DATOS MEMORIA RAM
FLAGS1: DS 1
;BIT0: FLAG PULSADO. START-STOP,MOD.Y FLECHAS
;BIT1: FLAG CAMBIO DE MODO
;BIT2: FLAG CAMBIO DE CONSIGNA
;BIT3: FLAG CAMB. FRIO-CALOR O ALREVES
;BIT4: FLAG MEDIDA EN DISPLAY
;BIT5: FLAG BLOQUEO CONSIGNA
162
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
;BIT6: FLAG PROGRAM- PROGRAMANDO:1
;BIT7: FLAG PROGRAM ACTIV:1,NO ACTIV:0
FLAGS2: DS 1
;BIT0: FLAG CAMBIO RAPIDO DE HORA
;BIT1: FLAG INTERMITENCIA PROGRAM
;BIT2: FLAG INTERMITENCIA HORA
;BIT3: FLAG INTERMITENCIA DIA
;BIT4: FLAG INTERMITENCIA PERIODO
;BIT5: FLAG MOD PROGRAM PARAMETROS
;BIT6: FLAG TEMPERATURA/HORA EN DISPLAY 0-TEMP.,1-HORA
;BIT7: FLAG GRABACION EN EEPROM
FLAGS3: DS 1
;BIT0: FLAG PARADA
;BIT1: FLAG PARADA PROGRAMADA
;BIT2: FIMIN - FLAG MINUTOS RTC
;BIT3: FAD - FLAG CONVERSIONES A/D
;BIT4: FAJC - FLAG AJUSTE RELOJ
;BIT5: YANEWE - FLAG NUEVO ERROR
;BIT6: NEWR - FLAG NUEVA RECEPCION
;BIT7: FLTR - FLAG TRANSMISION
FLAGS4: DS 1
;BIT0: FLPER - FLAG NUEV PER PROGRAM
;BIT1: FLNEG - FLAG CAMBIO ERROR NEGA.
;BIT2: FAJC - FLAG AJUSTE RELOJ
;BIT3: FLAG PARADA REMOTA
;BIT4: FLAG RESPUEST TARJETA AUXILIAR
;BIT5: FLAG FALLO COM.TARJETA AUXILIAR
;BIT6: FLAG ERROR PRESION NEGATIVO
;BIT7: FLAG CALCULO VELOCIDAD
MODO:
DS 1
;MODO FUNCIONA.
163
MEMORIA
VI. Código fuente
;
00000001 - VENTILACION
;
00000010 - FRIO
;
00000100 - CALOR
;
00001000 - AUTO
CONSIG: DS
2
;CONSIGNA
CMAX:
DS 2
;CONSIGNA MAXIMA
CMIN:
DS 2
;CONSIGNA MINIMA
MANDO:
Capítulo 1. Código de la tarjeta TX98
DS 1
;PALAB. MANDO
;BIT0: MARCHA:0 - PARADO:1
;BITS 1 Y 2:
;
2
1
;
0 0 - NO PETICION
;
0 1 - FRIO
;
1 0 - CALOR
;BITS 3 Y 4: NUMERO DE ETAPAS
;BIT5: RESERVA (SIEMPRE 0)
;BIT6: VENTILADOR
;BIT7: FILTRO SUCIO
RELE:
DS 1
;BIT6: MARCHA/PARO(VENTILADOR)
;BIT5: VALVULA FRIO
;BIT4: VALVULA CALOR
OUTF:
DS 1
;SALIDA VALVULA FRIO
OUTC:
DS 1
;SALIDA VALVULA CALOR
OUT:
OUTA:
DS 1
DS 1
TRET:
DS 2
;TEMP DE RETORNO
TIMP:
DS 2
;TEMP DE IMPULSION
VEL:
DS 1
;SAL VEL. VENTILADOR
AN0:
DS $10
;MED ANALOG RETOR
164
MEMORIA
VI. Código fuente
AN1:
DS $10
ANM:
DS 2
ANMR:
Capítulo 1. Código de la tarjeta TX98
;MED ANALOG IMPUL
DS 2
ANMI:
DS 2
ANAUX:
CHAN:
DS
2
DS
1
;CANAL DE MEDIDA
CONF1: DS 1
;TIPO DE CONTROL
;0 - ANALOGICO 2 TUBOS
;1 - ANALOGICO 4 TUBOS
;2 - RELES 2 TUBOS
;3 - RELES 4 TUBOS
CONF2: DS 1
;0-NO PROGRA.,1-PROGR.
MSEG:
DS 1
DSEG:
DS 1
TINT:
DS 1
;T. DE VALIDACION
NET:
DS 1
;N. DE ETAPAS CALCU.
HISTEP: DS
ZM:
1
;HISTERESIS
DS 1
;ZONA MUERTA
TLIMF: DS 2
DIFET:
;MIN.TEMP.IMPUL.FRIO
DS 1
VCOMP:
TDON:
DS 4
DS 1
TDOFF: DS 1
;TIEMPO MINIMO ON
;TIEMPO MINIMO OFF
BP:
DS 1
;BANDA PROPORCIONAL
TI:
DS 1
;TIEMPO INTEGRACION
TREL:
BPP:
DS 1
;T. MOD.(DECIMAS SEG.)
DS 1;BAND PROP CNTROL PRESION
CONSP:
DS
2
TRONF:
DS 1
TROFF: DS 1
;CONSIGNA PRESION
;TIEMPO RELE ON FRIO
;T. RELE OFF FRIO
165
MEMORIA
VI. Código fuente
TRONC:
DS 1
;T RELE ON CALOR
TROFC:
DS 1
;T RELE OFF CALOR
TCONF:
DS 1
Capítulo 1. Código de la tarjeta TX98
TCOFF: DS 1
TCONC:
DS 1
TCOFC:
DS 1
TVENT:
DS 1
ERROR:
DS 2
RESUL:
DS 3
PRMIN:
DS
1
PRHORA: DS
1
PRDIA:
DS
PRPER:
DS 1
MIN:
;PROXPROGRAM:MIN
;PROX PROGRAM:H
1
;PROX PROGRAM:DIA
;PROX PROGRAM:PERI
DS 1
HORA:
DS 1
DIA:
DS 1
;DIA
PER:
DS 1
;PERIODO
MINP:
HORAP:
DS 1
DS
;MIN PROGRAMACION
1
;HORA PROGRAM
DIAP:
DS 1
;DIA PROGRAMACION
PERP:
DS 1
;PERIODO PROGRAM
DATO:
DS 4
CRINT:
DS
FLPR:
;MED. PARAM DISPLAY
1
DS 1
;CRONO INTERMITEN.
;DIAS PROGRAMADOS
;BIT0: LUNES
;BIT1: MARTES
;BIT2: MIERCOLES
;BIT3: JUEVES
;BIT4: VIERNES
;BIT5: SABADO
166
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
;BIT6: DOMINGO
POSM:
DS 1
CHECK:
BIN:
DS
IBUF:
;DIREC. MEM. EEPROM
CODE:
1
1
DS 1
CODERR: DS 1
DS 1
CRONO:
;CODIGO
DS 1
NDATW:
DS 1
DIG:
DS 1
NDAT:
DS 4
SEGD:
;INDICE BUFFER RECEP.
DIRDAT: DS
DS 2
DECIM:
DS 1
DS 1
DAT1R:
DS 1
DAT2R:
DS 1
TRAP:
DS 1
DAT3R:
DS 1
NAD:
DS 1
DAT4R:
DS 1
MEDD:
GHORA:
VTEST:
DS 2
ERRDIR: DS 1
DS
ERRCRC: DS 1
DS 1
TSAT:
DS 2
AERR:
DS 2
ERRX:
DS 2
ROI:
TRY:
;ERROR
DS 1
TSTOP:
;ERROR ANTERIOR
DS 1
DS 1
TSEND:
DS 1
FLIM:
DS 1
FNOI:
DS 1
TNOI:
DS 1
FCACT:
DS 1
DS 1
MANDFA: DS
TSEG:
DS 1
FMOD:
TANS:
DS 1
MEM:
DS
DS 6
TIMEFC: DS 1
DATOR:
DS 1
NMED:
OUTFA:
DS 1
FFILT:
OUTCA:
DS 1
ERRPRM: DS 1
PRDT:
DIR:
CRC:
DS 1
FNEG:
DS 3
DS 1
DS 2
DS 1
DS 1
DS 1
MODOA:
;DIREC. COM
1
1
DATOFC: DS 1
TOI:
;ERROR DE CRC
MANDOF: DS 1
DS 1
ERR:
OI:
1
;ERROR DE DIRECC.
DS 1
;REGISTROS COMUNICACIONES
;CHEQ REDUND CICLICA
REG1:
167
DS 2 ;MSB:DIREC,LSB:TIP CONTR
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
REG2:
DS 2
;MSB:MODO,LSB:MANDO
REG26: DS 2
;PARADA 1 MARTES
REG3:
DS 2
;LSB:RELES
REG27: DS 2
;MARCHA 2 MARTES
;BIT6: MARCHA/PARO(VENTILADOR)
REG28: DS 2
;PARADA 2 MARTES
;BIT5: VALVULA FRIO
REG29: DS 2
;RESERVA
;BIT4: VALVULA CALOR
REG30: DS 2
;MARCHA 1 MIERCOLE
REG4:
DS 2
REG31: DS 2
;PARADA 1 MIERCOLES
REG5:
DS 2
;MEDIDA DE TEMP RETOR.
REG32: DS 2
;MARCHA 2 MIERCOLE
REG6:
DS 2
;MEDIDA DE TEMP IMPUL
REG33: DS 2
;PARADA 2 MIERCOLES
REG7:
DS 2
;MEDIDA DE TEMP EXT
REG34: DS 2
;RESERVA
REG8:
DS 2
;MEDIDA DE PRESION
REG35: DS 2
;MARCHA 1 JUEVES
REG9:
DS 2
;LSB:APERTU.COMPUER
REG36: DS 2
;PARADA 1 JUEVES
REG10: DS 2 ;SAL VAL-MSB:FRIO LSB:CAL
REG37: DS 2
;MARCHA 2 JUEVES
REG11: DS 2 ;MSB:HISTER,LSB:Z. MUERT
REG38: DS 2
;PARADA 2 JUEVES
REG12: DS 2 ;MSB:LIM.T.IMP.LSB:MARG
BLOQ.CONS.
REG39: DS 2
;RESERVA
REG40: DS 2
;MARCHA 1 VIERNES
REG41: DS 2
;PARADA 1 VIERNES
;CONSIGNA
REG13: DS 2
;MSB:DIF.ET,LSB:RESR
REG14: DS 2
;CONSIGNA PRESION
REG42: DS 2
;MARCHA 2 VIERNES
REG15: DS 2 ;MSB:T MINON,LSB:T
MINOFF
REG43: DS 2
;PARADA 2 VIERNES
REG16: DS 2
;MSB:RESE,LSB:MOD.VALV.
REG44: DS 2
;RESERVA
REG17: DS 2 ;MSB:B PROP,LSB:T INTEG.
REG45: DS 2
;MARCHA 1 SABADO
REG18: DS 2
P.CONT.PR.
REG46: DS 2
;PARADA 1 SABADO
REG47: DS 2
;MARCHA 2 SABADO
REG48: DS 2
;PARADA 2 SABADO
REG49: DS
;RESERVA
;MSB:T.MOD.REL,LSB:B
REG19: DS 2
;MSB:VERSION
;REG PROGRAM:MSB-HH (H),LSB-MM (MIN)
REG20: DS 2
;MARCHA 1 LUNES
REG21: DS 2
;PARADA 1 LUNES
REG22: DS 2
;MARCHA 2 LUNES
REG23: DS 2
;PARADA 2 LUNES
REG24: DS
;RESERVA
2
REG25: DS 2
;MARCHA 1 MARTES
2
REG50: DS 2
;MARCHA 1 DOMINGO
REG51: DS 2
;PARADA 1 DOMINGO
REG52: DS 2
;MARCHA 2 DOMINGO
REG53: DS 2
;PARADA 2 DOMINGO
REG54: DS 2
;RESERVA
;VECTORES INTERRUPCION
168
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
ORG $FFFE
LDHX #0
DW START ;RESET
MOV #$66,CONFIG2 ;INICIALIZ REG
ORG $FFDA
MOV #$42,CONFIG1
DW RTC
;RELOJ TIEMPO REAL
MOV #1,PCTL
ORG $FFDC
MOV #$80,PBWCR
DW INTAD ;CONVERTIDOR A/D
MOV #1,PMSH
ORG $FFE2
MOV #$E9,PMSL
DW RECEP
;RECEPCION SERIE
MOV #$D1,PMRS
ORG $FFF0
MOV #1,PMDS
DW TIMER ;INTERRUP TIMER
MOV #$21,PCTL
ORG $FFF8
NOP
DW SLEEP ;INTERR LOW VOLTAGE
MOV #$31,PCTL ;QUITAR EMULACI
;PROGRAMA
MOV #2,INTSCR
ORG $C000
START:
NSTART: MOV #$F2,DDRA
LDHX #$260
MOV #$3D,DDRB
TXS
MOV #$FF,DDRC
MOV #0,DDRD
BCLR 4,PTA
MOV #$40,SCC1
BITS,NO PARIRIDAD
;SAL DESACTIVADAS
;PER.COM.,8
MOV #$B1,SCBR
BCLR 5,PTA
BCLR 6,PTA
BCLR 1,PTA
MOV #$44,T1SC
MOV #0,T1MODH
;9600 BAUDIOS
BCLR 3,SCC2
;NO PERMI TRANSM
BSET 2,SCC2
;PERMI RECEPCION
BSET 5,SCC2
;PERMI INTERR RECEP
BCLR 2,PTB
;PERMI RECEPCION
LDA #0
MOV #$7D,T1MODL
STA FLBPR
MOV #$64,ADSCR
LDA #0
MOV #$74,ADCLK
STA LVISR
MOV #0,RTCCR1
MOV #$B0,POSM
MOV #0,RTCCR2
JSR READ
MOV #$11,LCDCLK ;EMUL:15*
CMP #$FF
MOV #$8F,LCDCR
169
;MEMORIA VIRGEN?
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BNE YAPROG ;NO
LDA #0
MOV #$B1,POSM
JSR IPROG
JSR READ
JSR IPROG
CMP #$FF
JSR PROG
BNE YAPROG
MOV #AMOM1,POSM
MOV #$B2,POSM
LDX #0
JSR READ
MPRGD2: LDA #$AA
CMP #$FF
JSR IPROG
BNE YAPROG
INCX
MOV #0,POSM;SI,GRABA VAL X DEFEC
CPX #$46
LDX #0
BNE MPRGD2
MPRGD1: LDA DEFVAL,X
LDX #0
JSR IPROG
MOV #ADATA,POSM
INCX
MPRGD3: LDA DEFDAT,X
CPX #$15
JSR IPROG
BNE MPRGD1
MOV #AGHORA,POSM
INCX
MOV #0,NAD
CPX #$C
MOV #0,NET
BNE MPRGD3
MOV #0,CRONO
MOV #$B0,POSM
MOV #0,GHORA
LDA #0
MOV #0,TSAT
JSR IPROG
MOV #0,CHAN
JSR IPROG
MOV #0,OUT
JSR PROG
MOV #0,OUTA
YAPROG: MOV #0,RELE ;INICIA VAR
MOV #0,AERR
MOV #0,MSEG
MOV #0,AERR+1
MOV #0,DSEG
MOV #0,ROI
MOV #0,MANDO
MOV #0,TCONF
MOV #0,CRINT
MOV #0,TRONF
170
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV #0,VEL
STA FNOI
MOV #$FF,TCOFF
STA TNOI
MOV #$FF,TROFF
STA FFILT
MOV #0,TCONC
STA MODOA
MOV #0,TRONC
STA $5C
MOV #$FF,TCOFC
STA $5D
MOV #$FF,TROFC
STA $5E
MOV #$14,TVENT
STA $5F
MOV #0,OUTFA
JSR INDAC
MOV #0,OUTCA
BCLR 6,PTC
MOV #0,TOI
JSR DACLK
LDA #3
JSR DACLK
STA TIMEFC
LDA #0
LDA #0
JSR SDDAC
STA MANDOF
JSR INDAC
STA TSTOP
BSET 6,PTC
STA FLIM
JSR DACLK
BCLR 6,PTC
BNE WAITI
JSR DACLK
NOED:
LDA #0
MOV #ADATA,POSM
LDX #0
JSR SDDAC
MREADI: JSR READ ;LEE VAL D EEPROM
BSET 7,PTC
STA FLAGS1,X
CLI
INC POSM
;ENABLE INTERRUPCIONES
LDA CHECK
INCX
CBEQA #$AA,NOED
CPX #$C
MOV #$AA,CHECK
BNE MREADI
FINPRG: MOV #2,TINT
LDA MODO
JSR DELON ;ENCENDER DISPLAY
WAITI:
AND #$F
JSR RWDOG ;WATCH-DOG
BNE MOKI
LDA TINT
MOV #8,MODO
171
MEMORIA
VI. Código fuente
MOKI:
Capítulo 1. Código de la tarjeta TX98
MOV #0,MANDO
LDA VERS
LDA FLAGS1
STA REG19
AND #$E0
MOV #ADIR,POSM
STA FLAGS1
JSR READ
MOV #0,FLAGS2
STA DIR
LDA FLAGS3
STA REG1
AND #$B
MOV #ACONF1,POSM
ORA #8
JSR READ
STA FLAGS3
STA CONF1
BSET 7,FLAGS4
STA REG1+1
JSR RPAR
JSR IREAD
MOV #AP03,POSM
STA CONF2
JSR READ
LDA DOWR
STA REG12+1
BNE NTHORA
LDA #0
LDA HRR
STA REG13+1
BNE NTHORA
STA REG16
LDA MINR
BNE NTHORA
LDA #$FF
MOV #AGHORA,POSM
JSR PROG
JSR READ
MOV #0,VTEST
STA DOWR
BSET 4,LCDDAT+3
JSR IREAD
BSET 4,LCDDAT+4
STA HRR
BSET 0,LCDDAT+5
JSR IREAD
BSET 1,LCDDAT+5
STA MINR
BSET 0,VTEST
NTHORA: BRCLR 5,PTD,ATEST ;TEST?
WFPUP:
JMP NATEST ;NO
ATEST:
JSR RWDOG
BRCLR 5,PTD,WFPUP
JSR RWDOG ;SI,TEST
MOV #$14,TSAT
JSR DELD
WTPULS: JSR RWDOG
MOV #$F0,POSM
LDA TSAT
172
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BNE GOONAT
JMP PTCLK ;SI
JMP NATEST
NPTCLK: JMP WFTP
GOONAT: BRSET 6,PTD,NPTDWN
PTDOWN: LDX #$40
;PULSAD FLECHA ABAJO?
MPTDWN: BRSET 6,PTD,NPT1 ;CONF PUL
BRA PTDOWN ;SI
JSR DELB
NPTDWN: BRSET 0,PTD,NPTV ;PULS
ON/OFF?
BRA YAPTD
NPT1:
BRSET 1,PTD,NPTMOD ;PULS MOD?
YAPTD:
JMP PTMODO ;SI
BSET 1,VTEST
NPTSEL: BRSET 3,PTD,NPTPRG ;PULS PRG?
JSR DELAY
;SI
WTPD:
NPTPRG: BRSET 7,PTD,NPTCOP ;PULS
COPY?
JMP WTPULS
PTVENT: LDX #$40
NPTCOP: BRSET 4,PTD,NPTCLK ;PULS CLK?
MPTV:
;RETARDO REBOTES
BRSET 0,PTD,NPT2
PTMODO: LDX #$40
JMP WTPULS
MPTM:
JSR DELD
JSR DELB
MOV #$EF,LCDDAT+3
BRA YAPTM
NPT3:
MOV #$C,LCDDAT+5
YAPTM:
JMP WTPULS
JSR DELD
BSET 2,VTEST
MOV #$14,TSAT
JSR DELAY
MOV #$EF,LCDDAT+1
JSR RWDOG
MOV #$EF,LCDDAT+2
173
;CONF PULS
;RETARDO REBOTES
DBNZX MPTM
MOV #$EF,LCDDAT+4
;PULS MOD
BRSET 1,PTD,NPT3
MOV #$14,TSAT
WTPV:
;CONF PULS
JMP WTPULS
BRA YAPTV
YAPTV:
;PULS ON/OFF
BRCLR 0,PTD,WTPV
DBNZX MPTV
NPT2:
JSR RWDOG
BRCLR 6,PTD,WTPD
JMP PTCOPY ;SI
JSR DELB
JSR DELD
MOV #$E0,LCDDAT+7
;SI
JMP PTPRG
BRA WTPULS
MOV #$14,TSAT
NPTMOD: BRSET 2,PTD,NPTSEL ;PULS SEL?
JMP PTSEL
;RETARDO REBOTES
DBNZX MPTDWN
JMP PTVENT ;SI
NPTV:
;PULS FLEC ABAJO
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV #$F0,LCDDAT+5
BSET 4,LCDDAT+1
MOV #$FE,LCDDAT+6
BSET 4,LCDDAT+2
MOV #$E,LCDDAT+7
BSET 0,LCDDAT+6
MOV #$C0,LCDDAT+9
BSET 0,LCDDAT+7
BSET 3,VTEST
BSET 0,LCDDAT+8
JSR DELAY
BSET 5,LCDDAT+9
WTPM:
JSR RWDOG
BSET 4,VTEST
BRCLR 1,PTD,WTPM
JSR DELAY
JMP WTPULS
WTPS:
PTSEL:
LDX #$40
MPTS:
BRSET 2,PTD,NPT4
JSR DELB
;PULSADOR SEL
BRCLR 2,PTD,WTPS
;CONF PULS
JMP WTPULS
;RETARDO REBOTES
DBNZX MPTS
BRA YAPTS
NPT4:
YAPTS:
JSR RWDOG
PTPRG:
LDX #$40
MPTP:
BRSET 3,PTD,NPT5
JSR DELB
JMP WTPULS
;PULSADOR PRG
;RETARDO REBOTES
DBNZX MPTP
JSR DELD
BRA YAPTP
MOV #$14,TSAT
NPT5:
BSET 4,LCDDAT
YAPTP:
MOV #$14,TSAT
JMP WTPULS
JSR DELD
BRA YAPTC
MOV #$E0,LCDDAT
NPT6:
MOV #$17,LCDDAT+9
YAPTC:
JMP WTPULS
JSR DELD
BSET 5,VTEST
MOV #$14,TSAT
JSR DELAY
MOV #$EE,LCDDAT+8
WTPP:
JSR RWDOG
BSET 6,VTEST
BRCLR 3,PTD,WTPP
JSR DELAY
JMP WTPULS
PTCOPY: LDX #$40
MPTC:
WTPC:
;PULSADOR COPY
BRSET 7,PTD,NPT6
JSR DELB
;CONF PULS
JSR RWDOG
BRCLR 7,PTD,WTPC
;CONF PULS
JMP WTPULS
;RETARDO REBOTES
DBNZX MPTC
174
PTCLK:
LDX #$40
;PULSADOR CLK
MPTCL:
BRSET 4,PTD,NPT7
;CONF PULS
MEMORIA
VI. Código fuente
JSR DELB
Capítulo 1. Código de la tarjeta TX98
;RETARDO REBOTES
JSR READ
DBNZX MPTCL
CMP #$55
BRA YAPTCL
BNE ERRORT
NPT7:
JMP WTPULS
LDA #$AA
YAPTCL: JSR DELD
JSR PROG
MOV #$14,TSAT
JSR READ
BSET 4,LCDDAT+8
CMP #$AA
BSET 7,VTEST
BEQ NERR
JSR DELAY
WTPCL:
ERRORT: JSR RWDOG
JSR RWDOG
JSR DELD
BRCLR 4,PTD,WTPCL
WFTP:
BRA ERRORT
LDA VTEST
NERR:
JSR RWDOG
AND #$F
MOV #2,TINT
CBEQA #$F,OKPULS
JSR DELON ;ENCENDER DISPLAY
JMP WTPULS
WFDOK:
OKPULS: MOV #$E0,POSM
JSR RWDOG
LDA TINT
LDA #$55
BNE WFDOK
JSR PROG
JSR DELD
MOV #$64,ADSCR
JSR RWDOG
MOV #0,CONF2
LDA NAD
MOV #0,FLAGS1
CMP #8
MOV #0,FLAGS2
BNE WTEXT
MOV #0,FLAGS3
LDX #$10
MOV #8,MODO
JSR MEDIA
MOV #0,CONSIG
LDA ANM+1
MOV #$DC,CONSIG+1
CMP #$FF
MOV #$F0,POSM
BNE SIREMT
LDA #0
LDA ANM
JSR PROG
CMP #3
WTEXT:
BRSET 7,FLAGS3,NOREMT
BNE SIREMT
175
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BSET 7,FLAGS3
BSET 7,FLAGS3
NOREMT: MOV #$64,ADSCR
WADIT:
WTINT:
JSR RWDOG
LDA PTA
AND #$8F
LDA NAD
ORA #$40
CMP #8
STA PTA
BNE WADIT
JSR DELAY
LDX #0
JSR DELAY
JSR MEDIA
LDA PTA
SIREMT: JSR GTRET
AND #$8F
LDA TRET+1
ORA #$30
SUB #$14
STA PTA
STA MEDD+1
JSR DELAY
LDA TRET
JSR DELAY
SBC #0
MOV #$14,TSAT
STA MEDD
JMP WTEXT
LDHX #0
NATEST: JSR DELD
;APAGAR DISPLAY
JSR DISPL
MOV #$F0,POSM
BRSET 0,PTD,WTINT
JSR READ
CMP #0
BEQ COMZO ;NO
BEQ TESTOK
JSR WPER ;SI,VR PERI ACTU Y PROX
BSET 6,LCDDAT+1
COMZO:
CLI
BSET 6,LCDDAT+2
MOV #$11,LCDCLK ;EMULACION:15
BSET 2,LCDDAT+6
MOV #$8F,LCDCR
BSET 2,LCDDAT+7
MOV #$74,ADCLK
MOV #2,TINT
LDA CONF2
WNOKT:
JSR RWDOG
BEQ NORTC
LDA TINT
MOV #$80,RTCCR1
BNE WNOKT
MOV #$10,RTCCR2
TESTOK: LDA CONF2
CMP #0
NORTC:
;TERMOST PROGRAM?
LDA CONSIG
CMP #2
176
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BCS COK
COK:
CMAXOK: LDA CMIN
MOV #ADATAC,POSM
CMP #2
JSR READ
BCC CHCMIN
STA MODO
LDA CMIN+1
JSR IREAD
SUB #$96
STA CONSIG
LDA CMIN
JSR IREAD
SBC #0
STA CONSIG+1
BCC CMINOK
LDA CMAX
;COMPROB CONS
CHCMIN: MOV #0,CMIN
CMP #2
MOV #$96,CMIN+1
BCC CHCMAX
CMINOK: LDA CONSIG+1
LDA CMAX+1
SUB CMAX+1
SUB #$2C
LDA CONSIG
LDA CMAX
SBC CMAX
SBC #1
BCS NOECMX
BCS CMAXOK
LDA CONSIG+1
CHCMAX: MOV #1,CMAX
CMP CMAX+1
MOV #$2C,CMAX+1
BNE ERCONS
LDA CONSIG
LDA CONSIG
CMP CMAX
CMP CMIN
BNE ERCONS
BEQ NOECMN
NOECMX: LDA CMIN+1
ERCONS: BRCLR 5,FLAGS1,CHCCON
SUB CONSIG+1
LDA CMIN+1
LDA CMIN
ADD #$14
SBC CONSIG
STA CONSIG+1
BCS NOECMN
LDA CMIN
LDA CONSIG+1
ADC #0
CMP CMIN+1
STA CONSIG
BNE ERCONS
BRA NOECMN
177
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
CHCCON: MOV #0,CONSIG
MOV #ADATA+4,POSM
MOV #$DC,CONSIG+1
JSR READ
NOECMN: LDA CONF1
STA MODO
CBEQA #1,CMODOA
AND #$F
CBEQA #3,CMODOA
BNE MOK
LDA MODO
MOV #8,MODO
AND #7
MOK:
LDA MODO
BNE MOK
STA REG2
MOV #ADATA+4,POSM
JSR DISPL
JSR READ
JSR VPULS
STA MODO
JSR TRANS
AND #7
LDX #$40
BNE MOK
MSTOP:
;SAL A DISPLAY
;MIRAR PULSADORES
BRCLR 2,PTA,NSTOP
MOV #1,MODO
JSR DELB
BRA MOK
DBNZX MSTOP
CMODOA: LDA MODO
BRSET 3,FLAGS4,YASTOP
AND #$F
BSET 3,FLAGS4
BNE MOK
MOV #APARO,POSM
LDA FLAGS3
AND #1
MOV #APARO,POSM
JSR PROG
JSR READ
BRSET 0,FLAGS3,YASTOP
AND #1
BSET 0,FLAGS3
ORA FLAGS3
BRA YASTOP
STA FLAGS3
NSTOP:
BRCLR 3,FLAGS4,YASTOP
BCLR 3,FLAGS4
LDA #$A
YASTOP: LDA NAD
STA TSTOP
CMP #8
LDA FLAGS3
BEQ YAMED
AND #$FE
JMP COMZO
STA FLAGS3
YAMED:
178
LDX #0
; MEDIA TEMP.RETO
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
JSR MEDIA
JSR MEDIA
JSR GTRET ;TOMA TEMP SEG TABLA
LDHX ANM
LDA TRET+1
LDA TABLAC,X ;TOM TEMP TABLA
SUB #5
STA TIMP
STA TRET+1 ;RESTAR MED GRADO
INCX
LDA TRET
LDA TABLAC,X
SBC #0
STA TIMP+1
STA TRET
LDA TIMP+1
LDHX #0
SUB #5
LDA TRET
STA TIMP+1 ;RESTAR MED GRADO
CBEQA #3,AVSTOP
LDA TIMP
CMP #$FF
SBC #0
BNE OKS
STA TIMP
LDA TRET+1
LDHX #0
CMP #$80
BRSET 4,FLAGS1,DTIMP
BCC OKS
MOV TRET,MEDD
AVSTOP: BSET 0,FLAGS3 ;ROTA SON RETO
MOV TRET+1,MEDD+1
OKS:
BRA DTRET
LDX #$10
DTIMP:
; MEDIA TEMP.IMPUL
LDA NMED
BNE NDTIMP
NDTEXT: CMP #2
MOV TIMP,MEDD
BNE NDPRES
MOV TIMP+1,MEDD+1
LDA REG8
BRA DTRET
STA MEDD
NDTIMP: CMP #1
LDA REG8+1
BNE NDTEXT
STA MEDD+1
LDA REG7
BRA DTRET
STA MEDD
NDPRES: CMP #3
LDA REG7+1
BNE NDAP
STA MEDD+1
LDA REG9+1
BRA DTRET
STA PRDT+2
179
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV #0,PRDT+1
LDA TRET
MOV #$FF,BIN
STA REG5
JSR MULDIV
LDA TRET+1
MOV #0,MEDD
STA REG5+1
MOV RESUL+2,MEDD+1
LDA TIMP
BRA DTRET
STA REG6
NDAP:
MOV VEL,PRDT+2
LDA TIMP+1
MOV #0,PRDT+1
STA REG6+1
MOV #$FF,BIN
LDA OUTF
JSR MULDIV
STA REG10
MOV #0,MEDD
LDA OUTC
MOV RESUL+2,MEDD+1
STA REG10+1
DTRET: LDA RELE
BRCLR 0,FLAGS3,MON
STA REG3+1
BSET 0,MANDO
LDA CONSIG
BCLR 6,MANDO
STA REG4
BRA MOFF
LDA CONSIG+1
MON:
STA REG4+1
MOFF:
BCLR 0,MANDO
BSET 6,MANDO
BCLR 5,MANDO
BRCLR 3,MODO,NMAUT
BSET 2,MANDO
JMP MAUTO
MOV CONSIG,VCOMP
NMAUT:
;MODO AUTO
BRSET 2,MODO,MCAL ;CALOR
MOV CONSIG+1,VCOMP+1
BRSET 1,MODO,MFRIO ;MODO FRIO
LDA TRET+1
LDA MANDO
SUB VCOMP+1
;MOD VENTI
AND #$41
LDA TRET
STA MANDO
SBC VCOMP
JMP FINET
BCS WETC
MCAL:
LDA MANDO
JMP NOET
AND #$41
WETC:
STA MANDO
LDA VCOMP+1
SUB HISTEP
180
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA VCOMP+1
LDA TRET+1
LDA VCOMP
SUB VCOMP+1
SBC #0
LDA TRET
STA VCOMP
SBC VCOMP
LDA TRET+1
BCC WET
SUB VCOMP+1
JMP NOET
LDA TRET
WET:
LDA VCOMP+1
SBC VCOMP
ADD HISTEP
BCS ET1
STA VCOMP+1
JMP FINET
LDA VCOMP
MFRIO:
MOV CONSIG,VCOMP
ADC #0
MOV CONSIG+1,VCOMP+1
AUTFR:
STA VCOMP
BRCLR 2,MANDO,NOIET
LDA TRET+1
BCLR 3,MANDO
NOIET:
SUB VCOMP+1
BCLR 2,MANDO
LDA TRET
BSET 1,MANDO
SBC VCOMP
MOV VCOMP,VCOMP+2
BCC WET1
MOV VCOMP+1,VCOMP+3
LDA MANDO
AND #$18
BEQ NOET
SBC VCOMP
JMP ET1
BCS ET1
WET1:
LDA VCOMP+3
LDA VCOMP+1
ADD DIFET
ADD HISTEP
STA VCOMP+1
STA VCOMP+1
LDA VCOMP+2
LDA VCOMP
ADC #0
ADC #0
STA VCOMP
STA VCOMP
LDA TRET+1
LDA TRET+1
SUB VCOMP+1
SUB VCOMP+1
LDA TRET
LDA TRET
181
MEMORIA
VI. Código fuente
SBC VCOMP
ADD CONSIG+1
BCC ET2
STA VCOMP+1
LDA MANDO
LDA CONSIG
AND #$18
ADC #0
BEQ ET1
STA VCOMP
BRA FINET
LDA TRET+1
NOET:
ET1:
Capítulo 1. Código de la tarjeta TX98
BCLR 3,MANDO
SUB VCOMP+1
BCLR 4,MANDO
LDA TRET
BRA FINET
SBC VCOMP
BSET 3,MANDO
BCC WAUTFR
BCLR 4,MANDO
JMP MCAL
BRA FINET
ET2:
WAUTFR: JMP AUTFR
BCLR 3,MANDO
FINET:
BSET 4,MANDO
NOCV:
BRA FINET
MAUTO:
BRCLR 0,FLAGS3,CVEL
MOV #0,VEL
BSET 7,FLAGS4
LDA #0
JMP YAVEL
LDA ZM
CVEL:
ASRA
BRCLR 7,FLAGS4,DELTAV
BCLR 7,FLAGS4
LDA CONSP+1
SUB REG8+1
RORA
STA ERROR+1
STA BIN+1
STA PRDT+2
LDA BIN
LDA CONSP
LSRA
SBC REG8
LDA BIN+1
STA ERROR
RORA
STA PRDT+1
STA VEL
LDA CONSP
BRA YAVEL
LSRA
DELTAV: LDA CONSP+1
STA BIN
SUB REG8+1
LDA CONSP+1
STA PRDT+2
182
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
PSHA
COM PRDT+1
LDA CONSP
COM PRDT+2
SBC REG8
LDA PRDT+2
STA PRDT+1
ADD #1
PSHA
STA PRDT+2
LDA PRDT+2
LDA PRDT+1
SUB ERROR+1
ADC #0
STA PRDT+2
STA PRDT+1
LDA PRDT+1
EPOS:
MOV BPP,BIN
SBC ERROR
JSR MULDIV
STA PRDT+1
LDA RESUL
PULA
BNE MAXRES
STA ERROR
LDA RESUL+1
PULA
BEQ RESOK
STA ERROR+1
MAXRES: MOV #$FF,RESUL+2
BCLR 6,FLAGS4
RESOK:
BRSET 6,FLAGS4,RESVEL
BRCLR 7,PRDT+1,EPOS
LDA VEL
BSET 6,FLAGS4
ADD RESUL+2
STA VEL
BCC YAVEL
BNE NASKFC
MOV #$FF,VEL
LDA #3
BRA YAVEL
STA TIMEFC
RESVEL: LDA VEL
JSR ASKFC
SUB RESUL+2
NASKFC: LDA MANDO
STA VEL
STA REG2+1
BCC YAVEL
BRCLR 0,FLAGS3,CLON
MOV #0,VEL
MOV #0,VEL
YAVEL:
LDA TINT
BSET 7,FLAGS4
BNE NASKFC
JVENT:
JMP VENTIL ;PARADO
LDA TIMEFC
CLON:
BRSET 5,FLAGS3,NEWE
183
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRA JVENT
NEWE:
LDA TRET+1 ;NO
LDA MANDO
SUB CONSIG+1
AND #$18
STA ERR+1
BNE NOIFOI
LDA TRET
LDA #$FF
SBC CONSIG
STA FNOI
STA ERR
NOIFOI: BCLR 5,FLAGS3 ;NUEVO ERROR
BRCLR 7,ERR,SIFR
BRSET 0,MODO,JVENT
BRA SILIMF
BRCLR 3,MODO,NAUTO
FLIMF: LDA #$FF
JMP AUTO
NAUTO:
CFRIO:
;HALLAR ERROR
STA FLIM
BRSET 2,MODO,CCAL
SILIMF: MOV #0,OUTF ;TEMP RETO<CON
MOV #0,OUTC ;MODO FRIO
MOV #0,OUT ;*****************
LDA TIMP+1
MOV #0,OUTA ;*************
SUB TLIMF+1
MOV #0,OUTC
LDA TIMP
MOV #0,OI
SBC TLIMF ;TEMP. IMPUL < LIM?
BRA VENTIL
BCS FLIMF ;SI
SIFR: JSR CALPI
;TEMP.MAYOR:CALCULAR SALIDA
LDA #0
MOV OUT,OUTF
STA FLIM
BRA VENTIL
CCAL:
MOV #0,OUTC ;TEMP RETOR>CONS
MOV #0,OUTF ;MODO CALOR
MOV #0,OUT
LDA #0
MOV #0,OUTA
STA FLIM
MOV #0,OI
LDA CONSIG+1
BRA VENTIL
SUB TRET+1
SICAL:
JSR CALPI
;TEMP.<:CALC SAL
STA ERR+1
BSET 3,MANDO
LDA CONSIG
MOV OUT,OUTC
SBC TRET
BRA VENTIL
STA ERR
;HALLAR ERROR
AUTO:
BRCLR 7,ERR,SICAL
LDA TRET+1 ;MODO AUTO
SUB CONSIG+1
184
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
LDA TRET
SUB TLIMF+1
SBC CONSIG
LDA TIMP
BCS JCCAL ;TEMP.RETOR < CONSIG
SBC TLIMF
LDA MODOA
BCC SIOUTF
BNE JCFR
MOV #0,OUTF
BSET 3,FLAGS1
MOV #0,OUT
LDA #$FF
SIOUTF: LDA CONF2
STA MODOA
JCFR:
BEQ CTOV
JMP CFRIO ;TEMP.RETO>CONSIG
JCCAL:
;CONTR PROGRAM?
;NO
BRCLR 7,FLAGS1,CTOV ;PROGR ACTIV?
LDA MODOA
BRCLR 0,FLAGS4,NONEWP
;SI
BEQ CCAL
BCLR 0,FLAGS4
BSET 3,FLAGS1
JSR NEXTPR ;MIRA PROX PROGRAM
LDA #0
NONEWP: LDA PER
STA MODOA
CBEQA #1,ARRPR ;PERIOD 1 MARCHA
BRA CCAL
CBEQA #3,ARRPR ;PERIOD 2 MARCHA
VENTIL: JSR DISPL
CBEQA #2,STOPPR
;PERIOD 1 PARA
JSR VPULS
CBEQA #4,STOPPR
;PERIOD 2 PARA
JSR TRANS
BRA CTOV
LDA TIMP+1
ARRPR:
BCLR 0,FLAGS3
BRA WOUTC
BCLR 1,FLAGS3
WOUTFA: LDA OUTFA
BRA CTOV
BNE CHANGE
STOPPR: BSET 0,FLAGS3
WOUTC:
BSET 1,FLAGS3
CTOV:
LDA OUTC
BEQ WOUTCA
BRCLR 0,FLAGS1,OUTPUT
LDA OUTCA
JMP COMZO
BEQ CHANGE
OUTPUT: LDA OUTF
BRA NCHG
BEQ WOUTFA
WOUTCA: LDA OUTCA
LDA OUTFA
BEQ NCHG
BEQ CHANGE
CHANGE: NOP
185
MEMORIA
VI. Código fuente
;
Capítulo 1. Código de la tarjeta TX98
MOV #0,OUTA
NCHG:
JMP ORELE ;SALIDAS POR RELE
MOV OUTF,OUTFA
NORELE: BRCLR 0,FLAGS3,YAODA
MOV OUTC,OUTCA
MOV #0,OUTF
BRCLR 0,FLAGS3,SIVENT
MOV #0,OUTC
WVENT:
MOV #0,RELE
YAODA:
D/A
BRA NOVENT
JSR DACLK
BRCLR 0,MODO,NOMV
JSR DACLK
NOVENT: MOV #0,OUTF ;MOD VENTI
LDA CONF1
MOV #0,OUTC
BNE DUALO
MOV #0,OUT
BRSET 2,MODO,DUALO
BCLR 5,RELE
LDA OUTF
BCLR 4,RELE
BRA NDUAL
LDA TSTOP
BEQ SIOUT
JMP WGRAB
SIOUT:
;SAL A CONVER
BCLR 6,PTC
SIVENT: BSET 6,RELE
NOMV:
JSR INDAC
DUALO:
LDA OUTC
NDUAL:
JSR SDDAC
;SAL DE CALOR
JSR INDAC
LDA CONF1
BSET 6,PTC
CMP #2
JSR DACLK
BCS NORELE
BCLR 6,PTC
JSR DACLK
LDA OUTF
ORELE:
;SALIDA DE FRIO
LDA MANDO
AND #$18
JSR SDDAC
BEQ NOORL
BSET 7,PTC
BRCLR 0,FLAGS3,YAORL
LDA PTA
NOORL:
AND #$8F
MOV #0,OUTF
MOV #0,OUTC
ORA RELE
YAORL:
BRCLR 3,MODO,NOZM
AND #$FD
LDA OUTF
STA PTA
BEQ ZMC
JMP WGRAB
LDA ZM
186
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
LSRA
ADC TRET
ADD CONSIG+1
STA BIN
STA BIN+1
LDA CONSIG+1
LDA #0
SUB BIN+1
ADC CONSIG
LDA CONSIG
STA BIN
SBC BIN
LDA TRET+1
BCC NOZM
SUB BIN+1
MOV #0,OUTC
LDA TRET
NOZM:
LDA FMOD
SBC BIN
BEQ SIMOD
BCC NOZM
LDA OUTF
MOV #0,OUTF
BNE FNMOD
BRA NOZM
MOV #0,TRONF
ZMC:
LDA OUTC
MOV #$FF,TROFF
BEQ NOZM
BCLR 5,RELE
LDA ZM
BRA WNMODC
LSRA
FNMOD:
LDA #$FF
ADD TRET+1
STA TRONF
STA BIN+1
STA TROFC
LDA #0
LDA #0
STA TROFF
BRA YANMOD
STA TRONC
CNMOD:
MOV #$FF,TRONC
BSET 5,RELE
MOV #0,TROFC
BCLR 4,RELE
BSET 4,RELE
BRA YANMOD
BRA YANMOD
WNMODC: LDA OUTC
SIMOD:
LDA OUTF
BNE CNMOD
TAX
MOV #0,TRONC
LDA TREL
MOV #$FF,TROFC
MUL
BCLR 4,RELE
PSHA
187
;SALIDAS POR RELE
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
TXA
TXA
PSHA
PSHA
PULH
PULH
LDA #$FF
LDA #$FF
TAX
TAX
PULA
PULA
DIV
DIV
STA TCONF ;TIEMPO ON FRIO
STA TCONC
LDA TREL
LDA TREL
SUB TCONF
SUB TCONC
STA TCOFF
;TIEMPO OFF FRIO
;TIEMPO ON CALOR
STA TCOFC ;T OFF CALOR
LDA OUTC
YANMOD: LDHX #0
TAX
LDA CONF1
LDA TREL
CMP #2
MUL
BNE DUALR
PSHA
BRSET 2,MODO,CALR
SICALR: BSET 5,RELE
BRSET 5,RELE,SIFRR
DUALR:
LDA PTA
BCLR 4,RELE
AND #$8F
BRA DUALR
ORA RELE
SIFRR:
BSET 4,RELE
AND #$FD
BRA DUALR
CALR:
STA PTA
BRSET 4,RELE,SICALR
WGRAB:
BCLR 5,RELE
BRSET 7,FLAGS2,GRBM
JMP COMZO
BRA DUALR
GRBM:
BCLR 7,FLAGS2
JSR STORE ;GRABA DATO EEPROM
LDA AN0,X
JMP COMZO
ADC AN0+2,X
MEDIA:
LDA AN0+1,X ; MED TEMP
STA ANM
ADD AN0+3,X
LDA AN0+5,X
STA ANM+1
ADD ANM+1
188
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA ANM+1
LDA AN0+9,X
LDA AN0+4,X
ADD ANM+1
ADC ANM
STA ANM+1
STA ANM
LDA AN0+8,X
LDA AN0+7,X
ADC ANM
ADD ANM+1
STA ANM
STA ANM+1
LDA AN0+$B,X
LDA AN0+6,X
ADD ANM+1
ADC ANM
STA ANM+1
STA ANM
LDA AN0+$A,X
ADC ANM
ROR ANM+1
STA ANM
ASR ANM
LDA AN0+$D,X
ROR ANM+1
ADD ANM+1
ASR ANM
STA ANM+1
ROR ANM+1
LDA AN0+$C,X
ASL ANM+1
ADC ANM
ROL ANM
STA ANM
RTS
LDA AN0+$F,X
GTRET:
LDHX ANM
ADD ANM+1
LDA TABLAC,X
STA ANM+1
STA TRET
LDA AN0+$E,X
INCX
ADC ANM
LDA TABLAC,X
STA ANM
STA TRET+1
ASR ANM
RTS
CALPI:
LDA ERR+1
;CALCULO SAL PI
STA ERRX
SUB AERR+1
MOV ERR,AERR
STA ERRX+1
MOV ERR+1,AERR+1
LDA ERR
LDA OUT
SBC AERR
BNE NIP
189
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
JMP INPROP
NIP:
BEQ WINT
BRCLR 3,FLAGS1,SCALC
JMP INPROP
JMP INPROP
SCALC:
WINT:
LDA FNOI
LDA ERR
AND #$F0
BNE NOINT
BEQ SIINT
LDA TNOI
NOINT:
MOV #0,OI
BNE NOINT
LDA FNOI
LDA TI
BEQ YAINT
BEQ NOINT
;TI=0,NO INTEGR
LDA #0
LDA TOI
STA FNOI
LDA #5
TAX
STA TNOI
LDA ERR+1
BRA YAINT
DIV
SIINT:
ASL ERR+1
STA OI
ROL ERR
PSHH
ASL ERR+1
PULA
ROL ERR
STA ERR
ASL ERR+1
LDHX #0
ROL ERR
BRCLR 7,ERR,NOIOI
ASL ERR+1
INC OI
ROL ERR
NOIOI:
LDA OI
LDA ERR
AND #$F
CMP TI
ADD ROI
BCS SIDIV
STA ROI
MOV #$F,OI
LSR OI
BRA YAINT
LSR OI
SIDIV:
LDA ERR
LSR OI
PSHA
LSR OI
PULH
BRCLR 4,ROI,YAINT
LDA TI
INC OI
190
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
LDA ROI
LDA ERRX
AND #$F
ADC #0
STA ROI
STA ERRX
YAINT:
BRSET 7,ERRX,NOSAT1
BCLR 1,FLAGS4
LDA ERRX
BRCLR 7,ERRX,NONEGE
BEQ NOSAT1
COM ERRX+1 ;PARTE PROPOR NEG
SISAT:
JMP SATU
COM ERRX
NOSAT1: LDA ERRX+1
LDA ERRX+1
ADD OI
ADD #1
STA ERRX+1
STA ERRX+1
LDA ERRX
MOV #$FF,OUT
ADC #0
BRA NOINCO
STA ERRX
NOSAT2: LDA PRDT
BSET 1,FLAGS4
CMP BP
NONEGE: LDA #$64
BCC SISAT
TAX
LDA PRDT
LDA ERRX+1
PSHA
MUL
PULH
STA PRDT+1
LDA BP
TXA
TAX
STA PRDT
LDA PRDT+1
LDA #$64
DIV
TAX
STA OUT
LDA ERRX
PSHH
MUL
PULA
ADD PRDT
STA PRDT
STA PRDT
LDHX #0
TXA
BRCLR 7,PRDT,NOINCO
ADC #0
INC OUT
BEQ NOSAT2
NOINCO: BRSET 1,FLAGS4,SUBO
191
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
CLC
INPROP: BCLR 3,FLAGS1
LDA OUT
LDA #$64
ADD OUTA
TAX
BCC NSATU
LDA ERR+1
JMP SATU
MUL
NSATU:
STA OUTA
STA PRDT+1
STA OUT
TXA
;SI OUT=0 HACER OUT=KPxERR
STA PRDT
LDA OUT
LDA #$64
BNE FCALPI
TAX
LDA ERR
STA OUT
MUL
PSHH
ADD PRDT
PULA
STA PRDT
STA PRDT
TXA
LDHX #0
ADC #0
BRCLR 7,PRDT,NOINO
BEQ NOSATX
INC OUT
MOV #$FF,OUT
NOINO:
BRA NOINO
FCALPI: RTS
NOSATX: LDA PRDT
SATU:
MOV OUT,OUTA
LDA BP
CMP BP
LDX #$FF
BCS NOSATO
MUL
JMP SISAT
PSHX
NOSATO: LDA PRDT
PULH
PSHA
LDX #$64
PULH
DIV
LDA BP
CMP AERR+1
TAX
BCC NCAERR
LDA PRDT+1
STA AERR+1
DIV
MOV #0,AERR
192
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
NCAERR: LDHX #0
SATD:
LDA #$FF
BRA NSATD
JMP NSATU
SUBO:
LDA #0
MDIA10: ASLA
CLC
STA POSM
LDA OUTA
ASLA
SUB OUT
ASLA
BCS SATD
ADD POSM
NSATD:
STA OUTA
ADD #AMOM1
STA OUT
STA POSM
RTS
RTS
DELON:
LDX #0
;ENCENDER DISPLAY
BRSET 0,FLAGS3,WPPR
LDA #$FF
BRA NOPARD
BRA MDELD
DELD:
LDX #0
WPPR:
;BORRAR DISPLAY
BRCLR 1,FLAGS3,NODV
BRA NOPARD
LDA #0
NODV:
MDELD: STA LCDDAT,X
BCLR 4,LCDDAT+3
SIPARD: BRSET 5,FLAGS2,NOPARD
INCX
BRSET 2,FLAGS4,NOPARD
CPX #$A
BRSET 6,FLAGS1,NOPARD
BNE MDELD
MOV #0,LCDDAT+8 ;PARADO
RTS
MOV #0,LCDDAT+3
DISPL:
JSR RWDOG ;SUB. DISPLAY
BCLR 4,LCDDAT+4
MOV #0,LCDDAT+4
FDAL1: LDA LCDDAT+9
LDA LCDDAT+5
AND #$C0
AND #$F0
STA LCDDAT+9
STA LCDDAT+5
MOV #0,LCDDAT+8
NODAL:
JSR DPMH
;DISPLAY MED/H
BCLR 0,LCDDAT+6
LDA LCDDAT+7
BCLR 4,LCDDAT+2
AND #$E
BCLR 4,LCDDAT+1
STA LCDDAT+7
MOV #0,LCDDAT
193
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
RTS
NOPARD: BRCLR 5,FLAGS2,SDM
BCLR 4,LCDDAT+3
BRSET 5,FLAGS2,WDGRC ;PROG PARA
BCLR 4,LCDDAT+4
LDA CONF2 ;CONTROL PROGRAM?
BCLR 7,LCDDAT+7
BNE VENNP ;SI
LDA LCDDAT+5
MOV #0,LCDDAT+8
AND #$F0
MOV #$10,LCDDAT+3
STA LCDDAT+5
MOV #0,LCDDAT+4
BRA YADM
LDA LCDDAT+5
SDM:
BRCLR 0,MODO,DMODO ;M VENT?
BSET 4,LCDDAT+3
AND #$F0
;SI
STA LCDDAT+5
BCLR 4,LCDDAT+4
VENNP:
BRA NODAL
LDA LCDDAT+3
STA LCDDAT+7
AND #$10
JSR DPMH
STA LCDDAT+3
JMP DPER
MOV #0,LCDDAT+4
DMODO:
LDA LCDDAT+5
BCLR 4,LCDDAT+3 ;DISPLAY M.
BCLR 7,LCDDAT+7
AND #$F0
WDGRC:
BRCLR 5,FLAGS2,SIGRC1
STA LCDDAT+5
BCLR 2,LCDDAT+5
LDA LCDDAT+7
BRA NOGRC1
AND #$1F
SIGRC1: BSET 2,LCDDAT+5
NOGRC1: BRCLR 1,MODO,NODF
STA LCDDAT+5
LDA LCDDAT+5 ;MODO FRIO
BCLR 4,LCDDAT+4
AND #$F4
LDA CONF2
STA LCDDAT+5
BNE YADM
BSET 4,LCDDAT+4
BCLR 7,LCDDAT+7
BRA YADM
BRA YADM
NODF:
BRCLR 3,MODO,NODA
BSET 1,LCDDAT+5
NODA:
;MODO AUTO
BRSET 0,MODO,YADM
LDA LCDDAT+5 ;MODO CALOR
LDA LCDDAT+5
AND #$F5
AND #$F6
STA LCDDAT+5
194
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BCLR 4,LCDDAT+4
JSR DIG1
BSET 0,LCDDAT+5
INC SEGD
YADM:
BRCLR 5,FLAGS2,SIGRC2
;ESCRIBIR CONSIGNA
LDA DECIM+2
BCLR 2,LCDDAT+5
JSR DIG1
BRA NOGRC2
FDAL2: JSR DPMH
SIGRC2: BSET 2,LCDDAT+5
LDA CONF2
NOGRC2: MOV CONSIG,BIN
BNE DENER
MOV CONSIG+1,BIN+1
;ESCRIB MED/H
JMP FDAL1
JSR BINDEC
DENER:
BSET 5,LCDDAT+7
MOV #3,SEGD
BCLR 6,LCDDAT+7
LDA DECIM+1
BCLR 7,LCDDAT+7
DPER:
BRCLR 1,FLAGS2,NOIP
BRA NODPER
LDA CRINT
DPERP:
BEQ NOIP
NODIP:
BRA SIDPER
BCLR 3,LCDDAT+8
NODPER: MOV #$89,BIN
BRA DPPA
NOIP:
LDA PERP ;DISPLAY PROGRAM
BRA YADPER
LDA FLPR
SIDPER: BRCLR 4,FLAGS2,NOIPER
BEQ NODIP
LDA CRINT
NIOV1:
BSET 3,LCDDAT+8
DPPA:
BRCLR 7,FLAGS1,NODPA
BNE NODPER
NOIPER: BRSET 6,FLAGS1,DPERPI
BRCLR 1,FLAGS2,NOIPA
LDA PER
LDA CRINT
BRA YADP
BNE NODPA
NOIPA:
DPERPI: LDA PERP
BSET 7,LCDDAT+8 ;PROGR ACTIV
YADP:
BRA WDPER
CMP #1
BNE NOP1
NODPA:
BCLR 7,LCDDAT+8
BSET 2,LCDDAT+8
WDPER:
BRSET 6,FLAGS1,DPERP
MOV #$8D,BIN
BRCLR 7,FLAGS1,NODPER
LDA PER
BRA YADPER
;DISPLAY PERIODO
NOP1:
BNE NOIPER
CMP #2
BNE NOP2
195
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BSET 6,LCDDAT+8
NOP2:
CMP #3
MOV #$C9,BIN
BNE NOP3
BRA YADPER
BSET 1,LCDDAT+8
MOV #$8B,BIN
MID3:
BSET 5,LCDDAT+9
BRA YADPER
MID4:
BSET 0,LCDDAT+6
MID5:
BSET 0,LCDDAT+7
NOP3:
CMP #4
BNE NODPER
BSET 0,LCDDAT+8
BSET 5,LCDDAT+8
BRA FDDIA
MOV #$A9,BIN
IDIA:
YADPER: LDA LCDDAT+8
BRCLR 3,FLAGS2,NIDIA ; PROGRAM
LDA CRINT
AND BIN
BEQ NIDIA
STA LCDDAT+8
LDA DIAP
BRSET 6,FLAGS1,IDIA ;PROGRAM?
BNE NID1
;INTERMITENC Nº DE DIA
NIDIA:
BSET 4,LCDDAT+1 ;NO,Nº ENCEN
BCLR 4,LCDDAT+1
MID1:
BSET 4,LCDDAT+2
BRA MID1
MID2:
BSET 4,LCDDAT
NID1:
CMP #1
BRA MID2
BNE NID2
NID2:
CMP #2
BSET 4,LCDDAT+1
BNE NID3
BCLR 4,LCDDAT+2
BSET 4,LCDDAT+1
BSET 4,LCDDAT+2
NID4:
CMP #4
BCLR 4,LCDDAT
BNE NID5
BRA MID3
BSET 4,LCDDAT+1
NID3:
CMP #3
BSET 4,LCDDAT+2
BNE NID4
BSET 4,LCDDAT
BSET 4,LCDDAT+1
BSET 5,LCDDAT+9
BSET 4,LCDDAT+2
BCLR 0,LCDDAT+6
BSET 4,LCDDAT
BRA MID5
BCLR 5,LCDDAT+9
NID5:
BRA MID4
CMP #5
BNE NID6
196
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BSET 4,LCDDAT+1
BSET 5,LCDDAT+9
BSET 4,LCDDAT+2
BSET 0,LCDDAT+6
BSET 4,LCDDAT
BCLR 0,LCDDAT+7
BSET 0,LCDDAT+8
MOV #$E8,BIN+1
BRA FDDIA
BSET 6,LCDDAT
NID6:
BSET 4,LCDDAT+1
BRA YADDIA
BSET 4,LCDDAT+2
NDIA2:
CMP #2
BSET 4,LCDDAT
BNE NDIA3
BSET 5,LCDDAT+9
MOV #$3F,BIN
BSET 0,LCDDAT+6
MOV #$E8,BIN+1
BSET 0,LCDDAT+7
BSET 5,LCDDAT
BCLR 0,LCDDAT+8
BRA YADDIA
FDDIA: BRSET 6,FLAGS1,DBARP ; EN
PROGRAM?
NDIA3:
BNE NDIA4
BRCLR 3,FLAGS2,NDIA0
MOV #$1F,BIN
LDA CRINT
MOV #$F8,BIN+1
BEQ NDIA0
BSET 4,LCDDAT+9
MOV #$1F,BIN
BRA YADDIA
MOV #$E8,BIN+1
NDIA4:
BRA YADDIA
NDIA0: LDA DOWR
BARRA DEL DIA
CMP #3
CMP #4
BNE NDIA5
;NO,DISPLAY
MOV #$1F,BIN
BNE NDIA1
MOV #$EC,BIN+1
MOV #$9F,BIN
BSET 2,LCDDAT+9
MOV #$E8,BIN+1
BRA YADDIA
NDIA5:
BSET 7,LCDDAT
BNE NDIA6
BRA YADDIA
NDIA1:
CMP #5
MOV #$1F,BIN
CMP #1
BNE NDIA2
MOV #$EA,BIN+1
MOV #$5F,BIN
BSET 1,LCDDAT+9
BRA YADDIA
197
MEMORIA
VI. Código fuente
NDIA6:
Capítulo 1. Código de la tarjeta TX98
MOV #$1F,BIN
BRA WDIA5P
MOV #$E9,BIN+1
NDIA4P: BCLR 4,LCDDAT+9
BSET 0,LCDDAT+9
WDIA5P: LSRA
YADDIA: LDA LCDDAT
BCC NDIA5P
AND BIN
BSET 2,LCDDAT+9
STA LCDDAT
BRA WDIA6P
LDA LCDDAT+9
NDIA5P: BCLR 2,LCDDAT+9
AND BIN+1
WDIA6P: LSRA
STA LCDDAT+9
BCC NDIA6P
RTS
BSET 1,LCDDAT+9
DBARP: LDA FLPR
PROGRAMACION
LSRA
;EN
BRA WDIA7P
NDIA6P: BCLR 1,LCDDAT+9
;DISPLAY DIAS PROGRAM
WDIA7P: LSRA
BCC NDIA1P
BCC NDIA7P
BSET 7,LCDDAT
BSET 0,LCDDAT+9
BRA WDIA2P
RTS
NDIA1P: BCLR 7,LCDDAT
NDIA7P: BCLR 0,LCDDAT+9
WDIA2P: LSRA
RTS
BCC NDIA2P
VPULS:
BSET 6,LCDDAT
JSR RWDOG
BRSET 5,PTD,NPUP
BRA WDIA3P
JMP PUP
NDIA2P: BCLR 6,LCDDAT
NPUP:
WDIA3P: LSRA
;VIGILANCIA PULS
;PULS ARRIBA?
;SI
BRSET 6,PTD,NPDWN ;PULS ABAJ?
JMP PDOWN ;SI
BCC NDIA3P
NPDWN: BRSET 0,PTD,NPSTSP ;PULS
START-STOP?
BSET 5,LCDDAT
BRA WDIA4P
JMP PSTRSP ;SI
NDIA3P: BCLR 5,LCDDAT
NPSTSP: BRSET 1,PTD,NPMOD ;PULSMOD?
WDIA4P: LSRA
JMP PMODO ;SI
BCC NDIA4P
NPMOD:
BSET 4,LCDDAT+9
LDA CONF2 ;CONTR PROGRAM?
BEQ NPULS
198
;NO
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRSET 2,PTD,NPSEL ;PULSADOR SEL?
CBEQA #1,FPAU
JMP PSEL
CBEQA #3,FPAU
NPSEL:
;SI
BRSET 3,PTD,NPPRG ;PULS PRG?
JMP PPRG
NPPRG:
BCLR 0,FLAGS2
;SI
BCLR 1,FLAGS2
BRSET 7,PTD,NPCOPY ;PUL COPY?
JMP PCOPY
FPAU:
;SI
NOPRA1: BRCLR 2,FLAGS2,NOHR1
NPCOPY: BRSET 4,PTD,NPULS ;P CLOCK?
JMP PCLK
NPULS:
PUP:
JMP FUP
MOV #5,TRAP ;T PA CAMB RAPID
;SI
BRSET 6,FLAGS1,INCHRP
RTS
MIHR:
BRSET 6,FLAGS1,SIPUP ;PULARRIBA
MOV #$A,TINT
LDA #$3B
;NO,AUMENTAR HORA
BRSET 2,FLAGS4,SIPUP
CMP MINR
BRSET 0,MODO,NOPUP
BEQ FMINU
BRCLR 0,FLAGS3,SIPUP
INC MINR
BRSET 1,FLAGS3,SIPUP
BRA MCHRA
NOPUP:
SIPUP:
MPUP:
RTS
;PARADO
FMINU:
LDX #$40
MOV #0,MINR
LDA #$17
BRSET 5,PTD,NP1 ;CONFIR PULS
JSR DELB
CMP HRR
;RETAR REBOTE Y RUIDO
BEQ FHRU
DBNZX MPUP
INC HRR
BRA YAPUP
BRA MCHRA
NP1:
RTS
YAPUP:
;PROGRAM?
FHRU:
BRCLR 1,FLAGS2,NOPRA1
MCHRA:
MOV #0,HRR
JSR DISPL
LDA FLAGS1
LDA TRAP
EOR #$80
BEQ URAP1S
;CAM PROGRAM ACTIV
STA FLAGS1
JSR DELAY
BRCLR 7,FLAGS1,FCHPAU
BRA URAP1
JSR WPER
URAP1S: JSR DELAYS
JMP FUP
URAP1: BRCLR 5,PTD,MIHR ;SIG PUL ARRIB?
FCHPAU: BCLR 1,FLAGS3
RTS
LDA PER
;NO
INCHRP: LDA MINP
199
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
CMP #$AA
CMP DOWR
BNE SIIHRP
BEQ FDIAU
LDA #0
INC DOWR
STA HORAP
JMP FUP
STA MINP
FDIAU:
BRA MCHRAP
JMP FUP
SIIHRP: MOV #$A,TINT
INC MINP
MOV #0,DOWR
INDIAP: INC DIAP ;AUMEN DIA PROGRA
;AUMENTA H PROGRAM
LDA #7
LDA #$3C
CMP DIAP
CMP MINP
BNE RHORA1
BNE MCHRAP
MOV #0,DIAP
MOV #0,MINP
BRA RHORA1
INC HORAP
NODIA1: BRCLR 4,FLAGS2,NOPER1
LDA #$18
INC PERP ;AUMENT PERIO PROGRA
CMP HORAP
LDA #5
BNE MCHRAP
CMP PERP
MOV #0,HORAP
BNE RHORA1
MCHRAP: JSR DISPL
MOV #1,PERP
LDA TRAP
RHORA1: JSR RHORAP ;LEER H PERIOD
BEQ URAP2S
JMP FUP
JSR DELAY
NOPER1: BSET 0,FLAGS1
BRA URAP2
BRSET 2,FLAGS1,NOGCU
URAP2S: JSR DELAYS
BSET 2,FLAGS1
URAP2: BRCLR 5,PTD,SIIHRP ;SIGUE
PULSADO ARRIB?
JSR PRGHR
NOGCU:
MOV CONSIG,DATO
;NO,GRABAR HORA
LDA CONSIG+1
RTS
NOHR1:
MOV CONSIG+1,DATO+1
SUB CMAX+1
BRCLR 3,FLAGS2,NODIA1
BRSET 6,FLAGS1,INDIAP
LDA #6
LDA CONSIG
;PROGRAM?
SBC CMAX
;NO,AUMENTAR DIA
BCS SIUPC
200
;CONSIG > MAXIMO?
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV CMAX+1,CONSIG+1 ;SI,NO +
STA FLAGS1
MOV CMAX,CONSIG
BRCLR 7,FLAGS1,FCHPAD
BRA FUP
JSR WPER
SIUPC:
LDA CONSIG+1 ;AUMEN CONSIG
JMP FDOWN
ADD #$A
FCHPAD: BCLR 1,FLAGS3
STA CONSIG+1
LDA PER
LDA CONSIG
CBEQA #1,FPAD
ADC #0
CBEQA #3,FPAD
STA CONSIG
BCLR 0,FLAGS2
MOV #2,TOI
BCLR 1,FLAGS2
FUP:
MOV #$A,TINT
FPAD:
JSR DELAY
WUP:
NOPRA2: BRCLR 2,FLAGS2,NOHR2
JSR DISPL
MOV #5,TRAP ;T PA CAMB RAPID H
BRCLR 5,PTD,WUP
BRSET 6,FLAGS1,DECHRP ;PROGRAM?
RTS
PDOWN:
MDHR:
LDX #$40
;PULS ABAJO
NP2:
MOV #$A,TINT
LDA #0
MPDOWN: BRSET 6,PTD,NP2 ;CONFI PUL
JSR DELB
JMP FDOWN
CMP MINR
;RETAR REBOTE Y RUIDO
BEQ FMIND
DBNZX MPDOWN
DEC MINR
BRA YAPDWN
BRA MCHRB
RTS
FMIND:
YAPDWN: BRSET 6,FLAGS1,SIPDWN
MOV #$3B,MINR
LDA #0
BRSET 2,FLAGS4,SIPDWN
CMP HRR
BRSET 0,MODO,NOPDWN
BEQ FHRD
BRCLR 0,FLAGS3,SIPDWN
DEC HRR
BRSET 1,FLAGS3,SIPDWN
BRA MCHRB
NOPDWN: RTS
FHRD:
SIPDWN: BRCLR 1,FLAGS2,NOPRA2
MCHRB:
MOV #$17,HRR
JSR DISPL
LDA FLAGS1
LDA TRAP
EOR #$80 ;CAM PROGRAM ACTIV
BEQ DRAP1S
201
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
JSR DELAY
DRAP2: BRCLR 6,PTD,SIDHRP ;SIGUE
PULSADO ABAJO?
BRA DRAP1
JSR PRGHR
DRAP1S: JSR DELAYS
DRAP1: BRCLR 6,PTD,MDHR
PULSADO FLECHA ABAJO?
RTS
;NO,GRABAR HORA
RTS
;SIGUE
NOHR2:
;NO
BRCLR 3,FLAGS2,NODIA2
BRSET 6,FLAGS1,DEDIAP
;PROGRAMACION?
DECHRP: LDA MINP
LDA #0
CMP #$AA
;NO,DISMINUIR DIA
CMP DOWR
BNE SIDHRP
BEQ FDIAD
LDA #0
DEC DOWR
STA HORAP
JMP FDOWN
STA MINP
FDIAD:
BRA MCHRBP
MOV #6,DOWR
JMP FDOWN
SIDHRP: MOV #$A,TINT
DEDIAP: DEC DIAP
DEC MINP ;DISMINUIR H PROGRAM
LDA #$FF
LDA #$FF
CMP DIAP
CMP MINP
BNE RHORA2
BNE MCHRBP
MOV #6,DIAP
MOV #$3B,MINP
BRA RHORA2
DEC HORAP
NODIA2: BRCLR 4,FLAGS2,NOPER2
LDA #$FF
DEC PERP ;DISMINUI PERIO PROGRA
CMP HORAP
LDA #0
BNE MCHRBP
CMP PERP
MOV #$17,HORAP
BNE RHORA2
MCHRBP: JSR DISPL
MOV #4,PERP
LDA TRAP
RHORA2: JSR RHORAP ;LEE H D PERIOD
BEQ DRAP2S
JMP FDOWN
JSR DELAY
NOPER2: BSET 0,FLAGS1
BRA DRAP2
BRSET 2,FLAGS1,NOGCD
DRAP2S: JSR DELAYS
202
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BSET 2,FLAGS1
NOGCD:
YASTSP: BRCLR 4,FLAGS1,NOFMED
MOV CONSIG+1,DATO+1
BCLR 4,FLAGS1
MOV CONSIG,DATO
MOV TRET,MEDD;PON RETO DISPLAY
LDA CMIN+1
MOV TRET+1,MEDD+1
SUB CONSIG+1
BRA WSTRSP
LDA CMIN
NOFMED: BRSET 6,FLAGS1,SELSTP ;PROGR?
SBC CONSIG
BCS SIDWC
BSET 0,FLAGS1
;CONSIGNA < MIN?
LDX #$40
MOV CMIN+1,CONSIG+1 ;SI,NO
DISMINUIR
MOO:
JSR DELB
MOV CMIN,CONSIG
DBNZX MOO
BRA FDOWN
SIDWC:
BSET 0,FLAGS3
LDA CONSIG+1 ;DISMIN CONS
BRA FSTRSP
SUB #$A
SIOO:
STA CONSIG+1
STA FLAGS3 ;NO,ON/OFF
SBC #0
BRA FSTRSP
STA CONSIG
SELSTP: BRCLR 2,FLAGS2,NOHR3
MOV #2,TOI
LDA #0
MOV #$A,TINT
STA MINP
JSR DISPL
JSR NULLP
BRCLR 6,PTD,WDOWN
JSR WPER
RTS
BRA FSTRSP
PSTRSP: LDX #$40
;PULS START-STOP
NOHR3:
MPSTSP: BRSET 0,PTD,NP3 ;CONFI PULS
JSR DELB
BRCLR 3,FLAGS2,NODIA3
LDA #$AA ;ANULA PROGRAM DE DIA
;RETAR REBOTE Y RUIDO
STA HORAP
DBNZX MPSTSP
STA MINP
BRA YASTSP
NP3:
;HORA INI PROGRAM-00:00
STA HORAP
JSR DELAY
WDOWN:
LDA FLAGS3
EOR #1
LDA CONSIG
FDOWN:
BRCLR 2,PTA,SIOO
JSR NULLD
RTS
JSR WPER
203
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRA FSTRSP
LDA TOI
NODIA3: BRCLR 4,FLAGS2,FSTRSP
STA DATO+3
LDA #$AA ;ANUL PROGRAM D PERIO
BRA FMODO
STA HORAP
SIPM:
LDA MODO
STA MINP
MOV OI,DATO+1
JSR NULLP
MOV OUTA,DATO+2
JSR WPER
MOV TOI,DATO+3
FSTRSP: MOV #$A,TINT
BRCLR 4,FLAGS1,CHMODO
JSR DELAY
LDA NMED
WSTRSP: JSR DISPL
CMP #4
BRCLR 0,PTD,WSTRSP
BNE INMED
RTS
LDA #0
PMODO:BRSET 6,FLAGS1,NP4;PUL MOD, PRG
STA NMED
LDX #$60
MMODO:
BRA FPMOD
BRSET 1,PTD,NP4 ;CONFIR PUL
JSR DELB
INMED:
;RETAR REBOTE Y RUIDO
STA NMED
DBNZX MMODO
BRA FPMOD
BRA YAPMOD
NP4:
INCA
CHMODO: MOV #0,OI
RTS
MOV #0,OUTA
YAPMOD: BSET 0,FLAGS1
MOV #$A,TOI
BRSET 1,FLAGS1,NOGM
BSET 3,FLAGS1
BSET 1,FLAGS1
ASL MODO ;CAMB MOD FUNCIONA
NOGM:
BRCLR 0,FLAGS3,SIPM
LDA CONF1
BRSET 1,FLAGS3,SIPM
CBEQA #1,SIMA
LDA MODO
CBEQA #3,SIMA
STA DATO
BRCLR 3,MODO,FMODO
LDA OI
BRA MODO1
STA DATO+1
SIMA:
LDA OUTA
MODO1: MOV #1,MODO
STA DATO+2
FMODO: MOV #$A,TINT
204
BRCLR 4,MODO,FMODO
MEMORIA
VI. Código fuente
FPMOD:
WMODO:
Capítulo 1. Código de la tarjeta TX98
JSR DELAY
STA NMED
JSR DISPL
MOV TIMP,MEDD
BRCLR 0,PTD,WPRGM ;PULSADOR
START-STOP?
MOV TIMP+1,MEDD+1 ;PONER
TEMP.IMPULSION EN DISPLAY
BRCLR 6,PTD,WDMED ;PULS ABAJO?
WPMED:
JSR DISPL
BRCLR 5,PTD,WBLKP ;PULS ARRIBA?
BRCLR 6,PTD,WPMED
BRCLR 1,PTD,WMODO
BRCLR 1,PTD,WPMED
RTS
RTS
WPRGM:
LDX #$20
WBLKP:
MWPRGM: JSR DELAY ;PUL START-STOP
BRSET 0,FLAGS3,FBLKP
LDX #$40
JSR RWDOG ;WATCH-DOG
MWBLKP: JSR DELB
;PULS ARRIBA
BRSET 0,PTD,WMODO
BRSET 5,PTD,WMODO
BRSET 1,PTD,WMODO
BRSET 1,PTD,WMODO
DBNZX MWPRGM
DBNZX MWBLKP
MOV DATO,MODO
MOV DATO,MODO
MOV DATO+1,OI
MOV DATO+1,OI
MOV DATO+2,OUTA
MOV DATO+2,OUTA
MOV DATO+3,TOI
MOV DATO+3,TOI
JMP PRMODE ;PROGRAM PARAM
LDA FLAGS1
WDMED:
LDX #$40
MWDMED: JSR DELB
EOR #$20
;PULS ABAJO
STA FLAGS1;CAMB FLAG BLOQ CONS
BRSET 6,PTD,WMODO
BRSET 5,FLAGS1,BLKA
BRSET 1,PTD,WMODO
MOV #1,CMAX ;QUITA BLOQU CONS
DBNZX MWDMED
MOV #$2C,CMAX+1
MOV DATO,MODO
MOV #0,CMIN
MOV DATO+1,OI
MOV #$96,CMIN+1
MOV DATO+2,OUTA
JMP FBLKP
MOV DATO+3,TOI
BLKA: MOV #AP03,POSM ;PON BLOQ
CONSIG
BSET 4,FLAGS1
JSR READ
LDA #0
205
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA DATO
STA CMAX+1
LDA CONSIG+1
LDA CONSIG
ADD DATO
ADC #0
BRA FSEL
STA CMAX
NOPRA3: BSET 1,FLAGS2 ;SELECCION
ACTIVACION PROGRAMACION
LDA CONSIG+1
BRA FSEL
SUB DATO
WSTP:
STA CMIN+1
BRCLR 3,FLAGS2,NODIA4
LDA CONSIG
BCLR 3,FLAGS2 ;FIN SELECCION DIA
SBC #0
BSET 4,FLAGS2 ;SELECCION PERIODO
STA CMIN
FBLKP:
BRA FSEL
JSR DISPL
NODIA4: BCLR 4,FLAGS2 ;FIN SELEC PERIO
BRCLR 5,PTD,FBLKP
BSET 2,FLAGS2 ;SELECCION HORA
BRCLR 1,PTD,FBLKP
BRA FSEL
RTS
PSEL:
SIHR:
BRCLR 0,FLAGS3,WPSEL ;PULS SEL
FSEL:
BRCLR 6,FLAGS1,NP5
WSEL:
LDX #$40
JSR DISPL
BRCLR 2,PTD,WSEL
MPSEL: BRSET 2,PTD,NP5
;CONFIRMACION PULSADOR
NP5:
MOV #$A,TINT
JSR DELAY
BRSET 0,MODO,NP5
JSR DELB
BCLR 2,FLAGS2 ;FIN SELEC HORA
BSET 3,FLAGS2 ;SELECCION DIA
BRSET 1,FLAGS3,WPSEL
WPSEL:
BRSET 2,FLAGS2,SIHR ;PROGRA
RTS
;RETAR REBOTE Y RUIDO
PPRG:
BRSET 0,FLAGS2,NP6;PUL PROGRA
DBNZX MPSEL
BRSET 1,FLAGS2,NP6
BRA YAPSEL
LDX #$40
RTS
MPPRG: BRSET 3,PTD,NP6
;CONFIRMACION PULS
YAPSEL: BRSET 6,FLAGS1,WSTP
JSR DELB
BRCLR 1,FLAGS2,NOPRA3
;RETAR REBOTE Y RUIDO
DBNZX MPPRG
BCLR 1,FLAGS2 ;FIN SELECCION
ACTIVACION PROGRAMACION
BRA YAPPRG
206
MEMORIA
VI. Código fuente
NP6:
Capítulo 1. Código de la tarjeta TX98
RTS
YAPPRG: BRSET 6,FLAGS1,FPROG
BSET 6,FLAGS1 ;ENTRAR PROGRAM
LDA DIAP
BSET 6,FLAGS2
CMP #$FF
BSET 3,FLAGS2
BNE NODP1
LDA DOWR
MOV #6,DIAP
STA DIAP
NODP1:
LDA PER
STA DATO+1
BNE SIDPP
LDA #1
LDA #1
STA PERP
SIDPP:
STA PERP
MCOPY:
JSR RHORAP
JSR RHORAP
INC DIAP
BRA FPRG
LDA DIAP
FPROG:
JSR WPER
;FIN PROGRAM
CMP #7
LDA FLAGS2
BNE NODP2
AND #$A0
MOV #0,DIAP
STA FLAGS2
NODP2:
BCLR 6,FLAGS1
FPRG:
MOV #$14,TINT
WPRG:
LDA DIAP
CMP #$FF
JSR DISPL
BNE NODP3
BRCLR 3,PTD,WPRG
MOV #6,DIAP
RTS
PCOPY:
NODP3:
BRCLR 6,FLAGS1,NP7 ;PULS COPY
INC PERP
LDA PERP
LDX #$40
CMP #6
MPCOPY: BRSET 7,PTD,NP7
JSR DELB
JSR PRGHR
DEC DIAP
JSR DELAY
NP7:
LDA PERP
;CONF PULS
BNE MCOPY
;RETAR REBOTE Y RUIDO
LDA DATO+1
DBNZX MPCOPY
STA PERP
BRA YAPCPY
INC DIAP
RTS
LDA DIAP
YAPCPY: DEC DIAP
CMP #7
207
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BNE NODP4
NODP4:
MOV #0,DIAP
JSR WPER
JSR WPER
MOV #$10,TINT
FCLK:
JSR RHORAP
JSR DELAY
JSR DELAY
WCOPY:
WCLK:
JSR DISPL
JSR DISPL
BRCLR 4,PTD,WCLK
BRCLR 7,PTD,WCOPY
RTS
RTS
PRMODE: JSR STORE ;MOD PRG PARAM
PCLK: BRSET 0,FLAGS2,NP8 ;PUL AJUS REL
BCLR 4,FLAGS1
BRSET 1,FLAGS2,NP8
BSET 5,FLAGS2
BRSET 6,FLAGS1,NP8
MOV #AP15,POSM
BRSET 0,MODO,NP8
LDA VERS
LDX #$40
JSR PROG
MPCLK:
BRSET 4,PTD,NP8
JSR DELB
NP8:
MOV #$14,TINT
;CONFIR PUL
MOV #AP16,POSM
;RETAR REBOTE Y RUIDO
LDA #0
DBNZX MPCLK
JSR PROG
BRA YAPCLK
MOV #0,CONSIG
RTS
MOV #0,CONSIG+1
YAPCLK: BRSET 2,FLAGS2,AJCLKD
MOV #0,POSM
BRSET 3,FLAGS2,FAJCLK
JSR READ
BSET 2,FLAGS2 ;AJUSTE HORA
STA DATO+1
BSET 6,FLAGS2
MOV #0,DATO
BSET 2,FLAGS4
BCLR 6,FLAGS2
BRA FCLK
WPRMOD: JSR DISPL
AJCLKD: BCLR 2,FLAGS2 ;AJUSTE DIA
BRCLR 0,PTD,WPRMOD
BSET 3,FLAGS2
BRCLR 1,PTD,WPRMOD
BRA FCLK
DISPP1: JSR DISPL
FAJCLK: BCLR 3,FLAGS2 ;FIN AJUST RELOJ
BRCLR 5,PTD,PUPPR1 ;PULS ARRIBA
BCLR 6,FLAGS2
BRCLR 6,PTD,PDWNP1 ;PULS ABAJO
BCLR 2,FLAGS4
BRCLR 1,PTD,PMODP1 ;PULS MODO
208
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRSET 0,PTD,DISPP1
MSTP1:
LDX #$40
BRSET 0,PTD,DISPP1
;PULSADOR START-STOP
LDA POSM
JSR DELB
CBEQA #2,DWN1
DBNZX MSTP1
LDA DATO+1 ;DISMINU PARA TEMP
JMP FINPR ;FIN PROGRAM PARAM
SUB #5
PUPPR1: LDX #$40
;PULS ARRIBA
STA DATO+1
MUPPR1: BRSET 5,PTD,DISPP1
LDA POSM
JSR DELB
CMP #3
DBNZX MUPPR1
BNE DWN5
LDA POSM
LDA DATO+1
CBEQA #2,UP1
SUB #5
LDA DATO+1 ;AUMENT PARA TEMP
STA DATO+1
ADD #5
BRA DWN5
STA DATO+1
DWN1:
DEC DATO+1
LDA POSM
DWN5:
JSR DELAY
CMP #3
WDWNP1: JSR DISPL
BNE UP5
BRCLR 6,PTD,WDWNP1
LDA DATO+1
JDPP1:
ADD #5
PMODP1: LDX #$40
STA DATO+1
MMODP1: BRSET 1,PTD,JDPP1
BRA UP5
JMP DISPP1
;PULS MOD
JSR DELB
UP1:
INC DATO+1
DBNZX MMODP1
UP5:
JSR DELAY
LDA DATO+1 ;GRABA PARAM TEMP
WUPPR1: JSR DISPL
JSR IPROG
BRCLR 5,PTD,WUPPR1
LDA CONSIG+1
BRA DISPP1
ADD #$A
PDWNP1: LDX #$40
;PULS ABAJO
STA CONSIG+1
MDWNP1: BRSET 6,PTD,DISPP1
LDA POSM
JSR DELB
CBEQA #6,FDPP1
DBNZX MDWNP1
JSR READ
209
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA DATO+1
JSR DELAY
WMODP1: JSR DISPL
STA DATO+1
BRCLR 1,PTD,WMODP1
LDA DATO
JMP DISPP1
ADC #0
FDPP1:
JSR READ
STA DATO
STA DATO
JSR DELAY
JSR IREAD
WUPPRC: JSR DISPL
STA DATO+1
BRCLR 5,PTD,WUPPRC
JSR DELAY
BRA DISPPC
WFDPPC: JSR DISPL
PDWNPC: LDX #$40
BRCLR 1,PTD,WFDPPC
;PULS ABAJO
MDWNPC: BRSET 6,PTD,DISPPC
DISPPC: JSR DISPL
JSR DELB
BRCLR 5,PTD,PUPPRC ;PULS ARRIBA
DBNZX MDWNPC
BRCLR 6,PTD,PDWNPC ;PULS ABAJO
LDA DATO+1 ;DISMINU PARA TEMP
BRCLR 1,PTD,PMODPC ;PULS MOD
SUB #1
BRSET 0,PTD,DISPPC
STA DATO+1
LDX #$40
LDA DATO
MSTPC:
;PULSADOR START-STOP
BRSET 0,PTD,DISPPC
SBC #0
JSR DELB
STA DATO
DBNZX MSTPC
JSR DELAY
JMP FINPR ;FIN PROGRAM PARAM
PUPPRC: LDX #$40
WDWNPC: JSR DISPL
;PULS ARRIBA
BRCLR 6,PTD,WDWNPC
MUPPRC: BRSET 5,PTD,DISPPC
BRA DISPPC
JSR DELB
PMODPC: LDX #$40
DBNZX MUPPRC
MMODPC: BRSET 1,PTD,DISPPC
LDA DATO+1 ;+ PARAM TEMP
JSR DELB
ADD #1
DBNZX MMODPC
JSR IPROG
DEC POSM
LDA DATO+1
LDA DATO
;GRABAR PARAM TEMP
JSR IPROG
210
;PULS MOD
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
LDA CONSIG+1
INC MIN
ADD #$A
JSR DELAY
STA CONSIG+1
JSR READ
;AUMENTAR PARAM T
NOIVER: JSR DISPL
;FIN PARAM TEMP
BRSET 5,PTD,DISPP2
STA MIN
JSR DELAY
MOV #0,HORA
BRA MIPT1
BSET 6,FLAGS2
PDWNP2: LDX #$40
JSR DELAY
MDWNP2: BRSET 6,PTD,DISPP2
WFDPP1: JSR DISPL
;PULS ABAJO
JSR DELB
BRCLR 1,PTD,WFDPP1
DBNZX MDWNP2
DISPP2: JSR DISPL
MDPT1: LDA POSM
BRCLR 5,PTD,PUPPR2 ;PULS ARRIBA
CBEQA #$10,NODVER
BRCLR 6,PTD,PDWNP2 ;PULS ABAJO
DEC MIN
BRCLR 1,PTD,PMODP2 ;PULS MOD
JSR DELAY
BRSET 0,PTD,DISPP2
LDX #$40
MSTP2:
;DISMINUPARAM T
NODVER: JSR DISPL
;PULSADOR START-STOP
BRSET 6,PTD,DISPP2
BRSET 0,PTD,DISPP2
JSR DELAY
JSR DELB
BRA MDPT1
DBNZX MSTP2
PMODP2: LDX #$40
JMP FINPR ;FIN PROGRAM PARAM
MMODP2: BRSET 1,PTD,DISPP2
PUPPR2: LDX #$40
;PULS ARRIBA
;PULS MOD
JSR DELB
MUPPR2: BRSET 5,PTD,DISPP2
DBNZX MMODP2
JSR DELB
LDA POSM
DBNZX MUPPR2
CBEQA #AP16,WKEY
MIPT1:
LDA POSM
LDA MIN
;GRABAR PARAM T
CMP #$10
JSR IPROG
BEQ NOIVER
LDA CONSIG+1
ADD #$A
STA MIN
STA CONSIG+1
JSR DELAY
JSR READ
WMODP2: JSR DISPL
211
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRCLR 1,PTD,WMODP2
MSTP3:
JMP DISPP2
WKEY:
JSR DELB
LDA MIN
DBNZX MSTP3
CBEQA #$D,FDPP2
;CLAV CORREC
BRA FINPR
JMP FINPR ;NO,FIN PROGRAM
FDPP2:
BRSET 0,PTD,DISPP3
;FIN PROGRAM PARAM
PUPPR3: LDX #$40
JSR IREAD
;PULS ARRIBA
MUPPR3: BRSET 5,PTD,DISPP3
STA MIN
JSR DELB
MOV #1,CONSIG
DBNZX MUPPR3
MOV #$F4,CONSIG+1
INC MIN
WFDPP2: JSR DISPL
;AUMENTAR CONF
JSR DELAY
BRCLR 1,PTD,WFDPP2
WUPPR3: JSR DISPL
DISPP3: JSR DISPL
BRCLR 5,PTD,WUPPR3
BRCLR 5,PTD,PUPPR3 ;PULS ARRIBA
BRA DISPP3
BRCLR 6,PTD,PDWNP3 ;PULS ABAJO
PDWNP3: LDX #$40
BRCLR 1,PTD,PMODP3 ;PULS MOD
MDWNP3: BRSET 6,PTD,DISPP3
BRSET 0,PTD,DISPP3
LDX #$40
;PULS ABAJO
JSR DELB
;PULSADOR START-STOP
DBNZX MDWNP3
CBEQA #$BC,FINPR
DEC MIN
JSR IREAD
;DISMINUIR CONF
JSR DELAY
STA MIN
WDWNP3: JSR DISPL
LDA CONSIG+1
BRCLR 6,PTD,WDWNP3
ADD #$64
BRA DISPP3
STA CONSIG+1
PMODP3: LDX #$40
;PULS MOD
LDA CONSIG
MMODP3: BRSET 1,PTD,DISPP3
ADC #0
JSR DELB
STA CONSIG
DBNZX MMODP3
WMODP3: JSR DISPL
LDA MIN
JSR PROG
BRCLR 1,PTD,WMODP3
;GRABAR CONF
BRA DISPP3
LDA CONSIG+1
FINPR:
212
BCLR 5,FLAGS2 ;FIN PROG PARAM
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
LDHX #$260
JSR PROG
TXS
RTS
LDHX #0
NULLD:
JMP FINPRG
NULLP:
PSHA
BSR WDIAP
PSHA
PULA
BSR WHORAP
JSR IPROG
PULA
JSR IPROG
JSR IPROG
JSR IPROG
JSR IPROG
JSR READ
JSR IPROG
STA HORAP
JSR IPROG
JSR IREAD
JSR IPROG
STA MINP
JSR IPROG
RTS
JSR IPROG
PRGHR:
BSR WHORAP ;GRAB H PROGRA
JSR PROG
LDA HORAP
RTS
JSR IPROG
RHORAP: BSR WHORAP;LEE H PROGRAM
LDA MINP
JSR PROG
ASLA
RTS
ASLA
WHORAP: BSR WDIAP
ADD DATO
LDA PERP
ADD POSM
DECA
STA POSM
ASLA
RTS
ADD POSM
WPER:
JSR RWDOG
STA POSM
MOV #0,DATO ;VER PERIO ACTUAL
RTS
MOV #0,DATO+1
WDIAP:
MOV #AMOM1,POSM
MOV #0,DATO+3
LDA DIAP
MOV #0,PER
ASLA
LDA DOWR
STA DATO
STA DIA
213
;TOMA DIA SEMAN
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
JSR MDIA10
BRA MRPER1
MRPER1: JSR READ
;LEER PROGRAM
WPERM1: CMP DATO
CMP #$AA
BEQ NOPPR
BLO NOPPR
;NO HAY PROGRAM
BEQ WMIN1
CMP HRR
GRBP1:
STA DATO
BLO WPERM1
JSR IREAD
BNE NOPPR
STA DATO+1
JSR IREAD
GRPER:
LDA PER
CMP MINR
STA DATO+2
BLS WPERM2
MOV #$FF,DATO+3
DEC POSM
DEC POSM
NOPPR:
LDA PER
BRA NOPPR
CMP #4
WPERM2: DEC POSM
BEQ WFPER1
JSR READ
INC POSM
CMP DATO
INC POSM
BLO NOPPR
INC PER
BNE GRBP1
WMIN1:
PSHA
LDA DOWR
JSR IREAD
MCPER:
CBEQA #0,FWEEK
CMP DATO+1
DECA
BHI GRBP2
BRA NFWEEK
PULA
FWEEK: LDA #6
DEC POSM
NFWEEK: STA DIA
BRA NOPPR
GRBP2:
;VE PROGRA DIA ANTE
MOV #0,PER
STA DATO+1
JSR MDIA10
PULA
MRPER2: JSR READ
STA DATO
CMP #$AA
BRA GRPER
BEQ NOPD
WFPER1: LDA DATO+3
CMP DATO
BNE RCPER
BHI WPERM3
214
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BNE NOPD
MOV #$FF,DATO+3
JSR IREAD
DEC POSM
CMP DATO+1
BRA NOPD
BHS WPERM4
WPERM4: STA DATO+1
DEC POSM
NOPD:
DEC POSM
LDA PER
JSR READ
CMP #4
STA DATO
BEQ WFPER2
INC POSM
INC POSM
BRA GRPND
INC POSM
WFPER2: LDA DATO+3
INC PER
BNE RCPER
BRA MRPER2
LDA DIA
WPERM3: STA DATO
CMP DOWR
JSR IREAD
BNE MCPER
STA DATO+1
MOV #$FF,DATO+2
GRPND:
LDA PER
RCPER:
LDA DATO+2
STA DATO+2
STA PER
INC PER
BHI WPERM5
NEXTPR: JSR RWDOG
BNE NONPR
MOV #$17,DATO ;VE PROX PROGRA
JSR IREAD
MOV #$3B,DATO+1
CMP MINR
MOV #0,DATO+3
BHS WPERM6
MOV #0,PRPER
DEC POSM
LDA DOWR
;TOMA DIA SEMAN
NONPR:
LDA PRPER
STA DIA
CMP #4
JSR MDIA10
BEQ WFPER3
MRPER3: JSR READ
;LEER PROGRAM
INC POSM
CMP #$AA
BEQ NONPR
INC POSM
;NO HAY PROGRAM
INC PRPER
CMP HRR
BRA MRPER3
215
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
WPERM5: CMP DATO
JSR IREAD
BHI NONPR
CMP DATO+1
BEQ WMIN2
BLO GRBP4
GRBP3:
STA DATO
PULA
JSR IREAD
DEC POSM
STA DATO+1
BRA NONPR
GRNPER: LDA PRPER
GRBP4:
STA DATO+1
STA DATO+2
PULA
MOV #$FF,DATO+3
STA DATO
DEC POSM
BRA GRNPER
BRA NONPR
WFPER3: LDA DATO+3
WPERM6: DEC POSM
BNE RCPERP
JSR READ
LDA DOWR ;VE PROGRAM DIA SIG
CMP DATO
MCPERP: CBEQA #6,PWEEK
BHI NONPR
INCA
BNE GRBP3
BRA NPWEEK
WMIN2:
PSHA
NPWEEK: STA DIA
PWEEK:
LDA #0
NOPDD:
LDA PRPER
MOV #0,PRPER
CMP #4
JSR MDIA10
BEQ WFPER4
MRPER4: JSR READ
INC POSM
CMP #$AA
INC POSM
BEQ NOPDD
INC PRPER
CMP DATO
BRA MRPER4
BLO WPERM7
WPERM7: STA DATO
BNE NOPDD
JSR IREAD
JSR IREAD
STA DATO+1
CMP DATO+1
GRPNDD: LDA PRPER
BLS WPERM8
STA DATO+2
DEC POSM
MOV #$FF,DATO+3
216
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DEC POSM
LDA DIA
BRA NOPDD
STA PRDIA
WPERM8: STA DATO+1
JSR MDIA10
DEC POSM
ADD PRPER
JSR READ
ADD PRPER
STA DATO
DECA
INC POSM
DECA
BRA GRPNDD
STA POSM
WFPER4: LDA DATO+3
JSR READ
BNE RCPERP
STA ALHR ;PONER PROX
PROGRAM. N ALARMA RTC
LDA DIA
JSR IREAD
CMP DOWR
STA ALMR
BNE MCPERP
MOV #0,FLPR
MOV #$FF,DATO+2
MOV #AMOM1,POSM
RCPERP: LDA DATO+2
STA PRPER
INC PRPER
MWPOD:
LDX #0
MWPRD:
JSR READ
CMP #$AA
BNE SIPRD
BEQ MWPOD
INC POSM
MIPOSM: INC POSM
INCX
INCX
CPX #$A
CPX #$A
BNE MWPRD
BNE MIPOSM
CLC
LDA POSM
BRA NOPRD
CBEQA #$6C,FWPRD
SIPRD:
NOPRD:
SEC
BRA MWPOD
ROR FLPR
FWPRD:
LDA POSM
LSR FLPR
RTS
CBEQA #$6C,FWPRD
STORE:MOV#ADATA,POSM; GUARDA EN
EEPROM
CPX #$A
LDX #0
217
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MSTORE: LDA FLAGS1,X
LDA DATAD3,X
JSR IPROG
AND #$E
INCX
STA DIG
CPX #$C
LDA SEGD
BNE MSTORE
TAX
MOV #ADATAC,POSM
LDA LCDDAT,X
LDA MODO
AND #$F1
JSR IPROG
ORA DIG
LDA CONSIG
STA LCDDAT,X
JSR IPROG
PULA
LDA CONSIG+1
TAX
JSR PROG
LDA DATAD3,X
RTS
AND #$F0
DIG1: TAX
;ESCRITURA EN DISPLAY
DIGITOS CONSIGNA
STA DIG
LDA SEGD
LDA DATAD1,X ;DATO EN A
MDIG:
TAX
STA DIG
DECX
LDA SEGD
LDA LCDDAT,X
TAX
AND #$F
LDA LCDDAT,X
ORA DIG
AND #$10
STA LCDDAT,X
ORA DIG
RTS
STA LCDDAT,X
DPMH:
RTS
BNE SIDT1
DIG2: TAX
;ESCR.EN DISPLAY 2
DIGITOS MSB MEDIDA
JMP NODT
SIDT1:
LDA DATAD2,X ;DATO EN A
;SI
;NO
BRSET 6,FLAGS2,SIDT2 ;T DISPLAY?
JMP NODT
BRA MDIG
;NO
SIDT2: BRCLR 5,FLAGS2,SIDT3 ;SI,PRG PRM?
DIG3: PSHA
;ESCR.EN DISPLAY 2
DIGITOS LSB MEDIDA
TAX
LDA CONF2 ;CONTR PROGRAM?
JMP DPART
;DATO EN A
SIDT3:
218
;SI
BRSET 6,FLAGS1,DHP ;PROGRAM?
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRCLR 2,FLAGS2,NDBLKH
INC SEGD
BRCLR 5,PTD,NDBLKH
LDA #$A
BRCLR 6,PTD,NDBLKH
JSR DIG2
LDA CRINT
DPMIN:
BSET 7,LCDDAT+9
BEQ NDBLKH
BRSET 6,FLAGS1,DMP ;PROGRAM?
JMP DPBLK
MOV #0,BIN ;NO
NDBLKH: MOV #0,BIN ;NO
MOV MINR,BIN+1
MOV HRR,BIN+1
BRA DPMN
BRA DPHR
DHP:
DMP:
BRCLR 2,FLAGS2,NDBLK
LDA MINP
CBEQA #$AA,DPNOM
BRCLR 5,PTD,NDBLK
MOV #0,BIN
BRCLR 6,PTD,NDBLK
MOV MINP,BIN+1
LDA CRINT
DPMN:
JSR BINDEC
BEQ NDBLK
MOV #6,SEGD
JMP DPBLK
LDA DECIM+2
NDBLK:
LDA HORAP
JSR DIG3
;ESCRIBIR MIN
CBEQA #$AA,DPNOH
INC SEGD
MOV #0,BIN
LDA DECIM+3
MOV HORAP,BIN+1
JSR DIG3
DPHR:
JSR BINDEC
JMP FDPMH
MOV #1,SEGD
DPNOM:
MOV #6,SEGD
LDA DECIM+2
LDA #$F
JSR DIG2
JSR DIG3
;ESCRIBIR H
INC SEGD
INC SEGD
LDA DECIM+3
LDA #$F
JSR DIG2
JSR DIG3
BRA DPMIN
JMP FDPMH
DPNOH:
MOV #1,SEGD
DPART:
MOV HORA,BIN
LDA #$A
MOV MIN,BIN+1
JSR DIG2
JSR BINDEC
219
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV #1,SEGD
AND #$F1
LDA DECIM
STA LCDDAT+7
JSR DIG2
RTS
INC SEGD
NODT: BRSET 5,FLAGS2,DPARM
;PROGRA PARAM?
LDA DECIM+1
LDA MEDD
JSR DIG2
CBEQA #3,FMED
BCLR 7,LCDDAT+9
CMP #$FF
BCLR 6,LCDDAT+9
BNE NFMED
MOV #6,SEGD
LDA MEDD+1
LDA DECIM+2
CMP #$80
JSR DIG3
BCS FMED
INC SEGD
NFMED:
LDA DECIM+3
MOV MEDD+1,BIN+1
JSR DIG3
BRA YADPM
RTS
DPBLK:
MOV MEDD,BIN ;NO,MED N DPLY
FMED:
LDA LCDDAT+1
MOV #$A,DECIM+1
MOV #$A,DECIM+2
AND #$10
MOV #$F,DECIM+3
STA LCDDAT+1
BRA DFMED
LDA LCDDAT+2
DPARM:
AND #$10
BRCLR 6,FLAGS2,SIDPM
BRA DPART
STA LCDDAT+2
SIDPM:
BCLR 7,LCDDAT+9
LDA DATO
PSHA
BCLR 6,LCDDAT+9
LDA DATO+1
LDA LCDDAT+5
PSHA
AND #$F
LDA POSM
STA LCDDAT+5
CMP #2
LDA LCDDAT+6
BNE NMUL10
AND #1
JSR MUL10
STA LCDDAT+6
NMUL10: MOV DATO,BIN
LDA LCDDAT+7
220
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV DATO+1,BIN+1
FDPMH:
PULA
BSET 6,LCDDAT+9
RTS
STA DATO+1
DOMED:
BSET 6,LCDDAT+6
PULA
BSET 5,LCDDAT+6
STA DATO
LDA NMED
YADPM:
JSR BINDEC
CBEQA #2,NDS1
DFMED: MOV #1,SEGD
BSET 4,LCDDAT+6
LDA DECIM+1
BRA SDS1
JSR DIG2
NDS1:
INC SEGD
SDS1:
BCLR 4,LCDDAT+6
LDA NMED
LDA DECIM+2
CMP #3
JSR DIG2
BCC NDS2
BCLR 7,LCDDAT+9
BSET 2,LCDDAT+7
MOV #6,SEGD
BRA SDS2
LDA DECIM+3
NDS2:
JSR DIG3
SDS2:
BCLR 2,LCDDAT+7
LDA NMED
BRCLR 4,FLAGS1,SDTRI
CMP #4
LDA NMED
BNE NDS3
BNE DOMED
BSET 1,LCDDAT+7
SDTRI:
LDA LCDDAT+6
BCLR 7,LCDDAT+6
AND #$F
BRA SDS3
STA LCDDAT+6
NDS3:
LDA LCDDAT+7
BCLR 1,LCDDAT+7
BSET 7,LCDDAT+6
AND #$F3
SDS3:
LDA NMED
STA LCDDAT+7
CBEQA #2,SDS4
BRCLR 4,FLAGS1,NODI
CMP #4
BRSET 5,FLAGS2,NODI
BNE NDS4
BSET 1,LCDDAT+7
SDS4:
BRA FDPMH
NODI:
BSET 3,LCDDAT+7
BRA YDS4
BCLR 1,LCDDAT+7
NDS4:
221
BCLR 3,LCDDAT+7
MEMORIA
VI. Código fuente
YDS4:
Capítulo 1. Código de la tarjeta TX98
LDA NMED
JSR IREAD
CMP #3
STA CONSP+1
BCS FDPMH
STA REG14+1
BCLR 6,LCDDAT+9
MOV #AP07,POSM
RTS
JSR READ
RPAR:
MOV #0,POSM
STA TDON
JSR READ
STA REG15
STA HISTEP
JSR IREAD
STA REG11
STA TDOFF
JSR IREAD
STA REG15+1
STA ZM
LDA #0
STA REG11+1
STA REG16
JSR IREAD
MOV #AP10,POSM
STA DATO+1
JSR READ
STA REG12
STA FMOD
MOV #0,DATO
STA REG16+1
JSR MUL10
MOV #AP11,POSM
MOV DATO,TLIMF
JSR READ
MOV DATO+1,TLIMF+1
STA BP
JSR IREAD
STA REG17
STA REG12+1
JSR IREAD
JSR IREAD
STA TI
STA DIFET
STA REG17+1
STA REG13
JSR IREAD
LDA #0
STA REG18
STA REG13+1
TAX
MOV #AP06,POSM
LDA #$A
JSR READ
MUL
STA CONSP
STA TREL
STA REG14
JSR IREAD
222
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA BPP
BSET 7,CODE ;CODIGO INCORRECTO
STA REG18+1
LDA #1
LDA VERS
STA CODERR
STA REG19
JMP TRERR
RTS
CODEOK: LDA DIRDAT
TRANS: JSR RWDOG
TRANSMISION SERIE
;RUTINA
BEQ SIEDIR
CMP #$38
BRSET 6,FLAGS3,SITR ;HA HABIDO
RECEPCION DE DATOS?
RTS
SITR:
BCS DIROK
SIEDIR: BSET 7,CODE ;ERROR DIREC DAT
;NO
BCLR 6,FLAGS3
LDA #2
;SI
MOV #0,IBUF
STA CODERR
LDA #$FF
JMP TRERR
DIROK:
STA CRC
LDA FFILT
BEQ NOFST
STA CRC+1
LDA ERRCRC
;ERROR DE CRC?
LDA REG2+1
BEQ NOECRC
;NO
ORA #$80
BRA SIFST
LDA #0
STA ERRCRC
NOFST:
;SI
LDA REG2+1
AND #$7F
RTS
SIFST:
NOECRC: JSR DELAY
STA REG2+1
BCLR 5,SCC2 ;QUITA INTERRU RECEP
JSR TRINIT
BCLR 2,SCC2 ;NO PERM RECEPCIO
LDA CODE
BSET 3,SCC2 ;PERM TRANSMISION
CBEQA #$10,SIWR
LDA SCS1
LDA NDAT
BSET 2,PTB ;PON ENABLE TRANSMI
ASLA
JSR DELAY
STA SCDR
LDA CODE
JSR CRCCAL
WAIT0:
CBEQA #4,CODEOK
;LECTURA REG
;TRANSMITIR Nº BYTES
JSR RWDOG
BRCLR 7,SCS1,WAIT0
CBEQA #$10,CODEOK
LDA DIRDAT
223
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DECA
BRCLR 7,SCS1,WAIT4
ASLA
LDA #0
TAX
STA SCDR
MTRDAT: LDA REG1,X
STA SCDR
JSR CRCCAL
;TRANSM PRIME BYTE
WAIT5:
JSR CRCCAL
WAIT1:
JSR RWDOG
BRCLR 7,SCS1,WAIT5
JSR RWDOG
LDA NDATW
BRCLR 7,SCS1,WAIT1
STA SCDR
INCX
JSR CRCCAL
LDA REG1,X
STA SCDR
WAIT6:
;TRANSMI SEGUN BYTE
BRCLR 7,SCS1,WAIT6
JSR CRCCAL
WAIT2:
JSR RWDOG
BRA TRCRC
JSR RWDOG
TRERR:
JSR TRINIT
BRCLR 7,SCS1,WAIT2
LDA CODERR
INCX
STA SCDR
LDA NDAT
JSR CRCCAL
DECA
WAIT7:
STA NDAT
;FINAL TRANSMI DATS?
JSR RWDOG
BRCLR 7,SCS1,WAIT7
BNE MTRDAT ;NO,SEGUIR
TRCRC:
LDHX #0
LDA CRC+1
STA SCDR
JMP TRCRC ;SI,TRANSMITIR CRC
SIWR:
LDA #0
WAIT8:
;ESCRITURA
;TRANSMITIR CRC
JSR RWDOG
BRCLR 7,SCS1,WAIT8
STA SCDR
LDA CRC
JSR CRCCAL
STA SCDR
WAIT3:
;TRANSMIT COD ERROR
JSR RWDOG
WAIT9:
JSR RWDOG
BRCLR 7,SCS1,WAIT3
BRCLR 7,SCS1,WAIT9
LDA DIRDAT
JSR DELAY
STA SCDR
BCLR 2,PTB ;QUIT ENABLE TRANSM
;TRANSM DIREC DATO
JSR CRCCAL
WAIT4:
JSR DELAY
JSR RWDOG
BCLR 3,SCC2 ;NO PERM TRANSMI
224
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BSET 2,SCC2 ;PERMISO RECEP
STA MODO
BSET 5,SCC2 ;ENAB INTERRUP RECEP
BSET 3,FLAGS1
LDA #$FF
LDA REG2+1
STA CRC
AND #1
STA CRC+1
STA BIN
LDA CODE
LDA MANDO
CBEQA #$10,YAWR
AND #$FE
RTS
ORA BIN
YAWR:
LDA DIRDAT
STA MANDO
DECA
BRCLR 0,MANDO,ONORD
ASLA
BSET 0,FLAGS3
TAX
BRA OFFORD
LDA DAT1R
ONORD:
STA REG1,X
OFFORD: JSR STORE
INCX
FWR:
BCLR 0,FLAGS3
RTS
LDA DAT2R
NCHMOD: CMP #4
STA REG1,X
BNE NCHCON
LDA NDATW
LDA REG4
DECA
STA CONSIG
BEQ FWR
LDA REG4+1
INCX
STA CONSIG+1
LDA DAT3R
JSR STORE
STA REG1,X
NCHREG: RTS
INCX
NCHCON: CMP #9
LDA DAT4R
BCS NCHREG
STA REG1,X
CMP #$10
LDA DIRDAT
BCC NCHPAR
CMP #2
CMP #$D
BNE NCHMOD
BEQ NCHREG
LDA REG2
SUB #9
225
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
ASLA
BRCLR 7,SCS1,WAITB
STA POSM
RTS
LDA DIRDAT
MUL10: ASL DATO+1
DECA
LDA DATO+1
ASLA
STA BIN+1
TAX
ROL DATO
LDA REG1,X
LDA DATO
JSR IPROG
STA BIN
INCX
ASL DATO+1
LDA REG1,X
ROL DATO
JSR IPROG
ASL DATO+1
INCX
ROL DATO
LDA REG1,X
LDA DATO+1
JSR IPROG
ADD BIN+1
INCX
STA DATO+1
LDA REG1,X
LDA DATO
JSR PROG
ADC BIN
JSR RPAR
STA DATO
RTS
RTS
NCHPAR: NOP
;CAM PROGRAM
MULDIV: MOV #0,PRDT
RTS
ASL PRDT+2
TRINIT: LDA DIR
STA SCDR
;INI TRANSM
ROL PRDT+1
;TRANSMITIR DIREC
ROL PRDT
JSR CRCCAL
WAITA:
ASL PRDT+2
JSR RWDOG
ROL PRDT+1
BRCLR 7,SCS1,WAITA
ROL PRDT
LDA CODE
LDA PRDT+2
STA SCDR
;TRANS CODIGO
STA MEM+5
JSR CRCCAL
WAITB:
LDA PRDT+1
JSR RWDOG
STA MEM+4
226
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
LDA PRDT
ADD MEM+5
STA MEM+3
STA PRDT+2
ASL PRDT+2
LDA PRDT+1
ROL PRDT+1
ADC MEM+4
ROL PRDT
STA PRDT+1
ASL PRDT+2
LDA PRDT
ROL PRDT+1
ADC MEM+3
ROL PRDT
STA PRDT
ASL PRDT+2
LDA #0
ROL PRDT+1
STA RESUL
ROL PRDT
STA RESUL+1
LDA PRDT+2
STA RESUL+2
STA MEM+2
LDX #$11
LDA PRDT+1
CMPD:
LDA PRDT
STA MEM+1
CMP BIN
LDA PRDT
BCC COC1
STA MEM
ASL RESUL+2
ASL PRDT+2
ROL RESUL+1
ROL PRDT+1
ROL RESUL
ROL PRDT
BRA YACOC
LDA PRDT+2
COC1:
SEC
ADD MEM+2
ROL RESUL+2
STA PRDT+2
ROL RESUL+1
LDA PRDT+1
ROL RESUL
ADC MEM+1
LDA PRDT
STA PRDT+1
SUB BIN
LDA PRDT
STA PRDT
ADC MEM
YACOC:
DECX
STA PRDT
ASL PRDT+2
LDA PRDT+2
ROL PRDT+1
227
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
ROL PRDT
SBC #3
BCS WFINDI
STA BIN
CPX #0
BCS YADIG1
BEQ FINDI
INC DECIM
BRA CMPD
BRA MDIG1
WFINDI: CPX #0
YADIG1: LDA BIN+1
BNE COC1
FINDI:
ADD #$E8
RTS
STA BIN+1
BINDEC: MOV #0,DECIM ;PASA BIN EN
BIN Y BIN+1
MOV #0,DECIM+1
LDA BIN
ADC #3
;A 4 DIG DECI
STA BIN
MOV #0,DECIM+2 ;EN
DECIM,DECIM+1,DECIM+2 Y DECIM+3
MDIG2:
LDA BIN+1
LDA #0
SUB #$64
STA FNEG
STA BIN+1
BRCLR 7,BIN,MDIG1
LDA BIN
COM BIN+1
SBC #0
COM BIN
STA BIN
LDA BIN+1
BCS YADIG2
ADD #1
INC DECIM+1
STA BIN+1
BRA MDIG2
LDA BIN
YADIG2: LDA BIN+1
ADC #0
ADD #$64
STA BIN
STA BIN+1
MDIG3:
LDA #$FF
SUB #$A
STA FNEG
MDIG1:
LDA BIN+1
STA BIN+1
LDA BIN+1
SUB #$E8
BCS YADIG3
STA BIN+1
INC DECIM+2
LDA BIN
BRA MDIG3
YADIG3: LDA BIN+1
228
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
ADD #$A
MOV CONSIG+1,DATOFC
STA DECIM+3
JSR SDATO
LDA FNEG
MOV TRET,DATOFC
BEQ FINBD
ASL DATOFC
MOV #$A,DECIM+1
ASL DATOFC
FINBD:
RTS
ASL DATOFC
ASKFC:
LDX #$10
ASL DATOFC
MWAFC:
BRCLR 2,PTA,SAFCR
ASL DATOFC
JSR DELB
LDX #3
DBNZX MWAFC
JSR MSD
JMP NASFCR
MOV TRET+1,DATOFC
SAFCR:
LDA MANDO
JSR SDATO
STA MANDFA
MOV VEL,DATOFC
JSR STTR
JSR SDATO
;ENVIA DAT A FREE-COOL
JSR SEND0I ;CODIGO:0-1
JSR SENDF
JSR SEND1I
BCLR 5,FLAGS4 ;RESP FREE-COOLING
MOV MANDO,DATOFC
LDX #2
LDA FLIM
MRFC1: JSR RDATO
BEQ NOLIM
DBNZX MRFC1
BCLR 3,DATOFC
BRCLR 5,FLAGS4,SIAFC
BCLR 4,DATOFC
NOLIM:
JNOAFC: JMP NOAFC
JSR SDATO
SIAFC:
LDA DATOR
MOV CONSIG,DATOFC
AND #3
ASL DATOFC
CMP #1
ASL DATOFC
BNE JNOAFC
ASL DATOFC
LDX #8
ASL DATOFC
MRFC2: JSR RDATO
;RECI MAND
ASL DATOFC
DBNZX MRFC2
LDX #3
BRSET 5,FLAGS4,JNOAFC
JSR MSD
LDA DATOR
229
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA MANDO
MRFC6: JSR RDATO
AND #$80
DBNZX MRFC6
BEQ NOFS
LDA DATOR
LDA #$FF
STA DECIM+3
BRA SIFS
LDX #8
NOFS:
SIFS:
LDA #0
MRFC7: JSR RDATO ;REC APER COMPUE
STA FFILT
DBNZX MRFC7
LDX #3
MRFC3: JSR RDATO
LDA DATOR
;RECIB TEMP.EXT
STA REG9+1
DBNZX MRFC3
MOV #0,DECIM+1
BRSET 2,DATOR,TEXTN
ASL DECIM+3
LDA DATOR
ROL DECIM+2
AND #7
ASL DECIM+3
STA REG7
ROL DECIM+2
BRA TEXTP
ASL DECIM+3
TEXTN:
LDA DATOR
ROL DECIM+2
ORA #$F8
LDA DECIM+3
STA REG7
STA MEM+3
TEXTP:
LDX #8
;x2
;x4
;x8
LDA DECIM+2
MRFC4: JSR RDATO
STA MEM+2
DBNZX MRFC4
ASL DECIM+3
LDA DATOR
ROL DECIM+2
STA REG7+1
LDA DECIM+3
LDX #3
STA MEM+1
MRFC5: JSR RDATO ;RECI PRESION
;x16
LDA DECIM+2
DBNZX MRFC5
STA MEM
LDA DATOR
ASL DECIM+3
AND #3
ROL DECIM+2
STA DECIM+2
ASL DECIM+3
LDX #8
ROL DECIM+2
230
;x32
MEMORIA
VI. Código fuente
ROL DECIM+1
Capítulo 1. Código de la tarjeta TX98
;x64
STA DECIM+1
ASL DECIM+3
LSR DECIM+1
ROL DECIM+2
ROR DECIM+2
ROL DECIM+1
;x128
LSR DECIM+1
ASL DECIM+3
ROR DECIM+2
ROL DECIM+2
LDA DECIM+1
ROL DECIM+1
;x256
STA REG8
ASL DECIM+3
LDA DECIM+2
ROL DECIM+2
STA REG8+1
ROL DECIM+1
;x512
LDA MANDO
ASL DECIM+3
AND #$18
ROL DECIM+2
CBEQA #$18,NOAFC
ROL DECIM+1
;x1024
CBEQA #8,INMP
LDA DECIM+3
GMF:
LDA MANDO
SUB MEM+3
STA MANDOF
STA DECIM+3
BRA WFACT
LDA DECIM+2
INMP:
LDA MANDOF
SBC MEM+2
AND #$18
STA DECIM+2
BNE GMF
LDA DECIM+1
MOV #2,TOI
SBC #0
BRA GMF
STA DECIM+1
NOAFC:
BSET 5,FLAGS4
LDA DECIM+3
WFACT:
LDA FLIM
SUB MEM+1
BNE NOACTF
STA DECIM+3
LDA MANDO
LDA DECIM+2
CMP MANDFA
SBC MEM
BEQ NOACTF
STA DECIM+2
LDA #$FF
LDA DECIM+1
STA FCACT
SBC #0
RTS
231
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
NOACTF: LDA #0
MSD:
STA FCACT
ASL DATOFC
BCC S0D
NASFCR: RTS
JSR SEND1I
STTR:MOV#$64,TSEND ;TRANSM50 MSEG.ON
BRA S1D
BSR SEND
S0D:
JSR SEND0I
BSR TSP
S1D:
DBNZX MSD
JSR RWDOG ;WATCH-DOG
RTS
RTS
TSP:
RDATO:
MOV #$C,TSEND
WSP:
MOV #$64,TSEG ;RECEP UN BIT
WDATO1: BRSET 2,PTA,YADAT1 ;3*
LDA TSEND
LDA TSEG
BNE WSP
BNE WDATO1
RTS
BRA NODATO
SENDF:
BSR SEND1I
SEND0:
MOV #4,TSEND
YADAT1: MOV #0,TANS
BSET 4,FLAGS4
BRA SEND
SEND1:
MOV #$C,TSEND
SEND:
BSET 1,PTA
WSEND:
MOV #$64,TSEG
WDATO2: BRCLR 2,PTA,YADAT2 ;3*
LDA TSEG
LDA TSEND
BNE WDATO2
BNE WSEND
BRA NODATO
BCLR 1,PTA
YADAT2: BCLR 4,FLAGS4
JSR RWDOG ;WATCH-DOG
LDA #1
RTS
CMP TANS
SEND0I: BSR SEND0
BCC WDATO1
BSR TSP
LDA #8
RTS
CMP TANS
SND1I2: BSR SEND1I
ROL DATOR
SEND1I: BSR SEND1
RTS
BSR TSP
NODATO: JSR RWDOG ;NO RECEP
RTS
SDATO:
BSET 5,FLAGS4 ;ERROR
LDX #8
RTS
232
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
CRCCAL: PSHA
BSR PRDAT
;ENVIAR DATO EN A
PSHX
BSR STPI2C ;STOP
EOR CRC+1
JSR DELAY ;RETARDO
STA CRC+1
LDA ERRPRM
LDX #8
BNE MPROGM
MCRC:
LSR CRC
BSET 4,PTC
ROR CRC+1
PULA
BCC NOCAR
PULX
LDA #$A0
RTS
EOR CRC
IREAD:
INC POSM
STA CRC
READ:
PSHA
LDA #1
JSR RWDOG
EOR CRC+1
MREADM: LDA #0
STA CRC+1
NOCAR:
;LECT MEM EEPROM
STA ERRPRM
DBNZX MCRC
PULA
PULX
PSHX
PULA
BSR SENDAD ;ENVIAR DIRECPOSM
RTS
BSR STRI2C ;START
IPROG:
BSR PROG
LDA #$A1
INC POSM
BSR PRDAT
;ENVIA DIREC DEVICE
RTS
JSR DATAR
;TOMAR DATO EN A
PROG:
PSHX
;ESCRIT MEM EEPROM
BSR STPI2C ;STOP
PSHA
PULX
BCLR 4,PTC
PSHA
JSR RWDOG
;WATCH-DOG
LDA ERRPRM
MPROGM: LDA #0
BNE MREADM
STA ERRPRM
PULA
BSR SENDAD ;ENVIAR DIREC POSM
RTS
PULA
SENDAD: BSR STRI2C ;START
PSHA
LDA #$A0
233
MEMORIA
VI. Código fuente
BSR PRDAT
Capítulo 1. Código de la tarjeta TX98
;DIREC DEVICE
BSET 4,PTB
LDA POSM
BSR PRDAT
JSR DRWDOG
;ENVIAR DIREC
BRCLR 5,PTB,NACKEP
RTS
JSR DRWDOG
STRI2C: BSET 5,PTB
;START BUS I2C
BRCLR 5,PTB,NACKEP
JSR DELI2C
JSR DRWDOG
BSET 4,PTB
BRCLR 5,PTB,NACKEP
JSR DELI2C
JSR DRWDOG
BCLR 5,PTB
BRCLR 5,PTB,NACKEP
JSR DELI2C
JSR DRWDOG
BCLR 4,PTB
BRCLR 5,PTB,NACKEP
JSR DELI2C
JSR DRWDOG
RTS
LDA #$FF
STPI2C: BCLR 5,PTB ;STOP BUS I2C
STA ERRPRM
JSR DELI2C
NACKEP: BCLR 4,PTB
BSET 4,PTB
BSET 5,DDRB
JSR DELI2C
JSR DELI2C
BSET 5,PTB
RTS
JSR DELI2C
DATAR:
I2C
RTS
PRDAT:
LDX #8
MPROG:
ASLA
LDX #8
;ENVIA DATO BUS I2C
MREAD:
JSR DELI2C
BCLR 5,PTB
BRSET 5,PTB,DATA1
BRA DAT0
BSET 5,PTB
DAT0:
BSR MEMCLK
JSR DELI2C
BSET 4,PTB
BCS DAT1
DAT1:
BCLR 5,DDRB ;LEER DATO BUS
CLC
BRA DATA0
DBNZX MPROG
BCLR 5,DDRB ;ACKNOWLEDGE
DATA1:
SEC
DATA0:
ROLA
BCLR 4,PTB
JSR DELI2C
234
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DBNZX MREAD
NOP
BSET 5,DDRB
NOP
BSET 5,PTB
NOP
BSR MEMCLK
NOP
RTS
NOP
MEMCLK: JSR DELI2C ;CLOCK BUS I2C
BCLR 5,PTC
BSET 4,PTB
NOP
JSR DELI2C
NOP
BCLR 4,PTB
NOP
JSR DELI2C
NOP
RTS
NOP
INDAC:
BSET 7,PTC
RTS
NOP
SDDAC:
LDX #8
NOP
MSDA:
ASLA
NOP
BCS DAD1
NOP
BCLR 6,PTC
NOP
BRA DAD0
BSET 5,PTC
DAD1:
BSET 6,PTC
NOP
DAD0:
JSR DACLK
NOP
DBNZX MSDA
NOP
BCLR 6,PTC
NOP
NOP
NOP
NOP
BSET 6,PTC
NOP
NOP
NOP
NOP
NOP
NOP
BCLR 7,PTC
NOP
NOP
NOP
NOP
BCLR 6,PTC
NOP
235
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
NOP
DELB:
NOP
PSHX
LDX #0
RTS
MDELB:
DACLK:
;RETARDO BASE
NOP
;CLOCK CONVER D/A
BSR DELI2C
DBNZX MDELB
NOP
PULX
NOP
RTS
NOP
DELI2C: NOP
NOP
NOP
BSET 5,PTC
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BCLR 5,PTC
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RTS
NOP
DELAYS: PSHX
;RETARDO BUS I2C
RTS
LDX #$10
DRWDOG: BSR DELI2C
BRA MDEL
RWDOG:
DELAY:
PSHX
STA WDOG
LDX #$40
MDEL:
LDA #$FF
RTS
BSR DELB
RTC:
PSHA
;INTERR REAL T CLOCK
DBNZX MDEL
LDA RTCSR
PULX
LDA ALHR
RTS
BRSET 7,FLAGS1,SIPRA1
236
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
JMP FIRTC
BNE NOINH2
SIPRA1: LDA PER
MOV #0,ALMR
BNE SIPRA2
LDA HRR
JMP FIRTC
INCA
SIPRA2: LDA PRDIA
CMP #$18
CBEQ DOWR,SIPRA3
BNE NOIND2
JMP FIRTC
MOV #0,ALHR
SIPRA3: BRSET 2,FLAGS3,IMIN
BRA YAIAL2
BSET 2,FLAGS3 ;INTERR ALARM
NOIND2: STA ALHR
LDA MINR
BRA YAIAL2
INCA
NOINH2: STA ALMR
CMP #$3C
YAIAL2: BSET 0,FLAGS4 ;FLAG PARA VER
NUEVO PERIODO
BNE NOINH1
FIRTC:
MOV #0,ALMR
PULA
RTI
LDA HRR
INTAD: PSHA
;INTERRUPCION
CONVERTIDOR A/D
INCA
CMP #$18
PSHH
BNE NOIND1
PSHX
MOV #0,ALHR
LDA CHAN
BRA YAIAL1
BNE ADTIMP
NOIND1: STA ALHR
LDX #$D
BRA YAIAL1
MDSI:
NOINH1: STA ALMR
YAIAL1: MOV PRPER,PER
NUEVO PERIODO
INCX
STA AN0,X
BRA FIRTC
IMIN:
LDA AN0,X
INCX
;PONER
DECX
BCLR 2,FLAGS3
DECX
LDA MINR
DECX
INCA
BPL MDSI
CMP #$3C
237
;SONDA TEMP RETOR
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BRSET 3,FLAGS3,NFAD1
STA AN0
LDA ADRH
BRA OKMSI
LDA ADRL
MENORI: LDA ANAUX+1 ;NUEV MED <
JMP FINAD
NFAD1:
SUB #$F8
BCLR 3,FLAGS3
LDA ANAUX
LDA ADRH
SBC #$FF
AND #3
BCC OKMSI
;DIFERENCIA < D 8
STA AN0
LDA AN0+3
;DIFERENCIA >D 8
LDA ADRL
SUB #8
STA AN0+1
STA AN0+1
LDA NAD
LDA AN0+2
CMP #8
SBC #0
BNE OKMSI
STA AN0
;RESTAR 8 A MED ANTE
LDA AN0+1
OKMSI:
BRA FINAD
SUB AN0+3
ADTIMP: LDX #$D ;SOND TEMP IMPUL
STA ANAUX+1
MDSE:
LDA AN1,X
LDA AN0
INCX
SBC AN0+2
INCX
STA ANAUX
STA AN1,X
BCS MENORI ;NUEV MED MENOR
DECX
LDA ANAUX+1 ;NUEVA MED MAYOR
DECX
SUB #8
DECX
LDA ANAUX
BPL MDSE
SBC #0
BRSET 3,FLAGS3,NFAD2
BCS OKMSI
;DIFERENCIA < DE 8
LDA ADRH
LDA AN0+3
;DIFERENCIA >DE 8
LDA ADRL
;SUMAR 8 A MED ANTER
JMP FINAD
ADD #8
STA AN0+1
NFAD2:
BCLR 3,FLAGS3
LDA AN0+2
LDA ADRH
ADC #0
AND #3
238
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
STA AN1
LDA AN1+3
LDA ADRL
SUB #8
STA AN1+1
STA AN1+1
LDA NAD
LDA AN1+2
CMP #8
SBC #0
BNE FINAD
STA AN1
LDA AN1+1
FINAD:
;DIFERENCIA > DE 8
;RESTAR 8 A MED ANTE
LDA NAD
SUB AN1+3
CMP #8
STA ANAUX+1
BEQ FINADT
LDA AN1
INC NAD
SBC AN1+2
FINADT: BCLR 6,ADSCR ;QUITA INTER
A/D
STA ANAUX
PULX
BCS MENORE ;NUEVA MED ES <
PULH
LDA ANAUX+1 ;NUEVA MED ES >
PULA
SUB #8
RTI
LDA ANAUX
TIMER:
SBC #0
BCS FINAD
;DIFERENCIA <DE 8
LDA AN1+3
;DIFERENCIA >DE 8
ADD #8
PSHA
;INTERR TIMER
LDA TSEG
BEQ NTSEG
DEC TSEG ;DECREMENTA T SEG
;SUMAR 8 A MED ANTER
NTSEG:
STA AN1+1
LDA TSEND
BEQ NTSEND
LDA AN1+2
DEC TSEND ;DECREMENT T ENVI BIT
ADC #0
NTSEND: BRCLR 4,FLAGS4,NTANS
STA AN1
INC TANS ;INCREMENT T BIT RESP
BRA FINAD
NTANS:
MENORE: LDA ANAUX+1;NUEV MED ES <
INC MSEG
LDA MSEG
SUB #$F8
CBEQA #$C8,NFIT1
LDA ANAUX
JMP FINIT
SBC #$FF
NFIT1: MOV #0,MSEG
BCC FINAD ;DIFERENCIA < DE 8
239
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
INC DSEG
BEQ WCTONC
BRSET 0,FLAGS3,NODTS
MOV TCOFC,TROFC
BRSET 0,MODO,NODTS
BCLR 4,RELE ;QUITAR RELE CALOR
LDA FMOD
BRA NODTS
BNE NODTS
DTROFC: LDA TROFC
LDA TRONF
BEQ WCTOFC
BEQ DTROFF
DEC TROFC
DEC TRONF
LDA TROFC
LDA TRONF
BNE NODTS
BNE WTRC
WCTONC: LDA TCONC
WCTOFF: LDA TCOFF
BEQ WCTOFC
BEQ WCTONF
MOV TCONC,TRONC
MOV TCOFF,TROFF
BSET 4,RELE ;ACTUAR RELE CALOR
BCLR 5,RELE ;QUITAR RELE FRIO
NODTS:
BRA WTRC
LDA DSEG
CMP #5
DTROFF: LDA TROFF
BNE NCRINT
BEQ WCTOFF
COM CRINT
DEC TROFF
BSET 3,FLAGS3
LDA TROFF
LDA CHAN
BNE WTRC
BEQ NADR1
WCTONF: LDA TCONF
MOV #0,CHAN
BEQ WCTOFF
MOV #$64,ADSCR ;PONER INTS.A/D
SONDA TEMP.RET.
MOV TCONF,TRONF
JMP FINIT
BSET 5,RELE ;ACTUAR RELE FRIO
WTRC:
NADR1:
LDA TRONC
MOV #1,CHAN
MOV #$65,ADSCR ;PONER INTS.A/D
SONDA TEMP.IMP.
BEQ DTROFC
DEC TRONC
JMP FINIT
LDA TRONC
NCRINT: CMP #$A
BNE NODTS
BCC NFIT2
WCTOFC: LDA TCOFC
240
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
JMP FINIT
BCLR 6,FLAGS1
NFIT2: MOV #0,DSEG
LDA FLAGS2
COM CRINT
AND #$E0
BSET 3,FLAGS3
STA FLAGS2
LDA CHAN
BSET 7,FLAGS2
BEQ NADR2
BCLR 2,FLAGS4
MOV #0,CHAN
NTINT:
MOV #$64,ADSCR ;PONER INTS.A/D
SONDA TEMP.RET.
BEQ NDTV
DEC TVENT
BRA SADREM
NADR2:
LDA TVENT
NDTV:
MOV #1,CHAN
LDA CRONO
CMP #5
MOV #$65,ADSCR ;PONER INTS.A/D
SONDA TEMP.IMP.
BCS NCHCR
SADREM: INC CRONO
MOV #0,CRONO
BSET 5,FLAGS3
BRSET 5,FLAGS2,NCHCR
LDA TDON
BRSET 6,FLAGS1,NCHCR
BEQ NTDON
BRSET 2,FLAGS2,NCHCR
DEC TDON
NTDON:
BRSET 3,FLAGS2,NCHCR
;DECREMENTAR TDON
LDA CONF2
LDA TDOFF
BEQ NTDOFF
BEQ NODTIM
DEC TDOFF ;DECREMENTAR TDOFF
BRSET 6,FLAGS2,NODTIM
BSET 6,FLAGS2
NTDOFF: LDA TIMEFC
BRA NCHCR
BEQ NDFC
DECA
NODTIM: BCLR 6,FLAGS2
STA TIMEFC
NCHCR:
NDFC:
BEQ NDTRAP
LDA TINT
DEC TRAP
BEQ NTINT
DEC TINT
LDA TRAP
NDTRAP: INC GHORA
;DECREMENTAR TINT
BNE NTINT
LDA GHORA
BCLR 0,FLAGS1
CMP #$3C
BNE NGHORA
241
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
MOV #0,GHORA
PULA
LDA POSM
RTI
PSHA
RECEP:
PSHA
;INTERR RECEPSERIE
MOV #AGHORA,POSM
LDA SCS1
LDA DOWR
LDA SCDR
JSR IPROG
PSHA
LDA HRR
LDA IBUF
JSR IPROG
BNE NODR0 ;NO
LDA MINR
PULA
JSR PROG
CMP DIR
PULA
BEQ SIREC
STA POSM
INITR:
NGHORA: LDA TSAT
;PRIMER DATO?
LDA #0
STA IBUF
BEQ NDTSAT
LDA #$FF
DEC TSAT
STA CRC
NDTSAT: LDA TOI
STA CRC+1
BEQ NDTOI
JMP FINR
DEC TOI
NDTOI:
;TOMAR DATO
SIREC:
LDA TSTOP
JSR CRCCAL
MOV #1,IBUF
BEQ NDTSTP
JMP FINR
DECA
NODR0:
STA TSTOP
CMP #1
;SEGUNDO DATO?
BNE NODR1 ;NO
NDTSTP: LDA TNOI
PULA
BEQ NDTNOI
STA CODE
DECA
JSR CRCCAL
STA TNOI
MOV #2,IBUF
NDTNOI: NOP
FINIT:
;SI,GUARDAR COD
JMP FINR
LDA T1SC
NODR1:
CMP #2
;TERCER DATO?
AND #$7F
BNE NODR2 ;NO
STA T1SC
PULA
242
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
CMP #0
BNE NODR5 ;NO
BNE INITR
LDA CODE
JSR CRCCAL
CMP #$10
MOV #3,IBUF
BEQ DATR6
JMP FINR
PULA
NODR2:
CMP #3
;CUARTO DATO?
BEQ INITR
PULA
STA NDAT
DE DATOS
CMP #0
BEQ INITR
STA DIRDAT ;SI,GUARDAR EN
DIRECCION DATO
;NO,GUARDAR NUMERO
WCRC1:
JSR CRCCAL
WCRC2:
MOV #$C,IBUF
JMP FINR
JSR CRCCAL
DATR6:
PULA
MOV #4,IBUF
CMP #0
JMP FINR
BEQ INITR
CMP #4
;SI
CMP #0
BNE NODR3 ;NO
NODR3:
;SI,ESCRITURA?
;QUINTO DATO?
STA NDATW
BNE NODR4
JSR CRCCAL
PULA
MOV #6,IBUF
CMP #0
JMP FINR
BNE INITR
NODR5:
CMP #6
;SEPTIMO DATO?
JSR CRCCAL
BNE NODR6 ;NO
MOV #5,IBUF
PULA
JMP FINR
CMP #0
NODR4:
CMP #5
;SEXTO DATO?
BNE NINITR
NODR6:
JMP INITR
CMP #7
;OCTAVO DATO?
BNE NODR7 ;NO
NINITR: STA NDAT
PULA
JSR CRCCAL
STA DAT1R ;SI,GUARDA 1DAT RECIB
MOV #7,IBUF
JSR CRCCAL
JMP FINR
LDA NDAT
243
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DECA
MOV #9,IBUF
STA NDAT
BRA FINR
MOV #8,IBUF
NODR8:
JMP FINR
NODR7:
CMP #9
;DECIMO DATO?
BNE NODR9 ;NO
CMP #8
;NOVENO DATO?
PULA
BNE NODR8 ;NO
STA DAT3R ;SI,GUARDAR TERCER
DATO RECIBIDO
PULA
JSR CRCCAL
STA DAT2R ;SI,GUARDA 2 DAT RECIB
MOV #$A,IBUF
JSR CRCCAL
BRA FINR
LDA NDAT
NODR9:
DECA
CMP #$A
BNE NODRA ;NO
STA NDAT
PULA
BEQ WCRC2
STA DAT4R ;SI,GUARDA 4DAT RECIB
BEQ NECRC1 ;SI
JMP WCRC1
LDA #$FF
NODRA:
CMP #$C
STA ERRCRC ;NO,ERROR CRC
BNE NODRC
NECRC1: MOV #$D,IBUF
PULA
CMP CRC+1
NODRC:
;UNDECIMO DATO?
BRA FINR
;CRC CORRECTO?
PULA
STA ERRCRC
CMP CRC
NECRC2: BSET 6,FLAGS3 ;FIN RECEP DAT
BEQ NECRC2
FINR:
PULA
LDA #$FF
SLEEP:
NOP
RTI
LDA LVISR ;INTERRUPCION BAJA TENSION
AND #$80
BEQ WAKE
LDA LVISR
ORA #$10
STA LVISR
244
RTI
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
BCLR 7,LCDCR ;DISABLE LCD
MOV #0,T1SC ;DISABLE TIMER
MOV #$FF,DDRA
;TODOS LOS PUERTOS SALIDAS
MOV #$FF,DDRB
;*****MENOS PTA EN EMULACION
MOV #$FF,DDRC
MOV #$FF,DDRD
;
STOP
WAKE:
;MODO STOP
LDA LVISR
ORA #$10
STA LVISR
MOV #0,CHECK
LDHX #$260
TXS
LDHX #0
JMP NSTART
VERS:
DB 1
DEFVAL: DB 5,$A,$F,$14,$14,0,1,$2C,$1E,$1E
DB 0,0,$1E,$78,5,$64,0,0,0,0,0
DEFDAT: DB 0,0,0,0,1,0,$DC,1,$2C,0,$96,0
;DATOS DISPLAY DIGITOS CONSIGNA
;A=$A - L=$B - H=$C
DATAD1: DB $AF,$A0,$6D,$E9,$E2,$CB,$CF
DB $A1,$EF,$EB,$E7,$E,$E6
;DATOS DISPLAY 2 PRIMEROS DIGITOS MEDIDA
;-=$A - d=$B - r=$C - C=$D
DATAD2: DB $AF,$A0,$CB,$E9,$E4,$6D,$6F
DB $A8,$EF,$ED,$40,$E3,$42,3
;DATOS DISPLAY 2 SEGUNDOS DIGITOS MEDIDA
;A=$A - b=$B - C=$C - d=$D - Y=$E - -=$F
DATAD3: DB $FA,$A,$BC,$9E,$4E,$D6,$F6,$8A
245
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DB $FE,$DE,$EE,$76,$F0,$3E,$5E,4
ORG $E800
TABLAC: DW $03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7
DW $03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7
DW $03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7
DW $03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7,$03E7
DW $03E7,$03E7,$03E7,$03E7,$03E7,$03E0,$03D8,$03D0
DW $03C8,$03C0,$03B8,$03B0,$03A8,$03A0,$0398,$0390
DW $0388,$0380,$0378,$0370,$0368,$0360,$0358,$0350
DW $0348,$0340,$0338,$0330,$0328,$0320,$0318,$0310
DW $030C,$0308,$0300,$02FC,$02F8,$02F4,$02F0,$02EC
DW $02E8,$02E4,$02E0,$02DC,$02D8,$02D4,$02D0,$02CC
DW $02C8,$02C4,$02C0,$02BC,$02B8,$02B4,$02B0,$02AD
DW $02AA,$02A7,$02A4,$02A1,$029D,$029A,$0297,$0294
DW $0290,$028D,$028A,$0288,$0285,$0282,$027F,$027C
DW $0279,$0276,$0273,$0270,$026D,$026A,$0267,$0264
DW $0261,$025E,$025B,$0258,$0255,$0250,$024D,$024A
DW $0247,$0245,$0243,$0241,$023E,$023C,$023A,$0238
DW $0236,$0234,$0232,$0230,$022E,$022C,$022A,$0228
DW $0226,$0224,$0222,$0220,$021E,$021C,$021A,$0218
DW $0216,$0214,$0212,$0210,$020E,$020C,$020A,$0208
DW $0206,$0204,$0202,$0200,$01FE,$01FC,$01FA,$01F8
DW $01F6,$01F4,$01F2,$01F0,$01EE,$01EC,$01EA,$01E8
DW $01E6,$01E4,$01E2,$01E0,$01DE,$01DC,$01DA,$01D8
DW $01D6,$01D4,$01D2,$01D1,$01CF,$01CE,$01CD,$01CB
DW $01CA,$01C9,$01C7,$01C6,$01C5,$01C3,$01C2,$01C0
DW $01BE,$01BC,$01BA,$01B9,$01B7,$01B5,$01B3,$01B1
DW $01AF,$01AE,$01AD,$01AB,$01AA,$01A9,$01A7,$01A6
DW $01A5,$01A3,$01A2,$01A1,$019F,$019E,$019D,$019B
DW $019A,$0199,$0197,$0196,$0195,$0193,$0192,$0191
246
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DW $0190,$018F,$018E,$018D,$018B,$018A,$0189,$0187
DW $0186,$0185,$0184,$0183,$0182,$0181,$017F,$017E
DW $017D,$017B,$017A,$0179,$0177,$0176,$0175,$0174
DW $0173,$0172,$0171,$016F,$016E,$016D,$016B,$016A
DW $0169,$0167,$0166,$0165,$0164,$0163,$0162,$0161
DW $015F,$015E,$015C,$015B,$015A,$0159,$0158,$0157
DW $0156,$0155,$0154,$0153,$0152,$0151,$014F,$014E
DW $014D,$014C,$014B,$014A,$0149,$0148,$0147,$0146
DW $0145,$0144,$0143,$0142,$0141,$013F,$013E,$013D
DW $013C,$013B,$013A,$0139,$0138,$0137,$0136,$0135
DW $0134,$0133,$0132,$0131,$012F,$012E,$012D,$012C
DW $012B,$012A,$0129,$0128,$0127,$0126,$0125,$0124
DW $0123,$0122,$0121,$0120,$0120,$011F,$011E,$011D
DW $011C,$011B,$011A,$0119,$0118,$0117,$0116,$0115
DW $0114,$0113,$0112,$0111,$0110,$0110,$010F,$010E
DW $010D,$010C,$010B,$010A,$0109,$0108,$0108,$0107
DW $0106,$0105,$0104,$0103,$0102,$0101,$0100,$0100
DW $00FF,$00FE,$00FD,$00FC,$00FB,$00FA,$00F9,$00F8
DW $00F8,$00F7,$00F6,$00F5,$00F4,$00F4,$00F3,$00F2
DW $00F1,$00F0,$00F0,$00EF,$00EE,$00ED,$00EC,$00EC
DW $00EB,$00EA,$00E9,$00E8,$00E8,$00E7,$00E6,$00E5
DW $00E4,$00E4,$00E3,$00E2,$00E1,$00E0,$00E0,$00DF
DW $00DE,$00DD,$00DC,$00DC,$00DB,$00DA,$00D9,$00D8
DW $00D8,$00D7,$00D6,$00D5,$00D4,$00D4,$00D3,$00D2
DW $00D1,$00D0,$00D0,$00CF,$00CE,$00CD,$00CC,$00CC
DW $00CB,$00CA,$00C9,$00C8,$00C8,$00C7,$00C6,$00C5
DW $00C4,$00C4,$00C3,$00C2,$00C1,$00C0,$00C0,$00BF
DW $00BE,$00BD,$00BC,$00BC,$00BB,$00BA,$00B9,$00B8
DW $00B8,$00B7,$00B6,$00B5,$00B4,$00B4,$00B3,$00B2
DW $00B1,$00B0,$00B0,$00AF,$00AE,$00AD,$00AC,$00AC
247
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DW $00AB,$00AA,$00A9,$00A8,$00A8,$00A7,$00A6,$00A6
DW $00A5,$00A4,$00A4,$00A3,$00A2,$00A2,$00A1,$00A0
DW $00A0,$009F,$009E,$009E,$009D,$009C,$009C,$009B
DW $009A,$009A,$0099,$0098,$0098,$0097,$0096,$0096
DW $0095,$0094,$0094,$0093,$0092,$0092,$0091,$0090
DW $0090,$008F,$008E,$008E,$008D,$008C,$008C,$008B
DW $008A,$008A,$0089,$0088,$0088,$0087,$0086,$0086
DW $0085,$0084,$0084,$0083,$0082,$0082,$0081,$0080
DW $0080,$007F,$007E,$007E,$007D,$007C,$007C,$007B
DW $007A,$007A,$0079,$0078,$0078,$0077,$0076,$0076
DW $0075,$0074,$0074,$0073,$0072,$0072,$0071,$0070
DW $0070,$006F,$006E,$006E,$006D,$006C,$006C,$006B
DW $006A,$006A,$0069,$0068,$0068,$0067,$0066,$0066
DW $0065,$0064,$0064,$0063,$0062,$0062,$0061,$0060
DW $0060,$005F,$005E,$005E,$005D,$005C,$005C,$005B
DW $005A,$005A,$0059,$0059,$0058,$0058,$0057,$0057
DW $0056,$0056,$0055,$0054,$0054,$0053,$0052,$0052
DW $0051,$0050,$0050,$004F,$004E,$004E,$004D,$004C
DW $004C,$004B,$004A,$004A,$0049,$0049,$0048,$0048
DW $0047,$0046,$0046,$0045,$0044,$0044,$0043,$0042
DW $0042,$0041,$0040,$0040,$003F,$003E,$003E,$003D
DW $003C,$003C,$003B,$003A,$003A,$0039,$0039,$0038
DW $0038,$0037,$0036,$0036,$0035,$0034,$0034,$0033
DW $0032,$0032,$0031,$0030,$0030,$002F,$002E,$002E
DW $002D,$002C,$002C,$002B,$002A,$002A,$0029,$0028
DW $0028,$0027,$0026,$0026,$0025,$0024,$0024,$0023
DW $0022,$0022,$0021,$0020,$0020,$001F,$001E,$001E
DW $001D,$001C,$001C,$001B,$001A,$001A,$0019,$0018
DW $0018,$0017,$0016,$0016,$0015,$0014,$0014,$0013
DW $0012,$0012,$0011,$0010,$0010,$000F,$000E,$000E
248
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DW $000D,$000C,$000C,$000B,$000A,$000A,$0009,$0009
DW $0008,$0008,$0007,$0007,$0006,$0006,$0005,$0005
DW $0004,$0004,$0003,$0003,$0002,$0002,$0001,$0001
DW $0000,$0000,$FFFF,$FFFF,$FFFE,$FFFE,$FFFD,$FFFD
DW $FFFC,$FFFC,$FFFB,$FFFB,$FFFA,$FFFA,$FFF9,$FFF9
DW $FFF8,$FFF8,$FFF7,$FFF7,$FFF6,$FFF6,$FFF5,$FFF5
DW $FFF4,$FFF4,$FFF3,$FFF3,$FFF2,$FFF2,$FFF1,$FFF0
DW $FFF0,$FFEF,$FFEE,$FFEE,$FFED,$FFEC,$FFEC,$FFEB
DW $FFEA,$FFEA,$FFE9,$FFE8,$FFE8,$FFE7,$FFE6,$FFE6
DW $FFE5,$FFE4,$FFE4,$FFE3,$FFE2,$FFE2,$FFE1,$FFE0
DW $FFE0,$FFDF,$FFDE,$FFDE,$FFDD,$FFDC,$FFDC,$FFDB
DW $FFDA,$FFDA,$FFD9,$FFD8,$FFD8,$FFD7,$FFD6,$FFD6
DW $FFD5,$FFD4,$FFD4,$FFD3,$FFD2,$FFD2,$FFD1,$FFD0
DW $FFD0,$FFCF,$FFCE,$FFCE,$FFCD,$FFCC,$FFCC,$FFCB
DW $FFCA,$FFCA,$FFC9,$FFC8,$FFC8,$FFC7,$FFC6,$FFC6
DW $FFC5,$FFC4,$FFC4,$FFC3,$FFC2,$FFC2,$FFC1,$FFC0
DW $FFC0,$FFBF,$FFBE,$FFBE,$FFBD,$FFBC,$FFBC,$FFBB
DW $FFBA,$FFBA,$FFB9,$FFB8,$FFB8,$FFB7,$FFB6,$FFB6
DW $FFB5,$FFB4,$FFB4,$FFB3,$FFB2,$FFB2,$FFB1,$FFB0
DW $FFB0,$FFAF,$FFAE,$FFAE,$FFAD,$FFAC,$FFAC,$FFAB
DW $FFAA,$FFAA,$FFA9,$FFA8,$FFA8,$FFA7,$FFA6,$FFA6
DW $FFA5,$FFA4,$FFA4,$FFA3,$FFA2,$FFA2,$FFA1,$FFA0
DW $FFA0,$FF9F,$FF9E,$FF9E,$FF9D,$FF9C,$FF9C,$FF9B
DW $FF9A,$FF9A,$FF99,$FF98,$FF98,$FF97,$FF96,$FF96
DW $FF95,$FF94,$FF94,$FF93,$FF92,$FF92,$FF91,$FF90
DW $FF90,$FF8F,$FF8E,$FF8E,$FF8D,$FF8C,$FF8C,$FF8B
DW $FF8A,$FF8A,$FF89,$FF88,$FF88,$FF87,$FF86,$FF86
DW $FF85,$FF84,$FF84,$FF83,$FF82,$FF82,$FF81,$FF80
DW $FF80,$FF7F,$FF7E,$FF7E,$FF7D,$FF7C,$FF7C,$FF7B
DW $FF7A,$FF7A,$FF79,$FF78,$FF78,$FF77,$FF76,$FF76
249
MEMORIA
VI. Código fuente
Capítulo 1. Código de la tarjeta TX98
DW $FF75,$FF74,$FF74,$FF73,$FF72,$FF71,$FF70,$FF70
DW $FF6F,$FF6E,$FF6D,$FF6C,$FF6C,$FF6B,$FF6A,$FF69
DW $FF68,$FF68,$FF67,$FF66,$FF65,$FF64,$FF64,$FF63
DW $FF62,$FF61,$FF60,$FF60,$FF5F,$FF5E,$FF5D,$FF5C
DW $FF5C,$FF5B,$FF5A,$FF59,$FF58,$FF58,$FF57,$FF56
DW $FF55,$FF54,$FF54,$FF53,$FF52,$FF51,$FF50,$FF50
DW $FF4F,$FF4E,$FF4D,$FF4C,$FF4C,$FF4B,$FF4A,$FF49
DW $FF48,$FF48,$FF47,$FF46,$FF45,$FF44,$FF44,$FF43
DW $FF42,$FF41,$FF40,$FF40,$FF3F,$FF3E,$FF3D,$FF3C
DW $FF3C,$FF3B,$FF3A,$FF39,$FF38,$FF38,$FF37,$FF36
END
250
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
Capítulo 2
Código de la tarjeta SA98
Capítulo 2
E
Código fuente de la tarjeta
SA98
2.
daigu
n este capítulo se va a introducir el código en ensamblador utilizado a la
hora de realizar el control de la parte que controla la unidad de
tratamiento de aire.
1. Código fuente
Este código nos permite controlar los siguientes elementos incorporados
en la tarjeta:
-
Servomotores de las compuertas 0-10V
-
Presostato diferencial (3) para la comprobación de la
suciedad de los filtros
-
Sensor de calidad de aire
-
Potenciómetro de mínima apertura
-
Control de humedad del aire
251
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
TITLE 'CONTROL UTA'
LIST
N=62,
P=PIC16F877A
;PROGRAM PARA S98A - TARJETA DE AMPLIACION PARA CONTROL DE UTA
;COMUNICACIONES CON CONTROL DE CLIMATIZADORES TX98
;MICROPROCESADOR PIC16F877A
#INCLUDE <P16F877A.INC>
.UDATA
;*********************************VARIABLES*********************************
;**********************************BANK 0***********************************
ORG 0x20
MDAN0: RES 8
;MEDIDA ANALOGICA CANAL 0
MDAN1: RES 8
;MEDIDA ANALOGICA CANAL 1
MDAN2: RES 8
;MEDIDA ANALOGICA CANAL 2
MDAN3: RES 8
;MEDIDA ANALOGICA CANAL 3
MDAN4: RES 8
;MEDIDA ANALOGICA CANAL 4
MDAN5: RES 8
;MEDIDA ANALOGICA CANAL 5
MDAN6: RES 8
;MEDIDA ANALOGICA CANAL 6
MDAN7: RES 8
;MEDIDA ANALOGICA CANAL 7
MDAUX: RES
;MEDIDA ANALOGICA AUXILIAR INTERRUPCION CONVERTIDOR
NAD:
2
RES 1
MEDM:
;NUMERO MEDIDAS ANALOGICAS
RES 2
;MEDIA DE 4 MEDIDAS ANALOGICAS
MEDEXT: RES 2
;MEDIDA SONDA TEMPERATURA EXTERIOR
TIME:
RES 3
;CUENTA TIEMPOS PARA EL TIMER
DEL:
RES 1
;VARIABLE PARA RETARDO
TSEG:
RES 1
;TIEMPO DE SEGURIDAD PARA COMUNICACIONES
TREC:
RES 1
;TIEMPO DE RECEPCION PARA LOS BITS DEL DATO RECIBIDO
DATOR: RES 6
;DATO RECIBIDO EN COMUNICACIONES
DAOUTA: RES
1
DAOUTB: RES
1
;SAL POR CONV DIG-ANALOG CANAL A:DATO CALC PARA EL SISTEM D F-C
;SALIDA POR CONVERTIDOR DIGITAL-ANALOGICO CANAL B
252
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
DAOUTC: RES
VARIADOR
1 ;SAL X CONVR DIG-ANALOG CANAL C :DAT RECIB D VEL VENTI PA
DAOUTD: RES
1
;SALIDA POR CONVERTIDOR DIG-ANALOG CANAL D
DATODA: RES
1
;DATO ENVIADO AL CONVERTIDOR DIG-ANALOG
TDA:
D/A
RES 1
FILSUC: RES
;INTERVALO DE T Q TRANSCURRE ENTR ACTUALIZA D SAL DEL CONVER
1
;SEÑAL DE FILTRO SUCIO:0-NO SEÑAL DE FILTRO SUCIO,0xFF-FILTRO SUCIO
TNCOM: RES 1
WAUX:
;TIEMPO DE NO COMUNICACIONES ENTRE TX98 Y S98A
RES 1
STAUX: RES
;WORKING REGISTER AUXILIAR
1
;STATUS REGISTER AUXILIAR
PCLAX1: RES 1
;PCLATH AUXILIAR (INTERRUPCION)
PCLAX2: RES 1
;PCLATH AUXILIAR
PCLAX3: RES 1
;PCLATH AUXILIAR
;***************TOTAL BANK 0 - 96 BYTES (VARIABLES - 96 BYTES)**************
;**********************************BANK 1***********************************
ORG 0xA0
POS1:
RES 2
POS2:
RES 2
VAL1:
RES 2
VAL2:
RES 2
MULT1: RES 2
;MULTIPLICADOR
MULT2: RES 2
;MULTIPLICANDO
RESMUL: RES 3
MULAUX: RES
;RESUL D MULTI DE 10 BITS X 10 BITS (RESUL EN 3 BYTES)
3
MANDO: RES 1
CLIMATIZA
CONSIG: RES
;MANDO D FUNCIONAM:CALCULA Y RECIB DSD EL CONTROL D
2
;CONSIG:SELECCIONADA Y RECIB DSD EL CONTROL DE CLIMATIZADOR
MEDRET: RES 2
;MEDIDA TEMP D RETOR:MEDID Y RECIB DSD L CNTROL D CLIMATIZADOR
MDHUMI: RES
2
;MEDIDA HUMEDAD INTERIOR
MDHUME: RES
2
;MEDIDA HUMEDAD EXTERIOR
MDCALD: RES 1
;MEDIDA CALIDAD DEL AIRE
253
MEMORIA
VI. Código fuente
MDPRES: RES
2
MPMINA: RES
ENTINT: RES
Capítulo 2. Código de la tarjeta SA98
;MEDIDA DE LA PRESION (ENVIAR A CONTROL DE CLIMATIZADORES)
1
;MEDIDA POTENCIOMETRO DE MINIMA APERTURA
1
;ENTALPIA AIRE INTERIOR
ENTEXT: RES 1
;ENTALPIA AIRE EXTERIOR
NETAP: RES
;NUMERO DE ETAPAS (RECIBIDO EN LA VARIABLE MANDO)
1
FFUNC: RES 1
;FLAG FUNCIONAMIENTO (CONFIGURACION EN MICROSWITCH)
;BIT 0: MODO MAQUINA (0)/MODO AUTOTEST (1)
;BIT 1: FREE-COOLING TEMPERATURA (0)/FREE-COOLING ENTALPIA (1)
;BIT 2: POT MIN APERT NO CONECT (0)/POTENCIOMETRO DE MIN APERT CONECT (1)
;BIT 3: FCOM:
RES 1 ;FLAG PA COMUN CN CNTROL CUAND S98A TNGA LS DATS PA CALC F-C
;BIT 0: PONER A 1 CUANDO SE HAYA COGIDO UNA COMUNICACION CORRECTA
;BIT 1: PONER A 1 CUAND SE CALC LAS ENTALPIAS CN LS DATS Y LS MEDIDAS ANALOG
FC:
RES 1
;FLAG DE FREE-COOLING:FC=0->NO FREE-COOLING,FC=0xFF->SI
;***************TOTAL BANK 1 - 80 BYTES (VARIABLES - 37 BYTES)**************
;**********************************CODIGO***********************************
.CODE
ORG 0
GOTO START
ORG 4
GOTO INTER
ORG 5
;***********************************PAGE 0**********************************
;INICIALIZACION REGISTROS Y VARIABLES
START: CLRF INTCON
CLRF STATUS
CALL DELAY
;RETARDO COMIENZO
MOVF PCLATH,0
MOVWF PCLAX2
254
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BCF PCLATH,4
BSF PCLATH,3
CALL INICIA ;INI MICRO (REG, PUERT Y VAR)TOMA CONFIG DL MICROSWITCH
MOVF PCLAX2,0
MOVWF PCLATH
;*********************FUNCIONAMIENTO NORMAL / AUTOTEST**********************
BSF STATUS,5
BTFSS FFUNC,0
GOTO FUNNOR
;FUNCIONAMIENTO NORMAL
;**************************AUTOTEST (MICROSWITCH nº1 ON)**********************
MOVLW 0xC0
;PERMISO INTERRUPCIONES
MOVWF INTCON
BSF PIE1,1
CLRF STATUS
AUTT1: CLRWDT
MOVLW 4
; TOMAN 4 MEDIDAS ANALOG PARA COMPROBACION EN AUTOTEST
SUBWF NAD,0
BTFSS STATUS,0
GOTO AUTT1
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BSF PCLATH,3
BSF PCLATH,4
CALL MAUTES
;SUBRUTINA DE AUTOTEST
MOVF PCLAX2,0
MOVWF PCLATH
FINAUT: CLRWDT
GOTO FINAUT
255
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
;********FUNCIONAMIENTO NORMAL RUN (MICROSWITCH nº1OFF)*****************
FUNNOR: MOVLW 0xC0
MOVWF INTCON
BSF PIE1,1
;HABILITA INTERRUPCIONES
;HABILITA INTERRUPCION DEL TIMER2
CLRF STATUS
;COMIENZO PROGRAMA
COMZO: CLRWDT
MOVLW 4
;SE TOMAN 4 MEDIDAS ANALOGICAS
SUBWF NAD,0
BTFSS STATUS,0
GOTO COMZO
MOVLW 4
SUBWF NAD,0
BTFSC STATUS,2
GOTO TMA
CLRF NAD
;SEGURIDAD -> SI NAD NO ES IGUAL A 4 -> TOMAR 4 MEDIDAS NUEVAS
GOTO COMZO
;******************************MEDIDAS ANALOGICAS****************************
TMA:
CLRWDT
;TEMPERATURA AIRE EXTERIOR
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL TMEXT
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
256
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF INTCON
CALL GETCOM
;HUMEDAD AIRE INTERIOR (O DE RETORNO)
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL THUMI
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
CALL GETCOM
;HUMEDAD AIRE EXTERIOR
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL THUME
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
CALL GETCOM
;CALIDAD DEL AIRE (AIRE INTERIOR O DE RETORNO)
CLRF INTCON
MOVF PCLATH,0
257
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL TCALD
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
CALL GETCOM
;PRESION
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL TPRES
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
CALL GETCOM
;POT D MINIA APERTURA DE COMPUERTAS D SISTEM D F-C
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL TPMINA
MOVF PCLAX2,0
258
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
CALL GETCOM
;RESERVA-1
;RESERVA-2
;SEGURIDADES DE MEDIDAS ANALOGICAS Y VARIABLES DE FUNCIONAMIENTO
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL SEGMV
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
CALL GETCOM
;CALCULO DE LA ENTALPIA (ENTALPIA AIRE INTERIOR Y ENTALPIA AIRE EXTERIOR)
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BCF PCLATH,4
BSF PCLATH,3
CALL CENTAL
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
259
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CALL GETCOM
;***********************************SEÑALES DIGITALES**************************
;SEÑAL DIGITAL-1 (SEÑAL DE FILTRO SUCIO)
SENFS1: CLRWDT
BTFSC PORTB,0
GOTO SENFS2
CALL DELAY
BTFSC PORTB,0
GOTO SENFS1
CLRF FILSUC
;NO HAY SEÑAL DE FILTRO SUCIO (FILTRO LIMPIO) (FILSUC=0)
GOTO SENFS3
SENFS2: CALL DELAY
BTFSS PORTB,0
GOTO SENFS1
MOVLW 0xFF
MOVWF FILSUC
;HAY SEÑAL DE FILTRO SUCIO (FILTRO SUCIO) (FILSUC=0xFF)
SENFS3: CALL GETCOM
;SEÑAL DIGITAL-2
;SEÑAL DIGITAL-3
;*********** ************************HACER SALIDAS**************************
;SALIDAS POR CONVERTIDOR DIGITAL/ANALOGICO MAX500
MOVF TDA,1
BTFSS STATUS,2
GOTO HSALR
;CADA 10 SEG ENVIAR DATOS DE LOS 4 CANALES A LA VEZ AL CONVER. D/A
MOVF TNCOM,1
BTFSS STATUS,2
GOTO DARSAL
;SI NO FALLO DE COMU -> PONR SAL CALCULADAS X EL CALC DL F-C
CLRF DAOUTC
;SI FALLO DE COMU -> PNER SAL DL VARIADOR D FREC DL VENTI A 0
CLRF DAOUTD
260
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BSF STATUS,5
CLRF FC
;SIN COMUNICACIONES NO HAY FREE-COOLING
BTFSC FFUNC,2
;COMPROBA SI CONFIGU CN POT DE MIN APERTURA Y VR CAL D AIRE
GOTO NCOMSP
;SI HAY POTENCIOMETRO DE MINIMA APERTURA
MOVF MDCALD,1
BTFSS STATUS,2
GOTO SCD1
CLRF STATUS
;NO HAY POTENCIOMETRO DE MINIMA APERTURA
CLRF DAOUTA
;SAL AL SISTEM DE F-C SIN POT D MIN APERTURA -> SAL=0
CLRF DAOUTB
GOTO DARSAL
SCD1:
MOVF MDCALD,0
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
GOTO DARSAL
NCOMSP: MOVF MDCALD,0
SUBWF MPMINA,0
BTFSS STATUS,0
GOTO SCD1
MOVF MPMINA,0
;SAL A SISTEM DE F-C CON POT DE MIN APERTURA -> SAL=MPMINA
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
DARSAL: CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BSF PCLATH,3
BCF PCLATH,4
261
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CALL CONVDA
;HACER SAL AL CONVERT DIG-ANALOG MAX500
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
MOVLW 0x0A
;INI LOS 10 SEG PARA EL PROX ENVIO AL CONVERT DIG-ANALOG
MOVWF TDA
CALL GETCOM
;SALIDAS POR RELES
HSALR: CLRWDT
;RELE DE FIN DE CARRERA (K1 - PORTD,1)
CALL RFINCA
;RELE DE ALARMA (K2 - PORTD,0)
CALL GETCOM
GOTO COMZO
RFINCA: CLRWDT
;SUBRUTINA PARA EL RELE DE FIN DE CARRERA DEL F-C
CLRF STATUS
BTFSS PORTD,1
GOTO RFINC1
;RELE DE FIN DE CARRERA ACTUALMENTE DESACTIVADO
MOVLW 0xE0
;RELE DE FIN DE CARRERA ACTUALMENTE ACTIVADO
SUBWF DAOUTA,0
BTFSS STATUS,0
GOTO ACTK2
ACTK1: BSF PORTD,1
;ACTIVAR RELE DE FIN DE CARRERA:COMPUERTA CERRADA
RETURN
ACTK2: BCF PORTD,1
;DESACTIVAR RELE DE FIN DE CARRERA:COMPUERTA ABIERTA
RETURN
RFINC1: MOVLW 0xF0
SUBWF DAOUTA,0
262
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO ACTK2
GOTO ACTK1
;** * ***SUBRUTINA DE COMUNICACIONES CON CONTROL DE CLIMATIZADORES TX98*******
;SUBRUTINA DE COM CON CONTROL DE CLIMATIZADORES TX98:CONTROL MAESTRO
GETCOM: CLRWDT
;RECEPCION DE BITS DEL CONTROL
CLRF STATUS
BTFSC PORTC,7
GOTO FGETC
;PARA COMENZAR A COGER EL DATO LA LINEA DEBE ESTAR EN
ESTADO BAJO YA QUE SI ESTÁ EN ESTADO ALTO PUEDE SER UNA COMUNICACION EMPEZADA
MOVLW 0x46
MOVWF TSEG
STA1:
;TIEMPO DE SEGURIDAD PARA COGER LA SEÑAL DE START (35 MSEG)
CLRWDT
BTFSC PORTC,7
GOTO DATST1
MOVF TSEG,1
BTFSS STATUS,2
GOTO STA1
GOTO FGETC
;CUMPLIDO EL T DE SEGURIDAD PA COGER START Y NO RECIB SEÑAL
DATST1: MOVLW 0x78
MOVWF TSEG
;TIEMPO DE SEGURIDAD PARA LA DURACION DEL START (60 MSEG) - EL
START DEL DATO DURA 50 MSEG (NUNCA MAS DE 60 MSEG)
DATST2: CLRWDT
BTFSS PORTC,7
GOTO DATRE1
;SE HA RECIBIDO EL START CORRECT->COMIENZA LA RECEP DL DATO
MOVF TSEG,1
BTFSS STATUS,2
GOTO DATST2
GOTO FGETC
;SE HA TIRADO MUCHO TIEMPO CON SEÑAL DE START
DATRE1: MOVLW 0x28
;SI LO RECIBIDO ESTA ENTRE 40 Y 60 MSEG SE TRATA DE UN START
(SI NO PUEDE SER UNA COMUNICACION QUE SE HA COGIDO EMPEZADA)
263
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF TSEG,0
BTFSC STATUS,0
GOTO FGETC
CLRF DATOR
;START RECIBIDO CORRECT-> INICIALIZAR DATO A RECIBIR (DATOR)
CLRF DATOR+1
CLRF DATOR+2
CLRF DATOR+3
CLRF DATOR+4
CLRF DATOR+5
MOVLW 0x2A ;42 BITS->0-1-MANDO 8-CONS 11-TEMP RETOR 11-SAL VEL.VENT.8-1-0
MOVWF MEDM
DATRE2: CALL RDATO
;SUBRUTINA DE RECEPCION DE 1 BIT
MOVF DEL,1
BTFSS STATUS,2
GOTO FGETC
;COMU ERRONEA (DEL=0xFF) AL IR A TOMAR UN BIT DEL DATO
DECFSZ MEDM,1 ;RECEPC CORREC D UN BIT DL DATO(1 BIT MENS Q TOMAR -> MEDM-1)
GOTO DATRE2
;AUN NO HAN TOMADO LS 42 BITS->TOMA OTRO BIT CN SUBRU RDATO
ROTAR1: BCF STATUS,0
RRF DATOR,1
;YA TOMADO LOS 42 BITS DL DAT ENVIADO X EL CONTROL D TX98
;ROTAR EL DATO A DCHA XQ EN RDATO SE HA GIRADO A IZQUIERDA
RRF DATOR+1,1
RRF DATOR+2,1
RRF DATOR+3,1
RRF DATOR+4,1
RRF DATOR+5,1
GOTO FINCG
RDATO: CLRWDT
CLRF DEL
MOVLW 0x14
;COMPROB DATO RECIB Y TOMA DATS INCLUIDO N DICHO DATO RECIB
;SUBRUTINA DE RECEPCION DE 1 BIT
;INICIALIZAR ERROR EN RECEPCION DE 1 BIT
;TIEMPO DE SEGURIDAD PARA LA RECEPCION DE 1 BIT (10 MSEG)
MOVWF TSEG
264
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
RECT1: CLRWDT
BTFSC PORTC,7
GOTO RECT2
MOVF TSEG,1
BTFSS STATUS,2
GOTO RECT1
GOTO FERRN
RECT2: MOVLW 0x14
;TIEMPO DE SEGURIDAD PARA LA RECEPCION DE 1 BIT (10 MSEG)
MOVWF TSEG
CLRF TREC
;TIEMPO EN ESTADO ALTO (TIEMPO DE BIT) PARA VER UN '0' O UN '1'
RECT3: CLRWDT
BTFSS PORTC,7
GOTO RECT4
MOVF TSEG,1
BTFSS STATUS,2
GOTO RECT3
FERRN: MOVLW 0xFF
MOVWF DEL
ERRONEA
;SE HA CUMPLIDO EL TIEMPO DE SEGURIDAD -> COMUNICACION
RETURN
RECT4: MOVLW 2
SUBWF TREC,0
BTFSS STATUS,0
GOTO FERRN
;EL SUPUESTO BIT QUE SE HA TOMADO DURA MENOS DE 1 MSEG PUEDE SER UN RUIDO EN LAS COMUNICACIONES -> TERMINAR COMUNICACION
MOVLW 8
;8 - 4MSEG
SUBWF TREC,0
;4 - 2 MSEG - BIT RECIBIDO: 0
BTFSC STATUS,0
;0x0C - 6 MSEG - BIT RECIBIDO: 1
GOTO SDATR
BCF DATOR+5,0
265
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO ROTIZ
SDATR: BSF
DATOR+5,0
ROTIZ: RLF
DATOR+5,1 ;ROTAR A IZQ EL DATO COMPLETO PARA TOMAR EL SIG BIT
RLF DATOR+4,1
RLF DATOR+3,1
RLF DATOR+2,1
RLF DATOR+1,1
RLF DATOR,1
RETURN
;COMPROBACION DE LOS BITS DE INICIO (0-1) Y DE LOS BITS DE FINAL DE DATO (1-0)
FINCG: CLRWDT
;COMPROBAR DATO RECIB (BITS DE SEGU Y COMPROBACI D DATS RECIB)
BTFSC DATOR+5,0
GOTO FGETC
;COMPROBACION DE LOS BITS DE INICIO Y FINAL (0-1-DATO-1-0)
;COMUNICACION ERRONEA
BTFSS DATOR+5,1
GOTO FGETC
;COMUNICACION ERRONEA
BTFSS DATOR,0
GOTO FGETC
;COMUNICACION ERRONEA
BTFSC DATOR,1
GOTO FGETC
;COMUNICACION ERRONEA
;COMPROBACIONES DATOS RECIBIDOS (MANDO, DATO PARA EL VARIADOR DE FRECUENCIA
DEL VENTILADOR, MEDIDA TEMPERATURA DE RETORNO Y CONSIGNA)
MOVF DATOR+1,0
;TOMAR VARIABLES CONTENIDAS EN EL DATO RECIBIDO
BSF STATUS,5
MOVWF POS1
;POS1-MANDO
BCF STATUS,5
CALL ROTDAT
CALL ROTDAT
MOVF DATOR+5,0
BSF STATUS,5
MOVWF POS2
;POS2-DAOUTC
266
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BCF STATUS,5
MOVLW 7
;VAL1-MEDRET (2 BYTES)
ANDWF DATOR+3,0
BSF STATUS,5
MOVWF VAL1
BCF STATUS,5
MOVF DATOR+4,0
BSF STATUS,5
MOVWF VAL1+1
BCF STATUS,5
CALL ROTDAT
CALL ROTDAT
CALL ROTDAT
MOVLW 7
ANDWF DATOR+2,0
;VAL2-CONSIG (2 BYTES)
BSF STATUS,5
MOVWF VAL2
BCF STATUS,5
MOVF DATOR+3,0
BSF STATUS,5
MOVWF VAL2+1
MOVF VAL2,1 ;COMPROB CONSIG VAL2-RANG CONSIG: ENTRE 15ºC 0x96- 30ºC-0x12C
BTFSS STATUS,2
GOTO SEGCON
MOVLW 0x96
SUBWF VAL2+1,0
BTFSS STATUS,0
GOTO FGETC
;CONS FUERA D RANG-COMU ERRONEA(NOVALOR CONTNIDO N L DAT)
GOTO QSEGR
267
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SEGCON: MOVLW 2
SUBWF VAL2,0
BTFSC STATUS,0
GOTO FGETC
; CONS FUERA D RANG-COMU ERRONEA(NOVALOR CONTNIDO N L DAT)
MOVLW 0x2D
SUBWF VAL2+1,0
BTFSC STATUS,0
GOTO FGETC ; CONS FUERA D RANG-COMU ERRONEA(NOVALOR CONTNIDO N L DAT)
QSEGR: MOVLW 2
;CONSIGNA CORRECTA - COMPROBAR AHORA LA MEDIDA DE
TMPERATURA DE RETORNO (MEDRET) - RANGO: ENTRE 0ºC(0x00) Y 50ºC(0x1F4)
SUBWF VAL1,0
BTFSC STATUS,0
GOTO FGETC
; CONS FUERA D RANG-COMU ERRONEA(NOVALOR CONTNIDO N L DAT)
MOVF VAL1,1
BTFSC STATUS,2
GOTO CONTD
MOVLW 0xF5
SUBWF VAL1+1,0
BTFSC STATUS,0
GOTO FGETC
; CONS FUERA D RANG-COMU ERRONEA(NOVALOR CONTNIDO N L DAT)
CONTD: CLRWDT
;TEMPERATURA DE RETORNO CORRECTA
BTFSC POS1,5
GOTO FGETC
;EL BIT 5 DE MANDO SIEMPRE ES 0
BTFSS POS1,1
GOTO CONTD1
BTFSC POS1,2
GOTO FGETC
;LOS BITS 1 Y 2 DE MANDO NO PUEDEN SER 1 LOS DOS A LA VEZ
CONTD1: BCF STATUS,5
;COMUNICACION CORRECTA - TOMAR DATOS CORRECTOS
MOVLW 0x3C
MOVWF TNCOM
;INICIALIZAR T PARA DAR FALLO DE COMUNICACIONES (60 SEG)
268
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BSF STATUS,5
MOVF POS1,0
;TO DATOS RECIB CORREC-TOMAR LOS DATOS EN LAS VAR D FUNCIONA
MOVWF MANDO
MOVF VAL1,0
MOVWF MEDRET
MOVF VAL1+1,0
MOVWF MEDRET+1
MOVF VAL2,0
MOVWF CONSIG
MOVF VAL2+1,0
MOVWF CONSIG+1
BCF STATUS,0
;MEDRET MULTIPLICADA X 10,LA NECESI MULTIPLI X 5->DIVIDO/2
RRF MEDRET,1
RRF MEDRET+1,1
BCF STATUS,0
;CONSIG MULTIPLICADA X 10 Y LA NECESITO MULTIPLI X5->DIVIDO/2
RRF CONSIG,1
RRF CONSIG+1,1
MOVLW 0x18
;TOMAR Nº DE ETAPAS DE FRIO DEMANDADAS X CONTROL MAESTRO
ANDWF MANDO,0
MOVWF NETAP
BCF STATUS,0
RRF NETAP,1
RRF NETAP,1
RRF NETAP,1
BSF FCOM,0
; TOMADO LOS1º DATOS -> AHORA CALCULAR LA ENTALPIA
MOVLW 3
SUBWF FCOM,0
BTFSS STATUS,2
GOTO FGETC
269
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVF POS2,0
BCF STATUS,5
MOVWF DAOUTC
;DATO A ENVIAR AL VARIADOR DE FRECUENCIA DEL VENTILADOR
(CANAL C Y CANAL D DEL CONVERTIDOR DIGITAL-ANALOGICO MAX500)
MOVWF DAOUTD
GOTO CALNM
ROTDAT: RRF
DATOR,1
;ROTAR EL DATO RECIBIDO EN COMUNICACIONES
RRF DATOR+1,1
RRF DATOR+2,1
RRF DATOR+3,1
RRF DATOR+4,1
RRF DATOR+5,1
RETURN
;CALCULAR F-C, CALCULAR EL NUEVO MANDO Y ENVIAR A CONTROL DE CLIMATIZADORES
CALNM: BSF
STATUS,5
BTFSC MANDO,0
GOTO ENVMM
;CONTROL MAESTRO APAGADO - COMPUERTA A MINIMO (SIN
POTENCIOMETRO O CON POTENCIOMETRO) -> ENVIAR MISMO MANDO
BTFSS MANDO,1
;CONTROL MAESTRO ENCENDIDO
GOTO ENVMM
;CONTROL MAESTRO SIN PETICION DE FRIO (CALOR O NO PETICION
DE ETAPAS) - COMPUERTA A MINIMO -> ENVIAR MISMO MANDO
MOVF NETAP,1
BTFSC STATUS,2
GOTO ENVMM
;NO HAY DEMANDA DE ETAPAS (NETAP=0) EN MODO FRIO EN
CONTROL MAESTRO - COMPUERTA A MINIMO -> ENVIAR MISMO MANDO
CLRF STATUS
CLRF INTCON
;SI HAY DEMANDA DE ETAPAS N MODO FRIO->COMPROBAR Nº D
ETAPAS, COMPROBAR POSIBILIDAD D F-C Y EN CASO SI CALCULAR APERTURA D COMPUERTA
MOVF PCLATH,0
MOVWF PCLAX2
270
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BCF PCLATH,4
BSF PCLATH,3
CALL QFCOOL
;CALCULO DE FREE-COOLING
MOVF PCLAX2,0
MOVWF PCLATH
MOVLW 0xC0
MOVWF INTCON
GOTO ENVCON
ENVMM: CLRWDT ;NO F-C-ENVIAR MISM MANDO Q SE HA RECIB Y CRRAR CMPUERTS A MIN
CLRF FC
;NO F-C (CONTROL APAGADO, NO EN MODO FRIO, NO PETICION D ETAPAS...)
BTFSC FFUNC,2
;COMPROBAR SI CONFIGU CON POT D MIN APERTURA Y VER CAL AIRE
GOTO SIPOT1
;SI HAY POTENCIOMETRO DE MINIMA APERTURA
MOVF MDCALD,1
BTFSS STATUS,2
GOTO SCD2
CLRF STATUS
CLRF DAOUTA
;NO HAY POTENCIOMETRO DE MINIMA APERTURA
;SAL AL SISTEM D F-C SIN POT D MIN APERTURA -> SALIDA=0
CLRF DAOUTB
GOTO ENVCON
SCD2:
MOVF MDCALD,0
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
GOTO ENVCON
SIPOT1: MOVF MDCALD,0
SUBWF MPMINA,0
BTFSS STATUS,0
GOTO SCD2
271
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVF MPMINA,0
;SAL AL SISTEM D F-C CON POT D MINAPERTURA -> SAL=MPMINA
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
ENVCON: CALL CONDAT
;CONSTRUIR DATO A ENVIAR (DATOR - 40 BITS) -> 0-1MANDO(8)-TEMP.EXTERIOR(11)-PRESION(11)-APERTURA COMPUERTA(8)
CALL ENVDAT
FGETC: CLRWDT
;ENVIAR DATO A CONTROL DE CLIMATIZADORES
;NO HA HABIDO COMUNI -TERMINAR SUBRUTINA D COMUNI
CLRF STATUS
RETURN
;CONSTRUCCION DEL DATO A RESPONDER AL CONTROL DE CLIMATIZADORES (0-1-MANDO(8)TEMP.EXTERIOR(11)-PRESION(11)-APERTURA COMPUERTA(8))
CONDAT: CLRWDT
CLRF STATUS
MOVF FILSUC,1
;MODIFICAR BIT DE FILTRO SUCIO EN LA VARIABLE MANDO
BTFSS STATUS,2
GOTO COND1
BSF STATUS,5
BCF MANDO,7
;NO HAY SEÑAL DE FILTRO SUCIO (FILSUC=0)
GOTO COND2
COND1: BSF STATUS,5
BSF MANDO,7
;HAY SEÑAL DE FILTRO SUCIO (FILSUC=0xFF)
COND2: BCF STATUS,5
BCF DATOR+4,1
BSF DATOR+4,0
CALL ROTCON
;DESPLAZO 8 BITS A LA IZQ PA METER LA VAR MANDO EN DATOR
CALL ROTCON
CALL ROTCON
CALL ROTCON
272
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
BSF STATUS,5
MOVF MANDO,0
BCF STATUS,5
MOVWF DATOR+4
CALL ROTCON
;DESPLAZO 11 BITS A LA IZQ PA METER LA VAR MEDEXT EN DATOR
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
MOVF MEDEXT,0 ;MULTIPL MEDEXT X2 XQ SE ENVIA MULTIPL X10 Y ESTA MULTIPLX5
MOVWF MEDM
MOVF MEDEXT+1,0
MOVWF MEDM+1
BCF STATUS,0
RLF MEDM+1,1
RLF MEDM,1
MOVF MEDM+1,0
MOVWF DATOR+4
MOVLW 7
273
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
ANDWF MEDM,0
IORWF DATOR+3,1
CLRWDT
CALL ROTCON
;DESPLAZO 11 BITS A LA IZQ PA METER LA VAR MDPRES EN DATOR
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
BSF STATUS,5
MOVF MDPRES+1,0
BCF STATUS,5
MOVWF DATOR+4
BSF STATUS,5
MOVLW 7
ANDWF MDPRES,0
BCF STATUS,5
IORWF DATOR+3,1
CALL ROTCON
;DESPLAZO 8 BITS A LA IZQ PA METER LA VAR DAOUTA EN DATOR
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
274
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CALL ROTCON
CALL ROTCON
MOVF DAOUTA,0
MOVWF DATOR+4
RETURN
ROTCON: BCF STATUS,0
RLF DATOR+4,1
;ROTAR DATO QUE SE ESTA CONSTRUYENDO
RLF DATOR+3,1
RLF DATOR+2,1
RLF DATOR+1,1
RLF DATOR,1
RETURN
;SUBRUTINA DE ENVIO DE BITS DEL DATO AL CONTROL D CLIMATIZADORES(ENVIO DE 40 BITS)
ENVDAT: CLRWDT
CALL DELAY
;RETARDO ANTES DE RESPUESTA
MOVLW 0x28
;SUBRUTINA DE ENVIO DE LOS BITS DE DATOC
MOVWF DEL
;NUMERO DE BITS QUE SE ENVIAN - 40 BITS
SDAT2: BTFSC DATOR,7
GOTO SDATL
SDATC: MOVLW 4
;BIT '0' - 2 MSEG
GOTO SDATM
SDATL: MOVLW 0x0C
;BIT '1' - 6 MSEG
SDATM: MOVWF TSEG
CALL SENVD
CALL ROTCON
;ENVIO DE 1 BIT Y TIEMPO ENTRE DATOS
;ROTAR DATOR PARA ENVIAR OTRO BIT DEL DATO
DECFSZ DEL,1
GOTO SDAT2
RETURN
275
MEMORIA
VI. Código fuente
SENVD: BSF
PORTC,6
Capítulo 2. Código de la tarjeta SA98
;ENVIO DE 1 BIT
NENVX: CLRWDT
MOVF TSEG,1
BTFSS STATUS,2
GOTO NENVX
STENTS: BCF
PORTC,6
MOVLW 0x0C
;TIEMPO ENTRE DATOS - 6 MSEG
MOVWF TSEG
SDATED: CLRWDT
MOVF TSEG,1
BTFSS STATUS,2
GOTO SDATED
RETURN
;*****************************************************************************
;SUBRUTINA DE RETARDO (APROXIMADAMENTE 5 MSEG)
DELAY: CLRF DEL
MDEL: CLRWDT
CALL DELB
DECFSZ DEL,1
GOTO MDEL
RETURN
DELB:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
276
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
NOP
NOP
NOP
NOP
NOP
RETURN
;INTERRUPCIONES
INTER: MOVWF WAUX ;GUARDA N MEM WORK REG(WREG),STATUS REG(STATUS) Y PCLATH
SWAPF STATUS,0
CLRF STATUS
MOVWF STAUX
SWAPF PCLATH,0
MOVWF PCLAX1
CLRF PCLATH
BTFSC PIR1,6
;COMPROBAR SI LA INTERR CAUSADA ES POR TIMER2 O CONV A/D
GOTO INTAD
;INTERRUPCION CONVERTIDOR A/D
BTFSC PIR1,1
GOTO TIMER
;INTERRUPCION TIMER2
FINTER: SWAPF PCLAX1,0
MOVWF PCLATH
SWAPF STAUX,0 ;RECUPERO WORK REG (WREG), STATUS REG (STATUS) Y PCLATH
MOVWF STATUS
SWAPF WAUX,1
SWAPF WAUX,0
RETFIE
;FINAL DE LA INTERRUPCION
;SUBRUTINA INTERRUPCION TIMER2
TIMER: BCF PIR1,1
;DESHABILITAR INTERR TIMER2 - INTERR CADA 0.5 MSEG
MOVF TSEG,1
BTFSS STATUS,2
277
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
DECF TSEG,1
;TIEMPO DE SEGURIDAD EN COMUNICACIONES
INCF TREC,1
;TIEMPO DE RECEPCION DEL BIT DE COMUNICACIONES
INCF TIME,1
MOVLW 0x64
SUBWF TIME,0
BTFSS STATUS,0
GOTO FINTER
CLRF TIME
;0.5 MSEG x 100(0x64) = 50 MSEG
BSF STATUS,5
BSF PIE1,6
;HABILITAR INTERRUPCION DEL CONVERTIDOR A/D - CADA 50 MSEG
CLRF STATUS
BSF ADCON0,2
;ARRANCAR UNA CONVERSION DEL CONVERTIDOR A/D
INCF TIME+1,1
MOVLW 4
SUBWF TIME+1,0
BTFSS STATUS,0
GOTO FINTER
CLRF TIME+1
;50 MSEG x 4(4) = 200 MSEG
BSF STATUS,5
BTFSC FFUNC,0
GOTO ENLAUT
;EN AUTOTEST - LED RUN ENCENDIDO SIN PARPADEO
BCF STATUS,5
BTFSS PORTD,2
;EN FUNCIONA NORMAL - PARPADEO LED RUN CADA 200 MSEG
GOTO LEDR
ENLAUT: BCF
STATUS,5
BCF PORTD,2
GOTO T1SEG
LEDR: BSF PORTD,2
278
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
T1SEG: INCF TIME+2,1
MOVLW 5
SUBWF TIME+2,0
BTFSS STATUS,0
GOTO FINTER
CLRF TIME+2
;0.2 SEG x 5(5) = 1 SEG
MOVF TDA,1
;CUENTA EL T PARA REALIZAR SAL AL CONV DIG-ANALOG MAX500
BTFSS STATUS,2
DECF TDA,1
MOVF TNCOM,1
;CUENTA EL TIEMPO PARA ERROR DE COMUNICACIONES
BTFSS STATUS,2
DECF TNCOM,1
GOTO FINTER
;SUBRUTINA INTERRUPCION CONVERTIDOR ANALOGICO/DIGITAL
INTAD: BTFSC ADCON0,5
;CANAL CONVERTIDOR ANALOGICO DIGITAL
GOTO QCAN2
BTFSC ADCON0,4
GOTO QCAN1
BTFSC ADCON0,3
GOTO CAN1
;CANAL 1
GOTO CAN0
;CANAL 0
QCAN1: BTFSC ADCON0,3
GOTO CAN3
;CANAL 3
GOTO CAN2
;CANAL 2
QCAN2: BTFSC ADCON0,4
GOTO QCAN3
BTFSC ADCON0,3
GOTO CAN5
;CANAL 5
GOTO CAN4
;CANAL 4
279
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
QCAN3: BTFSC ADCON0,3
GOTO CAN7
;CANAL 7
GOTO CAN6
;CANAL 6
;MEDIDA ANALOGICA - CANAL 0 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN0:
CLRWDT
;CANAL 0
MOVF MDAN0+5,0 ;TOMA DATO NUEVO D ULTI CONVER DL CANAL ANALOG DIG SELEC
MOVWF MDAN0+7
MOVF MDAN0+4,0
MOVWF MDAN0+6
MOVF MDAN0+3,0
MOVWF MDAN0+5
MOVF MDAN0+2,0
MOVWF MDAN0+4
MOVF MDAN0+1,0
MOVWF MDAN0+3
MOVF MDAN0,0
MOVWF MDAN0+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN0+1
MOVF ADRESH,0
MOVWF MDAN0
MOVLW 4
;TOMA 4 MEDIDAS SEG SIN SEGURIDAD AL INI DL SOFTWARE
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC1
MOVF MDAN0+2,0
;SEGURIDAD EN LAS MEDIDAS TOMADAS DL CONV
SUBWF MDAN0,0
280
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,2
GOTO C0NIG1
MOVF MDAN0+3,0
SUBWF MDAN0+1,0
BTFSS STATUS,2
GOTO C0NIG2
GOTO PONC1
C0NIG1: MOVF MDAN0+2,0
SUBWF MDAN0,0
BTFSS STATUS,0
GOTO C0RM1
C0SM1: MOVLW 3
SUBWF MDAN0,0
BTFSS STATUS,2
GOTO C0SM2
MOVLW 0xF7
SUBWF MDAN0+1,0
BTFSC STATUS,0
GOTO PONC1
C0SM2: MOVF MDAN0+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN0+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
GOTO C0IG1
C0NIG2: MOVF MDAN0+3,0
SUBWF MDAN0+1,0
281
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSC STATUS,0
GOTO C0SM1
C0RM1: MOVF MDAN0,1
BTFSS STATUS,2
GOTO C0RM2
MOVLW 8
SUBWF MDAN0+1,0
BTFSS STATUS,0
GOTO PONC1
C0RM2: MOVF MDAN0+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN0+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C0IG2
C0IG1: MOVF MDAUX,0
SUBWF MDAN0,0
BTFSS STATUS,2
GOTO C0IG3
MOVF MDAUX+1,0
SUBWF MDAN0+1,0
BTFSS STATUS,2
GOTO C0IG4
GOTO PONC1
C0IG3: MOVF MDAUX,0
SUBWF MDAN0,0
BTFSS STATUS,0
282
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO PONC1
GOTO C0VL1
C0IG4: MOVF MDAUX+1,0
SUBWF MDAN0+1,0
BTFSS STATUS,0
GOTO PONC1
C0VL1: MOVF MDAUX,0
MOVWF MDAN0
MOVF MDAUX+1,0
MOVWF MDAN0+1
GOTO PONC1
C0IG2: MOVF MDAUX,0
SUBWF MDAN0,0
BTFSS STATUS,2
GOTO C0IG5
MOVF MDAUX+1,0
SUBWF MDAN0+1,0
BTFSS STATUS,2
GOTO C0IG6
GOTO PONC1
C0IG5: MOVF MDAUX,0
SUBWF MDAN0,0
BTFSS STATUS,0
GOTO C0VL1
GOTO PONC1
C0IG6: MOVF MDAUX+1,0
SUBWF MDAN0+1,0
BTFSS STATUS,0
GOTO C0VL1
283
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
PONC1: BSF ADCON0,3
;PONER CANAL 1
BCF ADCON0,4
BCF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 1 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN1:
CLRWDT
;CANAL 1
MOVF MDAN1+5,0 ;TOMA DATO NUEVO D LA ULTI CONV DL CANAL ANALOG DIG SELEC
MOVWF MDAN1+7
MOVF MDAN1+4,0
MOVWF MDAN1+6
MOVF MDAN1+3,0
MOVWF MDAN1+5
MOVF MDAN1+2,0
MOVWF MDAN1+4
MOVF MDAN1+1,0
MOVWF MDAN1+3
MOVF MDAN1,0
MOVWF MDAN1+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN1+1
MOVF ADRESH,0
MOVWF MDAN1
MOVLW 4
;TOMA 4 MEDIDAS SEGUIDAS SIN SEGURIDAD AL INI DL SOFTWARE
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC2
MOVF MDAN1+2,0
;SEGURIDAD EN LAS MEDIDAS
284
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN1,0
BTFSS STATUS,2
GOTO C1NIG1
MOVF MDAN1+3,0
SUBWF MDAN1+1,0
BTFSS STATUS,2
GOTO C1NIG2
GOTO PONC2
C1NIG1: MOVF MDAN1+2,0
SUBWF MDAN1,0
BTFSS STATUS,0
GOTO C1RM1
C1SM1: MOVLW 3
SUBWF MDAN1,0
BTFSS STATUS,2
GOTO C1SM2
MOVLW 0xF7
SUBWF MDAN1+1,0
BTFSC STATUS,0
GOTO PONC2
C1SM2: MOVF MDAN1+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN1+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
GOTO C1IG1
C1NIG2: MOVF MDAN1+3,0
285
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN1+1,0
BTFSC STATUS,0
GOTO C1SM1
C1RM1: MOVF MDAN1,1
BTFSS STATUS,2
GOTO C1RM2
MOVLW 8
SUBWF MDAN1+1,0
BTFSS STATUS,0
GOTO PONC2
C1RM2: MOVF MDAN1+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN1+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C1IG2
C1IG1: MOVF MDAUX,0
SUBWF MDAN1,0
BTFSS STATUS,2
GOTO C1IG3
MOVF MDAUX+1,0
SUBWF MDAN1+1,0
BTFSS STATUS,2
GOTO C1IG4
GOTO PONC2
C1IG3: MOVF MDAUX,0
SUBWF MDAN1,0
286
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO PONC2
GOTO C1VL1
C1IG4: MOVF MDAUX+1,0
SUBWF MDAN1+1,0
BTFSS STATUS,0
GOTO PONC2
C1VL1: MOVF MDAUX,0
MOVWF MDAN1
MOVF MDAUX+1,0
MOVWF MDAN1+1
GOTO PONC2
C1IG2: MOVF MDAUX,0
SUBWF MDAN1,0
BTFSS STATUS,2
GOTO C1IG5
MOVF MDAUX+1,0
SUBWF MDAN1+1,0
BTFSS STATUS,2
GOTO C1IG6
GOTO PONC2
C1IG5: MOVF MDAUX,0
SUBWF MDAN1,0
BTFSS STATUS,0
GOTO C1VL1
GOTO PONC2
C1IG6: MOVF MDAUX+1,0
SUBWF MDAN1+1,0
BTFSS STATUS,0
287
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO C1VL1
PONC2: BCF ADCON0,3
;PONER CANAL 2
BSF ADCON0,4
BCF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 2 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN2:
CLRWDT
;CANAL 2
MOVF MDAN2+5,0 ;TOMAR UN DATO NUEVO DE LA ULTI CONV DL CANAL
ANALOGICO DIGITAL SELECCIONADO
MOVWF MDAN2+7
MOVF MDAN2+4,0
MOVWF MDAN2+6
MOVF MDAN2+3,0
MOVWF MDAN2+5
MOVF MDAN2+2,0
MOVWF MDAN2+4
MOVF MDAN2+1,0
MOVWF MDAN2+3
MOVF MDAN2,0
MOVWF MDAN2+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN2+1
MOVF ADRESH,0
MOVWF MDAN2
MOVLW 4
;TOMAR 4 MEDIDAS SEGSIN SEGURIDAD AL INI DL SOFTWARE
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC3
288
MEMORIA
VI. Código fuente
MOVF MDAN2+2,0
Capítulo 2. Código de la tarjeta SA98
;SEGURIDAD EN LAS MEDIDAS
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2NIG1
MOVF MDAN2+3,0
SUBWF MDAN2+1,0
BTFSS STATUS,2
GOTO C2NIG2
GOTO PONC3
C2NIG1: MOVF MDAN2+2,0
SUBWF MDAN2,0
BTFSS STATUS,0
GOTO C2RM1
C2SM1: MOVLW 3
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2SM2
MOVLW 0xF7
SUBWF MDAN2+1,0
BTFSC STATUS,0
GOTO PONC3
C2SM2: MOVF MDAN2+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN2+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
GOTO C2IG1
289
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
C2NIG2: MOVF MDAN2+3,0
SUBWF MDAN2+1,0
BTFSC STATUS,0
GOTO C2SM1
C2RM1: MOVF MDAN2,1
BTFSS STATUS,2
GOTO C2RM2
MOVLW 8
SUBWF MDAN2+1,0
BTFSS STATUS,0
GOTO PONC3
C2RM2: MOVF MDAN2+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN2+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C2IG2
C2IG1: MOVF MDAUX,0
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2IG3
MOVF MDAUX+1,0
SUBWF MDAN2+1,0
BTFSS STATUS,2
GOTO C2IG4
GOTO PONC3
C2IG3: MOVF MDAUX,0
290
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN2,0
BTFSS STATUS,0
GOTO PONC3
GOTO C2VL1
C2IG4: MOVF MDAUX+1,0
SUBWF MDAN2+1,0
BTFSS STATUS,0
GOTO PONC3
C2VL1: MOVF MDAUX,0
MOVWF MDAN2
MOVF MDAUX+1,0
MOVWF MDAN2+1
GOTO PONC3
C2IG2: MOVF MDAUX,0
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2IG5
MOVF MDAUX+1,0
SUBWF MDAN2+1,0
BTFSS STATUS,2
GOTO C2IG6
GOTO PONC3
C2IG5: MOVF MDAUX,0
SUBWF MDAN2,0
BTFSS STATUS,0
GOTO C2VL1
GOTO PONC3
C2IG6: MOVF MDAUX+1,0
SUBWF MDAN2+1,0
291
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO C2VL1
PONC3: BSF ADCON0,3
;PONER CANAL 3
BSF ADCON0,4
BCF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 3 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN3:
CLRWDT
;CANAL 3
MOVF MDAN3+5,0
;TOMA DATO NUEVO D ULTI CONV DL CANAL ANALOG DIG SELEC
MOVWF MDAN3+7
MOVF MDAN3+4,0
MOVWF MDAN3+6
MOVF MDAN3+3,0
MOVWF MDAN3+5
MOVF MDAN3+2,0
MOVWF MDAN3+4
MOVF MDAN3+1,0
MOVWF MDAN3+3
MOVF MDAN3,0
MOVWF MDAN3+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN3+1
MOVF ADRESH,0
MOVWF MDAN3
MOVLW 4
;TOMAR 4 MEDIDAS SEG SIN SEGURIDAD AL INI DEL SOFTWARE
SUBWF NAD,0
BTFSS STATUS,0
292
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO PONC4
MOVF MDAN3+2,0
;SEGUN LS MED
SUBWF MDAN3,0
BTFSS STATUS,2
GOTO C3NIG1
MOVF MDAN3+3,0
SUBWF MDAN3+1,0
BTFSS STATUS,2
GOTO C3NIG2
GOTO PONC4
C3NIG1: MOVF MDAN3+2,0
SUBWF MDAN3,0
BTFSS STATUS,0
GOTO C3RM1
C3SM1: MOVLW 3
SUBWF MDAN3,0
BTFSS STATUS,2
GOTO C3SM2
MOVLW 0xF7
SUBWF MDAN3+1,0
BTFSC STATUS,0
GOTO PONC4
C3SM2: MOVF MDAN3+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN3+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
293
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO C3IG1
C3NIG2: MOVF MDAN3+3,0
SUBWF MDAN3+1,0
BTFSC STATUS,0
GOTO C3SM1
C3RM1: MOVF MDAN3,1
BTFSS STATUS,2
GOTO C3RM2
MOVLW 8
SUBWF MDAN3+1,0
BTFSS STATUS,0
GOTO PONC4
C3RM2: MOVF MDAN3+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN3+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C3IG2
C3IG1: MOVF MDAUX,0
SUBWF MDAN3,0
BTFSS STATUS,2
GOTO C3IG3
MOVF MDAUX+1,0
SUBWF MDAN3+1,0
BTFSS STATUS,2
GOTO C3IG4
GOTO PONC4
294
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
C3IG3: MOVF MDAUX,0
SUBWF MDAN3,0
BTFSS STATUS,0
GOTO PONC4
GOTO C3VL1
C3IG4: MOVF MDAUX+1,0
SUBWF MDAN3+1,0
BTFSS STATUS,0
GOTO PONC4
C3VL1: MOVF MDAUX,0
MOVWF MDAN3
MOVF MDAUX+1,0
MOVWF MDAN3+1
GOTO PONC4
C3IG2: MOVF MDAUX,0
SUBWF MDAN3,0
BTFSS STATUS,2
GOTO C3IG5
MOVF MDAUX+1,0
SUBWF MDAN3+1,0
BTFSS STATUS,2
GOTO C3IG6
GOTO PONC4
C3IG5: MOVF MDAUX,0
SUBWF MDAN3,0
BTFSS STATUS,0
GOTO C3VL1
GOTO PONC4
C3IG6: MOVF MDAUX+1,0
295
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN3+1,0
BTFSS STATUS,0
GOTO C3VL1
PONC4: BCF ADCON0,3
;PONER CANAL 4
BCF ADCON0,4
BSF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 4 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN4:
CLRWDT
;CANAL 4
MOVF MDAN4+5,0 ;TOMA DATO NUEVO D LA ULTI CONV DL CANAL ANALOG DIG SELEC
MOVWF MDAN4+7
MOVF MDAN4+4,0
MOVWF MDAN4+6
MOVF MDAN4+3,0
MOVWF MDAN4+5
MOVF MDAN4+2,0
MOVWF MDAN4+4
MOVF MDAN4+1,0
MOVWF MDAN4+3
MOVF MDAN4,0
MOVWF MDAN4+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN4+1
MOVF ADRESH,0
MOVWF MDAN4
MOVLW 4
;TOMAR 4 MEDIDAS SEG SIN SEGURIDAD AL INI DL SOFTWARE
SUBWF NAD,0
296
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO PONC5
MOVF MDAN4+2,0
;SEGURIDAD EN LAS MEDIDAS
SUBWF MDAN4,0
BTFSS STATUS,2
GOTO C4NIG1
MOVF MDAN4+3,0
SUBWF MDAN4+1,0
BTFSS STATUS,2
GOTO C4NIG2
GOTO PONC5
C4NIG1: MOVF MDAN4+2,0
SUBWF MDAN4,0
BTFSS STATUS,0
GOTO C4RM1
C4SM1: MOVLW 3
SUBWF MDAN4,0
BTFSS STATUS,2
GOTO C4SM2
MOVLW 0xF7
SUBWF MDAN4+1,0
BTFSC STATUS,0
GOTO PONC5
C4SM2: MOVF MDAN4+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN4+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
297
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO C4IG1
C4NIG2: MOVF MDAN4+3,0
SUBWF MDAN4+1,0
BTFSC STATUS,0
GOTO C4SM1
C4RM1: MOVF MDAN4,1
BTFSS STATUS,2
GOTO C4RM2
MOVLW 8
SUBWF MDAN4+1,0
BTFSS STATUS,0
GOTO PONC5
C4RM2: MOVF MDAN4+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN4+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C4IG2
C4IG1: MOVF MDAUX,0
SUBWF MDAN4,0
BTFSS STATUS,2
GOTO C4IG3
MOVF MDAUX+1,0
SUBWF MDAN4+1,0
BTFSS STATUS,2
GOTO C4IG4
GOTO PONC5
298
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
C4IG3: MOVF MDAUX,0
SUBWF MDAN4,0
BTFSS STATUS,0
GOTO PONC5
GOTO C4VL1
C4IG4: MOVF MDAUX+1,0
SUBWF MDAN4+1,0
BTFSS STATUS,0
GOTO PONC5
C4VL1: MOVF MDAUX,0
MOVWF MDAN4
MOVF MDAUX+1,0
MOVWF MDAN4+1
GOTO PONC5
C4IG2: MOVF MDAUX,0
SUBWF MDAN4,0
BTFSS STATUS,2
GOTO C4IG5
MOVF MDAUX+1,0
SUBWF MDAN4+1,0
BTFSS STATUS,2
GOTO C4IG6
GOTO PONC5
C4IG5: MOVF MDAUX,0
SUBWF MDAN4,0
BTFSS STATUS,0
GOTO C4VL1
GOTO PONC5
C4IG6: MOVF MDAUX+1,0
299
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN4+1,0
BTFSS STATUS,0
GOTO C4VL1
PONC5: BSF ADCON0,3
;PONER CANAL 5
BCF ADCON0,4
BSF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 5 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN5:
CLRWDT
;CANAL 5
MOVF MDAN5+5,0 ;TOMA DATO NUEVO D LA ULTI CONV DL CANAL ANALOG DIG SELEC
MOVWF MDAN5+7
MOVF MDAN5+4,0
MOVWF MDAN5+6
MOVF MDAN5+3,0
MOVWF MDAN5+5
MOVF MDAN5+2,0
MOVWF MDAN5+4
MOVF MDAN5+1,0
MOVWF MDAN5+3
MOVF MDAN5,0
MOVWF MDAN5+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN5+1
MOVF ADRESH,0
MOVWF MDAN5
MOVLW 4
;TOMAR 4 MEDIDAS SEG SIN SEGURIDAD AL INI DL SOFTWARE
SUBWF NAD,0
300
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO PONC6
MOVF MDAN5+2,0
;SEGURIDAD EN LAS MEDIDAS
SUBWF MDAN5,0
BTFSS STATUS,2
GOTO C5NIG1
MOVF MDAN5+3,0
SUBWF MDAN5+1,0
BTFSS STATUS,2
GOTO C5NIG2
GOTO PONC6
C5NIG1: MOVF MDAN5+2,0
SUBWF MDAN5,0
BTFSS STATUS,0
GOTO C5RM1
C5SM1: MOVLW 3
SUBWF MDAN5,0
BTFSS STATUS,2
GOTO C5SM2
MOVLW 0xF7
SUBWF MDAN5+1,0
BTFSC STATUS,0
GOTO PONC6
C5SM2: MOVF MDAN5+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN5+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
301
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
INCF MDAUX,1
GOTO C5IG1
C5NIG2: MOVF MDAN5+3,0
SUBWF MDAN5+1,0
BTFSC STATUS,0
GOTO C5SM1
C5RM1: MOVF MDAN5,1
BTFSS STATUS,2
GOTO C5RM2
MOVLW 8
SUBWF MDAN5+1,0
BTFSS STATUS,0
GOTO PONC6
C5RM2: MOVF MDAN5+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN5+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C5IG2
C5IG1: MOVF MDAUX,0
SUBWF MDAN5,0
BTFSS STATUS,2
GOTO C5IG3
MOVF MDAUX+1,0
SUBWF MDAN5+1,0
BTFSS STATUS,2
GOTO C5IG4
302
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO PONC6
C5IG3: MOVF MDAUX,0
SUBWF MDAN5,0
BTFSS STATUS,0
GOTO PONC6
GOTO C5VL1
C5IG4: MOVF MDAUX+1,0
SUBWF MDAN5+1,0
BTFSS STATUS,0
GOTO PONC6
C5VL1: MOVF MDAUX,0
MOVWF MDAN5
MOVF MDAUX+1,0
MOVWF MDAN5+1
GOTO PONC6
C5IG2: MOVF MDAUX,0
SUBWF MDAN5,0
BTFSS STATUS,2
GOTO C5IG5
MOVF MDAUX+1,0
SUBWF MDAN5+1,0
BTFSS STATUS,2
GOTO C5IG6
GOTO PONC6
C5IG5: MOVF MDAUX,0
SUBWF MDAN5,0
BTFSS STATUS,0
GOTO C5VL1
GOTO PONC6
303
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
C5IG6: MOVF MDAUX+1,0
SUBWF MDAN5+1,0
BTFSS STATUS,0
GOTO C5VL1
PONC6: BCF ADCON0,3
;PONER CANAL 6
BSF ADCON0,4
BSF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 6 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN6:
CLRWDT
;CANAL 6
MOVF MDAN6+5,0 ;TOMA DATO NUEVO D LA ULTI CONV DL CANAL ANALOG DIG
SELEC
MOVWF MDAN6+7
MOVF MDAN6+4,0
MOVWF MDAN6+6
MOVF MDAN6+3,0
MOVWF MDAN6+5
MOVF MDAN6+2,0
MOVWF MDAN6+4
MOVF MDAN6+1,0
MOVWF MDAN6+3
MOVF MDAN6,0
MOVWF MDAN6+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN6+1
MOVF ADRESH,0
MOVWF MDAN6
MOVLW 4
;TOMAR 4 MEDIDAS SEG SIN SEGURIDAD AL INI DL SOFTWARE
304
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC7
MOVF MDAN6+2,0
;SEGURIDAD EN LAS MEDIDAS
SUBWF MDAN6,0
BTFSS STATUS,2
GOTO C6NIG1
MOVF MDAN6+3,0
SUBWF MDAN6+1,0
BTFSS STATUS,2
GOTO C6NIG2
GOTO PONC7
C6NIG1: MOVF MDAN6+2,0
SUBWF MDAN6,0
BTFSS STATUS,0
GOTO C6RM1
C6SM1: MOVLW 3
SUBWF MDAN6,0
BTFSS STATUS,2
GOTO C6SM2
MOVLW 0xF7
SUBWF MDAN6+1,0
BTFSC STATUS,0
GOTO PONC7
C6SM2: MOVF MDAN6+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN6+3,0
MOVWF MDAUX+1
305
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSC STATUS,0
INCF MDAUX,1
GOTO C6IG1
C6NIG2: MOVF MDAN6+3,0
SUBWF MDAN6+1,0
BTFSC STATUS,0
GOTO C6SM1
C6RM1: MOVF MDAN6,1
BTFSS STATUS,2
GOTO C6RM2
MOVLW 8
SUBWF MDAN6+1,0
BTFSS STATUS,0
GOTO PONC7
C6RM2: MOVF MDAN6+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN6+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C6IG2
C6IG1: MOVF MDAUX,0
SUBWF MDAN6,0
BTFSS STATUS,2
GOTO C6IG3
MOVF MDAUX+1,0
SUBWF MDAN6+1,0
BTFSS STATUS,2
306
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO C6IG4
GOTO PONC7
C6IG3: MOVF MDAUX,0
SUBWF MDAN6,0
BTFSS STATUS,0
GOTO PONC7
GOTO C6VL1
C6IG4: MOVF MDAUX+1,0
SUBWF MDAN6+1,0
BTFSS STATUS,0
GOTO PONC7
C6VL1: MOVF MDAUX,0
MOVWF MDAN6
MOVF MDAUX+1,0
MOVWF MDAN6+1
GOTO PONC7
C6IG2: MOVF MDAUX,0
SUBWF MDAN6,0
BTFSS STATUS,2
GOTO C6IG5
MOVF MDAUX+1,0
SUBWF MDAN6+1,0
BTFSS STATUS,2
GOTO C6IG6
GOTO PONC7
C6IG5: MOVF MDAUX,0
SUBWF MDAN6,0
BTFSS STATUS,0
GOTO C6VL1
307
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO PONC7
C6IG6: MOVF MDAUX+1,0
SUBWF MDAN6+1,0
BTFSS STATUS,0
GOTO C6VL1
PONC7: BSF ADCON0,3
;PONER CANAL 7
BSF ADCON0,4
BSF ADCON0,5
GOTO RETAD
;MEDIDA ANALOGICA - CANAL 7 DEL CONVERTIDOR ANALOGICO DIGITAL
CAN7:
CLRWDT
;CANAL 7
MOVF MDAN7+5,0 ;TOMA DATO NUEV DE LA ULTI CONV DL CANAL ANALOG DIG SELEC
MOVWF MDAN7+7
MOVF MDAN7+4,0
MOVWF MDAN7+6
MOVF MDAN7+3,0
MOVWF MDAN7+5
MOVF MDAN7+2,0
MOVWF MDAN7+4
MOVF MDAN7+1,0
MOVWF MDAN7+3
MOVF MDAN7,0
MOVWF MDAN7+2
BSF STATUS,5
MOVF ADRESL,0
BCF STATUS,5
MOVWF MDAN7+1
MOVF ADRESH,0
MOVWF MDAN7
308
MEMORIA
VI. Código fuente
MOVLW 4
Capítulo 2. Código de la tarjeta SA98
;TOMAR 4 MEDIDAS SEG SIN SEGURIDAD AL INI DL SOFTWARE
SUBWF NAD,0
BTFSS STATUS,0
GOTO INNAD
MOVF MDAN7+2,0
;SEGURIDAD EN LAS MEDIDAS
SUBWF MDAN7,0
BTFSS STATUS,2
GOTO C7NIG1
MOVF MDAN7+3,0
SUBWF MDAN7+1,0
BTFSS STATUS,2
GOTO C7NIG2
GOTO PONC0
C7NIG1: MOVF MDAN7+2,0
SUBWF MDAN7,0
BTFSS STATUS,0
GOTO C7RM1
C7SM1: MOVLW 3
SUBWF MDAN7,0
BTFSS STATUS,2
GOTO C7SM2
MOVLW 0xF7
SUBWF MDAN7+1,0
BTFSC STATUS,0
GOTO PONC0
C7SM2: MOVF MDAN7+2,0
MOVWF MDAUX
MOVLW 8
ADDWF MDAN7+3,0
309
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
GOTO C7IG1
C7NIG2: MOVF MDAN7+3,0
SUBWF MDAN7+1,0
BTFSC STATUS,0
GOTO C7SM1
C7RM1: MOVF MDAN7,1
BTFSS STATUS,2
GOTO C7RM2
MOVLW 8
SUBWF MDAN7+1,0
BTFSS STATUS,0
GOTO PONC0
C7RM2: MOVF MDAN7+2,0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN7+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C7IG2
C7IG1: MOVF MDAUX,0
SUBWF MDAN7,0
BTFSS STATUS,2
GOTO C7IG3
MOVF MDAUX+1,0
SUBWF MDAN7+1,0
310
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,2
GOTO C7IG4
GOTO PONC0
C7IG3: MOVF MDAUX,0
SUBWF MDAN7,0
BTFSS STATUS,0
GOTO PONC0
GOTO C7VL1
C7IG4: MOVF MDAUX+1,0
SUBWF MDAN7+1,0
BTFSS STATUS,0
GOTO PONC0
C7VL1: MOVF MDAUX,0
MOVWF MDAN7
MOVF MDAUX+1,0
MOVWF MDAN7+1
GOTO PONC0
C7IG2: MOVF MDAUX,0
SUBWF MDAN7,0
BTFSS STATUS,2
GOTO C7IG5
MOVF MDAUX+1,0
SUBWF MDAN7+1,0
BTFSS STATUS,2
GOTO C7IG6
GOTO PONC0
C7IG5: MOVF MDAUX,0
SUBWF MDAN7,0
BTFSS STATUS,0
311
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO C7VL1
GOTO PONC0
C7IG6: MOVF MDAUX+1,0
SUBWF MDAN7+1,0
BTFSS STATUS,0
GOTO C7VL1
GOTO PONC0
INNAD: INCF NAD,1
PONC0: BCF ADCON0,3 ;PONER CANAL 0
BCF ADCON0,4
BCF ADCON0,5
RETAD: BCF PIR1,6 ;FLAG DL CONV A/D=0
BSF STATUS,5
BCF PIE1,6
;DESHABILITO INTER DL CONV A/D
GOTO FINTER
ORG 0x800
;INICIALIZACION MICROPROCESADOR
INICIA: CLRWDT
;INI REGISTROS DEL MICRO
CLRF PIR1
CLRF PIR2
MOVLW 0x41
MOVWF ADCON0
MOVLW 0x54
MOVWF T2CON
BSF STATUS,5
MOVLW 0xAF
MOVWF OPTION_REG
CLRF PIE1
312
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CLRF PIE2
MOVLW 0x80
MOVWF ADCON1
MOVLW 0x28
MOVWF PR2
MOVLW 7
MOVWF CMCON
;INI PUERTOS DL MICRO
MOVLW 0x2F
MOVWF TRISA
MOVLW 7
MOVWF TRISB
MOVLW 0x80
MOVWF TRISC
MOVLW 0xF0
MOVWF TRISD
MOVLW 7
MOVWF TRISE
CLRF STATUS
MOVLW 0
MOVWF PORTA
MOVLW 0
MOVWF PORTB
MOVLW 0
MOVWF PORTC
MOVLW 4
MOVWF PORTD
MOVLW 0
MOVWF PORTE
313
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
;INI VAR RAM
CLRF NAD
CLRF TIME
CLRF TIME+1
CLRF TIME+2
CLRF TSEG
CLRF TREC
MOVLW 0x3C
MOVWF TNCOM ;AL INI NO ERROR D COMU-COMPROBAR COMU PASA 1 MIN DSD L INI
CLRF FILSUC
;AL INICIO NO HAY SEÑAL DE FILTRO SUCIO
MOVLW 0x0A
;INICIALIZACION DEL CONV DIG-ANALOG MAX500
MOVWF TDA
;ENVIA 1º DATOS AL CONV DSPUES DE 10 SEG DSDE EL INI DL FUNCIONA
CLRF DAOUTA
;CANAL A - 0.0 V
CLRF DAOUTB
;CANAL B - 0.0 V
CLRF DAOUTC
;CANAL C - 0.0 V
CLRF DAOUTD
;CANAL D - 0.0 V
CALL CONVDA
;SUBRUTINA PARA HACER LA SALIDA AL CONVERTIDOR D/A
;VER CONFIGURACION DEL MICROSWITCH SW1
BSF STATUS,5
CLRF FC
;AL INICIO NO HAY FREE-COOLING
CLRF FCOM
;COGER Y CALCULAR TODOS LOS DATOS NECESARIOS ANTES DE
RESPONDER EN LAS COMUNICACIONES CON EL TX98
CLRF FFUNC
CLRF STATUS
CONF1: CLRWDT
;MICROSWITCH nº1 - MOD FUNCIONA NORMAL/MODO AUTOTEST
BTFSS PORTD,4
GOTO CONF2
CALL DELDAF
BTFSS PORTD,4
GOTO CONF1
314
MEMORIA
VI. Código fuente
GOTO CONF3
Capítulo 2. Código de la tarjeta SA98
;MICROSWITCH nº1 OFF - MOD FUNCIONA NORMAL (FFUNC,0=0)
CONF2: CALL DELDAF
BTFSC PORTD,4
GOTO CONF1
BSF STATUS,5
;MICROSWITCH nº1 ON - MODO AUTOTEST (FFUNC,0=1)
BSF FFUNC,0
CLRF STATUS
CONF3: CLRWDT
;MICROSWITCH nº2 - FREE-COOLING TEMP/F-C ENTALPIA
BTFSS PORTD,5
GOTO CONF4
CALL DELDAF
BTFSS PORTD,5
GOTO CONF3
GOTO CONF5
;MICROSWITCH nº2 OFF - FREE-COOLING TEMP (FFUNC,1=0)
CONF4: CALL DELDAF
BTFSC PORTD,5
GOTO CONF3
BSF STATUS,5
;MICROSWITCH nº2 ON - F-C ENTALPIA (FFUNC,1=1)
BSF FFUNC,1
CLRF STATUS
CONF5: CLRWDT
;MICROSWITCH nº3 - CONEXION POT DE MIN APERTURA
BTFSS PORTD,6
GOTO CONF6
CALL DELDAF
BTFSS PORTD,6
GOTO CONF5
GOTO CONF7 ;MICROSWITCH nº3 OFF-POT DE MIN APERTURA NO CONECT (FFUNC,2=0)
CONF6: CALL DELDAF
BTFSC PORTD,6
315
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO CONF5
BSF STATUS,5
;MICROSWITCH nº3 ON - POT DE MIN APERTURA CONEC (FFUNC,2=1)
BSF FFUNC,2
CONF7: CLRWDT
BTFSS PORTD,7
GOTO CONF8
CALL DELDAF
BTFSS PORTD,7
GOTO CONF7
GOTO CONF9
;MICROSWITCH nº4 OFF - - (FFUNC,3=0)
CONF8: CALL DELDAF
BTFSC PORTD,7
GOTO CONF7
BSF STATUS,5
;MICROSWITCH nº4 ON - - (FFUNC,3=1)
BSF FFUNC,3
CONF9: CLRF STATUS
RETURN
;SUBRUTINAS MEDIDAS ANALOGICAS
;SUBRUTINA CALCULO MEDIDA SONDA TEMPERATURA EXTERIOR (CANAL 0 DEL CONVA/D)
TMEXT: CLRWDT
;CALCULAR LA MEDIA D LS 4 MEDIDAS ANALOG TOMADAS DL CONV A/D
CLRF MEDM
;INICIALIZAR MEDIA DE LAS MEDIDAS (MEDM=0)
CLRF MEDM+1
MOVF MDAN0+2,0
;SUMAR LAS 4 MEDIDAS ANALOGICAS
ADDWF MDAN0,0
MOVWF MEDM
MOVF MDAN0+3,0
ADDWF MDAN0+1,0
MOVWF MEDM+1
BTFSC STATUS,0
316
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
INCF MEDM,1
MOVF MDAN0+4,0
ADDWF MEDM,1
MOVF MDAN0+5,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN0+6,0
ADDWF MEDM,1
MOVF MDAN0+7,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
BCF STATUS,0
;SE DIVIDE LA SUMA DE LAS 4 MEDIDAS PARA MEDIA (MEDM)
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
MOVF MEDM,0
;SE OBTIENE POS1 (POS1 Y POS1+1)
BSF STATUS,5
MOVWF POS1
BCF STATUS,5
MOVF MEDM+1,0
BSF STATUS,5
MOVWF POS1+1
BCF STATUS,0 ;DIVID /4 XQ LS VALORES VAN D 0x000 A 0x3FF Y LA TABLA D 0x00 A 0xFF
RRF POS1,1
RRF POS1+1,1
317
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BCF STATUS,0
RRF POS1,1
RRF POS1+1,1
BCF POS1+1,0
MOVLW 0xFC
SUBWF POS1+1,0
BTFSC STATUS,0
GOTO PVEXT
MOVF PCLATH,0
;OBTIENEN LS VAL VAL1 Y VAL2 D TABLA PAOBTENER VAL INTERPOL
MOVWF PCLAX3
MOVLW HIGH TABLAE
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL1
INCF POS1+1,1
MOVLW HIGH TABLAE
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL1+1
INCF POS1+1,1
MOVLW HIGH TABLAE
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL2
INCF POS1+1,1
MOVLW HIGH TABLAE
318
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL2+1
MOVF PCLAX3,0
MOVWF PCLATH
GOTO MULME
PVEXT: MOVLW 3
;SE OBTIENEN LOS VALORES VAL1 Y VAL2 MINIMOS PARA OBTENER
EL VALOR INTERPOLADO (NO POR TABLA)
MOVWF VAL1
;+ POS EN TABLA -> MINTEMP SONDA TEMP EXT-> -20ºC (0x39C)
MOVWF VAL2
MOVLW 0x9C
MOVWF VAL1+1
MOVWF VAL2+1
GOTO IGVE
MULME: CLRWDT
MOVF POS1,0
;SE CALCULA POS2
MOVWF POS2
MOVLW 1
SUBWF POS1+1,0
MOVWF POS2+1
BCF STATUS,0
RLF POS2+1,1
RLF POS2,1
BCF STATUS,0
RLF POS2+1,1
RLF POS2,1
BCF STATUS,5
MOVF MEDM+1,0
; INTERPOLA:MEDIDA=((POS2-MEDM)*(VAL1-VAL2)/4)+VAL2
BSF STATUS,5
319
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF POS2+1,0
MOVWF POS1+1
MOVF VAL2+1,0
SUBWF VAL1+1,0
MOVWF POS2+1
CLRF MULT1
;MULTI 2 VAL D 10 BITS MAX (MULT1 Y MULT2)-RESUL 3 BYTES RESMUL
MOVF POS1+1,0
MOVWF MULT1+1
CLRF MULT2
MOVF POS2+1,0
MOVWF MULT2+1
MOVF PCLATH,0
MOVWF PCLAX3
BSF PCLATH,4
BCF PCLATH,3
CALL MULT
;SUBRUTINA DE MULTIPLICACION
MOVF PCLAX3,0
MOVWF PCLATH
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
320
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
RRF RESMUL+2,1
MOVF RESMUL+2,0
ADDWF VAL2+1,1
BTFSS STATUS,0
GOTO IGVE
MOVLW 3
SUBWF VAL2,0
BTFSC STATUS,0
GOTO NSETV
INCF VAL2,1
GOTO IGVE
NSETV: CLRF VAL2
IGVE:
MOVF VAL2,0
BCF STATUS,5
MOVWF MEDEXT
;MEDIDA TEMP EXT N HEXADECIMAL
BSF STATUS,5
MOVF VAL2+1,0
BCF STATUS,5
MOVWF MEDEXT+1
RETURN
;SUBRUTINA CALCULO MEDIDA HUMEDAD INTERIOR (CANAL 1 DEL CONVERTIDOR A/D)
THUMI: CLRWDT
CLRF MEDM
;INICIALIZAR MEDIA DE LAS MEDIDAS (MEDM=0)
CLRF MEDM+1
MOVF MDAN1+2,0
;SUMAR LAS 4 MEDIDAS ANALOGICAS
ADDWF MDAN1,0
MOVWF MEDM
MOVF MDAN1+3,0
ADDWF MDAN1+1,0
321
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF MEDM+1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN1+4,0
ADDWF MEDM,1
MOVF MDAN1+5,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN1+6,0
ADDWF MEDM,1
MOVF MDAN1+7,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
BCF STATUS,0
;DIVIDE SUMA DE LAS 4 MED ANALOG/4 PARA LA MEDIA (MEDM)
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
MOVF MEDM,0
;SE OBTIENE POS1 (POS1 Y POS1+1)
BSF STATUS,5
MOVWF POS1
BCF STATUS,5
MOVF MEDM+1,0
BSF STATUS,5
MOVWF POS1+1
BCF STATUS,0
;DIVIDE/4 XQ LOS VAL VAN D 0x000 A 0x3FF Y LA TABLA D 0x00 A 0xFF
322
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
RRF POS1,1
RRF POS1+1,1
BCF STATUS,0
RRF POS1,1
RRF POS1+1,1
BCF POS1+1,0 ;XQ N LS POS PAR ESTAN LS BYTES ALTOS D LS DATS CONTNIDS N TABLA
MOVLW 0xFC
SUBWF POS1+1,0
BTFSC STATUS,0
GOTO PVHUMI
MOVF PCLATH,0 ;OBTIENEN VAL VAL1 Y VAL2 D TABLA PARA OBTENER VAL INTERPOL
MOVWF PCLAX3
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1
INCF POS1+1,1
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1+1
INCF POS1+1,1
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL2
323
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
INCF POS1+1,1
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL2+1
MOVF PCLAX3,0
MOVWF PCLATH
GOTO MULMHI
PVHUMI: MOVLW 3
; OBTIENEN LOS VALORES VAL1 Y VAL2 MINIMOS PARA OBTENER
EL VALOR INTERPOLADO (NO POR TABLA)
MOVWF VAL1
;MAYOR POSICION EN LA TABLA -> MAXIMA HUMEDAD -> 100% (0x3E8
-> 1000dec) EL VALOR DE LA HUMEDAD VIENE MULTIPLICADO POR 10
MOVWF VAL2
MOVLW 0xE8
MOVWF VAL1+1
MOVWF VAL2+1
GOTO IGVHI
MULMHI: CLRWDT
MOVLW 3
SUBWF POS1+1,1
BCF STATUS,0
RLF POS1+1,1
RLF POS1,1
BCF STATUS,0
RLF POS1+1,1
RLF POS1,1
MOVF POS1+1,0 ; MEDIDA=((MEDM-POS1)*(VAL2-VAL1)/4)+VAL1
BCF STATUS,5
SUBWF MEDM+1,0
324
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BSF STATUS,5
MOVWF POS1+1
MOVF VAL1+1,0
SUBWF VAL2+1,0
MOVWF POS2+1
CLRF MULT1;MULTI D 2 VALD 10 BITS MAX (MULT1 Y MULT2)RESUL N 3 BYTES RESMUL
MOVF POS1+1,0
MOVWF MULT1+1
CLRF MULT2
MOVF POS2+1,0
MOVWF MULT2+1
MOVF PCLATH,0
MOVWF PCLAX3
BSF PCLATH,4
BCF PCLATH,3
CALL MULT
;SUBRUTINA DE MULTIPLICACION
MOVF PCLAX3,0
MOVWF PCLATH
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
325
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
RRF RESMUL+2,1
MOVF RESMUL+2,0
ADDWF VAL1+1,1
BTFSC STATUS,0
INCF VAL1,1
IGVHI: MOVF VAL1,0
MOVWF MDHUMI ;MEDIDA HUMEDAD D AIR INTER O DL D RETORNO N HEXADEC
MOVF VAL1+1,0
MOVWF MDHUMI+1
CLRF STATUS
RETURN
;SUBRUTINA CALCULO MEDIDA HUMEDAD EXTERIOR (CANAL 2 DEL CONVERTIDOR A/D)
THUME: CLRWDT
CLRF MEDM
;INICIALIZAR MEDIA DE LAS MEDIDAS (MEDM=0)
CLRF MEDM+1
MOVF MDAN2+2,0
;SUMAR LAS 4 MEDIDAS ANALOGICAS
ADDWF MDAN2,0
MOVWF MEDM
MOVF MDAN2+3,0
ADDWF MDAN2+1,0
MOVWF MEDM+1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN2+4,0
ADDWF MEDM,1
MOVF MDAN2+5,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
326
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVF MDAN2+6,0
ADDWF MEDM,1
MOVF MDAN2+7,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
BCF STATUS,0
;SE DIVID LA SUM D 4 MEDIDAS ANALOG/ 4 PARA LA MEDIA (MEDM)
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
MOVF MEDM,0
;SE OBTIENE POS1 (POS1 Y POS1+1)
BSF STATUS,5
MOVWF POS1
BCF STATUS,5
MOVF MEDM+1,0
BSF STATUS,5
MOVWF POS1+1
BCF STATUS,0 ;DIVIDE/4 XQ LOS VAL VAN D 0x000 A 0x3FF Y LA TABLA D 0x00 A 0xFF
RRF POS1,1
RRF POS1+1,1
BCF STATUS,0
RRF POS1,1
RRF POS1+1,1
BCF POS1+1,0 ;XQ N LS POS PARES ESTAN LO BYTES ALTOS DE LOS DATOS N TABLA
MOVLW 0xFC
SUBWF POS1+1,0
BTFSC STATUS,0
327
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO PVHUME
MOVF PCLATH,0 ;OBTIENEN LS VAL VAL1 Y VAL2 D TABLA PA OBTENER VAL INTERPOL
MOVWF PCLAX3
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1
INCF POS1+1,1
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1+1
INCF POS1+1,1
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL2
INCF POS1+1,1
MOVLW HIGH TABLAH
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL2+1
MOVF PCLAX3,0
MOVWF PCLATH
GOTO MULMHE
328
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
PVHUME: MOVLW 3
;SE OBTIENEN LOS VALORES VAL1 Y VAL2 MINIMOS PARA
OBTENER EL VALOR INTERPOLADO (NO POR TABLA)
MOVWF VAL1
;MAYOR POSICION EN LA TABLA -> MAXIMA HUMEDAD -> 100% (0x3E8
-> 1000dec) EL VALOR DE LA HUMEDAD VIENE MULTIPLICADO POR 10
MOVWF VAL2
MOVLW 0xE8
MOVWF VAL1+1
MOVWF VAL2+1
GOTO IGVHE
MULMHE: CLRWDT
MOVLW 3
SUBWF POS1+1,1
BCF STATUS,0
RLF POS1+1,1
RLF POS1,1
BCF STATUS,0
RLF POS1+1,1
RLF POS1,1
MOVF POS1+1,0
; MEDIDA=((MEDM-POS1)*(VAL2-VAL1)/4)+VAL1
BCF STATUS,5
SUBWF MEDM+1,0
BSF STATUS,5
MOVWF POS1+1
MOVF VAL1+1,0
SUBWF VAL2+1,0
MOVWF POS2+1
CLRF MULT1 ;MULTI D 2 VAL D 10 BITS MAX(MULT1 Y MULT2)–RESUL 3 BYTES RESMUL
MOVF POS1+1,0
MOVWF MULT1+1
CLRF MULT2
329
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVF POS2+1,0
MOVWF MULT2+1
MOVF PCLATH,0
MOVWF PCLAX3
BSF PCLATH,4
BCF PCLATH,3
CALL MULT
;SUBRUTINA DE MULTIPLICACION
MOVF PCLAX3,0
MOVWF PCLATH
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
BCF STATUS,0
RRF RESMUL,1
RRF RESMUL+1,1
RRF RESMUL+2,1
MOVF RESMUL+2,0
ADDWF VAL1+1,1
BTFSC STATUS,0
INCF VAL1,1
IGVHE: MOVF VAL1,0
MOVWF MDHUME
;MEDIDA HUMEDAD DEL AIRE EXTERIOR EN HEXADECIMAL
MOVF VAL1+1,0
MOVWF MDHUME+1
330
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CLRF STATUS
RETURN
;SUBR CALIDAD AIRE:CH3 DL CONV A/D
TCALD: CLRWDT
CLRF MEDM
CLRF MEDM+1
MOVF MDAN3+2,0
ADDWF MDAN3,0
MOVWF MEDM
MOVF MDAN3+3,0
ADDWF MDAN3+1,0
MOVWF MEDM+1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN3+4,0
ADDWF MEDM,1
MOVF MDAN3+5,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN3+6,0
ADDWF MEDM,1
MOVF MDAN3+7,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
BCF
STATUS,0
RRF MEDM,1
RRF MEDM+1,1
331
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
MOVLW 0xFF
SUBWF MEDM+1,0
BTFSC STATUS,0
GOTO PVCALD
MOVF PCLATH,0
MOVWF PCLAX3
MOVLW HIGH TABLAC
MOVWF PCLATH
MOVF MEDM+1,0
CALL TABLAC
BSF STATUS,5
MOVWF MDCALD
CLRF STATUS
RETURN
PVCALD: BSF
STATUS,5
MOVLW 0xFF
MOVWF MDCALD
CLRF STATUS
RETURN
;SUB CALCULO D PRESION (CH4 CONV A/D)
332
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
TPRES: CLRWDT
;CALCULAR LA MEDIA DE LAS 4 MEDIDAS ANALOGICAS TOMADAS
DEL CONVERTIDOR A/D
CLRF MEDM
;INICIALIZAR MEDIA DE LAS MEDIDAS (MEDM=0)
CLRF MEDM+1
MOVF MDAN4+2,0
;SUMAR LAS 4 MEDIDAS ANALOGICAS
ADDWF MDAN4,0
MOVWF MEDM
MOVF MDAN4+3,0
ADDWF MDAN4+1,0
MOVWF MEDM+1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN4+4,0
ADDWF MEDM,1
MOVF MDAN4+5,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN4+6,0
ADDWF MEDM,1
MOVF MDAN4+7,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
BCF STATUS,0
;DIVIDE SUMA DE LAS 4 MEDIDAS ANALOG /4 PARA MEDIA (MEDM)
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
333
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVF MEDM,0
;MEDIDA PRESION EN HEXADECIMAL
BSF STATUS,5
MOVWF MDPRES
BCF STATUS,5
MOVF MEDM+1,0
BSF STATUS,5
MOVWF MDPRES+1
CLRF STATUS
RETURN
;SUBRUTINA CALCULO MEDIDA POT DE MIN APERTURA (CH 5 CONV A/D)
TPMINA: CLRWDT
CLRF MEDM
;CALCULAR MEDIA D LS 4 MEDIDAS ANALOG DL CONV A/DPMINA
;INI MEDIA DE LAS MEDIDAS (MEDM=0)
CLRF MEDM+1
MOVF MDAN5+2,0
;SUMAR LAS 4 MEDIDAS ANALOGICAS
ADDWF MDAN5,0
MOVWF MEDM
MOVF MDAN5+3,0
ADDWF MDAN5+1,0
MOVWF MEDM+1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN5+4,0
ADDWF MEDM,1
MOVF MDAN5+5,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
MOVF MDAN5+6,0
ADDWF MEDM,1
334
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVF MDAN5+7,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
BCF STATUS,0
; DIVIDE SUMA DE LAS 4 MEDIDAS ANALOG/4 PARA LA MEDIA(MEDM)
RRF MEDM,1
RRF
MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0 ; DIVID/2 ->MEDIDA N 8 BITS:MAX MED ANALOG MPMINA=0x1FF - 2.5V
RRF MEDM,1
RRF MEDM+1,1
MOVF MEDM,1
BTFSS STATUS,2
GOTO MAXPOT
MOVF MEDM+1,0
BSF STATUS,5
MOVWF MPMINA
CLRF STATUS
RETURN
MAXPOT: BSF
STATUS,5
MOVLW 0xFF
MOVWF MPMINA
CLRF STATUS
RETURN
;SUBRUTINA CALCULO ENTALPIA - ENTALPIA AIRE INTERIOR Y ENTALPIA AIRE EXTERIOR MINIMA ENTALPIA=10KJ/Kg Y MAXIMA ENTALPIA=70KJ/Kg
CENTAL: CLRWDT
BSF STATUS,5
;ENTALPIA DEL AIRE INTERIOR O DE RETORNO
335
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS FCOM,0
GOTO FENTP
MOVF MEDRET,0
MOVWF POS1
MOVF MEDRET+1,0
MOVWF POS1+1
;MEDIDA TEMP DE RETORNO MULTIPLICADA X5(EN POS1)
MOVF MDHUMI,0
MOVWF POS2
MOVF MDHUMI+1,0 ;MED HUMEDAD AIRE INTERIOR MULTIPLICADA X10(EN POS2)
MOVWF POS2+1
CALL CENTC ;CALCULO ENTALPIA DEL AIRE INTERIOR O DE RETORNO (ENTINT)
MOVF MEDM,0
BSF STATUS,5
MOVWF ENTINT
CLRF STATUS
;ENTALPIA DEL AIRE EXTERIOR
MOVF MEDEXT,0
BSF STATUS,5
MOVWF POS1
BCF STATUS,5
MOVF MEDEXT+1,0
BSF STATUS,5
MOVWF POS1+1
;MEDIDA TEMP EXT MULTIPLICADA X5 (EN POS1)
MOVF MDHUME,0
MOVWF POS2
MOVF MDHUME+1,0
;MEDIDA HUMEDAD AIRE EXT MULTIPLICADA X10 (EN POS2)
MOVWF POS2+1
CALL CENTC
;CALCULO DE LA ENTALPIA DEL AIRE EXT (ENTEXT)
MOVF MEDM,0
BSF STATUS,5
336
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF ENTEXT
BSF FCOM,1
;SE HA CALCULADO LA ENTALPIA Y SE HAN TOMADO TODAS LAS
MEDIDAS ANALOGICAS NECESARIAS PARA CALCULAR FREE-COOLING
FENTP: CLRF STATUS
RETURN
CENTC: CLRWDT ;CALCULO ENTALPIA TENIENDO LA TEMP (N POS1) Y HUMEDAD (N POS2)
CLRF STATUS
CLRF MEDM
;INICIO -> ENTALPIA=0
BSF STATUS,5
MOVLW 3
SUBWF POS1,0
BCF STATUS,5
BTFSC STATUS,2
RETURN
;TEMP NEGATIVA -> ENTALPIA=0
CLRF DEL
;TEMP POSITIVA - INDICE=0 -> CALCULAR ENTALPIA
CENT2: MOVLW HIGH TABCF1
MOVWF PCLATH
;TOMAR COEFICIENTES DE TABLA (C1 Y C2)
;COEFICIENTE 1 (VAL1)
MOVF DEL,0
CALL TABCF1
BSF STATUS,5
MOVWF VAL1+1
CLRF VAL1
CLRF STATUS
RLF DEL,1
MOVLW HIGH TABCF2
;COEFICIENTE 2 (VAL2)
MOVWF PCLATH
MOVF DEL,0
CALL TABCF2
BSF STATUS,5
MOVWF VAL2
337
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BCF STATUS,5
MOVLW HIGH TABCF2
MOVWF PCLATH
INCF DEL,0
CALL TABCF2
BSF STATUS,5
MOVWF VAL2+1
CLRF STATUS
RRF DEL,1
BSF STATUS,5
MOVF POS1,0
;MULTI DE TEMP x C1 (LA TEMP DEBE ESTAR MULTIPLICADAX10)
MOVWF MULT1
MOVF POS1+1,0
MOVWF MULT1+1
BCF STATUS,0
RLF VAL1+1,1
RLF VAL1,1
MOVF VAL1,0
MOVWF MULT2
MOVF VAL1+1,0
MOVWF MULT2+1
MOVF PCLATH,0
MOVWF PCLAX3
BSF PCLATH,4
BCF PCLATH,3
CALL MULT
;SUBRUTINA DE MULTIPLICACION (RESULTADO EN RESMUL)
MOVF PCLAX3,0
MOVWF PCLATH
MOVF RESMUL,1
338
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,2
GOTO INCIND
;RESULTADO POSITIVO (RESULTADO > COEFICIENTE 2)
MOVF VAL2,0
SUBWF RESMUL+1,1
BTFSS STATUS,2
GOTO QRES1
MOVF VAL2+1,0
SUBWF RESMUL+2,1
BTFSC STATUS,2
GOTO SACR1
;RESULTADO = COEFICIENTE 2
QRES1: BTFSC STATUS,0
GOTO INCIND
;RESULTADO POSITIVO (RESULTADO > COEFICIENTE 2)
SACR1: MOVF RESMUL+2,0 ;RESUL NEG(C2 > RESUL) -> RESUL (EN VAL2)=C2 - RESUL
SUBWF VAL2+1,1
BTFSS STATUS,0
DECF VAL2,1
MOVF RESMUL+1,0
SUBWF VAL2,1
BCF STATUS,0
;RESULTADO = RESULTADO/16
RRF VAL2,1
RRF VAL2+1,1
BCF STATUS,0
RRF VAL2,1
RRF VAL2+1,1
BCF STATUS,0
RRF VAL2,1
RRF VAL2+1,1
BCF STATUS,0
RRF VAL2,1
339
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
RRF VAL2+1,1
MOVF VAL2,0
;¿HUMEDAD>RESULTADO?
SUBWF POS2,0
BTFSS STATUS,2
GOTO QHUMR
MOVF VAL2+1,0
SUBWF POS2+1,0
BTFSC STATUS,2
GOTO FINENT
QHUMR: BTFSC STATUS,0
GOTO INCIND
;HUMEDAD > RESULTADO
FINENT: CLRF STATUS
MOVLW 0x0A
;RESULTADO > HUMEDAD
;ENTALPIA = INDICE (DEL) + 10 KJ/Kg (0x0A)
ADDWF DEL,0
MOVWF MEDM
RETURN
INCIND: BCF
STATUS,5
;INCREMENTAR INDICE
MOVLW 0x3C
SUBWF DEL,0
BTFSC STATUS,0
GOTO NOINC
INCF DEL,1
GOTO CENT2
NOINC: MOVLW 0x46
;MAXIMA ENTALPIA = 70 KJ/Kg (0x46)
MOVWF MEDM
RETURN
;TABLA COEFICIENTE 1 PARA EL CALCULO DE LA ENTALPIA
TABCF1: ADDWF PCL,1
DT
0xEB,0xE5,0xDE,0xD2,0xCD,0xC8,0xC3,0xBE
340
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
DT
0xBA,0xB6,0xB2,0xAD,0xAA,0xA6,0xA3,0xA0
DT
0x9B,0x98,0x95,0x92,0x8E,0x8B,0x8A,0x86
DT
0x83,0x82,0x80,0x7F,0x7E,0x7E,0x7D,0x7B
DT
0x79,0x77,0x76,0x74,0x72,0x71,0x70,0x6F
DT
0x6E,0x6D,0x6C,0x6C,0x6B,0x6B,0x6A,0x69
DT
0x67,0x66,0x65,0x65,0x65,0x64,0x64,0x64
DT
0x63,0x63,0x62,0x61,0x60,0x60,0x60,0x60
;TABLA COEFICIENTE 2 PARA EL CALCULO DE LA ENTALPIA
TABCF2: ADDWF PCL,1
DT
0x3E,0x80,0x43,0xD0,0x48,0xE4,0x4D,0x4E
DT
0x51,0xAE,0x55,0xF0,0x59,0x9C,0x5D,0x20
DT
0x60,0x7C,0x63,0xB0,0x66,0xBC,0x68,0xE2
DT
0x6A,0xEA,0x6C,0xDE,0x6E,0xB4,0x70,0x80
DT
0x71,0xFC,0x73,0x6E,0x74,0xCC,0x76,0x20
DT
0x77,0x74,0x78,0x50,0x79,0x22,0x79,0xF4
DT
0x7A,0xBC,0x7B,0x84,0x7D,0x1E,0x7E,0xAE
DT
0x80,0x3E,0x81,0xCE,0x83,0x54,0x84,0x1C
DT
0x84,0xE4,0x85,0x8E,0x86,0x42,0x86,0xEC
DT
0x87,0xA0,0x88,0x54,0x88,0xFE,0x89,0x9E
DT
0x8A,0x3E,0x8B,0x24,0x8C,0x00,0x8C,0xD2
DT
0x8D,0xAE,0x8E,0x80,0x8E,0xEE,0x8F,0x70
DT
0x8F,0xDE,0x90,0x4C,0x90,0xC4,0x91,0xB4
DT
0x92,0x90,0x93,0x80,0x94,0x52,0x95,0x2E
DT
0x95,0x92,0x95,0xEC,0x96,0x50,0x96,0xA0
DT
0x96,0xF0,0x96,0xF0,0x96,0xF0,0x96,0xF0
;SEGURIDADES EN LAS MEDIDAS ANALOGICAS Y DE VARIABLES DE FUNCIONAMIENTO
SEGMV: CLRWDT
BSF STATUS,5
MOVLW 4
;FLAG DE COMUNICACIONES
341
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF FCOM,0
BTFSC STATUS,0
GOTO ERRFUN
CLRF STATUS
MOVF MEDEXT,1
;TEMPERATURA EXTERIOR
BTFSC STATUS,2
GOTO QS2
MOVLW 1
SUBWF MEDEXT,0
BTFSS STATUS,2
GOTO QS1
MOVLW 0x91
SUBWF MEDEXT+1,0
BTFSC STATUS,0
GOTO ERRFUN
GOTO QS2
QS1:
MOVLW 3
SUBWF MEDEXT,0
BTFSS STATUS,2
GOTO ERRFUN
MOVLW 0x9C
SUBWF MEDEXT+1,0
BTFSS STATUS,0
GOTO ERRFUN
QS2:
BSF STATUS,5
BTFSS FCOM,0
GOTO QS2X
MOVF MEDRET,1
;TEMP RETOR
BTFSS STATUS,2
342
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO ERRFUN
MOVLW 0xFB
SUBWF MEDRET+1,0
BTFSC STATUS,0
GOTO ERRFUN
QS2X:
MOVF MDHUMI,1 ;HUMEDA INT
BTFSC STATUS,2
GOTO QS3
MOVLW 1
SUBWF MDHUMI,0
BTFSC STATUS,2
GOTO QS3
MOVLW 2
SUBWF MDHUMI,0
BTFSC STATUS,2
GOTO QS3
MOVLW 3
SUBWF MDHUMI,0
BTFSS STATUS,2
GOTO ERRFUN
MOVLW 0xE9
SUBWF MDHUMI+1,0
BTFSC STATUS,0
GOTO ERRFUN
QS3:
MOVF MDHUME,1 ;HUMEDA EXT
BTFSC STATUS,2
GOTO QS4
MOVLW 1
SUBWF MDHUME,0
343
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BTFSC STATUS,2
GOTO QS4
MOVLW 2
SUBWF MDHUME,0
BTFSC STATUS,2
GOTO QS4
MOVLW 3
SUBWF MDHUME,0
BTFSS STATUS,2
GOTO ERRFUN
MOVLW 0xE9
SUBWF MDHUME+1,0
BTFSC STATUS,0
GOTO ERRFUN
QS4:
MOVLW 3
SUBWF FCOM,0
BTFSS STATUS,2
GOTO QS6
MOVF ENTINT,1 ;ENTALPIA INT
BTFSC STATUS,2
GOTO QS5
MOVLW 0x0A
SUBWF ENTINT,0
BTFSS STATUS,0
GOTO ERRFUN
MOVLW 0x47
SUBWF ENTINT,0
BTFSC STATUS,0
GOTO ERRFUN
344
MEMORIA
VI. Código fuente
QS5:
Capítulo 2. Código de la tarjeta SA98
MOVF ENTEXT,1 ;ENTALPIA EXT
BTFSC STATUS,2
GOTO QS6
MOVLW 0x0A
SUBWF ENTEXT,0
BTFSS STATUS,0
GOTO ERRFUN
MOVLW 0x47
SUBWF ENTEXT,0
BTFSC STATUS,0
GOTO ERRFUN
QS6:
BTFSS FCOM,0
GOTO QS6X
MOVF CONSIG,1
;CONSIGNA
BTFSS STATUS,2
GOTO ERRFUN
MOVLW 0x4B
SUBWF CONSIG+1,0
BTFSS STATUS,0
GOTO ERRFUN
MOVLW 0x97
SUBWF CONSIG+1,0
BTFSC STATUS,0
GOTO ERRFUN
BTFSC MANDO,5
;MANDO
GOTO ERRFUN
BTFSS MANDO,1
GOTO QS7
BTFSC MANDO,0
345
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO ERRFUN
QS7:
MOVLW 4
;Nº ETAPAS
SUBWF NETAP,0
BTFSC STATUS,0
GOTO ERRFUN
QS6X:
MOVF FFUNC,1
;FLAG FUNCIONAM (BIT 0 SIEMPRE 0 XQ ES MOD MAQUINA)
BTFSC STATUS,2
GOTO QS8
MOVLW 2
SUBWF FFUNC,0
BTFSC STATUS,2
GOTO QS8
MOVLW 4
SUBWF FFUNC,0
BTFSC STATUS,2
GOTO QS8
MOVLW 6
SUBWF FFUNC,0
BTFSS STATUS,2
GOTO ERRFUN
QS8:
MOVF FC,1
;FLAG DE FREE-COOLING
BTFSC STATUS,2
GOTO QS9
MOVLW 0xFF
SUBWF FC,0
BTFSS STATUS,2
GOTO ERRFUN
QS9:
BCF STATUS,5
;T PARA SALIR AL CONV DIGITAL-ANALOGICO
MOVLW 0x0B
346
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
SUBWF TDA,0
BTFSC STATUS,0
GOTO ERRFUN
MOVLW 0x3D
;T PARA FALLO DE COMUNICACIONES
SUBWF TNCOM,0
BTFSC STATUS,0
GOTO ERRFUN
MOVF FILSUC,1
;SEÑAL DE FILTRO SUCIO
BTFSC STATUS,2
GOTO QS10
MOVLW 0xFF
SUBWF FILSUC,0
BTFSS STATUS,2
GOTO ERRFUN
QS10: CLRF STATUS
RETURN
ERRFUN: NOP
;SI SE DISTORSIONAN LAS VARO LAS MEDIDAS -> RESETEAR CONTROL
GOTO ERRFUN
;*****************************************************************************
;CALCULO FREE-COOLING
QFCOOL: CLRWDT
BSF STATUS,5
BTFSS FFUNC,1
GOTO FCTEM
;FREE-COOLING POR TEMPERATURA
GOTO FCENT
;FREE-COOLING POR ENTALPIA
;FREE-COOLING POR TEMPERATURA
FCTEM: CLRWDT
CLRF STATUS
MOVLW 0x19
;DIFERENCIAL ENTRE TEMPERATURA RETORNO Y EXTERIOR PARA
HACER FREE-COOLING = 5ºC (0x19)
347
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVWF DEL
MOVF MEDEXT,0
MOVWF MEDM
MOVF MEDEXT+1,0
MOVWF MEDM+1
MOVLW 3
SUBWF MEDM,0
BTFSC STATUS,2
GOTO SFCE
;TEMP EXT NEG->TEMP.RETORNO > TEMP.EXT + 5ºC->SI F-C
BSF STATUS,5
;TEMP EXT POSITIVA (COMPARAR CN TEMP D RETORNO)
MOVF FC,1
BCF STATUS,5
BTFSC STATUS,2
GOTO QFCL1
MOVLW 5
;HISTERESIS ENTRE SI F-C Y NO F-C = 1ºC (0x05)
SUBWF DEL,1
QFCL1: MOVF DEL,0
ADDWF MEDM+1,1
BTFSC STATUS,0
INCF MEDM,1
MOVF MEDM,0
BSF STATUS,5
SUBWF MEDRET,0
BTFSS STATUS,2
GOTO FCOX1
BCF STATUS,5
MOVF MEDM+1,0
BSF STATUS,5
SUBWF MEDRET+1,0
348
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
FCOX1: BTFSS STATUS,0
GOTO NFC
;TEMP.RETORNO < TEMP.EXTERIOR + 5ºC -> NO FREE-COOLING
GOTO SFCE
;TEMP.RETORNO > TEMP.EXTERIOR + 5ºC -> SI FREE-COOLING
;FREE-COOLING POR ENTALPIA
FCENT: CLRWDT
CLRF STATUS
MOVLW 0x0C ;DIFERENCIAL ENTR ENTALPIA IN Y ENTALPIA EXT PARA F-C= 12 KJ/Kg
0x0C
MOVWF DEL
BSF STATUS,5
MOVF ENTEXT,0
BCF STATUS,5
MOVWF MEDM
BSF STATUS,5
MOVF FC,1
BCF STATUS,5
BTFSC STATUS,2
GOTO QFCL2
MOVLW 4
;HISTERESIS ENTRE SI F-C Y NO F-C = 4 KJ/Kg (0x04)
SUBWF DEL,1
QFCL2: MOVF DEL,0
ADDWF MEDM,1
MOVF MEDM,0
BSF STATUS,5
SUBWF ENTINT,0
BTFSS STATUS,0
GOTO NFC
;ENTALPIA INTERIOR < ENTALPIA EXTERIOR + 12 KJ/Kg -> NO F-C
GOTO SFCE
;ENTALPIA INTERIOR > ENTALPIA EXTERIOR + 12 KJ/Kg -> SI F-C
;NO FREE-COOLING
NFC:
CLRWDT
349
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BSF STATUS,5
CLRF FC
;NO FREE-COOLING
BTFSC FFUNC,2 ;COMPROBAR SI CONFIG CN POT DE MIN APERTUR Y VER CALIDA AIRE
GOTO SIPOT3
;SI HAY POTENCIOMETRO DE MINIMA APERTURA
MOVF MDCALD,1
BTFSS STATUS,2
GOTO SCD3
CLRF STATUS
;NO HAY POTENCIOMETRO DE MINIMA APERTURA
CLRF DAOUTA
;SALIDA AL SISTEMA DE F-C SIN POT DE MIN APERTURA -> SAL=0
CLRF DAOUTB
GOTO FNFC
SCD3:
MOVF MDCALD,0
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
GOTO FNFC
SIPOT3: MOVF MDCALD,0
SUBWF MPMINA,0
BTFSS STATUS,0
GOTO SCD2
MOVF MPMINA,0 ;SAL A SISTEM D F-C CN POT DE MIN APERTURA -> SAL=MPMINA
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
FNFC:
CLRF STATUS
RETURN
;SI FREE-COOLING
SFCE:
CLRWDT
BSF STATUS,5
350
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
MOVLW 0xFF
MOVWF FC
;SI FREE-COOLING
MOVLW 1
SUBWF NETAP,0
BTFSC STATUS,2
GOTO CFC1
;1 ETAPA EN FRIO
GOTO CFC2
;2 O MAS ETAPAS EN FRIO
CFC1: CLRWDT
MOVF MEDRET+1,0
SUBWF CONSIG+1,0
BTFSC STATUS,0
GOTO NFC
MOVF CONSIG+1,0
SUBWF MEDRET+1,0
BCF STATUS,5
MOVWF DEL
MOVF DEL,1
BTFSC STATUS,2
GOTO NFC
MOVLW 0x0A
SUBWF DEL,0
BTFSS STATUS,0
GOTO CFCX
MOVLW 0xFF
FREG:
MOVWF DAOUTA
MOVWF DAOUTB
BSF STATUS,5
BCF MANDO,4
;1 ETAPA EN CONTROL - DEVOLVER 0 ETAPAS
BCF MANDO,3
351
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
CLRF STATUS
RETURN
CFCX:
BSF STATUS,5
CLRF MULT1
MOVLW 0x19
MOVWF MULT1+1
CLRF MULT2
BCF STATUS,5
MOVF DEL,0
BSF
STATUS,5
MOVWF MULT2+1
MOVF PCLATH,0
MOVWF PCLAX3
BSF PCLATH,4
BCF PCLATH,3
CALL MULT
;SUBRUTINA DE MULTIPLICACION
MOVF PCLAX3,0
MOVWF PCLATH
MOVF RESMUL+2,0
MOVWF VAL1
BTFSS FFUNC,2
GOTO REGC1
MOVF MPMINA,0
;NO HAY POTENCIOMETRO DE MIN APERTURA
;SI HAY POTENCIOMETRO DE MIN APERTURA
SUBWF MDCALD,0
BTFSS STATUS,0
GOTO REGC2
REGC1: MOVF MDCALD,0
SUBWF VAL1,0
BTFSS STATUS,0
352
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
GOTO REGC3
REGC4: MOVF VAL1,0
BCF STATUS,5
GOTO FREG
REGC3: MOVF MDCALD,0
BCF STATUS,5
GOTO FREG
REGC2: MOVF MPMINA,0
SUBWF VAL1,0
BTFSC STATUS,0
GOTO REGC4
MOVF MPMINA,0
BCF STATUS,5
GOTO FREG
CFC2: CLRWDT
CLRF STATUS
MOVLW 0xFF
;COMPUERTAS TOTALMENTE ABIERTAS
MOVWF DAOUTA
MOVWF DAOUTB
CALL CRM2E
CLRF STATUS
RETURN
CRM2E: BSF STATUS,5
MOVLW 2
SUBWF NETAP,0
BTFSS STATUS,2
GOTO RM3
BCF MANDO,4
;2 ETAPAS EN CONTROL - DEVOLVER 1 ETAPA
353
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
BSF MANDO,3
RETURN
RM3:
BSF MANDO,4
;3 ETAPAS EN CONTROL - DEVOLVER 2 ETAPAS
BCF MANDO,3
RETURN
;*****************************************************************************
;SAL AL CONV DIG-ANALOG MAX500 – SAL A LOS 4 CANALES (A-B-C-D) DE MANERA SEG
CONVDA: CLRWDT
CLRF STATUS
CALL STRDAC
;START COMUNICACIONES
BCF PORTC,1
;CANAL VOUTA -> A1=0 Y A0=0
CALL CLKDAC
CALL CLKDAC
MOVF DAOUTA,0
;SALIDA DIGITAL-ANALOGICA CANAL A
MOVWF DATODA
CALL SENDAC
;ENVIAR DATO A CONVERTIDOR MAX500
CALL STPDAC
;STOP COMUNICACIONES
CALL DELDAF
;RETARDO AL TERMINAR COMUNICACION (0.5 MSEG)
CALL STRDAC
;START COMUNICACIONES
BCF PORTC,1
;CANAL VOUTB -> A1=0 Y A0=1
CALL CLKDAC
BSF PORTC,1
CALL CLKDAC
MOVF DAOUTB,0 ;SALIDA DIGITAL-ANALOGICA CANAL B
MOVWF DATODA
CALL SENDAC
;ENVIAR DATO A CONVERTIDOR MAX500
CALL STPDAC
;STOP COMUNICACIONES
CALL DELDAF
;RETARDO AL TERMINAR COMUNICACION (0.5 MSEG)
CALL STRDAC
;START COMUNICACIONES
354
MEMORIA
VI. Código fuente
BSF PORTC,1
Capítulo 2. Código de la tarjeta SA98
;CANAL VOUTC -> A1=1 Y A0=0
CALL CLKDAC
BCF PORTC,1
CALL CLKDAC
MOVF DAOUTC,0
;SALIDA DIGITAL-ANALOGICA CANAL C
MOVWF DATODA
CALL SENDAC
;ENVIAR DATO A CONVERTIDOR MAX500
CALL STPDAC
;STOP COMUNICACIONES
CALL DELDAF
;RETARDO AL TERMINAR COMUNICACION (0.5 MSEG)
CALL STRDAC
;START COMUNICACIONES
BSF PORTC,1
;CANAL VOUTD -> A1=1 Y A0=1
CALL CLKDAC
CALL CLKDAC
MOVF DAOUTD,0
;SALIDA DIGITAL-ANALOGICA CANAL D
MOVWF DATODA
CALL SENDAC
;ENVIAR DATO A CONVERTIDOR MAX500
CALL STPDAC
;STOP COMUNICACIONES
CALL DELDAF
;RETARDO AL TERMINAR COMUNICACION (0.5 MSEG)
RETURN
SENDAC: MOVLW 8
;ENVIAR DATO A CONVERTIDOR MAX500
MOVWF DEL
PROGDA: CLRWDT
RLF DATODA,1
BTFSS STATUS,0
GOTO DAT0
BSF PORTC,1
GOTO PONCLK
DAT0: BCF PORTC,1
PONCLK: CALL CLKDAC
355
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
DECFSZ DEL,1
GOTO PROGDA
RETURN
STRDAC: BCF
PORTC,1
;START COMUNICACIONES CON MAX500
CALL DELDAC
BCF PORTC,0
RETURN
STPDAC: BCF
PORTC,1
;STOP COMUNICACIONES CON MAX500
CALL DELDAC
BSF PORTC,0
CALL DELDAC
BSF PORTC,1
CALL DELDAC
CALL DELDAC
BCF PORTC,2
;TRANSFERIR DATOS A CANALES - LINEA LDAC EN ESTADO BAJO
CALL DELDAC
BSF PORTC,2
CALL DELDAC
RETURN
CLKDAC: CALL DELDAC
;CLOCK COMUNICACIONES CON MAX500
BSF PORTC,0
CALL DELDAC
BCF
PORTC,0
CALL DELDAC
RETURN
DELDAF: MOVLW 0x14
;RETARDO DE APROXIMADAMENTE 0.5 MSEG
MOVWF DEL
MDELF: CLRWDT
CALL DELF
356
MEMORIA
VI. Código fuente
Capítulo 2. Código de la tarjeta SA98
DECFSZ DEL,1
GOTO MDELF
RETURN
DELF: NOP
NOP
NOP
NOP
NOP
NOP
NOP
DELDAC: NOP
;RETARDO COMUNICACIONES CON MAX500
NOP
NOP
NOP
NOP
NOP
RETURN
;******************** *************PAGE 2*************************************
ORG 0x1000
;MULTIPLICACION HEXADECIMAL DE UN NUMERO (MULT1 - MAXIMO 10 BITS) POT OTRO
NUMERO (MULT2 - MAXIMO 10 BITS) - RESULTADO MULTIPLICACION EN 3 BYTES (RESMUL)
MULT:
CLRWDT
CLRF RESMUL
;VALOR INICIAL DEL ACUMULADOR
CLRF RESMUL+1
CLRF RESMUL+2
BTFSS MULT2+1,0
GOTO MUL1
CALL INIDAT
CALL SUMTOT
357
MEMORIA
III. Código Fuente
Capítulo 2. Modelado
MUL1: BTFSS MULT2+1,1
GOTO MUL2
CALL INIDAT
CALL BUCR0
MUL2: BTFSS MULT2+1,2
GOTO MUL3
CALL INIDAT
CALL BUCR1
MUL3: BTFSS MULT2+1,3
GOTO MUL4
CALL INIDAT
CALL BUCR2
MUL4: BTFSS MULT2+1,4
GOTO MUL5
CALL INIDAT
CALL BUCR3
MUL5: BTFSS MULT2+1,5
GOTO MUL6
CALL INIDAT
CALL BUCR4
MUL6: BTFSS MULT2+1,6
GOTO MUL7
CALL INIDAT
CALL BUCR5
MUL7: BTFSS MULT2+1,7
GOTO MUL8
CALL INIDAT
CALL BUCR6
MUL8: BTFSS MULT2,0
GOTO MUL9
358
MEMORIA
III. Código Fuente
Capítulo 2. Modelado
CALL INIDAT
CALL BUCR7
MUL9: BTFSS MULT2,1
RETURN
CALL INIDAT
CALL BUCR8
RETURN
BUCR8: CALL ROTMUL
BUCR7: CALL ROTMUL
BUCR6: CALL ROTMUL
BUCR5: CALL ROTMUL
BUCR4: CALL ROTMUL
BUCR3: CALL ROTMUL
BUCR2: CALL ROTMUL
BUCR1: CALL ROTMUL
BUCR0: CALL ROTMUL
SUMTOT: MOVF MULAUX+2,0
ADDWF RESMUL+2,1
BTFSC STATUS,0
INCF RESMUL+1,1
MOVF MULAUX+1,0
ADDWF RESMUL+1,1
BTFSC STATUS,0
INCF RESMUL,1
MOVF MULAUX,0
ADDWF RESMUL,1
RETURN
ROTMUL: BCF STATUS,0
RLF
MULAUX+2,1
RLF MULAUX+1,1
359
MEMORIA
III. Código Fuente
Capítulo 2. Modelado
RLF MULAUX,1
RETURN
INIDAT: MOVF MULT1+1,0
MOVWF MULAUX+2
MOVF MULT1,0
MOVWF MULAUX+1
CLRF MULAUX
RETURN
;******************* ***PAGE 3*************************************
ORG 0x1800
;TABLA MEDIDA SONDA TEMPERATURA EXTERIOR (RANGO DE TEMPERATURAS: -20ºC A +80ºC)
- LAS MEDIDAS EN TABLA ESTAN MULTIPLICADAS POR 5
TABLAE: ADDWF PCL,1
DT
0x01,0x90,0x01,0x90,0x01,0x90,0x01,0x90 ;00
DT
0x01,0x90,0x01,0x90,0x01,0x90,0x01,0x7C ;08
DT
0x01,0x68,0x01,0x54,0x01,0x41,0x01,0x36 ;10
DT
0x01,0x27,0x01,0x18,0x01,0x0E,0x01,0x04 ;18
DT
0x00,0xFB,0x00,0xF5,0x00,0xEB,0x00,0xE2 ;20
DT
0x00,0xD8,0x00,0xD1,0x00,0xCB,0x00,0xC5 ;28
DT
0x00,0xBE,0x00,0xB9,0x00,0xB4,0x00,0xAE ;30
DT
0x00,0xA8,0x00,0xA3,0x00,0x9E,0x00,0x99 ;38
DT
0x00,0x94,0x00,0x8F,0x00,0x8B,0x00,0x86 ;40
DT
0x00,0x81,0x00,0x7D,0x00,0x78,0x00,0x74 ;48
DT
0x00,0x6F,0x00,0x6B,0x00,0x67,0x00,0x63 ;50
DT
0x00,0x5F,0x00,0x5C,0x00,0x58,0x00,0x55 ;58
DT
0x00,0x51,0x00,0x4D,0x00,0x4A,0x00,0x47 ;60
DT
0x00,0x44,0x00,0x41,0x00,0x3E,0x00,0x3B ;68
DT
0x00,0x37,0x00,0x32,0x00,0x2D,0x00,0x2A ;70
DT
0x00,0x27,0x00,0x24,0x00,0x21,0x00,0x1E ;78
DT
0x00,0x1B,0x00,0x17,0x00,0x14,0x00,0x11 ;80
DT
0x00,0x0E,0x00,0x0B,0x00,0x08,0x00,0x05 ;88
360
-> +80ºC
MEMORIA
III. Código Fuente
Capítulo 2. Modelado
DT
0x00,0x02,0x03,0xFF,0x03,0xFB,0x03,0xF8 ;90
DT
0x03,0xF5,0x03,0xF3,0x03,0xF0,0x03,0xEC ;98
DT
0x03,0xEA,0x03,0xE7,0x03,0xE4,0x03,0xE0 ;A0
DT
0x03,0xDD,0x03,0xDA,0x03,0xD7,0x03,0xD4 ;A8
DT
0x03,0xCE,0x03,0xCB,0x03,0xC8,0x03,0xC4 ;B0
DT
0x03,0xC1,0x03,0xBE,0x03,0xB9,0x03,0xB5 ;B8
DT
0x03,0xB2,0x03,0xAF,0x03,0xAB,0x03,0xA6 ;C0
DT
0x03,0xA2,0x03,0x9C,0x03,0x9C,0x03,0x9C ;C8
DT
0x03,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C ;D0
DT
0x03,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C ;D8
DT
0x03,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C ;E0
DT
0x03,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C ;E8
DT
0x03,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C ;F0
DT
0x03,0x9C,0x03,0x9C,0x03,0x9C,0x03,0x9C ;F8
-> -20ºC
ORG 0x1A00
;TABLA MEDIDA HUMEDAD (RANGO DE HUMEDAD: 0% A 100%) - LAS MEDIDAS EN TABLA
ESTAN MULTIPLICADAS POR 10
TABLAH: ADDWF PCL,1
DT
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;00
DT
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;08
DT
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;10
DT
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;18
DT
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;20
DT
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;28
DT
0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x19 ;30
DT
0x00,0x25,0x00,0x32,0x00,0x3E,0x00,0x4B ;38
DT
0x00,0x57,0x00,0x64,0x00,0x70,0x00,0x7D ;40
DT
0x00,0x89,0x00,0x96,0x00,0xA2,0x00,0xAE ;48
DT
0x00,0xBA,0x00,0xC7,0x00,0xD3,0x00,0xE0 ;50
DT
0x00,0xEC,0x00,0xF9,0x01,0x05,0x01,0x12 ;58
DT
0x01,0x1E,0x01,0x2B,0x01,0x37,0x01,0x44 ;60
361
-> 0% (1V) (4mA)
MEMORIA
III. Código Fuente
Capítulo 2. Modelado
DT
0x01,0x50,0x01,0x5D,0x01,0x69,0x01,0x76 ;68
DT
0x01,0x82,0x01,0x8F,0x01,0x9B,0x01,0xA7 ;70
DT
0x01,0xB4,0x01,0xC0,0x01,0xCD,0x01,0xD9 ;78
DT
0x01,0xE6,0x01,0xF2,0x01,0xFF,0x02,0x0B ;80
DT
0x02,0x18,0x02,0x24,0x02,0x31,0x02,0x3D ;88
DT
0x02,0x49,0x02,0x56,0x02,0x62,0x02,0x6F ;90
DT
0x02,0x7B,0x02,0x88,0x02,0x94,0x02,0xA1 ;98
DT
0x02,0xAD,0x02,0xBA,0x02,0xC6,0x02,0xD3 ;A0
DT
0x02,0xDF,0x02,0xEC,0x02,0xF8,0x03,0x05 ;A8
DT
0x03,0x11,0x03,0x1E,0x03,0x2A,0x03,0x37 ;B0
DT
0x03,0x43,0x03,0x50,0x03,0x5C,0x03,0x69 ;B8
DT
0x03,0x75,0x03,0x82,0x03,0x8E,0x03,0x9B ;C0
DT
0x03,0xA7,0x03,0xB4,0x03,0xC0,0x03,0xCD ;C8
DT
0x03,0xD9,0x03,0xE6,0x03,0xE8,0x03,0xE8 ;D0
DT
0x03,0xE8,0x03,0xE8,0x03,0xE8,0x03,0xE8 ;D8
DT
0x03,0xE8,0x03,0xE8,0x03,0xE8,0x03,0xE8 ;E0
DT
0x03,0xE8,0x03,0xE8,0x03,0xE8,0x03,0xE8 ;E8
DT
0x03,0xE8,0x03,0xE8,0x03,0xE8,0x03,0xE8 ;F0
DT
0x03,0xE8,0x03,0xE8,0x03,0xE8,0x03,0xE8 ;F8
-> 100 % (4V) (20mA)
ORG 0x1C00
;TABLA MEDIDA CALIDAD DEL AIRE (MEDIDA LINEAL)
TABLAC: ADDWF PCL,1
DT
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07;00->+CALIDAD AIRE (0V) (0x00)->AL 20%
DT
0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F ;08
DT
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 ;10
DT
0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F ;18
DT
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 ;20
DT
0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F ;28
DT
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37 ;30
DT
0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F ;38
362
MEMORIA
III. Código Fuente
Capítulo 2. Modelado
DT
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47 ;40
DT
0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F ;48
DT
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57 ;50
DT
0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F ;58
DT
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67 ;60
DT
0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F ;68
DT
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77 ;70
DT
0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F ;78
DT
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87 ;80
DT
0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F ;88
DT
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97 ;90
DT
0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F ;98
DT
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7 ;A0
DT
0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF ;A8
DT
0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7 ;B0
DT
0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF ;B8
DT
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7 ;C0
DT
0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF ;C8
DT
0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7 ;D0
DT
0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF ;D8
DT
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7 ;E0
DT
0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF ;E8
DT
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7 ;F0
DT 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF ;F8
COMPUERTA ABIERTA
; SUBRUTINA DE AUTOTEST
MAUTES: CLRWDT
RETURN
;********************************************************************
END
363
-> PEOR CALIDAD DEL AIRE (5V) (0xFF) ->
PARTE VI: Datasheets
364
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
Capítulo 1
Datasheets
Capítulo 1
E
Datasheets
1.
Daigu
n este capítulo se adjuntan los Datasheets de los componentes que sea
necesario saber su funcionamiento más en profundidad o alguna de sus
características destacables.
365
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
1. Termistor NTC
366
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
367
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
2. MAX487
368
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
369
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
370
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
371
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
372
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
373
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
374
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
375
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
3. MAX500
376
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
377
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
378
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
379
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
380
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
381
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
382
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
4. ULN-2803
383
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
384
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
385
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
5. MC34084
386
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
387
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
388
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
6. TL431
389
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
390
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
391
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
7. Relé OM-G5V-1
392
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
393
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
394
MEMORIA
VI. Datasheets
Capítulo 1. Datasheets
395
Descargar