7.2  综合比较指令CMP的编程

更新于 2026年10月10日 版权声明
7.2 综合比较指令CMP的编程

CMP指令是一条综合比较指令,其优点是可以综合运算表达式,一目了然地集中了运算关系和比较关系,这是常常使用的一条指令。

例如,某个需求是欲获得一个闪烁的灯,并且这个灯的闪烁频率是可修改的,编制梯级逻辑如图7-4所示。

一条MOV指令修改闪烁的频率,也即计时器的预置值,一条自复位的计时器指令提供了闪烁的周期,因为采用了表达式的比较,修改计时器的预置值就很容易改变灯的闪烁频率了。这里表达式一半的时间梯级条件成立令灯亮,一半的时间梯级条件不成立令灯灭。这是亮灭相等时间的闪烁,如果想要得到不同的亮的时间和灭的时间,修改CMP指令表达式中计时器预置值的除数就好了,比如想要1/4的时间灭,3/4的时间亮,用Timer_Flash.PRE/4的表达式就可以了。当然,换成小于比较也是可以做的。想想看,怎样改变表达式。(https://www.daowen.com)

人的视觉残留时间为200ms,决定闪烁的频率的计时器预置值设定为400ms,即200ms的时段亮;200ms的时段灭,这正好满足人的视觉残留时间参数,使人感觉到灯的闪烁,频率太慢难以感觉到闪烁;频率太快只感觉灯变暗而没有亮灭的节奏。

图示

图7-4 编制的梯级逻辑

此外,如果单一的比较关系,则不宜采用较耗费时间的CMP指令,建议用单一比较指令,比如大于的比较就直接用GRT比较指令,而不要用CMP的表达式来比较,尽管CMP指令用“>”的比较符也是可行的。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)