;------------------------------------------------------------- ;Aplicación -> BAS14CHOCO ;Fecha -> FEB 23 2003 ;------------------------------------------------------------- MIDA 14 ;[REG_RELAYS] sensor equ 1 ;sensor producto sentem equ 127 ;aux sentem1 equ 131 ;aux sentem2 equ 132 ;aux sensor1 equ 128 ;aux temdat equ 129 ;aux cero equ 130 ;aux ;VARIABLES PARA EST led118 equ 118 finad equ 110 ;fin de conversion a/d ;[REG_INTEGERS] bascu equ 200 ;VARIABLES PARA EST parcon equ 160 ;parcial conteo parcon1 equ 162 ;para estabilidad parcon2 equ 164 ;para estabilidad fincon2 equ 613 ;contador de tiempo de estabilizacion fincon equ 614 ;fin de conteo contador media fincon1 equ 615 ;contador desviacion ;[REG_FLOATS] peso equ 0 ;peso balanza peso1 equ 5 ;peso balanza ;VARIABLES PARA EST canal0 equ 6 pesofin equ 24 ;suma de pesos para buscar media finflot equ 25 ;numero de muestras en conteo a flotante media equ 26 ;media temdes equ 27 ;desviacion de cada muestra con signo pepe equ 77 ;variable aux para inestabilidad setdesv equ 410 ;cuanto se permite en desviacion findes equ 29 ;suma de desviacion desvia equ 31 ;desviacion final ;[TIM] ;[CNT] ;[NOP] ;VARIABLES PARA INICIAR ----------------------------------------------- movci 0 stoi bascu ;ident bascula para tarar y parametros movci 20 ;numero de conteos calculo de media stoi fincon movci 20 ;numero conteo calculos de desviacion stoi fincon1 movci 500 ;indica cuanto permanece encendido el led118 stoi fincon2 reset cero ;programa principal inicio-------------------------- inicio call menu call display ;call est ldnt sensor ;pese cuando termine est out 120 ldnt sensor ;pese cuando termine est xor sensor1 out sentem ld sensor1 out 121 ld sentem jnz tomdat ;si es 1 tome datos cuando sensor sube a 1 jmp ini2 tomdat set sensor1 ;variable sensor 1 en 1 call dat0 ;rutina de toma de peso ini2 ldnt sensor out 120 ldnt sensor and sensor1 out sentem1 ld sensor1 out 121 ld sentem1 jz ini3 ;si es 0, no hace nada mientras sensor no baje jmp ini4 ini3 reset sensor1 ini4 call menu jmp inicio Fin end ;programa principal fin ---------------------------- ;======================== S U B R U T I N A S =============================================== ;display rutina inicio ----------------------------- display movrf 0 stof peso1 ;muestra el peso en gramos clear disrf peso1 41 com 0 ret ;display rutina final ------------------------------- ;toma de datos inicio--------------------------------------- dat0 ldnt sensor ;sensor y est si 1 ini1 out 120 call est ld led118 ld sensor out temdat ld temdat ;toma de dato en com1 jz dat1 ;si es 0 ret dat1 clear ;muestra el peso en com 1 disrf peso1 41 com 1 ret ;toma de datos final----------------------------------------- ;subrutinas menu inicio------------------------------- menu ink 30 jnz cali ink 31 jnz tara ink 32 jnz prop ink 33 jnz stab jmp menuf cali func 8 bascu jmp menuf tara func 7 bascu jmp menuf prop func 9 0 jmp menuf stab clear disrf setdesv 42 com 1 inf 2 0 stof setdesv jmp menuf menuf ret ;subrutinas menu fin------------------------------- ;estabilidad inicio ------------------------------------------- est nop ; rutina para buscar la media inicio----------------------- ; SUMATORIA ( canal analogo + pesofin) desde 1 hasta fincon ;donde pesofin inicia en cero iniest movif 110 ;lee canal analogo cero y lo almacena en peso1 stof canal0 ;ld finad ;O J O suceptible de borrar pregunta por el led de fin de conversion que siempre esta en uno ;jz iniest movrf pesofin ;mueve valor de pesofin que para la primera vez esta en cero movrf canal0 ;mueve el valor del canal analogo addf ;pesofin+peso1 stof pesofin ;suma de pesos movif fincon stof finflot ;conversion de entero a flot numero muestras movri parcon ;contador y comparador movci 1 addi stoi parcon movri parcon movri fincon cplei iniest ;CALCULO EL VALOR DE LA MEDIA CON EL RESULTADO ;DE LA SUMATORIA movrf pesofin movrf finflot divf ;valor medio stof media ;rutina media fin ------------------------------------ call menu ; rutinas de reseteo inicio -------------------------- movcf 0 stof pesofin movci 1 ;resetee el contador stoi parcon movcf 1 stof findes ;rutinas de reseteo fin ------------------------------- ;rutina para la desviacion inicio -------------------- iniest1 ld finad jz iniest1 movif 110 stof pepe movrf pepe movrf media subf stof temdes ;resta que de la desviacion movrf temdes movrf temdes mulf stof temdes ;parentesis al cuadrado movrf temdes movrf findes addf stof findes ;sumatorias de los parentesis movri parcon1 ;contador y comparador movci 1 addi stoi parcon1 movri parcon1 movri fincon1 cplei iniest1 movci 1 ;resetee el contador stoi parcon1 movrf findes movrf finflot divf stof desvia ;calculo de desviacion ;rutina desviacion fin --------------------------------- call menu ;rutina de comparacion determina si esta estable inicio------- movrf desvia movrf setdesv cpgef iniest4 ;busca el maximo movrf setdesv movrf desvia cplef iniest4 ;busca el minimo reset led118 jmp iniest5 iniest4 call menu set led118 ;movri parcon2 ;contador y comparador ;movci 1 ;addi ;stoi parcon2 ;movri parcon2 ;movri fincon2 ;cplei iniest4 ;movci 1 ;stoi parcon2 jmp est ;rutina de comparacion fin ---------------------------------- iniest5 ret ;estabilidad fin ------------------------------------------------------------