打印

问一个串口发送unsigned long数据的问题

[复制链接]
2680|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xbyu520|  楼主 | 2013-7-27 14:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xbyu520 于 2013-7-27 14:42 编辑

c8051f340单片机,ad采样的数据是unsigned long数据,如何发送给pc串口调试助手软件。我是这样写的:
mV =  result/1024*3240;                   //这条指令作用是让16进制转10进制。VDD=3240mV,可以根据实际VDD测量电压,做适当修正,以消除微小误差 .VDD要准确很才行     
           a[0]=(mV>>24);
         
          a[1]=(mV>>16);
         
          a[2]=(mV>>8);
         
          a[3]=mV;
          SBUF0=a[0];
          while(TI0==0);
          SBUF0=a[1];
          while(TI0==0);
          SBUF0=a[2];
          while(TI0==0);
          SBUF0=a[3];
          while(TI0==0);


为什么我这样写,软件显示00 00  且不随采样电压变化,一直是00 00

相关帖子

沙发
dqyubsh| | 2013-7-27 15:05 | 只看该作者
写成四个字节的union,分别发送即可,用不着转10进制。

使用特权

评论回复
板凳
joyme| | 2013-7-27 15:06 | 只看该作者
TI0要手工清零吧
while(!TI0)
    ;
TI0 = 0;

使用特权

评论回复
地板
原野之狼| | 2013-7-27 15:10 | 只看该作者
Keep it simple, but not too simple.

使用特权

评论回复
5
xbyu520|  楼主 | 2013-8-3 11:03 | 只看该作者
我开了串口0中断,在中断服务程序里写了TI0=0

使用特权

评论回复
6
ningling_21| | 2013-8-3 12:13 | 只看该作者
xbyu520 发表于 2013-8-3 11:03
我开了串口0中断,在中断服务程序里写了TI0=0

发送可以不用中断,改用查询试试.

使用特权

评论回复
7
RF-7| | 2013-8-3 13:21 | 只看该作者
       a[0]=(mV>>24);
         
          a[1]=(mV>>16);
         
          a[2]=(mV>>8);
         
          a[3]=mV;
        这几个语句顺序有问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

854

帖子

5

粉丝