我的一个仪器功能如下: 1.将现场的两路信号用AD采集过来后显示,显示方式为两种方式(单位不同,所以需乘个系数。) 2.将外部中断的脉冲个数累加起来显示,在断电时保存,在上电后读出来继续累加,并且将其脉冲频率显示出来。 我的程序结构如下: void main() { ..... //初始化部分 ..... while(1) { AD_data1(); //第一路AD采集值; AD_data2(); //第二路AD采集值; Display1(); //显示第一路现场数据A; Display1_1(); //第一路现场数据B,数据B是在数据A的基础上乘个系数如(1.25); Display2(); //显示第二路现场数据B; Display2_2(); //第二路现场数据B,数据B是在数据A的基础上乘个系数如(1.42); Sendout();//根据时事数据控制外部指示灯和继电器; Display3(); //显示外中断的脉冲数; Display4(); //显示外中断的脉冲频率; } } void pulse_int0() interrupt 0 //中断处理函数 { pulse++; //将脉冲数累加; write_24C02(10,pulse); //将脉冲数存入存储器中,频率很低,3~4次/秒; } 由于现场将此仪器放在一个750KW的发动机旁边,仪器在运行一段时间后,大概40分钟,所有显示数据会出现不刷新现象(所有显示数据都不变化了),断电后,数据显示正常,但发现中断函数一直在运行,因为断电后读出数据时数据并不是不刷新的数据,等运行一段时间后,还会出现如此问题。三台仪器有两台出现过次问题,另一台运行两个多小时后未出现过不刷新现象. 我现在的疑问是液晶屏不刷新造成的此现象还是程序跑飞造成的次现象,由于没有办法模拟现场实验,所以请大家帮助分析应该怎么解决,谢谢!
|