.title "8A2D" .vers "st6210" .romsize 2 .input "6215_reg.asm" lectu .def 84h contalec .def 85h mlec .def 86h alarm .def 87h contal .def 88h alsino .def 89h leds .def 8ah aux1 .def 8bh .org 880h reset ldi ddrb,11111110b ldi orb,00000000b ldi drb,00000001b ldi orb,11111111b ;portb 0 analog 1,2,3,4,5,6,7 out pp ldi drb, 00000001b ldi ddra,00000111b ;porta 0,1,2 salida 3 entrada pull-up ldi ora, 00000000b ldi dra, 00000000b ldi ora, 00000111b ldi dra, 00000010b ldi ior,10h call retarl ;retardo call retarl call retarl call retarl call retarl call retarl ldi mlec,0 ldi contal,0 ldi alarm,0 ;-------------------- lectura de la soglia alarma -------------------- call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso call lecso ld a,lectu inc a inc a ld alarm,a ;--------------------------- taratura -------------------------------- ld a,dra andi a,8 ; veo si tasto jrz main40 jp main main40 ;comienzo taratura ldi dra,00000110b ;bobina on ldi y,2 main41 ldi wdr,0feh dec y jrnz main41 ldi dra,00000010b ;bobina off nop nop nop nop nop ldi dra,00000000b ;descarga c off ldi dra,00000001b ;sample on nop ldi dra,00000000b call lectx ld a,lectu set 0,a res 1,a ld drb,a ldi y,255 main42 ldi wdr,0feh dec y jrnz main42 ldi y,255 main45 ldi wdr,0feh dec y jrnz main45 ldi y,255 main46 ldi wdr,0feh dec y jrnz main46 jp main40 ;--------------------------------------------------------------------- main ldi dra,00000110b ;bobina on ldi y,2 main1 ldi wdr,0feh dec y jrnz main1 ldi dra,00000010b ;bobina off nop nop nop nop nop ldi dra,00000000b ;descarga c off ldi dra,00000001b ;sample on nop ldi dra,00000000b call lectx ;comiezo calculo de la media ld a,lectu cp a,mlec jrz main3 jrnc main4 dec mlec jp main3 main4 inc mlec ;fin calculo de la media main3 ld a,lectu ;con esta line y la proxima elimino la media ld mlec,a ;******************************************* ld a,mlec ;veo si es alarma cp a,alarm jrc main7 ldi alsino,255 ;si alarma alsino=255 jp main8 main7 ldi alsino,0 main8 ld a,alsino jrnz main9 jp main10 main9 ld a,contal jrnz main14 jp main13 main14 jp main11 main13 ldi a,255 sub a,mlec rlc a rlc a rlc a rlc a res 3,a res 4,a res 5,a res 6,a res 7,a ld contal,a ld a,mlec ;calculo dato a visualizar cp a,alarm jrc maing7 sub a,alarm ;el dato es medida-comiezo alarma alarma cpi a,8 jrnc mainz1 ldi a,00000100b jp mainx8 maing7 jp mainx7 mainz1 cpi a,16 jrnc mainz2 ldi a,00001000b jp mainx8 mainz2 cpi a,32 jrnc mainz3 ldi a,00010000b jp mainx8 mainz3 cpi a,64 jrnc mainz4 ldi a,00100000b jp mainx8 mainz4 cpi a,128 jrnc mainz5 ldi a,01000000b jp mainx8 mainz5 ldi a,10000000b jp mainx8 mainx7 ldi a,0 ;fin calculo mainx8 set 1,a jp main12 main11 dec contal ld a,mlec ;calculo dato a visualizar cp a,alarm jrc mainw7 sub a,alarm ;el dato es medida-comiezo alarma alarma cpi a,8 jrnc maink1 ldi a,00000100b jp main10 mainw7 jp mainy7 maink1 cpi a,16 jrnc maink2 ldi a,00001000b jp main10 maink2 cpi a,32 jrnc maink3 ldi a,00010000b jp main10 maink3 cpi a,64 jrnc maink4 ldi a,00100000b jp main10 maink4 cpi a,128 jrnc maink5 ldi a,01000000b jp main10 maink5 ldi a,10000000b jp main10 mainy7 ldi a,0 ;fin calculo main10 res 1,a main12 set 0,a ld drb,a ld a,dra andi a,8 ; veo si tasto jrz main5 jp main6 main5 ld a,mlec ;determino comienzo alarma inc a ;comienzo alarma mlec+2 inc a ld alarm,a main6 ldi y,255 main2 ldi wdr,0feh dec y jrnz main2 ldi y,255 main15 ldi wdr,0feh dec y jrnz main15 ldi y,255 main16 ldi wdr,0feh dec y jrnz main16 ldi y,255 main17 ldi wdr,0feh dec y jrnz main17 ldi y,255 main18 ldi wdr,0feh dec y jrnz main18 jp main ;----------------------------------------------------------------- ;--------------- rutina lectura convertidor analogico ------------ lectx ldi adcr,10110000b ;comienzo convercion wait ld a, adr ld lectu,a ldi dra,00000010b ret ;---------------------- retardo largo --------------------------- retarl ldi v,15 ;v y w determinan retardo lr2 ldi w,84 lr1 dec w jrnz lr1 dec v ldi wdr,0feh jrnz lr2 ret lecso ldi dra,00000110b ;bobina on ldi y,2 mleca ldi wdr,0feh dec y jrnz mleca ldi dra,00000010b ;bobina off nop nop nop nop nop ldi dra,00000000b ;descarga c off ldi dra,00000001b ;sample on nop ldi dra,00000000b call lectx ldi y,255 maxx2 ldi wdr,0feh dec y jrnz maxx2 ldi y,255 maxx15 ldi wdr,0feh dec y jrnz maxx15 ldi y,255 maxx16 ldi wdr,0feh dec y jrnz maxx16 ldi y,255 maxx17 ldi wdr,0feh dec y jrnz maxx17 ldi y,255 maxx18 ldi wdr,0feh dec y jrnz maxx18 ret ;---------------------------------------------------------------- .org 0ff0h adc nop reti timer nop reti portb nop reti porta nop reti nop nop nop nop nmi nop reti res jp reset