本文主要是为了解释我们前面编写的循环小灯的程序,有很多朋友说看不懂指令的意思,在这里小编就为大家,解释一下这些指令的用法。
位右移指令:
该指令的助记符,指令代码,操作数,程序步如下表:
![bbc0b3539e0de5c105d46b57e35f3b52.png](https://i-blog.csdnimg.cn/blog_migrate/2157f8a84f23a53b234a25da038c613e.jpeg)
指令格式:
![8d5f44986ca533e0586bc27db92297c3.png](https://i-blog.csdnimg.cn/blog_migrate/f38cd67310025a5c47bab57cb60b4b19.jpeg)
X010驱动SFTRP,X000,M0,K16,K4这条指令是什么意思呢?我们通过下面这个图来看看。
![106de481715945ffcfb3e420d20a6cb7.png](https://i-blog.csdnimg.cn/blog_migrate/5b0894202855ce45cea99a10f0ca01f1.jpeg)
源操作数X000,K4表示的是以x0为首的,X1,X2,X3。M0,K16表示的是以M0为首的连续的16个位元件,指的是M0~M15的位元件。当该指令接通的时候把X0,X1,X2,X3为一组移到这4个目标元件中去。如果X0,XI,X2,X3进入了高位那么原先的M12,M13,M14,M15往右边移动4位,M4~M7移到M0~M3,然后M0~M3的数就被移出去了。一般我们使用这条指令一般用脉冲进行型。因为这样就可以确保我们的数据的准确。
位左移指令:
该指令的助记符,指令代码,操作数,程序步如下表:
![6b7bb55fccdf74ae61f11d8cf3f25d71.png](https://i-blog.csdnimg.cn/blog_migrate/765e5d534027475e803fc4161e35e7b0.jpeg)
![dbd42b635786b2ee38cbba660e55c644.png](https://i-blog.csdnimg.cn/blog_migrate/f5b572ec7b5fb5dfd35121e75d92b3bc.jpeg)
原理与位右移基本一样,但是位左移是从低位开始,一步步往左移,M12~M15的数据被挤出去。其它的原理基本一致。
字右移指令:
该指令的助记符,指令代码,操作数,程序步如下表:
![54e0fd4dd4c765d2693d235e3117ab73.png](https://i-blog.csdnimg.cn/blog_migrate/649c6c26f1fcf1240a4558a32df6024b.jpeg)
指令格式:
![30316846b03fe153786f13bde19277a2.png](https://i-blog.csdnimg.cn/blog_migrate/7567d51ab9a83ca27bcf0fdc75c2c774.jpeg)
当X0接通的时候这条指令运行,D0,K4表示的是有4个源操作数,每次移动4位,因此在这里指的是D0,D1,D2,D3。
![c742d895685f23b0b6595072d9931d5c.png](https://i-blog.csdnimg.cn/blog_migrate/5d89dbbc312e77f4b23e74f99abbe088.jpeg)
D10,K16指的是目标操作数,也就是以D10为首的D10~D25。当指令接通的时候D10~D13低四位的数据就移出,D14~D17代替D10~D13的位置,以此类推,D0~D3就进入了高位。所谓字右移就是源操作数从高位进入,把低位的数据移出去。
字左移指令:
该指令的助记符,指令代码,操作数,程序步如下表:
![ff212badfdc20bc61ef0b1b8e7c005ac.png](https://i-blog.csdnimg.cn/blog_migrate/bdf095776be78ecbfb827563d3519a31.jpeg)
![99c05a253cf1f09001998fb06c7477ce.png](https://i-blog.csdnimg.cn/blog_migrate/99f4861e4f4952cbcd1027e28f238460.jpeg)
字左移与字右移基本一样,只不过源操作数从低位进去,把高位的数据给挤出去。