Atmel start 5: Livlina (10 / 13 steg)
Steg 10: Innebörden av livlina två uttalanden
Uttalanden av programmering har följande betydelse [7-13]. Utökad diskussioner finns i Blinky två, start 4. Observera att två uttalanden av PORTB | = 0x01 har använts jämfört med enda uttalande PORTB & = ~ 0x00 från livlina 1 för pin #12 uppehålla mig lika tider på Vcc och 0v (dvs 50% intermittens att producera en fyrkantsvåg) med frekvensen 1,0 MHz. PORTB extra uttalande | = 0x01 påverkar ingenting men tillägger dröjsmål.
#include < avr/io.h >: IO.h innehåller andra header-filer (dvs., ha .h sträckningarna) för den specifika MCU [14] dessa andra .h filer definiera sökord som DDRB, PORTB, PB0, TIMSK och TCNT0. Kan inte Visa med "go till genomförande".
DDRB = 0b00000001: uppsättningar PortB att alla ingångar 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: genväg notation för PORTB = PORTB | 0b00000001 där symbolen | avser det bitvisa OR diskuteras i Startups 3, 4. Uttrycket anger B0 utdata biten till 1 som MCU kretsar omvandlar till Vcc på pin #12 (för dopp i ATTiny2313A). Lysdioden tänds. Den uttalande enda påverkar lite B0 och så utgång staten och pull-up motstånd för de andra bitarna i B registret förbli oförändrad.
PORTB & = ~ 0x01: genväg notation för PORTB = PORTB & ~ 0x01 där symbolen & är bitvis AND-operatorn och symbolen ~ är bitvis negation. För diskussion, se start 4. Eftersom ~ 0x01 = 0b11111110, lite B0 tvingas vara noll och MCU kretsarna lägger ATTiny 2313A (DIP paket) pin #12 till 0volts, som släcker lampan. 1s i de andra bitarna i 0b11111110 och användning av och betyder att andra bitar i PortB B1-B7 ändrar inte så produktionen stift inte ändrar staten heller göra pull-up motstånd.