; 12C508 clock generator program ; filename : 508_CLK.asm ; R. Simmons / WB6EYV ; Santa Barbara CA 93103 USA ; e-mail : pelican2@silcom.com ; This program generates a 360 Khz clock to replace the NE555 ; chip in WB6EYV Dopplers that are upgraded to a digital readout ; or the RS232 option. The 555 chip does not "behave" very well ; when operated above 250 KHz. ; The 12C508 is an 8-pin chip, just like the NE555, but the ; power and ground pins are reversed. To deal with this, it is ; necessary to bend the 12C508 pins 180 degrees and mount the chip ; upside down on the board. ( or else mount it on the backside ; of the board ) When this is done, pin 3 of the original NE555 ; chip "translates" to pin 6 on the 12C508 chip. ( = clk output pin ) ; The internal 4 MHz oscillator is used, and the output frequency ; is very nearly 360 KHz, owing to a pulse-swallowing method. processor 12c508 ;identify micro for assembler __config b'01010' ;internal /MCLR ;WDT = off ;internal 4 MHz oscillator ;code protect = off ; ; Calibrate the internal 4 MHz oscillator ; ( calibration value is stored in W register after every CPU RESET ) ; andlw h'fc' ;eliminate bottom 2 bits movwf OSCCAL ;calibrate the 4 MHz clock ; ; Configure pin 6 for an output ; movlw h'fd' ;make pin 6 = output tris GPIO ;do it ; ; This routine generates the output pulses ; ; Four out of five pulses have an extra NOP instruction, for extra ; time delay. The fifth pulse does not have a NOP instruction. ; The "average" frequency result is therefore approx 357 KHz. ; This method results in some clock "jitter", but the resulting ; jitter is too small to have a noticeable effect on the operation ; of the Doppler. CLOCK bsf GPIO,1 ;pin 6 = hi (first pulse of 5 ) bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi (second pulse of 5 ) bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi (third pulse of 5 ) bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi (fourth pulse of 5 ) bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi (fifth pulse of 5 ) bcf GPIO,1 ;pin 6 = lo ; ; Pattern repeats ( 30 times total ) from now on... ; Second pattern here ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Third pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Fourth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Fifth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Sixth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Seventh pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Eighth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Ninth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Tenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Eleventh pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twelvth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Thirteenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Fourteenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Fifteenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Sixteenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Seventeenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Eighteenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Nineteenth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twentieth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty first pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty second pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty third pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty fourth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty fifth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty sixth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty seventh pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty eighth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Twenty ninth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; Thirtieth pattern ; bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo nop ;extra delay bsf GPIO,1 ;pin 6 = hi bcf GPIO,1 ;pin 6 = lo ; ; loop to beginning ; goto CLOCK ;repeat patterns ;---------------------------------------------------------------- ; ; End of executable code ; ; Label Definition Area ; ;---------------------------------------------------------------- ; ; PIC Pre-defined Registers for 12C508 ; ;---------------------------------------------------------------- ; OSCCAL equ h'05' ;oscillator calibration register GPIO equ h'06' ;GPIO register end