;------------------------------------------------------------- ;Aplicación -> lectura canal con calibracion ;Fecha -> marzo 23 2003 ;------------------------------------------------------------- mida 64 scan equ 399 ;programa principal--------------------------------------- &ini ld scan jz &lea jmp &ini0 &lea call &leavar &ini0 ld &up ;teclas para entrar a calibrar and &dow out &encal ld &encal jnz &ini1 jmp &ini2 &ini1 call &men ;menu de calibracion &ini2 ld &auxc0 ;aux para cambio de canal de 60 a 61 xor &auxc1 out &auxcf jz &canal0 jmp &canal1 &canal0 movci 60 ;datos para canal 60 stoi &can movfx &kt0 stof &kt movri &p00 stoi &p0t movrf &p0v0 stof &p0vt jmp &ini22 &canal1 movci 61 ;datos para canal 61 stoi &can movfx &kt1 stof &kt movri &p01 stoi &p0t movrf &p0v1 stof &p0vt &ini22 movci 0 ;inicio de los calculos de promedio stoi &procon movcf 0 stof &summed &ini3 movix &can ;suma en summed x veces el valor del canal stoi &cantem movif &cantem movrf &summed addf stof &summed inc &procon 1 movri &procon movri &pro cpli &ini3 movrf &summed ;divide summed entre el numero de muestras para sacar el promedio movif &procon divf stofi &valtemi ;guarda en entero para quitar las variaciones de los decimales movif &valtemi stof &valtem ;es Y lo pasa a flotante el promedio de los puntos del conversor movrf &valtem ;X-Xo movif &p0t subf stof &valmed1 movrf &valmed1 ;multiplica por k movrf &kt mulf stof &valmed2 movrf &valmed2 ;suma Yo Y=k(X-Xo)+Yo movrf &p0vt addf stof &valmed3 ink &cle jnz &ini4 jmp &ini5 &ini4 movrf &valmed3 stof &valmed4 func 7 &bas &ini5 movrf &valmed3 movrf &valmed4 subf stof &valdat ;valor con promedio reg flota 3--------- movri &can ;si es canal 60 guarda en &k0 movci 60 cpei &val0 movri &can ;si es 61 guarda en &k1 movci 61 cpei &val1 jmp &fin &val0 movrf &valdat stof &valdat0 jmp &fin &val1 movrf &valdat stof &valdat1 jmp &fin &fin ld &auxcf out &auxc1 end ;fin programa principal-------------------------------- ;&men--------------------------------------------------- &men clear ;avisos de entrada pra e/c disl &lcal loc 12 disl &lec com 0 ink &ent out &enttem ink &cle out &cletem ld &enttem ;loop hasta tecla e/c or &cletem jz &men ld &enttem ;seleccion tecla jnz &men1 ld &cletem jnz &menf jmp &menf &men1 clear ;seleccion del canal disl &canal com 0 ini 3 stoi &can clear ;seleccion punto bajo disl &lp_0 com 0 inf 3 3 ;valor punto 0 stof &p0v movix &can stoi &p0 clear ;seleccion punto alto disl &lp_1 com 0 inf 3 3 ;valor punto 1 stof &p1v movix &can stoi &p1 movri &p1 ;calculo X-Xo movri &p0 subi stoi &resx movrf &p1v ;calculo Y-Yo movrf &p0v subf stof &resy movrf &resy movif &resx divf stof &k movri &can ;si es canal 60 guarda en &k0 movci 60 cpei &k60 movri &can ;si es 61 guarda en &k1 movci 61 cpei &k61 jmp &mens &k60 movrf &k stof &k0 movri &p0 stoi &p00 movrf &p0v stof &p0v0 jmp &mens &k61 movrf &k stof &k1 movri &p0 stoi &p01 movrf &p0v stof &p0v1 &mens clear com 0 clear com 1 &menf ret ;leavar================================================= &leavar ;[REG_RELAYS] &ent equ 340 &cle equ 341 &up equ 342 &dow equ 343 &encal equ 500 &enttem equ 501 &cletem equ 502 &auxc0 equ 503 &auxc1 equ 504 &auxcf equ 505 ;[REG_INTEGERS] &can equ 504 ;canal a leer integer &bas equ 505 ;numero de bascula para funciones func &dec equ 506 ;decimales para canal 0 &pro equ 507 ;numero de muestras para sacar promedio &fes equ 508 &tar equ 509 ;tara para canal 0 &cer equ 510 &procon equ 511 ;aux de &pro para llevar conteo de numero de muestras tomadas &p0 equ 512 ;puntos canal 0 para calibrar &p1 equ 513 ;puntos canal 0 para calibrar &resx equ 516 ;resta de X-Xo &valtemi equ 517 &cantem equ 518 ;temporal de &can para pasarlo a flotante &p00 equ 519 &p01 equ 520 &p0t equ 521 &kt0 equ 522 &kt1 equ 523 ;[REG_FLOATS] &valdat equ 20 &valtem equ 500 &resy equ 501 ;resta de Y-Yo &k equ 502 ;k para canal 0 &p0v equ 503 ;dato0 canal 0 para calibrar &p1v equ 504 ;dato1 canal 0 para calibrar &summed equ 505 &valmed equ 506 &valmed1 equ 507 &valmed2 equ 508 &valmed3 equ 509 &valmed4 equ 510 &k0 equ 511 &k1 equ 512 &p0v0 equ 513 &p0v1 equ 514 &p0vt equ 515 &kt equ 516 &valdat0 equ 21 &valdat1 equ 22 ;[TIM] ;[CNT] ;[NOP] ;[textos] &lcal lite "calibracion" &lec lite "Enter / Clear" &lp_0 lite "Punto bajo" &lp_1 lite "Punto alto" &canal lite "Canal (60-61)" ;iniciar variables-------------------------------- movci 10 stoi &pro movci 1 stoi &bas set &auxc0 movci 511 stoi &kt0 movci 512 stoi &kt1 ret ;======================================================