Stap 7: Hello World (hardware)
De hello world in hardware of voor microcontrollers is toch te knipperen van een LED, dus je een moet te voltooien van deze sectie. Sluit een LED aan op pin 2 zoals de langere pin gaat naar pin 1 en de kortere pin op de LED gaat op grond.
De functie hier is iets ingewikkelder, dus ik met behulp van de regelnummers in de afbeelding wordt weergegeven uitleggen zal. Dit is een bestand in Kladblok hebt gemaakt of aanbevolen PSPad (ook gratis)
Lijn 1: Dit is een commentaar om het even wat volgende / / wordt genegeerd
2 tot en met 4 lijnen: Dit zijn de werkelijke adressen voor de bijzondere microcontroller-registers die worden beschreven in de data sheet voor de PIC32 (MX1 familie). De 0 x geeft aan dat er een hex nummer is opgegeven. De werkelijke adressen kunnen worden gebruikt, maar het ziet er beter uit en is makkelijker te onthouden als ze een naam worden gegeven. Er zijn twee poorten op dit specifieke apparaat PORTA en PORTB en zoals kan worden gezien van het bedradingsschema pin 2 waar de LED is aangesloten heet RA0. Dit betekent dat de eerste bit van PORTA die gewoonlijk wordt aangeduid als bit 0. Meer informatie over dit en later de registers.
Lijn 5: De LED is verbonden met bit 0 en we willen om te verwijzen naar dit stukje op verschillende plaatsen in de functie, dus we de constante ingesteld op 1 hebben (verwarrend bit 0 is ingesteld uitgeschakeld en in het algemeen gemanipuleerd met behulp van een waarde van 1). Waarom niet heb constante LED 1, goed we konden en dat zou goed zijn, maar stel dat we verwijzen naar bit 15 moeten, zou dit constante LED 0x8000. Als u het sporten hex voor de 15e bits (vanaf 0) wordt hoog of kunnen we dit LED 1 << 15 en krijg precies hetzelfde resultaat. De ' << ' is de linker shift-operator en alles wat het doet is shift de '1' 15 plaatsen aan de linker - handig.
Lijn 7: Alle programma's zijn gemaakt van functies, net als C maar in tegenstelling tot C je kunt bellen als u deze op elk gewenst moment gewoon door te typen ain zijn naam. Een functie moet hebben () aan het eind. Meer geavanceerde functies kunnen waarden tussen de haakjes hebben maar dat is buiten bereik voor dit artikel.
Lijn 8: De TRIS registreren besturingselementen of de pin een output of een input zal zijn, en het TRISA-register dit voor PORTA doet. Als bit 0 van TRISA is ingesteld op 1 zullen RA0 een inbreng als het is ingesteld op 0, dan zal een vermogen. De CLR op het einde van het woord zal duidelijk (ingesteld op 0) van de opgegeven pin en ingesteld op het einde van het woord zal (ingesteld op 1) de opgegeven pin. Deze regel is dus RA0 als een uitgang instellen.
Lijn 8 aanvulling: De @ voor de naam van de constante betekent de inhoud. Gewoon TRISACLR instellen op LED zou veranderen TRISACLR formulier de huidige waarde van 0xBF886014 tot en met 1. Met behulp van de @ wij stellen een 1 in het adres 0xBF886014, kunnen we ook gebruiken poke(TRISACLR,LED) die precies het zelfde ding zou doen.
Lijn 9: De IC heeft onder andere dingen ADC (analoog naar digitaal) hardware en standaard alle pinnen zijn ingesteld op het gebruik van de ADC. De ANSEL register controles, de opgegeven bits instelt op 0 zal hierdoor de pin op de poort digitale en 1 maakt het analoge. Zo zal deze regel RA0 maken in een digital pin.
Lijn 10: Hier konden we gewoon doe een while lus dat ging forever (terwijl 1 = 1 zou doen) en om te stoppen met de LED knippert reset we gewoon de controller. Nochtans worden een tikkeltje eleganter we comkey gebruiken? (2). de controller heeft twee seriële poorten, UART1 en UART2. De seriële interface (verbonden met pinnen 21 & 22) is verbonden met UART2 zo gebouwd in functie comkey? (2) geeft het aantal sleutels in de belangrijkste buffer van UART2 zodat dit wordt herhaald totdat u op een toets op het toetsenbord die natuurlijk een sleutel in de buffer en zo comkey? (0) = 0 zal niet gelden meer.
Lijn 11: Het register van de LAT is de werkelijke pinnen op de poort dus bits van dit register hoge of lage instelling zal worden nagedacht over de poort. Er is ook een register van de poort die in dit geval zou het zelfde ding doen maar dit is gebufferd en dus het is beter om te gebruiken LAT voor uitvoer en poort voor input (waarschijnlijk). Als er gewoon is SET en CLR dan INV 'schakelen' de opgegeven pin, dus het zou een 1 dan zou veranderen naar 0 en vice versa. Dit is precies het gedrag moest de LED flash
Lijn 12: Het wachten commando wordt uitgedrukt in milliseconden en zo dit knippert de LED 1 tweede intervallen.