Stap 4: Spin Basics, voortgezet
waitcnt (clkfreq + cnt)
Voordat we naar deze instructie breken, laat me eerst uitleggen clkfreq en cnt;
clkfreq
De Prop kunt uitvoeren op meerdere klokfrequenties, vanaf 20kHz helemaal tot 80MHz. clkfreq is een systeemvariabele gelijk aan hoeveel klok cycli (teken) zijn in 1 seconde. Als de Prop wordt uitgevoerd bij 80MHz, zal clkfreq = 80,000,000. Als de Prop wordt uitgevoerd op 20kHz, zal het 20.000 =.
CNT
CNT is de systeemklok. Tijdens het opstarten, cnt = 0 en het wordt verhoogd op elke tick helemaal naar 2³² vóór het walsen op 0. CNT is een alleen-lezen-waarde, kunt u de systeemklok niet wijzigen, lees net wat het is.
Nu, waitcnt: het uitvoering van het programma wordt onderbroken, totdat de systeemklok de waarde in het haakje bereikt. Wat is de waarde tussen haakjes? Het huidige systeem klok (cnt) PLUS het aantal teken in één seconde. waitcnt (clkfreq + cnt) vertelt de prop te houden voor 1 seconde voordat u naar de volgende instructie.
Wat als we wilden wachten voor de helft van een tweede? waitcnt (clkfreq/2 + cnt). Hoe ongeveer 5 seconden? waitcnt (clkfreq * 5 + cnt)
Dus, in ons programma, wij heb gespiegeld pin 0 naar een output, aangesloten op V + (waardoor ze hoge) om te schakelen op de LED en wordt gewacht gedurende één seconde. Hier is de volgende instructie;
outa [0]: = 0
Deze instructie wordt gespiegeld pin 0 uit worden aangesloten op V + wordt verbinden met grond. Hij de LED uitgeschakeld. Merk op dat de pin 0 nog steeds een vermogen is, maar deze aangesloten op de grond.
waitcnt (clkfreq + cnt)
Net als vorige keer pauzeert het programmauitvoering totdat de systeemklok is gelijk aan de waarde tussen haakjes. In dit geval zal het exection gedurende één seconde pauzeren.
Omhoog te verpakken
De laatste instructie in onze repeat-lus is voltooid. Omdat onze repeat-lus geen einde aandoening heeft, het opnieuw zal beginnen op de eerste regel (outa [0]: = 1) en voor onbepaalde tijd blijven draaien.