Marc2007
12.12.2006, 11:35
Hallo zusammen,
habe mir in den letzten tagen ein Programm gemacht mit dem es mir möglich ist schrittmotoren zu steuern und das auf signale wie lichtschranke usw reagiert.
Leider bin ich noch " sehr frisch " beim programieren und bin noch nicht so vertraut mit einigen befehlen ...
deswegen sieht mein Programm auch zimlich "verwierend" und sehr lang aus ?!
würde mich freuen wenn sich einige heir kurz gedanken über das programm machen könnetn und mir vll einige verbesserungs oder vereinfachungsvorschläge hätten.
wär euch sehr dankbar. !!
desweiteren gibt es eine möglichkeit die "Unterprogramme" in verschiedenen .asm dateien abzuspeichern das sich das Programm (ablauf) und die rutinen unterscheiden ?
sicher ist es schwer sich in solch ein programm reinzudenken wenn man nicht genau weiss was es erfüllt.
würde mich trozdem freuen wenn einige es versuchen würden! DANKE
noch ne kurze erklärung:
P1.4 -P 1.7 sind lichtschranken mit , einer seite dauer HIGH pegel
und andere seite dauer low pegel.
P2.0 - P2.7 sind ausgänge an eine endstufe ! für 3 Motoren
P2.0 + P2.1 gehören zusammen
P2.2 + P2.3 gehören zusammen ... und so weiter ;)
P3.5 Start Taste
P3.4 Test ( wird eig nicht benötigt war nur ein versuch )
P3.7 auswahl wiviel schritte ein motor machen soll.
motoren müssen von position x egal wo .. auf lichtschranke ( 0 punkt )
alle motoren gemeinsam von punkt 0 auf 54 schritte rechts / gleiche auch links möglich sowie das gleich mit 74 schritten
nach ereichen von 54 schritten warten und dann ( wenn nicht gestoppt) zurück zu 0 das 5 mal ;)
zum messen der schritgenauigkeit.
das wärs erstmal. vielen dank schonmal...
für weitere fragen einfach schreiben ...
THX
Gruß marc
Hier das Programm:
; --------------------------------------------------
; --- Prozessor Typ ---
; --------------------------------------------------
INCLUDE 89C51.mc
; --------------------------------------------------
; --- Start / Test Taste | 3.5=Start // 3.4=Test ---
; --------------------------------------------------
Programm:
Start_0:
JB P3.4, Start
Test:
LCALL Rechtslauf_Test
LJMP Test
Start:
JB P3.5, Start_0
; --------------------------------------------------
; --- Programm START Lichtschranke suchen ---
; --------------------------------------------------
LCALL M1_Licht
; --------------------------------------------------
; --- 0-Punkt erreicht ---
; --------------------------------------------------
Weiter:
MOV R5, #5d
Wieder-S:
LCALL Warten
; --------------------------------------------------
; --- 54 / 74 Schritte wählen ---
; --------------------------------------------------
JB P3.7, Schritt74
MOV R6, #54d
LJMP Schritte1
Schritt74:
MOV R6, #74d
; --------------------------------------------------
; --- Gewählte Schritte nach Rechts ---
; --------------------------------------------------
Schritte1:
LCALL Rechtslauf_Test
LCALL Warten
Stop:
JNB P3.4, STOP
LCALL M1_Licht
DJNZ R5, Wieder-S
LCALL M1_Licht
; --------------------------------------------------
; --- 0-Punkt erreicht ---
; --------------------------------------------------
Mov:
MOV R5, #5d
Wieder-S_L:
LCALL Warten
; --------------------------------------------------
; --- 54 / 74 Schritte wählen ---
; --------------------------------------------------
JB P3.7, Schritt74_L
MOV R6, #54d
LJMP Schritte1_L
Schritt74_L:
MOV R6, #74d
; --------------------------------------------------
; --- Gewählte Schritte nach Links ---
; --------------------------------------------------
Schritte1_L:
LCALL Linkslauf_Test
LCALL Warten
Stop_L:
JNB P3.4, Stop_L
LCALL M1_Licht
DJNZ R5, Wieder-S_L
LJMP Start_0
; --------------------------------------------------
; --- UNTERPROGRAMME ---
; --------------------------------------------------
; --------------------------------------------------
; --- Lichtschranke suchen Rechts / Links ---
; --------------------------------------------------
; --------------------------------------------------
; --- Linkslauf Motor 1 Lichtschranke ---
; --------------------------------------------------
Lichtschranke_Links:
M1_Licht_L:
MOV R3, #6d
M1_Start_L:
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_1
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_2
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_3
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_4
JNB P1.7, Lichtschranke_1_L
LJMP M1_Licht_L
Lichtschranke_1_L:
; --------------------------------------------------
; --- Linkslauf Motor 2 Lichtschranke ---
; --------------------------------------------------
M2_Licht_L:
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_1
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_2
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_3
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_4
JNB P1.5, Lichtschranke_2_L
LJMP M2_Licht_L
Lichtschranke_2_L:
; --------------------------------------------------
; --- Linkslauf Motor 3 Lichtschranke ---
; --------------------------------------------------
M3_Licht_L:
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_1
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_2
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_3
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_4
JNB P1.4, Lichtschranke_3_L
LJMP M3_Licht_L
Lichtschranke_3_L:
DJNZ R3, M1_Start_L
RET
; --------------------------------------------------
; --- Rechtslauf Motor 1 Lichtschranke ---
; --------------------------------------------------
Lichtschranke_Rechts:
M1_Licht:
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_1
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_2
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_3
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_4
JB P1.7, Lichtschranke_1
LJMP M1_Licht
Lichtschranke_1:
; --------------------------------------------------
; --- Rechtslauf Motor 2 Lichtschranke ---
; --------------------------------------------------
M2_Licht:
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_1
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_2
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_3
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_4
JB P1.5, Lichtschranke_2
LJMP M2_Licht
Lichtschranke_2:
; --------------------------------------------------
; --- Rechtslauf Motor 3 Lichtschranke ---
; --------------------------------------------------
M3_Licht:
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_1
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_2
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_3
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_4
JB P1.4, Lichtschranke_3
LJMP M3_Licht
Lichtschranke_3:
DJNZ R3, M1_Licht
LJMP M1_Licht_L
; --------------------------------------------------
;---------------------------------------------------
; --------------------------------------------------
; --- 54/74 Schritte Motor 1-4 Rechts / Links ---
; --------------------------------------------------
; --------------------------------------------------
; --- Motor 1-4 Schritte Rechts ---
; --------------------------------------------------
Rechtslauf_Test:
Weiter5:
CLR P2.0 ; Ausgang 1
CLR P2.2
CLR P2.4
CLR P2.6
DJNZ R6, Weiter1
RET
Weiter1:
LCALL Pause ; Pause
CLR P2.1
CLR P2.3
CLR P2.5
CLR P2.7
DJNZ R6, Weiter2
RET
Weiter2:
LCALL Pause ; Pause
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
SETB P2.4
SETB P2.5
SETB P2.6
SETB P2.7
DJNZ R6, Weiter3
RET
Weiter3:
LCALL Pause ; Pause
CLR P2.1
CLR P2.3
CLR P2.5
CLR P2.7
DJNZ R6, Weiter4
RET
Weiter4:
LCALL Pause ; Pause
SETB P2.1
SETB P2.3
SETB P2.5
SETB P2.7
LJMP Weiter5
;---------------------------------------------------
; --- Motor 1-4 Schritte Links ---
;---------------------------------------------------
Linkslauf_Test:
Weiter5_L:
CLR P2.0 ; Ausgang 1
CLR P2.1 ; Ausgang 2
CLR P2.2
CLR P2.3
CLR P2.4
CLR P2.5
CLR P2.6
CLR P2.7
DJNZ R6, Weiter1_L
RET
Weiter1_L:
LCALL Pause ; Pause
SETB P2.1
SETB P2.3
SETB P2.5
SETB P2.7
DJNZ R6, Weiter2_L
RET
Weiter2_L:
LCALL Pause ; Pause
SETB P2.0
SETB P2.2
SETB P2.4
SETB P2.6
CLR P2.1
CLR P2.3
CLR P2.5
CLR P2.7
DJNZ R6, Weiter3_L
RET
Weiter3_L:
LCALL Pause ; Pause
SETB P2.1
SETB P2.3
SETB P2.5
SETB P2.7
LCALL Pause
DJNZ R6, Weiter5_L
RET
Weiter4_L:
;---------------------------------------------------
;---------------------------------------------------
habe mir in den letzten tagen ein Programm gemacht mit dem es mir möglich ist schrittmotoren zu steuern und das auf signale wie lichtschranke usw reagiert.
Leider bin ich noch " sehr frisch " beim programieren und bin noch nicht so vertraut mit einigen befehlen ...
deswegen sieht mein Programm auch zimlich "verwierend" und sehr lang aus ?!
würde mich freuen wenn sich einige heir kurz gedanken über das programm machen könnetn und mir vll einige verbesserungs oder vereinfachungsvorschläge hätten.
wär euch sehr dankbar. !!
desweiteren gibt es eine möglichkeit die "Unterprogramme" in verschiedenen .asm dateien abzuspeichern das sich das Programm (ablauf) und die rutinen unterscheiden ?
sicher ist es schwer sich in solch ein programm reinzudenken wenn man nicht genau weiss was es erfüllt.
würde mich trozdem freuen wenn einige es versuchen würden! DANKE
noch ne kurze erklärung:
P1.4 -P 1.7 sind lichtschranken mit , einer seite dauer HIGH pegel
und andere seite dauer low pegel.
P2.0 - P2.7 sind ausgänge an eine endstufe ! für 3 Motoren
P2.0 + P2.1 gehören zusammen
P2.2 + P2.3 gehören zusammen ... und so weiter ;)
P3.5 Start Taste
P3.4 Test ( wird eig nicht benötigt war nur ein versuch )
P3.7 auswahl wiviel schritte ein motor machen soll.
motoren müssen von position x egal wo .. auf lichtschranke ( 0 punkt )
alle motoren gemeinsam von punkt 0 auf 54 schritte rechts / gleiche auch links möglich sowie das gleich mit 74 schritten
nach ereichen von 54 schritten warten und dann ( wenn nicht gestoppt) zurück zu 0 das 5 mal ;)
zum messen der schritgenauigkeit.
das wärs erstmal. vielen dank schonmal...
für weitere fragen einfach schreiben ...
THX
Gruß marc
Hier das Programm:
; --------------------------------------------------
; --- Prozessor Typ ---
; --------------------------------------------------
INCLUDE 89C51.mc
; --------------------------------------------------
; --- Start / Test Taste | 3.5=Start // 3.4=Test ---
; --------------------------------------------------
Programm:
Start_0:
JB P3.4, Start
Test:
LCALL Rechtslauf_Test
LJMP Test
Start:
JB P3.5, Start_0
; --------------------------------------------------
; --- Programm START Lichtschranke suchen ---
; --------------------------------------------------
LCALL M1_Licht
; --------------------------------------------------
; --- 0-Punkt erreicht ---
; --------------------------------------------------
Weiter:
MOV R5, #5d
Wieder-S:
LCALL Warten
; --------------------------------------------------
; --- 54 / 74 Schritte wählen ---
; --------------------------------------------------
JB P3.7, Schritt74
MOV R6, #54d
LJMP Schritte1
Schritt74:
MOV R6, #74d
; --------------------------------------------------
; --- Gewählte Schritte nach Rechts ---
; --------------------------------------------------
Schritte1:
LCALL Rechtslauf_Test
LCALL Warten
Stop:
JNB P3.4, STOP
LCALL M1_Licht
DJNZ R5, Wieder-S
LCALL M1_Licht
; --------------------------------------------------
; --- 0-Punkt erreicht ---
; --------------------------------------------------
Mov:
MOV R5, #5d
Wieder-S_L:
LCALL Warten
; --------------------------------------------------
; --- 54 / 74 Schritte wählen ---
; --------------------------------------------------
JB P3.7, Schritt74_L
MOV R6, #54d
LJMP Schritte1_L
Schritt74_L:
MOV R6, #74d
; --------------------------------------------------
; --- Gewählte Schritte nach Links ---
; --------------------------------------------------
Schritte1_L:
LCALL Linkslauf_Test
LCALL Warten
Stop_L:
JNB P3.4, Stop_L
LCALL M1_Licht
DJNZ R5, Wieder-S_L
LJMP Start_0
; --------------------------------------------------
; --- UNTERPROGRAMME ---
; --------------------------------------------------
; --------------------------------------------------
; --- Lichtschranke suchen Rechts / Links ---
; --------------------------------------------------
; --------------------------------------------------
; --- Linkslauf Motor 1 Lichtschranke ---
; --------------------------------------------------
Lichtschranke_Links:
M1_Licht_L:
MOV R3, #6d
M1_Start_L:
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_1
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_2
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_3
JNB P1.7, Lichtschranke_1_L
LCALL Linkslauf_M_1_4
JNB P1.7, Lichtschranke_1_L
LJMP M1_Licht_L
Lichtschranke_1_L:
; --------------------------------------------------
; --- Linkslauf Motor 2 Lichtschranke ---
; --------------------------------------------------
M2_Licht_L:
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_1
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_2
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_3
JNB P1.5, Lichtschranke_2_L
LCALL Linkslauf_M_2_4
JNB P1.5, Lichtschranke_2_L
LJMP M2_Licht_L
Lichtschranke_2_L:
; --------------------------------------------------
; --- Linkslauf Motor 3 Lichtschranke ---
; --------------------------------------------------
M3_Licht_L:
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_1
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_2
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_3
JNB P1.4, Lichtschranke_3_L
LCALL Linkslauf_M_3_4
JNB P1.4, Lichtschranke_3_L
LJMP M3_Licht_L
Lichtschranke_3_L:
DJNZ R3, M1_Start_L
RET
; --------------------------------------------------
; --- Rechtslauf Motor 1 Lichtschranke ---
; --------------------------------------------------
Lichtschranke_Rechts:
M1_Licht:
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_1
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_2
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_3
JB P1.7, Lichtschranke_1
LCALL Rechtslauf_M_1_4
JB P1.7, Lichtschranke_1
LJMP M1_Licht
Lichtschranke_1:
; --------------------------------------------------
; --- Rechtslauf Motor 2 Lichtschranke ---
; --------------------------------------------------
M2_Licht:
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_1
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_2
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_3
JB P1.5, Lichtschranke_2
LCALL Rechtslauf_M_2_4
JB P1.5, Lichtschranke_2
LJMP M2_Licht
Lichtschranke_2:
; --------------------------------------------------
; --- Rechtslauf Motor 3 Lichtschranke ---
; --------------------------------------------------
M3_Licht:
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_1
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_2
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_3
JB P1.4, Lichtschranke_3
LCALL Rechtslauf_M_3_4
JB P1.4, Lichtschranke_3
LJMP M3_Licht
Lichtschranke_3:
DJNZ R3, M1_Licht
LJMP M1_Licht_L
; --------------------------------------------------
;---------------------------------------------------
; --------------------------------------------------
; --- 54/74 Schritte Motor 1-4 Rechts / Links ---
; --------------------------------------------------
; --------------------------------------------------
; --- Motor 1-4 Schritte Rechts ---
; --------------------------------------------------
Rechtslauf_Test:
Weiter5:
CLR P2.0 ; Ausgang 1
CLR P2.2
CLR P2.4
CLR P2.6
DJNZ R6, Weiter1
RET
Weiter1:
LCALL Pause ; Pause
CLR P2.1
CLR P2.3
CLR P2.5
CLR P2.7
DJNZ R6, Weiter2
RET
Weiter2:
LCALL Pause ; Pause
SETB P2.0
SETB P2.1
SETB P2.2
SETB P2.3
SETB P2.4
SETB P2.5
SETB P2.6
SETB P2.7
DJNZ R6, Weiter3
RET
Weiter3:
LCALL Pause ; Pause
CLR P2.1
CLR P2.3
CLR P2.5
CLR P2.7
DJNZ R6, Weiter4
RET
Weiter4:
LCALL Pause ; Pause
SETB P2.1
SETB P2.3
SETB P2.5
SETB P2.7
LJMP Weiter5
;---------------------------------------------------
; --- Motor 1-4 Schritte Links ---
;---------------------------------------------------
Linkslauf_Test:
Weiter5_L:
CLR P2.0 ; Ausgang 1
CLR P2.1 ; Ausgang 2
CLR P2.2
CLR P2.3
CLR P2.4
CLR P2.5
CLR P2.6
CLR P2.7
DJNZ R6, Weiter1_L
RET
Weiter1_L:
LCALL Pause ; Pause
SETB P2.1
SETB P2.3
SETB P2.5
SETB P2.7
DJNZ R6, Weiter2_L
RET
Weiter2_L:
LCALL Pause ; Pause
SETB P2.0
SETB P2.2
SETB P2.4
SETB P2.6
CLR P2.1
CLR P2.3
CLR P2.5
CLR P2.7
DJNZ R6, Weiter3_L
RET
Weiter3_L:
LCALL Pause ; Pause
SETB P2.1
SETB P2.3
SETB P2.5
SETB P2.7
LCALL Pause
DJNZ R6, Weiter5_L
RET
Weiter4_L:
;---------------------------------------------------
;---------------------------------------------------