打印

求救,使用picc8.05,整数比较,偶然出错的问题

[复制链接]
2479|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
serch|  楼主 | 2007-4-19 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pic, TE, BCD, CD, NEC
求救,使用picc8.05,整数比较,偶然出错的问题
我使用picc,由于芯片空间小,使用9级优化。在e2prom地址为data1,data2中,存方固定数,在中断中脉冲计数,并存放到e2prom地址data3,data4中,每次进入脉冲中断后,首先计数加一并存放到data3,data4中,并和存放到data1,data2中的预存数相比较,如果相等,则执行工作a,否则退出并显示,现在遇到一个问题,大部分情况下,当条件成立时,可以执行工作a,但是极少数情况,当计数到了,却没有执行工作a,请问这样比较有没有问题,是否是程序优化的问题?
union  
{
    struct
    {uchar a;
     uchar b;
    }onechar;
    uint c;
}bcd;
temp1=EE_READ(data1);
temp2=EE_READ(data2);
bcd1.onechar.a=temp1;
bcd1.onechar.b=temp2;
temp1=EE_READ(data3);
temp2=EE_READ(data4);
bcd1.onechar.a=temp1;
bcd2.onechar.b=temp2;
if(bcd1.c==bcd2.c)
{工作a;}
沙发
zgl7903| | 2007-4-20 21:00 | 只看该作者

个人见解

内部EEPROM写时是要关中断的,如果写得数据比较多,可能引起中断丢失的,因此建议你常用的变量不要放在EEPROM中,或者是用把需要存在EEPROM中的数据组合在一起,在不怕关中断的时候统一写入。另外EEPROM的写入寿命也是需要考虑的

使用特权

评论回复
板凳
yewuyi| | 2007-4-21 08:45 | 只看该作者

请仔细检查自己的程序

100%是你程序的问题;


建议从以下几个方面考虑问题:
1:数据格式的定义
2:数据计算的溢出是否有影响
3:EE读写时的中断问题
4:中断中变量定义的问题。

使用特权

评论回复
地板
兰天白云| | 2007-4-22 13:35 | 只看该作者

非要放到E2PROM中比较吗?

在RAM中比较可省不少精力

使用特权

评论回复
5
serch|  楼主 | 2007-4-23 10:31 | 只看该作者

当我改为判断等于

之所以将数据放到eeprom主要是考虑抗干扰,我想还是从eeprom中取数比较可靠。
我想知道如果程序是这样不是判断两个整形变量大于等于,程序是如果执行呢?

使用特权

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

本版积分规则

5

主题

9

帖子

1

粉丝