just a comment
I have had a case (do not remember why) where I needed an enum to be 16 bits. the 'fix was
MAKE_ENUM_INT = 256
Yes, that definitely should work.
However don't necessarily assume all compilers will make this optimization for values between -128 to 127. I believe some of the non-Keil compilers will always use 16-bit enums.
Always double check that sizeof(<enum type>) returns the size that you expect. You may want to make an assert if you have code that needs to serialize the enum.
Unfortunately most compilers, including Keil C51, do not support the C11 introduced static_assert extension.