; ***************************************************** ; * Demonstriert die Verwendung von Makros mit ATMEL * ; * AVR Assembler, nur ein Testprogramm für das * ; * ATMEL STK200 Board, (C) 2000 Gerhard Schmidt * ; * Fehlerberichte an info@avr-asm-tutorial.net * ; ***************************************************** ; .NOLIST .INCLUDE "C:\avrtools\appnotes\8515def.inc" .LIST ; ; Benutzte Register ; .DEF mpr=R16 ; Vielzweckregister ; ; Das folgende Codestück ist ein Makro. Es kann in ; das Programm aufgenommen werden, so oft man es ; benötigt. Immer wenn die gleiche Sequenz benötigt ; wird, läßt sich ein Makro dafür einsetzen. Anders als ; bei einem Unterprogramm wird der gleiche Code mehrfach ; eingefügt, immer wenn das Makro aufgerufen wird. ; .MACRO TestMacro inc mpr inc mpr inc mpr .ENDMACRO ; ; ; Beginn des Hauptprogrammes ; ldi mpr,0xFF ; PortB (LEDs) ist Ausgang out DDRB,mpr ; an Datenrichtungsregister clr mpr ; Setze Register Null testmacro ; Füge das Makro ein (drei mal INC)(three INCs) testmacro ; Noch einmal (noch drei INC)here (another 3) com mpr ; Invertiere das Ergebnisdisplay it out PORTB,mpr ; und zeige es auf den LEDs anLEDs loop: RJMP loop ; und ab in die Endlosschleife ; ; Nach dem Assemblieren sollte ein 11 Worte langes ; Binärprogramm resultieren, da die zwei Makros sechs ; INC-Befehle in den Code einfügen. ; ; Nach der Ausführung sollten die LEDs PB.1 and PB.2 an, ; alle anderen aus sein (Ergebnis = 6 ist Binär 0000.0110)! ;