求助:把单片机接收到的ASCII转换成十进制数值

单片机从串口接收到数据“1001”,是ASCII形式,我用了数组接收,想要把它转换成十进制数值1001,网上查到是说把ASCII码减去‘0’,就是对应的十进制了,为什么还... 单片机从串口接收到数据“1001”,是ASCII形式,我用了数组接收,想要把它转换成十进制数值1001,网上查到是说把ASCII码减去‘0’,就是对应的十进制了,为什么还是不对呢?
以下是对应部分的程序:
//串口接收数据
if(RI == 1)
{
RI = 0;
for(b=0;b<4;b++)
{
input[b] = SBUF; //把收到的数据写进数据,若输入1001就应该得到{'1','0','0','1'}
}
}
//ASCII转成十进制
a=input[0]-'0';
b=input[1]-'0';
c=input[2]-'0';
d=input[3]-'0';
inputdata=a*1000 +b*100 + c*10 + d;
展开
 我来答
烟火夜空
2017-03-16 · TA获得超过6623个赞
知道大有可为答主
回答量:1678
采纳率:93%
帮助的人:571万
展开全部
RI 一个接收结束信号,只代表收完成1个字节。LZ 的程序一个RI,却用for 接收4次,收了4个字节
更多追问追答
追问
噢!那该怎么改正呢?
(没有财富值可以感谢您真的很抱歉><)
追答
我有43583财富,回答你的提问跟财富无关。
如果b是全局变量,那么每个RI信号就赋值一个字节input[b]=SBUF;同时b++;

一旦b=4,说明4个存满,此时可以读取了,同时要将b清0。但LZ的程序,b是个复用的变量,建议取个其他名字
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F4是由ST(意法半导体)开发的一种高性能微控制器系列。其采用了90nm的NVM工艺和ART技术(自适应实时存储加速器,Adaptive Real-Time MemoryAccelerator)。STM32F4是一款基于ARM C... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式