Ya lo he conseguido sacar, quiza sea una forma un poco rudimentaria y haya otra manera mejor de hacer, pero asi me funciona.
Lo he hecho de la siguiente manera:
PORTD = 0x0F; // Doy un valor al puerto D, esto es para la simulacion, en la realidad el
// puerto D tendria el valor de los datos que reciba por el en paralelo
segundo_byte = PORTD;
suma = PORTDbits.RD0 + PORTDbits.RD1 + PORTDbits.RD2 + PORTDbits.RD3 + // Sumo todos los bits del puerto D
PORTDbits.RD4 + PORTDbits.RD5 + PORTDbits.RD6 + PORTDbits.RD7; // para ver cuantos 1 hay
if (suma%2 == 0) // Divido la suma entre 2 y si el resto de la suma es 0...
{
primer_byte = 0x00; // entonces es par y pongo el bit de paridad a 0
}
else // Si no...
{
primer_byte = 0x01; // es que es impar y pongo el bit de paridad a 1
}
palabra_completa = ( primer_byte<<8 ) | segundo_byte; // Y aqui uno mi byte de datos con el byte de paridad
Bueno, en este caso me ha sido mas facil porque he podido trabajar con los bits de un puerto, pero si lo hubiera tenido que hacer con los bits de una variable no se como hacerlo.
Si alguien sabe como puedo trabajar con los bits de una variable le estaria agradecido.Ah, otra preguntilla, no es importante pero me gusta hacer las cosas en su orden. Si tengo una palabra formada de 2 bytes, por ejemplo:
palabra = 0xAABB
Cual seria el primer byte? seria AA o BB?
Muchas gracias por vuestra ayuda. Gracias a vosotros ya tengo el proyecto bastante avanzado. Espero aprender mas y que mas adelante en vez de hacer tantas preguntas responda las de otros.
Saludos.