只呼叫一次 子程式的呼叫與迴圈M98 M99

2021-10-16 07:16:16 字數 2114 閱讀 2245

當乙個主程式內,有一些固定的程式指令組(如:開槽,銑圓等),某段程式須來回重複執行,這時可將它們編成子程式,而在主程式中可對這段程式進行呼叫,如此在程式設計時可簡化程式,不用重複編寫一段一樣的程式,使主程式的結構更簡潔、清楚,減少工具機記憶體的使用,提高程式設計效率。乙個子程式也可呼叫另一子程式,這種情況稱之謂子程式套子程式。

1.子程式的結構

子程式的組成,依下列格式程式設計:

o0006…………… 子程式編號

n1………………程式內容

n2………………程式內容

nn m99…………子程式結束

即子程式以字母o(注意不是數字零0)為開始,其後跟數字,為子程式名編號。在上例中即為06。子程式的結束以m99為結束符。

2.子程式的執行

子程式必須在主程式呼叫時才能被執行。子程式的呼叫格式如下:

m98 p_________l_________

字母p後所跟的數字就是需呼叫子程式的程式號,l後的數字是子程式呼叫次數,如l沒有被指定時,子程式僅執行一次。

例:m98 p0006……… 執行0006子程式一次。(在呼叫子程式時,p---後面直接 輸需呼叫子程式的程式號,不用加字母o)

m98 p0006 l12……執行0006子程式12次。

3.子程式的位置

在編加工程式時,如果需要用子程式呼叫功能,則子程式一般寫在主程式之後,兩者在乙個加工程式裡。如下所示:

o0001(主程式,程式號)

m6t1                         (主程式)

g90g55                     (主程式)

m03s2000                 (主程式)

g43g00x0y0z100.h1(主程式)

g00z1                         (主程式)

m98p0006l9              (呼叫子程式並迴圈9次)

g00z100.                    (主程式)

m30                             (主程式)

如在乙個加工程式中有多個子程式,子程式必須都在主程式之內,而子程式之間的呼叫順序可以是任意的。

4.子程式程式設計時的注意事項

(1)在子程式中可以繼續呼叫其它子程式,既子程式可以套呼叫。有些

系統規定子程式套用最多為十層。

(2)子程式不能遞迴呼叫。所謂遞迴呼叫就是在子程式中有自己呼叫自己的

語句,或者是子程式1呼叫子程式2,在子程式2中又呼叫子程式1,當出

現 這種情況時也是間接的遞迴呼叫。

例:如下圖所示需要加工三道寬20mm深26mm的槽,每刀切深1mm,銑槽程式需要重複編寫26次。三道槽需要重複編寫78次。如果使用子程式則只需要1編寫次就可以了,使用φ20銑刀。程式如下(圖畫的有點簡易見諒)

主程式:

g90g55

m03s800

g43g00x-50.y-86.z50.h1(快速定位到第乙個槽安全下刀位置)

g00z0.

m8m98p0006l13(第乙個槽,呼叫子程式,並迴圈13次)

g00z5.

x0.y-96.(第二槽的下刀位置)

z0.m98p0006l13(第2個槽,呼叫子程式)

g00z5.

x50.y-96.(第三槽的下刀位置)

z0.m98p0006l13(第3個槽,呼叫子程式)

g00z100.

m30(程式結束)

子程式:

o0006(子程式號)

g91g01z-1.f1000(每次下刀1mm)

g90g01y86.f200

g91g01z-1.f1000

g90y-86.f200

m99(程式迴圈)

注:子程式編寫每迴圈一次銑深2mm,圖紙要求銑深26mm所以迴圈l13次。

如果銑深是單數比如25mm,可以把程式z0.改為z1.來解決。

(如有錯誤的地方歡迎指正,謝謝)

子程式呼叫與巨集定義的異同 巨集與子程式的區別

巨集和子程式都是為了簡化源程式的編寫,提高程式的可維護性,但是它們二者之間存在著以下本質的區別 1 在源程式中,通過書寫巨集名來引用巨集,而子程式是通過 call 指令來呼叫 2 匯程式設計序對巨集通過巨集擴充套件來加入其定義體,巨集引用多少次,就相應擴充套件多少次,所以,引用巨集不會縮短目標程式 ...

MySQL C API的一次呼叫體驗

mysql提供了標準的c api,rpm import rpm gpg key centos 5 執行後,果然非常ok了,安裝完mysql devel後,在 usr include mysql下可發現mysql的標頭檔案,usr lib mysql下可以發現mysql的庫檔案 這是我們編譯和連線所需...

解決js定時呼叫ajax只請求一次的問題

1 在使用 ajax get方法定時請求資料實時檢測結果的時候,發現取出的資料沒變化,經常反覆測試確認發現,該問題只在 ie 瀏覽器下會發生。沒錯,又是 ie!1 原來是 get 請求在ie瀏覽器中會被快取,從第二次請求開始,一直都是請求快取。2 參考資料 get 對比 post1 變更請求方式為p...