; PIC 12F675 Automatic CW sender --Lazy Man's CW sender ;*********************************************************************************************************** ; Rev 6 has the speed at 15 wpm and GP2,3,4 & 5 are the inputs and GP0 is the output ; This sender has four messages 1 = CQ, 2 = RST, Name & QTH, 3 = Rig and Antenna and 4 = 73's ; Author and circuit designer: Pete Juliano W6JFR, November 2004 ;*************************************************************************************************************** ; An internal oscillator is used. GP0 is the output (Pin 7) and the inputs are GP2,3,4 & 5. ; The inputs have a 10k resistor to +5 volts (pull up) and are momentarily to ground to initiate the message ; Memory clear is internal. GP1 is not used. The dot, dash, word timing and spacing are generated from a single delay ; loop. The output drives an on board LED (visual that it is sending) and keys a 2N3904 relay driver (reed relay). ; On Pin 7 is a 1K Ohm resistor the the LED which is connected to ground. There is also a 10K Ohm resistor from Pin 7 ; from the PIC12F675 to the base of the 2N3904. The emitter is grounded and the collector is connected to one end of ; the reed realy and the other end is connected to 12 volts (a 5 volt relay would only require a single supply). There ; is a 1N914 connected across the relay coil --cathode goes to the supply and the anode to the collector. Momentary ; push button switches ( 1-4) are used to initiate the various messages. Not elegant but it works! ;************************************************************************************************************* List p=12f675 Include "p12f675.inc" __CONFIG 0X3F94 ;Internal oscillator no clock out COUNT1 EQU 0x22 COUNT2 EQU 0x23 COUNT3 EQU 0x24 ORG 0x000 GOTO MAIN ORG 0x004 GOTO MAIN ;**********************DOT Generator 58.245 mSeconds ********* ONE MOVLW 0x21 ; Dot Timing and Dot/Dash Spacing MOVWF COUNT1 L1 MOVLW 0x20 MOVWF COUNT2 L2 MOVLW 0x11 MOVWF COUNT3 L3 DECFSZ COUNT3,1 GOTO L3 DECFSZ COUNT2,1 GOTO L2 DECFSZ COUNT1,1 GOTO L1 MOVLW 0x01 MOVWF COUNT1 LP98 DECFSZ COUNT1,1 GOTO LP98 NOP RETLW 0 ;**********************Dash Generator / Letter Spacing************ TWO CALL ONE CALL ONE CALL ONE RETURN ; ******************Extra Delay WORD SPACE************************ THREE CALL TWO CALL TWO RETURN ;*************************Dash Generator********************** DAH BSF GPIO,GP0 ; CALL TWO ; Dash BCF GPIO,GP0 CALL ONE RETURN ;*************************Dot Code*********************** DI BSF GPIO,GP0 CALL ONE ; Dot BCF GPIO,GP0 CALL ONE RETURN ;****************BREAK***************************************** BREAK CALL DAH ;DASH CALL DI ;DOT CALL DI ;DOT CALL DI ;DOT CALL DAH ;DASH CALL TWO RETURN ;**********************Comma********************************** COMMA CALL DAH ;DASH --..-- CALL DAH ;DASH CALL DI ;DOT CALL DI ;DOT CALL DAH ;DASH CALL DAH ;DASH CALL TWO RETURN ; *******************A****************** XXA CALL DI ;A .- CALL DAH RETURN ;***********************B***************** XXB CALL DAH ;B -... CALL DI CALL DI CALL DI RETURN ;************************C************************** XXC CALl DAH ;C -.-. CALL DI CALL DAH CALL DI RETURN ;****************************D************** XXD CALL DAH ;D -.. CALL DI CALL DI RETURN ;**********************E******************* XXE CALL DI ;E . RETURN ;**********************F**************** XXF CALL DI ;F ..-. CALL DI CALL DAH CALL DI RETURN ;*************************G************* XXG CALL DAH ;G --. CALL DAH CALL DI RETURN ;***************************H********** XXH CALL DI ;H .... CALL DI CALL DI CALL DI RETURN ;**********************I********* XXI CALL DI ;I .. CALL DI RETURN ;************************J*************** XXJ CALL DI ;J .--- CALL DAH CALL DAH CALL DAH RETURN ;*************************K*************** XXK CALL DAH ;K -.- CALL DI CALL DAH RETURN ;************************L*********************** XXL CALL DI ;L .-.. CALL DAH CALL DI CALL DI RETURN ;***********************M********************* XXM CALL DAH ;M -- CALL DAH RETURN ;***********************N********************* XXN CALL DAH ;N -. CALL DI RETURN ;**********************O******************** XXO CALL DAH ;O --- CALL DAH CALl DAH RETURN ;*********************P*************** XXP CALL DI ;P .--. CALL DAH CALL DAH CALL DI RETURN ;********************Q************************** XXQ CALL DAH ;Q --.- CALL DAH CALL DI CALL DAH RETURN ;******************************R************* XXR CALL DI ;R .-. CALL DAH CALL DI RETURN ;***************************S************* XXS CALL DI ;S ... CALL DI CALL DI RETURN ;********************T********************* XXT CALL DAH ;T - RETURN ;***********************U*************** XXU CALL DI ;U ..- CALL DI CALL DAH RETURN ;***********************V************** XXV CALL DI ;V ...- CALL DI CALL DI CALL DAH RETURN ;*************************W****************** XXW CALL DI ;W .-- CALL DAH CALL DAH RETURN ;************************X****************** XXX CALL DAH ;X -..- CALL DI CALL DI CALL DAH RETURN ;************************Y*************************** XXY CALL DAH ;Y -.-- CALL DI CALL DAH CALL DAH RETURN ;***********************Z******************** XXZ CALL DAH ;Z --.. CALL DAH CALL DI CALL DI RETURN ;************************0***************** XX0 CALL DAH ;0 ----- CALL DAH CALL DAH CALL DAH CALL DAH RETURN ;************************1*********************** XX1 CALL DI ;1 .---- CALL DAH CALL DAH CALL DAH CALL DAH RETURN ;***************************2************************ XX2 CALL DI ;2 ..--- CALL DI CALL DAH CALL DAH CALL DAH RETURN ;**************************3**************** XX3 CALl DI ;3 ...-- CALL DI CALL DI CALL DAH CALL DAH RETURN ;*************************4****************** XX4 CALL DI ;4 ....- CALL DI CALL DI CALL DI CALL DAH RETURN ;***********************5********************** XX5 CALL DI ;5 ..... CALL DI CALL DI CALL DI CALL DI RETURN ;*********************6***************** XX6 CALL DAH ;6 -.... CALL DI CALL DI CALL DI CALL DI RETURN ;*******************7******************* XX7 CALL DAH ;7 --... CALL DAH CALL DI CALL DI CALL DI RETURN ;***************************8************** XX8 CALL DAH ;8 ---.. CALL DAH CALL DAH CALL DI CALL DI RETURN ;****************************9*********** XX9 CALL DAH ;9 ----. CALL DAH CALL DAH CALL DAH CALL DI RETURN ;*************************Initialization: Port GP0 is the output************************** MAIN CALL 0x3FF ; Call up internal calibration BSF STATUS,RP0 ; hange to Bank 1 MOVWF OSCCAL ; set up for RC oscillator CLRF GPIO ; Initiate GPIO MOVLW 03Dh ; Set GPIO <5:2,0> to Digital I/O GP1 is not used MOVWF CMCON ; Turn Off Comparator CLRF ANSEL ; Turn off Analog Select MOVLW 03Ch ; GP <5,4,3,2> are the inputs. GP1 is not used MOVWF TRISIO ; GP <0> is the output GP0 = Pin #7 BCF STATUS,RP0 ; Change back to Bank 0 BCF GPIO,GP0 ; Clears the output so no output at turn on GOTO loop ; This initialization is different from the data sheet --it works the data sheet doesn't ;****************************************************************************************888 loop btfss GPIO,GP2 ;GP2 ON? GP2 = Pin #5 call CQ ;Yes. Call CQ btfss GPIO,GP3 ;GP3 ON? GP3 = Pin #4 call TNX ;Yes. Call Tnx btfss GPIO,GP4 ;GP4 ON? GP4 = Pin #3 call RIG ;Yes. Call Rig btfss GPIO,GP5 ;GP5 ON? GP5 = Pin #2 call SEVENTHREE ;Yes. Call 73 goto loop ;Retry ;******************************************************* CQ ; CQ CQ CQ DE W6JFR W6JFR K CALL THREE CALL XXC ;C CALL TWO CALL XXQ ;Q CALL THREE CALL XXC ;C CALL TWO CALL XXQ ;Q CALL THREE CALL XXC ;C CALL TWO CALL XXQ ;Q CALL THREE CALL XXD ;D CALL TWO CALL XXE ;E CALL THREE CALL XXW ;W CALL TWO CALL XX6 ;6 CALL TWO CALL XXJ ;J CALL TWO CALL XXF ;F CALL TWO CALL XXR ;R CALL TWO CALL THREE CALL XXW ;W CALL TWO CALL XX6 ;6 CALL TWO CALL XXJ ;J CALL TWO CALL XXF ;F CALL TWO CALL XXR ;R CALL TWO CALL THREE CALL XXK ;K CALL TWO RETURN ;************************************************************************************************************ TNX ;TNX OM UR RST IS 599 599, NAME IS PETE PETE, QTH NEAR SEATTLE SEATTLE, WA BACK K CALL THREE CALL XXT ;T - CALL TWO CALL XXN ;N CALL TWO CALL XXX ;X CALL THREE CALL XXO ;O CALL TWO CALL XXM ;M CALL THREE CALL XXU ;U CALL TWO CALL XXR ;R CALL THREE CALL XXR ;R CALL TWO CALL XXS ;S CALL TWO CALL XXT ;T CALL THREE CALL XXI ;I CALL TWO CALL XXS ;S CALL THREE CALL XX5 ;5 CALL TWO CALL XX9 ;9 CALL TWO CALL XX9 ;9 CALL THREE CALL XX5 ;5 CALL TWO CALL XX9 ;9 CALL TWO CALL XX9 ;9 CALL THREE CALL XXN ;N CALL TWO CALL XXA ;A CALL TWO CALL XXM ;M CALL TWO CALL XXE ;E CALL THREE CALL XXI ;I CALL TWO CALL XXS ;S CALL THREE CALL XXP ;P CALL TWO CALL XXE ;E CALL TWO CALL XXT ;T CALL TWO CALL XXE ;E CALL THREE CALL XXP ;P CALL TWO CALL XXE ;E CALL TWO CALL XXT ;T CALL TWO CALL XXE ;E CALL THREE CALL XXQ ;Q CALL TWO CALL XXT ;T CALL TWO CALL XXH ;H CALL THREE CALL XXI ;I CALL TWO CALL XXS ;S CALL THREE CALL XXN ;N CALL TWO CALL XXE ;E CALL TWO CALL XXA ;A CALL TWO CALL XXR ;R CALL THREE CALL XXS ;S CALL TWO CALL XXE ;E CALL TWO CALL XXA ;A CALL TWO CALL XXT ;T CALL TWO CALL XXT ;T CALL TWO CALL XXL ;L CALL TWO CALL XXE ;E CALL THREE CALL XXS ;S CALL TWO CALL XXE ;E CALL TWO CALL XXA ;A CALL TWO CALL XXT ;T CALL TWO CALL XXT ;T CALL TWO CALL XXL ;L CALL TWO CALL XXE ;E CALL THREE CALL COMMA CALL XXW ;W CALL TWO CALL XXA ;A CALL THREE CALL XXB ;BACK CALL TWO CALL XXA CALL TWO CALL XXC CALL TWO CALL XXK CALL THREE CALL XXK ;K RETURN ;********************************************************************************************** RIG ; Rig is homebrew transceiver 20w Ant is wire beam back K CALL THREE CALL XXR ;RIG CALL TWO CALL XXI CALL TWO CALL XXG CALL THREE CALL XXI ;IS CALL TWO CALL XXS CALL THREE CALL XXH ;HOMEBREW CALL TWO CALL XXO CALL TWO CALL XXM CALL TWO CALL XXE CALL TWO CALL XXB CALL TWO CALL XXR CALL TWO CALL XXE CALL TWO CALL XXW CALL THREE CALL XXX ;XCVR CALL TWO CALL XXC CALL TWO CALL XXV CALL TWO CALL XXR CALL THREE CALL XX2 ;20W CALL TWO CALL XX0 CALL TWO CALL XXW CALL THREE CALL XXA ;ANT CALL TWO CALL XXN CALL TWO CALL XXT CALL THREE CALL XXI ;IS CALL TWO CALL XXS CALL THREE CALL XXA ;A CALL THREE CALL XXW ;WIRE CALL TWO CALL XXI CALL TWO CALL XXR CALL TWO CALL XXE CALL THREE CALL XXB ;BEAM CALL TWO CALL XXE CALL TWO CALL XXA CALL TWO CALL XXM CALL THREE CALL XXB ;BACK CALL TWO CALL XXA CALL TWO CALL XXC CALL TWO CALL XXK CALL THREE CALL XXK ;K over CALL THREE RETURN ;*********************************************** SEVENTHREE ;TNX OM BEST OF 73s DE W6JFR CALL THREE CALL XXT ;TNX CALL TWO CALL XXN CALL TWO CALL XXX CALL THREE CALL XXO ;OM CALL TWO CALL XXM CALL THREE CALL XXB ;BEST CALL TWO CALL XXE CALL TWO CALL XXS CALL TWO CALL XXT CALL THREE CALL XXO ;OF CALL TWO CALL XXF CALL THREE CALL XX7 ;73 CALL TWO CALL XX3 CALL THREE CALL XXD ;DE CALL TWO CALL XXE CALL THREE CALL XXW ;W6JFR CALL TWO CALL XX6 CALL TWO CALL XXJ CALL TWO CALL XXF CALL TWO CALL XXR CALL THREE CALL XXK ;K RETURN ;**************************************************************** ;If we are not careful the computer could run this program and have qso's while we are out doing other things Hi! End