首页 理论教育 移位寄存器的操作及应用

移位寄存器的操作及应用

时间:2026-01-22 理论教育 小龙哥 版权反馈
【摘要】:图3-10和图3-10为在For循环中添加移位寄存器的过程以及添加移位寄存器后的程序框图。移位寄存器可以添加多个,以保存多个数据。图3-10所示的程序没有移位寄存器,输出的结果为当前循环序号i与0之和,若当前循环序号是5,6次循环过后,就输出5。层叠移位寄存器可以保存以前多次循环的值,并将值传递到下一次循环。层叠移位寄存器只能位于循环左侧,因为右侧的连线端仅用于把当前循环的数据传递给下一次循环。图3-12层叠移位寄存器

移位寄存器是LabVIEW的循环结构中的一个附加对象,其功能是把当前循环完成时的某个数据传递给下一个循环开始。移位寄存器的添加可通过在循环结构左边框或右边框弹出的快捷键中选择添加移位寄存器。图3-10(a)和图3-10(b)为在For循环中添加移位寄存器的过程以及添加移位寄存器后的程序框图。移位寄存器可以添加多个,以保存多个数据。图3-10(c)所示的程序增加了移位寄存器,每次循环结束后,输出结果为上一次循环输出的结果加上这一次循环的序号i,6次循环完成后,输出的结果为0+1+2+3+4+5=15。图3-10(d)所示的程序没有移位寄存器,输出的结果为当前循环序号i与0之和,若当前循环序号是5,6次循环过后,就输出5。

图示

图3-10 在For循环中添加移位寄存器以及程序框图

(a)添加移位寄存器的过程;(b)程序框图;(c)增加移位寄存器;(d)不增加移位寄存器

右端子每完成一次循环后存储数据,移位寄存器将上次循环的存储数据在下次循环开始时移动到左端子。移位寄存器可以存储任何数据类型,但连接在同一个寄存器端子上的数据必须是同一种类型,移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。

在使用移位寄存器时应注意初始值问题,如果不给移位寄存器指定初始值,则左端子将在对其所在循环调用之间保留数据,当多次调用包含循环结构的子VI时,会出现此种情况。需要特别注意,如果对此情况不加考虑,可能会引起错误的程序逻辑。

一般情况下,应为左端子明确提供初始值,但在某些场合,利用这一特性也可以实现比较特殊的程序功能。除非显式初始化移位寄存器,否则当第一次执行程序时,移位寄存器将初始化为移位寄存器相应数据类型的默认值(如布尔值→假,数字类型→0);但当第二次开始执行时,第一次运行时的值将成为第二次运行时的初始值,以此类推。如图3-11(a)所示,当不给移位寄存器赋予初值时,第一次执行时,输出2450;再一次执行时,输出4900,这就是因为左端子在循环调用之间保留了数据。图3-11(b)中的程序框图每次执行时,均输出2450。(https://www.xing528.com)

图示

图3-11 移位寄存器不赋予初值的情况与显式赋予初值的情况对比

(a)不赋予初值;(b)显式赋予初值

在编写程序时,有时需访问以前多次循环的数据。层叠移位寄存器可以保存以前多次循环的值,并将值传递到下一次循环。创建层叠移位寄存器,可通过鼠标右键单击左侧的连线端并从中选择添加元素来实现,如图3-12所示。层叠移位寄存器只能位于循环左侧,因为右侧的连线端仅用于把当前循环的数据传递给下一次循环。

图示

图3-12 层叠移位寄存器

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈