;**************************************************************************************** ;Makro Definitionen ;**************************************************************************************** ;**************************************************************************************** ;Name: ifeqi ;Aufgabe: wenn @0 = @1 (Konstante) dann führe Code aus sonst springe darüber hinweg ;Eingaben: @0: Variable für Test (Register 0-31) ; @1: Testbedingung als Konstante ; @2: Sprungadresse wenn Bedinung nicht erfüllt ;Ausgaben: ;**************************************************************************************** .macro ifeqi cpi @0,@1 breq ifeqi1 rjmp @2 ifeqi1: .endmacro ;**************************************************************************************** ;Name: ifsh ;Aufgabe: wenn @0 >= @1 dann führe Code aus sonst springe darüber hinweg ; unsigned operation ;Eingaben: @0: Variable für Test (Register 0-31) ; @1: Testbedingung (Register 0-31) ; @2: Sprungadresse wenn Bedinung nicht erfüllt ;Ausgaben: ;**************************************************************************************** .macro ifsh cp @0,@1 brsh ifsh1 rjmp @2 ifsh1: .endmacro ;**************************************************************************************** ;Name: iflo ;Aufgabe: wenn @0 < @1 dann führe Code aus sonst springe darüber hinweg ;Eingaben: @0: Variable für Test (Register 0-31) ; @1: Testbedingung (Register 0-31) ; @2: Sprungadresse wenn Bedinung nicht erfüllt ;Ausgaben: ;**************************************************************************************** .macro iflo cp @0,@1 brlo iflo1 rjmp @2 iflo1: .endmacro ;**************************************************************************************** ;Name: ifloi ;Aufgabe: wenn @0 < @1 (Konstante) dann führe Code aus sonst springe darüber hinweg ;Eingaben: @0: Variable für Test (Register 0-31) ; @1: Testbedingung als Konstante ; @2: Sprungadresse wenn Bedinung nicht erfüllt ;Ausgaben: ;**************************************************************************************** .macro ifloi cpi @0,@1 brlo ifloi1 rjmp @2 ifloi1: .endmacro ;**************************************************************************************** ;Name: ld_Var ;Aufgabe: lädt die angegebene Variable aus dem SRAM in das angegebene Register ; verändert keine Addressregister ;Eingaben: @0: Register ; @1: Variable ;Ausgaben: geladene Variable im Register ;**************************************************************************************** .macro ld_Var push XH push XL ldi XH,high(@1) ldi XL,low(@1) ld @0,X pop XL pop XH .endmacro ;**************************************************************************************** ;Name: st_Var ;Aufgabe: speichert die angegebene Variable in das SRAM aus dem angegebenen Register ; verändert keine Addressregister ;Eingaben: @0: Register ; @1: Variable ;Ausgaben: ;**************************************************************************************** .macro st_Var push XH push XL ldi XH,high(@1) ldi XL,low(@1) st X,@0 pop XL pop XH .endmacro ;**************************************************************************************** ;Name: ldZVar ;Aufgabe: lädt die angegebene Variable aus dem SRAM in das angegebene Register ; verändert das Z-Addressregister; ist dafür schneller als unveränderte Register ;Eingaben: @0: Register ; @1: Variable ;Ausgaben: geladene Variable im Register ;**************************************************************************************** .macro ldZVar ldi ZH,high(@1) ldi ZL,low(@1) ld @0,Z .endmacro ;**************************************************************************************** ;Name: stZVar ;Aufgabe: speichert die angegebene Variable in das SRAM aus dem angegebenen Register ; verändert das Z-Addressregister; ist dafür schneller als unveränderte Register ;Eingaben: @0: Register ; @1: Variable ;Ausgaben: ;**************************************************************************************** .macro stZVar ldi ZH,high(@1) ldi ZL,low(@1) st Z,@0 .endmacro