发布于 2015-01-15 23:24:15
1楼
楼主:看了你的代码,代码执行的过程我描述一下,你有时间可以测试、验证一下。
L MB 28 //装载时钟存储器本周期8个位当前的状态到ACCU1
L MB 29 //装载时钟存储器上周期8个位的状态到ACCU1,MB28的内容装载到ACCU2
INVI //时钟存储器上周期8个位的状态(ACCU1的内容)取反
AW //当前时钟存储器8个位的状态(ACCU2)&上周期时钟存储器8个位(ACCU1)取反的状态,
//&的结果存储在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,用起来还是很方便的。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”