已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目项目 2222 子程序指令和局部表变量表子程序指令和局部表变量表 1 1 子程序调用指令 子程序调用指令 CALLCALL 子程序调用指令 CALL 将程序控制权交给子程序SBR N 调用子程序时可以带参数也 可以不带参数 子程序执行完成后 控制权返回到调用子程序的指令的下一条指令 子程 序条件返回指令 CRET 根据它前面的逻辑决定是否终止子程序 要添加一个子程序可以 在命令菜单中选择 Edit Insert Subroutine 在主程序中 可以嵌套调用子程序 在子程序中调用子程序 最多嵌套8层 在中断 服务程序中 不能嵌套调用子程序 在被中断服务程序调用的子程序中不能再出现子程序 调用 不禁止递归调用 子程序调用自己 但是当使用带子程序的递归调用时应慎重 图 1 子程序指令的有效操作数 1 必须偏移1个或1个以上的单位 2 必须偏移 30 个或 30 个以上的单位 提示 STEP 7 Micro WIN为每个子程序自动加入返回指令 当有一个子程序被调用时 系统会保存当前的逻辑堆栈 置栈顶值为1 堆栈的其他值 为零 把控制交给被调用的子程序 当子程序完成之后 恢复逻辑堆栈 把控制权交还给 调用程序 因为累加器可在主程序和子程序之间自由传递 所以在子程序调用时 累加器 的值既不保存也不恢复 当子程序在同一个周期内被多次调用时 不能使用上升沿 下降沿 定时器和计数器 指令 2 2 带参数调用子程序 带参数调用子程序 子程序可以包含要传递的参数 参数在子程序的局部变量表中定义 参数必须有变量 名 最多23个字符 变量类型和数据类型 一个子程序最多可以传递16个参数 局部变量表中的变量类型区定义变量是传入子程序 IN 传入和传出子程序 IN OUT 或者传出子程序 OUT 表6 79中描述了一个子程序中的参数类型 要加入一 个参数 把光标放到要加入的变量类型区 IN IN OUT OUT 点击鼠标右键可以得到一 个菜单选择 选择插入选项 然后选择下一行选项 这样就出现了另一个所选类型的参数 项 图 2 子程序的参数类型 如图 2 中所示 局部变量表中的数据类型区定义了参数的大小和格式 参数类型如下 所示 1 布尔 该数据类型用于单独位的输入和输出 下例中的IN3是布尔输入 2 字节 字和双字 这些数据类型分别指明一个1 2或者4个字节的无符号输入或输出 参数 3 整数 双整数 这些数据类型分别指明1 2或者4个字节的有符号输入或输出参数 4 实数 该数据类型指明一个 4字节 IEEE浮点值 5 STRING 该数据类型用作一个指向字符串的四字节指针 6 能流 布尔能流仅允许对位输入操作 该变量声明告诉STEP 7 Micro WIN 32此输 入参数是位逻辑指令组合的能流结果 在局部变量表中布尔能流输入必须出现在其它类型 的前面 只有输入参数可以这样使用 下例中的使能输入 EN 和IN1输入使用布尔逻辑 图 3 子程序调用示例 地址参数 如IN4处的 VB100 以一个双字 无符号 的值传送到子程序 在带常数调 用程序时必须指明常数类型 例如 把值为12345的无符号双字作为参数进行传递 常数参 数必须用DW 12345指明 如果参数中缺少了常数描述符 常数可能被当作不同的类型 输 入或输出参数上没有自动数据类型转换功能 例如 如果局部变量表明一个参数具有实型 而在调用时使用一个双字 子程序中的值就是双字 当给子程序传递值时 它们放在子程序的局部存储器中 局部变量表的最左列是每个 被传递参数的局部存储器地址 当子程序调用时 输入参数值被拷贝到子程序的局部存储 器 当子程序完成时 从局部存储器区拷贝输出参数值到指定的输出参数地址 数据单元 的大小和类型用参数的代码表示 在子程序中局部存储器的参数值的分配如下所示 1 按照子程序指令的调用顺序 参数值分别给局部存储器 起始地址是L0 2 1到8连续位参数值分配一个字节 从Lx 0到Lx 7 3 字节 字和双字值按照所需字节分配在局部存储器中 LBx LWx或LDx 在带参数调用子程序指令中 参数必须按照一定顺序排列 输入参数在最前面 其次 是输入 输出参数 然后是输出参数 如果用语句表编程 CALL指令的格式是 CALL子程序号 参数1 参数2 参数 图 4 子程序和子程序返回指令 图 5 带字符串的子程序调用 举例 1 设计求圆周长得子程序 输入量为直径 小于 32768 的整数 输出量为圆周长 双 字整数 在 I0 0 的上升沿调用该子程序 直径为 10000mm 运算结果存放在 VD10 中 设 计出程序 主程序 子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论