Atmel start 5: Livlina (8 / 13 steg)
Steg 8: Innebörden av livlina en uttalanden
Figur 9: Bilder av ett oscilloskop display. Vänster: En förskjutning vågformen från Pin 12 när du använder bara en PORTB = 0x01 uttalande i programmet livlina. Höger: En symmetrisk vågform med hjälp av de tre PORTB = 0x01 uttalanden. De horisontella skalorna skiljer sig mellan vänster och höger sida med en faktor fem; dock spenderar Pin 12 lika lång tid i noll tillstånd för både vänster och höger sida.
Uttalanden av programmering har följande betydelse [7-13]. Utökad diskussioner finns i Blinky ett och två (start 3, 4). Notera att tre uttalanden av PORTB = 0x01 har använts jämfört med det enda uttalandet av PORTB = 0x00 för pin #12 på ATTiny2313A (DIP paket) att spendera tid på Vcc lika mycket som det gör på 0volts (dvs 50% intermittens att producera en fyrkantsvåg) – se figur 9 för ett exempel. Figuren visar frekvensen är ca 1.5 MHz. Extra uttalanden av PORTB = 0x01 inte påverkar något men lägga till fördröjning.
#include < avr/io.h >: innehåller io.h header-fil som innehåller andra .h filer för specifika MCU [14]. Dessa andra .h filer definiera sökord som DDRB, PORTB, PB0, TIMSK och TCNT0. Tittade inte på med "go till genomförande".
DDRB = 0b00000001: uppsättningar PortB pins till alla funktion som insatsvaror utom B0 som en utgång för MCU.
While(1): kontinuerligt utför innehållet inom följande klammerparenteser {} eftersom 1, som är ett annat namn för 'true', är alltid sant.
PORTB = 0x01: anger B0 utdata biten till 1 som MCU kretsar omvandlar till Vcc på pin #12 (för dopp i ATTiny2313A). Lysdioden tänds. Tänk på att detta kommando anger också B1-B7 till noll som kan påverka pull-up motstånd eller fysiska stift beroende på bitar i DDRB – i det här fallet det inaktiverar pull-up motstånd eftersom noll är skriven till indata.
PORTB = 0x00: anger alla bitar i B till noll. Lysdioden släcks. Tänk på att detta kommando också anger B1-B7 till noll som kan påverka pull-up motstånd eller fysiska stift beroende på bitar i DDRB.