;Beacon.asm 11 12 24 ;ver 0 ; ;SM7UCZ, Johnny Apell ;PROGRAM FÖR ATT STYRA EN BEACONSÄNDARE SOM SÄNDER: ; ;"SM7UCZ/SPUTNIK BEACON INFO WWW.SM7UCZ.SE" ; ;VÄNTAR LITE OCH SEN SÄNDER IGEN. ;PINNE GP2 STYR SÄNDAREN ;PIC-krets 12F675 med RC oscillator r=4-100k C=1nF, med R kan klockhastigheten ;justeras och därmed morsehastigheten. ;Varför den kretsen?...Den fanns i lådan... ;pinnarnas fördelning på kretsen 12F675 ;Pinne 1 = +V ;Pinne 2 = GP5 RC oscillatorn ;Pinne 3 = GP4 anv ej ;Pinne 4 = GP3 anv ej ;Pinne 5 = GP2 styr sändaren ;Pinne 6 = GP1 anv ej ;Pinne 7 = GP0 anv ej ;Pinne 8 = 0V ;Ingen Watchdog eller andra finesser ;######################################################################## ;Här börjar programmet list p=12F675 ;val av processor #include ; processor specific variable definitions __CONFIG B'11000000010110' ;ställ no watchdog, RC-osc, osv... org 0 ;reset och power on startadress goto init ;gå till initiering av kretsen...längst ner på sidan. ;---------------------------------------------------------------------------- ;Subrutin för prick i morse-signalering dot bsf 5,2 ;sätt utgång för morseton pinne GP2 call delay1 ;tid för en pricks längd bcf 5,2 ;stäng av morsetonen pinne GP2 call delay1 ;tid efter pricken, paus innan nästa tecken return ;tebaks dit anropet kom ifrån ;---------------------------------------------------------------------------- ;Subrutin för streck i morse-signalering dash bsf 5,2 ;sätt utgång för morseton pinne GP2 call delay3 ;tid för ett strecks längd bcf 5,2 ;stäng av morsetonen pinne GP2 call delay1 ;tid efter strecket, paus innan nästa tecken return ;tebaks dit anropet kom ifrån ;---------------------------------------------------------------------------- ;Subrutin för en pricks längd, dot time ;tidsfördröjning låt register 20 räkna 255 gånger delay1 clrf 20 ;rensa register 20 =0 loop1 decfsz 20,1 ;minska reg 20 med ett och kolla om det är 0 goto loop1 ;om inte 0 gå ett varv till runt loop1 return ;tebaks till dit anropet kom ifrån ;---------------------------------------------------------------------------- ;Subrutin för ett strecks längd, även avstånd mellan bokstäver, dash time delay3 call delay1 ;anropa en pricks fördröjning 3 ggr call delay1 call delay1 return ;tebaks dit anropet kom ifrån ;---------------------------------------------------------------------------- ton bsf 5,2 ;lägg ut en lång ton, long beep movlw .100 ;välj mellam .1 - .255 (. =decimaltal) movwf 25 decfsz 26,1 ;låt registren räkna...det tar tid... goto $-1 decfsz 25,1 goto $-3 bcf 5,2 ;stäng av tonen return ;tillbaka till main ;------------------------------------------------------------------------------- wait movlw .100 ;vänta en stund innan nästa sändningspass, waiting time movwf 25 ;välj mellan .1 - .255 som paustid decfsz 26,1 goto $-1 ;låt registren räkna och förbruka tid decfsz 25,1 goto $-3 return ;tillbaka till main ;------------------------------------------------------------------------------- ;Huvudprogrammet!!! Mainprogram ;Här snurrar programmet efter uppstart, och hoppar ut till berörda subrutiner main call ton ;skicka en lång ton, long beep call delay3 ;hia sig lite innan texten sänds, wait a little call delay3 call delay3 call text ;sänd texten call wait ;vänta mellan passen goto main ;ett nytt varv i mainprogrammet ;--------------------------------------------------------------------------- ;Här är texten som sänds.... text call _S call _M call _7 call _U call _C call _Z call _slash call _S call _P call _U call _T call _N call _I call _K call delay3 ;ordmellanrum call delay3 call _B call _E call _A call _C call _O call _N call delay3 call delay3 call delay3 call delay3 call _I call _N call _F call _O call delay3 call delay3 call _W call _W call _W call _. call delay3 call delay3 call _S call _M call _7 call _U call _C call _Z call _. call _S call _E call delay3 call delay3 call delay3 return ;tebaks till main ;****************************************************************************************** ;Alfabetet....lite lättare ovan att ändra texten _A call dot call dash call delay3 return _B call dash call dot call dot call dot call delay3 return _C call dash call dot call dash call dot call delay3 return _D call dash call dot call dot call delay3 return _E call dot call delay3 return _F call dot call dot call dash call dot call delay3 return _G call dash call dash call dot call delay3 return _H call dot call dot call dot call dot call delay3 return _I call dot call dot call delay3 return _J call dot call dash call dash call dash call delay3 return _K call dash call dot call dash call delay3 return _L call dot call dash call dot call dot call delay3 return _M call dash call dash call delay3 return _N call dash call dot call delay3 return _O call dash call dash call dash call delay3 return _P call dot call dash call dash call dot call delay3 return _Q call dash call dash call dot call dash call delay3 return _R call dot call dash call dot call delay3 return _S call dot call dot call dot call delay3 return _T call dash call delay3 return _U call dot call dot call dash call delay3 return _V call dot call dot call dot call dash call delay3 return _W call dot call dash call dash call delay3 return _X call dash call dot call dot call dash call delay3 return _Y call dash call dot call dash call dash call delay3 return _Z call dash call dash call dot call dot call delay3 return _Å call dot call dash call dash call dot call dash call delay3 return _Ä call dot call dash call dot call dash call delay3 return _Ö call dash call dash call dash call dot call delay3 return _1 call dot call dash call dash call dash call dash call delay3 return _2 call dot call dot call dash call dash call dash call delay3 return _3 call dot call dot call dot call dash call dash call delay3 return _4 call dot call dot call dot call dot call dash call delay3 return _5 call dot call dot call dot call dot call dot call delay3 return _6 call dash call dot call dot call dot call dot call delay3 return _7 call dash call dash call dot call dot call dot call delay3 return _8 call dash call dash call dash call dot call dot call delay3 return _9 call dash call dash call dash call dash call dot call delay3 return _0 call dash call dash call dash call dash call dash call delay3 return _slash call dash call dot call dot call dash call dot call delay3 return _. call dot call dash call dot call dash call dot call dash call delay3 return ;--------------------------------------------------------------------------- ;Initiering av portarna i kretsen ;Denna subrutin anropas bara vid "power-on" ;Här fördelas kretsens pinnar, om de skall vara IN eller UT-gångar osv... ;Vi gör det enkelt för oss...sätt alla portar till utgångar init bsf 3,5 ;anropa sida 1 i registren clrf 5 ;gör alla portar till utgångar, all ports as OUT bcf 3,5 ;gå tillbaka till register sida 0 clrf 5 ;rensa utgångarna, nollställ, clear ports goto main ;gå till huvudprogrammet end ;----------------------------------------------------------------------------