;------------------------------------------------------------- ;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 ;es 1 cuando se ven display en prog ppal si 0 se ve e tomaadatos dat0 cero equ 130 ;es 1 est no sale hasta led118 off si 0 sale no importa led118 ;VARIABLES PARA EST led118 equ 118 finad equ 110 ;fin de conversion a/d ;[REG_INTEGERS] bascu equ 200 basc1 equ 201 ;VARIABLES PARA EST parcon equ 150 ;parcial conteo parcon1 equ 151 ;para estabilidad parcon2 equ 152 ;para estabilidad fincon2 equ 153 ;contador de tiempo de estabilizacion fincon equ 154 ;fin de conteo contador media fincon1 equ 155 ;contador desviacion setdisp equ 156 ;temporal para setdesv si es cero no la cambia ;[REG_FLOATS] peso equ 0 ;peso balanza pesot equ 1 peso0 equ 3 ;pesos de tara este es el primero o hace x muestras peso1 equ 4 peso2 equ 5 peso3 equ 6 peso4 equ 7 peso5 equ 8 peso6 equ 9 ;ultimo peso pesof equ 10 ;peso de calculo para 6 taras anteriores ;VARIABLES PARA EST canal0 equ 11 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 28 ;variable aux para inestabilidad setdesv equ 29 ;cuanto se permite en desviacion findes equ 30 ;suma de desviacion desvia equ 31 ;desviacion final setdest equ 32 ;[TIM] ;[CNT] ;[NOP] ;VARIABLES PARA INICIAR ----------------------------------------------- reset temdat ;display en toma peso set cero ;est no sale sino con led118 off set 123 ;si es 1 es toma peso en linea si 121 en 1 toma depeso en ppal movci 0 stoi setdisp ; para toma peso en ppal o dat0 si 0 en dat0 movci 0 stoi bascu ;ident bascula para tarar y parametros movci 1 stoi basc1 movci 20 ;numero de conteos calculo de media stoi fincon movci 20 ;numero conteo calculos de desviacion stoi fincon1 movci 200 ;indica cuanto permanece encendido el led118 stoi fincon2 movcf 500 stof setdesv ;valor final de comparacion para estabilidad ;programa principal inicio-------------------------- inicio ld temdat ;si muestra peso es 1 jnz ini1 jmp ini2 ini1 call display call est ini2 call menu ldnt sensor out 119 ldnt sensor jz notome ;si 0 resetea sensor1 jmp siga notome reset sensor1 siga ld sensor1 ;si sensor=1 y senso1=1 a inicio si ya tomo peso alli sensor1 va a 1 out 120 ldnt sensor ;pese cuando termine est out 119 ldnt sensor and sensor1 out sentem ld sentem jnz inicio ;si ya tomo peso y mientras sensor no vaya a 0 ldnt sensor jnz siga1 jmp inicio siga1 call dat0 ;toma peso jmp inicio Fin end ;programa principal fin ---------------------------- ;======================== S U B R U T I N A S =============================================== ;display rutina inicio ----------------------------- display movrf 0 ;muestra el peso en gramos stof peso movrf 1 stof pesot clear disrf peso 41 com 0 clear disrf pesot 41 com 1 ret ;display rutina final ------------------------------- ;toma de datos inicio--------------------------------------- dat0 call est ld temdat jz dat1 ;depende de temdat muestra peso o no jmp dat2 dat1 call display dat2 movrf peso1 ;mueve pesos de 6a5 5a4 4a3 3a2 2a1 1a0 stof peso0 movrf peso2 stof peso1 movrf peso3 stof peso2 movrf peso4 stof peso3 movrf peso5 stof peso4 movrf peso6 stof peso5 movrf pesot stof peso6 movrf peso ;calcula la diferencia de peso con la tara 6 anterior movrf peso1 ;para 6 pesos de tara ejemplo si quiere 5 ponga peso2 subf stof pesof clear ;muestra el peso en com 1 disrf pesof 41 com 2 set sensor1 ret ;toma de datos final----------------------------------------- ;subrutinas menu inicio------------------------------- menu ink 30 ;enter calibracion jnz cali ink 31 ;clear tara jnz tara ink 32 ;arriba parametros basculas jnz prop ink 33 ;peso arriba o abajo y estabilidad factor jnz stab jmp menuf cali func 8 bascu jmp menuf tara func 7 bascu func 7 basc1 jmp menuf prop func 9 0 jmp menuf stab clear disri setdisp 1 com 1 ini 2 ;si 0 peso en dat0 si 1 en ppal stoi setdisp movri setdisp movci 1 cpei stab1 jmp stab2 stab1 set temdat ;peso en ppal reset cero reset 123 set 121 jmp stab3 stab2 reset temdat ;peso en dat0 set cero set 123 reset 121 stab3 clear disrf setdesv 42 com 1 inf 2 0 ;si 0 no cambia el valor de setdesv stof setdest movrf setdest movcf 0 cpgf stab4 jmp menuf stab4 movrf setdest stof setdesv menuf ret ;subrutinas menu fin------------------------------- ;estabilidad inicio ------------------------------------------- est nop ; rutina para buscar la media inicio----------------------- movcf 0 stof pesofin movci 1 stoi parcon movif fincon stof finflot ;conversion de entero a flot numero muestras movci 1 stoi parcon1 ; SUMATORIA ( canal analogo + pesofin) desde 1 hasta fincon ;donde pesofin inicia en cero iniest movif 110 ;lee canal analogo cero y lo almacena en peso 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+peso stof pesofin ;suma de pesos 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 ;call display ; 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 movci 1 ;resetee el contador stoi parcon2 movrf findes movrf finflot divf stof desvia ;calculo de desviacion ;rutina desviacion fin --------------------------------- call menu ;call display ;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 ld cero ;si 1 no sale sino con led118 en off si 0 sale solo jnz iniest6 jmp iniest7 iniest6 jmp est iniest7 nop ;rutina de comparacion fin ---------------------------------- iniest5 ret ;estabilidad fin ------------------------------------------------------------