Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
Bibliografia___________________________________________________________ 115
PARTE II: CÁLCULOS ______________________________________________ 116
5
DOCUMENTO Nº1. MEMORIA ÍNDICE DE CONTENIDO
6
DOCUMENTO Nº1. MEMORIA ÍNDICE DE CONTENIDO
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
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
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
12
MEMORIA
I. Memoria Capítulo 1. Introducción
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.
13
MEMORIA
I. Memoria Capítulo 1. Introducción
3. Objetivo
14
MEMORIA
I. Memoria Capítulo 1. Introducción
4. Metodología
15
MEMORIA
I. Memoria Capítulo 1. Introducción
5. Recursos
16
MEMORIA
I. Memoria Capítulo 1. Introducción
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.
17
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
Capítulo 2
18
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
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.
19
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
1.7. Presostato
20
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
21
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
22
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
23
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
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
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.
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%.
27
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
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.
28
MEMORIA
I. Memoria Capítulo 2. Descripción del sistema
29
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
Capítulo 3
1. Características destacables.
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.
2 timers de 16 bits.
Reloj de tiempo real (RTC: Real time Clock) con reloj, calendario,
alarma y funciones de cronógrafo.
31
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
32
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
2. Asignación de pines
33
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
3. Alimentación
34
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
4. Puertos
NOTA: Para más detalles acerca de las funciones de los pines consultar
el manual del microcontrolador.
5. Mapa de memoria
35
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
36
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
37
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
6. Vector de interrupción
38
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
Capítulo 4
39
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
1. Características destacables.
Entrada para cristal oscilador de 32 KHz con PLL (Phase Lock Loop)
incorporado, que permite obtener hasta 32 MHz.
40
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
41
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
42
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
2. Asignación de pines
43
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
3. Alimentación
4. Puertos
44
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
5. Mapa de memoria
45
MEMORIA
I. Memoria Capítulo 4. Utilización del µP PIC16F877A
6. Vector de interrupción
46
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
Capítulo 5
1. Introducción
Pulsadores.
Relees de salida
Sensores de temperatura
47
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
Fuente de tensión.
Oscilador.
- Regulador de tensión.
- Transistores Darlington.
- Amplificadores operacionales.
- Supercap.
- Diodos zener.
- Diodos schottky.
- Transiles.
- Puentes de diodos.
48
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
2. Pulsadores
49
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
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
3. Memoria EEPROM
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).
- Histéresis
- Zona muerta
- Versión
- Clave.
- Tipo de control
- Si el control es programable o no
- Dirección
- Programaciones horarias
52
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
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).
4. Comunicaciones serie
53
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
Formato de datos:
- 8 bits
- Sin paridad
- 1 bit de stop
Registros de 16 bits
5. Lectura de registros.
55
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
6. Escritura de registros.
7. Relés de salida.
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
57
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
8. Sensores de temperatura.
59
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
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).
61
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
START:
62
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
63
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
64
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
65
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
66
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
67
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
14. Oscilador.
68
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
69
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
70
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
71
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
72
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
16.4. Supercap.
16.7. Transiles.
74
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
Controlador de humedad
Interruptor
Modulo de comunicaciones
MC34064
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.
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.
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
Hay dos en la tarjeta. Uno para medir la humedad del interior y otro
para medir la del exterior.
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.
17.6. Interruptor
78
MEMORIA
I. Memoria Capítulo 5. Descripción del Hardware
17.8. MC34064
79
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
Capítulo 6
1. Introducción
80
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
Registros de comunicaciones:
- Registro 4: Consigna.
81
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
- Registros 17 a 51 : Programaciones.
2. Rutina de inicialización.
82
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
83
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
3. Rutina de autotest.
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.
85
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
86
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
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).
87
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
88
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
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.
5.2. CALPI.
89
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
5.3. DISPL.
5.4. VPULS.
5.5. PRMODE.
5.6. WPER.
90
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
5.8. DPMH.
5.9. BTNDEC.
91
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
92
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
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.
94
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
95
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
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.
96
MEMORIA
I. Memoria Capítulo 6. Descripción del Software
97
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
Capítulo 7
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
2. Pantalla principal.
98
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
FANCOILS
CLIMATIZADORES
MÁQUINAS
CALDERAS
EXTRACTORES
99
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
101
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
3. Pantalla de climatizadores.
103
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
104
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
105
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
106
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
107
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
Modificar programación.
108
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
109
MEMORIA
I. Memoria Capítulo 7. Descripción del programa para PC
Imprimir Pantalla.
110
MEMORIA
I. Memoria Capítulo 8.Conclusiones
Capítulo 8
Conclusiones
Capítulo 8 Conclusiones 8. daigu
111
MEMORIA
I. Memoria Capítulo 8.Conclusiones
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
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.
114
Bibliografia
[5]. www.datasheetcatalog.com
[5]. www.microchip.com/products/Devices.aspx?dDocName=en01024
[6]. www.freescale.com/files/microcontrollers
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.
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
(1.1)
(1.2)
117
MEMORIA
II. Cálculos Capítulo 1. Cálculos de hardware
(1.3)
(1.4)
2. Sondas de temperatura.
118
MEMORIA
II. Cálculos Capítulo 1. Cálculos de hardware
(1.5)
(1.6)
119
MEMORIA
II. Cálculos Capítulo 1. Cálculos de hardware
(1.7)
(1.8)
(1.10)
120
MEMORIA
II. Cálculos Capítulo 1. Cálculos de hardware
4. Consumo.
Componente Consumo
Pull-up’s 1mA
Total 55,75mA
121
MEMORIA
II. Cálculos Capítulo 1. Cálculos de hardware
(1.12)
(1.13)
(1.14)
(1.15)
(1.16)
(1.17)
122
MEMORIA
II. Cálculos Capítulo 1. Cálculos de hardware
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
1. Frecuencia.
(2.1)
124
MEMORIA
II. Cálculos Capítulo 2. Cálculos de Software
(2.2)
(2.3)
(2.4)
125
MEMORIA
II. Cálculos Capítulo 2. Cálculos de Software
0<fVCLK<9830400 0
9830400≤fVCLK<19660800 1
19660800≤fVCLK<39321600 2
(2.5)
(2.6)
(2.7)
126
MEMORIA
II. Cálculos Capítulo 2. Cálculos de Software
(2.8)
(2.9)
127
MEMORIA
II. Cálculos Capítulo 2. Cálculos de Software
T (ºC) R V H
128
MEMORIA
II. Cálculos Capítulo 2. Cálculos de Software
T (ºC) R V H
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
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
1. Operación automática
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
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
135
MEMORIA
IV. Manual del usuario Capítulo 2. Programación de la UTA
ARRANQUE 1
MAÑANA
PARADA 1
ARRANQUE 2
TARDE
PARADA 2
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.
136
MEMORIA
IV. Manual del usuario Capítulo 2. Programación de la UTA
2. Pulse flecha arriba o abajo hasta llegar al día que desee programar.
4. Pulse arriba o abajo hasta que parpadee el símbolo del apartado anterior
que desee programar.
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.
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
2. Pulse flecha arriba o abajo hasta que llegue al día cuya programación
horaria del día anterior se desee copiar.
NOTA: Si desea programar el siguiente día con los mismos parámetros, pulse
flecha arriba y COPY, y así sucesivamente.
138
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
ese arranque, parada o reducción.
4. Pulse flecha arriba o abajo hasta que parpadee el símbolo que desea
anular.
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.
140
MEMORIA
IV. Manual del usuario Capítulo 2. Programación de la UTA
2. Standby
141
MEMORIA
IV. Manual del usuario Capítulo 3. Manejo de la UTA
Capítulo 3
142
MEMORIA
IV. Manual del usuario Capítulo 3. Manejo de la UTA
143
MEMORIA
IV. Manual del usuario Capítulo 3. Manejo de la UTA
144
MEMORIA
IV. Manual del usuario Capítulo 3. Manejo de la UTA
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
ATENCIÓN
1. Introducción
2. Consideraciones generales
147
MEMORIA
V. Manual del instalador Capítulo 1. Preparación
3. Alimentación eléctrica
CUIDADO
148
MEMORIA
V. Manual del instalador Capítulo 1. Preparación
149
MEMORIA
V. Manual del instalador Capítulo 2. Instalación
Capítulo 2
Instalación
Capítulo 2 Instalación 2. çDaigu
150
MEMORIA
V. Manual del instalador Capítulo 2. Instalación
CUIDADO
ATENCIÓN
151
MEMORIA
V. Manual del instalador Capítulo 2. Instalación
NOTA
3. Montaje
2. Haga ambos taladros utilizando una broca de 3mm y aloje en ellos los 2
tacos incluidos en el embalaje del termostato.
152
MEMORIA
V. Manual del instalador Capítulo 2. Instalación
CUIDADO
4. Conexionado eléctrico
ATENCIÓN
153
MEMORIA
V. Manual del instalador Capítulo 2. Instalación
5. Comprobación de funcionamiento.
154
MEMORIA
V. Manual del instalador Capítulo 2. Instalación
6. Fin de la instalación
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
1. Código fuente
158
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
HEADER 'CLIMATIZADOR'
PAGELENGTH 3B
; CONTROL CLIMATIZADOR
;REGISTROS MICROPROCESADOR
ORG $60
FLAGS1: DS 1
FLAGS2: DS 1
FLAGS3: DS 1
FLAGS4: DS 1
; 00000001 - VENTILACION
; 00000010 - FRIO
; 00000100 - CALOR
; 00001000 - AUTO
CONSIG: DS 2 ;CONSIGNA
;BITS 1 Y 2:
; 2 1
; 0 0 - NO PETICION
; 0 1 - FRIO
; 1 0 - CALOR
;BIT6: VENTILADOR
RELE: DS 1
;BIT6: MARCHA/PARO(VENTILADOR)
OUT: DS 1
OUTA: DS 1
ANM: DS 2
ANMR: DS 2
ANMI: DS 2
ANAUX: DS 2
;0 - ANALOGICO 2 TUBOS
;1 - ANALOGICO 4 TUBOS
;2 - RELES 2 TUBOS
;3 - RELES 4 TUBOS
MSEG: DS 1
DSEG: DS 1
HISTEP: DS 1 ;HISTERESIS
TLIMF: DS 2 ;MIN.TEMP.IMPUL.FRIO
DIFET: DS 1
VCOMP: DS 4
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
MIN: DS 1
HORA: DS 1
DIA: DS 1 ;DIA
PER: DS 1 ;PERIODO
;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
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
VTEST: DS 1 MANDOF: DS 1
TSAT: DS 1 TRY: 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
BNE MPRGD1
MOV #AGHORA,POSM
LDA #0 LDX #0
NPTCOP: BRSET 4,PTD,NPTCLK ;PULS CLK? PTVENT: LDX #$40 ;PULS ON/OFF
LDA FLAGS3
LDHX #0 SUB #5
AND #$18
ADC #0 ADC #0
LDA CONSP+1
STA VEL
184
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
LDA TIMP+1
186
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
LDA #0 LDA #0
TXA TXA
PSHA PSHA
PULH PULH
TAX TAX
PULA PULA
DIV DIV
PSHA
LDA #5 TAX
PSHA LSR OI
LDA TI INC OI
190
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
ADD OI ADD #1
MUL PULH
TXA TAX
MUL PULA
MUL PSHH
TXA LDHX #0
PULH DIV
RTS RTS
BCLR 4,LCDDAT+4
BRA YADDIA
197
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
198
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
202
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
RTS LDA #0
RTS RTS
MWDMED: JSR DELB ;PULS ABAJO STA FLAGS1;CAMB FLAG BLOQ CONS
205
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
ADD DATO
206
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
FAJCLK: BCLR 3,FLAGS2 ;FIN AJUST RELOJ BRCLR 5,PTD,PUPPR1 ;PULS ARRIBA
ADD #1
TXS RTS
RTS ASLA
ASLA RTS
INCX INCX
217
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
PULA RTS
STA ZM LDA #0
LDA DIRDAT
223
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
ASLA LDA #0
STA SCDR ;TRANSM DIREC DATO BCLR 2,PTB ;QUIT ENABLE TRANSM
INCX RTS
RTS RTS
SBC #0 RTS
231
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
PULX PSHX
PSHA PULX
RTS NOP
RTS NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP LDX #0
NOP PULX
NOP RTS
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
NOP NOP
RTS NOP
237
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
CMP #8 SBC #0
SUB #8 DECX
ADC #0 AND #3
238
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
CMP #8 SBC #0
BNE NGHORA
241
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
243
MEMORIA
VI. Código fuente Capítulo 1. Código de la tarjeta TX98
RTI
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
MOV #$FF,DDRC
MOV #$FF,DDRD
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
DATAD1: DB $AF,$A0,$6D,$E9,$E2,$CB,$CF
DB $A1,$EF,$EB,$E7,$E,$E6
DATAD2: DB $AF,$A0,$CB,$E9,$E4,$6D,$6F
DB $A8,$EF,$ED,$40,$E3,$42,3
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
1. Código fuente
251
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
;MICROPROCESADOR PIC16F877A
#INCLUDE <P16F877A.INC>
.UDATA
;*********************************VARIABLES*********************************
;**********************************BANK 0***********************************
ORG 0x20
TREC: RES 1 ;TIEMPO DE RECEPCION PARA LOS BITS DEL DATO RECIBIDO
DAOUTA: RES 1 ;SAL POR CONV DIG-ANALOG CANAL A:DATO CALC PARA EL SISTEM D F-C
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
;**********************************BANK 1***********************************
ORG 0xA0
POS1: RES 2
POS2: RES 2
VAL1: RES 2
VAL2: RES 2
MULAUX: RES 3
253
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
;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
;**********************************CODIGO***********************************
.CODE
ORG 0
GOTO START
ORG 4
GOTO INTER
ORG 5
;***********************************PAGE 0**********************************
CLRF STATUS
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
MOVF PCLAX2,0
MOVWF PCLATH
BSF STATUS,5
BTFSS FFUNC,0
MOVWF INTCON
BSF PIE1,1
CLRF STATUS
AUTT1: CLRWDT
SUBWF NAD,0
BTFSS STATUS,0
GOTO AUTT1
CLRF INTCON
MOVF PCLATH,0
MOVWF PCLAX2
BSF PCLATH,3
BSF PCLATH,4
MOVF PCLAX2,0
MOVWF PCLATH
FINAUT: CLRWDT
GOTO FINAUT
255
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
CLRF STATUS
;COMIENZO PROGRAMA
COMZO: CLRWDT
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
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
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
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
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
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
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
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**************************
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
BTFSS PORTB,0
GOTO SENFS1
MOVLW 0xFF
;SEÑAL DIGITAL-2
;SEÑAL DIGITAL-3
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
MOVF MDCALD,1
BTFSS STATUS,2
GOTO SCD1
CLRF DAOUTA ;SAL AL SISTEM DE F-C SIN POT D MIN APERTURA -> SAL=0
CLRF DAOUTB
GOTO DARSAL
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
GOTO DARSAL
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
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
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
HSALR: CLRWDT
CALL RFINCA
CALL GETCOM
GOTO COMZO
CLRF STATUS
BTFSS PORTD,1
SUBWF DAOUTA,0
BTFSS STATUS,0
GOTO ACTK2
RETURN
RETURN
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
CLRF STATUS
BTFSC PORTC,7
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
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
MOVF TSEG,1
BTFSS STATUS,2
GOTO DATST2
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+1
CLRF DATOR+2
CLRF DATOR+3
CLRF DATOR+4
CLRF DATOR+5
MOVWF MEDM
MOVF DEL,1
BTFSS STATUS,2
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,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
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
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
GOTO SDATR
BCF DATOR+5,0
265
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
GOTO ROTIZ
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)
BTFSS DATOR+5,1
BTFSS DATOR,0
BTFSC DATOR,1
BSF STATUS,5
BCF STATUS,5
CALL ROTDAT
CALL ROTDAT
MOVF DATOR+5,0
BSF STATUS,5
266
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BCF STATUS,5
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
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 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
MOVLW 0x2D
SUBWF VAL2+1,0
BTFSC STATUS,0
SUBWF VAL1,0
BTFSC STATUS,0
MOVF VAL1,1
BTFSC STATUS,2
GOTO CONTD
MOVLW 0xF5
SUBWF VAL1+1,0
BTFSC STATUS,0
BTFSC POS1,5
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
MOVLW 0x3C
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
RRF MEDRET,1
RRF MEDRET+1,1
RRF CONSIG,1
RRF CONSIG+1,1
ANDWF MANDO,0
MOVWF NETAP
BCF STATUS,0
RRF NETAP,1
RRF NETAP,1
RRF NETAP,1
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 DAOUTD
GOTO CALNM
RRF DATOR+1,1
RRF DATOR+2,1
RRF DATOR+3,1
RRF DATOR+4,1
RRF DATOR+5,1
RETURN
BTFSC MANDO,0
MOVF NETAP,1
BTFSC STATUS,2
CLRF STATUS
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
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
BTFSC FFUNC,2 ;COMPROBAR SI CONFIGU CON POT D MIN APERTURA Y VER CAL AIRE
MOVF MDCALD,1
BTFSS STATUS,2
GOTO SCD2
CLRF DAOUTA ;SAL AL SISTEM D F-C SIN POT D MIN APERTURA -> SALIDA=0
CLRF DAOUTB
GOTO ENVCON
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
GOTO ENVCON
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)
CLRF STATUS
RETURN
CONDAT: CLRWDT
CLRF STATUS
BTFSS STATUS,2
GOTO COND1
BSF STATUS,5
GOTO COND2
BCF DATOR+4,1
BSF DATOR+4,0
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
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
CALL ROTCON
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
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
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
RLF DATOR+3,1
RLF DATOR+2,1
RLF DATOR+1,1
RLF DATOR,1
RETURN
ENVDAT: CLRWDT
GOTO SDATL
GOTO SDATM
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
NENVX: CLRWDT
MOVF TSEG,1
BTFSS STATUS,2
GOTO NENVX
MOVWF TSEG
SDATED: CLRWDT
MOVF TSEG,1
BTFSS STATUS,2
GOTO SDATED
RETURN
;*****************************************************************************
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
SWAPF STATUS,0
CLRF STATUS
MOVWF STAUX
SWAPF PCLATH,0
MOVWF PCLAX1
CLRF PCLATH
BTFSC PIR1,1
MOVWF PCLATH
SWAPF STAUX,0 ;RECUPERO WORK REG (WREG), STATUS REG (STATUS) Y PCLATH
MOVWF STATUS
SWAPF WAUX,1
SWAPF WAUX,0
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
INCF TIME,1
MOVLW 0x64
SUBWF TIME,0
BTFSS STATUS,0
GOTO FINTER
BSF STATUS,5
CLRF STATUS
INCF TIME+1,1
MOVLW 4
SUBWF TIME+1,0
BTFSS STATUS,0
GOTO FINTER
BSF STATUS,5
BTFSC FFUNC,0
BCF STATUS,5
BTFSS PORTD,2 ;EN FUNCIONA NORMAL - PARPADEO LED RUN CADA 200 MSEG
GOTO LEDR
BCF PORTD,2
GOTO T1SEG
278
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
MOVLW 5
SUBWF TIME+2,0
BTFSS STATUS,0
GOTO FINTER
BTFSS STATUS,2
DECF TDA,1
BTFSS STATUS,2
DECF TNCOM,1
GOTO FINTER
GOTO QCAN2
BTFSC ADCON0,4
GOTO QCAN1
BTFSC ADCON0,3
GOTO QCAN3
BTFSC ADCON0,3
279
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
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
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC1
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
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
MOVWF MDAUX
MOVLW 8
ADDWF MDAN0+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
GOTO C0IG1
SUBWF MDAN0+1,0
281
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BTFSC STATUS,0
GOTO C0SM1
BTFSS STATUS,2
GOTO C0RM2
MOVLW 8
SUBWF MDAN0+1,0
BTFSS STATUS,0
GOTO PONC1
MOVWF MDAUX
MOVLW 8
SUBWF MDAN0+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C0IG2
SUBWF MDAN0,0
BTFSS STATUS,2
GOTO C0IG3
MOVF MDAUX+1,0
SUBWF MDAN0+1,0
BTFSS STATUS,2
GOTO C0IG4
GOTO PONC1
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
SUBWF MDAN0+1,0
BTFSS STATUS,0
GOTO PONC1
MOVWF MDAN0
MOVF MDAUX+1,0
MOVWF MDAN0+1
GOTO PONC1
SUBWF MDAN0,0
BTFSS STATUS,2
GOTO C0IG5
MOVF MDAUX+1,0
SUBWF MDAN0+1,0
BTFSS STATUS,2
GOTO C0IG6
GOTO PONC1
SUBWF MDAN0,0
BTFSS STATUS,0
GOTO C0VL1
GOTO PONC1
SUBWF MDAN0+1,0
BTFSS STATUS,0
GOTO C0VL1
283
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BCF ADCON0,4
BCF ADCON0,5
GOTO RETAD
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
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC2
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
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
MOVWF MDAUX
MOVLW 8
ADDWF MDAN1+3,0
MOVWF MDAUX+1
BTFSC STATUS,0
INCF MDAUX,1
GOTO C1IG1
285
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN1+1,0
BTFSC STATUS,0
GOTO C1SM1
BTFSS STATUS,2
GOTO C1RM2
MOVLW 8
SUBWF MDAN1+1,0
BTFSS STATUS,0
GOTO PONC2
MOVWF MDAUX
MOVLW 8
SUBWF MDAN1+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C1IG2
SUBWF MDAN1,0
BTFSS STATUS,2
GOTO C1IG3
MOVF MDAUX+1,0
SUBWF MDAN1+1,0
BTFSS STATUS,2
GOTO C1IG4
GOTO PONC2
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
SUBWF MDAN1+1,0
BTFSS STATUS,0
GOTO PONC2
MOVWF MDAN1
MOVF MDAUX+1,0
MOVWF MDAN1+1
GOTO PONC2
SUBWF MDAN1,0
BTFSS STATUS,2
GOTO C1IG5
MOVF MDAUX+1,0
SUBWF MDAN1+1,0
BTFSS STATUS,2
GOTO C1IG6
GOTO PONC2
SUBWF MDAN1,0
BTFSS STATUS,0
GOTO C1VL1
GOTO PONC2
SUBWF MDAN1+1,0
BTFSS STATUS,0
287
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
GOTO C1VL1
BSF ADCON0,4
BCF ADCON0,5
GOTO RETAD
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
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC3
288
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2NIG1
MOVF MDAN2+3,0
SUBWF MDAN2+1,0
BTFSS STATUS,2
GOTO C2NIG2
GOTO PONC3
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
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
SUBWF MDAN2+1,0
BTFSC STATUS,0
GOTO C2SM1
BTFSS STATUS,2
GOTO C2RM2
MOVLW 8
SUBWF MDAN2+1,0
BTFSS STATUS,0
GOTO PONC3
MOVWF MDAUX
MOVLW 8
SUBWF MDAN2+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C2IG2
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2IG3
MOVF MDAUX+1,0
SUBWF MDAN2+1,0
BTFSS STATUS,2
GOTO C2IG4
GOTO PONC3
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
SUBWF MDAN2+1,0
BTFSS STATUS,0
GOTO PONC3
MOVWF MDAN2
MOVF MDAUX+1,0
MOVWF MDAN2+1
GOTO PONC3
SUBWF MDAN2,0
BTFSS STATUS,2
GOTO C2IG5
MOVF MDAUX+1,0
SUBWF MDAN2+1,0
BTFSS STATUS,2
GOTO C2IG6
GOTO PONC3
SUBWF MDAN2,0
BTFSS STATUS,0
GOTO C2VL1
GOTO PONC3
SUBWF MDAN2+1,0
291
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO C2VL1
BSF ADCON0,4
BCF ADCON0,5
GOTO RETAD
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
SUBWF NAD,0
BTFSS STATUS,0
292
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
GOTO PONC4
SUBWF MDAN3,0
BTFSS STATUS,2
GOTO C3NIG1
MOVF MDAN3+3,0
SUBWF MDAN3+1,0
BTFSS STATUS,2
GOTO C3NIG2
GOTO PONC4
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
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
SUBWF MDAN3+1,0
BTFSC STATUS,0
GOTO C3SM1
BTFSS STATUS,2
GOTO C3RM2
MOVLW 8
SUBWF MDAN3+1,0
BTFSS STATUS,0
GOTO PONC4
MOVWF MDAUX
MOVLW 8
SUBWF MDAN3+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C3IG2
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
SUBWF MDAN3,0
BTFSS STATUS,0
GOTO PONC4
GOTO C3VL1
SUBWF MDAN3+1,0
BTFSS STATUS,0
GOTO PONC4
MOVWF MDAN3
MOVF MDAUX+1,0
MOVWF MDAN3+1
GOTO PONC4
SUBWF MDAN3,0
BTFSS STATUS,2
GOTO C3IG5
MOVF MDAUX+1,0
SUBWF MDAN3+1,0
BTFSS STATUS,2
GOTO C3IG6
GOTO PONC4
SUBWF MDAN3,0
BTFSS STATUS,0
GOTO C3VL1
GOTO PONC4
295
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN3+1,0
BTFSS STATUS,0
GOTO C3VL1
BCF ADCON0,4
BSF ADCON0,5
GOTO RETAD
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
SUBWF NAD,0
296
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO PONC5
SUBWF MDAN4,0
BTFSS STATUS,2
SUBWF MDAN4+1,0
BTFSS STATUS,2
GOTO C4NIG2
GOTO PONC5
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
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
SUBWF MDAN4+1,0
BTFSC STATUS,0
GOTO C4SM1
BTFSS STATUS,2
GOTO C4RM2
MOVLW 8
SUBWF MDAN4+1,0
BTFSS STATUS,0
GOTO PONC5
MOVWF MDAUX
MOVLW 8
SUBWF MDAN4+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C4IG2
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
SUBWF MDAN4,0
BTFSS STATUS,0
GOTO PONC5
GOTO C4VL1
SUBWF MDAN4+1,0
BTFSS STATUS,0
GOTO PONC5
MOVWF MDAN4
MOVF MDAUX+1,0
MOVWF MDAN4+1
GOTO PONC5
SUBWF MDAN4,0
BTFSS STATUS,2
GOTO C4IG5
MOVF MDAUX+1,0
SUBWF MDAN4+1,0
BTFSS STATUS,2
GOTO C4IG6
GOTO PONC5
SUBWF MDAN4,0
BTFSS STATUS,0
GOTO C4VL1
GOTO PONC5
299
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
SUBWF MDAN4+1,0
BTFSS STATUS,0
GOTO C4VL1
BCF ADCON0,4
BSF ADCON0,5
GOTO RETAD
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
SUBWF NAD,0
300
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BTFSS STATUS,0
GOTO PONC6
SUBWF MDAN5,0
BTFSS STATUS,2
GOTO C5NIG1
MOVF MDAN5+3,0
SUBWF MDAN5+1,0
BTFSS STATUS,2
GOTO C5NIG2
GOTO PONC6
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
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
SUBWF MDAN5+1,0
BTFSC STATUS,0
GOTO C5SM1
BTFSS STATUS,2
GOTO C5RM2
MOVLW 8
SUBWF MDAN5+1,0
BTFSS STATUS,0
GOTO PONC6
MOVWF MDAUX
MOVLW 8
SUBWF MDAN5+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C5IG2
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
SUBWF MDAN5,0
BTFSS STATUS,0
GOTO PONC6
GOTO C5VL1
SUBWF MDAN5+1,0
BTFSS STATUS,0
GOTO PONC6
MOVWF MDAN5
MOVF MDAUX+1,0
MOVWF MDAN5+1
GOTO PONC6
SUBWF MDAN5,0
BTFSS STATUS,2
GOTO C5IG5
MOVF MDAUX+1,0
SUBWF MDAN5+1,0
BTFSS STATUS,2
GOTO C5IG6
GOTO PONC6
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
SUBWF MDAN5+1,0
BTFSS STATUS,0
GOTO C5VL1
BSF ADCON0,4
BSF ADCON0,5
GOTO RETAD
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
304
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
SUBWF NAD,0
BTFSS STATUS,0
GOTO PONC7
SUBWF MDAN6,0
BTFSS STATUS,2
GOTO C6NIG1
MOVF MDAN6+3,0
SUBWF MDAN6+1,0
BTFSS STATUS,2
GOTO C6NIG2
GOTO PONC7
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
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
SUBWF MDAN6+1,0
BTFSC STATUS,0
GOTO C6SM1
BTFSS STATUS,2
GOTO C6RM2
MOVLW 8
SUBWF MDAN6+1,0
BTFSS STATUS,0
GOTO PONC7
MOVWF MDAUX
MOVLW 8
SUBWF MDAN6+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C6IG2
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
SUBWF MDAN6,0
BTFSS STATUS,0
GOTO PONC7
GOTO C6VL1
SUBWF MDAN6+1,0
BTFSS STATUS,0
GOTO PONC7
MOVWF MDAN6
MOVF MDAUX+1,0
MOVWF MDAN6+1
GOTO PONC7
SUBWF MDAN6,0
BTFSS STATUS,2
GOTO C6IG5
MOVF MDAUX+1,0
SUBWF MDAN6+1,0
BTFSS STATUS,2
GOTO C6IG6
GOTO PONC7
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
SUBWF MDAN6+1,0
BTFSS STATUS,0
GOTO C6VL1
BSF ADCON0,4
BSF ADCON0,5
GOTO RETAD
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
SUBWF NAD,0
BTFSS STATUS,0
GOTO INNAD
SUBWF MDAN7,0
BTFSS STATUS,2
GOTO C7NIG1
MOVF MDAN7+3,0
SUBWF MDAN7+1,0
BTFSS STATUS,2
GOTO C7NIG2
GOTO PONC0
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
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
SUBWF MDAN7+1,0
BTFSC STATUS,0
GOTO C7SM1
BTFSS STATUS,2
GOTO C7RM2
MOVLW 8
SUBWF MDAN7+1,0
BTFSS STATUS,0
GOTO PONC0
MOVWF MDAUX
MOVLW 8
SUBWF MDAN7+3,0
MOVWF MDAUX+1
BTFSS STATUS,0
DECF MDAUX,1
GOTO C7IG2
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
SUBWF MDAN7,0
BTFSS STATUS,0
GOTO PONC0
GOTO C7VL1
SUBWF MDAN7+1,0
BTFSS STATUS,0
GOTO PONC0
MOVWF MDAN7
MOVF MDAUX+1,0
MOVWF MDAN7+1
GOTO PONC0
SUBWF MDAN7,0
BTFSS STATUS,2
GOTO C7IG5
MOVF MDAUX+1,0
SUBWF MDAN7+1,0
BTFSS STATUS,2
GOTO C7IG6
GOTO PONC0
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
SUBWF MDAN7+1,0
BTFSS STATUS,0
GOTO C7VL1
GOTO PONC0
BCF ADCON0,4
BCF ADCON0,5
BSF STATUS,5
GOTO FINTER
ORG 0x800
;INICIALIZACION MICROPROCESADOR
INICIA: CLRWDT
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
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
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
MOVWF TDA ;ENVIA 1º DATOS AL CONV DSPUES DE 10 SEG DSDE EL INI DL FUNCIONA
BSF STATUS,5
CLRF FFUNC
CLRF STATUS
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
BTFSC PORTD,4
GOTO CONF1
BSF FFUNC,0
CLRF STATUS
BTFSS PORTD,5
GOTO CONF4
CALL DELDAF
BTFSS PORTD,5
GOTO CONF3
BTFSC PORTD,5
GOTO CONF3
BSF FFUNC,1
CLRF STATUS
BTFSS PORTD,6
GOTO CONF6
CALL DELDAF
BTFSS PORTD,6
GOTO CONF5
BTFSC PORTD,6
315
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
GOTO CONF5
BSF FFUNC,2
CONF7: CLRWDT
BTFSS PORTD,7
GOTO CONF8
CALL DELDAF
BTFSS PORTD,7
GOTO CONF7
BTFSC PORTD,7
GOTO CONF7
BSF FFUNC,3
RETURN
CLRF MEDM+1
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
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
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL1
INCF POS1+1,1
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL1+1
INCF POS1+1,1
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAE
MOVWF VAL2
INCF POS1+1,1
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
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
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
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
BCF STATUS,5
BSF STATUS,5
MOVF VAL2+1,0
BCF STATUS,5
MOVWF MEDEXT+1
RETURN
THUMI: CLRWDT
CLRF MEDM+1
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
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
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1
INCF POS1+1,1
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1+1
INCF POS1+1,1
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
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
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
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
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
MOVF VAL1+1,0
MOVWF MDHUMI+1
CLRF STATUS
RETURN
THUME: CLRWDT
CLRF MEDM+1
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
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
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1
INCF POS1+1,1
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL1+1
INCF POS1+1,1
MOVWF PCLATH
MOVF POS1+1,0
CALL TABLAH
MOVWF VAL2
INCF POS1+1,1
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
BCF STATUS,5
SUBWF MEDM+1,0
BSF STATUS,5
MOVWF POS1+1
MOVF VAL1+1,0
SUBWF VAL2+1,0
MOVWF POS2+1
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
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
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
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
MOVWF PCLATH
MOVF MEDM+1,0
CALL TABLAC
BSF STATUS,5
MOVWF MDCALD
CLRF STATUS
RETURN
MOVLW 0xFF
MOVWF MDCALD
CLRF STATUS
RETURN
332
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
CLRF MEDM+1
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
BSF STATUS,5
MOVWF MDPRES
BCF STATUS,5
MOVF MEDM+1,0
BSF STATUS,5
MOVWF MDPRES+1
CLRF STATUS
RETURN
CLRF MEDM+1
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
RRF MEDM,1
RRF MEDM+1,1
BCF STATUS,0
RRF MEDM,1
RRF MEDM+1,1
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
MOVLW 0xFF
MOVWF MPMINA
CLRF STATUS
RETURN
CENTAL: CLRWDT
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
MOVF MDHUMI,0
MOVWF POS2
MOVWF POS2+1
MOVF MEDM,0
BSF STATUS,5
MOVWF ENTINT
MOVF MEDEXT,0
BSF STATUS,5
MOVWF POS1
BCF STATUS,5
MOVF MEDEXT+1,0
BSF STATUS,5
MOVF MDHUME,0
MOVWF POS2
MOVF MDHUME+1,0 ;MEDIDA HUMEDAD AIRE EXT MULTIPLICADA X10 (EN POS2)
MOVWF POS2+1
MOVF MEDM,0
BSF STATUS,5
336
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
MOVWF ENTEXT
RETURN
CLRF STATUS
BSF STATUS,5
MOVLW 3
SUBWF POS1,0
BCF STATUS,5
BTFSC STATUS,2
MOVF DEL,0
CALL TABCF1
BSF STATUS,5
MOVWF VAL1+1
CLRF VAL1
CLRF STATUS
RLF DEL,1
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
MOVWF PCLATH
INCF DEL,0
CALL TABCF2
BSF STATUS,5
MOVWF VAL2+1
CLRF STATUS
RRF DEL,1
BSF STATUS,5
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
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
MOVF VAL2,0
SUBWF RESMUL+1,1
BTFSS STATUS,2
GOTO QRES1
MOVF VAL2+1,0
SUBWF RESMUL+2,1
BTFSC STATUS,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
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
SUBWF POS2,0
BTFSS STATUS,2
GOTO QHUMR
MOVF VAL2+1,0
SUBWF POS2+1,0
BTFSC STATUS,2
GOTO FINENT
ADDWF DEL,0
MOVWF MEDM
RETURN
MOVLW 0x3C
SUBWF DEL,0
BTFSC STATUS,0
GOTO NOINC
INCF DEL,1
GOTO CENT2
MOVWF MEDM
RETURN
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
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
SEGMV: CLRWDT
BSF STATUS,5
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
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
BTFSS FCOM,0
GOTO QS2X
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
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
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
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
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
GOTO QS6X
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
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
SUBWF NETAP,0
BTFSC STATUS,0
GOTO ERRFUN
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
BTFSC STATUS,2
GOTO QS9
MOVLW 0xFF
SUBWF FC,0
BTFSS STATUS,2
GOTO ERRFUN
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
SUBWF TNCOM,0
BTFSC STATUS,0
GOTO ERRFUN
BTFSC STATUS,2
GOTO QS10
MOVLW 0xFF
SUBWF FILSUC,0
BTFSS STATUS,2
GOTO ERRFUN
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
FCTEM: CLRWDT
CLRF STATUS
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
MOVF FC,1
BCF STATUS,5
BTFSC STATUS,2
GOTO QFCL1
SUBWF DEL,1
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
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
SUBWF DEL,1
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
BTFSC FFUNC,2 ;COMPROBAR SI CONFIG CN POT DE MIN APERTUR Y VER CALIDA AIRE
MOVF MDCALD,1
BTFSS STATUS,2
GOTO SCD3
CLRF DAOUTA ;SALIDA AL SISTEMA DE F-C SIN POT DE MIN APERTURA -> SAL=0
CLRF DAOUTB
GOTO FNFC
BCF STATUS,5
MOVWF DAOUTA
MOVWF DAOUTB
GOTO FNFC
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
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
MOVLW 1
SUBWF NETAP,0
BTFSC STATUS,2
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
MOVWF DAOUTB
BSF STATUS,5
BCF MANDO,3
351
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
CLRF STATUS
RETURN
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
MOVF PCLAX3,0
MOVWF PCLATH
MOVF RESMUL+2,0
MOVWF VAL1
BTFSS FFUNC,2
SUBWF MDCALD,0
BTFSS STATUS,0
GOTO REGC2
SUBWF VAL1,0
BTFSS STATUS,0
352
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
GOTO REGC3
BCF STATUS,5
GOTO FREG
BCF STATUS,5
GOTO FREG
SUBWF VAL1,0
BTFSC STATUS,0
GOTO REGC4
MOVF MPMINA,0
BCF STATUS,5
GOTO FREG
CFC2: CLRWDT
CLRF STATUS
MOVWF DAOUTA
MOVWF DAOUTB
CALL CRM2E
CLRF STATUS
RETURN
MOVLW 2
SUBWF NETAP,0
BTFSS STATUS,2
GOTO RM3
353
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
BSF MANDO,3
RETURN
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 CLKDAC
CALL CLKDAC
MOVWF DATODA
CALL CLKDAC
BSF PORTC,1
CALL CLKDAC
MOVWF DATODA
354
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
CALL CLKDAC
BCF PORTC,1
CALL CLKDAC
MOVWF DATODA
CALL CLKDAC
CALL CLKDAC
MOVWF DATODA
RETURN
MOVWF DEL
PROGDA: CLRWDT
RLF DATODA,1
BTFSS STATUS,0
GOTO DAT0
BSF PORTC,1
GOTO PONCLK
355
MEMORIA
VI. Código fuente Capítulo 2. Código de la tarjeta SA98
DECFSZ DEL,1
GOTO PROGDA
RETURN
CALL DELDAC
BCF PORTC,0
RETURN
CALL DELDAC
BSF PORTC,0
CALL DELDAC
BSF PORTC,1
CALL DELDAC
CALL DELDAC
CALL DELDAC
BSF PORTC,2
CALL DELDAC
RETURN
BSF PORTC,0
CALL DELDAC
BCF PORTC,0
CALL DELDAC
RETURN
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
NOP
NOP
NOP
NOP
NOP
RETURN
ORG 0x1000
MULT: CLRWDT
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
GOTO MUL2
CALL INIDAT
CALL BUCR0
GOTO MUL3
CALL INIDAT
CALL BUCR1
GOTO MUL4
CALL INIDAT
CALL BUCR2
GOTO MUL5
CALL INIDAT
CALL BUCR3
GOTO MUL6
CALL INIDAT
CALL BUCR4
GOTO MUL7
CALL INIDAT
CALL BUCR5
GOTO MUL8
CALL INIDAT
CALL BUCR6
GOTO MUL9
358
MEMORIA
III. Código Fuente Capítulo 2. Modelado
CALL INIDAT
CALL BUCR7
RETURN
CALL INIDAT
CALL BUCR8
RETURN
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
RLF MULAUX+2,1
RLF MULAUX+1,1
359
MEMORIA
III. Código Fuente Capítulo 2. Modelado
RLF MULAUX,1
RETURN
MOVWF MULAUX+2
MOVF MULT1,0
MOVWF MULAUX+1
CLRF MULAUX
RETURN
ORG 0x1800
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
ORG 0x1A00
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,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,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
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