Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; Aufgabe Nr.: Speichermodul fuer uP- Praktikum II
  3. ; Autor: Joerg Vollandt
  4. ; erstellt am : 21.05.1994
  5. ; letzte Aenderung am : 01.08.1994
  6. ; Bemerkung : Makros
  7. ;
  8. ; Dateiname : makro1.asm
  9. ;
  10.  
  11. ;---------------------------------------------------------------------
  12. ; Funktion : Direkter Bitmove- Befehl
  13. ; Aufrufparameter : -
  14. ; Ruechgabeparameter : -
  15. ; Veraenderte Register : PSW
  16. ; Stackbedarf :
  17. ; Zeitbedarf :
  18. ;
  19.  
  20. MOVB    MACRO   ZIEL,QUELLE
  21.  
  22.         MOV C,QUELLE
  23.         MOV ZIEL,C
  24.  
  25.         ENDM
  26.  
  27. ;---------------------------------------------------------------------
  28. ; Funktion : String auf LCD ausgaben.
  29. ; Aufrufparameter : -
  30. ; Ruechgabeparameter : -
  31. ; Veraenderte Register :
  32. ; Stackbedarf :
  33. ; Zeitbedarf :
  34. ;
  35.  
  36. LCD     MACRO   POS,STRG
  37.  
  38.         PUSH ACC
  39.         PUSH DPH
  40.         PUSH DPL
  41.         MOV A,#POS
  42.         LCALL LCD_SET_DD_RAM_ADDRESS
  43.         MOV DPTR,#STR_ADR
  44.         LCALL LCD_WRITE_STRING
  45.         LJMP WEITER
  46.  
  47. STR_ADR   DB    STRG,0
  48.  
  49. WEITER: POP DPL
  50.         POP DPH
  51.         POP ACC
  52.  
  53.         ENDM
  54.  
  55. ;---------------------------------------------------------------------
  56. ; Funktion : A, B, PSW, DPTR, R0 - R7 auf Stack retten
  57. ; Aufrufparameter : PUSH_ALL
  58. ; Ruechgabeparameter : -
  59. ; Veraenderte Register : -
  60. ; Stackbedarf : 2
  61. ; Zeitbedarf :
  62. ;
  63.  
  64. PUSH_ALL        MACRO
  65.  
  66.         PUSH ACC
  67.         PUSH B
  68.         PUSH PSW
  69.         PUSH_DPTR
  70.         PUSH AR0
  71.         PUSH AR1
  72.         PUSH AR2
  73.         PUSH AR3
  74.         PUSH AR4
  75.         PUSH AR5
  76.         PUSH AR6
  77.         PUSH AR7
  78.  
  79.         ENDM
  80.  
  81. ;---------------------------------------------------------------------
  82. ; Funktion : A, B, PSW, DPTR, R0 - R7 von Stack holen
  83. ; Aufrufparameter : POP_ALL
  84. ; Ruechgabeparameter : -
  85. ; Veraenderte Register : -
  86. ; Stackbedarf : 2
  87. ; Zeitbedarf :
  88. ;
  89.  
  90. POP_ALL        MACRO
  91.  
  92.         POP AR7
  93.         POP AR6
  94.         POP AR5
  95.         POP AR4
  96.         POP AR3
  97.         POP AR2
  98.         POP AR1
  99.         POP AR0
  100.         POP_DPTR
  101.         POP PSW
  102.         POP B
  103.         POP ACC
  104.  
  105.         ENDM
  106.  
  107. ;---------------------------------------------------------------------
  108. ; Funktion : DPTR pushen und popen.
  109. ; Aufrufparameter : -
  110. ; Ruechgabeparameter : -
  111. ; Veraenderte Register :
  112. ; Stackbedarf :
  113. ; Zeitbedarf :
  114. ;
  115.  
  116. PUSH_DPTR       MACRO
  117.  
  118.         PUSH DPL
  119.         PUSH DPH
  120.  
  121.         ENDM
  122.  
  123. POP_DPTR        MACRO
  124.  
  125.         POP DPH
  126.         POP DPL
  127.  
  128.         ENDM
  129.  
  130. ;---------------------------------------------------------------------
  131. ; Funktion : DPTR decreminieren.
  132. ; Aufrufparameter : -
  133. ; Ruechgabeparameter : -
  134. ; Veraenderte Register :
  135. ; Stackbedarf :
  136. ; Zeitbedarf :
  137. ;
  138.         ifdef joerg
  139. DEC_DPTR       MACRO
  140.  
  141.         INC DPL
  142.         DJNZ DPL,DEC_DPTR1
  143.         DEC DPH
  144. DEC_DPTR1:
  145.         DEC DPL
  146.  
  147.         ENDM
  148.  
  149.         endif
  150.  
  151. ;---------------------------------------------------------------------
  152. ; Funktion : Addieren und subtraieren mit DPTR.
  153. ; Aufrufparameter : -
  154. ; Ruechgabeparameter : -
  155. ; Veraenderte Register :
  156. ; Stackbedarf :
  157. ; Zeitbedarf :
  158. ;
  159.  
  160. ADD_DPTR       MACRO    WERT
  161.  
  162.         PUSH PSW
  163.         PUSH ACC
  164.         MOV A,#(WERT#256)
  165.         ADD A,DPL
  166.         MOV DPL,A
  167.         MOV A,#(WERT/256)
  168.         ADDC A,DPH
  169.         MOV DPH,A
  170.         POP ACC
  171.         POP PSW
  172.  
  173.         ENDM
  174.  
  175.  
  176. SUBB_DPTR       MACRO    WERT
  177.  
  178.         PUSH PSW
  179.         PUSH ACC
  180.         MOV A,DPL
  181.         CLR C
  182.         SUBB A,#(WERT#256)
  183.         MOV DPL,A
  184.         MOV A,DPH
  185.         SUBB A,#(WERT/256)
  186.         MOV DPH,A
  187.         POP ACC
  188.         POP PSW
  189.  
  190.         ENDM
  191.  
  192. ;---------------------------------------------------------------------
  193. ; Funktion : Rechnen mit 16- Bit- Werten im ext. RAM (L,H).
  194. ; Aufrufparameter : DPTR = Wert
  195. ; Ruechgabeparameter : DPTR = Wert
  196. ; Veraenderte Register :
  197. ; Stackbedarf :
  198. ; Zeitbedarf :
  199. ;
  200.  
  201. SET_16  MACRO   NAME
  202.  
  203.         PUSH ACC
  204.         PUSH_DPTR
  205.         PUSH DPH
  206.         PUSH DPL
  207.         MOV DPTR,#NAME
  208.         POP ACC
  209.         MOVX @DPTR,A
  210.         INC DPTR
  211.         POP ACC
  212.         MOVX @DPTR,A
  213.         POP_DPTR
  214.         POP ACC
  215.  
  216.         ENDM
  217.  
  218. GET_16  MACRO   NAME
  219.  
  220.         PUSH ACC
  221.         MOV DPTR,#NAME
  222.         MOVX A,@DPTR
  223.         PUSH ACC
  224.         INC DPTR
  225.         MOVX A,@DPTR
  226.         MOV DPH,A
  227.         POP DPL
  228.         POP ACC
  229.  
  230.         ENDM
  231.  
  232. ;---------------------------------------------------------------------
  233. ; Funktion : Scheduler.
  234. ; Aufrufparameter : ACC = Zeichen
  235. ; Ruechgabeparameter : -
  236. ; Veraenderte Register :
  237. ; Stackbedarf :
  238. ; Zeitbedarf :
  239. ;
  240.  
  241. IFCALL  MACRO   CONST,ROUTINE
  242.  
  243.         CJNE A,#CONST,IFCALL1
  244.         LCALL ROUTINE
  245. IFCALL1:
  246.  
  247.         ENDM
  248.  
  249. IFMAKE  MACRO   CONST,CODE
  250.  
  251.         CJNE A,#CONST,IFMAKE1
  252.         CODE
  253. IFMAKE1:
  254.  
  255.         ENDM
  256.  
  257. ;---------------------------------------------------------------------
  258. ; Funktion : Warten bis Netzwerk freiund Message senden.
  259. ; Aufrufparameter : ACC = Zeichen
  260. ; Ruechgabeparameter : -
  261. ; Veraenderte Register :
  262. ; Stackbedarf :
  263. ; Zeitbedarf :
  264. ;
  265.  
  266. SEND_NET  MACRO
  267.  
  268.         push acc
  269. SEND_NET1: LCALL READ_STATUS
  270.         JB ACC.1,SEND_NET1
  271.         pop acc
  272.         LCALL SEND_MESSAGE
  273.  
  274.         ENDM
  275.  
  276. ;---------------------------------------------------------------------
  277. ; Funktion : Message senden.
  278. ; Aufrufparameter : -
  279. ; Ruechgabeparameter : -
  280. ; Veraenderte Register : -
  281. ; Stackbedarf :
  282. ; Zeitbedarf :
  283. ;
  284.  
  285. post_Message1 macro Modul,Msg
  286.  
  287. ;        if MY_SLAVE_ADR = uC_Modul
  288. ;          call ADR_Msg                   ; interne Message
  289. ;        elseif
  290.         PUSH ACC
  291. WAIT_NET: LCALL READ_STATUS
  292.         JB ACC.1,WAIT_NET
  293.         PUSH DPL
  294.         PUSH DPH
  295.         MOV DPTR,#ModulNetAdr_Tab
  296.         MOV A,#Modul
  297.         MOVC A,@A+DPTR
  298.         POP DPH
  299.         POP DPL
  300.         MOV R0,#Modul
  301.         MOV R1,#Msg
  302.         LCALL SEND_MESSAGE              ; Message ins Netz
  303.         POP ACC
  304.  
  305. ;        endif
  306.         endm
  307.  
  308. ;---------------------------------------------------------------------
  309. ; Funktion : Message senden, alle Parameter im Mkroaufruf, B automatisch.
  310. ; Aufrufparameter : -
  311. ; Ruechgabeparameter : -
  312. ; Veraenderte Register : R0- R7
  313. ; Stackbedarf :
  314. ; Zeitbedarf :
  315. ;
  316.  
  317. post_Message2 macro Modul,Msg,PARA1,PARA2,PARA3,PARA4,PARA5,PARA6
  318.  
  319. Parameteranzahl SET     2                       ; min. Modulnr. und Msg.-Nr.
  320.  
  321.         PUSH ACC
  322.         PUSH B
  323.  
  324.         IF "PARA1"<>""
  325.         MOV R2,PARA1
  326. Parameteranzahl SET     Parameteranzahl+1
  327.         ENDIF
  328.         IF "PARA2"<>""
  329.         MOV R3,PARA2
  330. Parameteranzahl SET     Parameteranzahl+1
  331.         ENDIF
  332.         IF "PARA3"<>""
  333.         MOV R4,PARA3
  334. Parameteranzahl SET     Parameteranzahl+1
  335.         ENDIF
  336.         IF "PARA4"<>""
  337.         MOV R5,PARA4
  338. Parameteranzahl SET     Parameteranzahl+1
  339.         ENDIF
  340.         IF "PARA5"<>""
  341.         MOV R6,PARA5
  342. Parameteranzahl SET     Parameteranzahl+1
  343.         ENDIF
  344.         IF "PARA6"<>""
  345.         MOV R7,PARA6
  346. Parameteranzahl SET     Parameteranzahl+1
  347.         ENDIF
  348.  
  349.         PUSH DPL
  350.         PUSH DPH
  351.         MOV DPTR,#ModulNetAdr_Tab
  352.         MOV A,Modul
  353.         MOVC A,@A+DPTR
  354.         POP DPH
  355.         POP DPL
  356.         MOV R0,Modul
  357.         MOV R1,Msg
  358.         MOV B,#Parameteranzahl
  359.         PUSH ACC
  360. WAIT_NET: LCALL READ_STATUS
  361.         JB ACC.1,WAIT_NET
  362.         POP ACC
  363.         LCALL SEND_MESSAGE              ; Message ins Netz
  364.  
  365.         POP B
  366.         POP ACC
  367.  
  368.         endm
  369.  
  370. ;---------------------------------------------------------------------
  371. ; Funktion : Message ausgeben
  372. ; Aufrufparameter : wie definiert
  373. ; Ruechgabeparameter : -
  374. ; Veraenderte Register :
  375. ; Stackbedarf :
  376. ; Zeitbedarf :
  377. ;
  378.  
  379. TEST_MESSAGE_HEX    MACRO   POS
  380.  
  381.         PUSH ACC
  382.         MOV A,#POS
  383.         LCALL LCD_SET_DD_RAM_ADDRESS
  384.         POP ACC
  385.         PUSH ACC
  386.         LCALL A_LCD
  387.         MOV A,#' '
  388.         LCALL LCD_WRITE_CHAR
  389.         MOV A,B
  390.         LCALL A_LCD
  391.         MOV A,#' '
  392.         LCALL LCD_WRITE_CHAR
  393.         MOV A,R0
  394.         LCALL A_LCD
  395.         MOV A,#' '
  396.         LCALL LCD_WRITE_CHAR
  397.         MOV A,R1
  398.         LCALL A_LCD
  399.         MOV A,#' '
  400.         LCALL LCD_WRITE_CHAR
  401.         MOV A,R2
  402.         LCALL A_LCD
  403.         MOV A,#' '
  404.         LCALL LCD_WRITE_CHAR
  405.         MOV A,R3
  406.         LCALL A_LCD
  407.         MOV A,#' '
  408.         LCALL LCD_WRITE_CHAR
  409.         MOV A,R4
  410.         LCALL A_LCD
  411.         MOV A,#' '
  412.         LCALL LCD_WRITE_CHAR
  413.         MOV A,R5
  414.         LCALL A_LCD
  415.         MOV A,#' '
  416.         LCALL LCD_WRITE_CHAR
  417.         MOV A,R6
  418.         LCALL A_LCD
  419.         MOV A,#' '
  420.         LCALL LCD_WRITE_CHAR
  421.         MOV A,R7
  422.         LCALL A_LCD
  423.         POP ACC
  424.  
  425.         ENDM
  426.  
  427. ;---------------------------------------------------------------------
  428. ; Funktion : Fehlerbehandlung
  429. ; Aufrufparameter : Fehlernr.
  430. ; Ruechgabeparameter : -
  431. ; Veraenderte Register :
  432. ; Stackbedarf :
  433. ; Zeitbedarf :
  434. ;
  435.  
  436. ERROR   MACRO   NR
  437.  
  438.  
  439.         ENDM
  440.  
  441. ;---------------------------------------------------------------------
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452. ;---------------------------------------------------------------------
  453. TEST_MESSAGE    MACRO   POS,SCHALTER
  454.  
  455.         IF SCHALTER<=TEST_LEVEL
  456.           PUSH ACC
  457.           MOV A,#POS
  458.           LCALL LCD_SET_DD_RAM_ADDRESS
  459.           MOV A,R0
  460.           LCALL LCD_WRITE_CHAR
  461.           MOV A,R1
  462.           LCALL LCD_WRITE_CHAR
  463.           MOV A,R2
  464.           LCALL LCD_WRITE_CHAR
  465.           MOV A,R3
  466.           LCALL LCD_WRITE_CHAR
  467.           MOV A,R4
  468.           LCALL LCD_WRITE_CHAR
  469.           MOV A,R5
  470.           LCALL LCD_WRITE_CHAR
  471.           MOV A,R6
  472.           LCALL LCD_WRITE_CHAR
  473.           MOV A,R7
  474.           LCALL LCD_WRITE_CHAR
  475.           POP ACC
  476.         ENDIF
  477.         ENDM
  478. ;---------------------------------------------------------------------
  479. MAKE_MESSAGE    MACRO   ADR,STRG
  480.  
  481.         IF 0=0
  482.           MOV A,#0
  483.           MOV DPTR,#STR_ADR
  484.           MOVC A,@A+DPTR
  485.           MOV R0,A
  486.           MOV A,#0
  487.           INC DPTR
  488.           MOVC A,@A+DPTR
  489.           MOV R1,A
  490.           MOV A,#0
  491.           INC DPTR
  492.           MOVC A,@A+DPTR
  493.           MOV R2,A
  494.           MOV A,#0
  495.           INC DPTR
  496.           MOVC A,@A+DPTR
  497.           MOV R3,A
  498.           MOV A,#0
  499.           INC DPTR
  500.           MOVC A,@A+DPTR
  501.           MOV R4,A
  502.           MOV A,#0
  503.           INC DPTR
  504.           MOVC A,@A+DPTR
  505.           MOV R5,A
  506.           MOV A,#0
  507.           INC DPTR
  508.           MOVC A,@A+DPTR
  509.           MOV R6,A
  510.           MOV A,#0
  511.           INC DPTR
  512.           MOVC A,@A+DPTR
  513.           MOV R7,A
  514.           MOV A,#ADR
  515.           MOV B,#8
  516.           LJMP WEITER
  517.  
  518. STR_ADR   DB    STRG
  519.  
  520. WEITER:   NOP
  521.         ENDIF
  522.         ENDM
  523.  
  524. ;---------------------------------------------------------------------
  525. MAKE_MESSAGE_HEX    MACRO   ADR,L,A0,A1,A2,A3,A4,A5,A6,A7
  526.  
  527.         IF 0=0
  528.           MOV R0,#A0
  529.           MOV R1,#A1
  530.           MOV R2,#A2
  531.           MOV R3,#A3
  532.           MOV R4,#A4
  533.           MOV R5,#A5
  534.           MOV R6,#A6
  535.           MOV R7,#A7
  536.           MOV A,#ADR
  537.           MOV B,#L
  538.         ENDIF
  539.         ENDM
  540.  
  541. ;---------------------------------------------------------------------
  542.  
  543.