Pfad: Home => AVR-Übersicht => Software => Makro-Beispiel 1

Assembler-Quellcode des Makro-Befehls

; *****************************************************
; * Demonstriert den Gebrauch von Makros beim ATMEL *
; * Assembler, nur ein Testprogramm für das *
; * ATMEL STK200 Board, (C) 2000 Gerhard Schmidt *
; * Fehlerberichte an info!at!avr-asm-tutorial.net *
; *****************************************************
;
.NOLIST
.INCLUDE "8515def.inc"
.LIST
;
; Benutzte Register
;
.DEF mpr=R16 ; Vielzweckregister
;
; Der folgende Code ist ein Makro, das in den Code
; eingefügt werden kann, wann immer er benötigt wird.
; Immer wenn die gleiche Sequenz benötigt wird, wird
; dieses Makro aufgerufen. Wenn der Code nicht als Unter-
; programm aufgerufen werden kann, dann ist ein Makro
; fällig.
;
.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 INCs)
   TestMacro ; Noch mal das Makro (noch mal drei INC)
   COM   mpr ; Invertieren des Ergebnisses zur Anzeige
   OUT   PORTB,mpr ; und an die LEDs ausgeben
loop:   RJMP   loop ; und ab in eine Schleife.
;
; Assemblieren sollte zu 11 Worten Binär-Code führen, weil
; das TestMacro zu je drei Worten Code aufgeblasen wird, also sechs mal
; der INC-Befehl in den Code geschrieben wird.
;
; Nach der Ausführung sind die LEDs PB.1 and PB.2 angeschaltet,
; alle anderen ausgeschaltet. Das Ergebnis ist Dezimal 6 oder
; 0000.0110 binär!
;


©2002 by http://www.avr-asm-tutorial.net