资源预览内容
第1页 / 共321页
第2页 / 共321页
第3页 / 共321页
第4页 / 共321页
第5页 / 共321页
第6页 / 共321页
第7页 / 共321页
第8页 / 共321页
第9页 / 共321页
第10页 / 共321页
亲,该文档总共321页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 功能指令及应用,1.功能指令的表现形式 2.指令类型 6.1 程序流程类指令 6.2 数据比较指令与数据传送指令(一) 6.3 算术与逻辑运算指令 6.4 循环与移位指令 6.5 数据处理指令(一) 6.6 高速处理指令(一) 6.7 方便指令 6.8 外部设备I/O指令 6.9 外部设备SER指令,第6章 功能指令及应用,6.10 数据传送指令(二) 6.11 浮点运算指令 6.12 数据处理指令(二) 6.13 定位控制指令 6.14 时钟运算指令 6.15 外部设备指令 6.16 其他指令 6.17 数据块处理指令 6.18 字符串处理指令 6.19 数据表处理指令 6.20 比较触点指令,第6章 功能指令及应用,6.21 数据处理指令(三) 6.22 变频器通信指令 6.23 数据传送指令(三) 6.24 高速处理指令(二) 6.25 扩展文件寄存器控制指令 6.26 功能指令使用规则 6.27 功能指令应用 项目二十一 数码管自动/手动控制 项目二十二 十字路口交通灯的控制(二) 项目二十三 8位小车控制 项目二十四 步进电动机控制,第6章 功能指令及应用,表6-1 功能指令分类表,1.功能指令的表现形式,2.指令类型,(1)16位连续型指令 16位连续型指令的所有的操作数均为一个字(16位),操作数数据指定范围为-3276832767,指令在每个扫描周期均被执行,16位连续型指令由助记符+操作数组成,例如“ZRST Y000 Y007”、“INC D0”等。 (2)16为脉冲型指令 16位脉冲型指令的所有的操作数同样为一个字(16位),操作数数据指定范围为-3276832767,但指令只在驱动回路条件满足(ON)时执行一次,要再次执行必须断开驱动回路,重新接通驱动回路。 (3)32位连续型指令 32位连续型指令的操作数为双字(32位),操作数指定的范围为2147483647,指令在每个扫描周期均被执行。,2.指令类型,(4)32位脉冲型指令 32位脉冲型指令的操作数同样为双字(32位),操作数数据指定范围为-21474836482147483647,但指令只在驱动回路条件满足(ON)时执行一次。,6.1 程序流程类指令,表6-2 程序流程类指令,1.条件跳转指令CJ(CONDITIONAL JUMP),表6-2 程序流程类指令,6.1 程序流程类指令,图6-1 CJ(CJP)指令,1)减少扫描时间。 2)使双线圈或多线圈成为可能。,6.1 程序流程类指令,3)两条或多条跳转指令可以使用同一编号的指针。,图6-2 跳转指令与主控程序,6.1 程序流程类指令,4)跳转指令可以往前面跳转。 5)条件跳转指令CJ和子程序调用指令CALL不能同时使用同一指针。 6)跳转指令在主控程序中的动作规则如图6-2所示。 跳过整个主控区:对于跳过整个主控区的跳转不受限制。 从主控区外跳到主控区内:跳转独立于主控操作,如图6-2中CJ P1执行时,不论M0的状态如何,均视为ON。 在主控区内跳转:当主控开关为OFF时,跳转不可能执行;当主控开关为ON时,跳转可以执行。 从主控区内往主控区外跳转:主控开关为OFF时,跳转不能执行;当主控开关为ON时,可以执行跳转,这时MCR被忽略,但不会出错。,6.1 程序流程类指令, 从一个主控区跳转到另一个主控区:如图6-2所示,M1为ON时,跳转可以执行,跳转时不论M2的状态如何,均看作ON,MCR N0被忽略;当M1为OFF时,跳转不能执行。 7)跳转时,其他指令的执行情况 如果Y、M、S被OUT、SET、RST指令驱动,则跳转期间即使Y、M、S的驱动条件改变了,它们仍保持跳转发生前的状态,因为跳转期间根本不执行这些程序。 如果通用定时器或计数器被驱动后发生跳转,则暂停计时和计数,并保留当前值,跳转指令不执行时定时或计数继续进行。 积算定时器T246T255和高速计数器C235C255如被驱动后再发生跳转,则即使该段程序被跳过,计时和计数仍然继续,其延时触点也能动作。,6.1 程序流程类指令,8)指针P63为跳转到END步指针,程序中不用标记 2.子程序调用指令CALL和子程序返回指令SRET(SUBROUTINE CALL指令是子程序调用指令;SRET是子程序返回指令,不需要驱动触点的单独指令,无操作数。CALL指令和SRET指令的表现形式如图63所示。,表格,表格,6.1 程序流程类指令,图6-3 CALL和SRET指令, 调用指令可以调用同一指针的子程序,但指针不能重复标记。 调用指令可以嵌套,但最多不能超过4层。 用CALL指令,必须对应SRET指令。 不能与CJ指令使用同一指针标签。,6.1 程序流程类指令,3.中断返回指令IRET、中断允许指令EI和中断结束指令DI IRET指令写在中断子程序末尾,当执行完中断子程序后,IRET指令使程序指针返回到主程序(中断前指针下一步);EI为中断允许,只有中断被允许才可以执行中断;DI是中断禁止,如果在程序中设置了中断允许,在某一区域设置中断禁止,则需要用EI和DI指令进行设置,如图64所示。,表格,6.1 程序流程类指令,图6-4 IRET、EI、DI指令,4.主程序结束指令FEND(FIRST END),6.1 程序流程类指令,FEND指令表示主程序结束,为单独指令,不需要触点驱动。此指令与END的作用相同,即执行输入处理、输出处理、警戒时钟刷新、向第0步程序返回,FEND指令执行的过程如图65、图66所示。,表格,6.1 程序流程类指令,图6-5 FEND指令在跳转程序中的执行过程,6.1 程序流程类指令,图6-6 FEND指令在调用程序中的执行过程,5.警戒时钟指令WDT(WATCHDOG TIMER),6.1 程序流程类指令,WDT指令是对看门狗定时器进行操作的指令。当系统中连接较多特殊扩展设备(模拟量模块、通信模块、定位模块等)时,缓冲存储区的初始化时间将会变长,且同时执行多个FROM/TO指令也会造成运算时间延长;此外执行高速计数时,运算时间也会延长。这可能会出现看门狗定时器出错,因此在这些情况下需要对看门狗定时器进行刷新。,表格,(1)更改看门狗定时器 通过改写D8000(看门狗定时器)的值,可以更改看门狗定时器的检测时间,程序如图6-7所示。,6.1 程序流程类指令,图6-7 看门狗定时器值改写程序,(2)运算周期长处理 图6-8a是一个300ms的程序,如果不进行看门狗定时器处理,程序将会出错,处理的方法如图6-8b所示。,6.1 程序流程类指令,图6-8 看门狗定时器刷新处理程序,6.循环开始指令FOR和循环结束指令NEXT,6.1 程序流程类指令,Kn、T、C、D、(R、U,表格,6.1 程序流程类指令,表格,图6-9 FOR、NEXT指令,6.1 程序流程类指令,图6-10 FOR、NEXT嵌套循环,6.1 程序流程类指令,图6-11 FOR、NEXT嵌套并行循环,6.2 数据比较指令与数据传送指令(一),表6-3 数据比较指令与数据传送指令,1.比较指令CMP(COMPARE),6.2 数据比较指令与数据传送指令(一),表6-3 数据比较指令与数据传送指令,图6-12 比较指令, 当S1.S2.时,D.为ON。,6.2 数据比较指令与数据传送指令(一), 当S1.=S2.时,D.+1为ON。 当S1.S2.时,D.+2为ON。 2.区间比较指令ZCP(ZONE COMPARE) KnX KnY KnM KnS T C D(R,表格,6.2 数据比较指令与数据传送指令(一),图6-13 区间比较指令ZCP, 当S1.S.时,D.为ON。 当S1.S.S2.时,D.+1为ON。 当S.S2.时,D.+2为ON。 3.传送指令MOV(MOVE),6.2 数据比较指令与数据传送指令(一),KnX KnY KnM KnS T C D,表格,图6-14 MOV指令,图6-15 定时器当前值传送,6.2 数据比较指令与数据传送指令(一),图6-16 32位数据传送,4.位移动传送指令SMOV(SHIFT MOVE) KnX KnY KnM KnS T C D,表格,6.2 数据比较指令与数据传送指令(一),图6-17 SMOV指令,5.取反传送指令CML(COMPLEMENT) KnX KnY KnM KnS T C D,6.2 数据比较指令与数据传送指令(一),表格,6.2 数据比较指令与数据传送指令(一),图6-18 CML指令,6.成批传送指令BMOV(BLOCK MOVE) KnX KnY KnM KnS T C D,6.2 数据比较指令与数据传送指令(一),表格,6.2 数据比较指令与数据传送指令(一),图6-19 BMOV指令,7.多点传送指令FMOV(FILL MOVE) KnX KnY KnM KnS T C D,6.2 数据比较指令与数据传送指令(一),表格,6.2 数据比较指令与数据传送指令(一),图6-20 FMOV指令,8.数据交换指令XCH(EXCHANGE) KnY KnM KnS T C D,6.2 数据比较指令与数据传送指令(一),表格,6.2 数据比较指令与数据传送指令(一),图6-21 XCH指令,9.转换指令BCD和BIN(BINARY CODE TO DECIMAL,BINARY) KnX KnY KnM KnS T C D,6.2 数据比较指令与数据传送指令(一),表格,6.2 数据比较指令与数据传送指令(一),图6-22 BCD指令,6.2 数据比较指令与数据传送指令(一),图6-23 BIN指令,6.3 算术与逻辑运算指令,表6-4 算术与逻辑指令,1.BIN加法运算指令ADD(ADDITION),表6-4 算术与逻辑指令,6.3 算术与逻辑运算指令,图6-24 ADD指令,2. BIN减法运算指令SUB(SUBTRACTION) KnX KnY KnM KnS T C D,表格,6.3 算术与逻辑运算指令,图6-25 SUB指令,3. BIN乘法运算指令MUL(MULTIPLICATION) KnX KnY KnM KnS T C D,表格,6.3 算术与逻辑运算指令,图6-26 MUL指令,图6-27 32位MUL运算,4. BIN除法运算指令DIV(DIVISION) KnX KnY KnM KnS T C D,6.3 算术与逻辑运算指令,表格,图6-28 DIV指令,图6-29 32位DIV运算,5. BIN加1运算指令INC和BIN减1运算指令DEC(INCREMENT,DECREMENT),6.3 算术与逻辑运算指令,KnY KnM KnS T C D,表格,图6-30 INC指令,图6-31 DEC指令,6.逻辑与指令WAND、逻辑或指令WOR、逻辑异或指令WXOR(WORD KnX KnY KnM KnS T C D,6.3 算术与逻辑运算指令,表格,图6-32 WAND指令,图6-33 WOR指令,6.3 算术与逻辑运算指令,图6-34 WXOR指令,7.求补码指令NEG(NEGATION) KnY KnM KnS T C D,表格,6.3 算术与逻辑运算指令,图6-35 NEG指令,6.4 循环与移位指令,表6-5 循环与移位指令,1.右循环移位指令ROR和左循环移位指令ROL(ROTATION RIGHT,ROTATION LEFT),表6-5 循环与移位指令,6.4 循环与移位指令,图6-36 ROR和ROL循环移位指令,2.带进位的右循环指令RCR和带进位的左循环指令RCL(ROTATION KnY KnM KnS T C D,6.4 循环与移位指令,表格,6.4 循环与移位指令,图6-37 RCL和RCR循环移位指令,3.位右移
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号