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