先说一下程序的主要思路:
1.配方号1-12的参数实际值分别存储在D2200-D2207 D2208-D2215 ...中(共12组,每组8个字)。 即每个配方号下有8个参数值。
2.添加删除或者调用3个过程其实差不多,都是建立配方号与存储地址首字之间的关系。就是程序中*8 +2200之类的操作。
3.添加时,把D400-D407存入前加@的上记2中得到地址中。
注:前加@表示内容作为地址再操作,和*作用差不多,只是BIN和BCD的问题。
4.其他 D2000当前存储的配方数量。D2002 D2004 D2006 。。。依次的配方号。
下面说下个人意见,
如果单就这几段程序来讲,有几处需要改进之处。
1.存储地址规划的很不好(如果没有其他未写的用途的话),比如如果第一个添加配方1,存储地址是D2200-D2207,第二个如果添加配方3,存储地址是D2208-D2215。这种规划就带来了混乱,自己给自己找麻烦,程序做的很复杂,相信大家看不懂的地方就是本来不必要的程序。好的规划应该是按照可以计算规则的顺序存储,不管第几个什么时候添加的配方3,它的参数存储地址永远是D2216-D2223(即2200+3X8=2216~)。这样程序就会简化很多,至少精简一半行数。循环程序FOR都不用写,D2060 D2061这两个让人迷糊的中间量就可以不用了。程序会很容易看懂的。
2.添加删除和调用不应该在一个界面中(从共用D400-D407这一点猜测的)。应该放到不同的操作权限界面中去,避免误删。同时这三个的操作习惯让人费解,比如按下按钮W53.xx后配方号清零,调用不存在的配方号,会显示上一次存在的配方参数等等。
3.D2002 D2004 D2006中存储的配方号,意义不是很大。不如简单点用一个字L0中的16位表示是否存在对应的配方。比如L0=#008F表示存在配方1 2 3 4 8.