使用FOR和NEXT指令可在重複執行分配計數的循環中執行程序段,每條FOR指令需要一條NEXT指令,將FOR-NEXT循環置於(yu) 最大嵌套深度為(wei) 8層的FOR-NEXT循環內(nei) 。
FOR指令標記循環的開始,NEXT指令為(wei) 循環體(ti) 的結束指令。
一、FOR-NEXT指令說明,循環指令說明
(1)FOR指令管腳說明
INIT、FINAL分別定義(yi) 起始值和結束值。
使能輸入EN有效,循環體(ti) 開始執行,執行到NEXT指令時返回,每執行一次循環體(ti) ,當前值計數器INDX增1,達到終止值FINAL時,循環結束。
使能輸入無效時,循環體(ti) 程序不執行。每次使能輸入有效,指令自動將各參數複位。
注意:使用 FOR 和 NEXT 指令可在重複執行分配計數的循環中執行程序段。每條 FOR 指令需要一條 NEXT 指令。
二、FOR-NEXT 簡單循環編程案例(字節)
編程要求:通過FOR-NEXT循環指令把1 -100數字依次放入VB100-VB199地址裏。
(1)建立指針地址:VD10是指指針,就相當於(yu) 手指指向一樣,&VB100是指針指向的起始地址或首地址,相當於(yu) 你手指指向的第一個(ge) 地址。
(2)啟用FOR循環,EN端使能端不需要一直接通,隻需要使用沿脈衝(chong) (上升沿)觸發,INDX存放於(yu) 循環次數使用字數據類型表示,INIT表示起始循環次數,FINAL表示結束循環次數。
(3)寫(xie) 入指針與(yu) 指針偏移,當執行一次循環VB1000值加一,把VB1000寫(xie) 入至VB100,當循環一次指針偏移一個(ge) 字節。
(4)循環結束完成
(5)演示效果
從(cong) VB100開始的100字節分別為(wei) VB100-VB199寫(xie) 入1-100數字。
三、FOR-NEXT 簡單循環編程案例(字)
編程要求:通過FOR-NEXT循環指令把1 -100數字依次放入VW100-VW298地址裏。
(1)建立指針地址:VD10是指指針,就相當於(yu) 手指指向一樣,&VB100是指針指向的起始地址或首地址,相當於(yu) 你手指指向的第一個(ge) 地址。
(2)啟用FOR循環,EN端使能端不需要一直接通,隻需要使用沿脈衝(chong) (上升沿)觸發,INDX存放於(yu) 循環次數使用字數據類型表示,INIT表示起始循環次數,FINAL表示結束循環次數。
(3)寫(xie) 入指針與(yu) 指針偏移,把VW0當前循環次數存放到指針指向的VW100地址裏,在通過加法指令把VW100+2=VW102,這裏為(wei) 什麽(me) 要加2呢?是因為(wei) 既然是循環字,字由兩(liang) 個(ge) 字節組成,所以加2是為(wei) 了依次排序下去。
(4)循環結束完成
(5)效果演示
從(cong) VW100開始的100字分別為(wei) VW100-VW298寫(xie) 入1-100數字。
四、FOR-NEXT 簡單循環編程案例(雙字)
編程要求:通過FOR-NEXT循環指令把1 -100數字依次放入VD100-VD496地址裏。
(1)建立指針地址:VD10是指指針,就相當於(yu) 手指指向一樣,&VB100是指針指向的起始地址或首地址,相當於(yu) 你手指指向的第一個(ge) 地址。
(2)啟用FOR循環,EN端使能端不需要一直接通,隻需要使用沿脈衝(chong) (上升沿)觸發,INDX存放於(yu) 循環次數使用字數據類型表示,INIT表示起始循環次數,FINAL表示結束循環次數。
(3)寫(xie) 入指針與(yu) 指針偏移,寫(xie) 入指針與(yu) 指針偏移,當執行一次循環VD1000值加一,把VD1000寫(xie) 入至VD100,當循環一次指針偏移一個(ge) 雙字。
(4)循環結束完成
(5)演示效果
從(cong) VD100開始的100雙字分別為(wei) VD100-VD496寫(xie) 入1-100數字。
五、問答專(zhuan) 區
(1)從(cong) 以上圖中可以看出字節/字/雙字都可以達到1到100數值,但VW0值都是101這是為(wei) 何呢?
答:設定循環次數是100次,但FOR循環指令需要再進行循環一次進行對比,直到循環次數大於(yu) 100設定值,才能停止,停止將不再執行FOR循環到NEXT這段程序。
(2)為(wei) 什麽(me) 傳(chuan) 送字的時候不需要轉換,而傳(chuan) 送字節、雙字的時候需要轉換呢?
答:FOR循環指令隻能支持字的數據類型,所以不需要轉換直接使用,而字節/雙字才需要轉換。
(3)FOR-NEXT指令的循環次數如何計算?
答:FOR-NEXT工作過程:啟用FOR-NEXT指令,首先將 INIT( 初始值) 複製到 INDX(當前循環次數);每執行一次,INDX (當前循環次數) 加1;如 果 INDX 大於(yu) FINAL (終止循環次數),終止循環。
比如:INIT=1 FINAL=10,則循環體(ti) 被執行10次,然後退出循環, 退出循環後INDX=11
INIT=0,FINAL=10, 則循環體(ti) 被執行11次,然後退出循環,退出循環後INDX=11
(4)FOR-NEXT指令執行時,主程序是否執行,對掃描周期的影響?
答:程序自上而下循環掃描,當FOR-NEXT指令啟用後,則循環體(ti) 被循環執行,直至循環次數到達,循環結束,程序繼續向下執行。即在一個(ge) 掃描周期內(nei) 執行循環完畢後才會(hui) 向下執行,循環次數越多,會(hui) 導致掃描周期時間延長越多。如果循環次數過多或者出現死循環,會(hui) 導致掃描周期時間超過看門狗時間,報出看門狗超時的致命錯誤,CPU停機並且SF/DIAG燈紅燈常亮。
(5)如何在FOR-NEXT執行循環過程中,退出循環?
答:您可以在FOR/NEXT 指令處於(yu) 循環過程中時,在循環體(ti) 中修改FINAL (終止循環次數)數值。