查看: 3165|回复: 6

[S12] mc9s12dg128的串口数据运算问题。

[复制链接]

该用户从未签到

1

主题

11

帖子

0

新手上路

Rank: 1

积分
25
最后登录
1970-1-1
发表于 2012-5-9 18:43:52 | 显示全部楼层 |阅读模式
这是一段mc9s12dg128的串口收发程序。串口收到四个数据,分别进行运算。再通过串口输出。但是输出结果不对,请问问题出在这是我的程序。
比如收到的第一个数据位1.2,那就应该做运算1.2+1,发出的数据为2.2.但是结果不对,请各位大神帮我看看,问题出在哪。。。谢谢。
#include      
#include     
#pragma LINK_INFO DERIVATIVE "mc9s12dg128"


byte num;
byte rev_data[3];

//.................SCI0模块初始化....................//
void SCI0_Init(void)
    {
SCI0BDL=(unsigned char)((16000000UL /* OSC freq */ / 2) / 9600 /* baud rate */ / 16 /*factor*/);
SCI0CR1=0X00;
SCI0CR2=0X2C;
    }


//..................主函数...................//
void main(void)
{
SCI0_Init();
DisableInterrupts; /*禁止中断*/
while(1)
{     
int k=0;
if(SCI0SR1_RDRF==1)
{
  rev_data[k++]=SCI0DRL;

   if(k>=3)      
   k=0;
}
num= rev_data[0]+1;   /*接收第一个数据并运算
  while(!SCI0SR1_TDRE);
SCI0DRL=num;          /*把第一个运算结果输出

num= rev_data[1]+2;      /*接收第二个数据并运算
  while(!SCI0SR1_TDRE);
SCI0DRL=num;               /*把第二个运算结果输出
 
num= rev_data[2]+3;  /*接收第三个数据并运算
  while(!SCI0SR1_TDRE);
SCI0DRL=num;    /*把第三个运算结果输出

  num= rev_data[3]+4;      /*接收第四个数据并运算
  while(!SCI0SR1_TDRE);
SCI0DRL=num;            /*接收第四个数据并运算
 
}
}
我知道答案 目前已有5人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-5-10 10:45:59 | 显示全部楼层

    RE:mc9s12dg128的串口数据运算问题。

    接收的数据只能是char型的,怎么会有小数位呢?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2012-5-11 09:36:55 | 显示全部楼层

    回复:mc9s12dg128的串口数据运算问题。

    回复第 2 楼 于2012-05-10 10:45:59发表:
    接收的数据只能是char型的,怎么会有小数位
    那是,我设置的问题了??我把接受的数据设置为single,好像也是不行的。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-5-11 11:33:35 | 显示全部楼层

    RE:mc9s12dg128的串口数据运算问题。

    数据不是浮点数。只有整形。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2012-5-12 10:32:39 | 显示全部楼层

    RE:mc9s12dg128的串口数据运算问题。

    请问,要实现我所说的功能,我该怎没修改这个程序呢。。。我改了好久,都没成功,希望各位给我点修改建议,或者修改的代码,谢谢。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    1970-1-1
     楼主| 发表于 2012-5-17 11:13:47 | 显示全部楼层

    回复:mc9s12dg128的串口数据运算问题。

    回复第 4 楼 于2012-05-11 11:33:35发表:
    数据不是浮点数。只有整形。 

    您好。我把接收到的每个变量都存在数组中,然后把数组中的元素用atof()变成浮点数。这样就可以运算了吧?但是为什末得到的数据却不正确。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    2019-5-27
    发表于 2012-9-29 13:08:18 | 显示全部楼层

    RE:mc9s12dg128的串口数据运算问题。

    bucuoo
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 22:55 , Processed in 0.100462 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表