Vibrator.asm ;20110802 ver.0 ;Johnny Apell ;Testning att styra en vibratortrafo 12V upp till anodspänning ;med 50Hz och uppehåll mellan perioderna för att transistorerna skall hinna att stänga ; ; ; ;Processor 12F509....för att jag hade den liggande ;använd intern 4MHz klocka ;********************************************************************************** ;Här talar vi om för assemblerprogrammet vilken processor vi har och vilka adresser ;som vi ska starta ifrån LIST P=PIC12F509 ;, R=HEX #include "p12F509.inc" ;konfigurering av kretsen __CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC RESET org 0x000 ;första adressen i programmet start clrf GPIO ;reset alla utgångar movlw b'00001000' ;gör alla pinnar till utgångar (0), utom den som bara är ingång... TRIS GPIO ;placera i TRIS-registret ;här snurrar programmet runt med att växelvis ;sätta utgångarna med lämpliga fördröjningar ;samt anropa respektive fördröjning puls bsf GPIO,0 ;sätt pinne 1 till "1" Transistor "A" call pulsHz ;hämta lite fördröjning, pulsfrekvensen clrf GPIO ;reset utgångarna call delay ;hämta den lilla fördröjningen för "gate off" bsf GPIO,1 ;sätt pinne 2 till "1" Transistor "B" call pulsHz ;hämta pulsfrekvensen.. alltså fördröjningen clrf GPIO ;reset utgången call delay ;hämta den lilla fördröjningen för "gate off" goto puls ;kör en ny cykel ;Pulsfrekvensen ;genom att låta processorn minska register och kolla om det blev "0" ;så förbrukar vi lite tid..motsvarande pulsfrekvensen pulsHz movlw .8 ;lagom värde för att skapa ca 60Hz movwf 08h ;flyttas in i register 8 clrf 07h ;nollställ register 7 decfsz 07h,f ;minska register 7 med ett och kolla om det blev "0" goto $-1 ;om inte...hoppa tillbaka ett steg decfsz 08h,f ;reg 7 blev "0" minska nästa register och kolla om det blev "0" goto $-3 ;annars gå tillbaka 3 steg och kör minskningen igen retlw 0 ;fördröjningen är klar! ;time för "gateoff" delay movlw .2 ;lagom värde för att skapa hysteresen movwf 08h ;samma funktion som ovan pulsHz clrf 07h decfsz 07h,f goto $-1 decfsz 08h,f goto $-3 retlw 0 ;tebaks till där anropet kom ifrån END ;programslut