list p=12F629, r=dec #include __CONFIG _INTRC_OSC_NOCLKOUT&_WDT_OFF&_CP_OFF&_MCLRE_OFF ;************************************************************************** ; Benefon Sigma Gold RF module controller ; ; LMX2335 dual synthesizer ; Pic12F629 ; ; (c) Ramirez@phreedom.org ;************************************************************************** ;************************************************************************** ; 4MHz, 1instr. cycle = 1mS ; ;************************************************************************** ;************************************************************************** ; I/O Ports ; GP0 equ 0 GP1 equ 1 GP2 equ 2 GP3 equ 3 GP4 equ 4 GP5 equ 5 ;************************************************************************** ; define ; #define CLK GPIO,GP0 #define Data GPIO,GP1 #define LE GPIO,GP2 ; PLL1 Rx ; PLL2 Tx ; ; Freq = N * (Fosc/R) ; (Fosc/R) = synth step (25kHz for example) ; ; ; N = (P*B)+A P=64 B>=A A

BH(3bit) BL(8bit) ; A (7bit) ; ; R (15bit) -> RH(7bit) RL(8bit) ; ; Tx -> 17323 * 25 = 433075 = 433.075MHz ; Rx -> 20450 * 25 = 511250 = 511.250MHz ( - 77.250MHz 1stIF) = 434.000 MHz ; #define R1L 0x00 ; R = 512d = 0x200 #define R1H 0x02 ; N = 20450 N = (P*B)+A | P=64 | B>=A | A

to digital IO bsf status,rp0 clrf TRISIO ; GP<5:0> output bcf status,rp0 begin bcf LE bcf CLK call wait50ms ; R1 movlw Rconf1 movwf reg movlw 5 call senddata movlw R1H movwf reg movlw 7 call senddata movlw R1L movwf reg movlw 8 call senddata movlw RF1R movwf reg movlw 2 call senddata bsf LE bcf LE ; R2 movlw Rconf2 movwf reg movlw 5 call senddata movlw R2H movwf reg movlw 7 call senddata movlw R2L movwf reg movlw 8 call senddata movlw RF2R movwf reg movlw 2 call senddata bsf LE bcf LE ; N1 movlw Nconf1 movwf reg movlw 2 call senddata movlw N1BH movwf reg movlw 3 call senddata movlw N1BL movwf reg movlw 8 call senddata movlw N1A movwf reg movlw 7 call senddata movlw RF1N movwf reg movlw 2 call senddata bsf LE bcf LE ; N2 movlw Nconf2 movwf reg movlw 2 call senddata movlw N2BH movwf reg movlw 3 call senddata movlw N2BL movwf reg movlw 8 call senddata movlw N2A movwf reg movlw 7 call senddata movlw RF2N movwf reg movlw 2 call senddata bsf LE bcf LE sleep ;************************************************************************** ; Send Data ; ; reg - data to send ; w - bits to send (send last 'w' LSB bits) senddata movwf count ; bits to send movlw 8 ; all bits movwf precount preloop movfw count subwf precount,w btfsc status,z goto loop rlf reg decf precount goto preloop loop rlf reg btfsc status,c bsf Data btfss status,c bcf Data bsf CLK bcf CLK decfsz count goto loop return ;*************************************************************** ; Wait 50mS ; wait50ms movlw 0x80 movwf wait2 kill3a movlw 0xff movwf wait1 kill5a decfsz wait1 goto kill5a decfsz wait2 goto kill3a return end