CONTENIDO - Repositorio Digitalbibdigital.epn.edu.ec/bitstream/15000/10624/2/T11850pt.2.pdf ·...
Transcript of CONTENIDO - Repositorio Digitalbibdigital.epn.edu.ec/bitstream/15000/10624/2/T11850pt.2.pdf ·...
CONTENIDO
A) LISTADO DEL PROGRAMA
B) MANUAL DEL USUARIO
/•C
E.M.C.A.
Programa para control del Equipo de Monitoreo de Contaminación
del Aire por Escapes
E.M.C.A.
noviembre de 1999
Programa para raicrocontrolador DS2250T
Compilado con CYS8051
El sistema controla:
1.- 8 Entradas analógicas convertidas con ADC0808con rango completo de O a +5VDC
2.~ 1 display de una linea de 16 caracteres
3.- 1 Teclado de 16 teclas
4.- 1 Interface RS-232C
A C T U A L I Z A C I O N E S
ÁREA DE DEFINICIÓN DE EQUIVALENTES
datos__conv equ Pl
port dis equ PO
;Bus de datos para el conversor
;Bus de datos general de display
disp b7disp b6disp b5disp b4
enar wrs
out enastart
equequequequ
equequequ
equequ
P0.3P0.2PO.lPO. 0
P0.4P0.5PO. 6
TOP2.7
; Bus de datos display bit 7; Bus de datos display bit 6 .; Bus de datos display bit 5; Bus de datos display bit 4
; Control/Control/Control
; Habilita; Control
ENABLE displayREAD/VÍRITE displayRESET display
salidas del conversorde arranque del conversor
EMCA LISTADO DEL PROGRAMA
add_2add_ladd_0
end_of_con
teclas,tecla int
equ •equequ
equ
equequ
P2. 6:' P2.5•P2.4
INTO
P2INT1
;Dirección A2 del conversor;Dirección Al del conyersor;Dirección AO del conversor
;End of conversión del ADC0808
;Datos de teclado en bits P2 . O a P2.3
EQUIVALENTES.DEL TECLADO
unodostressube
cuatrocincoseisbaja
sieteochonueves2nd
clearcerohelpenter
,-
• • equ. equequ
equequequequ .
equequequequ
equequequ 'equ
OOH01H03H02H
04H05H
- 07H06H
08H09HOBHOAH
OCHODHOFHOEH
ÁREA DE DEFINICIÓN DE CONSTANTES
MCOMTAstacknum car
car ret equ
OC6HOC7H2FH
13
;Numero de caracteres que controla el;monitor del display
ÁREA DE LOCAL!ZACIOH DE RAM
r
r
dato análogodata disciendato tecla
convierteseg datmin dathora datdias datdiam datmese datanio dat
esperadato leidohay teclafuncióninicio d
dato monoldato mono2dato humeldato hurne2dato templdato ternp2
r. *****¿*****f
/. -*-*-*-********
equequ-equequ
equ-equeg1-1equequequequequ
equequequequequ
equ. equequequequequ
** ir -k *-k-k± ***•* )í
******-¿r*****^
40H41H42H43H
44H45H46H47H48H49H4AH4BH
4CH4DH4EH4FH50H
60H61H62H63H
• 64H65H
, 4. -¿U 4r 4- -fr •£ •£ •*
. -̂ 4. -£- -£• i- 4- -£• -*-
; Registro de almacenamiento de ultimo; dato del teclado
; dirección de registro de segundos; dirección de registro de minutos; dirección de registro de horas/dirección de registro de dia de la semana; dirección de registro de dia del mes; dirección de registro del mes; dirección de registro del aao
;Area de RAM para manejo de display;hasta 5FH
4-4-jr-L4-a.^-ír4;-lr-Jr-*.4--,t4-4r4--í-4-' +_jfj,+jrjt+,-jf+,+:-)f+.Jf+jf+:+. + +.J(.Jrj,$:jf
*****±* + + * + **± + *-}' + + -¡' + -k + -l-* + + -?'-i:-i:-k* + -k-¡c****-k-k-k +
; Dirección de inicio del programa con HARDWARE - RESET
org OH
h reset:
Ijmp inicio
Área de entrada de interrupciones generales
EMCA LISTADO DEL PROGRAMA
org 03HIjmp fin_conversion' ;Va a rutina de lectura del conversor
org 13HIjmp teclado
;Origen de interrupción del TECLADO;Va a rutina de atención al teclado
ORG 23HIjmp corn serial ;interrupción de comunicación serial
100H
movmovmovmov
movmov
SP,#stackTA, #OAAHTA, ÍÍ55HPCON,#0
mov MCON,#38H
mov IE,#0mov TMOD,#21Hmov TH1,#OF8HORL PCON,#88H
SCON,#50HTCON,#40H
SETB ESmov P2,#OFH
;Inicializa el SP con STACK(30);Inicializacion para acceso temporizado
;pone en reset todos los parámetros de;control;A1 final esta inicio de RAM externa en;1800H. Cuando inicializa el reloj;y registros especiales también inicializa;el DPTR;selecciona dirección de inicio de RAM en;1800H y 32 K total en el chip;No mas de 4096 en programa;Inicializa control de interrupciones;Inicializa la puerta serial; 24.00 BAUD;Pone en doble baud rate;NO PARITY;1 stop bit;Pone la puerta serial en modo O
;habilita la interrupción serial
Icall inicio_display
setb EA ;habilita las interrupciones;generales
dato_tecla, #0 ; Encera registro de teclado para;conversor
hay^tecla,tf'W
Icall titulos_inicioIcall del Iseg
- -1- -L. -J, -* -i, -i •¡r
EMCA LISTADO DEL PROGRAMA
prog prin:
Icall titülds_rutIcall del Iseg
rnov A, hay_teclacjne A, #'S',sigue_lIjmp ver teclas
sigue 1:
setb EX1•Icall \jIcallj.di-splaymov A> há.y_teclacjne A,# 'S ' ,s igue_2Ijmp ver teclas
sigue 2:
Icall del_lsegmov A, hay_teclac j ne A, #'S ' , sigue_3Ijmp ver teclas
sigue 3:
rnovrnovxcjneIjmp
' DPT.R, ̂registra. A,@DPTRA, #'F',ver_temperaturamedir temperatura
ver_temperatura:
cj ne A, # ' T '•, no_reg_temp
rnedir__temperatura:
mov dato tecla, fíceromov función,#'T'
Icall lee_solo
Icall valor_tempera
Icall solo_tem_dis
mov A, dato templ ;Trae valor de lectura de la
EMCA LISTADO DEL PROGRAMA
anlorímovmov
movswapanloríincrnovincmovmovanloríincmov
A>#QFH.A, #3. OHR0,#. (inicio d+8)@RO,A
A, dato_AA, #OFHA, #3 OHRO@ R O , ARO@ R O , # ' -r
A, datoA, #OFHA, #30H
• ' RO. @RO,A
temp2
i
ternp2
Icall .displayIcall del Iseg
;temperatura y lo pone en modo Ascii
;Ubica en el display el primer valor
mov DPTR, ^registramovx A, @DPTR
no_reg_ternp :
cjne A, ií.1 F T , ver_humedadIjrnp medir_humedad
ver_humedad :
cjne A, # ' H ' , no_reg_hum,
medir__huraedad :
mov dato tecla,. #unomov función, f ' H '
Icall lee_solo
Icall valor_humedad
Icall solohum dis
mov
anlj zorírnov.mov
no cerol:
A/dato_humelAA, í^OFH
nocero l
, # (inicio_d+8 )
EMCA LISTADO DEL PROGRAMA 6
mov A,.dato_humelanl A,#OFHorí A,#30Hmo v .RO,#(i nicip_d+3)rnov ,. @RO,Amov ' A, dato hume2swap Aanl A,#OFHorí A, #30Hinc ROmov @RO,Ainc ROmov . @RO,#' , 'mov A^dato hurne2anl A/'#OFH~orí A/Í30Hinc ROmov - :". , @.RO,A
Icall d'isplayIcall del Iseg
;Trae valor de lectura de humedad;Lo pone en modo Ascii
;Ubica en el display el segundo valor
mov DPTR,^registramovx A, @DPTR
no reg hiim:
cjne A, ff' F' , ver monoxidomedir monoxido
ver monoxido:c j ne A, ÍP M ' , no_reg_mon
medir monoxido:
mov dato_tecla,üdosmov f u n c i ó n , # ' M '
Icall lée_solo
Icall valor__mono
Icall solo^_mon_dis
mov A, dato__inonolsv/ap Aanl A, f í O F Horí A, i f30Hmov RO, ff (inicio_d+8 )rnov @ R O , Amov . ' A,dato^monolanl A, ffOFHorí . A, ¡Í30Hinc ROmov @RO,A
;Ubica en el display el primer valor
;Trae valor de lectura de monoxido;Lo pone en modo Ascii
EMCA LISTADO DEL PROGRAMA
mov A, dato mono2swap A, . .anl A, ffOFHorí ,A,#30Hinc ;~.RO-mov • ' @RO,Amov A, dato mono2anl A, f f O F Horí A, #3 OHinc ROraov @RO,A
Icall displayIcall del_lseg
Ijmp alterno 3
Icall 'no registro dis
sigue_4:
Icall intervalo dis
mov DPTR, ííinter_decmovx A,@DPTRmov B,A "mov RO, # (inicio_d-í-9)swap Aanl A.íf.OFH
EMCA LISTADO DEL PROGRAMA 8
s¿sr-;•'•;''¥-'-%;-!•.;^T^ '.^>>í-:
^^^• '̂te-^ l̂̂ ^^^ ,̂.̂ ,̂ . ¿^ - .-. . .%/v^^^r^'í^^^^^^v^b^'í-k-. "" ,-.';
orí A, #3OHmov @ROfAmov A,B 'mov R0,,.#-(±nicio_d+10)anl Ar#O.FHorí A,#3OHmov @RO,A
Icall display
mov A, hay_teclacj ne A, #' S ' , sigue_5Ijmp ver_teclas
sigue_5:
Icall:- del_lseg
mov A,hay teclacjne A,# 'S ' , s igue_6
Ijmp ver_teclas
sigue 6:
movrnovmovxxrlj zmovmovxmovmovxincmovxmovmovmovxxrlj nzIcallmovmovmovx
A, min_da t
B,-ADPT.R, ífultimo^regA, @DPTRA, Bno_ver__registro
A,min dat@DPTR,A
DPTR, íí.minutos_rAf @DPTRA@DPTR,A 'B,A '
DPTR,. ií intervaloA, @DPTR
A, Bno_yer_registro
. leer^entradasDPTR, }fminubos_rA, #OH
@DPTR,A
no_ver_registro :
Ijmp
;Verifica si el ultimo registro se realizo;en el mismo minuto actual
/Actualiza el ultimo registro
/Actualiza el contador de minutos
/Verifica si ya llego al valor del/intervalo para registrar las entradas
/Va a rutina de leer y grabar los/datos leídos/Encera el contador de minutos
EMCA LISTADO DEL PROGRAMA
ÁREA DE SUBRUTINAS
títulos inicio:
Icall epn_dispIcall displayIcall del_lseg
Icall titulo2Icall ' •' '-displayIcall del__ls'eg
Icall. .Icall ",\_ displayIcall- -"cÍe~l_JLseg
Icall titulo4Icall . displayIcall del__lseg
Icall tituloSIcall . displayIcall del__lseg
ret
;Muestra en display REGISTROS
titules rut:
Icall titulo6Icall displayIcall del_lseg
Icall titulo?Icall displayIcall del__lseg
Icall regis_dispIcall display
ret
- 4- 4- 4- 4- 4- 4- 4- 4-4-4-
Rutina para leer las entradas del con ver sor. Dependiendo queregistros -se hayan programado
leer entradas:
mov DPTR, iíregistrarnovx A, SDPTRcj ne A, $ ' T ' , no_mid_temp
EMCA LISTADO DEL PROGRAMA 1
rnovrnov
Icallret
dato_t,£cla, #cerof unción.,.fí 'T '
.lee guardar
no__mid temp:
Icallret
A, # ' H ' r no_mid_humedato tecla, #.unofunción,#'H'
lee guardar
no_mid hume:
cjnemov -movIcallret
A','$:£M' -f no_mid_monodatéfjtécla, íídos
:'flm.cion, ff ' M '.- lee .guardar
no_mid mono:
cjnemovmovIcallmovmovIcallmovmovIcall
rnovret
A, # ' F' f no__mid_nadadato_tecla, ffceirofuncio.n/ íí ' T '
lee_güardardato__tecla, ífunofunción, í f ' H '
lee guardardato ' tecla, íídosfunción,# 'M'
lee_guardar
función, í f ' F 1
no_mid_nada:ret
lee solo:
Icall leer_conver:sorret
1MGA LISTADO DEU PROGRAMA 11
lee_guardar:
Icall leerconversor
movmovxpushmovmovxmov
POPmov
movmovxmovincmovxmovincmovxmovincmovxmovincmovxmovincmovxmovincmovxincmovmovxmovpushmovmovmovxpopmovmovx
DPTR, #direcc_JLow .'A, 6DPTR ' /Actualiza la diiACCDPTR, íídirecc higA,@DPTRDPH,AACC
DPL,A ; para guardar el; temperatura, hu
A, función@DPTR,AA, anio datDPTR@DPTR,AA, mese datDPTR@DPTR,AA,diam datDPTR@DPTR,AA, hora datDPTR@DPTR,AA, min datDPTR@DPTR,AA, dato análogoDPTR@DPTR,ADPTRA, íí ' Z ' ;Este valor indi@DPTR,A^ ;del archivo deA,DPLACCA,DPHDPTR, ífdirecc hig /Actualiza los p@DPTR,AACCDPTR, #direcc low@DPTR,A
Rutina para verificar que no se exedan las grabaciones de ladirección 7 F;-:xh que es la máxima capacidad del controlador.Se dejan 255 bytes libres para efectos de seguridad
mov DPTR, #direcc_higmovx A,SDPTRcjne A,#7FH,no_lleno
Icall memoria fullIcall display
s jmp $
/Actualiza los pointers
EMCA LISTADO DEL PROGRAMA 12
no_lleno:
fret
Rutina para admnitir teclas de programación. Debe ingresar primerola clave <2ND>123<ENTER>
ver teclas:
mov- .hay_tecla , # ' M 'mov <<A, da'to_teclacjne "A, #s2nd, no__claveIcall del_5segmov A,hay teclacj ne A , # ' S ' , n o clave
mov hay__tecla, í f ' W 'mov A, dato teclacjne A, f íuno, no_claveIcall del_5segmov A, hay teclacjne A,# 'S ' ,no_clave
mov hay_fcecla ,$ 'H 'mov A, dato_teclacj ne A,#dos,no_claveIcall del_5segmov A,hay_teclacjne A,- í f ' S ' , no clave
mov hay_tecla, ff ' N 'rnov A^ dato teclacj ne A, #tres / no_claveIcall del_5segmov A,hay^teclacjne A, íf ' S';, no clave
mov .hay_ tec la , $ 'N'mov A,dato_teclacjne A, l íenbar , opcion_2
Ijmp clave correcta
LISTADO DEL PROGRAMA 13
opción 2:
cjne A, #help, no_claveIjmp prueba conversor
noclave:
prog prin
clave_correcta:
Icall opcion_l_dis
Icall displayIcall del_5seg
mov A, hay_teclac j ne A , # ' S ' , no_cla veIcall dato_numerocjne A, # 'N' ,s innúmero
Ijmp clave correcta
;Muestra en el display "Interva. ** rnin"
si_numero:
movmovanlswapmovxswaporímov
anlmovmuímovclrclr
RO, # (inicio_d-f9)DPTRA #inter_dec
A,§OFHA@DPTR,A
AA, ÍÍ30H@ R O , A
A, #OFH
ABR5,ACAC
Icall displayIcall . del_5seg
mov A,hay_teclacj ne A,f S',no_claveIcall dato_numerocjne A, #'W',si numerol
;Pone en display numero mas signi-;ficativo del intervalo;Prepara numero MSB para guardarlo;el digito MSB debe multiplicar por; 16 para transfórmalo en he>:
;Espera por el siguiente digito
Ijmp clave correcta
EMCA LISTADO DEL PROGRAMA
si numerol:
rnov RO, # (inicio_d+10;push ACCanl A,ttOFHmo v B, Arnov DPTR, #inter_decmovx A, @DPTRadd A, Bmovx @DPTR,Apop ACCraov @RO,A
anl A,#OFHadd A,R5mov DPTR, ̂intervalornov:-: @DPTR,A
;Dirección para guardar el dato del;intervalo en decimal
;Pone en display numero mas signi-ficativo del intervalo;Prepara numero LSB para guardarlo
;Guarda el valor hexadecimal del;intervalo
Icall display
Luego de guardar dato de intervalo debe pedir dato de magnitudesa registrar: 1 ==> Temperatura
2 ==> Humedad3 =~> Monoxido4 ==> Todas
magnitudes:
Icall'magnitudes_dis
Icall display
rnov hay^tecla, íí' M '
Icall del_Sseg
mov A,hay_teclacjne A/ií'S'^no magnitud
mov A, dato_teclacjne A, #uno, no_temp •
mov DPTR, ffregistramov A, íí'T1
movx @DPTR,A
Ijmp fin^magnitud
;Si se dígita la tecla 1 registra solo
;temperatura
EMGA LISTADO DiU PROGRAMA 15
no temp:
cj ne A, #dos , no_hume
raov DPTR, ífregistramov A, f f ' H 'movx @DPTR,A
Ijmp fin_magnitud
;Si se dígita la tecla 2 registra
;solo humedad
no hume:
cjne A, #tres,no monomov DPTR,#registramov A, #'M'movx @DPTR,AIjrnp fin__magnitud
Si se digita la tecla 3 registrasolo monoxido de carbono
no mono:
cjne
movmovmovx
A, #cuatro, no_magnitud
DPTR/ ííregistraA, f í ' F '
ODPTR/Afin magnitud
Si se digita la tecla A registrala temperatura, humedad y monoxido
no_magnitud:
Ijmp prog prin
f in_magnitud :
Ijmp prin
dato_nurnero:
mov A,dato tecla ;Rutina para transformar dato de teclado;en dato numérico y ademas eliminar datos;que no sean numéricos
mov B,Acjne A, #uno,ver alternol
mov A, #31HIjmp fin_dato
ver_alternol:
cjne A/ fídos, ver alterno2
EMCA LISTADO DEL PROGRAMA 16
mov A, f32HIjmp- fin dato
ver alt.erno2:
cjne ' . • A,#tres,ver_alterno3rnov A, #33HIjmp fin dato
ver alternos:
cjne A, jfcuatro, ver_alterno4mov A,#3.4H-Ijmp fin_dato
ver alterno4:
cj ne .'-A/, íftinco, ver__alterno5mov 'Ijmp ' fin_dato
ver_alterno5:
cjne A, ífseis, ver_alterno6mov A, #36HIjmp fin_dato
ver_alterno6: .
cjne A,#siete,ver_alterno7mov A, f37HIjrnp fin_dato
ver alterno?:
cjne A,#ocho,ver alternoSmov A,¿38HIjmp f'in_dato
ver alternoB:
cj ne A/#nueve/ ver_alterno9mov A, ÍÍ39HIjmp fin_dato
ver_alterno9:
cjne A, ffcero/no__numericomov A,f30H .Ijmp .fin_dato
no_numerico:
mov • A, íí ' N '
" f i n _ d a t o : . ' - ' ' .
ret
LISTADO DEL PROGRAMA 17
prueba_conversor:
Icall conversor_nro_dis
Icall displayIcall del_5seg
mov A, hay_teclacjne A,#'S',no_pruebaclr 'BX1 .mov R2,#;LO
lazo_prueba_con-:
Icall leer conversordjnz R2/lazo prueba con
;Va a rutina de lectura del conversor
no_prueba:
prog_prxn
Rutina para leer datos de entradas analógicas
leer conversor:
mov A, dato_teclacjne • A,#cero,entrada^unoclr add_0 ;Pone dirección de control delclr add^l ;conversor para escoger la entradaclr add__2 ; adecuada
mov convierte,&30HIjmp sigue_leer
entrada uno:
A, #uno, entrada_dosadd_0addl
cjnesetbclrclr _
mov convierte, #31HIjmp sigue_leer
entrada_dos :J
cjneclrsetbclr
A, íídos, entrada_tresadd_0add_ladd 2
LISTADO DEL PROGRAMA 18
¿- • ' - . - : - - -—-^ - - - . - •.•
ruov convierte/ ÍIjmp sigue leer
entrada tres :.
cjne •• • A, íftres, entrada cuatrosetb ' add_0setb _ • add_lclr add 2mov convierte,#33HIjmp sigue_leer
entrada cuatro:
A, ^cuatro/ entrada_cincocjneclrclr add_lsetb . ,add_j2mov . convierte, #34HIjmp s'^gue_leer
entradacinco:
A, íícinco, entrada__seisa d d 0
c^nesetbclrsetb add_2mov convierte/#35HIjmp sigue leer
entrada_seis:
cjneclrsetbsetb
A/ ffseis / entrada_sieteadd_0add_ladd .2
mov convierte/#36HIjmp sigue'leer
entrada siete:
falla:
cjne A/ íísiete/ fallasetb add_0setb add_^lsetb • add^_2mov convierte/ ÍÍ37HIjmp sigue__leer
Icall falla_dis
Icájll displayIcaíl del__lseg
ret
;Llama a rutina de retardo de 1 segundo
EMCA LISTADO DEL PROGRAKAA 19
sigue_leer:
Icall conversor_dis
mov RQ,#(inicio_d+7)
mov A,convierternov @RO,A
Icall display
;Muestra en dipslay letrero
;Pone en el display el numero;del canal de conversión escojido
Para estabilizar la lectura del conversor realiza dos lecturasdescarta la primera y deja la segunda como buena
setb start ;Arranca al conversor generando un pulsonopclr
setbclrjncclr
setbnopmovclr
start
EXOC$EXO
out ena
A, datos convout ena
*****************
/en el START/ ALE/Termina el pulso
/Habilita la interrupción de/conversión del conversor
fin de
/ Espera a que termine la conversión; Desabilita la interrupción
/ Habilita la salida de datos/Genera un pulso/Lee el valor del conversor/Termina el pulso
del conversor
Termina la primera lectura e inicia la segunda
setb startnopclr start
setb EXOclr Cj nc $clr EXO
setb out_enanop
mov A,datos convclr out enamov dato analogo/A
mov \ dato análogo
j z sigue_dosclr Cclr AC
clr A
/Termina el pulso•;Guarda el dato en registro
/Rutina para convertir valor hexadecirnal/en decimal de 3 digitos;Si el dato leido es O termina la rutina/Borra registros que inciden en la/conversión hexadecimal a bcd
EMGA LISTADO DEL PROGRAMA 20
cien,#0 ;Encera registro de almacenamiento de;mas de 100 unidades.
Como el valor máximo a leer en el conversor es de 5 voltios con unaresolución de 255 bits se deberá sumar 2 números decimales por cadabit del conversor
sumar uno:
add A,#2da A
j nc sigue_unoinc cien
clr Cclr AC
;La rutina debe sumar 2 al acumulador;hacer el ajuste decimal hasta que llegue;a 99 'si pasa de este valor debe aumentar;en 1 al registro de centenas
so.gue__uno :
djnz B, sumar_uno
sigue dos:
movmovanlorímov
mov A,Bswapmov
B,AR0,# (inicio_d-f!3;A, ÍÍOFHA,#3OH@RO,A
ARO,#(inicio_d+12)
anl A,#OFHorí A, #30H
mov @RO,Amov RO, (í (inicio_d-Ml)mov @RO,#','mov RO,#(inicio_d+10)
mov A,cienorí A, #30Hmov @RO,A
IcallIcall
ret
displaydel_lseg
fin_conversion:
setb C
j nb end of_con,reti
;Subrutina de atención a la interrupción;que genera el conversor cuando termina;la conversión y tiene los datos de la;ultima lectura listos oara enviar
EMCA LISTADO DEL PROGRAMA 21
teclado:
push ACCpush PSWraov A, P2anl
cjne
tecla 1:
mov data tecla,#ünoIjmp fin ; tecla
tecla 2:
cjne- . ' A, f f lH , tecla_3inov dato__tecla, #dosIjmp fin tecla
tecla 3:
cjne •A,#2H, tec la_4mov dato_tecla, {fsubeIjmp fin tecla
tecla 4:
cj ne A/ #3H, tecla__5mov datortéela,#tresIjmp fin tecla
tecla 5:
cjne A,-#4H, tecla_6mov dato tecla-, íícuatroIjmp fin_fcecla
tecla 6:
cjne- •Avíí.SH, tecla_7raov da'to__tecla, íícincoIjmp fin tecla
tecla 7:
cjne A, ÍÍ6H/ becla_8mov dato_técla, ífbajaIjmp fin tecla
tecla
cjne A, f f 7 H , tecla_9mov dato_tecla, ífseisIjrnp fin tecla
;Trae valor de la entrada de teclado;deja solo datos de teclado
EMCA LISTADO DEL PROGRAMA 22
tecla 9:
cjne • ". A, #8H,tecla_10mov ' dato_teclar#sieteIjmp fin tecla .
tecla 10:
cjne A, #9H, tecla_llrnov dato_tecla, #ochoIjmp fin tecla
tecla 11:
cjne Af ÍÍOAH, tecla_12mov .. dato tecla, #s2nd1 j mp ' 'f in_t ecl a
tecla 12:
cjne A, #OBH, tecla_13mov dato tecla,^nueveIjmp fin_tecla
tecla 13:
cjne . A, #OCH,tecla_14rnov dato__tecla^ pelearIjmp fin_tecla
tecla_14:
cjne A , - f f O D H , tecla_15mov dato^tecla,fceroIjmp fin_tecla
tecla_!5:
cjne A, #OEH,tecla_16mov dato tecla, ífenterIjmp fin_tecla
tecla_16:
mov dato_tecla/ ífhelpIjmp fin_tecla
fin_tecla:
jnb tecla int, $pop PSWpop ACC
mov R7,ffl•mov t hay_tecla, fí' S '
re ti
/Espera al fin de la interrupción
;Reduce el tiempo de espera al;al mínimo
EMCA LISTADO DEL PROGRAMA 23
; Rutina de inicializacion temporizada del displayr
inicio__display:
Icall del 20mili
mov port dis, #OHsetb enaorí port_dis, §3Hclr ena
Icall del_10mili
setb enaorí port_dis, #3Hclr ena
Icall del_700micro
setb enaorí port_dis,#3Hclr ena
Icall del VOOmicro
setbanl
clr ena
Icall del700micro
;Apaga todas las salidas
;Define 4 bits de interface
Icall del_700rnicro
mov data_dis,#28H
Icall saca_displayIcall clrDIcall del_700micro
mov data_dis/ ííOAH
Icall saca_displayIcall clrD
mov data_dis, fíOEH
saca_displayclrD
data^dis, ÍÍ06H
saca_displayborrar display
IcallIcall
IcallIcall
; Define dos lineas y 5>:7 dots
;SET display OFF CURSOR OM
;SET display AWD CURSOR OM
;SET INC add 1,SHIFT CUR RIGHT
;Borra el display
EMCA
Icall del_700micro
ret
borrar_display:
Icall clrd ;Rutina para borrar el display
setb enamov data_dis,#01H
Icall saca_jdisplay
ret
saca_display:
Icall del_700micro
anl port_dis, ÍÍOFOHmov A,data_disswap Aanl A, ffOFHorí port_dis,A
setb enaclr r__w
Icall del_50Qmicro
clr ena
Icall del_500micro
mov A, data_disanl A, #OFHanl port_dis, #OFOHorí port_dis,Asetb ena
Icall del_500micro
clr ena
ret
;Rutina para sacar datos que vienen en
;data_dis al área de display;Como estamos trabaj ando con una;interfase;de 4 bits se debe mandar: primero los;4 nibles menos significativos y luego
; los rnas significativos
EMCA LISTADO DEL PROGRAMA 25
clrd: clr ; . ' V rsclr',, • / V'r_w
v' ;-¡^--,' ,ena
;Baja las seniales de control del display
ret
Área de definición de letreros fijos para el display
regis__disp:
mov - .-Ijmp.. -J
conversor_di's;
movIjmp
falla_dis:
moyIjmp
sacie
SACL4 :
movIjmp
SACLS :
movIjmp
SACL6:
movIjmp
SACLE
R14-#(5*16)SACLE
SACL7 :
movIjmp
SACL8 :mov . .Ijmp
SACLE
SACLE
SACL9 :
Ijmp SACLE
EMCA LISTADO DEL PROGRAMA ' 26
SACL10:
rnovIjmp
SAC2000:
Rlf#(9*16)SACLE
mov Rl,#(10*16)Ijmp SACLE
opción 1 dis:
mov Rl,#(11*16)Ijmp SACLE
magnitudes dis:
mov Rl,#(12*16)Ijmp SACLE
intervalo dis:
mov Rl,#(13*16)Ijmp SACLE
solo tero dis:
rnov R l , # (14*16 )Ijmp SACLE
sacie:
11:
movaddrnovmov
movmovcmov
incincmovxrljriz
ret
A,R1
R1,AR0,#inicio d
A, RlA, @A+PC@RO,A
RORlA, ROA, #{inicio_d-fl6)11
;Dirección del letrero;Constante del Program counter
;Dirección inicial del buffer de;display
;Pone la dirección del carácter;Lee el carácter de la tabla;Lo guarda en el buffer del display
;En total debe leer 16 caracteres
•fr-ff-fr-tr * * *
EMC A LISTADO DEL PROGRAMA 27
*..£•'
display_00:DBdisplay_01:DBdisplay 02:DBdisplay 03:DBdisplay 04:D'Bdisplay 05':,DBdisplay_06;DBdisplay_07:DBdisplay_08:DBdisplay_09:'DBdisplay 10:DBdisplay_ll:DBdisplay 12:DBdisplay_13:DBdisplay 14:DB
''•TRABAJANDO. OK. '-"Conv: Vf-r*.Tecla invalida* '
1 --Control reloj - ''̂ Minutos 00-59''Hora 00-23'1 Dia • Semana 0-7 ''Fecha 01-31''Mes 01-12''Anio dece 00-99''Anio mil 19-20 ''Interva. ** Min.1'1>T 2>H 3>M' 4>F'í Interva: ** Min.1'Temper: íiC1
solo_hurn__dis :
movIjmp
solo__mon__dis :
movIjmp
Rl,ff (0*16)SACLE1
Rlf#(l*16)SACLE1
no registro dis-:
movIjmp
conversor nro dis":
movIjmp
memoria full:
Ijmp
epn_disp:
movIjmp .
R-l,#(3*16)SACLE1
SACLE1
SACLE1
titulo2 :mov
Ijmp
EMCA
tituloS:mov
Ijmp
titulo4 :mov
tituloS :mov
Ijmp
titulo6:
movIjmp
•VR1,#.(7*16).SAGLE1
SACLE1
Rl,#(9*16)SACLE1
,;-E£L, #(10*16)•SACLE1
titulo? : ..y-- • • ' .mov '.-,-'';.R1,# (11*16)
Ijmp. "%
s a el e 1:
111:
movadd
movmov
A, Rl• A,#09HR1,A
•RO,#inicio d
movmovcmov
incincrnovxrljnz
ret
A> RlA, @A4-PC@RO , A
RO •RlA, ROA, # (inicio_d+16)111
t>~'.t,t' •.í.'̂ h^isgi¡ESStfr''1 '• -•' &•'%&
-«TF'itítíí^!*1'"*--' "-.i, J-'.t JÍ&-!*(t̂ó&áisí-̂ - - - 1*"XA£:*
. 4. j- 4- -J. 4- 4 »
display__15 : DB ' Humed. :display__16: DB 'Monoxi: P P M '
EMCA LISTADO DEL PROGRAMA 29
display_17:DB '** NO registradisplay_18:DB 'Nro. de entradadisplay 19:DB 'Memoria Aliena*
display_20display_21display_22display_23display_24display 25display 26
DB ' E. P. N.DB 'ING. ELÉCTRICA, 'DB 'TESIS DE GRADO. 'DB ' AUSPICIO.DB ' P-BID-081.DB ' E. M. C. A. 'DB 'M.CHISAGUANO.A. '
display:
Icall
mov
Icall
mov
cont-espe:
mov
cambio:Icallincdjnz
segunda_mitad;
IcallmovIcall
mov
clrd
data_dis, #80H
saca_display
RO, #inicio_d
R6,#num car
alternoROR6,cambio
clrddata_dis,#OCOHsaca_display
R6,#num car
cambiol:
Icallinc
djnz
sale_disp:
clrret
alternoRO
R6,cambiol
;Pone la dirección 00 del display
;ubica la dirección de inicio del/display
;Define la cantidad de caracteres;que puede manejar en esta área
;Llama a rutina que manda el carácter;al display
;Pone la dirección 40h del display
;Borra el carry para control de salida
r-¿-Tl.-í--Jr-Tlt-A-'¿*-Í*-¿.--ír-¿--¿--!l-
EMCA LISTADO DEL PROGRAMA 30
alterno:
'• setb rs• clr r_wclr ena
setb enamov A,@ROmov data_dis,AIcall saca_display
clr rsret
;Realiza el control del protocolo;de comunicación con el display;Cargando el valor del ACC en el display
del Iseg:
rnov R7,#5mov THO,#60Hmov TLO,#4AHsetb TRO
lazo_lseg:
jnbclrdjnzclrret
TFO,$TFOR7,lazo_lsegTRO
del_J5seg:
mov
Iazodel5 :
R6, #5
Icall del_lsegmov A,hay_teclacj ne Ar $ ' 3 ' , sigue_delret
sigue_del :
djnz R6,lazo_del5ret
;Hace el lazo por 5 segundos esperando
;que se presione otra tecla, si no se
;presiona sale por tirneout
del_20mili:
movmov
THO,ííOE8HTLO,#54H
EMCA LISTADO DEL PROGRAMA 31
•
setb T R O ' ' ,jnbclrclr 'ret .
.del lOrnili:
rnov . T H O , # O F 4 Hmov TLO,#2AH
setb TRO.-. ' -jnb 2FO,$clr T.F'.O-clr TRO;,ret ' '. "'-
del7 O Omi ero :
mov THO.ÍOFFHrnov .
setb TROjnb TFO/$clr TROclr TFOclr TRO,ret
del SOOmicro:
mov THO.,#OFFHmov TLO.ÍÍ069H
setb TROjnb TFO,?clr TROclr TFOclr TROret
Rutina para leer el reloj y ponerlo en el display
relo.j :
Icall leer reloj ;Pone en condición de leer
EMCA
raov RO , #inicio_draov Af diarn_dat
Icall; mu_ascii_display
raovincrnov
ROA,mese_dat
Icall mu_ascii_display
raov @RO,#'-'
inc RO
mov DPTR> #anio__2 000movx A, @DPTR
Icall mu_ascii__display
mov A, anio_dat
Icall mu_ascii_display
mov @ R Q , # ' 'inc ROraov @ R O , $ ' 'mov A, hora_dat
Icall mu ascii display
movincmov
raovret
ROA,rain dat ;Muestra en display "ANIO-MES-DIA HORA:MIN"
Icall mu ascii display
leer_reloj;
Icall
next lee:
secuencia reloj
Icall lee reg
EMCA
i Pone en condición de leer
IcallmovIcall
movIcall
raovIcall
mov
lee regseg dat, Alee reg
rain dat, Alee reg
hora dat, Alee reg
dias dat, A
LISTADO DEL PROGRAMA 33
e
Icall lee_reginov diara dat, A
Icall lee_regmov mese_dat/ A
Icall lee_regmovret
anio_dat,A
;mu ascii display rutina para convertir en ascci valor hexa y guardaren posiciones sucesivas de rain para display
mu ascii display:
movswapanladdmovincmovanladdmovincret
B,AAA, #OFHA, #30H@RQ, AROA,BA,#OFHA,#30H@RO,ARO
;display requiere datos en ASCII
iguala:
Icallclrjncclrmovanlswapmov
clrjnc
clrmovanladdIcall
ret
displayC
CA, BA,#OFHA
espera,AC$
CA, BA, #OFHA, espera
gra reg
;Espera por tecla
;Guarda primer bcd
;Espera por tecla
EMCA LISTADO DEL PROGRAMA 34
;secuencia_reloj
rutina para ejecutar la secuencia de lecturas y escriturasnecesarias para establecer la comunicación con el reloj.La subrutina regresa dejando abierto el reloj para mantenerla comunicación, el ACC y el registro B quedan modificados.
secuencia reloj:
Icall cerrar_relojmov B,#4mov A, #OC5H
secuencia__relojA:
IcallxrlIcallswapdjnzret
/Asegura que el reloj esta cerrado
gra_regA, #OETHgra_regAB,secuencia_relojA
cerrar_reloj rutina para asegurar que todos los registros del relojestán cerrados.
cerrar reloj
mov
loop cer:
Icall lee_regdj nz B,loop_cerret
;leereg rutina para leer datos del reloj , devuelve el valor leido;en el ACC
lee reg:
push DPLpush DPHpush MCOM
orí MCOM,#4push Bmov DPL, fM
mov DPH, í íOmov B, #8
: guarda el DATA POINTER en el stack
EMCA USTADO DEL PROGRAMA 35
•"-
loop lee:
push. ';-inovx "'_ríe'poprrcdjnzpopPoppopPopret
*****.*.3Íi
ACC • 'A, @DPTR . 'A - ' -ACC
A ;•-" • "'B,loop lee :. . •B . "'. -•'MCONDPH . •DPL
Í,^±^^^^£±^^±^^±±^^^^^^^ + +^-L- + ̂^4^^±^^±^^ + 4-±±±^&+^^^^^^-)r^^*-tf-ít*
r .-
;gra^reg Rutina "para grabar un registro desde el ACC en el reloj;El ACC trae valor a guardar
gra reg:
pushpushpush
' ORLpushmovmov
loop gra:
pushanlmovrnovxPoprrdjnzpoppoppoppopret
DPLDPH-MCONMCON , ff 4B 'DPH, #0B,#8
ACC• A, #1DPL, A.@DPTR,AACCAB,,loop gra
. B''MCONDPH .DPL
Dato recibido desde el computador
com serial:
EMCA LISTADO DEL PROGRAMA 36
push ACCpush Brnov A, SBUFrnov dato_leido,AIcall datos_cpupop Bpop ACCreti
datos cpuRutina para tomar datos desde el computador.
La cpu debe mandar un header luego datos y fin de archivoEl header puede ser '!' para igualar el reloj, 'Z' para
Para igualar reloj el cpu debe mandar la información defecha y hora asi:
I MM-DD-AAAA HH:MM:SS
datos__cpu:
clrmovmovcjneIjmp
RIA,dato_leidoB,AA,#'I' , com__serial_datoligualar ;Iguala el reloj
corn serial datol:
cjne A,#'Z ' , com_serial_dato2Ijrnp vaciar mem ;Encerar registros
com serial dato2:
cjne A,#'L1,com_serial_dato3Ijmp leer /Mandar datos al cpu
com serial dato3:
EMCA LISTADO DEL PROGRAMA 37
clr RIclr TIret
Rutina para mandar datos al computador.Esta rutina envia todos los datos almacenados desde el ultimoencerado.
leer:
push DPLpush DPHpush ACCpush PSWmov DPTR, #datosmov A, # ' L 'Icall send_car
mov a,#car retIcall send car
/Devuelve carácter para indicar que lo;recibió
lazo mandar:
movx A, @DPTRIcall send car
mov A, #', 'Icall send_car
inc DPTRmovx A, @DPTR
cjne A,#99H,Dos_milmov A,#19HIcall send_datIjrnp Noventa
Dos_mil:mov A,#20HIcall send dat
;Manda el tipo de registro:;T => temperatura, H => humedad;M => monoxido;Cada dato va separado por coma para que;pueda ser manejado en la hoja electrónica
;Verificamos si es el anio 99
Noventa:movx A, @DPTRIcall send_dat
mov A, ff' , 'Icall send car
;Recuperamos el anio;Manda los dos caracteres del calendrio
inc DPTRmovx A,@DPTRIcall send_datmov A, #', 'Icall send car
DPTRmovx A, @DPTR
EMCA LISTADO DEL PROGRAMA 38
Icall send_datmov A, #' , 'Icall send car
inc DPTRmovx A, @DPTRIcall send_datmov A, #'
Icall send__car
inc DPTRmovx A, @DPTRIcall send_datmov A, #', 'Icall send_car
inc DPTRmovx A,@DPTR
Icall send car
mov A, #car_retIcall send_car
inc DPTRmovx A, @DPTR
cjne A, #'2'rlazo mandar
rnov A, §26Icall send_car
mov A, #car_retIcall send car
;Hace el lazo hasta que se terminen;los datos
;Para finalizar el envió de todos;los registros manda un cntrl z
send dat:
rnovswapanloríclr
B,AAA,#OFH
A,#30HTI
;Guarda temporal
;Lo transforma en ASCII
Icall manda rs
mov A, Banl A,#OFH
orí A,#30H •
;Recupera el datos original;Lo transforma en ASCII
EMCA LISTADO DEL PROGRAMA 39
Icall manda_rsret
manda rs:
movjnbclrret
SBUF,ATI,?
TI;Espera al fin de transmisión
send car:
clr TIIcall manda_rsret
Rutina para encerar los registros de almacenamiento en la NVRAM
vaciar inem:
rnov DPTR, #ultimo_regmov A , # O Hmovx @DPTR,Amov DPTR, #rninutos_rmov A, f f O Hmovx @ D P T R , Arnov DPTR, #datosmov R0,#10rnov A, f í ' Z '
lazo vaciar rnem:
movx @DPTR,Ainc DPTRdjriz RO, lazo vaciar_memmov DPTR, íídatosmov A , D P Lmov B,Arnov A, DPHmov DPTR,#direcc_higmovx @DPTR,Amov A , Bmov DPTR, ffdirecc_lowmovx @ D P T R , Aret
;Ultimo registro de minutos = O
;Inicia los punteros en el inicio
;de la tabla de datos
, -i. 4. -* -i
EMCA LISTADO DEL PROGRAMA 40
<fe*
igualar:
Icall" -:; ;̂ sehd carrnov ':' a, -#car_retlca.ll send car
;Devuelve carácter para indicar que lo; recibió ;:
imes:
Icall caráctermov me se da t, Ajnb RI,$
clr . RI
di ames:
Icall.. ca;.r a ct e rrnov .diarn_dat, Ajnb Rl,$
clr RI
dece anios:
Icall carácterpush DPLpush DPH ;mov DPTR, #.anio_2000movx @DPTR/."Apop DPH. -•pop DPL, . , '"
anxos:
Icall cara.c.terraov ani.o__dat,A
horas:
Icall caráctermov hora dat,Ajnb RI,$ :
clr RIminutos:
icall carácter..mov, -' ,min__da t, Ajnb"- RI,$clr ' •• RI
segundos:
Icall-caráctermov se'g- -dat., A
EMCA LISTADO DEL PROGRAMA 41
load clk:
Icallmov A, fíOIcall gra_reg
mov A,seg_datIcall gra_reg
mov A,min_datIcall gra_reg
mov A, hora datIcall gra_regmov A, #01HIcall gra_reg
mov A,diam datIcall gra_reg
mov A,rnese_datIcall gra reg
mov A,anio_datIcall gra_reg
clr RIret
secuencia reloj;Pone en reloj .00 segundos
Pone en reloj el primer dia
,-Termina rutina de igualación
carácter:
jnbclr RImovanl
swap Amovjnb
clr RImovanl
add A,Bret
RI,$
A, SBUFA,#OFH
B,ARI,$
A, SBUFA, #OFH
;Espera próximo carácter
;Lee carácter en ASCII;Lo transforma en HEXA
/Guarda dato;Espera próximo carácter
. -i- J- -i- » 4--i-^i.
El valor de la lectura de monoxido esta en 'dato análogo'
valor mono:
mov A,dato_analogomov DPTR,Atab la mono
salir mono
lazo mono:
EMCA LISTADO DEL PROGRAMA 42
inc DPTRinc DPTR
dec Ajnz lazo mono
salir mono;
raovc A, (2A+DPTRmov dato mono1,A
inc DPTRclr A
raovc A, @A+DPTRmov dato_mono2,Aret
tabla_mono:
DB 2 2 H , 5 7 H , 2 2 H , 1 2 H , 2 1 H , 6 9 H , 2 1 H , 2 6 H , 2 0 H , 8 3 H , 2 0 H , 4 2 H , 2 0 H , 0 2 H , 1 9 H , 62HDB 19H,23H,18H, 85HA8H,48H,18H,11H,17H,75H,17H, 40H,17H, 06H,16H,72HDB 16H,39H,16H,06H,15H,75H,15H,43H,15H,13H,14H,83H,14H,54H,14H,25HDB 13H,97H,13H,69H,13H,42H,13H,15H,12H,89H,12H,64H,12H,39H, 12H, 14HDB 11H,90H,11H,67H,11H,43H,11H,21H,10H,99H,10H,77H,10H,56H, 10H,35HDB 1 0 H , 1 4 H , 9 H , 9 4 H , 9 H , 7 4 H , 9 H , 5 5 H , 9 H , 3 6 H , 9 H , 1 8 H , 8 H , 9 9 H , 8 H , 82HDB 8 H , 6 4 H , 8 H , 4 7 H , 8 H , 3 O H , 8 H , 1 4 H , 7 H , 9 8 H , 7 H , 8 2 H , 7 H , 6 6 H , 7 H , 5 1 HDB 7 H r 3 6 H , 7 H , 2 2 H , 7 H , 0 8 H , 6 H , 9 4 H , 6 H , 8 O H , 6 H , 6 6 H , 6 H , 5 3 H , 6 H , 4 OHDB 6 H , 2 8 H , 6H-, 15H, 6H, 0 3 H , 5 H , 91H, 5H, 79H, 5H, 6 8 H , 5 H , 57H, 5H, 4 6HDB 5 H , 3 5 H , 5 H , 2 4 H , 5 H , 1 4 H , 5 H , 0 4 H , 4 H , 9 4 H , 4 H , 8 4 H , 4 H , 7 4 H , 4 H , 6 5 HDB 4H,56H,4H,47H,4H 7 38H,4H,29H,4H,21H,4H,12H,4H,04H,3H,96HDB 3 H , 8 8 H , 3 H , 8 1 H , 3 H , 7 3 H , 3 H , 6 6 H , 3 H , 5 8 H , 3 H , 5 1 H , 3 H , 4 4 H , 3 H , 3 8 HDB 3 H , 3 1 H , 3 H , 2 4 H , 3 H , 1 8 H , 3 H , 1 2 H , 3 H , 0 5 H , 2 H , 9 9 H , 2 H , 9 3 H , 2 H , 8 8 HDB 2 H , 8 2 H , 2 H , 7 6 H , 2 H , 7 1 H , 2 H , 6 6 H , 2 H , 6 0 H , 2 H , 5 5 H , 2 H , 5 O H , 2 H , 4 5 HDB 2H,40H / 2H,36H,2H / 31H,2H,26H / 2H,22H,2H / 17H.2H,13H,2H,09HDB 2 H , 0 5 H , 2 H , 0 1 H , 1 H / 9 7 H , 1 H / 9 3 H , 1 H , 8 9 H , 1 H , 8 5 H , 1 H , 8 2 H , 1 H , 7 8 HDB 1 H , 7 4 H / 1 H , 7 1 H , 1 H , 6 8 H , l H r 6 4 H , 1 H , 6 1 H , 1 H , 5 8 H f 1 H , 5 5 H , 1 H , 5 2 HDB 1 H , 4 9 H , 1 H , 4 6 H , 1 H , 4 3 H . 1 H , 4 0 H / 1 H , 3 7 H , 1 H , 3 5 H , 1 H , 3 2 H , 1 H , 2 9 HDB 1H/27H,1H,24H,1H,22H,1H,19H,1H,17H,1H,15H,1H,12H,1H.10HDB 1 H , 0 8 H , 1 H , 0 6 H , 1 H , 0 4 H , 1 H , 0 2 H , 1 H , O O H , O H . 9 8 H , O H , 9 6 H , O H , 9 4 HDB O H , 9 2 H , O H , 9 O H , O H , 8 8 H , O H , 8 7 H , O H , 8 5 H , O H , 8 3 H , O H , 8 2 H , O H , 8 O HDB O H , 7 8 H , O H , 7 7 H , O H , 7 5 H , O H , 7 4 H , O H , 7 2 H , O H , 7 1 H , O H , 7 0 H , O H , 6 8 HDB OH, 67H, OH, 65H, OH, 6 4 H , OH, 63H, OH, 62H, OH, 60H, OH, 59H, OH, 58HDB O H , 5 7 H , O H , 5 6 H , O H , 5 5 H , O H , 5 4 H , O H , 5 3 H , O H , 5 2 H , O H , 5 O H , O H , 4 9 HD B O H , 4 9 H , O H , 4 8 H , O H , 4 7 H , O H , 4 6 H , O H , 4 5 H , O H , 4 4 H , O H , 4 3 H , O H , 42HDB O H , 4 1 H , O H , 4 1 H , O H , 4 O H , O H , 3 9 H , O H , 3 8 H , O H , 3 7 H , O H , 3 7 H , O H , 3 6 HDB O H , 3 5 H , O H , 3 5 H , O H , 3 4 H , O H , 3 3 H , O H , 3 3 H , O H , 3 2 H , O H , 3 1 H , O H , 3 1 HDB O H , 3 O H , O H , 2 9 H , O H , 2 9 H , O H , 2 8 H , O H , 2 8 H , O H , 2 7 H , O H , 2 7 H , O H , 26HDB O H , 2 6 H , O H , 2 5 H , O H , 2 5 H , O H , 2 4 H , O H , 2 4 H , O H , 2 3 H , O H , 23H, O H , 2 2 HDB O H , 2 2 H , O H , 2 1 H , O H , 2 1 H , O H , 2 1 H , O H , 2 0 H , O H , 2 0 H , O H , 19H, OH, 19HDB O H , 1 9 H , O H , 1 8 H , O H , 1 8 H , O H , 1 7 H , O H , 1 7 H , O H , 1 7 H , O H , 1 6 H , OH, 16HDB O H , 1 6 H , O H , 1 6 H , O H , 1 5 H , O H , 1 5 H , O H , 1 5 H , O H , 1 4 H , O H , 1 4 H , O H , 1 4 HDB O H , 1 3 H , O H , 1 3 H , O H , 1 3 H , O H , 1 3 H , O H , 1 2 H , O H , 1 2 H , O H , 1 2 H , O H , 12HDB O H , 1 1 H , O H , 1 1 H , O H , 1 1 H , O H , 1 1 H , O H , 1 1 H , O H , 1 0 H , O H , 1 0 H , O H , 1 0 HD B O H , 1 0 H , O H , 1 0 H , O H , 0 9 H , O H , 0 9 H , O H , 0 9 H , O H , 0 9 H , O H , 0 9 H , O H , 0 9 HDB OH, O8H, OH, O8H, OH, 8H, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH
ÍMGA LISTADO DEU PROGRAMA 43
»e0»»i»»
D B O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O H , O HDB OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH, OH
; El valor de la lectura de temperatura esta en 'dato_analogo'í
valor_tempera:
mov B,dato_analogo
mov A ,Bmov cien,#0j z sigue_jdosa
CACA
clrclrclr
surnar_unoa:
add A,$2da A
jnc sigue_unoainc cienclr C
clr AC
sigue_unoa:
djnz B,sumar unoa
sigue_dosa:
rnov dato temp2,Amov A, cienmov dato templ,Aret
;Puesto que la máxima lectura equivale;a 50.0 grados osea 500 posiciones, pero;el conversor entrega hasta 255 bits sera;necesario sumar 2 unidades decimales por;cada bit de lectura
El valor de la lectura de humedad esta en 'dato__analogo'
valor humedad:
mov B,dato_analogomov A,B
rnov cien,#0j z sigue_dosbclr Cclr ACclr A
EMCA LISTADO DEL PROGRAMA 44
e
sumar unob:
* add ' A,§4'y. da A
jnc ' sigue_unobinc cienclr C
clr AC
sigue_unob:
djnz B, sumar_unob
sigue_dosb:
mov da to_hume2, Araov A, cienmov dato_hurnel,Aret
;Puesto que la máxima lectura equivale;a 100.0 % osea 1000 posiciones, pero;el conversor entrega hasta 255 bits sera;necesario sumar 4 unidades decimales por;cada bit de lectura
Origen del área NVRAM
org
intervalointer_decrninutos_rregistraultimo_regdirecc_lowdirecc_higanio 2000
1800H
equequequequequequequequ
1800H1801H1802H1803H1804H1805H1806H1807H
org 1810H
datos:
EMCA LISTADO DEL PROGRAMA 45
*******
*
END
LISTADO DEL PROGRAMA 46
MANUAL DEL USUARIO
E.M.C.A.
E.M.C. A. Manual del usuario 1
CONTENIDO
Páginas
MANUAL DEL USUARIO
1 Descripción del equipo 3
2 Características técnicas 4
3 Condiciones de operación del equipo. 5
4 Manejo del equipo.......... ........6
Valor del registro 7
Intervalo............. 7
5 Mantenimiento del equipo..... ......8
Circuito del sensor de temperatura...... ......8
Ajuste a cero ; 9
Calibración de la ganancia.......................... ..........9
Circuito del sensor de humedad 9
6 Utilización del programa de procesamiento en el computador.................. 10
E.M.C. A. Manual del usuario
MANUAL DEL USUARIO.
El equipo esta diseñado para poder trabajar de una manera eficiente y sin complicaciones,
permitiendo de esta forma que el usuario pueda utilizar al máximo su capacidad y aprovechar
sus resultados.
Este manual ayudará a familiarizarse con el EMCA ( Equipo de Monitoreo de Contaminación
del Aire) y sus características. Describe su modo de uso, así como también el programa de
procesamiento que se lo corre desde un PC.
1. DESCRIPCIÓN DEL EQUIPO.
A) VISTA POSTERIOR
En la figura A se tiene la vista posterior donde se puede apreciar:
• Un conector DB-9 que permite la comunicación seria! entre el equipo y un computador.
• Puntos de conexión para el sensor de humedad con polaridades definidas; esto es, rojo (+)
y negro (-).
• Cinco puertos disponibles para incrementar más sensores a futuro.
• El sensor de temperatura (LM335).
• Conmutador de energizacíón del equipo.
• Portafusible, que contiene un fusible de 2 Amp..
• Conector polarizado, para el cable de energía.
E.M.C. A. Manual del usuario
B) VISTA FRONTAL
En la figura B se tiene la vista frontal donde se puede apreciar:
• El sensor de humedad,
• El sensor de monóxido de carbono con su display incorporado.
• Un display LCD de una línea y 16 caracteres perfila, en donde se indican los valores de:
temperatura, humedad, rnonóxido de carbono, fecha y hora.
• Teclado de 16 teclas.
2. CARACTERÍSTICAS TÉCNICAS
1. Voltaje de entrada (rnns)
2. Frecuencia de trabajo
3. Protección (fusible)
4. Voltaje de alimentación a los circuitos
• Vcc
100-240 ± 10 % Vac, 3.2 A,
47 - 63 Hz
250 V/ 3.5 A
5Vdc, 12 A
E.M.C. A. Manual del usuario 4
• Vee
• Vss
5. Temperatura
• Rango de operación
• Rango de medición
6. Humedad"
• Rango de operac¡ón(no condensado)
• Rango de medición
7. Monóxido de Carbono"
• Rango de operación
• Rango de medición
8. Dimensiones Aprox.
9. Peso
10. Accesorios suministrados
• Cable de alimentación de CA
• Cable de transmisión de datos con swiích y conecíores DB9
11. Comunicación serial
• Velocidad
• Longitud de la palabra
• Bit de parada
• Pandad
12. Puertos opcionales""
• Puertos disponibles de entradas al conversón
13. Forma de trabajo
• Solamente en fonna horizontal y en lugares firmes.
0
0
0
0
)?
+ 12
-12
a
a
a
a
a
a
Vdc,
Vdc,
50
50
96
96
3A
1 A
°C
°C
%RH
% RH
2257 ppm
1000 ppm
300x100x400 mrn (an/al/prí)
4.0 Kg
1
1
2400 bps
8 bits
1 bit
ninguna
3 CONDICIONES DE OPERACIÓN DEL EQUIPO.
Se lo puede hacer funcionar en cualquier lugar, que sea requerido; sin embargo, se deben
tomar en cuenta las siguientes recomendaciones a fin de obtener buenos resultados.
Mantener siempre al equipo en un enlomo limpio y seco. Asegúrese de que la superficie
sobre la que reposa es lisa y firme.
No coloque ningún objeto encima del equipo ni cubra el orificio de ventilación, este orificio
permite absorbe el aire del medio ambiente para ser sensado y sirve también para
refrigerar el equipo.
Funciona con una fuente de voltaje independiente de 9 VdcDispone de un display que solamente presenta valores referenciales y promediados durante 2,5 minutos.
E.M.C. A. Manual del usuario
I
P-B1D-081
A continuación se limpia e! display y aparece otro mensaje en forma repetitiva durante todo
el tiempo que se encuentre tomando las respectivas mediciones, es el siguiente:
E.M.C.A.1
M. CHISAGUANO. A.
TRABAJANDO OK.
FECHA Y HORA
VALOR DEL REGISTRO
INTERVALO.
Donde:
Valor del registro significa que puede ser solamente: Temperatura (°C), Humedad (%RH),
monóxido de Carbono (PPM) o todas.
Intervalo es el espacio de tiempo en el cual se van a almacenar en la memoria la variable o
las variables descritas anteriormente y cuyo rango es de 01 minutos a 99 minutos.
Cuando se requiere cambiar el intervalo de tiempo o la toma de mediciones de cualquiera de
las variables descritas, se debe proceder de la siguiente forma:
• Digiíe 2nd y espere a que se detenga el ciclo.
• Ponga la clave 123 <enter>2.
• Elija el intervalo de tiempo en el cual se va ha almacenar los datos.
• Elija la variable con las siguientes opciones:
1. Temperatura.
2. Humedad.
3. Monóxido de carbono.
4. Todas.
Si por alguna razón durante este procedimiento no elige adecuadamente, éste termina y sigue
operando sin alterar en nada, la última programación ingresada.
Equipo de Monltoreo de Contaminación del Aire.*)
Si es <help> significa que puede elegirse ver si trabaja cualquiera de las entradas del conversor.
E.M.C. A. Manual del usuario 7
5 MANTENIMIENTO DEL EQUIPO.
El equipo requiere de un mantenimiento preventivo mensual, por cuanto su forma de operar,
es en el campo, como consecuencia de ello se pueden acumular partículas de polvo y afines
especialmente en los sensores. La forma de mantenimiento de los sensores instalados debe
ser con aire seco, sin utilizar ningún tipo de químico.
Cuando se requiera calibrar las tarjetas de control de cada uno de los sensores instalados se
deben seguir todos los siguientes procedimientos:
• Circuito del sensor de temperatura.
5.1 K
D21
LM336IM3Q3A 11 K
LM335ütx-
R?210 k
Señal N
Señal P
FIGURA 1 CIRCUITO DE REFERENCIA DE SEÑAL DE TEMPERATURA
Sefral P
Seffeil N
INO
FIGURA 2 CIRCUITO AMPLIFICADOR DEL SENSOR DE TEMPERATURA
E.M.C. A. Manual del usuario 8
Ajuste a cero.
Para realizar la calibración del circuito de la figura 1 se-.debe medir el voltaje en el punto de
señal N y ajustar el potenciómetro P2t hasta conseguir, exactamente 2.73 V. Luego como
comparación también se debe ajustar el voltaje del sensor. LM335 a 2.73 V y comprobar que
las señales N y P con respecto a una referencia común deben medir exactamente 2.73 V,
finalmente se debe medir en el punto 1 de la figura 2 y ajustar el potenciómetro P31 hasta
encontrar un valor igual a O V.
Calibración de la ganancia.
»AI igual que el ajuste a cero, es importante calibrar el potenciómetro P21 hasta conseguir
exactamente 3.23 V que viene ha ser el equivalente a 50 °C y su procedimiento se realiza con
el potenciómetro P33 y su control con el potenciómetro P32 hasta llegar a medir en el punto
14 +5V.
Al seguir todos estos pasos se conseguirá con seguridad, que el equipo este listo para operar
en un rango de 0°C a 50 °C. No está pordemás hacer mediciones en puntos intermedios.
* Circuito del sensor de humedad.
SENSOR ceHUMECAD
2
3
Vsa
•̂
U
¡Fh1¿ ) (
U3A
~"
^^ -̂-̂ 1
Ht
1 ^^<
Rli
1C
6^̂ ,̂ , -
10 K
TLOWA
, i . . -^:
—
INI
•=• TLOG-1A TLO3-1A
FIGURA 3 CIRCUITO AMPLIFICADOR DEL SENSOR DE HUMEDAD
Para calibrar el circuito de amplificación del sensor de humedad se debe ajustar el
potenciómetro Pn comparando con el voltaje de entrada y multiplicando por la ganancia
E.M.C. A. Manual del usuario 9
equivalente, se recomienda realizar este ajuste en un lugar seco y estable, preferible un
ambiente cerrado,
6. - UTILIZACIÓN DEL PROGRAMA DE PROCESAMIENTO EN EL COMPUTADOR.
Al utilizar el programa de procesamiento en el computador este tiene, la finalidad de poder
realizar la lectura de los datos almacenados en la memoria, igualar el reloj calendario y borrar
los datos cuando se requiera.
El procedimiento se lo realiza al igual que cualquier programa de aplicación, utilizándose las
mismas opciones que cualquier hoja electrónica; es decir, se pueden ver los gráficos, tablas e
imprimir.
El programa se llama EMCA, y es un arreglo de diversas aplicaciones existentes en el mercado
siendo de esta manera un complemento muy útil para el equipo.
Para poder utilizar el programa de procesamiento se requiere de un computador con las
siguientes características:
• Procesador Pentium compatible.
• Velocidad del procesador 100 Mhz mínimo
• Memoria 32k en RAM
• Espacio en disco 10Mb mínimo
• Mouse
• Orive 3.5"
• Monitor SVGA color.
• Teclado
• WÍndows95.
• Nota: el programa EMCA es una aplicación de 32 bits, se debe actualizar en ODBC
(medidas.mad). y sus claves de instalación son:
• Login " admin11
• Password "x"
E.M.C. A. Manual del usuario 10