omroncpm1aplc教程四

上传人:博****1 文档编号:567946943 上传时间:2024-07-22 格式:PPT 页数:153 大小:2.82MB
返回 下载 相关 举报
omroncpm1aplc教程四_第1页
第1页 / 共153页
omroncpm1aplc教程四_第2页
第2页 / 共153页
omroncpm1aplc教程四_第3页
第3页 / 共153页
omroncpm1aplc教程四_第4页
第4页 / 共153页
omroncpm1aplc教程四_第5页
第5页 / 共153页
点击查看更多>>
资源描述

《omroncpm1aplc教程四》由会员分享,可在线阅读,更多相关《omroncpm1aplc教程四(153页珍藏版)》请在金锄头文库上搜索。

1、数据传送和数据比较指令有两个以上操作数数据传送和数据比较指令有两个以上操作数要注意这些指令的操作数的含义及其范围要注意这些指令的操作数的含义及其范围这些指令多数都有微分和非微分两种形式这些指令多数都有微分和非微分两种形式要注意指令微分和非微分形式时用法的区别要注意指令微分和非微分形式时用法的区别数据传送指令数据传送指令数据比较指令数据比较指令一、一、数据传送指令数据传送指令单字传送指令单字传送指令MOV数字数字传送指令传送指令MOVD位位传送指令传送指令MOVB块块设置指令设置指令BSET块块传送指令传送指令XFER单字单字分配指令分配指令DIST数据交换数据交换指令指令XCHG数据调用数据调

2、用指令指令COLLS:源数据(通道或十六进制数:源数据(通道或十六进制数)D:目的通道号:目的通道号功功能能MOV(21)SDMOV(21)SDMOV(21)SDMOV(21)SD非微分:在执行条件为非微分:在执行条件为ON时,将时,将S传送到传送到D中中(每个扫描周期都执行)。(每个扫描周期都执行)。微微分:在执行条件分:在执行条件OFFON时,将时,将S传送到传送到D中中(只在条件满足时刻执行一次)。(只在条件满足时刻执行一次)。1.单字传送指令单字传送指令MOV(21)/MOV(21)LD25315MOV(21)#0198HR00在在PLC上电的第一个扫描周期,把上电的第一个扫描周期,把

3、0198传送到传送到HR00中中25315MOV(21)#0198HR00分析程序的功能,并写出语句表分析程序的功能,并写出语句表.使用使用MOV指令举例指令举例(1)在此后的各扫描周期,不再执行在此后的各扫描周期,不再执行MOV指令。指令。使用使用DIFU指指令有何作用令有何作用?只要只要0000OFFON,就执行就执行一次一次MOV指令。指令。2000000000DIFU(13)20000MOV(21)LR00HR00分析程序的功能:分析程序的功能:使用使用MOV指令举例指令举例(2)把把LR00中的内容传送到中的内容传送到HR00中。中。LR00中的内容在变中的内容在变化,必要时将其传化

4、,必要时将其传送到送到HR00中。中。00000MOV(21)LR00HR00分析程序的功能分析程序的功能使用使用MOV指令举例(指令举例(3)只要只要00000OFFON,就执行就执行一次一次MOV指令。指令。把把LR00中的内容传送到中的内容传送到HR00中。中。与举例(与举例(2)功能相同。)功能相同。2000000000DIFU(13)20000MOV(21)LR00HR00指令指令MOV几种使用方法的区别几种使用方法的区别(a)与与(c)相同,指令相同,指令MOV都只在都只在00000OFFON时时执行一次。执行一次。(b)指令指令MOV只在只在PLC上电后的第一个扫描周期执上电后的

5、第一个扫描周期执行一次。行一次。25315MOV(21)LR00HR0000000MOV(21)LR00HR00(a)(b)(c)2000000000DIFU(13)20000MOV(21)LR00HR0025313MOV(21)HR00LR00从从PLC上电开始,每个扫描上电开始,每个扫描周期里,都将周期里,都将HR00中的内中的内容传送到容传送到LR00中。中。与上述几种与上述几种MOV指令指令使用方法的区别是:使用方法的区别是:本程序中,每个扫描周期指令本程序中,每个扫描周期指令MOV都执行!都执行!请注意请注意MOV指令指令各种用法的区别各种用法的区别分析程序的功能分析程序的功能使用使

6、用MOV指令举例(指令举例(4)PLC上电时,将上电时,将0100传送到传送到200通道中通道中,作为作为CNT000的设定值的设定值改变计数器设定值的操作:改变计数器设定值的操作:使使00001OFFON,将,将0200传送到传送到200通道中;通道中;自自00000ON开始,开始,CNT000按设按设定值定值100开始计数开始计数(或定时或定时)。此后计数器按设定值此后计数器按设定值200计数计数断开断开00000,闭合一次触点,闭合一次触点00002,使使CNT000复位;复位;00001MOV(21)#010020025315255020000100000CNT000200000022

7、5315MOV(21)#0200200分析程序的功能分析程序的功能使用使用MOV指令举例(指令举例(5)2.块传送指令块传送指令XFER(70)/XFER(70)N:通道数(:通道数(BCD数数)功能功能在执行条件为在执行条件为ON时,将几个连续通道中的数据传时,将几个连续通道中的数据传送到另外几个连续通道中。送到另外几个连续通道中。S:源数据块首通道:源数据块首通道D:目的通道首通道:目的通道首通道XFER(70)NSDXFER(70)NSDXFER(70)NSDXFER(70)NSD执行块传送指令时数据传送如下所示:执行块传送指令时数据传送如下所示:S1234S+182ACS+290B6S

8、+N-10DFED1234D+182ACD+290B6D+N-10DFE3.块设置指令块设置指令BEST(71)/BEST(71)S:源数据(通道或十六进制数:源数据(通道或十六进制数)功能功能在执行条件为在执行条件为ON时,将时,将S传送到从传送到从St到到E的各通道中。的各通道中。St:开始通道:开始通道E:结束通道号:结束通道号BEST(71)SStEBEST(71)SStEBSET(71)SStEBSET(71)SStELD00000MOV(21)#0100HR00TIM000HR00ANDTIM000OUT01000LD00001BSET(71)#0050TIM000TIM00000

9、001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00分析程序的功能,写语句表分析程序的功能,写语句表使用使用BEST指令举例指令举例00001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00BSET指令的第二、第三操作指令的第二、第三操作数都是数都是TIM000,即执行,即执行BSET指令,指令,只把数据传送到只把数据传送到TIM000中。中。功能功能在在00001OFF、00000OFFON时,执行一次时,执行一次MOV

10、指令,将指令,将#0100传送到通道传送到通道HR00中。中。自此自此TIM000以设定值以设定值10秒定时。秒定时。经过经过10秒,定时器秒,定时器TIM000ON,线圈线圈01000ON。00001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00当需要改变定时器当需要改变定时器TIM000的当前值时,可通过执行的当前值时,可通过执行BSET指令来实现。指令来实现。执行执行BSET指令将指令将0050传送到传送到TIM000中,中,TIM000的当前的当前值立即变为值立即变为0050。例如,在例如,在TIM

11、000的当前值为的当前值为0089时,令时,令00001ON一次:一次:自此,自此,TIM000的当前值从的当前值从0050开始,每隔开始,每隔0.1秒减秒减1,一,一直减到为直减到为0000为止。为止。00001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00由于由于HR00中的数据没有改变,中的数据没有改变,在下一次定时器在下一次定时器TIM000工作时,工作时,其定时值仍然是其定时值仍然是0100。以上是用以上是用BSET指令改变定时指令改变定时器的当前值。器的当前值。用用BSET指令也可以改变定时指令

12、也可以改变定时器的设定值。方法为:器的设定值。方法为:本例中,令本例中,令BSET指令的第指令的第2、3操操作数为作数为HR00,执行,执行BSET指令后,指令后,TIM000的设定值就为的设定值就为0050了。了。MOV与与BSET指令的异同指令的异同执执行行一一次次MOV指指令令,只只能能向向一一个个通通道道传传送送一一个个字字;而而执执行行一一次次BSET指指令令,可可以以向向多多个个通通道道传传送同一个字。送同一个字。TIM/CNT的的操操作作数数是是通通道道时时,用用MOV和和BSET指令都可以改变指令都可以改变TIM/CNT的设定值。的设定值。用用BSET指指令令既既可可改改变变T

13、IM/CNT的的设设定定值值、也也可以改变可以改变TIM/CNT的当前值的当前值。因为因为MOV指令不能向指令不能向TC区传送数据,区传送数据,所以不能所以不能用用MOV指令改变指令改变TIM/CNT的当前值的当前值!4.位传送指令位传送指令MOVB(82)/MOVB(82)bit00bit07指定指定S中的位号中的位号bit08bit15指定指定D中的位号中的位号MOVB(82)SCDMOVB(82)SCDMOVB(82)SCDMOVB(82)SCDS:源数据:源数据D:目的通道:目的通道C(BCD):控制数据:控制数据在执行条件为在执行条件为ON时,根据时,根据C的内容,将的内容,将S传送

14、到传送到D中。中。C内容的含义内容的含义指令的功能指令的功能分析程序的功能,写语句表分析程序的功能,写语句表使用使用MOVB指令举例指令举例MOVB(82)#0050HR0020025315LD00005MOVB(82)HR00#1500200程序功能程序功能C的含义的含义例:设例:设HR00的内容为的内容为1000100010000101执行指令之后执行指令之后20015为为ON(1)bit00bit07:S中的位中的位bit08bit15:D中的位中的位在在PLC上电之初,将上电之初,将HR0000的内容传送到的内容传送到20015中中。5.数字传送指令数字传送指令MOVD(83)/MOV

15、D(83)MOVD(83)SCDMOVD(83)SCDMOVD(83)SCDMOVD(83)SCD在执行条件为在执行条件为ON时,根据时,根据C的内容,的内容,将将S中指中指定的数字传送到定的数字传送到D中指定的数字位中。中指定的数字位中。指令的功能指令的功能S:源数据:源数据D:目的通道:目的通道C:控制数据:控制数据C(BCD数数)的含义的含义指令各操作数的含义指令各操作数的含义MOVD(83)SCDS中第一个要传送的数字位位号中第一个要传送的数字位位号不用不用C数字数字3 数字数字2 数字数字1 数字数字0S中要传送的数字位数中要传送的数字位数01位位12位位23位位34位位指定指定D中

16、接收第一个数字的位号中接收第一个数字的位号C=#0030使用使用MOVD指令举例指令举例(1)根据根据C、确定指令执行结果、确定指令执行结果S中第中第0位数字开始传送位数字开始传送传传送送4位位数数字字D中从第中从第0位开始接收第一个数字位开始接收第一个数字MOVD(83)S#0030D0123D0123S 被传送的数字位要连续被传送的数字位要连续例如:例如:1230例如:例如:3 012例如:例如:2 301等等C=#0023使用使用MOVD指令举例指令举例(2)根据根据C、确定指令执行结果、确定指令执行结果S中第中第3位数字开始传送位数字开始传送传传送送3位位数数字字D中从第中从第0位开始

17、接收第一个数字位开始接收第一个数字MOVD(83)S#0023D0123D0123S第一个被传第一个被传送的数字送的数字第二个被传第二个被传送的数字送的数字第三个被传第三个被传送的数字送的数字第一个接收第一个接收数字的位数字的位C=#0123使用使用MOVD指令举例指令举例(3)根据根据C、确定指令执行结果、确定指令执行结果S中第中第3位数字开始传送位数字开始传送传传送送3位位数数字字D中从第中从第1位开始接收第一个数字位开始接收第一个数字MOVD(83)S#0123D0123D0123S第一个被传第一个被传送的数字送的数字第二个被传第二个被传送的数字送的数字第三个被传第三个被传送的数字送的数

18、字第一个接收第一个接收数字的位数字的位6.单字分配指令单字分配指令DIST(80)/DIST(80)S:源数据:源数据DBS:目标基准通道:目标基准通道C:控制数据:控制数据(BCD)DIST(80)SDBSCCOLL(81)SDBSCDIST(80)SDBSCDIST(80)SDBSC在执行条件为在执行条件为ON时,根据时,根据C的内容,的内容,进行单字数据分配进行单字数据分配或堆栈的进栈操作(栈区由或堆栈的进栈操作(栈区由C的低的低3位确定)位确定)。指令的功能指令的功能1.C的的bit12bit15的内容的内容8时,执行单字数据时,执行单字数据分配分配操作。操作。控制数据控制数据C(BC

19、D)的含义的含义指令功能指令功能当执行条件为当执行条件为ON时,将时,将S的内容传的内容传送到(送到(DBS+C)中,如下图。中,如下图。DIST(80)SDBSCS90B6DBS+C90B62.C的的bit12bit15的内容的内容=9时,执行指令生时,执行指令生成一个堆栈,执行进栈操作。成一个堆栈,执行进栈操作。指令功能:指令功能:进栈方法:进栈方法:每执行一次指令,将每执行一次指令,将S的内容复制到(的内容复制到(DBS+堆栈指针堆栈指针+1)的栈区通道的栈区通道中,然后指针加中,然后指针加1。当执行条件为当执行条件为ON时,执行指令生成一个堆栈(以时,执行指令生成一个堆栈(以C的的低低

20、3位确定栈区通道数),以位确定栈区通道数),以DBS为堆栈指针进行进栈为堆栈指针进行进栈操作。操作。进栈过程举例。进栈过程举例。DIST(80)200DM000021600000200:FFFF216:90050000DM0000DM0001DM0002DM0003DM0004DM0005000000000000000000000001DM0000DM0001DM0002DM0003DM0004DM0005FFFF0000000000000000源数据源数据控制数据控制数据堆栈指针堆栈指针第一次执行第一次执行!0002DM0000DM0001DM0002DM0003DM0004DM0005FF

21、FFFFFF000000000000第二次执行第二次执行!栈区栈区SBs是基准通道是基准通道D是目的通道是目的通道C是控制数据是控制数据(BCD)7.数据调用指令数据调用指令COLL(81)/COLL(81)COLL(81)SBSCDCOLL(81)SBSCDCOLL(81)SBSCDCOLL(81)SBSCD在执行条件为在执行条件为ON时,根据时,根据C的内容,的内容,进行调用数据或进行调用数据或堆栈的出栈操作(栈区由堆栈的出栈操作(栈区由C的低的低3位确定)位确定)。指令的功能指令的功能1.C=00006655数据调用数据调用控制数据控制数据C(BCD)的含义的含义COLL(81)SBSC

22、D指令功能指令功能当执行条件为当执行条件为ON时,将(时,将(SBS+C)传送到传送到D中。中。2.出栈操作出栈操作(包括两种情况包括两种情况)C=90009999先入先出的出栈操作先入先出的出栈操作以以SBS为堆栈指针,按先入先为堆栈指针,按先入先出的原则,将堆栈中的数据传出的原则,将堆栈中的数据传送到送到D中,堆栈指针减中,堆栈指针减1。C=80008999后入先出的出栈操作后入先出的出栈操作以以SBS为堆栈指针,按后入先出的原则,将堆为堆栈指针,按后入先出的原则,将堆栈中的数据复制到栈中的数据复制到D中(堆栈中的内容不变),中(堆栈中的内容不变),堆栈指针减堆栈指针减1。COLL(81)

23、SBSCD先入先出的出栈过程先入先出的出栈过程COOL(81)DM0000#9007200分析:当分析:当SBs=DM0000、C=#9007、D=200时,指令时,指令COLL执行的结果。执行的结果。执行一次执行一次执行前执行前0156000711010001EEEE568C9D6F0000DM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007568C000601561101EEEE0000EEEE9D6FDM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007IR2000001C=#9007栈区栈区DM000

24、1DM0007先入先出先入先出堆栈指针堆栈指针指针减指针减1栈栈区区执行二次执行二次IR2001101后入先出的出栈过程后入先出的出栈过程COOL(81)DM0000#9007200分析:当分析:当SBs=DM0000、C=#8007、D=200时,指令时,指令COLL执行的结果。执行的结果。执行一次执行一次执行前执行前01560007110100011234568C9D6F0000DM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007IR2001234C=#8007栈区为栈区为DM0001DM0007后入先出后入先出堆栈指针堆栈指针指针减指针减1栈栈

25、区区01560006110100011234568C9D6F0000DM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007执行二次执行二次9D6F不不变变单字比较指令单字比较指令CMP表比较表比较指令指令TCMP双字比较指令双字比较指令CMPL块块比较指令比较指令BCMP二、二、数据比较指令数据比较指令1.单字比较指令单字比较指令CMPCMP(20)C1C2CMP(20)C1C2C1:比较数:比较数1C2:比较数比较数2在执行条件为在执行条件为ON时,将时,将C1和和C2进行比较。进行比较。当当C1C2时,标志位时,标志位25505ON当当C1=C2时

26、,标志位时,标志位25506ON当当C1C2时,标志位时,标志位25507ON功能功能使用使用CMP指令举例指令举例(1)写语句表、分析程序功能写语句表、分析程序功能LD00000TIM000#0030CMP(20)TIM000#0200AND25505OUT20000AND25506OUT20001AND25507OUT20002LDTIM000OUT200032550620001TIM000255072000320002CMP(20)TIM000#0200TIM000#0030000002550520000分析程序功能分析程序功能执行指令执行指令CMP时,将时,将TIM000的的当前值与当

27、前值与#0200进行比较。进行比较。2550620001TIM000255072000320002CMP(20)TIM000#0200TIM000#0300000002550520000当当00000为为ON时,时,TIM000开始开始定时、且开始执行定时、且开始执行CMP指令。指令。TIM000的当前值由的当前值由0300每隔每隔0.1秒减秒减1。可见:配合指令可见:配合指令CMP,用一个定时器可以控制,用一个定时器可以控制多个输出位。多个输出位。若若TIM000当前值大于当前值大于#0200时,时,25505ON20000ON。若若TIM000的当前值等于的当前值等于#0200时,时,25

28、506ON20001ON。若若TIM000的当前值小于的当前值小于#0200时,时,25507ON20002ON。2550620001TIM000255072000320002CMP(20)TIM000#0020TIM000#0030000002550520000当当TIM000定时到定时到时,时,20002和和20003ON。续续使用使用CMP指令举例指令举例(2)分析本例使用微分指令的原因分析本例使用微分指令的原因由于由于CMP指令没有微分形式指令没有微分形式若欲使指令若欲使指令CMP只在只在00000OFFON时执行一次时执行一次则必须使用指令则必须使用指令DIFU(13)CMP(20)

29、TIM000#0020000002550501000DIFU(13)200002.块比较指令块比较指令BCMPBCMP(68)CDCBRBMP(68)CDCBRBCMP(68)CDCBRBCMP(68)CDCBRCD:比较数据比较数据CB:数据块的起始通道数据块的起始通道R:存结果通道存结果通道功能功能当执行条件为当执行条件为ON时,将时,将CD与每个数据区域比较。与每个数据区域比较。当当CD处于某个区域时,与该区域对应的处于某个区域时,与该区域对应的R的位的位ON。使用块比较指令使用块比较指令BCMP举例举例MOV(21)#1450200BCMP200DM0000HR0500000 下限下限

30、 上限上限DM00000000DM00010100HR0500DM00020101DM00030200HR0501DM00040201DM00050300HR0502DM00060301DM00070400HR0503DM00080401DM00090500HR0504DM00100501DM00110600HR0505DM00120601DM00130700HR0506DM00140701DM00150800HR0507DM00160801DM00170900HR0508DM00180901DM00191000HR0509DM00201001DM00211100HR0510DM0022110

31、1DM00231200HR0510DM00241201DM00251300HR0512DM00261301DM00271400HR0513DM00281401DM00291500HR0514DM00301501DM00311600HR0515HR05比较指令执行结果:比较指令执行结果:HR0514为为ON数据块内容可数据块内容可预先写入预先写入数据块数据块存结果存结果比较数据比较数据块首通道块首通道结果通道结果通道3.表比较指令表比较指令TCMPTCMP(85)CDTBRTCMP(68)CDTBRTCMP(85)CDTBRTCMP(85)CDTBRCD:比较数据比较数据TB:数据表的起始通道数

32、据表的起始通道R:结果通道结果通道功能功能当执行条件为当执行条件为ON时,将时,将CD与数据表中的数据比较。与数据表中的数据比较。当当CD与表中某个通道的数据相同时,与该通道对应的与表中某个通道的数据相同时,与该通道对应的R的位为的位为ON。使用表比较指令使用表比较指令TCMP举例举例MOV(21)#0005200TCMP200HR00HR1900000数据表内容数据表内容可预先写入可预先写入存结果存结果比较数据比较数据数据表数据表结果通道结果通道对应位状态对应位状态HR000101HR19000HR010151HR19010HR020005HR19021HR150605HR19150表首通道

33、表首通道结果通道结果通道该程序执行结果:该程序执行结果:HR1902为为ON。数据传送和数据比较指令小结数据传送和数据比较指令小结1.数据传送指令数据传送指令(2)注意块传送和块设置指令功能的区别。注意块传送和块设置指令功能的区别。(3)注意单字分配、数据调用和数据交换指令的区别。注意单字分配、数据调用和数据交换指令的区别。区别位传送和数字传送指令目的通道内容存放的方法区别位传送和数字传送指令目的通道内容存放的方法(1)注意各种传送指令的区别。注意各种传送指令的区别。单字传送单字传送MOV是常用的指令,要牢记其使用方法。是常用的指令,要牢记其使用方法。块设置指令块设置指令BSET可以向可以向T

34、C区传送数据,用该指令可区传送数据,用该指令可以改变定时器的当前值。以改变定时器的当前值。2.数据比较指令数据比较指令(1)单字单字/双字比较指令是常用的指令,要牢记其格式、双字比较指令是常用的指令,要牢记其格式、梯形图、操作数范围和使用方法。梯形图、操作数范围和使用方法。使用单字使用单字/双字比较指令要影响标志位双字比较指令要影响标志位2550525507:在需要保存标志位状态时,要编写相应程序。在需要保存标志位状态时,要编写相应程序。注意触点注意触点2550525507的使用方法。的使用方法。(2)注意块比较和表比较指令执行结果的表示方法。注意块比较和表比较指令执行结果的表示方法。数据移位

35、和数据转换指令数据移位和数据转换指令数数据据运运算算指指令令子程序控制子程序控制指指令令高速计数器控制高速计数器控制指指令令数据移位与数据转换指令指令数据移位与数据转换指令指令数据移位指令数据移位指令数据转换指令数据转换指令数据移位指令数据移位指令移位寄存器指令移位寄存器指令可逆移位寄存器指令可逆移位寄存器指令数字左、右移指令数字左、右移指令算术左、右移指令算术左、右移指令循环左、右移指令循环左、右移指令字字移移位位指指令令异步移位寄存器指令异步移位寄存器指令1.移位寄存器指令移位寄存器指令SFT(10)功功能能当复位端当复位端R为为OFF时,时,在在SP端移位脉冲的端移位脉冲的作用下,作用下

36、,IN端的数据被移入移位寄存器。端的数据被移入移位寄存器。St:移位开始通道:移位开始通道E:移位结束通道:移位结束通道SFT(10)StESFT(10)StEINSPRIN:数据输入端数据输入端R:复位端复位端SP:移位脉冲输入端移位脉冲输入端在移位脉冲的作用下,移位寄存器中的数在移位脉冲的作用下,移位寄存器中的数据以位为单位依次向左移一位。据以位为单位依次向左移一位。移位寄存器指令移位寄存器指令SFT的用法的用法SFT(10)StEINSPR在移位脉冲作用下,在移位脉冲作用下,St到到E中的数据左移过程。中的数据左移过程。复位端复位端R为为ON时,时,St到到E所有通道均所有通道均复位为零

37、,且移位指令不执行。复位为零,且移位指令不执行。没有移位脉冲时不执行移位。没有移位脉冲时不执行移位。移位寄存器具有保持功能。移位寄存器具有保持功能。IN端端数据数据丢失丢失StE移位寄存器指令移位寄存器指令SFT的语句表的语句表LD00000LD25502LD00001OR25315SFT(10)200200LD20003OUT01000INSPR00000255022000300001SFT(10)2002000100025315图示梯形图的语句表如下图示梯形图的语句表如下SFT的两个操作数都是的两个操作数都是200,表示只由,表示只由200通道组通道组成移位寄存器。成移位寄存器。25502

38、00000000012000420003200002000120002INSPR00000255022000300001SFT(10)2002000100025315移位接触器移位接触器的工作时序的工作时序20000的的ON状态,在状态,在200通道内依次向左移动。通道内依次向左移动。00000000000000010200 00000000000000001200 00000000000000100200 00000000000001000200 00000000000010000200 00000000000100000200 00000000001000000200 0000000001

39、0000000200 00000000100000000200 00000001000000000200 00000010000000000200 00000100000000000200 00001000000000000200 00010000000000000200 00100000000000000200 01000000000000000200 10000000000000000200 000000000000000002001234567分析程序的功能分析程序的功能25315使移位寄存器上电复位使移位寄存器上电复位00000的状态作为输入数据的状态作为输入数据25502的秒脉冲作为

40、移位脉冲的秒脉冲作为移位脉冲第一个移位脉冲输入后,第一个移位脉冲输入后,00000的的ON状态移入状态移入20000。00001ON可使寄存器可使寄存器200复位复位经过经过4个移位脉冲个移位脉冲20003ON,于是,于是01000ON。移位过程中,只要移位过程中,只要00001为为ON,移位寄存器即复位。,移位寄存器即复位。第五个移位脉冲时第五个移位脉冲时20003OFF,于是,于是01000也也OFF。INSPR00000255022000300001SFT(10)20020001000253152.可逆移位寄存器指令可逆移位寄存器指令SFTR(84)SFTR(84)CStESFTR(84

41、)CStESFTR(84)CStESFTR(84)CStEC:控制通道控制通道St:移位开始通道移位开始通道E:结束通道结束通道功能功能当执行条件为当执行条件为ON时,时,根据控制通道根据控制通道C的内容,在的内容,在StE通道内,执行左移或右移位操作。通道内,执行左移或右移位操作。可逆移位寄存器的用法可逆移位寄存器的用法SFTR(84)CStE控制通道控制通道C的含义的含义不使用不使用15141312移位方向移位方向1:左移:左移(低低高高)0:右移:右移(高高低低)数据输入数据输入移位脉冲输入移位脉冲输入复位复位1:StE及及CY清零清零0:根据:根据C的状态移位的状态移位左、右移位的控制

42、左、右移位的控制在在执执行行条条件件为为OFF时时停停止止工工作作。此此时时若若C之之bit15为为1,St到到E及及CY仍保持原状态不变。仍保持原状态不变。通道通道C之之bit15为为0时,在移位脉冲的作用下,时,在移位脉冲的作用下,根据根据C之之bit12的的状态进行左移或右移。状态进行左移或右移。C之之bit12为为1左移:左移:每个扫描周期,从每个扫描周期,从St到到E按位依次左移一位,按位依次左移一位,C之之bit13的数据移入的数据移入St之之bit0中,中,E之之bit15的数据的数据移入移入CY中。中。C之之bit12为为0右移:右移:每个扫描周期,从每个扫描周期,从E到到St

43、按位依次右移一位,按位依次右移一位,C之之bit13的数据移入的数据移入E之之bit15中,中,St之之bit0的数据移入的数据移入CY中。中。SFTR(84)CStESt开始通道开始通道E结束通道结束通道LD00000OUT20012LD00001OUT20013LD00002DIFU(13)20100LD20100OUT20014LD00003OUT20015LD00004SFTR(84)200LR10LR11使用可逆移位寄存器举例使用可逆移位寄存器举例DIFU(13)20100移位方向移位方向数据输入数据输入移位脉冲移位脉冲200132001220100000020000100000SF

44、TR(84)200LR10LR11复位复位00004000032001520014程序功能分析程序功能分析执行条件执行条件控制控制通道通道开始开始通道通道结束通道结束通道当当00004为为ON时,开始执时,开始执行移位操作。行移位操作。200的的bit12bit15的状态是的状态是由由0000000003控制的。控制的。若若00001ON,则,则20013为为1,即输入数据为,即输入数据为1;若若00001OFF,则,则20013为为0,即输入数据为,即输入数据为0。每当每当00002OFFON时,时,20014都会都会ON一个扫描周一个扫描周期,形成移位脉冲。期,形成移位脉冲。DIFU(13

45、)20100移位方向移位方向数据输入数据输入移位脉冲移位脉冲200132001220100000020000100000SFTR(84)200LR10LR11复位复位00004000032001520014若直接以若直接以00002作为移位脉冲。作为移位脉冲。因为当因为当00002为为ON时,每个时,每个扫描周期都要执行一次移位,扫描周期都要执行一次移位,这将造成移位失控。这将造成移位失控。若若00003ON,则,则20015ON,LR10LR11及及CY位清位清0若若00003OFF20015OFF,此时根据此时根据20012的状态执行移的状态执行移位操作。位操作。(续)(续)DIFU(13

46、)20100移位方向移位方向数据输入数据输入移位脉冲移位脉冲200132001220100000020000100000SFTR(84)200LR10LR11复位复位00004000032001520014若若20012ON执行左移位:执行左移位:每当每当00002OFFON时,时,LR10LR11中的数据按位中的数据按位依次左移一位。依次左移一位。20013的状的状态进入态进入LR1000,LR1115的数据进入的数据进入CY。(续)(续)HR1115HR1100HR1015HR1000CY20013DIFU(13)20100移位方向移位方向数据输入数据输入移位脉冲移位脉冲200132001

47、220100000020000100000SFTR(84)200LR10LR11复位复位00004000032001520014若若20012OFF执行右移位:执行右移位:每当每当00002OFFON时,时,LR10LR11中的数据按位中的数据按位依次右移一位。依次右移一位。20013的状的状态进入态进入LR1115,LR1000的数据进入的数据进入CY。(续)(续)HR1115HR1100HR1015HR1000CY20013DIFU(13)20100移位方向移位方向数据输入数据输入移位脉冲移位脉冲200132001220100000020000100000SFTR(84)200LR10LR

48、11复位复位000040000320015200143.数字左数字左/右移指令右移指令SLD(25)/ASR(26)算术左算术左/右移位指令的功能和使用方法相似右移位指令的功能和使用方法相似以算术左移指令为例以算术左移指令为例,介绍它们的功能和使用方法介绍它们的功能和使用方法St:移位首通道:移位首通道E:移位结束通道:移位结束通道功能:当执行条件为功能:当执行条件为ON时,执行指令将时,执行指令将StE中的数中的数据以数字为单位依次左移位据以数字为单位依次左移位1位。如下图:位。如下图:SLD(74)StESLD(74)StESt0溢出溢出E4.算术左算术左/右移位指令右移位指令ASL(25

49、)/ASR(26)算术左算术左/右移位指令的功能和使用方法相似右移位指令的功能和使用方法相似ASL(25)Ch以算术左移指令为例以算术左移指令为例,介绍它们的功能和使用方法介绍它们的功能和使用方法ASL(25)ChCh是移位通道号是移位通道号功能功能当执行条件为当执行条件为ON时,执行指令将时,执行指令将Ch中的数据以位为中的数据以位为单依次左移单依次左移1位。最高位移入位。最高位移入CY。如下图:。如下图:CYCh5.循环左循环左/右移位指令右移位指令ROL(27)/ROR(28)循环左循环左/右移位指令的功能和使用方法相似右移位指令的功能和使用方法相似ROL(27)Ch以循环左移指令为例以

50、循环左移指令为例,介绍它们的功能和使用方法介绍它们的功能和使用方法ROL(27)ChCh是移位通道号是移位通道号功能功能当执行条件为当执行条件为ON时,将时,将Ch及及CY中的数据以位为单中的数据以位为单依次循环左移位依次循环左移位1位。如下图:位。如下图:CYCh00000ROL(27)HR00MOV(21)HR00010END(01)使用指令使用指令ROL举例举例写语句表、分析程序功能写语句表、分析程序功能当当00000OFFON时时执行一次指令执行一次指令ROL使使HR00循环左移一次循环左移一次执行一次指令执行一次指令MOV将将HR00的数据传送到的数据传送到010通道中去。通道中去。

51、LD00000ROL(27)HR00MOV(21)HR00010END(01)(续)设(续)设HR00中的数据如下(设中的数据如下(设CY=0)执行一次指令执行一次指令ROL后后,CY和和HR00中的数据如下:中的数据如下:00000ROL(27)HR00MOV(21)HR00010END(01)010通道中的数据为:通道中的数据为:10101010101010101101010101010101CY10101010101010101执行执行ROL/ROR指令时应注意的问题指令时应注意的问题由于程序扫描到由于程序扫描到END时,时,CY等标志位将被清零。等标志位将被清零。在下个扫描周期执行在下

52、个扫描周期执行ROL时,仍需要时,仍需要CY位参位参与移位或运算,这时会出现错误。与移位或运算,这时会出现错误。为了解决该问题,需设置保存为了解决该问题,需设置保存CY状态的程序状态的程序00000ROL(27)HR00HR0100STC(40)25504HR0100END(01)00000ROL(27)HR00MOV(21)HR00010END(01)保存保存CY状态的程序状态的程序原程序原程序修改后的程序修改后的程序(续)具有保存(续)具有保存CY状态的程序的分析状态的程序的分析00000ROL(27)HR00HR0100STC(40)25504HR0100END(01)若某扫描周期使若某

53、扫描周期使CY=1,则,则25504ONHR0100ON下个扫描周期执行程序时,下个扫描周期执行程序时,由于由于HR0100ON,则执行,则执行指令指令STCCY位置位置1。这样,在本扫描周期执行这样,在本扫描周期执行ROL指令时,指令时,CY的状态就的状态就是正确的了。是正确的了。类似这样的问题,编程时务必引起注意。类似这样的问题,编程时务必引起注意。6.字移位指令字移位指令WSFT(16)/WSFT(16)St:移位开始通道号:移位开始通道号E:结束通道:结束通道功能:当执行条件为功能:当执行条件为ON时,将时,将StE中的内容以字为中的内容以字为单位依次左移单位依次左移1位。如下图:位。

54、如下图:WSFT(16)StEWSFT(16)StEWSFT(16)StEWSFT(16)StESt丢失丢失E0000St+17.异步移位寄存器指令异步移位寄存器指令ASFT/ASFTASFT(17)CStEASFT(17)CStEASFT(17)CStEASFT(17)CStEC:控制数据:控制数据St:移位开始通道:移位开始通道E:结果通道:结果通道C的含义的含义移位方向:移位方向:0上移上移1下移下移是否允许移位:是否允许移位:0不允许不允许1允许允许C15141312为为0是否复位:是否复位:0正常操作正常操作1复位复位当执行条件为当执行条件为ON时,将数据为时,将数据为0000的通道

55、与相邻通道的通道与相邻通道进行数据交换。进行数据交换。指令功能指令功能执行指令执行指令ASFT时数据交换的规则时数据交换的规则相邻两通道数据都为相邻两通道数据都为0000,不交换。,不交换。执行指令执行指令ASFT,可以把数据为,可以把数据为0000的通道集中的通道集中到数据区的上半部分或下半部分。到数据区的上半部分或下半部分。上移:数据为上移:数据为0000的通道与相邻高地址通道交换。的通道与相邻高地址通道交换。下移:数据为下移:数据为0000的通道与相邻低地址通道交换。的通道与相邻低地址通道交换。60110第一次移位第一次移位执行前执行前2B680000507A00000000000051

56、470234DM0000DM0007DM0001DM0002DM0003DM0004DM0005DM0006执行后执行后2B6800000000507A0000023451470000使用指令使用指令ASFT举例举例控制字控制字C=#6000允许移允许移ASFT(71)#6000DM0000DM000700000下移下移正常工作正常工作数据移位指令小结数据移位指令小结1.要根据需要,选择合适的数据移位指令。要根据需要,选择合适的数据移位指令。是需要建立移位寄存器、还是要按位移位、按数是需要建立移位寄存器、还是要按位移位、按数字移位或按字移位。字移位或按字移位。是需要作单向移位、循环移位、还是异

57、步移位。是需要作单向移位、循环移位、还是异步移位。是需要作左移位还是右移位。是需要作左移位还是右移位。2.当需要标志位当需要标志位CY参与移位时,有时需要编程保存参与移位时,有时需要编程保存CY的状态。的状态。3.注意执行各种指令后对标志位的影响。注意执行各种指令后对标志位的影响。数据转换指令数据转换指令BCD二进制转换二进制转换二进制二进制BCD转换转换416译码指令译码指令164编码指令编码指令七段译码指令七段译码指令ASCII码转换指令码转换指令BCD/BCD与与BIN/BIN指令类似,下面以指令类似,下面以BIN/BIN为例说明其使用方法。为例说明其使用方法。BIN(23)SRBIN(

58、23)SRS:源通道源通道R:结果通道结果通道功能:当执行条件为功能:当执行条件为ON时时,将将S中的中的BCD码码转换成二进制数,并将结果存入转换成二进制数,并将结果存入R中。中。1.BCD码码二进制数转换指令二进制数转换指令BIN/BIN4321转换为二进制数是转换为二进制数是0100000011100001LD00000MOV(21)#4321200BIN(23)200DM000000000BINDM0000200#4321MOV200第第3位位第第2位位第第1位位第第0位位00110100215214213212 2112102928232221202726252400100001IR

59、200源通道源通道DM0000结果通道结果通道第第3位位第第2位位第第1位位第第0位位000001002152142132122112102928232221202726252411100001源通道源通道IR200中为中为BCD数数4321。转换后结果通道内容转换后结果通道内容写出图示语程序的句表、并分析功能。写出图示语程序的句表、并分析功能。本例只在本例只在00000OFFON时转换一次。时转换一次。2.416译码指令译码指令MLPX/MLPXS:源首通道:源首通道C:控制数据:控制数据R:结果首通道:结果首通道C的含义的含义S中第一个要译码的数字位位号中第一个要译码的数字位位号固定为固定

60、为0C 数字数字3数字数字2数字数字1数字数字0S中要译码的数字位数中要译码的数字位数01位位12位位23位位34位位MLPX(76)SCRMLPX(76)SCRMLPX(76)SRMLPX(76)SCRC当执行条件为当执行条件为ON时,根据时,根据C的内容对的内容对S进行译码,并进行译码,并将结果存放中将结果存放中R中。中。指令功能指令功能译码方法译码方法由由C确定被译码的起始数字位及译码的位数;确定被译码的起始数字位及译码的位数;将该位数字将该位数字(十六进制十六进制)转换为转换为015的十进制数;的十进制数;再将结果通道中与该十进制数对应的位置为再将结果通道中与该十进制数对应的位置为ON

61、,其余位为其余位为OFF。被译码的数字位不能大于被译码的数字位不能大于4。RR+1R+2R+3R0123S第第1个个第第2个个第第3个个C=#0030第第4个个第第1个个RR+1R+2R+3R0123SC=#0023结果通道的存放顺序结果通道的存放顺序被译码的数被译码的数字位要连续字位要连续如:如:1230 3 012 2 301等等从从0 0位开位开始译码始译码对对4 4位数位数字译码字译码从从3 3位开位开始译码始译码对对3 3位数位数字译码字译码使用译码指令使用译码指令MLPX举例举例MOV#78F520000000MLPX200#0013HR00LD00000MOV(21)#78F52

62、00MLPX(76)200#0013HR00写语句表、分析程序功能写语句表、分析程序功能源源通通道道IR200控制字控制字C=#0013结果首通道结果首通道HR00C=#0013从第三位数字开始译码从第三位数字开始译码对对2个数字译码个数字译码HR00和和HR01(第(第3位位第第0位)位)译译2个数字,存放结果需要个数字,存放结果需要2个通道个通道IR200:78F5(续)译码的原理(续)译码的原理源通道(源通道(78F5)第)第3位数字是位数字是0111十进制数十进制数7则以则以7为位号,将结果首通道为位号,将结果首通道HR00中的中的bit07置为置为1源通道第源通道第0位数字是位数字是

63、0101十进制数十进制数5则以则以5为位号,将结果末通道为位号,将结果末通道HR01的的bit05置为置为1第第3位位第第2位位第第1位位第第0位位100001112152142132122112102928232221202726252411110101IR200源通道源通道HR00结果通道结果通道000000002152142132122112102928232221202726252410000000HR01结果通道结果通道000000002152142132122112102928232221202726252400100000对本例,如果对本例,如果C=#0023,即对,即对3个数字

64、译码,第个数字译码,第3个被个被译码的是源通道的第译码的是源通道的第1位数字。第位数字。第3个译码结果存放在个译码结果存放在结果通道结果通道HR02中。中。HR02结果通道结果通道000010002152142132122112102928232221202726252400100000第第3位位第第2位位第第1位位第第0位位100101112152142132122112102928232221202726252411110101IR200源通道源通道HR00结果通道结果通道000000002152142132122112102928232221202726252410000000HR01结

65、果通道结果通道000000002152142132122112102928232221202726252400100000执行一次指令,最多只能对执行一次指令,最多只能对4个数字译码。个数字译码。例如设例如设C=#0023时,结果首通道设为时,结果首通道设为HR18;设设C=#0042等,都是错误的。等,都是错误的。使用译码指令使用译码指令MLPX时需注意时需注意结果通道不能超过其所在区域。结果通道不能超过其所在区域。3.164编码指令编码指令DMPX/DMPXDMPX(77)SRCDMPX(77)SRCDMPX(77)SRCDMPX(77)SRCS:源首通道:源首通道C:控制数据:控制数据R

66、:结果通道:结果通道C的含义的含义R中接收编码的第一个数字位中接收编码的第一个数字位固定为固定为0C 数字数字3数字数字2数字数字1数字数字0被编码的源通道数被编码的源通道数01个个12个个23个个34个个当执行条件为当执行条件为ON时,根据时,根据C的内容,对以的内容,对以S为首通道的为首通道的几个通道进行编码,并将结果存放在几个通道进行编码,并将结果存放在R中。中。指令功能指令功能编码方法编码方法由由C确定被编码的通道数;确定被编码的通道数;将被编码通道中为将被编码通道中为ON的最高位的位号编为一个十六的最高位的位号编为一个十六进制数;进制数;将该十六进制数送到将该十六进制数送到R指定(由

67、指定(由C指定)的数字位。指定)的数字位。使用编码指令使用编码指令DMPX举例举例MOV#001322000000DMPXHR00DM0000220LD00000MOV(21)#0013220DMPX(77)HR00DM0000220写语句表、分析程序功能写语句表、分析程序功能源首通道源首通道IR00控制字控制字C=#0013结果通道结果通道DM0000C=#0013从从R的数字位的数字位3开始存放结果开始存放结果对对2个通道进行编码个通道进行编码HR00和和HR01对两个通道编码,源通道对两个通道编码,源通道应为应为设源通道设源通道HR00中内容为中内容为A8E7(1010100011100

68、111)HR00中为中为1的最高位的位号的最高位的位号是是15十六进制编码十六进制编码F将编码将编码F放在结果通道放在结果通道DM0000的第的第3位数字位上。位数字位上。设源通道设源通道HR01中内容为中内容为01BF(0000000110111111)HR01中为中为1的最高位的位号是的最高位的位号是8十六进制编码十六进制编码8将编码将编码8放在结果通道放在结果通道DM0000的第的第0位数字位上。位数字位上。(续)编码的原理(续)编码的原理源首通道源首通道IR00控制字控制字C=#0013结果通道结果通道DM0000第第1个个第第2个个第第3个个C=#0030第第4个个第第1个个0123

69、RSS+1S+2S+3SC=#0031结果的存放顺序结果的存放顺序存放编码结果存放编码结果的位号要连续的位号要连续如:如:1230 3 012 2 301等等第第4个个0123RSS+1S+2S+3S第第3位位第第2位位第第1位位第第0位位100010102152142132122112102928232221202726252411100111HR00源通道源通道HR01源通道源通道000100002152142132122112102928232221202726252410111111DM0000结果通道结果通道11112152142132122112102928232221202726

70、25241000原通道与编码结果的对应关系原通道与编码结果的对应关系若若C=#0023(对对3个源通道编码个源通道编码),第,第3个被编码的源通道应个被编码的源通道应是是HR02,第,第3个编码结果应放在个编码结果应放在DM0000的数字位的数字位1上。上。源通道不能超过其所在区域。源通道不能超过其所在区域。例如设例如设C=#0023时,源首通道设为时,源首通道设为HR18;设设C=#0042等,都是错误的。等,都是错误的。使用编码指令使用编码指令DMPX时需注意时需注意源通道不能超过源通道不能超过4个。个。4.七段译码指令七段译码指令SDEC/SDECSDEC(78)SCRSDEC(78)S

71、CRSDEC(78)SCRSDEC(78)SCRS:源通道(:源通道(BCD)C:控制数据:控制数据R:结果首通道:结果首通道C的含义的含义S中第一个要译码的数字位中第一个要译码的数字位固定固定为为0C 数字数字3数字数字2数字数字1数字数字0被译码的数字位的位数被译码的数字位的位数01位位12位位23位位34位位从从R的高的高8位还是低位还是低8位开始存放第一个结果位开始存放第一个结果0:低:低8位位1;高;高8位位R低低8 8位位高高8 8位位0123S转换后结果存放顺序转换后结果存放顺序R+1低低8 8位位高高8 8位位C=#0030从数字位从数字位0开始译码开始译码译码译码4位位数字数

72、字从从R低低8位位开始存放开始存放固定固定为为0R低低8 8位位高高8 8位位0123SR+1低低8 8位位高高8 8位位C=#0133从数字位从数字位3开始译码开始译码译码译码4位数字位数字从从R高高8位位开始存放开始存放固定固定为为0R+2低低8 8位位高高8 8位位注意:注意:对对4个数字译码占用了三个通道!个数字译码占用了三个通道!当执行条件为当执行条件为ON时,根据时,根据C的内容,对的内容,对S进行译码,进行译码,并将结果存放中并将结果存放中R中。中。指令指令SDEC的功能的功能译译码码方方法法译码结果存放在以译码结果存放在以R为首的几个连续通道中(由为首的几个连续通道中(由C确确

73、定是从定是从R的低的低8位还是高位还是高8位开始存放)。位开始存放)。R中的中的bit0006及及bit0814分别对应数码管的分别对应数码管的a、b、c、d、e、f、g段。段。bit07和和bit15不用。不用。bit0006及及bit0814若为若为1,对应数码管的段发光。,对应数码管的段发光。根据被译码数字位的数值,确定根据被译码数字位的数值,确定bit0006及及bit0814哪个位为哪个位为1。使用译码指令使用译码指令SDEC举例举例MOV#1673HR0000000SDECHR00#0013HR01LD00000MOV(21)#1673HR00SDEC(78)HR00#0013HR

74、01写语句表、分析程序功能写语句表、分析程序功能源源通通道道IR00控制字控制字C=#0013结果首通道结果首通道HR01C=#0013R中第一个要译码的数字位中第一个要译码的数字位对对2个数字位进行译码个数字位进行译码从从R的低的低8位开始存放结果位开始存放结果译码数字位译码数字位30需占用一个结果通道需占用一个结果通道HR00:1673设源通道设源通道HR00中内容为中内容为1673(BCD)源通道中第源通道中第3位数字是位数字是1对应对应b、c段应该是段应该是1;(续)译码的原理(续)译码的原理第一个译码结果要存放在结果通道的低第一个译码结果要存放在结果通道的低8位,所以位,所以HR01

75、的低的低8位是位是00000110(bit7固定为固定为0););源通道中第源通道中第0位数字是位数字是3对应对应a、b、c、d、g段是段是1;第第二二个个译译码码结结果果要要存存放放在在结结果果通通道道的的高高8位位,所所以以HR01的高的高8位是位是01001111(bit15固定为固定为0)。)。源通道数字与译码结果通道的对应关系如下页图。源通道数字与译码结果通道的对应关系如下页图。abcdefgabcdgbc(续)源通道数字与译码结果通道的对应关系(续)源通道数字与译码结果通道的对应关系abcdefg0110000121521421321221121029282322212027262

76、52401110011HR00源通道源通道dgb aefcdgb aefc111101002152142132122112102928232221202726252400000110HR01结果通道结果通道bcabcdg1673本本例例中中,若若C=#0113时时,也也是是对对2个个数数字字译译码码,若若第第一一个结果从高个结果从高8位开始存放,则需要两个结果通道。位开始存放,则需要两个结果通道。第第一一个个译译码码结结果果存存在在HR01的的高高8位位,第第二二个个译译码码结结果果存在存在HR02的低的低8位。位。执行一次指令,最多只能对执行一次指令,最多只能对4个数字译码;个数字译码;例如

77、:设例如:设C=#0023时,结果首通道设为时,结果首通道设为HR18;设设C=#0042等,都是错误的。等,都是错误的。注意注意结果通道不能超过其所在区域。结果通道不能超过其所在区域。5.ASCII码转换指令码转换指令ASC/ASCASII(86)SCRASC(86)SCRASC(86)SCRASC(86)SCRS:源通道:源通道C:控制数据:控制数据R:结果首通道:结果首通道C的含义的含义S中第一个被转换的数字位中第一个被转换的数字位校验校验0:无校验:无校验1:偶校验:偶校验2:奇校验:奇校验C 数字数字3数字数字2数字数字1数字数字0被转换的数字位的位数被转换的数字位的位数01位位12

78、位位23位位34位位从从R的高的高8位还是低位还是低8位开始存放第一个结果位开始存放第一个结果0:低:低8位位1;高;高8位位当执行条件为当执行条件为ON时,根据时,根据C的内容,将的内容,将S中指定的数中指定的数字转换成字转换成ASCII码,并将结果存放在码,并将结果存放在R中。中。指令功能指令功能关于校验位关于校验位若设置偶校验,则校验位与若设置偶校验,则校验位与ASCII码中的码中的1的总数应的总数应为偶数,否则为偶数,否则bit07和和bit15为为1。结果通道的结果通道的bit0006及及bit0814存放结果。存放结果。bit07和和bit15是校验位。是校验位。若设置不校验,则若

79、设置不校验,则bit07和和bit15为为0。若设置奇校验,则校验位与若设置奇校验,则校验位与ASCII码中的码中的1的总数应的总数应为奇数,否则为奇数,否则bit07和和bit15为为1;转换方法转换方法由由C来确定,是从来确定,是从R的低的低8位、还是高位、还是高8位开始存放。位开始存放。确定源通道中欲转换的第一个数字及数字个数确定源通道中欲转换的第一个数字及数字个数。根据根据C中中bit0811的规定,按顺序存放结果。的规定,按顺序存放结果。根据根据C中校验的规定,确定中校验的规定,确定bit07和和bit15的状态。的状态。查查ASCII码表,对源通道中欲转换的数字进行转换码表,对源通

80、道中欲转换的数字进行转换。执行执行ASC指令的几种情况指令的几种情况000101012152142132122112102928232221202726252400111101S源通道源通道C=#00113331从数字位从数字位1开始转换开始转换转换转换2位数字位数字从从R低低8位位开始存放开始存放无校验无校验000100112152142132122112102928232221202726252400110011R结果通道结果通道010101112152142132122112102928232221202726252400010011S源通道源通道C=#10103331从数字位从数字位0

81、开始转换开始转换转换转换2位数字位数字从从R低低8位位开始存放开始存放偶校验偶校验000110112152142132122112102928232221202726252400110011R结果通道结果通道010101112152142132122112102928232221202726252400010011S源通道源通道C=#20103331从数字位从数字位0开始转换开始转换转换转换2位数字位数字从从R低低8位位开始存放开始存放奇校验奇校验000100112152142132122112102928232221202726252410110011R结果通道结果通道01010111215

82、2142132122112102928232221202726252400010011S源通道源通道C=#21103331从数字位从数字位0开始转换开始转换转换转换2位数字位数字从从R高高8位位开始存放开始存放奇校验奇校验0011101121521421321221121029282322212027262524R结果通道结果通道2152142132122112102928232221202726252400110001R+1结果通道结果通道数据转换指令小结数据转换指令小结1.根据所作的操作(数制转换、编根据所作的操作(数制转换、编/译码),正确选译码),正确选择指令。择指令。2.编码编码(D

83、MPX)与译码与译码(MLPX)是互为逆操作的指令。是互为逆操作的指令。其操作数较烦琐,要抓住它们的对偶关系来记忆指其操作数较烦琐,要抓住它们的对偶关系来记忆指令的操作数。要确保操作数设置正确。令的操作数。要确保操作数设置正确。3.七段译码指令七段译码指令(ASC)的执行结果对应数码管的的执行结果对应数码管的ag段。注意其结果的存放方法。段。注意其结果的存放方法。5.注意执行各种指令对标志位的影响。注意执行各种指令对标志位的影响。4.注意注意ASCII码转换指令码转换指令(ASC)执行结果的存放方法执行结果的存放方法及不同校验方式时及不同校验方式时bit07和和bit15的状态。的状态。数据运

84、算指令数据运算指令十进制运算指令十进制运算指令二进制运算指令二进制运算指令逻辑运算指令逻辑运算指令十进制运算指令十进制运算指令十进制加法运算指令十进制加法运算指令十进制乘法运算指令十进制乘法运算指令十进制除法运算指令十进制除法运算指令十进制减法运算指令十进制减法运算指令ADD(30)AuAdRADD(30)AuAdR当执行条件当执行条件ON时,将时,将Au、Ad及及CY相加,结果存入相加,结果存入R。若结果大于。若结果大于9999,则将,则将CY置置1。几种单字十进制运算指令几种单字十进制运算指令SUB(31)MiSuRSUB(31)MiSuR当执行条件当执行条件ON时,将时,将Mi减去减去S

85、u、再减再减CY,结果存入,结果存入R。若有借位。若有借位,将将CY置置1,且用且用0-R-CY,结果存入结果存入RMUL(32)MdMrRMUL(32)MdMrR当执行条件当执行条件ON时,将时,将Md与与Mr相乘,相乘,结果存入从结果存入从R(低(低4位)开始的结果位)开始的结果通道中。通道中。DIV(33)DdDrRDIV(33)DdDrR当执行条件当执行条件ON时,时,用用Dd除以除以Dr、结果存入结果存入R(商商)和和R+1(余数余数)中。中。使用运算指令时涉及使用运算指令时涉及CY,关于,关于CY的指令:的指令:STC(40)STC(40)当执行条件当执行条件ON时,将时,将255

86、04(CY)置置1。CLC(41)CLC(41)当执行条件当执行条件ON时,将时,将25504(CY)置置0。通道通道BCD数据数据递增递增/递减指令:递减指令:INC(38)INC(38)执行一次指令,将通道数据递增执行一次指令,将通道数据递增1。DEC(39)DEC(39)执行一次指令,将通道数据递减执行一次指令,将通道数据递减1。1.十进制加法运算指令举例十进制加法运算指令举例TIM000DM0010TIM001#06000100000000TIM001TIM000CLC(41)00000TIM001ADD(30)DM0010#0300DM0010CMP(20)#0900DM0010MO

87、V(21)#0300DM001025507分析程序功能分析程序功能当当00000及及TIM001ON(一个扫一个扫描周期描周期)时时:执行指令执行指令CLC将将CY清零清零;执行指令执行指令ADD将将DM0010(已预先写入已预先写入0300)加上加上#0300;执行指令执行指令CMP将将#0900与与DM0010比较比较;DM0010中的数据每加中的数据每加#0300,TIM000的设定值增加的设定值增加30秒。秒。TIM000DM0010TIM001#06000100000000TIM001TIM000CLC(41)00000TIM001ADD(30)DM0010#0300DM0010CM

88、P(20)#0900DM0010MOV(21)#0300DM001025507再次将再次将#0300传送到传送到DM0010,TIM000的设定值恢复为的设定值恢复为30秒。秒。若若DM0010大于大于#0900,执行,执行指令指令MOV,再将,再将#0300传送到传送到DM0010中。中。TIM000的设定值是变化的,的设定值是变化的,TIM001的设定值是固定的。的设定值是固定的。TIM001控制控制01000ON的时间、的时间、TIM000控制控制01000OFF时间时间。01000ON的时间总是的时间总是60秒;秒;01000OFF的时间从的时间从30秒起依秒起依次增加次增加30秒秒(

89、不超过不超过90秒秒)。01000ON60秒秒01000OFF90秒秒01000ON60秒秒00000ON01000OFF30秒秒01000ON60秒秒01000OFF60秒秒该该段段程程序序对对01000实实现现了了循循环环间间歇歇OFF、ON的的控制。程序实现的控制如下:控制。程序实现的控制如下:TIM000定时定时30sTIM001定时定时60sTIM000定时定时60sTIM001定时定时60sTIM000定时定时90sTIM001定时定时60s2.十进制减法运算指令举例十进制减法运算指令举例MOV(21)#0001HR0200000CLC(41)MOV(21)#0000HR02SUB

90、(31)HR00DM0000HR012550425504SUB(31)#0000HR01HR01IL(02)CLC(41)ILC(03)分析程序功能分析程序功能当当00000ON时时:执行指令执行指令CLC将将CY清零清零;执行指令执行指令SUB,用,用HR00的的内容减去内容减去DM0000的内容,再减的内容,再减去去CY,将差存放在,将差存放在HR01;若运算有借位,若运算有借位,CY=1,触点,触点25504ON,执行,执行CLC清清CY。若运算无借位,若运算无借位,CY=0,触点,触点25504OFF,执行指令,执行指令MOV置置HR02为为0(记忆(记忆CY状态);状态);MOV(2

91、1)#0001HR0200000CLC(41)MOV(21)#0000HR02SUB(31)HR00DM0000HR012550425504SUB(31)#0000HR01HR01IL(02)CLC(41)ILC(03)若运算有借位,若运算有借位,因为因为HR01的的内容是差的十进制补码,故应内容是差的十进制补码,故应再作一次减法运算。再作一次减法运算。该程序段使用了分支指令该程序段使用了分支指令,只有只有当当00000ON时时,程序才执行。程序才执行。所以运算有借位时,要清所以运算有借位时,要清CY,再再执行一次指令执行一次指令SUB,用,用#0减减去去HR01的的内容,再将差存放内容,再将

92、差存放在在HR01。将将HR02置置1(记忆记忆CY状态状态)第一次减:第一次减:1000200001000+(100002000)=90001有借位的减法运算的过程如下有借位的减法运算的过程如下第二次减:第二次减:0000900000000+(100009000)=10001HR00DM000CYHR01CYHR01CYHR01CY设设HR00的内容为的内容为1000,DM0000的内容为的内容为2000。3.十进制乘十进制乘/除运算指令举例除运算指令举例BSET#0000DM0000DM0004INCDM000000000210000000121000CMP#0004DM0000DIVDM

93、0001#0002DM000325507MULDM0000#0004DM000121000乘法运算与乘法运算与CY位无关。位无关。分析程序功能分析程序功能运行程序前先令运行程序前先令00000ON一次一次执行指令执行指令BSET,将,将DM0000DM0004清零,以准备运算。清零,以准备运算。执行一次指令执行一次指令CMP将将DM0000与与#0004比较;比较;令令00001ON一次,执行一次指一次,执行一次指令令INC,使使DM0000内容加内容加1;BSET#0000DM0000DM0004INCDM000000000210000000121000CMP#0004DM0000DIVDM

94、0001#0002DM000325507MULDM0000#0004DM000121000若若DM0000的内容大于的内容大于#0004,则将则将21000置为置为ON,执行一次指,执行一次指令令BSET,将,将DM0000DM0004清零;清零;执行一次指令执行一次指令MUL,将,将DM0000的内容与的内容与#0004相乘,相乘,结果存入结果存入DM0001DM0002中;中;执行一次指令执行一次指令DIV,将,将DM0001DM0002的内容与的内容与#0002相除,将商存入相除,将商存入DM0003、将余数存入将余数存入DM0004中;中;00001ON4次,次,DM0000DM000

95、4的内容如下的内容如下第第1次次00010004000000020000第第2次次00020008000000040000第第3次次00030012000000060000第第4次次00040016000000080000从从00001第第5次次ON开始,再重复上面的过程。开始,再重复上面的过程。00001ON DM0000DM0001DM0002DM0003DM0004DM0000加加1DM0000乘乘4DM0001DM0002除除2商商余数余数二进制运算指令二进制运算指令二进制加法运算指令二进制加法运算指令二进制乘法运算指令二进制乘法运算指令二进制除法运算指令二进制除法运算指令二进制减法运

96、算指令二进制减法运算指令ADB(50)AuAdRADB(50)AuAdR当执行条件当执行条件ON时,将时,将Au、Ad及及CY相加,结果存入相加,结果存入R。结果大于。结果大于FFFF时,将时,将CY置置1。二进制运算指令的功能二进制运算指令的功能SBB(51)MiSuRSBB(51)MiSuR当执行条件当执行条件ON时,将时,将Mi减去减去Su、再减再减CY,结果存入,结果存入R。有借位时将。有借位时将CY置置1,且用,且用0- -R- -CY再存入再存入RMLB(52)MdMrRMLB(52)MdMrR当执行条件当执行条件ON时,将时,将Md与与Mr相相乘,结果存入从乘,结果存入从R(低(

97、低4位)开始的位)开始的结果通道。结果通道。DVB(53)DdDrRDVB(53)DdDrR当执行条件当执行条件ON时,时,Dd除以除以Dr、结、结果存入果存入R(商商)和和R+1(余数余数)中。中。二进制运算指令举例二进制运算指令举例分析程序功能分析程序功能(1)当满足条件时,执行一次)当满足条件时,执行一次BSET指令将指令将DM0000DM0004清零,以备开始运算。清零,以备开始运算。(2)当)当00001ON、00000OFF时,时,执行如下操作:执行如下操作:执行执行MOV指令将指令将#00FA(十进(十进250)传送到)传送到HR00中;中;用二进制运算指令完成(用二进制运算指令

98、完成(25081000)/50运算的例子。运算的例子。SBBDM0000#03E8DM0002DVBDM0002#0032DM0003BSET#0000DM0000DM000400000000010000100000MOV#00FAHR00MLBHR00#0008DM0000CLC(41)执行执行CLC指令将指令将CY清零,以清零,以备相减运算。备相减运算。执行执行MLB指令将指令将HR00的内容的内容与与#0008相乘,将结果的低位相乘,将结果的低位07D0(十进十进2000)存在存在DM0000中、中、结果高位结果高位0000存在存在DM0001中;中;执行执行SBB指令,指令,DM000

99、0的内的内容减去容减去#03E8(十进(十进1000),将),将结果结果#03E8存在存在DM0002中;中;SBBDM0000#03E8DM0002DVBDM0002#0032DM0003BSET#0000DM0000DM000400000000010000100000MOV#00FAHR00MLBHR00#0008DM0000CLC(41)执行指令执行指令DVB,将,将DM0002的的内容除以内容除以#0032(十进十进50),把商,把商#0014(十进十进20)存在存在DM0003中、中、把余数把余数#0000存在存在DM0004中。中。执行各种指令和运算的结果如下执行各种指令和运算的结

100、果如下执行指令执行指令HR00DM0000DM0001 DM0002 DM0003 DM0004CYBSET00000000000000000000MOV00FA00000000000000000000MLB00FA07D00000000000000000CLC00FA07D000000000000000000SBB00FA07D0000003E8000000000DVB00FA07D0000003E800140000逻辑运算指令逻辑运算指令逻辑与逻辑与/或运算指令或运算指令逻逻辑辑求求反反指指令令逻辑同或运算指令逻辑同或运算指令逻辑异或运算指令逻辑异或运算指令几种逻辑运算指令的功能几种逻辑运

101、算指令的功能ANDW(34)I1I2RANDW(34)I1I2R当执行条件当执行条件ON时,将输入数据时,将输入数据I1和和I2进行逻辑与进行逻辑与,结果存入结果存入R中。中。ORW(35)I1I2RORW(35)I1I2R当执行条件当执行条件ON时,将输入数据时,将输入数据I1和和I2进行逻辑或进行逻辑或,结果存入结果存入R中。中。XORW(36)I1I2RXORW(36)I1I2R当执行条件当执行条件ON时,将输入数据时,将输入数据I1和和I2进行逻辑异或进行逻辑异或,结果存入结果存入R中。中。XNRW(37)I1I2RXNRW(37)I1I2R当执行条件当执行条件ON时,将输入数据时,将

102、输入数据I1和和I2进行逻辑同或进行逻辑同或,结果存入结果存入R中。中。分析执行逻辑运算的结果分析执行逻辑运算的结果ORWDM0000#0073DM0001BSET#0000DM0000DM0004ANDW#008F#0081DM000000000000010000100000XORWDM0000DM0001DM0002清零清零逻辑与逻辑与逻辑或逻辑或逻辑异或逻辑异或逻辑运算指令举例逻辑运算指令举例#008F 0000000010001111#0081DM000000000000100000010000000010000001字逻辑与字逻辑与DM0000DM0001DM000200000000

103、1000000100000000111100110000000001110010字逻辑异或字逻辑异或DM00010000000011110011DM0000#007300000000100000010000000001110011字逻辑或字逻辑或逻辑运算指令的用途逻辑运算指令的用途(1)用逻辑指令完成逻辑运算)用逻辑指令完成逻辑运算(2)用逻辑指令进行通道清零)用逻辑指令进行通道清零(3)用逻辑指令将通道中的某些位屏蔽)用逻辑指令将通道中的某些位屏蔽例如,欲保留例如,欲保留HR00中的中的bit0、bit3、bit4、bit7、bit10的状态而屏蔽其余位的状态的状态而屏蔽其余位的状态可用可用

104、#0499与与HR00进行逻辑与运算来实现进行逻辑与运算来实现(#0499:0000010010011001)数据运算指令小结数据运算指令小结1.算术运算算术运算(2)注意二进制注意二进制/十进制减法运算有借位时的处理方法。十进制减法运算有借位时的处理方法。(3)注意除法运算时结果的存放方法。注意除法运算时结果的存放方法。(1)作二进制作二进制/十进制的加十进制的加/减运算时,需要减运算时,需要CY位参与位参与运算,注意运算开始要进行运算,注意运算开始要进行CY清零。清零。(4)注意双字运算时结果的存放方法。注意双字运算时结果的存放方法。3.注意执行各种指令对标志位的影响。注意执行各种指令对标

105、志位的影响。2.正确使用逻辑运算指令,注意其用途。正确使用逻辑运算指令,注意其用途。子程序控制指令子程序控制指令子程序调用指令子程序调用指令子程序定义指令子程序定义指令宏宏指指令令功能:当执行条件功能:当执行条件ON时,调用编号为时,调用编号为N的子程序。的子程序。一、子程序调用和子程序定义指令一、子程序调用和子程序定义指令功能:用功能:用SBN定义子程序定义子程序N开始,用开始,用RET定义子程序定义子程序结束。结束。1.指令格式和功能指令格式和功能SBS(91)NSBS(91)NSBS(91)NSBS(91)NSBN(92)NRET(93)SBN(92)NRET(93)2.执行子程序调用指

106、令的过程执行子程序调用指令的过程主程序段主程序段SBS(91)000主程序段主程序段SBS(91)001主程序段主程序段SBN(92)000子程序子程序000RET(93)SBN(92)001子程序子程序001RET(93)END(01)主程序段主程序段1主程序段主程序段2主程序段主程序段3子程序子程序001注意的问题:注意的问题:(1)指令指令SBS必须满足执行必须满足执行条件时,才能调用子程序。条件时,才能调用子程序。(2)子程序段必须用指令子程序段必须用指令SBN/RET来定义。来定义。(3)子程序必须放在主程序子程序必须放在主程序之后、指令之后、指令END之前。之前。子程序子程序000

107、(4)子程序不能自调用。子程序不能自调用。(5)子程序嵌套不能超过子程序嵌套不能超过16级。级。执行指令执行指令MOV向通道向通道220传送数传送数据据0001(使使22000ON)。3.子程序调用举例(子程序调用举例(1)主主程程序序子子程程序序25502END(01)RET(93)MOV(21)220010MOV(21)#0001220SBS(91)005001000010025313KEEP0110025314SBN(92)00522007255020010025313SFT(10)220220分析程序功能分析程序功能(1)当当00100为为OFF时,执行主程序。时,执行主程序。执行指令

108、执行指令KEEP,由由01100输出秒脉输出秒脉冲冲(注意注意25502的作用的作用)。只要只要00100一直一直ON,每个扫描周,每个扫描周期都执行移位寄存器指令期都执行移位寄存器指令SFT,使,使22000的的ON状态每秒向高位移一位。状态每秒向高位移一位。移位时间取决于移位时间取决于00100ON的时间。的时间。(2)当当00100为为ON时,执行主程序中时,执行主程序中的指令的指令SBS,中断执行主程序,转去中断执行主程序,转去执行子程序执行子程序005:25502执行指令执行指令MOV,将通道,将通道220的内容传送到通道的内容传送到通道010。注意几个问题注意几个问题:主程序中若将

109、主程序中若将SBS改成改成SBS,会产生什么现象会产生什么现象?当当22007为为ON时时,通道通道220的内容将如何变化的内容将如何变化?此此后后220的内容如何变化的内容如何变化?返回主程序返回主程序,继续执行主继续执行主程序中的指令程序中的指令KEEP。只要只要00100ON,上述过程将,上述过程将持续进行。持续进行。主主程程序序子子程程序序END(01)RET(93)MOV(21)220010MOV(21)#0001220SBS(91)005001000010025313KEEP0110025314SBN(92)00522007255020010025313SFT(10)220220子

110、程序调用指令举例(子程序调用指令举例(2)MOV#000420025315SBS(91)002CNT000253150000025502CNT000CNT000200TIM001#00200100001000CNT000TIM001SBN(92)00225313200ADD(30)200#0002CMP(20)200#001025506MOV(21)#0004200RET(93)END(01)主主程程序序子子程程序序MOV#000420025315SBS(91)002CNT000253150000025502CNT000CNT000200TIM001#00200100001000CNT000T

111、IM001主主程程序序先分析主程序先分析主程序PLC上电,即将上电,即将#0004传送传送到通道到通道200,复位,复位CNT000。(1)若若00000ON,CNT000开始计开始计数数(或定时或定时)。计数器设定值为通。计数器设定值为通道道200的内容的内容,计数器能自复位。计数器能自复位。(2)若若CNT000ON(ON一个扫一个扫描周期描周期):停止执行主程序,转去执行子停止执行主程序,转去执行子程序程序002。子程序执行完毕,返回执行主子程序执行完毕,返回执行主程序:将程序:将01000置为置为ON、并使、并使TIM001开始定时(开始定时(2s)。)。SBN(92)00225313

112、200ADD(30)200#0002CMP(20)200#001025506MOV(21)#0004200RET(93)END(01)子子程程序序再分析子程序再分析子程序(1)执行指令执行指令ADD,将通道,将通道200加上加上#0002;计数器的设定值变成计数器的设定值变成0006(2)执行指令执行指令CMP,将通道,将通道200的内容与的内容与#0010比较比较;(3)若若200的内容的内容=#0010,则,则将将#0004传送到通道传送到通道200中。中。计数器的设定值恢复计数器的设定值恢复0004(4)子程序执行完毕,返回子程序执行完毕,返回执行主程序。执行主程序。子程序调用举例(子程

113、序调用举例(3)子程序嵌套子程序嵌套程序分析程序分析主程序主程序子程序子程序CMP(20)DM0000#0000255062100021000SBS(91)011RET(93)SBN(92)0112100125313RET(93)25313SBS(91)010CNT00025315000002550221001CNT000#03000100121001SBN(92)010DEC(39)DM000025313CNT000END(01)执执行行子子程程序序010时时若若25506ON,则则使使21000ON。则则再再调调用用子子程程序序011,使,使21001ON子子程程序序011执执行行完毕完毕

114、,返回返回010。从从子子程程序序010返返回继续执行主程序回继续执行主程序BCD减减1比较比较(续)(续)执执行行子子程程序序010时时,若若25506 OFF则则返返回主程序。回主程序。CMP(20)DM0000#0000255062100021000SBS(91)011RET(93)SBN(92)0112100125313RET(93)25313END(01)SBS(91)010CNT00025315000002550221001CNT000#03000100121001SBN(92)010DEC(39)DM000025313CNT000由由于于CNT000为为自自复复位位,所所以以它它

115、只只ON一一个扫描周期个扫描周期如如果果执执行行子子程程序序,两两个个子子程程序序也也只只在在该该扫扫描描周周期期中中执执行行一次。一次。当执行条件当执行条件ON时,停止执行主程序,将输入数据时,停止执行主程序,将输入数据I1I1+3的的内容复制到内容复制到SR232SR235中,将输出数据中,将输出数据O1O1+3的内容复的内容复制到制到SR236SR239中,然后调用子程序中,然后调用子程序N;MCRO(99)NI1O1MCRO(99)NI1O1宏指令:用一个子程序宏指令:用一个子程序N代替代替多个具有相同结构、但操作多个具有相同结构、但操作数不同的子程序。数不同的子程序。二、宏指令及其功

116、能二、宏指令及其功能执行宏指令的过程执行宏指令的过程子程序子程序N执行完毕,再将执行完毕,再将SR236SR239的内容传送到的内容传送到O1O1+3中,并返回到中,并返回到MCRO的下一条语句,继续执行主程序。的下一条语句,继续执行主程序。注意:子程序注意:子程序N必须用指令必须用指令SBN/RET来定义,必须放在主程序来定义,必须放在主程序之后、之后、END之前。子程序嵌套不能超过之前。子程序嵌套不能超过16次。次。关于宏指令的操作数关于宏指令的操作数执行一次左面的程执行一次左面的程序与执行下图程序序与执行下图程序的结果相同。的结果相同。第一个输入字第一个输入字子程序子程序040第一个第一

117、个输出字输出字INCHR10SBN(92)040MCRO040HR10010RET(93)END(01)00001232002360023201236012360023601HR1000 0100101000HR10010100001001结构相同结构相同程序中,一般安排多次调用宏指令。程序中,一般安排多次调用宏指令。使用宏指令举例(使用宏指令举例(1)MCRO040200HR00SBN(92)040MCRO040201HR10RET(93)END(01)0010023200236002320123601232022360023601主主程程序序子子程程序序HR000020000 HR0001

118、20001200020000HR0001HRHR100020100HR100120101201021000HR1001HR执行左面的程序与执执行左面的程序与执行下图的结果相同。行下图的结果相同。第一个输入字第一个输入字第一个输入字第一个输入字子程序子程序100子程序子程序040第一个输出字第一个输出字第一个输出字第一个输出字本程序中安排本程序中安排2次调用宏指令。次调用宏指令。(X+10),结结果果存存入入DM0000Y=(X+10)/X,结果结果Y存入存入DM0010Y与与#0006比较比较使用宏指令举例(使用宏指令举例(2)MCRO100HR10010SBN(92)10025313MCRO

119、100HR05011ADDHR00DM0000#001025313CLC(41)DIVDM0000DM0010HR00CMPDM0010#0006RET(93)END(01)MOV#0003HR012550723200236002320123601执行上面的程执行上面的程序与执行左图序与执行左图的结果相同。的结果相同。HR100001000HR10010100125313ADD(30)HR00DM0000#0010DIV(33)DM0000DM0010HR00CMP(20)DM0010#000625507MOV(21)#0003HR01CLC(41)DM0000DM0010HR05000110

120、0HR05010110125313ADD(30)HR00DM0000#0010DIV(33)DM0000DM0010HR00CMP(20)DM0010#000625507MOV(21)#0003HR01CLC(41)DM0000DM0010HR1000 0100101000HR100101001当需要经常当需要经常执行结构相执行结构相同、但操作同、但操作数不同的程数不同的程序段时,使序段时,使用宏指令,用宏指令,使程序大大使程序大大简化,也提简化,也提高了子程序高了子程序的利用率。的利用率。SBN(92)040MCRO040HR10010RET(93)END(01)00001232002320

121、1236012360023601MCRO040HR1101100002HR1100 0110101100HR110101101使用宏指令举例(使用宏指令举例(3)使用时,直接删除本页!使用时,直接删除本页!精品课件,你值得拥有精品课件,你值得拥有!精品课件,你值得拥有精品课件,你值得拥有!使用时,直接删除本页!使用时,直接删除本页!精品课件,你值得拥有精品课件,你值得拥有!精品课件,你值得拥有精品课件,你值得拥有!使用时,直接删除本页!使用时,直接删除本页!精品课件,你值得拥有精品课件,你值得拥有!精品课件,你值得拥有精品课件,你值得拥有!子程序控制指令小结子程序控制指令小结1.子程序必须用指令子程序必须用指令SBN/RET来定义。子程序必来定义。子程序必须放在主程序之后、指令须放在主程序之后、指令END之前。之前。2.子程序执行完毕,要返回到调用它的指令子程序执行完毕,要返回到调用它的指令SBS的的下一条指令处,继续执行主程序。下一条指令处,继续执行主程序。3.注意宏指令的应用场合,其操作数与子程序中输注意宏指令的应用场合,其操作数与子程序中输入入/输出数据的对应关系。输出数据的对应关系。4.注意执行指令对相关标志位的影响。注意执行指令对相关标志位的影响。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号