Programmera mikrokontroller Propeller (4 / 7 steg)
Steg 4: Snurra grunderna, fortsatte
waitcnt (clkfreq + cnt)
Innan vi bryter ner denna anvisning, låt mig först förklara clkfreq och cnt;
clkfreq
Stöttan kan köras på flera klockfrekvenser, från 20kHz ända till 80 MHz. clkfreq är en lika systemvariabel till hur många klockan cykler (fästingar) är 1 sekund. Om stöttan körs på 80MHz, = clkfreq 80.000.000. Om stöttan körs vid 20kHz, kommer det = 20.000.
CNT
CNT är systemklockan. På stöveln, cnt = 0 och det ökas på varje fästing ända till 2³² innan rullande över till 0. CNT är ett skrivskyddat värde, du kan inte ändra datorns klocka, bara läsa vad det är.
Nu, waitcnt: det pausar programkörningen tills systemklocka når värdet i parentesen. Vad är värdet inom parentes? Det nuvarande systemet klocka (cnt) och där antalet fästingar på en sekund. waitcnt (clkfreq + cnt) berättar stöttan att hålla upp för 1 sekund innan du går till nästa instruktion.
Vad händer om vi ville vänta på en halv en andra? waitcnt (clkfreq/2 + cnt). Vad sägs om 5 sekunder? waitcnt (clkfreq * 5 + cnt)
Så, i vårt program, vi har vänt 0 stift till en utgång, anslutit den till V + (köra hög) för att vända på LED och väntade på en sekund. Här är nästa instruktion;
Outa [0]: = 0
Denna anvisning vänder pin 0 från att vara ansluten till V + att ansluta till marken. Det släcks lampan. Observera att pin 0 är fortfarande en utgång, men den är ansluten till marken.
waitcnt (clkfreq + cnt)
Precis som förra gången pausar det programkörningen tills systemklocka är lika med värdet i parentesen. I detta fall pausas det exection för en sekund.
Linda den
Den slutliga undervisningen i våra upprepa slingan har slutförts. Eftersom våra upprepa slingan har ingen slutet villkor, det kommer att starta igen på första raden (outa [0]: = 1) och hålla igång på obestämd tid.