Forse ti stai creando problemi che non esistono ...

Il valore va passato secondo il tipo (penso un unsigned char) e basta ...

La rappresentazione (decimale, esadecimale, ottale o altro ...) non e' affatto importante e viene gestita solamente nell'input e nell'output.

Il prototipo della tua funzione (a parte il valore restituito ...) sara' quindi, semplicemente

void funzione(unsigned char dato)