Schritt 7: Hello World (Hardware)
Hallo Welt in Hardware oder für Mikrocontroller ist sowieso eine LED blinkt, müssen Sie zu diesem Abschnitt vollständiger. Legen Sie eine LED an Pin 2 wie gezeigt die langer Stift geht an PIN1 und kurze Stift auf die LED geht zu Boden.
Die Funktion hier ist etwas komplexer, so dass ich mit Hilfe von Zeilennummern, die im Bild gezeigte erklären werde. Dies ist eine Datei im Editor erstellt oder PSPad (ebenfalls kostenlos) empfohlen
Zeile 1: Dies ist ein Kommentar alles andere folgenden / / wird ignoriert
2 bis 4 Zeilen: Dies sind die tatsächlichen Adressen für die bestimmte Mikrocontroller-Register, die in dem Datenblatt für den PIC32 beschrieben werden (MX1-Familie). Das 0 X gibt an, dass eine hex-Zahl angegeben wird. Die tatsächlichen Adressen genutzt werden, aber es sieht besser aus und ist leichter zu merken, wenn sie einen Namen gegeben werden. Es gibt zwei ports auf dieses Gerät PORTA und PORTB und wie aus dem Schaltplan ersichtlich Pin 2, wo die LED angeschlossen ist wird RA0 genannt. Dies bedeutet das erste Bit der PORTA, die normalerweise als Bit 0 bezeichnet wird. Mehr über dies und das Register später.
Zeile 5: Die LED ist Bit 0 verbunden und wir beziehen sich auf dieses Bit an mehreren Stellen in der Funktion, so dass wir die konstante auf 1 gesetzt haben möchten (verwirrend Bit 0 ist geräumt und in der Regel manipuliert mit dem Wert 1 gesetzt). Warum nicht nur konstante LED-1 haben, könnten wir gut und das wäre okay aber angenommen, wir müssen auf Bit 15 beziehen, würde dies konstant sein LED 0 x 8000. Wenn Sie es darauf hin, dass arbeiten wird Hex für die 15. Bit (beginnend bei 0) hoch oder könnten wir tun, diese LED 1 << 15 und erhalten genau das gleiche Ergebnis. Die "<<" ist die linke Shift-Betreiber und alle es tut ist Verschiebung der '1' 15 Plätze der linken-bequem.
Zeile 7: Alle Programme sind Funktionen wie C aus, aber im Gegensatz zu C können Sie diese jederzeit einfach durch Eingabe von Ain seinen Namen rufen. Eine Funktion muss am Ende (). Erweiterte Funktionen können Werte zwischen den Klammern haben, aber das ist außerhalb des gültigen Bereichs für diesen Artikel.
Zeile 8: Der TRIS registrieren steuert, ob die Pin wird ein Ausgang oder ein Eingang und TRISA Register dies für PORTA tut. Wenn Bit 0 von TRISA auf 1 gesetzt ist werden RA0 ein Beitrag sein, wenn es auf 0 festgelegt ist, dann wird es einen Ausgang. Die CLR am Ende des Wortes wird klar (auf 0 gesetzt), die angegebene Pin und Satz am Ende des Wortes wird set (1) die angegebene Pin. So setzt diese Linie RA0 eine ausgegeben werden.
Linie 8 Ergänzung: Das @ vor den Konstantennamen bedeutet den Inhalt. Setzen einfach TRISACLR auf LED würde TRISACLR Form seinen aktuellen Wert des 0xBF886014 auf 1 ändern. Durch die Verwendung der @ setzen wir eine 1 in der Adresse 0xBF886014, wir können auch poke(TRISACLR,LED), die genau dasselbe tun würde.
Linie 9: Der IC hat unter anderen Dingen ADC (analog zu digital) Hardware und alle Pins sind standardmäßig den ADC verwenden. Die ANSEL Registerregelungen, das angegebene Bit auf 0 setzen damit wird die Pin auf dem Port digital und 1 machen es analog. So wird diese Zeile in einen digitalen Stift RA0 stellen.
Linie 10: Hier könnten wir einfach Doe eine While-Schleife, die auf ewig ging (wobei 1 = 1 es tun würde) und auf das LED blinken zurücksetzen wir einfach den Controller. Aber ein bisschen mehr elegant sein Comkey verwenden? (2). der Controller besitzt zwei serielle Anschlüsse, UART1 und UART2. Die serielle Schnittstelle (verbunden mit Pins 21 & 22) wird an angeschlossen UART2 also die eingebaute Funktion Comkey? (2) kehren die Anzahl der Schlüssel in den UART2 wichtige Puffer also diese Schleife wird bis Betätigen einer Taste auf der Tastatur die natürlich einen Schlüssel in den Puffer und so Comkey legen wird? (0) = 0 wird nicht mehr wahr sein.
Linie 11: Das LAT-Register ist die tatsächliche Pins am Port Einstellung alle Bits des Registers hoch oder niedrig auf dem Port niederschlagen wird. Gibt es auch ein PORT-Register, das in diesem Fall das gleiche tun würde, aber dies wird gepuffert und so ist es besser, LAT (wahrscheinlich) für Ausgang und PORT für die Eingabe verwenden. So wie es ist SET und CLR dann INV zu "die angegebene Pin wechseln wird", so dass es gleichsam eine 1, dann würde sich ändern auf 0 und umgekehrt. Dies ist genau das Verhalten benötigt, um die LED blinken
Linie 12: Der Wait-Befehl wird in Millisekunden angegeben und so blinkt diese LED in 1-Sekunden-Intervallen.