Эстетство и болезни роста. Вот, скажем, сименс перенёс модуль CAN, у которого в регистрах живут малые индейцы, на процессор, в котором живут большие индейцы. Кто-то скажет, что при Сталине такой %уйни не было :-) http://www.keil.com/support/docs/799.htm
The C166 family stores 16-bit values in little-endian format. When the CAN peripheral was copied over to the 8051 devices, the registers were left in the same format, however the architecture of 8051s is big-endian.
There is no way to make the compiler store unsigned ints in little-endian format, so the CAN registers have to be loaded in single bytes, high and low.