Subversion Repositories pentevo

Rev

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

  1.  
  2. ; Aufgabe Nr.: Teach- In Einheit fuer uP- Praktikum II
  3. ; Autor: Joerg Vollandt
  4. ; erstellt am : 31.05.1994
  5. ; letzte Aenderung am : 14.07.1994
  6. ; Bemerkung :
  7. ;
  8. ; Dateiname : teach1.asm
  9. ;
  10.  
  11. ;=====================================================================
  12. ; Definitionen der Funktionen der Teach- In Einheit
  13.  
  14. ;INIT_TEACH      Initialisieren der Teach- In Einheit
  15. ;DEINIT_TEACH    Deinitialisieren der Teach- In Einheit
  16. ;CLEAR_TEACH     Speicher loeschen
  17. ;RESET_TEACH     Speicher zum lesen zuruecksetzen
  18. ;STORE_ROB       Position Roboter speichern
  19. ;STORE_FRAES     Position Fraese speichern
  20. ;SYNC
  21. ;LOAD_ROB        Roboter Teach- In Datei von PC laden
  22. ;LOAD_FRAES      Fraese- Teach- In Datei von PC laden
  23. ;LOAD            Beide Teach- In Dateien von PC laden
  24. ;SAVE_ROB        Roboter Teach- In Datei auf PC speichern
  25. ;SAVE_FRAES      Fraese- Teach- In Datei auf PC speichern
  26.  
  27. ;------------------------------------------------------------------------------
  28.         SEGMENT CODE
  29. ;---------------------------------------------------------------------
  30. ; Funktion : Initialisieren der Error- und Warningeinspruenge fuer die
  31. ;            Fraese.
  32. ; Aufrufparameter : -
  33. ; Ruechgabeparameter : -
  34. ; Veraenderte Register : -
  35. ; Stackbedarf :
  36. ; Zeitbedarf :
  37. ;
  38.  
  39. INIT_FRS:
  40.         JB P3.5,INIT_FRAES_START
  41.         LJMP INIT_FRAES_ENDE
  42. INIT_FRAES_START:
  43.         PUSH_ALL
  44. ;        MOV B,#5                                ; Msg. Frs
  45. ;        MOV AR2,#MemFrs                         ; meine Adr.
  46. ;        MOV AR3,#GetFrsError                    ; Fehlereinsprung
  47. ;        MOV AR4,#GetFrsWarning                  ; Warnungeinsprung
  48. ;        post_message1 Frs,SetMasterAdress       ; Ready-Anfordrung
  49.         post_message2 #Frs,#SetMasterAdress,#MemFrs,#GetFrsError,#GetFrsWarning
  50.         POP_ALL
  51. INIT_FRAES_ENDE:
  52.         RET
  53.  
  54. ;---------------------------------------------------------------------
  55. ; Funktion : Initialisieren der Teach- In Einheit
  56. ; Aufrufparameter : -
  57. ; Ruechgabeparameter : -
  58. ; Veraenderte Register : -
  59. ; Stackbedarf :
  60. ; Zeitbedarf :
  61. ;
  62.  
  63. INIT_TEACH:
  64.         CLR READY
  65.         CLR CRC
  66.         LCALL INIT_MEM
  67.         MOV T_Sync_Counter,#0
  68.         MOV Frs_Ref_x,#0
  69.         MOV Frs_Ref_x+1,#0
  70.         MOV Frs_Ref_y,#0
  71.         MOV Frs_Ref_y+1,#0
  72.         MOV Frs_Ref_z,#0
  73.         MOV Frs_Ref_z+1,#0
  74.         MOV Frs_Ref_Tiefe,#0
  75.         MOV Frs_Ref_Tiefe+1,#0
  76.         CLR Ref_Flag
  77.         CLR Tiefe_Flag
  78.         RET
  79.  
  80. ;---------------------------------------------------------------------
  81. ; Funktion : Deinitialisieren der Teach- In Einheit
  82. ; Aufrufparameter : -
  83. ; Ruechgabeparameter : -
  84. ; Veraenderte Register : -
  85. ; Stackbedarf :
  86. ; Zeitbedarf :
  87. ;
  88.  
  89. DEINIT_TEACH:
  90.         CLR READY
  91.         CLR CRC
  92.         LCALL DEINIT_MEM
  93.  
  94.         RET
  95.  
  96. ;---------------------------------------------------------------------
  97. ; Funktion : Speicher der Teach- In Einheit loeschen
  98. ; Aufrufparameter : -
  99. ; Ruechgabeparameter : -
  100. ; Veraenderte Register : -
  101. ; Stackbedarf :
  102. ; Zeitbedarf :
  103. ;
  104.  
  105. CLEAR_TEACH:
  106.  
  107.         RET
  108.  
  109. ;---------------------------------------------------------------------
  110. ; Funktion : Teach- In Einheit zuruecksetzen
  111. ; Aufrufparameter : -
  112. ; Ruechgabeparameter : -
  113. ; Veraenderte Register : -
  114. ; Stackbedarf :
  115. ; Zeitbedarf :
  116. ;
  117.  
  118. RESET_TEACH:
  119.         LCALL RESET_MEM
  120.         SETB READY
  121.  
  122.         RET
  123.  
  124. ;---------------------------------------------------------------------
  125. ; Funktion : Roboter Teach- In Datei von PC laden
  126. ; Aufrufparameter : -
  127. ; Ruechgabeparameter : -
  128. ; Veraenderte Register : -
  129. ; Stackbedarf :
  130. ; Zeitbedarf :
  131. ;
  132.  
  133. LOAD_ROB:
  134.         JB P3.5,LOAD_ROB_ENDE
  135.         CLR READY
  136.         LCD 40H,"Roboter- Teachin- Datei wird geladen.   "
  137.         LCALL RD_MEM_PC
  138. LOAD_ROB_ENDE:
  139.         RET
  140.  
  141. ;---------------------------------------------------------------------
  142. ; Funktion : Fraese- Teach- In Datei von PC laden
  143. ; Aufrufparameter : -
  144. ; Ruechgabeparameter : -
  145. ; Veraenderte Register : -
  146. ; Stackbedarf :
  147. ; Zeitbedarf :
  148. ;
  149.  
  150. LOAD_FRAES:
  151.         JNB P3.5,LOAD_FRAES_ENDE
  152.         CLR READY
  153.         LCD 40H,"Fraese- Teachin- Datei wird geladen.    "
  154.         LCALL RD_MEM_PC
  155. LOAD_FRAES_ENDE:
  156.         RET
  157.  
  158. ;---------------------------------------------------------------------
  159. ; Funktion : Roboter Teach- In Datei auf PC speichern
  160. ; Aufrufparameter : -
  161. ; Ruechgabeparameter : -
  162. ; Veraenderte Register : -
  163. ; Stackbedarf :
  164. ; Zeitbedarf :
  165. ;
  166.  
  167. SAVE_ROB:
  168.         JB READY,SAVE_ROB_START
  169.         JNB P3.5,SAVE_ROB_START
  170.         LJMP SAVE_ROB_ENDE
  171. SAVE_ROB_START:
  172.         LCD 40H,"Roboter- Teachin- Datei wird gespeichert"
  173.         LCALL WR_MEM_PC
  174.         JNC SAVE_ROB_OK
  175.         LCD 40H,"FEHLER bei Speichern.                   "
  176.         RET
  177.  
  178. SAVE_ROB_OK:
  179.         LCD 40H,"Datei gespeichert.                      "
  180.         RET
  181.  
  182. SAVE_ROB_ENDE:
  183.         RET
  184.  
  185. ;---------------------------------------------------------------------
  186. ; Funktion : Fraese- Teach- In Datei auf PC speichern
  187. ; Aufrufparameter : -
  188. ; Ruechgabeparameter : -
  189. ; Veraenderte Register : -
  190. ; Stackbedarf :
  191. ; Zeitbedarf :
  192. ;
  193.  
  194. SAVE_FRAES:
  195.         JB READY,SAVE_FRAES_START
  196.         JB P3.5,SAVE_FRAES_START
  197.         LJMP SAVE_FRAES_ENDE
  198. SAVE_FRAES_START:
  199.         LCALL WR_MEM_PC
  200.         JNC SAVE_FRAES_OK
  201.         LCD 40H,"FEHLER bei Speichern.                   "
  202.         RET
  203.  
  204. SAVE_FRAES_OK:
  205.         LCD 40H,"Datei gespeichert.                      "
  206.         RET
  207.  
  208. SAVE_FRAES_ENDE:
  209.         RET
  210.  
  211. ;---------------------------------------------------------------------
  212. ; Funktion : Position des Roboters speichern. 1. Teil: Msg- Header
  213. ;            in MEM speichern und ersten Teil der Position vom Roboter
  214. ;            anfordern.
  215. ; Aufrufparameter : -
  216. ; Ruechgabeparameter : -
  217. ; Veraenderte Register : -
  218. ; Stackbedarf :
  219. ; Zeitbedarf :
  220. ;
  221.  
  222. STORE_ROB:
  223.         PUSH PSW
  224.         PUSH ACC
  225.         PUSH AR0
  226.         JNB READY,STORE_ROB_ENDE                ; Fertig und Roboter ?
  227.         JB P3.5,STORE_ROB_ENDE
  228.  
  229.         MOV B,#4                                ; Msg. an Roboter um Pos.
  230.         MOV R2,#MemRob                          ; Empfaenger angeben
  231.         MOV R3,#RobPos1                         ; Msg.-Nr. Empfaenger angeben
  232.         post_message1 Rob,GibPos1                ; zu erfragen
  233.  
  234. STORE_ROB_ENDE:
  235.         CLR READY                               ; Teach- In nicht bereit
  236.         POP AR0
  237.         POP ACC
  238.         POP PSW
  239.         RET
  240.  
  241. ;---------------------------------------------------------------------
  242. ; Funktion : Position des Roboters speichern. 2. Teil: 1. Teil Position
  243. ;            in MEM speichern und zweiten Teil der Position vom Roboter
  244. ;            anfordern.
  245. ; Aufrufparameter : -
  246. ; Ruechgabeparameter : -
  247. ; Veraenderte Register : -
  248. ; Stackbedarf :
  249. ; Zeitbedarf :
  250. ;
  251.  
  252. FIRST_FROM_ROB:
  253.         PUSH PSW
  254.         PUSH ACC
  255.         PUSH AR0
  256.         JB READY,FIRST_ROB_ENDE                 ; NICHT Fertig und Roboter ?
  257.         JB P3.5,FIRST_ROB_ENDE
  258.         MOV A,#8                                ; Msg- Header speichern
  259.         LCALL PUT_ELEMENT_MEM                   ; (Msg.-Laenge)
  260.         ERROR 0
  261.         MOV A,#Rob                              ; Msg- Header speichern
  262.         LCALL PUT_ELEMENT_MEM                   ; (Modulnr.)
  263.         ERROR 0
  264.         MOV A,#MoveAPos1                        ; Msg- Header speichern
  265.         LCALL PUT_ELEMENT_MEM                   ; (Msg.- Nr.)
  266.         ERROR 0
  267.         MOV A,R2                                ; Position speichern
  268.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 High)
  269.         ERROR 0
  270.         MOV A,R3                                ; Position speichern
  271.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 Low)
  272.         ERROR 0
  273.         MOV A,R4                                ; Position speichern
  274.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 High)
  275.         ERROR 0
  276.         MOV A,R5                                ; Position speichern
  277.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 Low)
  278.         ERROR 0
  279.         MOV A,R6                                ; Position speichern
  280.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 3 High)
  281.         ERROR 0
  282.         MOV A,R7                                ; Position speichern
  283.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 3 Low)
  284.         ERROR 0
  285.  
  286.         MOV B,#4                                ; Msg. an Roboter um Pos.
  287.         MOV R2,#MemRob                          ; Empfaenger angeben
  288.         MOV R3,#RobPos2                         ; Msg.-Nr. Empfaenger angeben
  289.         post_message1 Rob,GibPos2               ; zu erfragen
  290.  
  291. FIRST_ROB_ENDE:
  292.         POP AR0
  293.         POP ACC
  294.         POP PSW
  295.  
  296.         RET
  297.  
  298. ;---------------------------------------------------------------------
  299. ; Funktion : Position des Roboters speichern. 3. Teil: 2. Teil Position
  300. ;            in MEM speichern.
  301. ; Aufrufparameter : -
  302. ; Ruechgabeparameter : -
  303. ; Veraenderte Register : -
  304. ; Stackbedarf :
  305. ; Zeitbedarf :
  306. ;
  307.  
  308. SECOND_FROM_ROB:
  309.         PUSH PSW
  310.         PUSH ACC
  311.         PUSH AR0
  312.         JB READY,SECOND_ROB_ENDE                ; NICHT Fertig und Roboter ?
  313.         JB P3.5,SECOND_ROB_ENDE
  314.         MOV A,#8                                ; Msg- Header speichern
  315.         LCALL PUT_ELEMENT_MEM                   ; (Msg.-Laenge)
  316.         ERROR 0
  317.         MOV A,#Rob                              ; Msg- Header speichern
  318.         LCALL PUT_ELEMENT_MEM                   ; (Modulnr.)
  319.         ERROR 0
  320.         MOV A,#MoveAPos2                        ; Msg- Header speichern
  321.         LCALL PUT_ELEMENT_MEM                   ; (Msg.- Nr.)
  322.         ERROR 0
  323.         MOV A,R2                                ; Position speichern
  324.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 High)
  325.         ERROR 0
  326.         MOV A,R3                                ; Position speichern
  327.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 Low)
  328.         ERROR 0
  329.         MOV A,R4                                ; Position speichern
  330.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 High)
  331.         ERROR 0
  332.         MOV A,R5                                ; Position speichern
  333.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 Low)
  334.         ERROR 0
  335.         MOV A,R6                                ; Position speichern
  336.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 3 High)
  337.         ERROR 0
  338.         MOV A,R7                                ; Position speichern
  339.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 3 Low)
  340.         ERROR 0
  341.  
  342. SECOND_ROB_ENDE:
  343.         POP AR0
  344.         POP ACC
  345.         POP PSW
  346.         SETB READY                               ; Teach- In wieder bereit
  347.         RET
  348.  
  349. ;---------------------------------------------------------------------
  350. ; Funktion : Position der Fraese speichern. 1. Teil: Msg- Header
  351. ;            in MEM speichern und ersten Teil der Position von Fraese
  352. ;            anfordern.
  353. ; Aufrufparameter : -
  354. ; Ruechgabeparameter : -
  355. ; Veraenderte Register : -
  356. ; Stackbedarf :
  357. ; Zeitbedarf :
  358. ;
  359.  
  360. STORE_FRAES:
  361.         PUSH PSW
  362.         PUSH ACC
  363.         PUSH AR0
  364.         JNB READY,STORE_FRS_ENDE                ; Fertig und Fraese?
  365.         JNB P3.5,STORE_FRS_ENDE
  366.  
  367.         MOV B,#4                                ; Msg. an Roboter um Pos.
  368.         MOV R2,#MemFrs                          ; Empfaenger angeben
  369.         MOV R3,#FrsPos1                         ; Msg.-Nr. Empfaenger angeben
  370.         post_message1 Frs,GibFrsPos1            ; zu erfragen
  371.  
  372. STORE_FRS_ENDE:
  373.         CLR READY                               ; Teach- In nicht bereit
  374.         POP AR0
  375.         POP ACC
  376.         POP PSW
  377.         RET
  378.  
  379. ;---------------------------------------------------------------------
  380. ; Funktion : Position der Fraese speichern. 2. Teil: 1. Teil Position
  381. ;            in MEM speichern und zweiten Teil der Position von Fraese
  382. ;            anfordern.
  383. ; Aufrufparameter : -
  384. ; Ruechgabeparameter : -
  385. ; Veraenderte Register : -
  386. ; Stackbedarf :
  387. ; Zeitbedarf :
  388. ;
  389.  
  390. FIRST_FROM_FRS:
  391.         PUSH PSW
  392.         PUSH ACC
  393.         PUSH AR0
  394.         JB READY,FIRST_FRS_ENDE                 ; NICHT Fertig und Roboter ?
  395.         JNB P3.5,FIRST_FRS_ENDE
  396.         MOV A,#8                                ; Msg- Header speichern
  397.         LCALL PUT_ELEMENT_MEM                   ; (Msg.-Laenge)
  398.         ERROR 0
  399.         MOV A,#Frs                              ; Msg- Header speichern
  400.         LCALL PUT_ELEMENT_MEM                   ; (Modulnr.)
  401.         ERROR 0
  402.         MOV A,#MoveAPos                         ; Msg- Header speichern
  403.         LCALL PUT_ELEMENT_MEM                   ; (Msg.- Nr.)
  404.         ERROR 0
  405.         MOV A,R2                                ; Position speichern
  406.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 High)
  407.         ERROR 0
  408.         MOV A,R3                                ; Position speichern
  409.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 Low)
  410.         ERROR 0
  411.         MOV A,R4                                ; Position speichern
  412.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 High)
  413.         ERROR 0
  414.         MOV A,R5                                ; Position speichern
  415.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 Low)
  416.         ERROR 0
  417.         MOV A,R6                                ; Position speichern
  418.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 3 High)
  419.         ERROR 0
  420.         MOV A,R7                                ; Position speichern
  421.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 3 Low)
  422.         ERROR 0
  423.  
  424.         MOV B,#4                                ; Msg. an Roboter um Pos.
  425.         MOV R2,#MemFrs                          ; Empfaenger angeben
  426.         MOV R3,#FrsPos2                         ; Msg.-Nr. Empfaenger angeben
  427.         post_message1 Frs,GibFrsPos2            ; zu erfragen
  428.  
  429. FIRST_FRS_ENDE:
  430.         POP AR0
  431.         POP ACC
  432.         POP PSW
  433.  
  434.         RET
  435.  
  436. ;---------------------------------------------------------------------
  437. ; Funktion : Position der Fraese speichern. 3. Teil: 2. Teil Position
  438. ;            in MEM speichern.
  439. ; Aufrufparameter : -
  440. ; Ruechgabeparameter : -
  441. ; Veraenderte Register : -
  442. ; Stackbedarf :
  443. ; Zeitbedarf :
  444. ;
  445.  
  446. SECOND_FROM_FRS:
  447.         PUSH PSW
  448.         PUSH ACC
  449.         PUSH AR0
  450.         JB READY,SECOND_FRS_ENDE                ; NICHT Fertig und Roboter ?
  451.         JNB P3.5,SECOND_FRS_ENDE
  452.  
  453.         MOV A,#4                                ; Msg- Header speichern
  454.         LCALL PUT_ELEMENT_MEM                   ; (Msg.-Laenge)
  455.         ERROR 0
  456.         MOV A,#Frs                              ; Msg- Header speichern
  457.         LCALL PUT_ELEMENT_MEM                   ; (Modulnr.)
  458.         ERROR 0
  459.         MOV A,#MoveV                            ; Msg- Header speichern
  460.         LCALL PUT_ELEMENT_MEM                   ; (Msg.- Nr.)
  461.         ERROR 0
  462.         MOV A,R2                                ; Position speichern
  463.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 High)
  464.         ERROR 0
  465.         MOV A,R3                                ; Position speichern
  466.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 1 Low)
  467.         ERROR 0
  468.  
  469.         MOV A,#3                                ; Msg- Header speichern
  470.         LCALL PUT_ELEMENT_MEM                   ; (Msg.-Laenge)
  471.         ERROR 0
  472.         MOV A,#Frs                              ; Msg- Header speichern
  473.         LCALL PUT_ELEMENT_MEM                   ; (Modulnr.)
  474.         ERROR 0
  475.         MOV A,#Drill                            ; Msg- Header speichern
  476.         LCALL PUT_ELEMENT_MEM                   ; (Msg.- Nr.)
  477.         ERROR 0
  478.         MOV A,R4                                ; Position speichern
  479.         LCALL PUT_ELEMENT_MEM                   ; (Parameter 2 High)
  480.         ERROR 0
  481.  
  482. SECOND_FRS_ENDE:
  483.         POP AR0
  484.         POP ACC
  485.         POP PSW
  486.         SETB READY                               ; Teach- In wieder bereit
  487.         RET
  488.  
  489. ;---------------------------------------------------------------------
  490. ; Funktion :
  491. ; Aufrufparameter : -
  492. ; Ruechgabeparameter : -
  493. ; Veraenderte Register : -
  494. ; Stackbedarf :
  495. ; Zeitbedarf :
  496. ;
  497.  
  498.  
  499.         RET
  500.  
  501. ;=====================================================================
  502. ;        END
  503. ;---------------------------------------------------------------------
  504.  
  505.