SBUF怎么赋值呢?

2019-07-15 13:14发布

要发送出去数据就是给SBUF赋值,可是赋值之后接收到的和赋给SBUF的值不一样呢?
程序.jpg
接收到的数据为什么不是5呢??
为啥有个8.jpg
labview读取的也是这样 85 85 85。
不知道是哪里出错了,期待前辈赐教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
dabing89
1楼-- · 2019-07-15 13:51
keil-uvision4
2楼-- · 2019-07-15 19:05
可能是波特率不对。
另外,在给SBUF赋值后也不能立即通过if(TI == 1)判断是否发送完毕。串口发送一个字节数据需要的时间相对来说挺长的,少说也能执行几十个if(TI == 1),应该用while(TI == 0);或者while(!TI);等待发送完成,然后再用TI = 0清除标志位。
jianfeii
3楼-- · 2019-07-16 00:32
 精彩回答 2  元偷偷看……
chenwei6991627
4楼-- · 2019-07-16 04:13
要么波特率不对,要么就是哪边设置不对
haiwon
5楼-- · 2019-07-16 05:44
本帖最后由 haiwon 于 2016-8-15 10:15 编辑

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void Delay(uint j)
    {     uint i;
            for(;j>0;j--)
          {         
                for(i=0;i<27;i++);

          }
    }
void main ()
{
        TMOD = 0x20;          //
        TH1 = 253;        // 赋初值
        TL1 = 253;
        TR1 = 1;          // 开始计时
        SCON = 0x50;          //工作方式1,9600bps
         while(1)
                {
                SBUF=5;
                while(TI==0) ;
                TI=0 ;
                Delay(10000);
                }
}


把if(TI==0)改用while(TI==0)之后,收到的数据还是多了一个“8”,不知道是什么情况@keil-uvision4
keil-uvision4
6楼-- · 2019-07-16 08:02
haiwon 发表于 2016-8-15 10:12
#include
#include
#define uchar unsigned char

我迷茫了……抱歉。

一周热门 更多>