Mikrocontroller für Einsteiger
Von Michael Hoffmann (www.edmh.de)

Das Buch bietet einen gründlichen Einstig in den Umgang mit PIC-Controllern. Im Mittelpunkt steht der Flash-Controller PIC16F876A und die Programmierung in Assembler. Nach einer ausführlichen Erläuterung der Hardwarestruktur und der Assemblerbefehle geht es tief in die Praxis. Alle wichtigen Themen werden mit ausgearbeiteten Beispielprojekten erläutert.
Manch einer hat es vielleicht so wie ich versäumt den Kontakt zu PIC-Controllern zu suchen und stattdessen mit 8051 oder AVR gearbeitet. Bei manchem Projekt in Fachzeitschriften oder im Internet habe ich schon gedacht, schade, dass ich kein PIC-Programmierer bin. Von den Hardware-Eigenschaften her ist der PIC16F876A anscheinend etwa mit dem ATmega8 vergleichbar. Und eins ist jedenfalls klar: Mit diesem Buch ist der Einstieg zu schaffen!
B.K.
Mehr Informationen im Online-Shop
Ganzen Artikel lesen...
Ausschnitt aus dem Kapitel: Die Assemblerbefehle des PIC16F876A
rrf
Bedeutung: Rotate Right f through Carry
Syntax: rrf f, d
Beeinflusste Statusflags: C
Um einen Wert durch 2 zu dividieren verwendet man den Befehl rrf. Hierbei werden die Bits um eine Stelle nach rechts rotiert bzw. geschoben. Will man eine Division durch 2 ausführen, muss man darauf achten, dass das Carry-Bit vor der Division entsprechend gesetzt ist, da dieses sonst an die Stelle des höchstwertigen Bits (MSB) geschoben wird. Das niederwertigste Bit (LSB) wird in das Statusregister an die Stelle des Carry-Flags geschoben.

Abb 2.2: Bitrotation nach rechts
Beispiel:
movlw 0x73 ;lade den Wert 0x73 in das W-Register
movwf 0x20 ;verschiebe den Wert in das F-Register 0x20
rrf 0x20, 0 ;verschiebe alle Bits um eine Stelle nach rechts
War das Carry-Flag vor der Ausführung gesetzt, erhält man den Wert 0xB9 im W-Register und bei nicht gesetztem Bit steht der Wert 0x39 im W-Register.
Der Rotationsbefehl rrf kann sehr gut für eine serielle Datenausgabe verwendet werden. Dazu wird ein 8 Bit breiter Wert in ein Register geladen, das niederwertigste Bit auf einem Port ausgegeben, anschließend der Inhalt um eine Stelle nach rechts rotiert und das niederwertigste Bit erneut ausgegeben. Diese Befehle führt man sooft aus, bis alle Bits ausgegeben wurden.
Ausschnitt aus dem Kapitel: Die Programmierung mit MPLAB
Logicanalyser
Da es sehr schwer ist, Signale anhand von Registeränderungen in Abhängigkeit von der Zeit zu beurteilen, kann man den Logicanalyser aktivieren. Diesen findet man im Menü View unter dem Punkt Simulator Logic Analyser. Bevor die Signale sichtbar werden, muss man sie über den Button Channels auswählen. Mit den Buttons Add => und Remove <= übernimmt oder entfernt man die gewünschten Signale. (Abb. 3.28)

Abb. 3.28: Auswahl der Kanäle des Logicanalysers
Nachdem die gewünschten Signale ausgewählt wurden, können die Signale mit dem Logicanalyser aufgenommen und dargestellt werden. Um die Änderungen der Signale genau zu verfolgen, empfiehlt sich die Abarbeitung des Programms im Einzelschrittbetrieb. Lässt man das Programm frei laufen, wird die Anzahl der aufgezeichneten Zyklen sehr schnell sehr groß und man kann einen kurzen Impuls in der Darstellung nur schwer oder gar nicht erkennen. Man kann allerdings sehr gut das Programm bis zu einem Breakpoint laufen lassen und anschließend die dargestellten Werte näher untersuchen. Zum Vergrößern oder Verkleinern eines Bereiches kann man die Buttons mit der Lupe verwenden. (Abb. 3.29)

Abb. 3.29: Logicanalyser

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen