[51单片机] 想分别保存采集的最大,最小值

[复制链接]
1487|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 | 显示全部楼层
谢谢。
songchenping 发表于 2015-11-16 15:14 | 显示全部楼层
可以先赋值啊。避免U_data()变化。
 楼主| yuanquan12345 发表于 2015-11-16 16:07 | 显示全部楼层
谢谢。
gmm2015 发表于 2015-11-16 16:31 | 显示全部楼层
软件有BUG。少了U_data() == flag  的分支。
 楼主| yuanquan12345 发表于 2015-11-16 21:45 | 显示全部楼层
没明白?
hua00001 发表于 2015-11-17 13:17 | 显示全部楼层
i=U_data();
if(i>max) max=i;
if(i<min)min=i;
xygyszb 发表于 2015-11-17 14:33 | 显示全部楼层
hua00001 发表于 2015-11-17 13:17
i=U_data();
if(i>max) max=i;
if(i

max和min是不是也要先赋值?
 楼主| yuanquan12345 发表于 2015-11-17 16:01 | 显示全部楼层
谢谢。
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部