mida 14 ;------------------------------------------------------------- ;Aplicación -> ;Fecha -> feb 17 2006 ;Si no hay agua se espera 10 seg. y se cierra todo, se adiciono linea 132...cama13_14.prg ; en ala2 y ala3 se quita el reconocimiento de la alarma y se coloca que cuando ;se quite la alarma siga su proceso ;------------------------------------------------------------- scan equ 99 ;programa principal--------------------------------------- &ini ld scan jz &lea jmp inicio &lea call &leavar ;PROGRAMA PRINCIPAL ----------------------------------------------- inicio nop call disp movci 0 stoi minto call proc ;ubicacion de tempera y humedades para ciclo actual call ala call disp ;carga valores de temperatura y humedad para visualizar cada 10 segundos call hotehu ;rutina del actulizar hora ink izq ;con tecla izquierda entra a modificar datos jnz ini1 jmp ini2 ini1 call data ;ratina de entrada de tem hum y horas ini2 ld arr jnz ini3 jmp fin ini3 ld tecla jnz fin call cali fin end ;--------------------------------------------------- ; proceso de identificar el ciclo segun el numero de horas proc ld camhor ;entra cada hora jz prof reset camhor movri numhor ;horas acumuladas movri timp10 ;# de horas programadas en timpX cplei pro00 ;compara horas acumuladas con el # de horas en ciclo 10 pro0 movif tem10 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum10 stof humf jmp prof ;***** pro00 movri numhor movri timp9 cplei pro2 ;compara horas acumuladas con el # de horas acumuladas en ciclo 10 pro1 movif tem9 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum9 stof humf jmp prof ;****** pro2 movri numhor movri timp8 cplei pro4 ;compara horas acumuladas con el # de horas en ciclo 10 pro3 movif tem8 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum8 stof humf jmp prof ;****** pro4 movri numhor movri timp7 cplei pro6 ;compara horas acumuladas con el # de horas en ciclo 10 pro5 movif tem7 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum7 stof humf jmp prof ;****** pro6 movri numhor movri timp6 cplei pro8 ;compara horas acumuladas con el # de horas en ciclo 10 pro7 movif tem6 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum6 stof humf jmp prof ;***** pro8 movri numhor movri timp5 cplei pro10 ;compara horas acumuladas con el # de horas en ciclo 10 pro9 movif tem5 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum5 stof humf jmp prof ;***** pro10 movri numhor movri timp4 cplei pro12 ;compara horas acumuladas con el # de horas en ciclo 10 pro11 movif tem4 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum4 stof humf jmp prof ;***** pro12 movri numhor movri timp3 cplei pro14 ;compara horas acumuladas con el # de horas en ciclo 10 pro13 movif tem3 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum3 stof humf jmp prof ;***** pro14 movri numhor movri timp2 cplei pro16 ;compara horas acumuladas con el # de horas en ciclo 10 pro15 movif tem2 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum2 stof humf jmp prof ;***** pro16 movif tem1 ;carga temperaturas # de horas y humedades programadas stof tmpf movif hum1 stof humf ;***--------********------- prof movrf tmpf stof tala call disp movrf temp movrf tmpf cplef pro18 reset saltem movrf tmpf movcf 1.5 ;si hum sube 1.5 % mas.. addf stof tmpff movrf tmpff movrf temp cplef pro17 reset frio jmp pro19 pro17 set frio jmp pro19 pro18 set saltem reset frio pro19 call disp movrf hume ;controla humedad movrf humf cplef pro20 reset salhum jmp proff pro20 set salhum proff ret ;-------------------------------------------------------- ala ld agu ;no agua=open jz ala1 reset auxagu1 reset auxagu2 reset valv ;cierra valvula jmp ala2 ala1 set valv ;abre valvula ld auxagu1 ;tempo de 10 seg. no agua tim timagu 100 out auxagu2 set auxagu1 ld auxagu2 jnz ala11 jmp ala2 ala11 set auxdisp call disp reset auxdisp call setala ;se dispara el tempo reset saltem reset salhum reset frio reset valv ld 37 out 121 ld 37 out 122 ld 37 out 123 ld agu ;llego el agua? jz ala11 call resleds reset sire ;si......!!!! clear com 2 ;--------------------------------------- ala2 reset auxt reset auxt1 call disp ;cheque de temperaturas movrf temp movrf tmpf subf stof a movri minto movri 99 cpei ala24 ;esta en el mismo minuto... movrf temp ;ya paso al siguiente minuto movrf tmpf subf stof b call disp movrf tmpf movrf temp subf stof tendt ;nos da mayor o igual que cero o menor o igual que cero tendencia objetivo movrf tendt movcf 0 cplef ala21 set auxt ala21 movrf a movrf b subf stof tendrt ;tendencia real de temperatura movrf tendrt movcf 0 cplef ala22 set auxt ala22 ld auxt xor auxt1 out tendft ld tendft jz ala220 call setala ala220 movri 99 stoi minto ;***************humedad*************** ala24 reset auxh reset auxh1 call disp ;cheque de temperaturas movrf hume movrf humf subf stof c movri minto movri 99 cpei alaf ;esta en el mismo minuto... movrf hume ;ya paso al siguiente minuto movrf humf subf stof d call disp movrf humf movrf hume subf stof tendh ;nos da mayor o igual que cero o menor o igual que cero tendencia objetivo movrf tendh movcf 0 cplef ala25 set auxh ala25 movrf c movrf d subf stof tendrh ;tendencia real de temperatura movrf tendrh movcf 0 cplef ala26 set auxh ala26 ld auxh xor auxh1 out tendfh ld tendfh jz ala260 call setala ala260 movri 99 stoi minto ;********************************************** alaf ret ;------------------------------------------------------- ;setala. enciende y apaga la sirena cadaq 10 seg. setala setri 157 3 ld 39 jnz setala1 jmp setala2 setala1 set sire jmp setalaf setala2 reset sire setalaf ;--------------------------------------------- ;hotehu horas de temperatu y humedad hotehu nop movri 97 movri horpro ;si hora actual es igual a la hora en proceso cpei hthf movri 97 ;actualiza registro y incrementa stoi horpro inc numhor 1 ;contador de horas set camhor hthf ret ;********************************************************** ;tempo temporizador generico para tiempos cortos=============== ;parametros: temgeni=registro valor de tiempo tempo setri 157 4 reset auxgen1 reset auxgen2 tempo1 ld auxgen1 timr timgen temgeni out auxgen2 set auxgen1 ld auxgen2 jz tempo1 tempof ret ;------------------------------------------------- disp setri 157 5 movif tei movrf tk mulf stof tot movrf tot movrf tb addf stof temp movif hui movrf hk mulf stof hot movrf hot movrf hb addf stof hume ld 39 ;rele de 10 seg. jnz vol11 jmp vol12 vol11 movci 1 ;es 1 stoi vvol10 jmp vol2 vol12 movci 0 ;es 0 stoi vvol10 vol2 ld 38 ;rele de 30 seg jnz vol21 jmp vol22 vol21 movci 1 ;es 1 stoi vvol30 jmp vol3 vol22 movci 0 ;es 0 stoi vvol30 vol3 movri vvol10 ;sume los 2 movri vvol30 addi stoi vvolt ;resultado para mover ;------------ movri vvolt movci 0 cpei vol4 ;si la suma es cero...... jmp vol5 vol4 clear ;muestra temp movrf tmpf stof thmos set 124 reset 125 reset 126 vol5 movri vvolt movci 1 cpei vol6 ;si la suma es 1....... jmp vol7 vol6 clear ;muestra humedad movrf humf stof thmos reset 124 set 125 reset 126 vol7 movri vvolt movci 2 cpei vol8 ;si la suma es 2........ jmp disp4 vol8 clear ;muestra horas acumuladas movif numhor stof thmos reset 124 reset 125 set 126 disp4 clear disrf temp 41 com 0 clear disrf hume 41 com 1 clear disrf thmos 41 com 2 dispf ret ;------------------------------------------- cali setri 157 6 cali6 clear ;calibracion temp disl calit com 0 clear disl e-c com 1 ink ent jnz cali61 ink cle jnz cali7 jmp cali6 cali61 clear ;dato Y1 temp high disl te-h com 0 clear com 1 ini 2 stoi ythi movif ythi stof yth movif tei ;dato X1 stof xth clear ;dato YO temp low disl te-l com 0 clear com 1 ini 2 stoi ytli movif ytli stof ytl movif tei ;dato XO stof xtl movrf xth ;X1-XO movrf xtl subf stof tx movrf yth ;Y1-YO movrf ytl subf stof ty movrf ty ;Y1-Y0 / X1-XO movrf tx divf stof tk movrf tk ; K * XO movrf xtl mulf stof tmx movrf ytl ;B = YO - K*XO movrf tmx subf stof tb cali7 clear ;calibracion humedad disl calih com 0 clear disl e-c com 1 ink ent jnz cali71 ink cle jnz calif jmp cali7 cali71 clear ;dato Y1 humedad high disl hu-h com 0 clear com 1 ini 2 stoi yhhi movif yhhi stof yhh movif hui ;dato X1 stof xhh clear ;dato YO humedad low disl hu-l com 0 clear com 1 ini 2 stoi yhli movif yhli stof yhl movif hui ;dato XO stof xhl movrf xhh ;X1-XO movrf xhl subf stof hx movrf yhh ;Y1-YO movrf yhl subf stof hy movrf hy ;Y1-Y0 / X1-XO movrf hx divf stof hk movrf hk ; K * XO movrf xhl mulf stof hmx movrf yhl ;B = YO - K*XO movrf hmx subf stof hb calif clear com 2 ret ;********************cali8 entrada de temperaturas y humedades en ciclos********************** data clear disl rsgis com 0 clear disl e-c ;entrar o salir com 1 ink ent ;entra a ingrasar tem hum y horas jnz data0 ink cle jnz data00 jmp data data0 call resreg data00 clear ;intro ciclos disl ciclo com 0 clear disl e-c ;entrar o salir com 1 ink ent ;entra a ingrasar tem hum y horas jnz data000 ink cle jnz dataf jmp data00 data000 clear disl nucil com 0 clear disri ciclos 4 com 1 clear ini 2 stoi ciclos movri ciclos movci 0 cplei data000 movri ciclos movci 11 cpgei data000 ;----------------------------ini hora 1----------------------------------- data1 movri ciclos movci 1 cpgei data11 jmp dataf1 data11 call resleds set 118 clear disri timp1 4 ;visualiza valor actual com 0 clear disri tem1 4 ;visualiza valor actual com 1 clear disri hum1 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data12 ink cle jnz data2 jmp data1 data12 clear ini 0 stoi timp1 ;carga primer tiempo en horas clear ini 1 stoi tem1 ;carga temperatura clear ini 2 stoi hum1 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora1 --------------------------------- ;----------------------------ini hora 2----------------------------------- data2 movri ciclos movci 2 cpgei data21 jmp dataf2 data21 call resleds set 119 clear disri timp2 4 ;visualiza valor actual com 0 clear disri tem2 4 ;visualiza valor actual com 1 clear disri hum2 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data22 ink cle jnz data3 jmp data2 data22 clear ini 0 stoi timp2 ;carga primer tiempo en horas clear ini 1 stoi tem2 ;carga temperatura clear ini 2 stoi hum2 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora2 --------------------------------- ;----------------------------ini hora 3----------------------------------- data3 movri ciclos movci 3 cpgei data31 jmp dataf3 data31 call resleds set 120 clear disri timp3 4 ;visualiza valor actual com 0 clear disri tem3 4 ;visualiza valor actual com 1 clear disri hum3 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data32 ink cle jnz data4 jmp data3 data32 clear ini 0 stoi timp3 ;carga primer tiempo en horas clear ini 1 stoi tem3 ;carga temperatura clear ini 2 stoi hum3 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora3 --------------------------------- ;----------------------------ini hora 4----------------------------------- data4 movri ciclos movci 4 cpgei data41 jmp dataf4 data41 call resleds set 121 clear disri timp4 4 ;visualiza valor actual com 0 clear disri tem4 4 ;visualiza valor actual com 1 clear disri hum4 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data42 ink cle jnz data5 jmp data4 data42 clear ini 0 stoi timp4 ;carga primer tiempo en horas clear ini 1 stoi tem4 ;carga temperatura clear ini 2 stoi hum4 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora4 --------------------------------- ;----------------------------ini hora 5----------------------------------- data5 movri ciclos movci 5 cpgei data51 jmp dataf5 data51 call resleds set 122 clear disri timp5 4 ;visualiza valor actual com 0 clear disri tem5 4 ;visualiza valor actual com 1 clear disri hum5 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data52 ink cle jnz data6 jmp data5 data52 clear ini 0 stoi timp5 ;carga primer tiempo en horas clear ini 1 stoi tem5 ;carga temperatura clear ini 2 stoi hum5 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora5 --------------------------------- ;----------------------------ini hora 6----------------------------------- data6 movri ciclos movci 6 cpgei data61 jmp dataf6 data61 call resleds set 123 clear disri timp6 4 ;visualiza valor actual com 0 clear disri tem6 4 ;visualiza valor actual com 1 clear disri hum6 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data62 ink cle jnz data7 jmp data6 data62 clear ini 0 stoi timp6 ;carga primer tiempo en horas clear ini 1 stoi tem6 ;carga temperatura clear ini 2 stoi hum6 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora6 --------------------------------- ;----------------------------ini hora 7----------------------------------- data7 movri ciclos movci 7 cpgei data71 jmp dataf7 data71 call resleds set 124 clear disri timp7 4 ;visualiza valor actual com 0 clear disri tem7 4 ;visualiza valor actual com 1 clear disri hum7 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data72 ink cle jnz data8 jmp data7 data72 clear ini 0 stoi timp7 ;carga primer tiempo en horas clear ini 1 stoi tem7 ;carga temperatura clear ini 2 stoi hum7 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora7 --------------------------------- ;----------------------------ini hora 8----------------------------------- data8 movri ciclos movci 8 cpgei data81 jmp dataf8 data81 call resleds set 125 clear disri timp8 4 ;visualiza valor actual com 0 clear disri tem8 4 ;visualiza valor actual com 1 clear disri hum8 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data82 ink cle jnz data9 jmp data8 data82 clear ini 0 stoi timp8 ;carga primer tiempo en horas clear ini 1 stoi tem8 ;carga temperatura clear ini 2 stoi hum8 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora8 --------------------------------- ;----------------------------ini hora 9----------------------------------- data9 movri ciclos movci 9 cpgei data91 jmp dataf9 data91 call resleds set 126 clear disri timp9 4 ;visualiza valor actual com 0 clear disri tem9 4 ;visualiza valor actual com 1 clear disri hum9 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data92 ink cle jnz data100 jmp data9 data92 clear ini 0 stoi timp9 ;carga primer tiempo en horas clear ini 1 stoi tem9 ;carga temperatura clear ini 2 stoi hum9 ;carga humedad y lo mismo para 10 ciclos ;-----------------------fin hora9 --------------------------------- ;----------------------------ini hora 100----------------------------------- data100 movri ciclos movci 10 cpgei data1001 jmp dataf100 data1001 call resleds set 118 set 119 clear disri timp10 4 ;visualiza valor actual com 0 clear disri tem10 4 ;visualiza valor actual com 1 clear disri hum10 4 ;visualiza valor actual com 2 ink ent ;entra a ingrasar tem hum y horas jnz data1002 ink cle jnz datafi jmp data100 data1002 clear ini 0 stoi timp10 ;carga primer tiempo en horas clear ini 1 stoi tem10 ;carga temperatura clear ini 2 stoi hum10 ;carga humedad y lo mismo para 10 ciclos datafi call resleds ret ;-----------------------fin hora100 --------------------------------- ;------------------------- dataf1 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp1 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf2 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp2 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf3 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp3 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf4 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp4 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf5 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp5 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf6 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp6 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf7 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp7 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf8 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp8 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf9 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp9 ;carga en ciclos no usados jmp dataf ;retorna a la entrada de datos dataf100 movci 32000 ;carga un tiempo muy grande para permitir proceso con tiempos menores stoi timp10 ;carga en ciclos no usados ;------------------------- dataf call resleds set camhor clear com 2 ret ;**********apagado de leds******* resleds reset 118 reset 119 reset 120 reset 121 reset 122 reset 123 reset 124 reset 125 reset 126 resle1 ret ;------------------------------- ;**********reset registros******* resreg movci 0 stoi horpro movci 0 stoi numhor movci 0 stoi numx movci 0 stoi ciclos resregf ret ;******************************** ;------------------------------------------------- &leavar setri 157 0 ;[REG_RELAYS] tecla equ 4 ;on inhibe call cali agu equ 5 ;sensor nivel calderin ent equ 30 cle equ 31 arr equ 32 izq equ 33 saltem equ 100 ;resistencia calentamiento salhum equ 101 ;resistencia calderin sire equ 102 ;sirena valv equ 105 ;valvula agua frio equ 104 ;unidad frio auxgen1 equ 150 ;de tempo auxgen2 equ 151 auxagu1 equ 152 auxagu2 equ 153 auxdisp equ 154 auxt equ 155 auxt1 equ 156 auxh equ 157 auxh1 equ 158 tendft equ 159 tendfh equ 160 camhor equ 161 ;rele cambio de hora ;[REG_INTEGERS] tei equ 110 hui equ 111 temgeni equ 150 ;tiempo de tempo ythi equ 151 ytli equ 152 yhhi equ 153 yhli equ 154 minto equ 155 ;minuto para tendencia vvol10 equ 156 vvol30 equ 157 vvolt equ 158 timp1 equ 1101 ;los 10 ciclos tiempos en horas timp2 equ 1102 timp3 equ 1103 timp4 equ 1104 timp5 equ 1105 timp6 equ 1106 timp7 equ 1107 timp8 equ 1108 timp9 equ 1109 timp10 equ 1110 tem1 equ 1201 ;las 10 temperaturas tem2 equ 1202 tem3 equ 1203 tem4 equ 1204 tem5 equ 1205 tem6 equ 1206 tem7 equ 1207 tem8 equ 1208 tem9 equ 1209 tem10 equ 1210 hum1 equ 1301 ;las 10 mhumedades hum2 equ 1302 hum3 equ 1303 hum4 equ 1304 hum5 equ 1305 hum6 equ 1306 hum7 equ 1307 hum8 equ 1308 hum9 equ 1309 hum10 equ 1310 horpro equ 1311 ;toma el valor de reg 97 cada hora numhor equ 1312 ;# de horas acumuladas por ciclo numx equ 1313 ;# de horas objivo auxhor equ 1314 ; ciclos equ 1315 ;[REG_FLOATS] temp equ 10 hume equ 11 tot equ 15 hot equ 16 yth equ 17 ytl equ 18 xth equ 19 xtl equ 20 tx equ 21 ty equ 22 tmx equ 23 yhh equ 24 yhl equ 25 xhh equ 26 xhl equ 27 hx equ 28 hy equ 29 hmx equ 30 tala equ 31 ;temporal temp para ala hala equ 32 tmpff equ 33 tk equ 400 hk equ 401 hb equ 402 tb equ 403 tdia equ 404 hdia equ 405 tnoc equ 406 hnoc equ 407 tmpf equ 408 humf equ 409 a equ 410 b equ 411 c equ 412 d equ 413 tendt equ 414 tendrt equ 415 tendh equ 416 tendrh equ 417 thmos equ 418 ;temperatura y humedad para visulizar ;[TIM] timgen equ 48 timagu equ 49 ;[CNT] ;[NOP] calib lite "V-I" e-c lite "E-C?" cien lite "100" cincu lite "50" calit lite "TEM" calih lite "HUM" te-h lite "T-H" te-l lite "T-L" hu-h lite "H-H" hu-l lite "H-L" dtemp lite "T=" dhume lite "H=" dhodia lite "HOD" dhonoc lite "HON" dnoc lite "TNC" dtdia lite "TD " dhdia lite "HD " dtnoc lite "TN " dhnoc lite "HN " agua lite "L A" sobtem lite "H T" sobhum lite "H H" ciclo lite "CILO" rsgis lite "RES" nucil lite "?CLO" ;inicio variables &leavarf ret ;-----------------------------------------------