Está en la página 1de 395

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 Introducción _______________________________________________12


1. Estado del arte ___________________________________________________________ 12
2. Motivación ______________________________________________________________ 13
3. Objetivo ________________________________________________________________ 14
4. Metodología _____________________________________________________________ 15
5. Recursos ________________________________________________________________ 16
6. 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 Utilización del microprocesador Motorola MC68HC908LJ12 ___30


1. Características destacables. _________________________________________________ 30
2. Asignación de pines _______________________________________________________ 33
3. Alimentación ____________________________________________________________ 34
4. Puertos _________________________________________________________________ 35
5. Mapa de memoria ________________________________________________________ 35
6. Vector de interrupción _____________________________________________________ 38

Capítulo 4 Utilización del microprocesador PIC16F877A ________________39


1. Características destacables. _________________________________________________ 40
2. Asignación de pines _______________________________________________________ 43
3. Alimentación ____________________________________________________________ 44
4. Puertos _________________________________________________________________ 44
3
DOCUMENTO Nº1. MEMORIA ÍNDICE DE CONTENIDO

5. Mapa de memoria ________________________________________________________ 45


6. 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 Descripción del Software ___________________________________80


1. Introducción _____________________________________________________________ 80
2. Rutina de inicialización. ____________________________________________________ 82
3. Rutina de autotest. _______________________________________________________ 84
4. Programa principal del control de climatización ________________________________ 87
5. 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. Introducción _____________________________________________________________ 98
2. 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. Resistencias de pull-up de los pulsadores. ____________________________________ 117
2. Sondas de temperatura. __________________________________________________ 118
3. 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 Cálculos de Software_____________________________________ 124
1. Frecuencia. _____________________________________________________________ 124
2. 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 Características notables __________________________________ 133


1. Operación automática ____________________________________________________ 133
2. Pantalla simbólica _______________________________________________________ 134

5
DOCUMENTO Nº1. MEMORIA ÍNDICE DE CONTENIDO

Capítulo 2 Programación de la unidad de tratamiento de aire _________ 135


1. Planifique su horario de utilización __________________________________________ 135
2. Puesta en hora y día de la unidad de tratamiento de aire ________________________ 136
3. Introducción/ Modificación del programa horario ______________________________ 137
4. Copia del programa diario _________________________________________________ 138
5. Anulación de la programación de un periodo __________________________________ 139
6. Anulación de la programación de un día______________________________________ 139
7. Activación/Desactivación del programa horario _______________________________ 140
8. Saltarse temporalmente la programación horaria. _____________________________ 140
9. Como recuperar la programación horaria durante un override o un standby ________ 141

Capítulo 3 Manejo de la unidad de tratamiento de aire _______________ 142


1. Puesta en marcha/parada de la unidad de tratamiento de aire. ___________________ 142
2. .Como bloquear/ desbloquear la unidad de tratamiento de aire __________________ 143
3. Limitación de elección de temperatura de confort _____________________________ 143
4. Selección de la temperatura de confort ______________________________________ 144
5. Selección de modo de funcionamiento _______________________________________ 144
6. Comprobación del estado de la unidad de tratamiento de aire. ___________________ 145
PARTE V: MANUAL DEL INSTALADOR______________________________ 146

Capítulo 1 Preparación _____________________________________________ 147


1. Introducción ____________________________________________________________ 147
2. Consideraciones generales ________________________________________________ 147
3. Alimentación eléctrica ____________________________________________________ 148
4. Comprobación del contenido ______________________________________________ 148
5. Manipulación del termostato ______________________________________________ 149

Capítulo 2 Instalación ______________________________________________ 150


1. Ubicación de la unidad de tratamiento de aire. ________________________________ 150
2. Sustitución de una unidad de tratamiento de aire existente. _____________________ 151
3. Montaje _______________________________________________________________ 152
4. Conexionado eléctrico ____________________________________________________ 153
5. Comprobación de funcionamiento.__________________________________________ 154
6. Fin de la instalación ______________________________________________________ 155
PARTE VI: CÓDIGO FUENTE _______________________________________ 157

Capítulo 1 Código de la tarjeta TX98 ________________________________ 158


1. Código fuente ___________________________________________________________ 158

Capítulo 2 Código fuente de la tarjeta SA98 __________________________ 251


1. Código fuente ___________________________________________________________ 251

PARTE VI: Datasheets ______________________________________________ 364


Capítulo 1 Datasheets ______________________________________________ 365
1. Termistor NTC __________________________________________________________ 366
2. MAX487 _______________________________________________________________ 368
3. MAX500 _______________________________________________________________ 376
4. ULN-2803 ______________________________________________________________ 383
5. MC34084 ______________________________________________________________ 386
6. TL431 _________________________________________________________________ 389
7. 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 Planos De La Tarjeta TX98 ____ ¡Error! Marcador no definido.


1. Plano electrónico de control del climatizador ___________ ¡Error! Marcador no definido.
2. Circuito impreso de control del climatizador capa superior ¡Error! Marcador no definido.
3. Circuito impreso de control del climatizador capa imferior ¡Error! Marcador no definido.

Capítulo 2 Planos De La Tarjeta S98______ ¡Error! Marcador no definido.


1. Plano electrónico de control de la U.T.A. _______________ ¡Error! Marcador no definido.
2. Circuito impreso de control de la U.T.A. capa superior ____ ¡Error! Marcador no definido.
3. Circuito impreso de control de la U.T.A. capa inferior ____ ¡Error! Marcador no definido.

Capítulo 3 Planos De La U.T.A. ___________ ¡Error! Marcador no definido.


1. Vista frontal de la caja ______________________________ ¡Error! Marcador no definido.
2. Esquema de conexionado ___________________________ ¡Error! Marcador no definido.
3. 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. Condiciones Generales _____________________________ ¡Error! Marcador no definido.
2. Condiciones Económicas. ___________________________ ¡Error! Marcador no definido.
Capítulo 2 Pliego de Condiciones Técnicas y Particulares ¡Error! Marcador
no definido.
1. Equipo informático. ________________________________ ¡Error! Marcador no definido.
2. 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.
3. Sistema de radiofrecuencia. _________________________ ¡Error! Marcador no definido.
4. Normas de calidad. ________________________________ ¡Error! Marcador no definido.
5. Normas de Seguridad e Higiene. ______________________ ¡Error! Marcador no definido.
6. Vida útil del producto. ______________________________ ¡Error! Marcador no definido.
7. 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 Coste De Ingeniería ___________ ¡Error! Marcador no definido.


1. Gasto de desarrollo ________________________________ ¡Error! Marcador no definido.
Capítulo 2 Coste Material ________________ ¡Error! Marcador no definido.
2. Software _________________________________________ ¡Error! Marcador no definido.
3. Hardware ________________________________________ ¡Error! Marcador no definido.
4. Coste total material ________________________________ ¡Error! Marcador no definido.
Capítulo 3 Coste Intereses En Curso ______ ¡Error! Marcador no definido.
Capítulo 4 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
Capítulo 1 Introducción 1. Daigual

E 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 Capítulo 2. Descripción del sistema

1.5. 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 Capítulo 2. Descripción del sistema

1.8. 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 3. Daigu
Motorola MC68HC908LJ12

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 4. Daigu
microprocesador PIC16F877A

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 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.

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 pull-


up 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 Capítulo 5. Descripción del Hardware

13. 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 Free-
Cooling.

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 Free-
Cooling.

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 0-
10V, 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 Capítulo 6. Descripción del Software

5.3. 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 Capítulo 6. Descripción del Software

5.7. 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 Capítulo 6. Descripción del Software

0-1- 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 Capítulo 6. Descripción del Software

7.2. 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 7. daigu
PC

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 Capítulo 7. Descripción del programa para PC

3.3. 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 Capítulo 7. Descripción del programa para PC

4.2. 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 Futuros desarrollos 9. daigu

C 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 Capítulo 8. Futuros desarrollos

rutina de 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 Cálculos de Hardware 1. Daigu

E
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 (1.9)

3.2. 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 Cálculos de Software 2. Daigu

E 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 Características notables 1. Daigu

E 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 Programación de la unidad 2. ÇDaigu
de tratamiento de aire

E 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 Capítulo 2. Programación de la UTA

2. 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 el
acondicionador durante t hora y media procediendo como sigue:

140
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 Manejo de la unidad de 3. çDaigu
tratamiento de aire

E 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
Capítulo 1 Preparación 1. çDaigu

E 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 Capítulo 1. Preparación

gama de productos 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
Capítulo 2 Instalación 2. çDaigu

E 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 Código de la tarjeta TX98 1. Daigu

E 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: EQU $36 ;CONTROL PLL

PBWCR: EQU $37

PMSH: EQU $38

PMSL: EQU $39


159
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

PMRS: EQU $3A

PMDS: EQU $3B

ADSCR: EQU $3C ;CONVA/D

ADRH: EQU $3D ;RESUL.CONV. (MSB)

ADRL: EQU $3E ; RESUL. CONV. (LSB)

ADCLK: 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: EQU $49 ;RTC:HORAS

DOWR: EQU $4D ;RTC:DIA DE SEMANA

CHRR: EQU $4E

LCDCLK: EQU $4F ;CONTROL LCD

LCDCR: EQU $51

LCDDAT: EQU $52 ;DATOS LCD

FLBPR: EQU $FE09 ;PROTE.MEM. FLASH

LVISR: EQU $FE0F ;DETEC.BAJATENSION

WDOG: 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 ;RESERVA

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

ACONF1: EQU $12 ;TIPO DE CONTROL

ACONF2: EQU $13 ;PROGRAMAB. O NO

ADIR: EQU $14 ;DIRECCION

APARO: EQU $20

AMOM1: EQU $26 ;PROGRAM.HORARIA

AMOP1: EQU $28

AMOM2: EQU $2A

AMOP2: EQU $2C

AMOR1: EQU $2E

ATUM1: EQU $30

ATUP1: EQU $32

ATUM2: EQU $34

ATUP2: EQU $36

ATUR1: EQU $38

AWEM1: EQU $3A

AWEP1: EQU $3C

AWEM2: EQU $3E

AWEP2: EQU $40

AWER1: EQU $42

ATHM1: EQU $44

ATHP1: EQU $46


161
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

ATHM2: EQU $48

ATHP2: EQU $4A

ATHR1: EQU $4C

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: EQU $64

ASUM2: 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 Capítulo 1. Código de la tarjeta TX98

; 00000001 - VENTILACION

; 00000010 - FRIO

; 00000100 - CALOR

; 00001000 - AUTO

CONSIG: DS 2 ;CONSIGNA

CMAX: DS 2 ;CONSIGNA MAXIMA

CMIN: DS 2 ;CONSIGNA MINIMA

MANDO: 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: DS 1

OUTA: 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 Capítulo 1. Código de la tarjeta TX98

AN1: DS $10 ;MED ANALOG IMPUL

ANM: DS 2

ANMR: DS 2

ANMI: DS 2

ANAUX: DS 2

CHAN: 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 1 ;HISTERESIS

ZM: DS 1 ;ZONA MUERTA

TLIMF: DS 2 ;MIN.TEMP.IMPUL.FRIO

DIFET: DS 1

VCOMP: DS 4

TDON: DS 1 ;TIEMPO MINIMO ON

TDOFF: DS 1 ;TIEMPO MINIMO OFF

BP: DS 1 ;BANDA PROPORCIONAL

TI: DS 1 ;TIEMPO INTEGRACION

TREL: DS 1 ;T. MOD.(DECIMAS SEG.)

BPP: DS 1;BAND PROP CNTROL PRESION

CONSP: DS 2 ;CONSIGNA PRESION

TRONF: DS 1 ;TIEMPO RELE ON FRIO

TROFF: DS 1 ;T. RELE OFF FRIO


165
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

TRONC: DS 1 ;T RELE ON CALOR

TROFC: DS 1 ;T RELE OFF CALOR

TCONF: DS 1

TCOFF: DS 1

TCONC: DS 1

TCOFC: DS 1

TVENT: DS 1

ERROR: DS 2

RESUL: DS 3

PRMIN: DS 1 ;PROXPROGRAM:MIN

PRHORA: DS 1 ;PROX PROGRAM:H

PRDIA: DS 1 ;PROX PROGRAM:DIA

PRPER: DS 1 ;PROX PROGRAM:PERI

MIN: DS 1

HORA: DS 1

DIA: DS 1 ;DIA

PER: DS 1 ;PERIODO

MINP: DS 1 ;MIN PROGRAMACION

HORAP: DS 1 ;HORA PROGRAM

DIAP: DS 1 ;DIA PROGRAMACION

PERP: DS 1 ;PERIODO PROGRAM

DATO: DS 4 ;MED. PARAM DISPLAY

CRINT: DS 1 ;CRONO INTERMITEN.

FLPR: DS 1 ;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 IBUF: DS 1 ;INDICE BUFFER RECEP.

POSM: DS 1 ;DIREC. MEM. EEPROM CODE: DS 1 ;CODIGO

CHECK: DS 1 DIRDAT: DS 1

BIN: DS 2 NDAT: DS 1

DECIM: DS 4 NDATW: DS 1

SEGD: DS 1 CODERR: DS 1

DIG: DS 1 DAT1R: DS 1

CRONO: DS 1 DAT2R: DS 1

TRAP: DS 1 DAT3R: DS 1

NAD: DS 1 DAT4R: DS 1

MEDD: DS 2 ERRDIR: DS 1 ;ERROR DE DIRECC.

GHORA: DS 1 ERRCRC: DS 1 ;ERROR DE CRC

VTEST: DS 1 MANDOF: DS 1

TSAT: DS 1 TRY: DS 1

ERR: DS 2 ;ERROR TSTOP: DS 1

AERR: DS 2 ;ERROR ANTERIOR FLIM: DS 1

ERRX: DS 2 FNOI: DS 1

OI: DS 1 TNOI: DS 1

ROI: DS 1 FCACT: DS 1

TSEND: DS 1 MANDFA: DS 1

TSEG: DS 1 FMOD: DS 1

TANS: DS 1 MEM: DS 6

DATOFC: DS 1 TIMEFC: DS 1

DATOR: DS 1 NMED: DS 1

OUTFA: DS 1 FFILT: DS 1

OUTCA: DS 1 ERRPRM: DS 1

TOI: DS 1 FNEG: DS 1

PRDT: DS 3 MODOA: DS 1

DIR: DS 1 ;DIREC. COM ;REGISTROS COMUNICACIONES

CRC: DS 2 ;CHEQ REDUND CICLICA REG1: DS 2 ;MSB:DIREC,LSB:TIP CONTR


167
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 ;CONSIGNA 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 REG39: DS 2 ;RESERVA


BLOQ.CONS.
REG40: DS 2 ;MARCHA 1 VIERNES
REG13: DS 2 ;MSB:DIF.ET,LSB:RESR
REG41: DS 2 ;PARADA 1 VIERNES
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 ;MSB:T.MOD.REL,LSB:B REG46: DS 2 ;PARADA 1 SABADO


P.CONT.PR.
REG47: DS 2 ;MARCHA 2 SABADO
REG19: DS 2 ;MSB:VERSION
REG48: DS 2 ;PARADA 2 SABADO
;REG PROGRAM:MSB-HH (H),LSB-MM (MIN)
REG49: DS 2 ;RESERVA
REG20: DS 2 ;MARCHA 1 LUNES
REG50: DS 2 ;MARCHA 1 DOMINGO
REG21: DS 2 ;PARADA 1 LUNES
REG51: DS 2 ;PARADA 1 DOMINGO
REG22: DS 2 ;MARCHA 2 LUNES
REG52: DS 2 ;MARCHA 2 DOMINGO
REG23: DS 2 ;PARADA 2 LUNES
REG53: DS 2 ;PARADA 2 DOMINGO
REG24: DS 2 ;RESERVA
REG54: DS 2 ;RESERVA
REG25: DS 2 ;MARCHA 1 MARTES
;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 NSTART: MOV #$F2,DDRA

START: LDHX #$260 MOV #$3D,DDRB

TXS MOV #$FF,DDRC

MOV #0,DDRD MOV #$40,SCC1 ;PER.COM.,8


BITS,NO PARIRIDAD
BCLR 4,PTA ;SAL DESACTIVADAS
MOV #$B1,SCBR ;9600 BAUDIOS
BCLR 5,PTA
BCLR 3,SCC2 ;NO PERMI TRANSM
BCLR 6,PTA
BSET 2,SCC2 ;PERMI RECEPCION
BCLR 1,PTA
BSET 5,SCC2 ;PERMI INTERR RECEP
MOV #$44,T1SC
BCLR 2,PTB ;PERMI RECEPCION
MOV #0,T1MODH
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 ;MEMORIA VIRGEN?
MOV #$8F,LCDCR
169
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: MOV #ADATA,POSM

LDA #0 LDX #0

JSR SDDAC MREADI: JSR READ ;LEE VAL D EEPROM

BSET 7,PTC STA FLAGS1,X

CLI ;ENABLE INTERRUPCIONES INC POSM

LDA CHECK INCX

CBEQA #$AA,NOED CPX #$C

MOV #$AA,CHECK BNE MREADI

FINPRG: MOV #2,TINT LDA MODO

JSR DELON ;ENCENDER DISPLAY AND #$F

WAITI: JSR RWDOG ;WATCH-DOG BNE MOKI

LDA TINT MOV #8,MODO


171
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

MOKI: 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: JSR RWDOG

JMP NATEST ;NO BRCLR 5,PTD,WFPUP

ATEST: 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 ;PULS FLEC ABAJO

;PULSAD FLECHA ABAJO? MPTDWN: BRSET 6,PTD,NPT1 ;CONF PUL

BRA PTDOWN ;SI JSR DELB ;RETARDO REBOTES

NPTDWN: BRSET 0,PTD,NPTV ;PULS DBNZX MPTDWN


ON/OFF?
BRA YAPTD
JMP PTVENT ;SI
NPT1: BRA WTPULS
NPTV: BRSET 1,PTD,NPTMOD ;PULS MOD?
YAPTD: JSR DELD
JMP PTMODO ;SI
MOV #$14,TSAT
NPTMOD: BRSET 2,PTD,NPTSEL ;PULS SEL?
MOV #$E0,LCDDAT+7
JMP PTSEL ;SI
BSET 1,VTEST
NPTSEL: BRSET 3,PTD,NPTPRG ;PULS PRG?
JSR DELAY
JMP PTPRG ;SI
WTPD: JSR RWDOG
NPTPRG: BRSET 7,PTD,NPTCOP ;PULS
COPY? BRCLR 6,PTD,WTPD

JMP PTCOPY ;SI JMP WTPULS

NPTCOP: BRSET 4,PTD,NPTCLK ;PULS CLK? PTVENT: LDX #$40 ;PULS ON/OFF

MPTV: BRSET 0,PTD,NPT2 ;CONF PULS

JSR DELB ;RETARDO REBOTES BRCLR 0,PTD,WTPV

DBNZX MPTV JMP WTPULS

BRA YAPTV PTMODO: LDX #$40 ;PULS MOD

NPT2: JMP WTPULS MPTM: BRSET 1,PTD,NPT3 ;CONF PULS

YAPTV: JSR DELD JSR DELB ;RETARDO REBOTES

MOV #$14,TSAT DBNZX MPTM

MOV #$EF,LCDDAT+3 BRA YAPTM

MOV #$EF,LCDDAT+4 NPT3: JMP WTPULS

MOV #$C,LCDDAT+5 YAPTM: JSR DELD

BSET 2,VTEST MOV #$14,TSAT

JSR DELAY MOV #$EF,LCDDAT+1

WTPV: JSR RWDOG MOV #$EF,LCDDAT+2


173
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: JSR RWDOG

PTSEL: LDX #$40 ;PULSADOR SEL BRCLR 2,PTD,WTPS

MPTS: BRSET 2,PTD,NPT4 ;CONF PULS JMP WTPULS

JSR DELB ;RETARDO REBOTES PTPRG: LDX #$40 ;PULSADOR PRG

DBNZX MPTS MPTP: BRSET 3,PTD,NPT5 ;CONF PULS

BRA YAPTS JSR DELB ;RETARDO REBOTES

NPT4: JMP WTPULS DBNZX MPTP

YAPTS: JSR DELD BRA YAPTP

MOV #$14,TSAT NPT5: JMP WTPULS

BSET 4,LCDDAT YAPTP: JSR DELD

MOV #$14,TSAT BRA YAPTC

MOV #$E0,LCDDAT NPT6: JMP WTPULS

MOV #$17,LCDDAT+9 YAPTC: 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 WTPC: JSR RWDOG

PTCOPY: LDX #$40 ;PULSADOR COPY BRCLR 7,PTD,WTPC

MPTC: BRSET 7,PTD,NPT6 ;CONF PULS JMP WTPULS

JSR DELB ;RETARDO REBOTES PTCLK: LDX #$40 ;PULSADOR CLK

DBNZX MPTC MPTCL: BRSET 4,PTD,NPT7 ;CONF PULS


174
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

JSR DELB ;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 ERRORT: JSR RWDOG

WTPCL: JSR RWDOG JSR DELD

BRCLR 4,PTD,WTPCL BRA ERRORT

WFTP: LDA VTEST NERR: JSR RWDOG

AND #$F MOV #2,TINT

CBEQA #$F,OKPULS JSR DELON ;ENCENDER DISPLAY

JMP WTPULS WFDOK: JSR RWDOG

OKPULS: MOV #$E0,POSM 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 WTINT: LDA PTA

WADIT: JSR RWDOG 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 NORTC: LDA CONSIG

CMP #0 ;TERMOST PROGRAM? CMP #2


176
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

BCS 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

COK: 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 ;SAL A DISPLAY

JSR READ JSR VPULS ;MIRAR PULSADORES

STA MODO JSR TRANS

AND #7 LDX #$40

BNE MOK MSTOP: 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: LDX #0 ; MEDIA TEMP.RETO


178
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: LDX #$10 ; MEDIA TEMP.IMPUL BRA DTRET

DTIMP: 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: BCLR 0,MANDO

STA REG4+1 BSET 6,MANDO

MOFF: BCLR 5,MANDO

BRCLR 3,MODO,NMAUT BSET 2,MANDO

JMP MAUTO ;MODO AUTO MOV CONSIG,VCOMP

NMAUT: BRSET 2,MODO,MCAL ;CALOR MOV CONSIG+1,VCOMP+1

BRSET 1,MODO,MFRIO ;MODO FRIO LDA TRET+1

LDA MANDO ;MOD VENTI SUB VCOMP+1

AND #$41 LDA TRET

STA MANDO SBC VCOMP

JMP FINET BCS WETC

MCAL: LDA MANDO JMP NOET

AND #$41 WETC: LDA VCOMP+1

STA MANDO 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 STA VCOMP

AUTFR: BRCLR 2,MANDO,NOIET LDA TRET+1

BCLR 3,MANDO SUB VCOMP+1

NOIET: 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 Capítulo 1. Código de la tarjeta TX98

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: BCLR 3,MANDO SUB VCOMP+1

BCLR 4,MANDO LDA TRET

BRA FINET SBC VCOMP

ET1: BSET 3,MANDO BCC WAUTFR

BCLR 4,MANDO JMP MCAL

BRA FINET WAUTFR: JMP AUTFR

ET2: BCLR 3,MANDO FINET: BRCLR 0,FLAGS3,CVEL

BSET 4,MANDO NOCV: MOV #0,VEL

BRA FINET BSET 7,FLAGS4

MAUTO: LDA #0 JMP YAVEL

LDA ZM CVEL: BRCLR 7,FLAGS4,DELTAV

ASRA 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 LDA TRET+1 ;NO

NEWE: LDA MANDO SUB CONSIG+1

AND #$18 STA ERR+1

BNE NOIFOI LDA TRET

LDA #$FF SBC CONSIG

STA FNOI STA ERR ;HALLAR ERROR

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 STA FLIM

NAUTO: BRSET 2,MODO,CCAL SILIMF: MOV #0,OUTF ;TEMP RETO<CON

CFRIO: 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 MOV #0,OUTC ;TEMP RETOR>CONS

CCAL: 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: LDA TRET+1 ;MODO AUTO

BRCLR 7,ERR,SICAL 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 ;CONTR PROGRAM?

STA MODOA BEQ CTOV ;NO

JCFR: JMP CFRIO ;TEMP.RETO>CONSIG BRCLR 7,FLAGS1,CTOV ;PROGR ACTIV?

JCCAL: 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: LDA OUTC

BSET 1,FLAGS3 BEQ WOUTCA

CTOV: 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 JMP ORELE ;SALIDAS POR RELE

NCHG: 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: JSR INDAC ;SAL A CONVER


D/A
BRA NOVENT
BCLR 6,PTC
SIVENT: BSET 6,RELE
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
NOMV: LDA TSTOP
DUALO: LDA OUTC ;SAL DE CALOR
BEQ SIOUT
NDUAL: JSR SDDAC
JMP WGRAB
JSR INDAC
SIOUT: LDA CONF1
BSET 6,PTC
CMP #2
JSR DACLK
BCS NORELE
BCLR 6,PTC
JSR DACLK ORELE: LDA MANDO

LDA OUTF ;SALIDA DE FRIO AND #$18

JSR SDDAC BEQ NOORL

BSET 7,PTC BRCLR 0,FLAGS3,YAORL

LDA PTA NOORL: MOV #0,OUTF

AND #$8F 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 ;SALIDAS POR RELE

BNE CNMOD TAX

MOV #0,TRONC LDA TREL

MOV #$FF,TROFC MUL

BCLR 4,RELE PSHA


187
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 ;TIEMPO ON CALOR

LDA TREL LDA TREL

SUB TCONF SUB TCONC

STA TCOFF ;TIEMPO OFF FRIO 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 STA PTA

CALR: BRSET 4,RELE,SICALR WGRAB: BRSET 7,FLAGS2,GRBM

BCLR 5,RELE 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 BEQ WINT

NIP: BRCLR 3,FLAGS1,SCALC JMP INPROP

JMP INPROP WINT: LDA ERR

SCALC: LDA FNOI 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: MOV OUT,OUTA

BRA NOINO FCALPI: RTS

NOSATX: LDA PRDT SATU: 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 #0

LDA #$FF BRA NSATD

JMP NSATU MDIA10: ASLA

SUBO: 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 WPPR: BRCLR 1,FLAGS3,NODV

DELD: LDX #0 ;BORRAR DISPLAY BRA NOPARD

LDA #0 NODV: BCLR 4,LCDDAT+3

MDELD: STA LCDDAT,X 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? AND #$F0

BSET 4,LCDDAT+3 ;SI STA LCDDAT+5

BCLR 4,LCDDAT+4 BRA NODAL

VENNP: LDA LCDDAT+3 STA LCDDAT+7

AND #$10 JSR DPMH

STA LCDDAT+3 JMP DPER

MOV #0,LCDDAT+4 DMODO: BCLR 4,LCDDAT+3 ;DISPLAY M.

LDA LCDDAT+5 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 NODA: BRSET 0,MODO,YADM

BSET 1,LCDDAT+5 ;MODO AUTO 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 ;ESCRIBIR CONSIGNA

BSET 0,LCDDAT+5 INC SEGD

YADM: BRCLR 5,FLAGS2,SIGRC2 LDA DECIM+2

BCLR 2,LCDDAT+5 JSR DIG1

BRA NOGRC2 FDAL2: JSR DPMH ;ESCRIB MED/H

SIGRC2: BSET 2,LCDDAT+5 LDA CONF2

NOGRC2: MOV CONSIG,BIN BNE DENER

MOV CONSIG+1,BIN+1 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: LDA PERP ;DISPLAY PROGRAM

BEQ NOIP BRA SIDPER

NODIP: BCLR 3,LCDDAT+8 NODPER: MOV #$89,BIN

BRA DPPA BRA YADPER

NOIP: LDA FLPR SIDPER: BRCLR 4,FLAGS2,NOIPER

BEQ NODIP LDA CRINT

NIOV1: BSET 3,LCDDAT+8 BNE NODPER

DPPA: BRCLR 7,FLAGS1,NODPA NOIPER: BRSET 6,FLAGS1,DPERPI

BRCLR 1,FLAGS2,NOIPA LDA PER

LDA CRINT BRA YADP

BNE NODPA DPERPI: LDA PERP

NOIPA: BSET 7,LCDDAT+8 ;PROGR ACTIV YADP: CMP #1

BRA WDPER BNE NOP1

NODPA: BCLR 7,LCDDAT+8 BSET 2,LCDDAT+8

WDPER: BRSET 6,FLAGS1,DPERP MOV #$8D,BIN

BRCLR 7,FLAGS1,NODPER BRA YADPER

LDA PER ;DISPLAY PERIODO NOP1: CMP #2

BNE NOIPER 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

NOP3: CMP #4 MID5: BSET 0,LCDDAT+7

BNE NODPER BSET 0,LCDDAT+8

BSET 5,LCDDAT+8 BRA FDDIA

MOV #$A9,BIN IDIA: BRCLR 3,FLAGS2,NIDIA ; PROGRAM

YADPER: LDA LCDDAT+8 LDA CRINT

AND BIN BEQ NIDIA

STA LCDDAT+8 LDA DIAP ;INTERMITENC Nº DE DIA

BRSET 6,FLAGS1,IDIA ;PROGRAM? BNE NID1

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: CMP #5

BRA MID4 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 NDIA3: CMP #3


PROGRAM?
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: CMP #4
BRA YADDIA
BNE NDIA5
NDIA0: LDA DOWR ;NO,DISPLAY
BARRA DEL DIA MOV #$1F,BIN

BNE NDIA1 MOV #$EC,BIN+1

MOV #$9F,BIN BSET 2,LCDDAT+9

MOV #$E8,BIN+1 BRA YADDIA

BSET 7,LCDDAT NDIA5: CMP #5

BRA YADDIA BNE NDIA6

NDIA1: CMP #1 MOV #$1F,BIN

BNE NDIA2 MOV #$EA,BIN+1

MOV #$5F,BIN BSET 1,LCDDAT+9

BRA YADDIA
197
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

NDIA6: 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 ;EN BRA WDIA7P


PROGRAMACION
NDIA6P: BCLR 1,LCDDAT+9
LSRA ;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: JSR RWDOG ;VIGILANCIA PULS
BSET 6,LCDDAT
BRSET 5,PTD,NPUP ;PULS ARRIBA?
BRA WDIA3P
JMP PUP ;SI
NDIA2P: BCLR 6,LCDDAT
NPUP: BRSET 6,PTD,NPDWN ;PULS ABAJ?
WDIA3P: LSRA
JMP PDOWN ;SI
BCC NDIA3P
NPDWN: BRSET 0,PTD,NPSTSP ;PULS
BSET 5,LCDDAT START-STOP?

BRA WDIA4P JMP PSTRSP ;SI

NDIA3P: BCLR 5,LCDDAT NPSTSP: BRSET 1,PTD,NPMOD ;PULSMOD?

WDIA4P: LSRA JMP PMODO ;SI

BCC NDIA4P NPMOD: LDA CONF2 ;CONTR PROGRAM?

BSET 4,LCDDAT+9 BEQ NPULS ;NO

198
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 ;SI CBEQA #3,FPAU

NPSEL: BRSET 3,PTD,NPPRG ;PULS PRG? BCLR 0,FLAGS2

JMP PPRG ;SI BCLR 1,FLAGS2

NPPRG: BRSET 7,PTD,NPCOPY ;PUL COPY? FPAU: JMP FUP

JMP PCOPY ;SI NOPRA1: BRCLR 2,FLAGS2,NOHR1

NPCOPY: BRSET 4,PTD,NPULS ;P CLOCK? MOV #5,TRAP ;T PA CAMB RAPID

JMP PCLK ;SI BRSET 6,FLAGS1,INCHRP ;PROGRAM?

NPULS: RTS MIHR: MOV #$A,TINT

PUP: BRSET 6,FLAGS1,SIPUP ;PULARRIBA 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: RTS ;PARADO FMINU: MOV #0,MINR

SIPUP: LDX #$40 LDA #$17

MPUP: BRSET 5,PTD,NP1 ;CONFIR PULS CMP HRR

JSR DELB ;RETAR REBOTE Y RUIDO BEQ FHRU

DBNZX MPUP INC HRR

BRA YAPUP BRA MCHRA

NP1: RTS FHRU: MOV #0,HRR

YAPUP: BRCLR 1,FLAGS2,NOPRA1 MCHRA: JSR DISPL

LDA FLAGS1 LDA TRAP

EOR #$80 ;CAM PROGRAM ACTIV BEQ URAP1S

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 ;NO

LDA PER 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: MOV #0,DOWR

BRA MCHRAP JMP FUP

SIIHRP: MOV #$A,TINT INDIAP: INC DIAP ;AUMEN DIA PROGRA

INC MINP ;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 NOGCU: MOV CONSIG+1,DATO+1


PULSADO ARRIB?
MOV CONSIG,DATO
JSR PRGHR ;NO,GRABAR HORA
LDA CONSIG+1
RTS
SUB CMAX+1
NOHR1: BRCLR 3,FLAGS2,NODIA1
LDA CONSIG
BRSET 6,FLAGS1,INDIAP ;PROGRAM?
SBC CMAX
LDA #6 ;NO,AUMENTAR DIA
BCS SIUPC ;CONSIG > MAXIMO?
200
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: JMP FDOWN

JSR DELAY NOPRA2: BRCLR 2,FLAGS2,NOHR2

WUP: JSR DISPL MOV #5,TRAP ;T PA CAMB RAPID H

BRCLR 5,PTD,WUP BRSET 6,FLAGS1,DECHRP ;PROGRAM?

RTS MDHR: MOV #$A,TINT

PDOWN: LDX #$40 ;PULS ABAJO LDA #0

MPDOWN: BRSET 6,PTD,NP2 ;CONFI PUL CMP MINR

JSR DELB ;RETAR REBOTE Y RUIDO BEQ FMIND

DBNZX MPDOWN DEC MINR

BRA YAPDWN BRA MCHRB

NP2: RTS FMIND: MOV #$3B,MINR

YAPDWN: BRSET 6,FLAGS1,SIPDWN 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: MOV #$17,HRR

SIPDWN: BRCLR 1,FLAGS2,NOPRA2 MCHRB: 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 ;NO,GRABAR HORA
DRAP1S: JSR DELAYS
RTS
DRAP1: BRCLR 6,PTD,MDHR ;SIGUE
PULSADO FLECHA ABAJO? NOHR2: BRCLR 3,FLAGS2,NODIA2

RTS ;NO BRSET 6,FLAGS1,DEDIAP


;PROGRAMACION?
DECHRP: LDA MINP
LDA #0 ;NO,DISMINUIR DIA
CMP #$AA
CMP DOWR
BNE SIDHRP
BEQ FDIAD
LDA #0
DEC DOWR
STA HORAP
JMP FDOWN
STA MINP
FDIAD: MOV #6,DOWR
BRA MCHRBP
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 YASTSP: BRCLR 4,FLAGS1,NOFMED

NOGCD: 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 BSET 0,FLAGS1

BCS SIDWC ;CONSIGNA < MIN? LDX #$40

MOV CMIN+1,CONSIG+1 ;SI,NO MOO: BRCLR 2,PTA,SIOO


DISMINUIR
JSR DELB
MOV CMIN,CONSIG
DBNZX MOO
BRA FDOWN
BSET 0,FLAGS3
SIDWC: LDA CONSIG+1 ;DISMIN CONS
BRA FSTRSP
SUB #$A
SIOO: LDA FLAGS3
STA CONSIG+1
EOR #1
LDA CONSIG
STA FLAGS3 ;NO,ON/OFF
SBC #0
BRA FSTRSP
STA CONSIG
SELSTP: BRCLR 2,FLAGS2,NOHR3
MOV #2,TOI
LDA #0 ;HORA INI PROGRAM-00:00
FDOWN: MOV #$A,TINT
STA HORAP
JSR DELAY
STA MINP
WDOWN: JSR DISPL
JSR NULLP
BRCLR 6,PTD,WDOWN
JSR WPER
RTS
BRA FSTRSP
PSTRSP: LDX #$40 ;PULS START-STOP
NOHR3: BRCLR 3,FLAGS2,NODIA3
MPSTSP: BRSET 0,PTD,NP3 ;CONFI PULS
LDA #$AA ;ANULA PROGRAM DE DIA
JSR DELB ;RETAR REBOTE Y RUIDO
STA HORAP
DBNZX MPSTSP
STA MINP
BRA YASTSP
JSR NULLD
NP3: 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 BRA FPMOD

MMODO: BRSET 1,PTD,NP4 ;CONFIR PUL INMED: INCA

JSR DELB ;RETAR REBOTE Y RUIDO STA NMED

DBNZX MMODO BRA FPMOD

BRA YAPMOD CHMODO: MOV #0,OI

NP4: 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: BRCLR 4,MODO,FMODO

LDA OUTA MODO1: MOV #1,MODO

STA DATO+2 FMODO: MOV #$A,TINT


204
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

FPMOD: JSR DELAY STA NMED

WMODO: JSR DISPL MOV TIMP,MEDD

BRCLR 0,PTD,WPRGM ;PULSADOR MOV TIMP+1,MEDD+1 ;PONER


START-STOP? 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: BRSET 0,FLAGS3,FBLKP

MWPRGM: JSR DELAY ;PUL START-STOP 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 EOR #$20

MWDMED: JSR DELB ;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: BRSET 2,FLAGS2,SIHR ;PROGRA
STA CMIN+1
BRCLR 3,FLAGS2,NODIA4
LDA CONSIG
BCLR 3,FLAGS2 ;FIN SELECCION DIA
SBC #0
BSET 4,FLAGS2 ;SELECCION PERIODO
STA CMIN
BRA FSEL
FBLKP: 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
SIHR: BCLR 2,FLAGS2 ;FIN SELEC HORA
PSEL: BRCLR 0,FLAGS3,WPSEL ;PULS SEL
BSET 3,FLAGS2 ;SELECCION DIA
BRSET 1,FLAGS3,WPSEL
FSEL: MOV #$A,TINT
BRCLR 6,FLAGS1,NP5
JSR DELAY
WPSEL: BRSET 0,MODO,NP5
WSEL: JSR DISPL
LDX #$40
BRCLR 2,PTD,WSEL
MPSEL: BRSET 2,PTD,NP5
;CONFIRMACION PULSADOR RTS

JSR DELB ;RETAR REBOTE Y RUIDO PPRG: BRSET 0,FLAGS2,NP6;PUL PROGRA

DBNZX MPSEL BRSET 1,FLAGS2,NP6

BRA YAPSEL LDX #$40

NP5: RTS MPPRG: BRSET 3,PTD,NP6


;CONFIRMACION PULS
YAPSEL: BRSET 6,FLAGS1,WSTP
JSR DELB ;RETAR REBOTE Y RUIDO
BRCLR 1,FLAGS2,NOPRA3
DBNZX MPPRG
BCLR 1,FLAGS2 ;FIN SELECCION
ACTIVACION PROGRAMACION BRA YAPPRG

206
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

NP6: 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 PERP

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: JSR PRGHR

BCLR 6,FLAGS1 DEC DIAP

FPRG: MOV #$14,TINT LDA DIAP

JSR DELAY CMP #$FF

WPRG: JSR DISPL BNE NODP3

BRCLR 3,PTD,WPRG MOV #6,DIAP

RTS NODP3: INC PERP

PCOPY: BRCLR 6,FLAGS1,NP7 ;PULS COPY LDA PERP

LDX #$40 CMP #6

MPCOPY: BRSET 7,PTD,NP7 ;CONF PULS BNE MCOPY

JSR DELB ;RETAR REBOTE Y RUIDO LDA DATO+1

DBNZX MPCOPY STA PERP

BRA YAPCPY INC DIAP

NP7: 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 MOV #0,DIAP

NODP4: JSR WPER JSR WPER

MOV #$10,TINT FCLK: MOV #$14,TINT

JSR RHORAP JSR DELAY

JSR DELAY WCLK: JSR DISPL

WCOPY: 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 ;CONFIR PUL MOV #AP16,POSM

JSR DELB ;RETAR REBOTE Y RUIDO LDA #0

DBNZX MPCLK JSR PROG

BRA YAPCLK MOV #0,CONSIG

NP8: 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 LDX #$40 ;PULSADOR START-STOP

MSTP1: BRSET 0,PTD,DISPP1 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: JMP DISPP1

ADD #5 PMODP1: LDX #$40 ;PULS MOD

STA DATO+1 MMODP1: BRSET 1,PTD,JDPP1

BRA UP5 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 ;PULS ABAJO

BRCLR 1,PTD,WFDPPC 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 ;PULSADOR START-STOP LDA DATO

MSTPC: BRSET 0,PTD,DISPPC SBC #0

JSR DELB STA DATO

DBNZX MSTPC JSR DELAY

JMP FINPR ;FIN PROGRAM PARAM WDWNPC: JSR DISPL

PUPPRC: LDX #$40 ;PULS ARRIBA BRCLR 6,PTD,WDWNPC

MUPPRC: BRSET 5,PTD,DISPPC BRA DISPPC

JSR DELB PMODPC: LDX #$40 ;PULS MOD

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
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

LDA CONSIG+1 INC MIN ;AUMENTAR PARAM T

ADD #$A JSR DELAY

STA CONSIG+1 NOIVER: JSR DISPL

JSR READ ;FIN PARAM TEMP BRSET 5,PTD,DISPP2

STA MIN JSR DELAY

MOV #0,HORA BRA MIPT1

BSET 6,FLAGS2 PDWNP2: LDX #$40 ;PULS ABAJO

JSR DELAY MDWNP2: BRSET 6,PTD,DISPP2

WFDPP1: JSR DISPL 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 ;DISMINUPARAM T

BRCLR 1,PTD,PMODP2 ;PULS MOD JSR DELAY

BRSET 0,PTD,DISPP2 NODVER: JSR DISPL

LDX #$40 ;PULSADOR START-STOP BRSET 6,PTD,DISPP2

MSTP2: BRSET 0,PTD,DISPP2 JSR DELAY

JSR DELB BRA MDPT1

DBNZX MSTP2 PMODP2: LDX #$40 ;PULS MOD

JMP FINPR ;FIN PROGRAM PARAM MMODP2: BRSET 1,PTD,DISPP2

PUPPR2: LDX #$40 ;PULS ARRIBA 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: BRSET 0,PTD,DISPP3

JMP DISPP2 JSR DELB

WKEY: LDA MIN DBNZX MSTP3

CBEQA #$D,FDPP2 ;CLAV CORREC BRA FINPR ;FIN PROGRAM PARAM

JMP FINPR ;NO,FIN PROGRAM PUPPR3: LDX #$40 ;PULS ARRIBA

FDPP2: JSR IREAD MUPPR3: BRSET 5,PTD,DISPP3

STA MIN JSR DELB

MOV #1,CONSIG DBNZX MUPPR3

MOV #$F4,CONSIG+1 INC MIN ;AUMENTAR CONF

WFDPP2: JSR DISPL 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 ;PULS ABAJO

BRCLR 1,PTD,PMODP3 ;PULS MOD MDWNP3: BRSET 6,PTD,DISPP3

BRSET 0,PTD,DISPP3 JSR DELB

LDX #$40 ;PULSADOR START-STOP

DBNZX MDWNP3 CBEQA #$BC,FINPR

DEC MIN ;DISMINUIR CONF JSR IREAD

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 BRCLR 1,PTD,WMODP3

JSR PROG ;GRABAR CONF BRA DISPP3

LDA CONSIG+1 FINPR: BCLR 5,FLAGS2 ;FIN PROG PARAM


212
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

LDHX #$260 JSR PROG

TXS RTS

LDHX #0 NULLD: PSHA

JMP FINPRG BSR WDIAP

NULLP: 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 ;TOMA DIA SEMAN

STA DATO STA DIA


213
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 BLO NOPPR

BEQ 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 ;VE PROGRA DIA ANTE

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 MOV #0,PER

GRBP2: 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 DEC POSM

NOPD: 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 INC POSM

BEQ NONPR ;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 PWEEK: LDA #0

NPWEEK: STA DIA 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
MWPOD: LDX #0
STA PRPER
MWPRD: JSR READ
INC PRPER
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: SEC BRA MWPOD

NOPRD: ROR FLPR FWPRD: LSR FLPR

LDA POSM 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 STA DIG


DIGITOS CONSIGNA
LDA SEGD
LDA DATAD1,X ;DATO EN A
TAX
MDIG: 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: LDA CONF2 ;CONTR PROGRAM?
RTS
BNE SIDT1 ;SI
DIG2: TAX ;ESCR.EN DISPLAY 2
DIGITOS MSB MEDIDA JMP NODT ;NO

LDA DATAD2,X ;DATO EN A SIDT1: BRSET 6,FLAGS2,SIDT2 ;T DISPLAY?

BRA MDIG JMP NODT ;NO

DIG3: PSHA ;ESCR.EN DISPLAY 2 SIDT2: BRCLR 5,FLAGS2,SIDT3 ;SI,PRG PRM?


DIGITOS LSB MEDIDA
JMP DPART ;SI
TAX ;DATO EN A
SIDT3: BRSET 6,FLAGS1,DHP ;PROGRAM?
218
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 DMP: LDA MINP

DHP: BRCLR 2,FLAGS2,NDBLK 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 ;ESCRIBIR H JSR DIG3

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: MOV MEDD,BIN ;NO,MED N DPLY
LDA DECIM+3
MOV MEDD+1,BIN+1
JSR DIG3
BRA YADPM
RTS
FMED: MOV #$A,DECIM+1
DPBLK: LDA LCDDAT+1
MOV #$A,DECIM+2
AND #$10
MOV #$F,DECIM+3
STA LCDDAT+1
BRA DFMED
LDA LCDDAT+2
DPARM: BRCLR 6,FLAGS2,SIDPM
AND #$10
BRA DPART
STA LCDDAT+2
SIDPM: LDA DATO
BCLR 7,LCDDAT+9
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: BSET 6,LCDDAT+9

PULA 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: BCLR 4,LCDDAT+6

INC SEGD SDS1: 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: BCLR 2,LCDDAT+7

JSR DIG3 SDS2: 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: BCLR 1,LCDDAT+7

LDA 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: BSET 3,LCDDAT+7

BRA FDPMH BRA YDS4

NODI: BCLR 1,LCDDAT+7 NDS4: BCLR 3,LCDDAT+7


221
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

YDS4: 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 ;RUTINA BEQ SIEDIR


TRANSMISION SERIE
CMP #$38
BRSET 6,FLAGS3,SITR ;HA HABIDO
RECEPCION DE DATOS? BCS DIROK

RTS ;NO SIEDIR: BSET 7,CODE ;ERROR DIREC DAT

SITR: BCLR 6,FLAGS3 ;SI LDA #2

MOV #0,IBUF STA CODERR

LDA #$FF JMP TRERR

STA CRC DIROK: LDA FFILT

STA CRC+1 BEQ NOFST

LDA ERRCRC ;ERROR DE CRC? LDA REG2+1

BEQ NOECRC ;NO ORA #$80

LDA #0 BRA SIFST

STA ERRCRC ;SI NOFST: LDA REG2+1

RTS AND #$7F

NOECRC: JSR DELAY SIFST: 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 ;LECTURA REG

BSET 2,PTB ;PON ENABLE TRANSMI ASLA

JSR DELAY STA SCDR ;TRANSMITIR Nº BYTES

LDA CODE JSR CRCCAL

CBEQA #4,CODEOK WAIT0: JSR RWDOG

CBEQA #$10,CODEOK BRCLR 7,SCS1,WAIT0

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 JSR CRCCAL

STA SCDR ;TRANSM PRIME BYTE WAIT5: JSR RWDOG

JSR CRCCAL BRCLR 7,SCS1,WAIT5

WAIT1: JSR RWDOG LDA NDATW

BRCLR 7,SCS1,WAIT1 STA SCDR

INCX JSR CRCCAL

LDA REG1,X WAIT6: JSR RWDOG

STA SCDR ;TRANSMI SEGUN BYTE BRCLR 7,SCS1,WAIT6

JSR CRCCAL BRA TRCRC

WAIT2: JSR RWDOG TRERR: JSR TRINIT

BRCLR 7,SCS1,WAIT2 LDA CODERR

INCX STA SCDR ;TRANSMIT COD ERROR

LDA NDAT JSR CRCCAL

DECA WAIT7: JSR RWDOG

STA NDAT ;FINAL TRANSMI DATS? BRCLR 7,SCS1,WAIT7

BNE MTRDAT ;NO,SEGUIR TRCRC: LDA CRC+1

LDHX #0 STA SCDR ;TRANSMITIR CRC

JMP TRCRC ;SI,TRANSMITIR CRC WAIT8: JSR RWDOG

SIWR: LDA #0 ;ESCRITURA BRCLR 7,SCS1,WAIT8

STA SCDR LDA CRC

JSR CRCCAL STA SCDR

WAIT3: JSR RWDOG WAIT9: JSR RWDOG

BRCLR 7,SCS1,WAIT3 BRCLR 7,SCS1,WAIT9

LDA DIRDAT JSR DELAY

STA SCDR ;TRANSM DIREC DATO BCLR 2,PTB ;QUIT ENABLE TRANSM

JSR CRCCAL JSR DELAY

WAIT4: 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: BCLR 0,FLAGS3

STA REG1,X OFFORD: JSR STORE

INCX 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

FWR: 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 ;INI TRANSM ROL PRDT+1

STA SCDR ;TRANSMITIR DIREC ROL PRDT

JSR CRCCAL ASL PRDT+2

WAITA: 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 LDA PRDT+1

WAITB: 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 ADD #$E8

FINDI: RTS STA BIN+1

BINDEC: MOV #0,DECIM ;PASA BIN EN LDA BIN


BIN Y BIN+1
ADC #3
MOV #0,DECIM+1 ;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

LDA #$FF MDIG3: LDA BIN+1

STA FNEG SUB #$A

MDIG1: LDA BIN+1 STA 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 ;ENVIA DAT A FREE-COOL JSR SDATO

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 JNOAFC: JMP NOAFC

NOLIM: 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: LDA #0 MRFC7: JSR RDATO ;REC APER COMPUE

SIFS: STA FFILT DBNZX MRFC7

LDX #3 LDA DATOR

MRFC3: JSR RDATO ;RECIB TEMP.EXT STA REG9+1

DBNZX MRFC3 MOV #0,DECIM+1

BRSET 2,DATOR,TEXTN ASL DECIM+3

LDA DATOR ROL DECIM+2 ;x2

AND #7 ASL DECIM+3

STA REG7 ROL DECIM+2 ;x4

BRA TEXTP ASL DECIM+3

TEXTN: LDA DATOR ROL DECIM+2 ;x8

ORA #$F8 LDA DECIM+3

STA REG7 STA MEM+3

TEXTP: LDX #8 LDA DECIM+2

MRFC4: JSR RDATO STA MEM+2

DBNZX MRFC4 ASL DECIM+3

LDA DATOR ROL DECIM+2 ;x16

STA REG7+1 LDA DECIM+3

LDX #3 STA MEM+1

MRFC5: JSR RDATO ;RECI PRESION LDA DECIM+2

DBNZX MRFC5 STA MEM

LDA DATOR ASL DECIM+3

AND #3 ROL DECIM+2 ;x32

STA DECIM+2 ASL DECIM+3

LDX #8 ROL DECIM+2


230
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98

ROL DECIM+1 ;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: ASL DATOFC

STA FCACT 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 RDATO: MOV #$64,TSEG ;RECEP UN BIT

TSP: MOV #$C,TSEND WDATO1: BRSET 2,PTA,YADAT1 ;3*

WSP: LDA TSEND LDA TSEG

BNE WSP BNE WDATO1

RTS BRA NODATO

SENDF: BSR SEND1I YADAT1: MOV #0,TANS

SEND0: MOV #4,TSEND BSET 4,FLAGS4

BRA SEND MOV #$64,TSEG

SEND1: MOV #$C,TSEND WDATO2: BRCLR 2,PTA,YADAT2 ;3*

SEND: BSET 1,PTA LDA TSEG

WSEND: 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 BSET 5,FLAGS4 ;ERROR

SDATO: 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 ;LECT MEM EEPROM

LDA #1 JSR RWDOG

EOR CRC+1 MREADM: LDA #0

STA CRC+1 STA ERRPRM

NOCAR: 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 Capítulo 1. Código de la tarjeta TX98

BSR PRDAT ;DIREC DEVICE BSET 4,PTB

LDA POSM JSR DRWDOG

BSR PRDAT ;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: BCLR 5,DDRB ;LEER DATO BUS


I2C
RTS
LDX #8
PRDAT: LDX #8 ;ENVIA DATO BUS I2C
MREAD: JSR DELI2C
MPROG: ASLA
BSET 4,PTB
BCS DAT1
JSR DELI2C
BCLR 5,PTB
BRSET 5,PTB,DATA1
BRA DAT0
CLC
DAT1: BSET 5,PTB
BRA DATA0
DAT0: BSR MEMCLK
DATA1: SEC
DBNZX MPROG
DATA0: ROLA
BCLR 5,DDRB ;ACKNOWLEDGE
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: PSHX ;RETARDO BASE

NOP LDX #0

RTS MDELB: BSR DELI2C

DACLK: NOP ;CLOCK CONVER D/A DBNZX MDELB

NOP PULX

NOP RTS

NOP DELI2C: NOP ;RETARDO BUS I2C

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 RTS

LDX #$10 DRWDOG: BSR DELI2C

BRA MDEL RWDOG: LDA #$FF

DELAY: PSHX STA WDOG

LDX #$40 RTS

MDEL: 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: PULA
MOV #0,ALMR
RTI
LDA HRR
INTAD: PSHA ;INTERRUPCION
INCA CONVERTIDOR A/D

CMP #$18 PSHH

BNE NOIND1 PSHX

MOV #0,ALHR LDA CHAN

BRA YAIAL1 BNE ADTIMP

NOIND1: STA ALHR LDX #$D ;SONDA TEMP RETOR

BRA YAIAL1 MDSI: LDA AN0,X

NOINH1: STA ALMR INCX

YAIAL1: MOV PRPER,PER ;PONER INCX


NUEVO PERIODO
STA AN0,X
BRA FIRTC
DECX
IMIN: BCLR 2,FLAGS3
DECX
LDA MINR
DECX
INCA
BPL MDSI
CMP #$3C

237
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 SUB #$F8

NFAD1: 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 ;RESTAR 8 A MED ANTE

STA AN0+1 STA AN0+1

LDA NAD LDA AN0+2

CMP #8 SBC #0

BNE OKMSI STA AN0

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

ADD #8 ;SUMAR 8 A MED ANTER JMP FINAD

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 ;DIFERENCIA > DE 8

LDA ADRL SUB #8 ;RESTAR 8 A MED ANTE

STA AN1+1 STA AN1+1

LDA NAD LDA AN1+2

CMP #8 SBC #0

BNE FINAD STA AN1

LDA AN1+1 FINAD: 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: PSHA ;INTERR TIMER
SBC #0
LDA TSEG
BCS FINAD ;DIFERENCIA <DE 8
BEQ NTSEG
LDA AN1+3 ;DIFERENCIA >DE 8
DEC TSEG ;DECREMENTA T SEG
ADD #8 ;SUMAR 8 A MED ANTER
NTSEG: LDA TSEND
STA AN1+1
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: INC MSEG
MENORE: LDA ANAUX+1;NUEV MED ES <
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: LDA DSEG

BRA WTRC 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
NADR1: MOV #1,CHAN
WTRC: LDA TRONC
MOV #$65,ADSCR ;PONER INTS.A/D
BEQ DTROFC SONDA TEMP.IMP.

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: LDA TVENT

MOV #$64,ADSCR ;PONER INTS.A/D BEQ NDTV


SONDA TEMP.RET.
DEC TVENT
BRA SADREM
NDTV: LDA CRONO
NADR2: MOV #1,CHAN
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 ;DECREMENTAR TDON BRSET 3,FLAGS2,NCHCR

NTDON: LDA TDOFF LDA CONF2

BEQ NTDOFF BEQ NODTIM

DEC TDOFF ;DECREMENTAR TDOFF BRSET 6,FLAGS2,NODTIM

NTDOFF: LDA TIMEFC BSET 6,FLAGS2

BEQ NDFC BRA NCHCR

DECA NODTIM: BCLR 6,FLAGS2

STA TIMEFC NCHCR: LDA TRAP

NDFC: LDA TINT BEQ NDTRAP

BEQ NTINT DEC TRAP

DEC TINT ;DECREMENTAR TINT NDTRAP: INC GHORA

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 ;TOMAR DATO

JSR IPROG PSHA

LDA HRR LDA IBUF ;PRIMER DATO?

JSR IPROG BNE NODR0 ;NO

LDA MINR PULA

JSR PROG CMP DIR

PULA BEQ SIREC

STA POSM INITR: LDA #0

NGHORA: LDA TSAT STA IBUF

BEQ NDTSAT LDA #$FF

DEC TSAT STA CRC

NDTSAT: LDA TOI STA CRC+1

BEQ NDTOI JMP FINR

DEC TOI SIREC: JSR CRCCAL

NDTOI: LDA TSTOP MOV #1,IBUF

BEQ NDTSTP JMP FINR

DECA NODR0: CMP #1 ;SEGUNDO DATO?

STA TSTOP BNE NODR1 ;NO

NDTSTP: LDA TNOI PULA

BEQ NDTNOI STA CODE ;SI,GUARDAR COD

DECA JSR CRCCAL

STA TNOI MOV #2,IBUF

NDTNOI: NOP JMP FINR

FINIT: 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 ;SI,ESCRITURA?

MOV #3,IBUF BEQ DATR6 ;SI

JMP FINR PULA

NODR2: CMP #3 ;CUARTO DATO? CMP #0

BNE NODR3 ;NO BEQ INITR

PULA STA NDAT ;NO,GUARDAR NUMERO


DE DATOS
CMP #0
WCRC1: JSR CRCCAL
BEQ INITR
WCRC2: MOV #$C,IBUF
STA DIRDAT ;SI,GUARDAR EN
DIRECCION DATO JMP FINR

JSR CRCCAL DATR6: PULA

MOV #4,IBUF CMP #0

JMP FINR BEQ INITR

NODR3: CMP #4 ;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: CMP #7 ;OCTAVO DATO?

JMP INITR 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: CMP #9 ;DECIMO DATO?

JMP FINR BNE NODR9 ;NO

NODR7: 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: CMP #$A ;UNDECIMO DATO?
DECA
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 BRA FINR

CMP CRC+1 ;CRC CORRECTO?

NODRC: PULA STA ERRCRC

CMP CRC NECRC2: BSET 6,FLAGS3 ;FIN RECEP DAT

BEQ NECRC2 FINR: PULA RTI

LDA #$FF SLEEP: NOP

RTI

LDA LVISR ;INTERRUPCION BAJA TENSION

AND #$80

BEQ WAKE

LDA LVISR

ORA #$10

STA LVISR

244
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 ;MODO STOP

WAKE: 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 Código fuente de la tarjeta 2. daigu
SA98

E 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 2 ;MEDIDA ANALOGICA AUXILIAR INTERRUPCION CONVERTIDOR

NAD: RES 1 ;NUMERO MEDIDAS ANALOGICAS

MEDM: 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 ;SAL POR CONV DIG-ANALOG CANAL A:DATO CALC PARA EL SISTEM D F-C

DAOUTB: RES 1 ;SALIDA POR CONVERTIDOR DIGITAL-ANALOGICO CANAL B

252
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98

DAOUTC: RES 1 ;SAL X CONVR DIG-ANALOG CANAL C :DAT RECIB D VEL VENTI PA
VARIADOR

DAOUTD: RES 1 ;SALIDA POR CONVERTIDOR DIG-ANALOG CANAL D

DATODA: RES 1 ;DATO ENVIADO AL CONVERTIDOR DIG-ANALOG

TDA: RES 1 ;INTERVALO DE T Q TRANSCURRE ENTR ACTUALIZA D SAL DEL CONVER


D/A

FILSUC: RES 1 ;SEÑAL DE FILTRO SUCIO:0-NO SEÑAL DE FILTRO SUCIO,0xFF-FILTRO SUCIO

TNCOM: RES 1 ;TIEMPO DE NO COMUNICACIONES ENTRE TX98 Y S98A

WAUX: RES 1 ;WORKING REGISTER AUXILIAR

STAUX: RES 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 ;RESUL D MULTI DE 10 BITS X 10 BITS (RESUL EN 3 BYTES)

MULAUX: RES 3

MANDO: RES 1 ;MANDO D FUNCIONAM:CALCULA Y RECIB DSD EL CONTROL D


CLIMATIZA

CONSIG: RES 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 Capítulo 2. Código de la tarjeta SA98

MDPRES: RES 2 ;MEDIDA DE LA PRESION (ENVIAR A CONTROL DE CLIMATIZADORES)

MPMINA: RES 1 ;MEDIDA POTENCIOMETRO DE MINIMA APERTURA

ENTINT: RES 1 ;ENTALPIA AIRE INTERIOR

ENTEXT: RES 1 ;ENTALPIA AIRE EXTERIOR

NETAP: RES 1 ;NUMERO DE ETAPAS (RECIBIDO EN LA VARIABLE MANDO)

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 ;HABILITA INTERRUPCIONES

BSF PIE1,1 ;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 ;TIEMPO DE SEGURIDAD PARA COGER LA SEÑAL DE START (35 MSEG)

STA1: 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 ;YA TOMADO LOS 42 BITS DL DAT ENVIADO X EL CONTROL D TX98

RRF DATOR,1 ;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 ;COMPROB DATO RECIB Y TOMA DATS INCLUIDO N DICHO DATO RECIB

RDATO: CLRWDT ;SUBRUTINA DE RECEPCION DE 1 BIT

CLRF DEL ;INICIALIZAR ERROR EN RECEPCION DE 1 BIT

MOVLW 0x14 ;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 ;SE HA CUMPLIDO EL TIEMPO DE SEGURIDAD -> COMUNICACION


ERRONEA

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 ;COMPROBACION DE LOS BITS DE INICIO Y FINAL (0-1-DATO-1-0)

GOTO FGETC ;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 ;NO HAY POTENCIOMETRO DE MINIMA APERTURA

CLRF DAOUTA ;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-1-
MANDO(8)-TEMP.EXTERIOR(11)-PRESION(11)-APERTURA COMPUERTA(8)

CALL ENVDAT ;ENVIAR DATO A CONTROL DE CLIMATIZADORES

FGETC: CLRWDT ;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 ;ENVIO DE 1 BIT Y TIEMPO ENTRE DATOS

CALL ROTCON ;ROTAR DATOR PARA ENVIAR OTRO BIT DEL DATO

DECFSZ DEL,1

GOTO SDAT2

RETURN

275
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98

SENVD: BSF PORTC,6 ;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 Capítulo 2. Código de la tarjeta SA98

MOVF MDAN2+2,0 ;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 Capítulo 2. Código de la tarjeta SA98

MOVLW 4 ;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 Capítulo 2. Código de la tarjeta SA98

GOTO CONF3 ;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 ;CALCULAR MEDIA D LS 4 MEDIDAS ANALOG DL CONV A/DPMINA

CLRF MEDM ;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 ;TOMAR COEFICIENTES DE TABLA (C1 Y C2)

MOVWF PCLATH ;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 ;RESULTADO > HUMEDAD

MOVLW 0x0A ;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 Capítulo 2. Código de la tarjeta SA98

QS5: 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 ;NO HAY POTENCIOMETRO DE MIN APERTURA

MOVF MPMINA,0 ;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 Capítulo 2. Código de la tarjeta SA98

BSF PORTC,1 ;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 -> +80ºC

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
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 -> 0% (1V) (4mA)

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
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 -> 100 % (4V) (20mA)

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

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 -> PEOR CALIDAD DEL AIRE (5V) (0xFF) ->
COMPUERTA ABIERTA

; SUBRUTINA DE AUTOTEST

MAUTES: CLRWDT

RETURN

;********************************************************************

END

363
PARTE VI: Datasheets

364
MEMORIA
VI. Datasheets Capítulo 1. Datasheets

Capítulo 1

Datasheets
Capítulo 1 Datasheets 1. Daigu

E
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

También podría gustarte