Could put all 12 pins of the BCDs on 2 8-bit parallel in/serial out type latches (can't think of a decent part number off the top of my head).
Trigger the load pin to grab the logic levels of all the pins, then shift in the 12 bits manually into a word, split the word up into the individual components and go.
OR...could use a 2nd PIC. Connect the 4 bit outputs of each BCD switch to whatever pins you want on the 2nd PIC. Use a 13th pin on the 2nd PIC as a trigger from the 1st PIC and have the 2nd PIC send out a couple bytes serially to the 1st PIC, which is waiting for it. 2 lines used on the 1st PIC, trigger and serial in. Don't even need to use the serial module, just use SERIN/SERIN2/DEBUGIN/whatever.
Parts count: 1 extra PIC (18 pins, simple firmware), add a 4Mhz resonator (if you use serial, you'd want a real oscillator, not the internal one for accuracy), pullups for the BCD switch lines (which you probably already have). That should be about it.
Bookmarks