Komma igång med ATMega328P (16 / 17 steg)
Steg 16: Förklara koden
#include < avr/io.h > förklarar lämpliga Input/Output definitionerna. Till exempel, inklusive denna header-fil tillåter oss att använda "DDRD" att ange port D som en utgång.
#include < util/delay.h > förklarar grundfunktionerna busy-wait. Detta tillåter oss att använda funktionen _delay_ms() för att skapa en fördröjning i millisekunder. Argumentet för funktionen anges antalet millisekunder som vi vill vänta.
Du kanske märker ett semikolon (;) efter varje kodrad. Semikolonet talar programmet om att detta är slutet av kommandot. Du behöver detta anledningen är att när programmet läser det, det inte ser flera rader från när du trycker "Enter" eller "Space". Istället ser det hela som en kontinuerlig, massiva rad kod, så den behöver semikolon veta när börja tolka ett annat kommando.
"while(1)" är ett enkelt sätt att göra en ögla. Kommandot "medan" upprepar allt inuti "{}" omedelbart efter det uttalandet i "()" är sant. Eftersom det har angetts till "1", utan riktiga variabler eller matematik, kommer uttalande alltid vara sant.
Frasen "PORTD = 0b000000100;" översätter till "Aktivera Port D, nummer 2", som motsvarar till stift 4 av våra mikrokontroller som kan ses på bilden ovan.
Varje bit är en PIN-kod i en hamn. Som ni kan se Port D har 8 stift: D0-D7. Så säger "PORTD = 0b00000100" är verkligen detta "PORTD = 0bD7D6D5D4D3D2D1D0." Att placera en i en av hamnens stift driver pin hög, medan utsläppande en nolla driver pin låg.