恭喜,你发布的帖子
发布于 2023-01-09 15:48:11
28楼
看得出,楼主在有意减小封装块大小,无奈基础指令太多,减起来实在是太困难了
从楼主这个例子可以看出,要想一块走天下,对于200smart来说,是需要付出代价的。 在200smart上做数据类型选择,是楼主这个冒泡程序的特色。之前我有个封装块也做了数据类型选择功能,发现太占用资源了,最后还是分开做。不过,在同一个程序中,如果有多组不同数据类型的数组需要排序,可以用楼主的封装块(同一个封装块的首次调用占用空间较大,从第二次调用开始,每个块占用空间大幅减小)。
在官方出来LGF块之前,我也做了一套冒泡排序块,不过都是分开做的,但是我做出来过后,基本很少使用。
感谢楼主分享。
要减是可以减的。
就拿网络5来说。
功能是当选择了字节;字;双字的时候间接寻址的递增量自动适应1;2;4
你可以选择:
1的时候是Lx.0=1
2的时候Lx.1=1
3的时候Lx.1=Lx.0=1
4的时候Lx.2=1
然后后面就选择性地执行四次dinc AC0。再后面就DI_I;I_b只出现一次。
然后后面所有出现关于数据类型选择的比较指令都用
LD LX.x代替。
程序量少了。扫描时间也少了。
几万个比较指令都被LD触点代替了,会极度明显地减少扫描时间。
老实说,我那地毯级的程序81毫秒就是这么来的。一点一滴省出来。
现在我这个排序程序用在一个中值滤波。不完全排序,去n个头去n个尾,中间平均。还是滤波程序。滤波是基础啊。除此之外我没有用过排序了。在模拟量滤波这样斤斤计较的程序内,有什么可能让我分周期执行一个排序?巴不得每个周期都排一次序,不用平均数而是用递推平均。碍于排序时间,才用平均值算法。
库中库,滤波,线性变换,这些都是紧密相连的。有人可以跟我谈谈什么高耦合低耦合就好了。
请填写推广理由:
分享
只看
楼主