PS: se vuoi gestire la parità devi anche saper calcolare il bit di parità ma dato che forse è un poco "ostico" gestire i bit, ti do' qualcosa su cui iniziare a lavorare.
Prova questa funzione, che ho scritto "al volo" (quindi da verificare), nella quale per controllare se il bit i-esimo è a 1 utilizzo lo shift (>>) per portare in prima posizione (bit meno significavito, LSB) il bit che voglio verificare e con l'operatore bitwise AND (&) lo "maschero" ossia estraggo il solo bit che mi interessa e vedo se è diverso da 0:
int calcolaParita(byte b) {
int count = 0;
for (int i = 0; i < 8; i++) {
if ((b >> i) & 1) {
count++;
}
}
return ((count % 2) << 7);
}
La funzione restituisce la parità come bit più significativo (MSB) ossia 0x80 se dispari, 0x00 se pari. Questo valore lo dovresti quindi confrontare con il bit di parità che ricevi (sempre estraendo il solo MSB), oppure aggiungere al dato che stai inviando.
Non so quale sia la tua esperienza con oeprazioni "bitwise" ma ti assicuro che sono concetti molto utili nei microcontrollori. Pensi di provarci?