按键精灵的函数与子程序问题。 有程序123和程序a,执行顺序1-a-2-a-3-a-cd

按键精灵的函数与子程序问题。 有程序123和程序a,执行顺序1-a-2-a-3-a-cd,第1张

函数与程序的区别在于函数有返回值而子程序没有,这也就是说函数可以代替子程序,子程序不能代替函数。

call main()

function main()

Do

call 1()

call a()

call 2()

call a()

call 3()

call a()

dealy 30000

loop

end function

function 1()

函数1的内容

end function

function 2()

函数2的内容

end function

function 3()

函数1的内容

end function

function a()

函数a的内容

end function

您好,一、 主程序和子程序

1、 主程序

程序分为主程序和子程序,通常CNC系统按主程序指令运行,但在主程序中遇见调用子程序的情形时,则 CNC 系统将按子程序的指令运行,在子程序调用结束后控制权重新交给主程序。

CNC 存储区内可存 l25个主程序和子程序。程序开始的程序号用 EIA 标准代码O地址指令。

2、子程序

在程序中有一些顺序固定或反复出现的加工图形,把这些作为子程序,预先写人到存储器中,可 大大简化程序。

机电专业技术网

子程序和主程序必须存在同一个文件中,调出的子程序可以再调用另一个子程序,我们将主程序调用子程序称为一重子程序调用,子程序调用子程序称为多重调用。

一个子程序可被多次调用,用一次调用指令可以重复 999 次调用。

l )子程序的编制

在子程序的开始为O地址指定的程序号、子程序中最后结束子程序指令 M99 ,为一单独程序段。

2 )子程序的执行

子程序是由主程序或上层子程序调山并执行的。

子程序调用指令如下:

M98 P L x x x x

调用子程序指令 子程序号 子程序调用次数

子程序调用次数的默认值为 1

(例 l ) ; M98PL002L5 %1002 号子程序被连续调用 5 次 机电专业技术网

M98 指令可与刀具移动指令放于同一程序段中。

[注1]子程序和主程序必须存在同一个文件中

[注2]子程序名和主程序名不得相同。

[注3]M98 , M99 信号不愉出到机床处,

[注4]当找不到 p 地址指定的子程序号时报警。

[注5]在 MDI 下使用 M98 P 调用指定的子程序是无效的。

子程序调用指令是指调用子程序的指令,包括调用指令和返回指令。

在进行程序设计时,一般都把常用的程序段编写成独立的子程序或过程,在需要时随时调用,调用子程序需要用到调用指令。子程序执行完毕,就需要用返回指令返回到主程序。

调用子程序的指令格式子程序调用的指令格式:M98 P单次调用指令,P后跟被调用的子程序号M98 P L重复调用子程序指令,L后跟重复调用的次数子程序的格式:子程序号:是调用入口地址,必须和主程序中的子程序调用指令中所指向的程序号一致。子程序结束:M99。

子程序简介:

一次装夹加工多个形状相同或刀具运动轨迹相同的零件,即一个零件有重复加工部分的情况下,为了简化加工程序,把重复轨迹的程序段独立编成一程序进行反复调用,这重复轨迹的程序称为子程序,而调用子程序的程序称主程序。

在子程序中调用子程序与在主程序中调用子程序方法一致。在使用子程序编程时,应注意主、子程序使用不同的编程方式。一般主程序中使用G90指令,而子程序使用G91指令,避免刀具在同一位置加工。当子程序中使用M99指令指定顺序号时,子程序结束时并不返回到调用子程序程序段的下一程序段,而是返回到M99指令指定的顺序号的程序段,并执行该程序段。

1、两过程定义与作用

子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。

子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点(即调用指令的下一条指令),继续执行没有处理完的主程序,这一过程叫做(主程序)调用子程序过程。

子程序结构可简化程序,防止重复书写错误,并可节省内存空间。计算机中经常把常用的各种通用的程序段编成子程序,提供给用户使用。用户在自己编写的程序中,只要会调用这些子程序,就可大大简化用户编程的困难。

中断是计算机中央处理单元CPU与外设I/O交换数据的一种方式,除此方式外,还有无条件、条件(查询)、存贮器直接存取DMA和I/O通道等四种方式。由于无条件不可靠,条件效率低,DMA和I/O通道两方式硬件复杂,而中断方式CPU效率高,因此一般大多采用中断方式。

中断概念是当计算机正在执行某一(主)程序时,收到一中断请求,如果中断响应条件成立,计算机就把正在执行的程序暂停一下,去响应处理这一请求,执行中断服务程序,处理完服务程序后,中断返回指令使计算机返回原来还没有执行完的程序断点处继续执行,这一过程称为中断过程。有了中断,计算机才能具有并行处理,实时处理和故障处理等重要功能。

2、两过程的联系与区别

21联系

中断与调用子程序两过程属于完全不同的概念,但它们也有不少相似之处。两者都需要保护断点(即下一条指令地址)、跳至子程序或中断服务程序、保护现场、子程序或中断处理、恢复现场、恢复断点(即返回主程序)。两者都可实现嵌套,即正在执行的子程序再调另一子程序或正在处理的中断程序又被另一新中断请求所中断,嵌套可为多级。

正是由于这些表面上的相似处,很容易使学生把两者混淆起来,特别是把中断也看为子程序,这就大错特错了。

22区别

中断过程与调用子程序过程相似点是表面的,从本质上讲两者是完全不一样的。

两者的根本区别主要表现在服务时间与服务对象不一样上。首先,调用子程序过程发生的时间是已知和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序,调用指令所在位置是已知和固定的。而中断过程发生的时间一般的随机的,CPU在执行某一主程序时收到中断源提出的中断申请时,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的(软中断发生时间是固定的),也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的;其次,子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系;第三,主程序调用子程序过程完全属于软件处理过程,不需要专门的硬件电路,而中断处理系统是一个软、硬件结合系统,需要专门的硬件电路才能完全中断处理的过程;第四,子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制,而中断嵌套级数主要由中断优先级数来决定,一般优先级数不会很大。

1、概要设计

首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。

2、详细设计

在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。

3、编码

在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。

1维宏相对老一些的系统用G65调去子程序,具体用法如下:

主程序

G65P2012L3

M30

子程序

O2012

2现在较新的维宏系统都是采用M98调用子程序,和上面一样就是把G65换成M98,再在子程序结尾加上M99

维宏系统编程时需把主程序和子程序放在同一文件中

; 本程序在MASMPlus 12集成环境下通过编译,经过调试,运行正确。

Code Segment

Assume CS:Code,DS:Code

; -------------------------------------

; 功能:显示指定地址(Str_Addr)的字符串

; 入口:

; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr

; 用法举例:Output PromptStr

Output MACRO Str_Addr

lea dx,Str_Addr

mov ah,9

int 21h

EndM

; -------------------------------------

; 冒泡排序:对从MEM单元开始的N个8位无符号数降序排序

; 入口参数:ds:SI=数组地址,CX=数组元素个数

Bubbling Proc Near

push es

push si

push di

push cx

push ax

push ds

pop es

dec cx ;外循环次数

cld

@@Scanning: push cx ;入栈保存外循环次数

push si ;入栈保存数组地址

@@Compare: mov di,si ;当前数组元素地址赋给目的变址寄存器,以备交换之用

lodsb ;将当前数组元素读入累加器

cmp al,[si] ;当前数组元素与相邻的下一个数组元素相比较

jae @@NextOne ;若大于或等于,不作数据交换,处理下一个数组元素

xchg al,[si] ;若小于,交换数组元素

stosb ;保存数值较小者

@@NextOne: loop @@Compare ;处理下一个数组元素

pop si ;数组地址出栈

pop cx ;外循环次数出栈

loop @@Scanning ;下一趟比较

pop ax

pop cx

pop di

pop si

pop es

ret

Bubbling EndP

; -------------------------------------

MEM db 12,56,253,200,10,99,78,75,63,100

N equ $-MEM

Press_Key db 7,13,10,13,10,'The complated Press any key to exit$'

Start: push cs

pop ds

mov cx,N ;数组元素个数

lea si,MEM ;数组地址

call Bubbling

; -------------------------------------

Exit_Proc: Output Press_Key ;提示 *** 作完成,按任意键结束程序

mov ah,1

int 21h

mov ah,4ch ;结束程序

int 21h

Code ENDS

END Start ;编译到此结束

以上就是关于按键精灵的函数与子程序问题。 有程序123和程序a,执行顺序1-a-2-a-3-a-cd全部的内容,包括:按键精灵的函数与子程序问题。 有程序123和程序a,执行顺序1-a-2-a-3-a-cd、数控加工程序中常用的准备功能有哪些、调用子程序指令格式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存