发布于 2012-03-23 23:31:51
3楼
256个沿用完比较少见。若真不够用,可以“土制”边沿。
例,“土制”I0.0-I1.7,16个输入的上升沿和下降沿:
设:
MW0(M0.0-M1.7)为I0.0-I1.7对应的的上升沿;
MW2对应I0.0-I1.7的下降沿;
MW4保存IW0的上一扫描周期值;
1、初始化(SM0.1)时,MOVW IW0,MW4
2、上升沿:
LD SM0.0
movw IW0,MW0
xorw MW4,MW0 // 本次扫描和前一扫描值异域,有变化的位会置1
andw IW0,MW0 // 取本次扫描为1的位,即相当于取上升沿。所以结果是MW0存的是IW0对应位的上升沿。
3、下降沿:
LD SM0.0
movw IW0,MW0
xorw MW4,MW0 // 本次扫描和前一扫描值异域,有变化的位会置1
andw MW4,MW0 // 取上次扫描为1的位,即相当于取下降沿。所以结果是MW0存的是IW0对应位的下降沿。
4、存保本次扫描值,以备下次使用。
ld sm0.0
movw IW0,MW4