Just tried it with the single-click timer added in. Apart from needing a bit of tweaking, working very nicely!
So this my first PIC program (or any significant program), and is an AD9850 controller, using Bob Weaver's BCD to FTW maths (no intermediate conversion to binary) to work out the FTW, with a 9 digit VFD (because it was the cheapest) driven by a PT6315, which also provides 4 LEDs and more tactile switch inputs than I can shake a stick at.
The spare 9th digit of the display is used to show "messages" indicating what function has been selected. Display is formatted with commas and dp's in the right places, choice of 3 formats. VFD has a cursor so I've used that to select individual digits to change, as an option. Default is whole value entry.
Supports "tuning" via a rotary encoder, sweep mode in 128 or 256 bit steps, sweep can be set as centre frequency+range, or as high and low limits.
3 hard-coded presets, just 1k, 100k and 1M, nothing special, and 3 user settable presets which you guys have been very kindly helping me with
So finally, everything works, except one thing - getting the fnorking DDS to accept a setting it's supposed to default to at switch on (400Hz, in honour of its use long ago by the BBC to accompany the white spot when there's no more telly, because it's so annoying apparently). Don't know what I'm doing wrong...
It's taken me a very long time (10 years maybe) because I've only been able to work on it in little bits at a time and a few times had to re-learn what everything I wrote, does, due to the long gap. I'll probably re-visit some parts of it since I've learnt a lot since I started - a few improvements to make no doubt.
Just need to perform some hackery on the AD9850 module because the filter it has is /terrible/!