- 3
- 0
- 约1.56万字
- 约 85页
- 2019-04-30 发布于江苏
- 举报
弹飞到这一区域后将顺流而下,不再跳跃(除非受到新的干扰)。这时,只要每隔一段设置一个陷阱,就一定能捕捉到乱飞的程序。 软件陷阱一定要指向出错处理子程序ERP。可将ERP安排在0030H开始的地方,这样就可以用00H, 00 H, 02 H, 00 H, 30H五个字节(为3条指令NOP,NOP,LJMP ERP的机器代码)作为陷阱来填充EPROM中的未使用空间,或者每隔一段设置一个陷阱(02 00 30),其他单元保持FFH不变。 (3)表格 有两类表格。一类是数据表格,供“MOVC A, @A+PC”指令或“MOVC A,@A+DPTR”指令使用,其内容完全不是指令 * * ;另一类是跳转表格,供“JMP @A+DPTR”指令使用,其内容为一系列的三字节指令LJMP或两字节指令AJMP。由于表格内容和检索值有一一对应关系,在表格中间安排陷阱将会破坏其连续性和对应关系,所以只能在表格的最后安排五字节陷阱(NOP,NOP,LJMP ERP)。由于表格区一般较长,安排在最后的陷阱不能保证一定捕捉到乱飞的程序,有可能在中途再次飞走,这时只好由别处的陷阱或冗余指令来制伏它了。 (4)程序区 程序区是由一串执行指令构成的,我们不能在这些指令串中间任意安排陷阱,否则将影响正常程序执行。但是,在这些指 * * 令串之间常有一些断裂点,正常执行的程序到此便不会继续往下执行,这类指令有LJMP、SJMP、AJMP、RET、RETI。这时PC的值应发生正常跳变。 如果还要顺次往下执行,必然会出错。我们在这种地方安排陷阱之后,就能有效地捕捉住它,而又不影响正常执行的程序流程。例如,在一个根据累加器的正、负、零值的进行跳转的三分支程序中,软件陷阱的安置方式如下: * * * 由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率。在当前程序存储器容量不成问题的条件下,多多设置陷阱是有益的。 7.3 软件滤波 对于实时数据采集系统,为了消除传感器通道中的干扰信号,常采用硬件滤波器先滤除干扰信号,再进行A/D转换。也可采用先A/D转换,再对A/D转换后的数字量进行软件滤波消除干扰。下面介绍几种软件滤波的方法。 1.算术平均滤波法 算术平均滤波法就是对一点数据连续取n个值进行采样,然后求算术平均。这种方法一般适用于具有随机干扰的信号的滤 * 波。这种信号的特点是有一个平均值,信号在某一数 值范围附近上下波动。这种滤波法,当n值较大时,信号的平滑度高,但灵敏度低;当n值较小时,平滑度低,但灵敏度高。应视具体情况选取n值,既要节约时间,又要滤波效果好。对于一般流量测量,通常取经验值n=12;若为压力测量,则取经验值n=4。一般情况下,经验值n取3~5次平均即可。 读者可根据上述设计思想,设计出算术平均滤波法的子程序AVGFIL。 2.滑动平均滤波法 上面介绍的算术平均滤波法,每计算一次数据需要测量n次。对于测量速度较慢或要求数据计算速度较快的实时控制系统来 * * 说,该方法无效。下面介绍一种只需测量一次,就能得到当前算术平均值的方法—滑动平均滤波法。 滑动平均滤波法是把n个采样值看成一个队列,队列的长度为n,每进行一次采样,就把最新的采样值放入队尾,而扔掉原来队首的一个采样值,这样在队列中始终有n个“最新” 采样值。对队列中的n个采样值进行平均,就可以得到新的滤波值。 滑动平均滤波法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差,不易消除由此引起的采样值的偏差。因此它不适用于脉冲干扰比较严重的场合。通常,观察不同n值下滑动平均的输出响应,据此 * * 选取n值,以便既少占有时间,又能达到最好的滤波效果,其工程经验值参考如下: 例14-1为滑动平均滤波法的参考程序。 【例14-1】假定n个双字节型采样值,30H单元为采样队列内存单元首地址,n个采样值之和不大于16位。新的采样值存于2EH、2FH单元,滤波值存于50H、51H单元,AVGFIL为本程序调用的算术平均滤波子程序。参考程序如下: * * * 3.中位值滤波法 中位值滤波法就是对某一被测参数接连采样n次(一般n取奇数),然后把n次采样值按大小排列,取中间值为本次采样值。 中位值滤波能有效地克服因偶然因素引起的波动干扰。对温度、液位等变化缓慢的被测参数采用此方法能收到良好的滤波效果。但对于流量、速度等快速变化的参数一般不宜采用中位值滤波法。 【例14-2】 设采样值从8位A/D转换器输入5次,存放在SAMP为首地址的内存单元中,采用中位值滤波。 参考程序如下: * * * * * 4.去极值平均值滤波法 前面介绍的算术平均与滑
原创力文档

文档评论(0)