单片机中十六进制数转换为ASCII码,那么两者之间有什么联系??
2个回答
展开全部
如果是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
}//
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
}//
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,具有以下基本参数:1. 工作频率:72MHz2. 外部时钟:最高可达120MHz3. 存储器容量:64K bytes4. 数据总线宽度:32位5. 输入/输出端口...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询