Ciao, dico la mia sperando di essere utile...
bloodsun prima di tutto non ho capito bene l'applicazione e il problema che
stai cercando di risolvere.
Per leggere un numero arbitrario di ingressi digitali, oltre ai multiplexer
che ti ha suggerito Romoloman, si possono usare anche i
registri, ad esempio i 74HC165 o 74HC597, non costano niente, ciascuno
carica 8 ingressi in parallelo, che poi vengono letti dal micro su una unica
linea seriale sincrona. Si possono concatenare per caricare quanti ingressi
si vogliono, e leggerli sempre su una unica linea seriale (3 pin) l'unico limite
è la frequenza del segnale di clock, che determina quanto tempo ci metti
per leggere tutti gli ingressi. Il PIC che stai usando dovrebbe avere gia
hardware dedicato allo scopo (USART).
La soluzione analogica che suggerivi (l'ho capito leggendo ElNonino, che ha
un ottimo intuito

) e' un DAC, che trasforma un segnale digitale in
uno analogico, il problema di questo sistema è che soffre molto di disturbi,
rumore, e altre cose come derive termiche delle resistenze. Il risultato è
che è che ad ogni canale che aggiungi la "precisione" del sistema deve
raddoppiare, capisci che oltre i 6 o 7 ingressi comincia a diventare un
lavoro inutilmente complesso. Guardati ad es. i dac R-2R su google.
Ciao!