51单片机编程,将ASCII码转换为十六进制数

2024-11-15 01:29:44
推荐回答(5个)
回答(1):

如果是数字的话ASCII码转换为:x-'0'
如果是字符的话ASCII码转换为:x-'A'或者x-'a'

回答(2):

ASCII码是7位的,前面补上0就是8位的十六进制的数字了...

回答(3):

如果是ASCII码表内的符号值,那么ASCII值本身就可以认为是 16进制的(因为进制只是给人看的,单片机只有2进制,没有ASCII 和 Hex 之分),但如果是Hex值,经过ASCII发送后,需要接收解出数值,那么可以用这个函数:
uchar ASCII_ToHex(uchar ascii_data) //ASCII 转 Hex 函数
{
uchar hex_data=0; //定义 Hex变量存储转换结果
if(ascii_data>='0' && ascii_data<='9') hex_data=ascii_data-'0'; //若 转换内容为 字符'0-9',则转成对应数字0-9
else if(ascii_data>='a' && ascii_data<='f') hex_data=ascii_data-'a'+10; //若 转换内容为 字符'a-f',则转成数字10-15
else if(ascii_data>='A' && ascii_data<='F') hex_data=ascii_data-'A'+10; //若 转换内容为 字符'A-F',则转成数字10-15
return hex_data; //返回转换结果,非以上字符,不在Hex(0-F)范围内,默认0
}//

回答(4):

最近也是课设,希望有帮助
PART1:
MOV AH ,01H ;键盘输入任意正整数
INT 21H
CMP AL,0DH ;判断是否为回车键
JZ PART2
SUB AL,30H ;将ASCII码转换成16进制数
PUSH AX
MOV AX,HE
SHL AX,1 ;乘2(0001H)
PUSH AX
MOV CL,2 ; (02H)
SHL AX,CL ;乘4
POP BX
ADD AX,BX
POP BX
MOV BH,0 ;
ADD AX,BX
MOV HE,AX
JMP PART1

回答(5):

用汇编语言?