打印
[51单片机]

想分别保存采集的最大,最小值

[复制链接]
1195|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuanquan12345|  楼主 | 2015-11-16 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问这样能实现不?

if(U_data() > flag)
{
        if(U_data() > ReadX5045(0x06))
        {
                WriteX5045(U_data(), 0x06);
        }
}
else if(U_data() < flag)
{
        if(U_data() < ReadX5045(0x07))
        {
                WriteX5045(U_data(), 0x07);
        }
}
flag = U_data();        // 更新数据
我想实现:采集的数据,将最大值和最小值分别保存到X5045中。
U_data(),这个函数是返回采集数据。

相关帖子

沙发
yuanquan12345|  楼主 | 2015-11-16 11:21 | 只看该作者
  if(U_data() < ReadX5045(0x07))
这一句,因为初始地址07的数据是0,这个if就永远执行不到,是不是应该先给地址07写入一个数据?

使用特权

评论回复
板凳
ayb_ice| | 2015-11-16 11:39 | 只看该作者
yuanquan12345 发表于 2015-11-16 11:21
if(U_data() < ReadX5045(0x07))
这一句,因为初始地址07的数据是0,这个if就永远执行不到,是不是应该先 ...

U_data()调用一次就可以了,多次调用可能数据会不一样,从而产生BUG

当然要初始的,

使用特权

评论回复
地板
yuanquan12345|  楼主 | 2015-11-16 13:24 | 只看该作者
谢谢。

使用特权

评论回复
5
songchenping| | 2015-11-16 15:14 | 只看该作者
可以先赋值啊。避免U_data()变化。

使用特权

评论回复
6
yuanquan12345|  楼主 | 2015-11-16 16:07 | 只看该作者
谢谢。

使用特权

评论回复
7
gmm2015| | 2015-11-16 16:31 | 只看该作者
软件有BUG。少了U_data() == flag  的分支。

使用特权

评论回复
8
yuanquan12345|  楼主 | 2015-11-16 21:45 | 只看该作者
没明白?

使用特权

评论回复
9
hua00001| | 2015-11-17 13:17 | 只看该作者
i=U_data();
if(i>max) max=i;
if(i<min)min=i;

使用特权

评论回复
10
xygyszb| | 2015-11-17 14:33 | 只看该作者
hua00001 发表于 2015-11-17 13:17
i=U_data();
if(i>max) max=i;
if(i

max和min是不是也要先赋值?

使用特权

评论回复
11
yuanquan12345|  楼主 | 2015-11-17 16:01 | 只看该作者
谢谢。

使用特权

评论回复
12
yuanquan12345|  楼主 | 2015-11-18 08:33 | 只看该作者
改成这样:
unsigned int j;
j = U_data();
WriteX5045(0xFF, 0x07);        // 将07地址,初始化最大值
if(j > flag)
{
        if(j > ReadX5045(0x06))
        {
                WriteX5045(j, 0x06);
        }
}
else if(j < flag)
{
        if(j < ReadX5045(0x07))
        {
                WriteX5045(j, 0x07);
        }
}
flag = j;        // 更新数据

使用特权

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

本版积分规则

75

主题

1155

帖子

3

粉丝