Okay, at the risk repeating myself. I must warn it may sound a bit like a rant: The reason I don't use 8051s anymore is because I can't use my C software library or any C code snippet I wrote for another platform on it. I found I ended up writing the same software twice. This is caused by the harvard architecture of the device. It has 3 seperate memory areas. C doesn't like that because pointers won't work between memory areas. A real pain in the ass. Another reason is speed. Even though there are 40MHz versions available, the 8051's instruction set is not friendly for a C compiler to work with which results in slow code. Nowadays I've moved to the MSP430 for the small stuff.