单片机能够识别与处理的是二进制码,一位十六进制数在内存中的表现为四位二进制数。至于ASC码与BCD码,通俗来讲,前者是某个数字、字母、或符号的代码,固定且唯一,而后者则是二进制编码的十进制数。举个栗子,大写字母A的ASC码为41H,十六进制数0AH,表示为二进制位00001010B,表示为十进制则为10。
此时十六进制中的A与大写字母A并不是一个东西。此处补充一点,ASC码能表示的数字限于0~9。那么此时如何将一位十六进制数转换为相应的ASC码呢?
十六进制数0~9对应的ASCII码为30H~39H,字母A~F对应的ASCII码为41H~46H。
故数字0~9表示为ASCII码只需加上30H,便可得到相应的ASC码值,即可表示为ASCII码。对于A~F,以A举栗,0AH的二进制码为00001010B,加上37H(0011 0111B),便可得到41H(0100 0001B),而41H便为大写字母A的ASCII码值。
此时再来说为何要将好端端十六进制码转换为ASCII码?因为单片机能识别和处理的是二进制码,而输入/输出设备(如LED显示器、微型打印机等)则常使用ASCII码或BCD码。故需要进行此转换。