使用FOR和NEXT指令可在重復(fù)執(zhí)行分配計(jì)數(shù)的循環(huán)中執(zhí)行程序段,每條FOR指令需要一條NEXT指令,將FOR-NEXT循環(huán)置于最大嵌套深度為8層的FOR-NEXT循環(huán)內(nèi)。
FOR指令標(biāo)記循環(huán)的開始,NEXT指令為循環(huán)體的結(jié)束指令。
一、FOR-NEXT指令說明
(1)FOR指令管腳說明
INIT、FINAL分別定義起始值和結(jié)束值。
使能輸入EN有效,循環(huán)體開始執(zhí)行,執(zhí)行到NEXT指令時(shí)返回,每執(zhí)行一次循環(huán)體,當(dāng)前值計(jì)數(shù)器INDX增1,達(dá)到終止值FINAL時(shí),循環(huán)結(jié)束。
使能輸入無效時(shí),循環(huán)體程序不執(zhí)行。每次使能輸入有效,指令自動(dòng)將各參數(shù)復(fù)位。
注意:使用 FOR 和 NEXT 指令可在重復(fù)執(zhí)行分配計(jì)數(shù)的循環(huán)中執(zhí)行程序段。每條 FOR 指令需要一條 NEXT 指令。
二、FOR-NEXT 簡單循環(huán)編程案例(字節(jié))
編程要求:通過FOR-NEXT循環(huán)指令把1 -100數(shù)字依次放入VB100-VB199地址里。
(1)建立指針地址:VD10是指指針,就相當(dāng)于手指指向一樣,&VB100是指針指向的起始地址或首地址,相當(dāng)于你手指指向的第一個(gè)地址。
(2)啟用FOR循環(huán),EN端使能端不需要一直接通,只需要使用沿脈沖(上升沿)觸發(fā),INDX存放于循環(huán)次數(shù)使用字?jǐn)?shù)據(jù)類型表示,INIT表示起始循環(huán)次數(shù),FINAL表示結(jié)束循環(huán)次數(shù)。
(3)寫入指針與指針偏移,當(dāng)執(zhí)行一次循環(huán)VB1000值加一,把VB1000寫入至VB100,當(dāng)循環(huán)一次指針偏移一個(gè)字節(jié)。
(4)循環(huán)結(jié)束完成
(5)演示效果
從VB100開始的100字節(jié)分別為VB100-VB199寫入1-100數(shù)字。
三、FOR-NEXT 簡單循環(huán)編程案例(字)
編程要求:通過FOR-NEXT循環(huán)指令把1 -100數(shù)字依次放入VW100-VW298地址里。
(1)建立指針地址:VD10是指指針,就相當(dāng)于手指指向一樣,&VB100是指針指向的起始地址或首地址,相當(dāng)于你手指指向的第一個(gè)地址。
(2)啟用FOR循環(huán),EN端使能端不需要一直接通,只需要使用沿脈沖(上升沿)觸發(fā),INDX存放于循環(huán)次數(shù)使用字?jǐn)?shù)據(jù)類型表示,INIT表示起始循環(huán)次數(shù),FINAL表示結(jié)束循環(huán)次數(shù)。
(3)寫入指針與指針偏移,把VW0當(dāng)前循環(huán)次數(shù)存放到指針指向的VW100地址里,在通過加法指令把VW100 2=VW102,這里為什么要加2呢?是因?yàn)榧热皇茄h(huán)字,字由兩個(gè)字節(jié)組成,所以加2是為了依次排序下去。
(4)循環(huán)結(jié)束完成
(5)效果演示
從VW100開始的100字分別為VW100-VW298寫入1-100數(shù)字。
四、FOR-NEXT 簡單循環(huán)編程案例(雙字)
編程要求:通過FOR-NEXT循環(huán)指令把1 -100數(shù)字依次放入VD100-VD496地址里。
(1)建立指針地址:VD10是指指針,就相當(dāng)于手指指向一樣,&VB100是指針指向的起始地址或首地址,相當(dāng)于你手指指向的第一個(gè)地址。
(2)啟用FOR循環(huán),EN端使能端不需要一直接通,只需要使用沿脈沖(上升沿)觸發(fā),INDX存放于循環(huán)次數(shù)使用字?jǐn)?shù)據(jù)類型表示,INIT表示起始循環(huán)次數(shù),FINAL表示結(jié)束循環(huán)次數(shù)。
(3)寫入指針與指針偏移,寫入指針與指針偏移,當(dāng)執(zhí)行一次循環(huán)VD1000值加一,把VD1000寫入至VD100,當(dāng)循環(huán)一次指針偏移一個(gè)雙字。
(4)循環(huán)結(jié)束完成
(5)演示效果
從VD100開始的100雙字分別為VD100-VD496寫入1-100數(shù)字。
問答專區(qū)
(1)從以上圖中可以看出字節(jié)/字/雙字都可以達(dá)到1到100數(shù)值,但VW0值都是101這是為何呢?
答:設(shè)定循環(huán)次數(shù)是100次,但FOR循環(huán)指令需要再進(jìn)行循環(huán)一次進(jìn)行對比,直到循環(huán)次數(shù)大于100設(shè)定值,才能停止,停止將不再執(zhí)行FOR循環(huán)到NEXT這段程序。
(2)為什么傳送字的時(shí)候不需要轉(zhuǎn)換,而傳送字節(jié)、雙字的時(shí)候需要轉(zhuǎn)換呢?
答:FOR循環(huán)指令只能支持字的數(shù)據(jù)類型,所以不需要轉(zhuǎn)換直接使用,而字節(jié)/雙字才需要轉(zhuǎn)換。
(3)FOR-NEXT指令的循環(huán)次數(shù)如何計(jì)算?
答:FOR-NEXT工作過程:啟用FOR-NEXT指令,首先將 INIT( 初始值) 復(fù)制到 INDX(當(dāng)前循環(huán)次數(shù));每執(zhí)行一次,INDX (當(dāng)前循環(huán)次數(shù)) 加1; 如 果 INDX 大于 FINAL (終止循環(huán)次數(shù)),終止循環(huán)。
比如: INIT=1 FINAL=10,則循環(huán)體被執(zhí)行10次,然后退出循環(huán), 退出循環(huán)后INDX=11
INIT=0,FINAL=10, 則循環(huán)體被執(zhí)行11次,然后退出循環(huán),退出循環(huán)后INDX=11
(4)FOR-NEXT指令執(zhí)行時(shí),主程序是否執(zhí)行,對掃描周期的影響?
答:程序自上而下循環(huán)掃描,當(dāng)FOR-NEXT指令啟用后,則循環(huán)體被循環(huán)執(zhí)行,直至循環(huán)次數(shù)到達(dá),循環(huán)結(jié)束,程序繼續(xù)向下執(zhí)行。即在一個(gè)掃描周期內(nèi)執(zhí)行循環(huán)完畢后才會(huì)向下執(zhí)行,循環(huán)次數(shù)越多,會(huì)導(dǎo)致掃描周期時(shí)間延長越多。如果循環(huán)次數(shù)過多或者出現(xiàn)死循環(huán),會(huì)導(dǎo)致掃描周期時(shí)間超過看門狗時(shí)間,報(bào)出看門狗超時(shí)的致命錯(cuò)誤,CPU停機(jī)并且SF/DIAG燈紅燈常亮。
(5)如何在FOR-NEXT執(zhí)行循環(huán)過程中,退出循環(huán)?
答:您可以在FOR/NEXT 指令處于循環(huán)過程中時(shí),在循環(huán)體中修改FINAL (終止循環(huán)次數(shù))數(shù)值。
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。