展开查看
以下是引用n次看你的背影在2015-01-15 23:24:15的发言 >1楼:楼主:看了你的代码,代码执行的过程我描述一下,你有时间可以测试、验证一下。
L MB 28 //装载时钟存储器本周期8个位当前的状态到ACCU1
L MB 29 //装载时钟存储器上周期8个位的状态到ACCU1,MB28的内容装载到ACCU2
INVI //时钟存储器上周期8个位的状态(ACCU1的内容)取反
AW //当前时钟存储器8个位的状态(ACCU1)&上周期时钟存储器8个位(ACCU2)取反的状态,
//&的结果存储在ACCU1内
T MB 27 //将ACCU1的内容存储到MB27(只存储了低8位)
L MB 28 //装载时钟存储器本周期8个位当前的状态
T MB 29 //将本周期时钟存储器8个位当前的状态存储到MB29
此段代码主要表达的意思就是:当时钟存储器8个位,任何一个位状态由0变化到1,8个位的上升沿将对应地存储到MB27,M27.5就是1Hz时钟脉冲的上升沿。此段代码简短朴素,效率却非常之高。
题外话:此段代码稍加修改,可以同时判断16个位的上升沿,如果做成一个FC,用起来还是很方便的。
AW //当前时钟存储器8个位的状态(ACCU1)&上周期时钟存储器8个位(ACCU2)取反的状态,
请问这个是不是解释有点问题?是不是应该是“当前时钟存储器8个位的状态(ACCU2)&上周期时钟存储器8个位(ACCU1)取反的状态”,谢谢