STC 52 单片机 从串口接收字符串

STC89C52,用KEIL C语言编程,需要从串口接收一个四位数字字符串,接收后用两个整数变量存储。

例如串口发来 5168 要拆分到a和b两个变量,a=="51" b=="68"
汗……写错了
串口发来“5168”要拆成 a==51 b==68 ,a和b都是整数变量

第1个回答  2013-10-24
假设收到的数据存在单片机temp里面。
char temp[4] ={'5','1','6','8'};
a = (temp[0] - '0') * 10 + (temp[1] - '0');
b = (temp[2] - '0') * 10 + (temp[3] - '0');
这样就可以了。
第2个回答  2013-10-24
#include<reg51.h>
#define uchar unsigned char
uchar rec[4],data,datb,num;
bit flag=0;
void uart() interrupt 4
{
if(RI)
{
RI=0;
rec[num]=SBUF;
num++;
num%=4;
if(num==0)flag=1;
}
}
main()
{
TMOD=0x20;
TH0=0xfd;
TL0=0xfd;
SCON=0x50;
while(1)
{
if(flag)
{
flag=0;
data=rec[3]-0x30+(rec[2]-0x30)*10;
datb=rec[1]-0x30+(rec[0]-0x30)*10;
}
}
}追问

在单片机上调试不成功……

第3个回答  2013-10-24
用对应的数值的ascii减去数字0的ascii码,再看是那一位,是10位就乘以10再把他们全部加起来
第4个回答  2013-10-24
你好!!
是不是又是比较特殊的软件,说明你的开发环境?
上位机软件采用什么语言?
相似回答