请问51单片机从串口通信SBUF接收的数据可以进行运算吗?
如果不能,为什么呢?有其他的方法吗?呵呵~我是用C语言编的,不知各位大侠有什么建议呢?程序片段如下:但是却没反应?为什么呢??temp=SBUF;//读入缓冲区的值SBU...
如果不能,为什么呢?有其他的方法吗?
呵呵~我是用C语言编的,不知各位大侠有什么建议呢?程序片段如下: 但是却没反应?为什么呢??
temp=SBUF; //读入缓冲区的值
SBUF=temp; //把接收到的值再发回电脑端
//定时器中断子程序片段:
if (seconds==temp) //定时4秒后
{
LED=1; //把值输出到P0口,用于观察
}
TH0=(65536-50000)/256;
TL0 =(65536-50000)%256; // 设置T0计数量高8位元、低8位元
TMOD = 0x21; //将Timer1设置为Mode2以产生波特率
PCON = 0x00; //SMOD为0
SCON = 0x50; //设置为MODE1
TH1 = 0xFd; //波特率9600
TL1 = 0xFd;
TR1 = 1; //启动TIMER1
TR0 = 1;
if (IntCount==20) // 若T0已中断20次数,即一秒
{ IntCount=0; // 重新计次
seconds++;
if (seconds==temp) //定义的temp变量没反应???????
{
LED=1; //把值输出到P0口,用于观察
} 展开
呵呵~我是用C语言编的,不知各位大侠有什么建议呢?程序片段如下: 但是却没反应?为什么呢??
temp=SBUF; //读入缓冲区的值
SBUF=temp; //把接收到的值再发回电脑端
//定时器中断子程序片段:
if (seconds==temp) //定时4秒后
{
LED=1; //把值输出到P0口,用于观察
}
TH0=(65536-50000)/256;
TL0 =(65536-50000)%256; // 设置T0计数量高8位元、低8位元
TMOD = 0x21; //将Timer1设置为Mode2以产生波特率
PCON = 0x00; //SMOD为0
SCON = 0x50; //设置为MODE1
TH1 = 0xFd; //波特率9600
TL1 = 0xFd;
TR1 = 1; //启动TIMER1
TR0 = 1;
if (IntCount==20) // 若T0已中断20次数,即一秒
{ IntCount=0; // 重新计次
seconds++;
if (seconds==temp) //定义的temp变量没反应???????
{
LED=1; //把值输出到P0口,用于观察
} 展开
4个回答
展开全部
当然能。
但是要靠您的软件来接收,正确的读出(从通信格式中解出)所要数据。编出正确的运算指令。
但是要靠您的软件来接收,正确的读出(从通信格式中解出)所要数据。编出正确的运算指令。
追问
大侠你好~可以具体讲讲怎么实现吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般都是先送到累加器A
不推荐直接运算,因为一旦SBUF的值被改变,他会启动一个发送过程,可能会影响到你的程序。
不推荐直接运算,因为一旦SBUF的值被改变,他会启动一个发送过程,可能会影响到你的程序。
更多追问追答
追问
那怎麽办?麻烦可以教教我吗?我调试了很久啦,希望您可以帮我解脱~~
追答
先送到累加器A或者其他的地址
再运算啊
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好自己做个缓冲区 在这个缓冲区里做运算
更多追问追答
追问
我也想过,但是用数组吗?我不是很懂,可以教教我吗?麻烦啦~
追答
QQ:251234994
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-05-21
展开全部
为什么不能呢?
否则 要他 干嘛?
呵呵
否则 要他 干嘛?
呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询