Does anyone know of a converter to take 8051 assembly source code to C source code.
I doubt that such a thing exists! Think about it: * any given 'C' statement could be implemented in a multitude of different ways in assembler; * a single 'C' statement could give rise to dozens lines of assembler For example, consider some assembler that manipulates a byte at a certain address. This is immediately followed by some more assembler that manipulates the very next address. Is this coincidence, or should the two bytes be connected in the 'C' code? maybe they're part of an array? or a structure? or a 16- or 32-bit number? Who can say!!!???
Decompilers do exist. They cannot, of course, completely recover the original source. (Variable names, for example, are completely lost.) You can recovery some of the control flow, and some of the data patterns. Decompilers work better on machines with a well-defined ABI for compiler authors. That does not (so far as I know) describe the 8051. If not, then a decompiler would be pretty closely tied to a particular compiler -- or be reduced to recovering that much less information.
Roger doesn't even state if the assembler came from a compiler. It may have been written in assembler to start with. My guess is that he has some sample code written in assembler, but he has only ever coded in C, so wants it converted to C. Roger, it would make everyone's life easier if you have an unusual request, to specify why you are asking the question.
The conventional reply to this request is: "No. You can't turn back hamburgers into a cow." What you can get, and is sometimes advertised as a decompiler, is a CPU simulator written in C hard-linked to a copy of the machine code. That's equivalent to constructing a statue of a cow from hamburgers. It still wont eat grass and give milk, though.