Has someone a good hint how to implement a parity-calculation of a byte in the most efficient way on an C51-device?
absolutely
Relying on a register in C is, at best, a kludge. Many will not use assembler because they believe that 'portability' is 'interesting' for code for small embedded, BALONEY. The only reason for using C with small embedded is coding and maintenance ease. Of course, a C function not using any I/O for small embedded is somewhat portable, but the C postulate that the whole shebang is portable is totally invalid for small embedded.
BTW how would ACC = Ralph; george = P; ever be portable.
Erik
PS if this is because you can not write it in assembler, I pity you.