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

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

个人见解

内部EEPROM写时是要关中断的,如果写得数据比较多,可能引起中断丢失的,因此建议你常用的变量不要放在EEPROM中,或者是用把需要存在EEPROM中的数据组合在一起,在不怕关中断的时候统一写入。另外EEPROM的写入寿命也是需要考虑的
yewuyi 发表于 2007-4-21 08:45 | 显示全部楼层

请仔细检查自己的程序

100%是你程序的问题;<br /><br /><br />建议从以下几个方面考虑问题:<br />1:数据格式的定义<br />2:数据计算的溢出是否有影响<br />3:EE读写时的中断问题<br />4:中断中变量定义的问题。
兰天白云 发表于 2007-4-22 13:35 | 显示全部楼层

非要放到E2PROM中比较吗?

在RAM中比较可省不少精力
 楼主| serch 发表于 2007-4-23 10:31 | 显示全部楼层

当我改为判断等于

之所以将数据放到eeprom主要是考虑抗干扰,我想还是从eeprom中取数比较可靠。<br />我想知道如果程序是这样不是判断两个整形变量大于等于,程序是如果执行呢?<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

9

帖子

1

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