; Aufgabe Nr.: Teach- In Einheit fuer uP- Praktikum II
; Autor: Joerg Vollandt
; erstellt am : 31.05.1994
; letzte Aenderung am : 14.07.1994
; Bemerkung :
;
; Dateiname : teach1.asm
;
;=====================================================================
; Definitionen der Funktionen der Teach- In Einheit
;INIT_TEACH Initialisieren der Teach- In Einheit
;DEINIT_TEACH Deinitialisieren der Teach- In Einheit
;CLEAR_TEACH Speicher loeschen
;RESET_TEACH Speicher zum lesen zuruecksetzen
;STORE_ROB Position Roboter speichern
;STORE_FRAES Position Fraese speichern
;SYNC
;LOAD_ROB Roboter Teach- In Datei von PC laden
;LOAD_FRAES Fraese- Teach- In Datei von PC laden
;LOAD Beide Teach- In Dateien von PC laden
;SAVE_ROB Roboter Teach- In Datei auf PC speichern
;SAVE_FRAES Fraese- Teach- In Datei auf PC speichern
;------------------------------------------------------------------------------
SEGMENT CODE
;---------------------------------------------------------------------
; Funktion : Initialisieren der Error- und Warningeinspruenge fuer die
; Fraese.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
INIT_FRS:
JB P3.5,INIT_FRAES_START
LJMP INIT_FRAES_ENDE
INIT_FRAES_START:
PUSH_ALL
; MOV B,#5 ; Msg. Frs
; MOV AR2,#MemFrs ; meine Adr.
; MOV AR3,#GetFrsError ; Fehlereinsprung
; MOV AR4,#GetFrsWarning ; Warnungeinsprung
; post_message1 Frs,SetMasterAdress ; Ready-Anfordrung
post_message2 #Frs,#SetMasterAdress,#MemFrs,#GetFrsError,#GetFrsWarning
POP_ALL
INIT_FRAES_ENDE:
RET
;---------------------------------------------------------------------
; Funktion : Initialisieren der Teach- In Einheit
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
INIT_TEACH:
CLR READY
CLR CRC
LCALL INIT_MEM
MOV T_Sync_Counter,#0
MOV Frs_Ref_x,#0
MOV Frs_Ref_x+1,#0
MOV Frs_Ref_y,#0
MOV Frs_Ref_y+1,#0
MOV Frs_Ref_z,#0
MOV Frs_Ref_z+1,#0
MOV Frs_Ref_Tiefe,#0
MOV Frs_Ref_Tiefe+1,#0
CLR Ref_Flag
CLR Tiefe_Flag
RET
;---------------------------------------------------------------------
; Funktion : Deinitialisieren der Teach- In Einheit
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
DEINIT_TEACH:
CLR READY
CLR CRC
LCALL DEINIT_MEM
RET
;---------------------------------------------------------------------
; Funktion : Speicher der Teach- In Einheit loeschen
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
CLEAR_TEACH:
RET
;---------------------------------------------------------------------
; Funktion : Teach- In Einheit zuruecksetzen
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
RESET_TEACH:
LCALL RESET_MEM
SETB READY
RET
;---------------------------------------------------------------------
; Funktion : Roboter Teach- In Datei von PC laden
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
LOAD_ROB:
JB P3.5,LOAD_ROB_ENDE
CLR READY
LCD 40H,"Roboter- Teachin- Datei wird geladen. "
LCALL RD_MEM_PC
LOAD_ROB_ENDE:
RET
;---------------------------------------------------------------------
; Funktion : Fraese- Teach- In Datei von PC laden
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
LOAD_FRAES:
JNB P3.5,LOAD_FRAES_ENDE
CLR READY
LCD 40H,"Fraese- Teachin- Datei wird geladen. "
LCALL RD_MEM_PC
LOAD_FRAES_ENDE:
RET
;---------------------------------------------------------------------
; Funktion : Roboter Teach- In Datei auf PC speichern
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
SAVE_ROB:
JB READY,SAVE_ROB_START
JNB P3.5,SAVE_ROB_START
LJMP SAVE_ROB_ENDE
SAVE_ROB_START:
LCD 40H,"Roboter- Teachin- Datei wird gespeichert"
LCALL WR_MEM_PC
JNC SAVE_ROB_OK
LCD 40H,"FEHLER bei Speichern. "
RET
SAVE_ROB_OK:
LCD 40H,"Datei gespeichert. "
RET
SAVE_ROB_ENDE:
RET
;---------------------------------------------------------------------
; Funktion : Fraese- Teach- In Datei auf PC speichern
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
SAVE_FRAES:
JB READY,SAVE_FRAES_START
JB P3.5,SAVE_FRAES_START
LJMP SAVE_FRAES_ENDE
SAVE_FRAES_START:
LCALL WR_MEM_PC
JNC SAVE_FRAES_OK
LCD 40H,"FEHLER bei Speichern. "
RET
SAVE_FRAES_OK:
LCD 40H,"Datei gespeichert. "
RET
SAVE_FRAES_ENDE:
RET
;---------------------------------------------------------------------
; Funktion : Position des Roboters speichern. 1. Teil: Msg- Header
; in MEM speichern und ersten Teil der Position vom Roboter
; anfordern.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
STORE_ROB:
PUSH PSW
PUSH ACC
PUSH AR0
JNB READY,STORE_ROB_ENDE ; Fertig und Roboter ?
JB P3.5,STORE_ROB_ENDE
MOV B,#4 ; Msg. an Roboter um Pos.
MOV R2,#MemRob ; Empfaenger angeben
MOV R3,#RobPos1 ; Msg.-Nr. Empfaenger angeben
post_message1 Rob,GibPos1 ; zu erfragen
STORE_ROB_ENDE:
CLR READY ; Teach- In nicht bereit
POP AR0
POP ACC
POP PSW
RET
;---------------------------------------------------------------------
; Funktion : Position des Roboters speichern. 2. Teil: 1. Teil Position
; in MEM speichern und zweiten Teil der Position vom Roboter
; anfordern.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
FIRST_FROM_ROB:
PUSH PSW
PUSH ACC
PUSH AR0
JB READY,FIRST_ROB_ENDE ; NICHT Fertig und Roboter ?
JB P3.5,FIRST_ROB_ENDE
MOV A,#8 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.-Laenge)
ERROR 0
MOV A,#Rob ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Modulnr.)
ERROR 0
MOV A,#MoveAPos1 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.- Nr.)
ERROR 0
MOV A,R2 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 High)
ERROR 0
MOV A,R3 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 Low)
ERROR 0
MOV A,R4 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 High)
ERROR 0
MOV A,R5 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 Low)
ERROR 0
MOV A,R6 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 3 High)
ERROR 0
MOV A,R7 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 3 Low)
ERROR 0
MOV B,#4 ; Msg. an Roboter um Pos.
MOV R2,#MemRob ; Empfaenger angeben
MOV R3,#RobPos2 ; Msg.-Nr. Empfaenger angeben
post_message1 Rob,GibPos2 ; zu erfragen
FIRST_ROB_ENDE:
POP AR0
POP ACC
POP PSW
RET
;---------------------------------------------------------------------
; Funktion : Position des Roboters speichern. 3. Teil: 2. Teil Position
; in MEM speichern.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
SECOND_FROM_ROB:
PUSH PSW
PUSH ACC
PUSH AR0
JB READY,SECOND_ROB_ENDE ; NICHT Fertig und Roboter ?
JB P3.5,SECOND_ROB_ENDE
MOV A,#8 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.-Laenge)
ERROR 0
MOV A,#Rob ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Modulnr.)
ERROR 0
MOV A,#MoveAPos2 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.- Nr.)
ERROR 0
MOV A,R2 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 High)
ERROR 0
MOV A,R3 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 Low)
ERROR 0
MOV A,R4 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 High)
ERROR 0
MOV A,R5 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 Low)
ERROR 0
MOV A,R6 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 3 High)
ERROR 0
MOV A,R7 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 3 Low)
ERROR 0
SECOND_ROB_ENDE:
POP AR0
POP ACC
POP PSW
SETB READY ; Teach- In wieder bereit
RET
;---------------------------------------------------------------------
; Funktion : Position der Fraese speichern. 1. Teil: Msg- Header
; in MEM speichern und ersten Teil der Position von Fraese
; anfordern.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
STORE_FRAES:
PUSH PSW
PUSH ACC
PUSH AR0
JNB READY,STORE_FRS_ENDE ; Fertig und Fraese?
JNB P3.5,STORE_FRS_ENDE
MOV B,#4 ; Msg. an Roboter um Pos.
MOV R2,#MemFrs ; Empfaenger angeben
MOV R3,#FrsPos1 ; Msg.-Nr. Empfaenger angeben
post_message1 Frs,GibFrsPos1 ; zu erfragen
STORE_FRS_ENDE:
CLR READY ; Teach- In nicht bereit
POP AR0
POP ACC
POP PSW
RET
;---------------------------------------------------------------------
; Funktion : Position der Fraese speichern. 2. Teil: 1. Teil Position
; in MEM speichern und zweiten Teil der Position von Fraese
; anfordern.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
FIRST_FROM_FRS:
PUSH PSW
PUSH ACC
PUSH AR0
JB READY,FIRST_FRS_ENDE ; NICHT Fertig und Roboter ?
JNB P3.5,FIRST_FRS_ENDE
MOV A,#8 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.-Laenge)
ERROR 0
MOV A,#Frs ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Modulnr.)
ERROR 0
MOV A,#MoveAPos ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.- Nr.)
ERROR 0
MOV A,R2 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 High)
ERROR 0
MOV A,R3 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 Low)
ERROR 0
MOV A,R4 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 High)
ERROR 0
MOV A,R5 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 Low)
ERROR 0
MOV A,R6 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 3 High)
ERROR 0
MOV A,R7 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 3 Low)
ERROR 0
MOV B,#4 ; Msg. an Roboter um Pos.
MOV R2,#MemFrs ; Empfaenger angeben
MOV R3,#FrsPos2 ; Msg.-Nr. Empfaenger angeben
post_message1 Frs,GibFrsPos2 ; zu erfragen
FIRST_FRS_ENDE:
POP AR0
POP ACC
POP PSW
RET
;---------------------------------------------------------------------
; Funktion : Position der Fraese speichern. 3. Teil: 2. Teil Position
; in MEM speichern.
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
SECOND_FROM_FRS:
PUSH PSW
PUSH ACC
PUSH AR0
JB READY,SECOND_FRS_ENDE ; NICHT Fertig und Roboter ?
JNB P3.5,SECOND_FRS_ENDE
MOV A,#4 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.-Laenge)
ERROR 0
MOV A,#Frs ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Modulnr.)
ERROR 0
MOV A,#MoveV ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.- Nr.)
ERROR 0
MOV A,R2 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 High)
ERROR 0
MOV A,R3 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 1 Low)
ERROR 0
MOV A,#3 ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.-Laenge)
ERROR 0
MOV A,#Frs ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Modulnr.)
ERROR 0
MOV A,#Drill ; Msg- Header speichern
LCALL PUT_ELEMENT_MEM ; (Msg.- Nr.)
ERROR 0
MOV A,R4 ; Position speichern
LCALL PUT_ELEMENT_MEM ; (Parameter 2 High)
ERROR 0
SECOND_FRS_ENDE:
POP AR0
POP ACC
POP PSW
SETB READY ; Teach- In wieder bereit
RET
;---------------------------------------------------------------------
; Funktion :
; Aufrufparameter : -
; Ruechgabeparameter : -
; Veraenderte Register : -
; Stackbedarf :
; Zeitbedarf :
;
RET
;=====================================================================
; END
;---------------------------------------------------------------------