首页 历史故事移位和循环指令详解

移位和循环指令详解

【摘要】:移位和循环指令需要选择数据类型。3)如果要循环移位的位数超过目标值中的位数,仍将执行循环移位。编写程序如图5-32所示,其中I0.0为控制开关,M1.5为周期为1s的时钟存储器位,实现的功能为当按下I0.0,QD4中为1的输出位每秒钟向左移动1位。第1段程序的功能是赋初值,即将QD4中的Q7.0置位,第2段程序的功能是每秒钟QD4循环左移一位。

移位和循环指令如表5-9所示。移位和循环指令需要选择数据类型。

表5-9 移位和循环移位指令

978-7-111-34922-8-Chapter05-45.jpg

(续)

978-7-111-34922-8-Chapter05-46.jpg

对于移位指令,需要注意以下事项:

1)N=0时,不进行移位,直接将IN值分配给OUT。

2)用0填充移位操作清空的位。

3)如果要移位的位数(N)超过目标值中的位数(Byte为8位、Word为16位、DWord为32位),则所有原始位值将被移出并用0代替,即将0分配给OUT。

对于循环指令,需要注意以下事项:

1)N=0时,不进行循环移位,直接将IN值分配给OUT。

2)从目标值一侧循环移出的位数据将循环移位到目标值的另一侧,因此原始位值不会丢失。

3)如果要循环移位的位数(N)超过目标值中的位数(Byte为8位、Word为16位、DWord为32位),仍将执行循环移位。

【例5-11】通过循环指令实现彩灯控制。

编写程序如图5-32所示,其中I0.0为控制开关,M1.5为周期为1s的时钟存储器位,实现的功能为当按下I0.0,QD4中为1的输出位每秒钟向左移动1位。第1段程序的功能是赋初值,即将QD4中的Q7.0置位,第2段程序的功能是每秒钟QD4循环左移一位。

978-7-111-34922-8-Chapter05-47.jpg

图5-32 彩灯控制例子