中断处理完后cpu返回主程序由什么代码实现

中断处理完后cpu返回主程序由什么代码实现,第1张

中断处理完后cpu返回主程序由IRET指令代码实现。中断指令调用n号中断处理程序,在中断处理程序中,用中断返回指令IRET指令使CPU返回主程序断点继续执行。中断指令(INTn)和调用程序指令很相似,均转入内存中其它程序段执行,执行完后再转回。

主、子程序的调用关系见图4-7。子程序中还可以再调用其他子程序,即可多重嵌套调用。M99的功能就是结束子程序的运行并使数控系统返回到主程序,重新按主程序的指令运行。每个子程序的最后一条指令必须是M99。主子程序调用编程:在图4-8中,轮廓的精加工用子程序编写,在主程序中,按轮廓的形状多次调用子程序,其参考程序如下:

425 子程序调用指令M98、M99

数控车床程序的编写也可采用主、子程序的形式。数控系统按主程序的指令运行,但在主程序中遇见调用子程序的指令时,将开始按子程序的指令运行;在子程序中遇见调用结束指令时,自动返回到主程序,并重新按主程序的指令运行。

对程序中有一些顺序固定或反复出现的加工图形,可将其写成子程序,然后由主程序来调用,这样可以大大简化整个程序的编写。

1子程序调用指令M98

指令格式:M98 PL

M98指令中的P后面跟的是被调用的子程序的程序号,而L后面跟的是调用该子程序的次数(默认值为1)。主、子程序的调用关系见图4-7。

在编写程序时,主、子程序必须写在同一个文件中,都是以字母“O”开头,以“O”单独作为一程序行书写。子程序中还可以再调用其他子程序,即可多重嵌套调用。

图4-7 主、子程序调用关系

同一个子程序可被主程序多次调用。同一个主程序可以调用多个不同的子程序。

2子程序结束指令M99

M99的功能就是结束子程序的运行并使数控系统返回到主程序,重新按主程序的指令运行。每个子程序的最后一条指令必须是M99。

例4-6主子程序调用编程:在图4-8中,轮廓的精加工用子程序编写,在主程序中,按轮廓的形状多次调用子程序,其参考程序如下:

图4-8 主、子程序编程

O1000

N001 G92 X1500 Z1000;

N002 M03 S800 M08;

N003 G00 X350 Z0;

N004 G01 X0 F03;

N005 G00 X300 Z20;

N006 G01 Z-550 F03;

N007 G00 X1500 Z1000;

N008 X320Z0T0303;

N009 M98 P1500 L2;

N010 G00 W-120;

N011 G01 X0 F012;

N012 G04 X20;

N013 G00 X1500 Z1000 M09;

N014 M30;

O1500

N101 G00 W-120;

N102 G01 U-120 F015;

N103 G04 X10;

N104G00U12;

N105W-8;

N106 G01 U-12 F015;

N107 G04 X10;

N108 G00U12;

N109 M99;

取工件左端面中心点为编程坐标原点,对刀点位置在编程坐标系中X150 Z100位置。

需要注意的是:在MDI方式下,使用子程序调用指令是无效的。

个人感觉你说的第二种比较好,比较可靠。(如果你用第一种情况,电脑死机了怎么办??我们单位的电脑装上后反映就比较迟钝)\x0d\\x0d\还有NETR是通过指定端口从网络读取信息(最多16个字节){结合你的情况就是从PC向PLC读取信息}\x0d\\x0d\还有NETW是通过指定端口向网络写信息(最多16个字节){结合你的情况就是从PLC向PC发送信息}\x0d\\x0d\具体方法:\x0d\选择菜单命令工具(T)>指令向导_缓笱≡NETR/NETW;\x0d\1指定您需要的网络 *** 作数目\x0d\2指定端口号和子程序名称\x0d\3指定网络 *** 作\x0d\4分配V存储区\x0d\5生成代码\x0d\为了便于进行连接在网络中的PLC之间的数据交换,S7-200支持网络读(NETR)和网络写(NETW)指令。NETR指令从远程PLC中的指定地址读取配置好的一定数量的数据。NETW指令向远程PLC中的指定地址写入配置好的一定数量的数据。NETR\x0d\和NETW指令 *** 作由数据表中的前七个字节控制。表中的一个数值是读取/写入数据长度,可以规定1至16个字节。因此数据表最大可达23个字节。\x0d\\x0d\注释:在使用HSC向导之前,程序必须被编译,且处于符号编址模式。如果您尚未编译程序,向导在HSC配置过程开始时会提示您编译程序。\x0d\向导将向您询问初始化选项,然后为指定配置生成程序代码和数据块代码。从第一个屏幕选择NETR/NETW后,向导向您询问下列信息:\x0d\\x0d\步骤1指定您需要的网络 *** 作数目\x0d\\x0d\注释:如果项目包含使用STEP7Micro/WIN32版建立的现有NETR/NETW配置,您必须在继续执行步骤1之前选择编辑其中一个现有配置或建立一个新配置。\x0d\\x0d\可使用NETR/NETW指令向导,简化网络 *** 作配置。向导将向您询问初始化选项,并根据您的选择生成完整的配置。向导允许您配置多达24项独立的网络 *** 作,并生成代码协调这些 *** 作。\x0d\\x0d\步骤2指定端口号和子程序名称\x0d\\x0d\注释:项目可能已经包含一个NETR/NETW向导配置。所有以前建立的配置均被自动载入向导。向导会提示您完成以下两个步骤之一:\x0d\\x0d\选择编辑现有配置,方法是点击“下一步>”。\x0d\\x0d\选择从项目中删除现有配置,方法是选择“删除”复选框,并点击“完成”。\x0d\\x0d\如果不存在以前的配置,向导会询问以下信息:\x0d\\x0d\1PLC必须被设为PPI主站模式才能进行通信。您要指定通信将通过哪一个PLC端口进行。\x0d\\x0d\2向导建立一个用于执行具体网络 *** 作的参数化子程序。向导还为子程序指定一个默认名称。您可以编辑默认名称。\x0d\\x0d\步骤3指定网络 *** 作\x0d\\x0d\对于每项网络 *** 作,您需要提供下列信息:\x0d\\x0d\1指定 *** 作是NETR还是NETW。\x0d\\x0d\2指定从远程PLC(NETR)读取的数据字节数或向远程PLC(NETW)写入的数据字节数。\x0d\\x0d\3指定您希望用于通信的远程PLC网络地址。\x0d\\x0d\4如果您在配置NETR,指定以下内容:\x0d\\x0d\-数据存储在本地PLC中的位置。有效 *** 作数:VB、IB、QB、MB、LB。\x0d\-从远程PLC读取数据的位置。有效 *** 作数:VB、IB、QB、MB、LB。\x0d\\x0d\5如果您在配置NETW,指定以下内容:\x0d\\x0d\-数据存储在本地PLC中的位置。有效 *** 作数:VB、IB、QB、MB、LB。\x0d\\x0d\-向远程PLC写入数据的位置。有效 *** 作数:VB、IB、QB、MB、LB。\x0d\\x0d\步骤4分配V存储区\x0d\\x0d\对于您配置的每一项网络 *** 作,要求有12个字节的V存储区。您指定可放置配置的V存储区起始地址。向导会自动为您建议一个地址,但您可以编辑该地址。请注意,如果您使用重叠地址,向导在显示一则警告后,允许您进入下一步。\x0d\\x0d\注释:在NETR *** 作中,请确认将用于存储数据的变量地址没有与分配给向导配置的存储区地址重叠。\x0d\\x0d\步骤5生成程序代码\x0d\\x0d\回答这些询问后,点击“完成”,S7-200指令向导将为您指定的网络 *** 作生成代码。由向导建立的子程序成为项目的一部分。要在程序中使能网络通信,需要在主程序块中调用执行子程序(NET_EXE)。每次扫描周期时,使用SM00调用该子程序。这样会启动配置网络 *** 作执行。为每项网络 *** 作建立的数据处理子程序会在适当时间被自动调用。

是CPU进入中断周期后自动关中断,为了让主程序和中断服务程序能够处理中断与中断嵌套都要安排开中断指令。

中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行。

CPU进入中断周期后,由中断隐指令自动将使能全局中断标志位置零,即关中断,这就意味着CPU在执行中断服务程序中禁止响应新的中断请求。CPU若想再次响应中断请求,必须开中断,这一任务通常由中断服务程序中的开中断指令实现。

扩展资料:

中断源屏蔽处理的相关技术:

当中断源被屏蔽(屏蔽触发器mask=1),此时即使完成触发器D=1,中断查询信号到来时刻只能将中断请求触发器INTR置“0”,CPU接收不到该中断源的中断请求,即它被屏蔽。

若该中断源未被屏蔽(mask=0),当设备工作已完成时(D=1),中断查询信号则将INTR置“1”,表示该中断源向CPU发出中断请求,该信号送至排队器进行优先级判断。

为了保证级别低的中断源不干扰比其级别高的中断源的中断处理过程。可采用屏蔽技术。

参考资料来源:百度百科-可屏蔽中断标志

参考资料来源:百度百科-中断嵌套

cpu在响应中断前会保护主程序当前指令下面的一条指令的地址。就是将当前的IP和CS的内容入堆栈。cpu响应中断之后,将指令地址从堆栈中取出即可找到中断服务子程序入口地址。

CPU响应中断做如下动作:

①将中断类型码放入暂存器保存;

②将标志寄存器内容压入堆栈,以保护中断时的状态;

③将IF和TF标志清0,目的是防止在中断响应的同时又来别的中断,而将TF清0是为了防止CPU以单步方式执行中断处理子程序。这时要特别提醒,因为CPU在中断响应时自动关闭了IF标志,因此用户如要进行中断嵌套时,必须在自己的中断处理子程序中用开中断指令来重新设置IF;

④保护断点,断点指的是在响应中断时,主程序当前指令下面的一条指令的地址。因此保护断点的动作就是将当前的IP和CS的内容入栈,保护断点是为了以后正确地返回主程序;

⑤根据取到的中断类型码,在中断向量表中找出相应的中断向量,将其装入IP和CS,即呆自动转向中断服务子程序。

以上就是关于中断处理完后cpu返回主程序由什么代码实现全部的内容,包括:中断处理完后cpu返回主程序由什么代码实现、数控铣主程序能不能调用两个不同子程序编程、西门子PLC如何在主程序,写入调用子程序的命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9313053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存