aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_mic51/MAKRO1.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t_mic51/MAKRO1.ASM')
-rw-r--r--tests/t_mic51/MAKRO1.ASM542
1 files changed, 542 insertions, 0 deletions
diff --git a/tests/t_mic51/MAKRO1.ASM b/tests/t_mic51/MAKRO1.ASM
new file mode 100644
index 0000000..4d93adc
--- /dev/null
+++ b/tests/t_mic51/MAKRO1.ASM
@@ -0,0 +1,542 @@
+
+; Aufgabe Nr.: Speichermodul fuer uP- Praktikum II
+; Autor: Joerg Vollandt
+; erstellt am : 21.05.1994
+; letzte Aenderung am : 01.08.1994
+; Bemerkung : Makros
+;
+; Dateiname : makro1.asm
+;
+
+;---------------------------------------------------------------------
+; Funktion : Direkter Bitmove- Befehl
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register : PSW
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+MOVB MACRO ZIEL,QUELLE
+
+ MOV C,QUELLE
+ MOV ZIEL,C
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : String auf LCD ausgaben.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+LCD MACRO POS,STRG
+
+ PUSH ACC
+ PUSH DPH
+ PUSH DPL
+ MOV A,#POS
+ LCALL LCD_SET_DD_RAM_ADDRESS
+ MOV DPTR,#STR_ADR
+ LCALL LCD_WRITE_STRING
+ LJMP WEITER
+
+STR_ADR DB STRG,0
+
+WEITER: POP DPL
+ POP DPH
+ POP ACC
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : A, B, PSW, DPTR, R0 - R7 auf Stack retten
+; Aufrufparameter : PUSH_ALL
+; Ruechgabeparameter : -
+; Veraenderte Register : -
+; Stackbedarf : 2
+; Zeitbedarf :
+;
+
+PUSH_ALL MACRO
+
+ PUSH ACC
+ PUSH B
+ PUSH PSW
+ PUSH_DPTR
+ PUSH AR0
+ PUSH AR1
+ PUSH AR2
+ PUSH AR3
+ PUSH AR4
+ PUSH AR5
+ PUSH AR6
+ PUSH AR7
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : A, B, PSW, DPTR, R0 - R7 von Stack holen
+; Aufrufparameter : POP_ALL
+; Ruechgabeparameter : -
+; Veraenderte Register : -
+; Stackbedarf : 2
+; Zeitbedarf :
+;
+
+POP_ALL MACRO
+
+ POP AR7
+ POP AR6
+ POP AR5
+ POP AR4
+ POP AR3
+ POP AR2
+ POP AR1
+ POP AR0
+ POP_DPTR
+ POP PSW
+ POP B
+ POP ACC
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : DPTR pushen und popen.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+PUSH_DPTR MACRO
+
+ PUSH DPL
+ PUSH DPH
+
+ ENDM
+
+POP_DPTR MACRO
+
+ POP DPH
+ POP DPL
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : DPTR decreminieren.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+ ifdef joerg
+DEC_DPTR MACRO
+
+ INC DPL
+ DJNZ DPL,DEC_DPTR1
+ DEC DPH
+DEC_DPTR1:
+ DEC DPL
+
+ ENDM
+
+ endif
+
+;---------------------------------------------------------------------
+; Funktion : Addieren und subtraieren mit DPTR.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+ADD_DPTR MACRO WERT
+
+ PUSH PSW
+ PUSH ACC
+ MOV A,#(WERT#256)
+ ADD A,DPL
+ MOV DPL,A
+ MOV A,#(WERT/256)
+ ADDC A,DPH
+ MOV DPH,A
+ POP ACC
+ POP PSW
+
+ ENDM
+
+
+SUBB_DPTR MACRO WERT
+
+ PUSH PSW
+ PUSH ACC
+ MOV A,DPL
+ CLR C
+ SUBB A,#(WERT#256)
+ MOV DPL,A
+ MOV A,DPH
+ SUBB A,#(WERT/256)
+ MOV DPH,A
+ POP ACC
+ POP PSW
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : Rechnen mit 16- Bit- Werten im ext. RAM (L,H).
+; Aufrufparameter : DPTR = Wert
+; Ruechgabeparameter : DPTR = Wert
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+SET_16 MACRO NAME
+
+ PUSH ACC
+ PUSH_DPTR
+ PUSH DPH
+ PUSH DPL
+ MOV DPTR,#NAME
+ POP ACC
+ MOVX @DPTR,A
+ INC DPTR
+ POP ACC
+ MOVX @DPTR,A
+ POP_DPTR
+ POP ACC
+
+ ENDM
+
+GET_16 MACRO NAME
+
+ PUSH ACC
+ MOV DPTR,#NAME
+ MOVX A,@DPTR
+ PUSH ACC
+ INC DPTR
+ MOVX A,@DPTR
+ MOV DPH,A
+ POP DPL
+ POP ACC
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : Scheduler.
+; Aufrufparameter : ACC = Zeichen
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+IFCALL MACRO CONST,ROUTINE
+
+ CJNE A,#CONST,IFCALL1
+ LCALL ROUTINE
+IFCALL1:
+
+ ENDM
+
+IFMAKE MACRO CONST,CODE
+
+ CJNE A,#CONST,IFMAKE1
+ CODE
+IFMAKE1:
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : Warten bis Netzwerk freiund Message senden.
+; Aufrufparameter : ACC = Zeichen
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+SEND_NET MACRO
+
+ push acc
+SEND_NET1: LCALL READ_STATUS
+ JB ACC.1,SEND_NET1
+ pop acc
+ LCALL SEND_MESSAGE
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : Message senden.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register : -
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+post_Message1 macro Modul,Msg
+
+; if MY_SLAVE_ADR = uC_Modul
+; call ADR_Msg ; interne Message
+; elseif
+ PUSH ACC
+WAIT_NET: LCALL READ_STATUS
+ JB ACC.1,WAIT_NET
+ PUSH DPL
+ PUSH DPH
+ MOV DPTR,#ModulNetAdr_Tab
+ MOV A,#Modul
+ MOVC A,@A+DPTR
+ POP DPH
+ POP DPL
+ MOV R0,#Modul
+ MOV R1,#Msg
+ LCALL SEND_MESSAGE ; Message ins Netz
+ POP ACC
+
+; endif
+ endm
+
+;---------------------------------------------------------------------
+; Funktion : Message senden, alle Parameter im Mkroaufruf, B automatisch.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register : R0- R7
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+post_Message2 macro Modul,Msg,PARA1,PARA2,PARA3,PARA4,PARA5,PARA6
+
+Parameteranzahl SET 2 ; min. Modulnr. und Msg.-Nr.
+
+ PUSH ACC
+ PUSH B
+
+ IF "PARA1"<>""
+ MOV R2,PARA1
+Parameteranzahl SET Parameteranzahl+1
+ ENDIF
+ IF "PARA2"<>""
+ MOV R3,PARA2
+Parameteranzahl SET Parameteranzahl+1
+ ENDIF
+ IF "PARA3"<>""
+ MOV R4,PARA3
+Parameteranzahl SET Parameteranzahl+1
+ ENDIF
+ IF "PARA4"<>""
+ MOV R5,PARA4
+Parameteranzahl SET Parameteranzahl+1
+ ENDIF
+ IF "PARA5"<>""
+ MOV R6,PARA5
+Parameteranzahl SET Parameteranzahl+1
+ ENDIF
+ IF "PARA6"<>""
+ MOV R7,PARA6
+Parameteranzahl SET Parameteranzahl+1
+ ENDIF
+
+ PUSH DPL
+ PUSH DPH
+ MOV DPTR,#ModulNetAdr_Tab
+ MOV A,Modul
+ MOVC A,@A+DPTR
+ POP DPH
+ POP DPL
+ MOV R0,Modul
+ MOV R1,Msg
+ MOV B,#Parameteranzahl
+ PUSH ACC
+WAIT_NET: LCALL READ_STATUS
+ JB ACC.1,WAIT_NET
+ POP ACC
+ LCALL SEND_MESSAGE ; Message ins Netz
+
+ POP B
+ POP ACC
+
+ endm
+
+;---------------------------------------------------------------------
+; Funktion : Message ausgeben
+; Aufrufparameter : wie definiert
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+TEST_MESSAGE_HEX MACRO POS
+
+ PUSH ACC
+ MOV A,#POS
+ LCALL LCD_SET_DD_RAM_ADDRESS
+ POP ACC
+ PUSH ACC
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,B
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R0
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R1
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R2
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R3
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R4
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R5
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R6
+ LCALL A_LCD
+ MOV A,#' '
+ LCALL LCD_WRITE_CHAR
+ MOV A,R7
+ LCALL A_LCD
+ POP ACC
+
+ ENDM
+
+;---------------------------------------------------------------------
+; Funktion : Fehlerbehandlung
+; Aufrufparameter : Fehlernr.
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+ERROR MACRO NR
+
+
+ ENDM
+
+;---------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+;---------------------------------------------------------------------
+TEST_MESSAGE MACRO POS,SCHALTER
+
+ IF SCHALTER<=TEST_LEVEL
+ PUSH ACC
+ MOV A,#POS
+ LCALL LCD_SET_DD_RAM_ADDRESS
+ MOV A,R0
+ LCALL LCD_WRITE_CHAR
+ MOV A,R1
+ LCALL LCD_WRITE_CHAR
+ MOV A,R2
+ LCALL LCD_WRITE_CHAR
+ MOV A,R3
+ LCALL LCD_WRITE_CHAR
+ MOV A,R4
+ LCALL LCD_WRITE_CHAR
+ MOV A,R5
+ LCALL LCD_WRITE_CHAR
+ MOV A,R6
+ LCALL LCD_WRITE_CHAR
+ MOV A,R7
+ LCALL LCD_WRITE_CHAR
+ POP ACC
+ ENDIF
+ ENDM
+;---------------------------------------------------------------------
+MAKE_MESSAGE MACRO ADR,STRG
+
+ IF 0=0
+ MOV A,#0
+ MOV DPTR,#STR_ADR
+ MOVC A,@A+DPTR
+ MOV R0,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R1,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R2,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R3,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R4,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R5,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R6,A
+ MOV A,#0
+ INC DPTR
+ MOVC A,@A+DPTR
+ MOV R7,A
+ MOV A,#ADR
+ MOV B,#8
+ LJMP WEITER
+
+STR_ADR DB STRG
+
+WEITER: NOP
+ ENDIF
+ ENDM
+
+;---------------------------------------------------------------------
+MAKE_MESSAGE_HEX MACRO ADR,L,A0,A1,A2,A3,A4,A5,A6,A7
+
+ IF 0=0
+ MOV R0,#A0
+ MOV R1,#A1
+ MOV R2,#A2
+ MOV R3,#A3
+ MOV R4,#A4
+ MOV R5,#A5
+ MOV R6,#A6
+ MOV R7,#A7
+ MOV A,#ADR
+ MOV B,#L
+ ENDIF
+ ENDM
+
+;---------------------------------------------------------------------
+