发布于 2005-08-24 08:42:39
0楼
GW编的可能会有点问题,在程序的最后两句顺序应该对调一下:
MOVR #e1, #e2 //为下次计算作准备
MOVR #e, #e1
还有,PID增量式的公式尽量不要这样写. 可以直接写成:
△OUT=Ae+Be1+Ce2 ,(可以由你的公式变换而来,这样计算机处理的步骤减少了,就只要做三个乘法和两个加法)
还有,程序里用了太多的浮点数指令,这样会增加很多的程序扫描时间,最好都用整数的数学运算或者移位处理.
当然,我说的这样也只是说能处理得更好些.实际意义可能不大.但是如果这个PID是用在定时中断里调用,而且中断时间挺短,那么就要注意了. 因为中断的原则是程序越短越好!
还有,你的程序里面没有输出限幅,这可能是不妥的.
I can do it