;------------------------------------------------------------- ;Aplicación -> ;Fecha -> ;------------------------------------------------------------- MIDA 20M scan equ 99 &ini ld scan jz &lea jmp inicio &lea call &leavar ;PROGRAMA PRINCIPAL ----------------------------------------------- inicio Nop ld botini jnz ini1 jmp ini2 ini1 call arra ;rutina entrada tiempo proceso ini2 call disp ;calcula la temp y muestra movri tietot ;si entro tiempo, no sigue movci 0 cpgi ini3 ;mayor o igual jmp ini5 ini3 call proc ;arranque mota y tempo para arranque de res call preres ;arranque res 1, 2 y 3 ld res3 jnz ini4 ini4 call cale ;proceso mantener temp hasta final tietot call coci ;proceso cocinado call enfr ini5 ld izq and arr jnz ini6 jmp fin ini6 call cali fin end ;-------------------------------------------------------------- ;cali cali clear ;calibra temp? disl caltem com 0 ink ent jnz cali1 ink cle jnz cali2 jmp cali cali1 clear ;si... disl dtp1 ;punto bajo loc 3 disri chtem 40 com 0 ink ent jz cali1 cali11 clear disl dtp2 ;punto alto loc 3 disri chtem 40 com 0 ink ent jz cali11 clear ;entre k1 temp disl dk1t com 0 setri temgeni 20 call tempo clear inicf 10 stoi k1t clear ;entre k2 temp disl dk2t com 0 setri temgeni 20 call tempo clear inicf 10 stoi k2t clear ;entre k3 temp disl dk3t com 0 setri temgeni 20 call tempo clear inicf 10 stoi k3t clear ;constante b temp disl dk4t com 0 setri temgeni 20 call tempo clear inicf 30 stoi k4t cali2 cali4 cali51 cali6 cali7 clear ;temp dia disl dtdia com 0 ink ent jnz cali71 ink cle jnz cali8 jmp cali7 cali71 clear com 0 clear inicf 31 stoi tdia cali8 calif ret ;--------------------------------------------- ;db escribe en base de datos cada x minutos db movci 0 movri 60 cpei db00 jmp db0 db00 movci 0 stoi 99 db0 ld auxdb2 jnz db1 jmp db3 db1 write 0 1 db2 reset auxdb1 reset auxdb2 db3 ld auxdb1 timr timdb temdbi out auxdb2 set auxdb1 dbf ret ;------------------------------------------------------- ;cale cale cale1 ld 83 jnz cale11 jmp cale12 cale11 clear disl prec ;"precalentando" com 0 jmp cale13 cale12 call disp call abor cale13 movri temp movri tempro cpgei cale2 jmp cale1 cale2 reset res1 ;llego a tempro inicia tietot reset res2 reset res3 set tieini ;rele inicio tiempo final movri horario ;toma horario movri tietot addi stoi tietoth ;tiempo final en form horario movri tietoth ;compara si en mayor a 1439 movci 1439 cpgei cale21 jmp cale3 cale21 movri tietoth ;si es mayor lo resta para nuevo dia movci 1439 subi stoi tietoth cale3 calef ret ;---------------------------------------- ;coci coci ld tieini jnz coci0 jmp cocif coci0 call abor ld 83 jnz coci01 jmp coci02 coci01 call disp jmp coci03 coci02 movri tietoth ;calcula tiempo que queda movri horario subi stoi tiefal ;tiempo que queda clear disri tiefal 40 com 0 coci03 movri horario ;termino? movri tietoth cpgei coci1 jmp coci2 coci1 reset tieini ;si...... jmp cocif coci2 movri temp ;no........ movri tempro cpgei coci3 jmp coci4 coci3 reset res1 ;esta caliente.... reset res2 reset res3 jmp coci coci4 call preres ;esta frio..... jmp coci cocif ret ;---------------------------------------------------- ;proc proc proc1 set mota ;prenda motor aire call disp call abor proc2 reset auxres1 ;reset auxiliares reset auxres2 proc21 ld auxres1 ;tempo arranque res1 timr timres tieres out auxres2 set auxres1 call abor clear ;aviso en com0 disl arrmota reset 86 com 0 ld auxres2 jnz proc22 jmp proc21 proc22 reset 86 procf ret ;----------------------------------------------------- ;preres preres set res1 ;prende res1 preres1 reset auxresr1 ;reset auxiliares de res 2 y 3 reset auxresr2 preres31 ld auxresr1 ;tempo arranque res 2 timr timresr tieresr out auxresr2 set auxresr1 ld auxresr2 jnz preres32 jmp preres31 preres32 set res2 ;arranque res2 preres4 reset auxresr1 ;reset auxiliares de res 2 y 3 reset auxresr2 preres41 ld auxresr1 ;tempo arranque res 3 timr timresr tieresr out auxresr2 set auxresr1 ld auxresr2 jnz preres42 jmp preres41 preres42 set res3 ;arranque res3 preresf ret ;---------------------------------------------------- ;arra arra ;entrada de tiempo proceso movci 0 ;numero iteracc x contador stoi arranum clear disl arran1 ;"tie pro" com 0 arra1 flanc 1 1 ;entrada 1 jnz arra2 jmp arra21 arra2 movri arracon ;entra numero iterac x factor de tiempo movri arranum muli stoi tietot inc arranum 1 ;incrementa iterac clear disl arran loc 3 disri tietot 30 com 0 arra21 ink tenter ;termina entrada tiempos arra212 jnz arraf arra22 ink tclear ;reinicia iterac a cero jnz arra3 jmp arra1 arra3 movci 1 ;inicia las entradas stoi arranum jmp arra1 arraf ret ;------------------------------------------------------------------- ;disp disp disp1 movri chtem ;puntos por k entero movri k1t muli stoi k1tem movri k1tem movci 10 muli stoi k1tem movri chtem ;puntos por k*1 movri k2t muli stoi k2tem movri chtem ;puntos por k/10 movri k3t muli stoi k3tem movri k3tem movci 10 divi stoi k3tem movri k1tem ;suma temporales a temp final movri k2tem addi stoi tempt movri tempt movri k3tem addi stoi tempt ;TEMPERATURA temporal movri tempt movri k4t addi stoi temp ;TEMPERATURA TOTAL clear disl dtemp loc 3 disri temp 41 com 0 jmp dispf disp2 dispf ret ;----------------------------------------- ;abor abor nop aborf ret uno clear disl unol com 0 ld 60 jz uno unof ret dos clear disl dosl com 0 ld 61 jz dos unof ret ;--------------------------------------------------- ;tempo temporizador generico para tiempos cortos=========== ;parametros: temgeni=registro valor de tiempo ;tempo tempo reset auxgen1 reset auxgen2 tempo1 ld auxgen1 timr timgen temgeni out auxgen2 set auxgen1 call abor ld auxgen2 jz tempo1 tempof ret ;--------------------------------- enfr ld 83 jnz enfr1 jmp enfr2 enfr1 call disp jmp enfr3 enfr2 clear disl enfri com 0 enfr3 call abor set mote reset res1 reset res2 reset res3 movri temp movri temfin cpgi enfr reset mote reset mota movci 0 stoi tietot enfrf ret ;--------------------------------------------------- &leavar ;[REG_RELAYS] botini equ 0 ;inicio proceso bottie equ 1 ;boton seleccion tiempo botabo equ 2 ;boton abortar tenter equ 60 tclear equ 62 res1 equ 100 ;bloque resistencias 1 res2 equ 101 res3 equ 102 mota equ 103 ;motor caudal aire mote equ 104 ;motor enfriamiento motd equ 105 ;motor damper alar equ 106 ;salida alarma local lamfin equ 107 ;lampara fin proceso auxtot1 equ 250 ;aux tempo total 1 auxtot2 equ 251 ;aux tempo total 2 auxres1 equ 252 ;aux tempo res 1 auxres2 equ 253 ;aux tempo res 2 auxresr1 equ 254 ;aux tempo resr 1 auxresr2 equ 255 ;aux tempo resr 2 tieini equ 261 auxdb1 equ 262 auxdb2 equ 263 ent equ 60 izq equ 61 cle equ 62 arr equ 63 auxgen1 equ 270 ;de tempo auxgen2 equ 271 auxagu1 equ 272 auxagu2 equ 273 x>a equ 274 xb equ 277 ;[REG_INTEGERS] horario equ 43 tietot equ 250 ;tiempo total del proceso tietoth equ 252 ;tiempo total en form horario tempro equ 251 ;temperatura proceso (250) arracon equ 259 ;de cuanto en cuanto se incrementa el tietot (10min) arranum equ 248 ;numero de iteracciones por arracon temdbi equ 249 ;db, tempo toma de datos tieres equ 253 ;tiempo retardo entrada resistencias tieresr equ 254 ;tiempo retardo 2 y 3 resistencias temfin equ 255 ;temperatura apagado proceso (120) temala equ 256 ;valor que se suma a tempro para alarma (10 grados) chtem equ 30 ;puntos conversor chhum equ 31 k1t equ 260 ;k*10 k1tem equ 261 k2t equ 262 ;k k2tem equ 263 k3t equ 264 ;k/10 k3tem equ 265 k4t equ 266 ;b de temp tempt equ 267 ;FINAL DE TEMPERATURA temp equ 268 k1h equ 270 k1hum equ 271 k2h equ 272 k2hum equ 273 k3h equ 274 k3hum equ 275 k4h equ 276 humet equ 277 hume equ 278 ;FINAL DE HUMEDAD temgeni equ 280 ;tiempo de tempo hodia equ 281 ;hora dia honoc equ 282 noc equ 283 tdia equ 284 hdia equ 285 tnoc equ 286 hnoc equ 287 tala equ 288 ;temporal temp para ala hala equ 289 tiefal equ 290 ;tiempo que falta en minutos ;[TIM] timtot equ 200 ;temporizador tiempo total proceso timres equ 201 ;temporizador entrada 1 res timresr equ 202 ;temporizador entrada 2 y 3 res timdb equ 203 ;db,toma de datos timgen equ 204 b ;[CNT] ;[NOP] dispa lite "TIEM. XXX MIN. TEMP. XX.X." arran lite "TF.XXXM" arran1 lite "TIE PRO" arrmota lite "INI RES" dtp1 lite "t1" dtp2 lite "t2" dhp1 lite "h1" dhp2 lite "h2" caltem lite "T? e/c" calhum lite "H? e/c" dk1t lite "k1 tem" dk2t lite "k2 tem" dk3t lite "k3 tem" dk4t lite "k4 tem" dk1h lite "k1 hum" dk2h lite "k2 hum" dk3h lite "k3 hum" dk4h lite "k4 hum" dtemp lite "T=" dhume lite "H=" dhodia lite "HOD e/c" dhonoc lite "HON e/c" dnoc lite "TNC e/c" dtdia lite "TD e/c" dhdia lite "HD e/c" dtnoc lite "TN e/c" dhnoc lite "HN e/c" agua lite "no agua" sobtem lite "alta T" sobhum lite "alta H" prec lite "prec" enfri lite "enfri" unol lite "uno" dosl lite "dos" ;iniciar variables-------------------------------- file 0,300d,310t,268i,278i,len=500,type=l setri tempro 2500 setri tietot 0 movci 0 ;si retardo res en cero movri tieres cpei var1 jmp var11 var1 movci 6000 ;10 minutos !!!!!!!!!!!!!!!!!! stoi tieres var11 movci 0 ;si retardo res de 2 y 3 es cero movri tieresr cpei var12 jmp var2 var12 movci 100 ;10 segundos !!!!!!!!!!!!!!!!!! stoi tieresr var2 movci 0 ;si temp final es cero movri temfin cpei var3 jmp var4 var3 movci 1200 ;120 grados stoi temfin var4 movci 0 ;si temp alarma es cero movri temala cpei var5 jmp var6 var5 movci 10 ;10 grados stoi temala var6 movci 0 movri arracon cpei var7 jmp var8 var7 movci 10 stoi arracon var8 nop varf ret