; ***************************************************** ; * Demonstriert die Verwendung von Makros mit ATMEL * ; * AVR Assembler, nur ein Testprogramm fuer das * ; * ATMEL STK200 Board, (C) 2000 Gerhard Schmidt * ; * Fehlerberichte an http://www.avr-asm-tutorial.net * ; ***************************************************** ; .NOLIST .INCLUDE "8515def.inc" .LIST ; ; Benutzte Register ; .DEF mpr=R16 ; Vielzweckregister ; ; Das folgende Codestueck ist ein Makro. Es kann in ; das Programm aufgenommen werden, so oft man es ; benoetigt. Immer wenn die gleiche Sequenz benoetigt ; wird, laesst sich ein Makro dafuer einsetzen. Anders als ; bei einem Unterprogramm wird der gleiche Code mehrfach ; eingefuegt, 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 ; Fuege das Makro ein (drei mal INC) testmacro ; Noch einmal (noch drei INC) com mpr ; Invertiere das Ergebnisdisplay it out PORTB,mpr ; und zeige es auf den LEDs an loop: RJMP loop ; und ab in die Endlosschleife ; ; Nach dem Assemblieren sollte ein 11 Worte langes ; Binaerprogramm resultieren, da die zwei Makros sechs ; INC-Befehle in den Code einfuegen. ; ; Nach der Ausfuehrung sollten die LEDs PB.1 and PB.2 an, ; alle anderen aus sein (Ergebnis = 6 ist Binaer 0000.0110)! ;