FOR

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

En for-løkke bruges normalt til at gentage noget kode et bestemt antal gange. Syntaksen er som følger:

FOR expr [USING var] LOOP
  statement block
  [exit loop]
END LOOP

Den blok kode der står i FOR-løkken bliver afviklet expr gange.

Hvis man anvender USING var så vil tælleren ligge i var, og under afviklingen vil den starte med værdien 0 i første gennemløb, 1 i næste, og fortsætte opad indtil det sidste gennemløb, hvor den er expr - 1. Efter løkken er afsluttet, så vil var være lig med expr.

Hvis var ikke kan indeholde expr, så laves en warning ved oversættelsen.

Hvis man undervejs i gennemløbet af løkke laver en exit loop, så afbrydes løkken lige på det sted, og afviklingen fortsætter efter END LOOP

Eksempler på for-løkke

Et simpelt kode-eksempel kan være noget der får en bit til at løbe hen ad en port:

var byte tal = 1
FOR 8 LOOP
  PortC = tal
  tal = tal * 2
  delay_100ms(3)
END LOOP

Et lidt mere avanceret eksempel kan være at den fortsat lægger en bit ud på porten, men at den også lægger den binære værdi ud på en anden port.

Samtidigt tjekkes om bitten der lægges ud rent faktisk også er der i porten.

var byte tal = 1
var byte bin
FOR 8 USING bin LOOP
  PortC = tal
  IF PortC == 0 THEN
    EXIT LOOP
  END IF
  PortA = bin
  tal = tal * 2
  delay_100ms(3)
END LOOP

Det specielle ved dette eksempel er at det kan opføre sig forskelligt alt efter hvilken PIC det lægges i.

Anvender man en PIC16F690, der har 8 bit i PortC, så vil koden løbe hele loopet igennem, og vil have det binære tal for 7 på PortA.

Hvis man derimod anvender en PIC16F684, der kun har 6 bit i PortC, så vil den i det 7. gennemløb prøve at lægge en bit ud på Pin_C6, men da den ikke eksisterer vil den læse 0 på PortC og afbryde loopen der, så det er bin-værdien fra 6. gennemløb (altså 5) der står på PortA.