根据字节数,设定一个数组。
收到一个,存放一个。
收到 20 个后,判断:
if (recbuf[16] == 'm' &&recbuf[17] == 'b' &&recbuf[18] == 'a' &&recbuf[19] == 'r')
满足条件,就把其前面的,变换成数:
//recbuf[1] = '.'
x = (recbuf[0] - 48) + (recbuf[2] - 48) * 0.1 + (recbuf[3] - 48) * 0.01
//recbuf[4] = ' ' //recbuf[7] = '.'
n = (recbuf[5] - 48) * 10 + (recbuf[6] - 48) + (recbuf[8] - 48) * 0.1
//recbuf[9] = ' ' //recbuf[13] = '.'
p = (recbuf[10] - 48) * 100 + (recbuf[11] - 48) * 10 + (recbuf[12] - 48)
+ (recbuf[14] - 48) * 0.1 + (recbuf[15] - 48) * 0.01
这样做会丢失数据的。并且你将一个死循环放到中断里面也有很大问题。void Uart() interrupt 4 using 1
{
statick unsigned char i
if (RI)
{
RI = 0 //清除RI位
receive[i++]=SBUF//P0显示串口数据
P22 = RB8 //P2.2显示校验位
SBUF=receive[i++]
while(TI==0)
TI=0
}
if (TI)
{
TI = 0//清除TI位
busy = 0 //清忙标志
} }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)