PIC Microcontrollers

--------- Read First before downloading and using any PIC code ----------


Multi Purpose PIC Controller - as published in RadCom June 2011

PIC Special I/O Lines Cross Reference table listing the I/O pins allocated for the peripherals on a range of popular devices.

PicKit to 'JNT Programming Lead Most projects on this site using PICs make use of a 4 pin in-circuit programming interface. Use this connecting lead to interface to PicKit2 and PicKit3 programmers.


AD9850_51.ZIP Controlling AD9850 and AD9851 DDS chips with RS232 control.

9852SW.ZIP Code for the AD9852 DDS module. Two versions are included: use 9852DDS with a 16C84 or 16F84 PIC controller, or 9852DDSX for the more up-to-date (and cheaper) 16F628 device. Source code can be found in the .ASM files, binary in the .HEX files

SYNTHBLB.ASM Control an LMX1501 Synthesiser chip. Interface via RS232 for CW or stepped sweep. Frequency stored in EE for standalone operation. Minimal changes needed for later generation devices such as LMX23xx / LMX24xx
Circuit Diagram


DTMFREM.ZIP DTMF Remote controller published in RadCom August 2001. The source code(.ASM) for a later version with three priority PINs is also included

VertiCom Synthesizer Controller and utilities Control these microwave synthesizer modules using ASCII HEX commands over a serial RS232 link.


VHFBCN05.ASM Code for driving VHF Beacons such as GB3VHF. Includes the code for generating JT65 from prestored data generated by JT65CODE.ZIP and reading Motorola compatible binary data from Oncore GPS modules and some Jupiter-T ones

DDSBeacons.zip Utilities for programming DDS soures for use in beacons - calculating frequency codes, formatting JT65 symbols from JT65CODE.

HFBCN02.ASM The code used for controlling the 5MHz beacons GB3WES and 'ORK
Includes the source code for reading NMEA data from various GPS modules.

NEWHFBCN.ASM Controls an AD9852 DDS for a self-contained HF beacon driver, and was used for GB3SSS on 1960kHz. This was a propagation test beacon operating from Poldhu, Cornwall from Nov 2006 to Feb 2007. Transmits a sequence of callsign and power steps similar to GB3RAL/WES/ORK, but with the pulsed sounder sequence replaced by a PSK31 message. All generated by reprogramming the DDS chip. From November 2007, GB3SSS is back on using the same hardware, but this time on 3579kHz

BCNKEYER.ZIP Beacon keyer module. Includes CW messages, Programmable pauses, Tx/Rx control. The module can be re-programmed over an RS232 link so no PIC programmer is needed to change the data.
... and now ... One with an analogue input line. The voltage in the range 0 - 5V is measured and can be sent back in the CW message in a number of different formats offering different accuracies and complexity. Use, for example, to allow a beacon to sends its own measured RF power as a user confidence check.

QRSKEYER.ZIP Version of BCNKEYER for SLOWCW (QRS) keying of LF Beacons. CW Dot lengths programmable from 1 to 20 seconds, delays 20 - 400 seconds. See .ASM file for details

Beacon Timestamp
Adding a timestamp to beacon transmissions to allow automatic QSLing and verification of reception.
Supporting software BCTMSTMP.ZIP

RTTY and CW Keyboard Adapters small PIC based adapter for using a PC keyboard to generate raw 5V logic level 45 baud RTTY or CW data. Can be used in parallel with the NUE-PSK Modem with a subset of common control codes. Includes a type ahead buffer to allow for fast typists. Use the 50 Baud version of the .HEX file if you need this speed instead.
Latest version includes a Keyboard to CW sender with 16 CW speeds selectable.
PCB layouts, circuit diagram and PIC .HEX code.

PIC_DDS.pdf A low frequency DDS using just a PIC and R-2R ladder. Generates frequencies up to about 40kHz with two tone FSK. Frequencies can be user set via ASCII / RS232 interface with auto baud determination. Two FSK options; one allows standard continuous phase FSK, the other uses frequency exchange keying keeping each of the two tones coherent and is more suited to weak signalling. See a comparison of the two FSK_Types.pdf
The .zip archive as above, and includes all PIC source and .HEX files for both FSK versions and a simple single tone demonstrator. PCB layout in various .PDF formats for home constructors.
- Now includes a dual channel version with 90 degree phase shifted I/Q outputs for direct image cancelling RF upconversion. Uses the 28 pin 16F870 PIC


PLSDNMEA.ASM Read the serial data from the OEM Trimble Palisade GPS Timing units (Field 10-8F-AE).
Outputs the date and time as an NMEA $GPRMC string.
Palisade Data Format Description of the 8F-AE extended Packet sent from this module, as used in PLSDNMEA.ASM

GPLOCDIS.ZIP Reads the NMEA data (GPRMC string) from a GPS module and displays on a standard (Hitachi compatible) LCD. The code is optimised for a 2 line 16 character LCD, but source code is supplied for customisation. Display can be cycled through Date, Time, 8 digit Locator, Lat/Long, Speed (in m/s & mph). Later version (2010/04/02) includes a routine for initialising Motorola GPS moduules)

The Mark2 version (2010/09/15) shows all data simultaneously on a 20 char x 4 line display, and now includes Course Over Ground as well as higher resolution for the speed in miles / hour

NMEA_Status.zip Simple NMEA monitoring programme running on an 8-pin 12F629 PIC. Monitors the GPRMC string and outputs the state of the GPS Status flag (The "A" or "V") as a logic level. Drive a warning LED or use to inhibit transmitters. As a bonus, there is also a minute marker pulse on another pin. See the documentation at the start of the .ASM file for connections etc.

All PIC code is offered completely free for you to download for personal use.
But, writing PIC code is very time consuming, especially I sometimes get requests for customised code which are usually honoured
So please consider making a donation via Paypal to give some impetus to further additions here ...

Back to Index