SFRD

指令说明:

 SFRD16位连续执行型移位读出指令,即每个扫描周期都执行数据移位读出运算。即从先进先出队列S的首项读出到D中,然后将队列S逐字右移1个字,将队列指针递减。以第一个编号装置作为指针,当指令执行时,指针内容值先减1,之后S所指定的装置其内容值会写入先入先出D数据串列中由指针所指定的位置。

若指针已经为0,则指令不处理前述操作,而0标志M8020会置1

   由于使用连续执行型指令SFRD,每个运算周期都移位,因此请使用脉冲执行型指令SFRDP编程

操作数:

SKnY, KnM, KnS,T,C,D, LV,DT,@

       DKnY, KnM, KnS,T,C,D, Z,V,LV,DT

       nK,H,@

指令格式:[SFRD  S  D  n ]

编程示例:

控制器上电运行,成批复位D0~D20

写入1个值到D0,上升沿触点X0接通1次,SFWR移位写入指令执行一次,然后D0值传送到D11,以此类推,再操作8次,8个不同的值写入到D12~D19D10作为指针记录操作次数。

当上升沿触点X1接通1次时,SFRD移位读出指令执行一次,按照先进先出的原则,D11~D19的值依次传送到D1,上一个数据传送后,该寄存器被下一个数据占领。操作9次后,D10变为0D11~D99皆为最后位输入的值。

SFWR指令执行时,D10~D19的变化情况

写入

D0=11

写入D0=22

写入D0=33

写入D0=44

写入D0=55

写入D0=66

写入D0=77

写入D0=88

写入D0=99

按下第1X0

按下第2X0

按下第3X0

按下第4X0

按下第5X0

按下第6X0

按下第7X0

按下第8X0

按下第9X0

D10=1

D10=2

D10=3

D10=4

D10=5

D10=6

D10=7

D10=8

D10=9

D11=11

D12=22

D13=33

D14=44

D15=55

D16=66

D17=77

D18=88

D19=99

 

SFRD指令执行时,D10~D19的变化情况

按下第1X1

按下第2X1

按下第3X1

按下第4X1

按下第5X1

按下第6X1

按下第7X1

按下第8X1

按下第9X1

读出D1=11

读出D1=22

读出D1=33

读出D1=44

读出D1=55

读出D1=66

读出D1=77

读出D1=88

读出D1=99

D10=8

D10=7

D10=6

D10=5

D10=4

D10=3

D10=2

D10=1

D10=0

D11=22

D12=33

D13=44

D14=55

D15=66

D16=77

D17=88

D18=99

D19=99

D11=33

D12=44

D13=55

D14=66

D15=77

D16=88

D17=99

D18=99

D19=99

D11=44

D12=55

D13=66

D14=77

D15=88

D16=99

D17=99

D18=99

D19=99

D11=55

D12=66

D13=77

D14=88

D15=99

D16=99

D17=99

D18=99

D19=99

D11=66

D12=77

D13=88

D14=99

D15=99

D16=99

D17=99

D18=99

D19=99

D11=77

D12=88

D13=99

D14=99

D15=99

D16=99

D17=99

D18=99

D19=99

D11=88

D12=99

D13=99

D14=99

D15=99

D16=99

D17=99

D18=99

D19=99

D11=99

D12=99

D13=99

D14=99

D15=99

D16=99

D17=99

D18=99

D19=99

D11=99

D12=99

D13=99

D14=99

D15=99

D16=99

D17=99

D18=99

D19=99