$15.00 grundläggande dator? (7 / 8 steg)
Steg 7: Hej världen (hårdvara)
Hej världen i hårdvara eller för mikrokontroller är ändå att blinka en LED, så du behöver en till avsluta detta avsnitt. Fäst en LED stift 2 som visas längre stiftet går till stift 1 och kortare stiftet på LED går till marken.
Här är något mer komplex så jag kommer att förklara med hjälp av radnumren visas i bilden. Detta är en fil som skapats i notepad eller rekommenderas PSPad (också gratis)
Linje 1: Detta är en kommentar något följande / / ignoreras
Linjer 2 till 4: Detta är det faktiska adresser för viss microcontroller registren som beskrivs i databladet för PIC32 (MX1 familj). 0 x anger att ett hexadecimalt tal som anges. De faktiska adresserna kan användas men det ser bättre och är lättare att komma ihåg om de ges ett namn. Det finns två portar på enheten särskilt PORTA och PORTB och som kan ses från kopplingsschema stift 2 till där lampan kopplas kallas RA0. Detta innebär den första biten av PORTA som benämns normalt bit 0. Mer om detta och registren senare.
Linje 5: Lysdioden är ansluten till bit 0 och vi vill hänvisa till denna bit på flera ställen i funktionen så vi har den konstant inställd på 1 (förvirrande bit 0 ställs rensas och allmänt manipulerade med värdet 1). Varför inte bara ha konstant LED 1, väl vi kunde och det skulle vara okej men om vi måste hänvisa till stycke 15, detta skulle vara konstant LED 0x8000. Om du arbeta ut det som är hex för 15 bitars (börjar på 0) hög eller vi kunde göra detta LED 1 << 15 och få exakt samma resultat. Den "<<" är vänster SKIFT operatör och allt det gör är shift '1' 15 platser till vänster - bekväm.
Linje 7: Alla program är gjorda av funktioner, precis som C men till skillnad från C kan du ringa dessa när som helst genom att bara skriva ain sitt namn. En funktion måste ha () i slutet. Mer avancerade funktioner kan ha värden mellan hakparenteserna men det är utanför omfånget för denna artikel.
Linje 8: TRIS registrera kontroller om PIN-koden kommer att vara en utgång eller en ingång, och TRISA registret gör detta för PORTA. Om bit 0 av TRISA är satt till 1 blir RA0 en ingång, om det är inställt på 0 så blir det en utgång. CLR på slutet av ordet kommer att klara (satt till 0) angivna PIN-koden och sätta på slutet av ordet ställer (set 1) angivna PIN-koden. Så är denna linje att RA0 vara en utgång.
Linje 8 tillägg: Den @ framför konstant namn betyder innehållet. Helt enkelt ange TRISACLR till LED skulle ändra TRISACLR bildar dess aktuella värde av 0xBF886014 till 1. Med hjälp av den @ vi lägger en 1 i adressen 0xBF886014, kan vi också använda poke(TRISACLR,LED) som skulle göra exakt samma sak.
Linje 9: IC har bland andra saker ADC (analog till digital) hårdvara som standard alla stift är inställda på ADC. ANSEL register kontrollerna detta, att angivna-biten anges till 0 gör stiftet på porten digital och 1 kommer att göra det analoga. Så denna linje kommer att göra RA0 till en digital pin.
Linje 10: Här kunde vi helt enkelt doe ett tag loop som gick för evigt (medan 1 = 1 skulle göra det) och för att stoppa lysdiod blinkar vi helt enkelt återställa registeransvarige. Men för att vara en smula mer elegant använder vi comkey? (2). registeransvarige har två seriella portar, UART1 och UART2. Det seriella gränssnittet (ansluten till stift 21 & 22) är ansluten till UART2 så den inbyggda i funktionen comkey? (2) returnerar antalet nycklar i UART2 viktiga buffert så detta kommer loop tills du trycker på en tangent på tangentbordet vilket naturligtvis kommer att placera en nyckel i den bufferten och så comkey? (0) = 0 blir inte sant längre.
Linje 11: LAT registret är faktiska stiften på porten så ställa några bitar av detta register höga eller låga kommer att återspeglas på porten. Det finns också ett PORT-register som i detta fall skulle göra samma sak men detta är buffrade och så det är bättre att använda LAT för utdata och porten för indata (förmodligen). Precis som det är och CLR då INV att "växla" angivna PIN-koden, så vore det en 1 då det skulle ändra till 0 och vice versa. Detta är exakt det beteende som behövs för att flash LED
Linje 12: Kommandot vänta anges i millisekunder och så detta blinkar lampan i 1-sekundersintervall.