rem ************************************************* rem * Testprogramm des ROBOTECH 1 * rem * mit dem Ultraschallsensor * rem * Programmname: STEPPERW.ST9 * rem * Autor : J. Altenburg * rem * Datum : 26.6.97 * rem ************************************************* rem ************************************************* rem Einfügen von Proceduren mittels rem #define rem #include rem ************************************************* rem *** Definition der Procedurnamen #defproc port2init ; rem Initialisierung von Port 2 #defproc checkpin ; rem Abfrage des /CS-Ausganges #include "stepperw.hx" rem *** Variablenvereinbarung s = 100 ; rem Anzahl der Schritte t = 0 ; rem Richtung: 0=stop, 1=vor, 2=zurück rem 3=links, 4=rechts l = 13107 ; rem Schieberegister linker Motor r = 13107 ; rem Schieberegister rechter Motor o = 0 ; rem Ausgaberegister v = 2 ; rem Schrittgeschwindigkeit (v=0 -> Maximal) rem *** Initialisierungsprozeduren SetPort[3,%01] ; rem Input/Output festlegen SetPort[5,%0] ; rem Port 3 -> Ausgabe InitSCI[78,%0000] ; rem SCI 9600,8,N,1 proc port2init ; rem Port 2 initialisieren rem *** Hauptprogramm main: a = 0 print " Start des Hauptprogrammes !" print " Bitte die Taste betätigen !" gosub beep gosub taste start: s = 50 gosub vor a = checkpin if a = 0 then goto start ausweich: gosub beep s = 200 gosub zuruck s = 345 ; rem 45 Grad Drehung gosub links goto start gerade: s = 500 gosub vor goto start end rem *** Ende Hauptprogramm rem ************************************************* rem *** Unterprogramme rem *** TASTE rem Taste abfragen rem Port 3.0 - Taste (Input) taste: a=inport[3] ; rem Port einlesen, dann maskieren if (a and %01)=1 then goto taste ; rem warten bis Taste gedrückt ta0: a = inport[3] if (a and %01)=0 then goto ta0 ; rem warten bis Taste wieder frei return rem *** BEEP rem Tonsignal ausgeben, die Frequenz ist Laufzeitabhängig rem Port 3.1 - Summer (Output) beep: a=200 b=1 be1: OutPort[3,0] a=a-1 OutPort[3,2] if a>0 then goto be1 return rem *** VOR - Bewegung vorwärts vor: o = 0 ; rem Ausgaberegister löschen l = rl[l] ; rem Bitmuster verschieben r = rr[r] o = o or (l and 3); rem Bitbelegungen "aufodern" o = o or (r and 12) OutPort[5,(o and 15)] wait v s = s - 1 ; rem Schrittzahl dekrementieren if s > 0 then goto vor return rem *** ZURUCK - Bewegung rückwärts zuruck: o = 0 ; rem Ausgaberegister löschen l = rr[l] ; rem Bitmuster verschieben r = rl[r] o = o or (l and 3); rem Bitbelegungen "aufodern" o = o or (r and 12) OutPort[5,(o and 15)] wait v s = s - 1 ; rem Schrittzahl dekrementieren if s > 0 then goto zuruck return rem *** RECHTS - Drehung rechts rechts: o = 0 ; rem Ausgaberegister löschen l = rl[l] ; rem Bitmuster verschieben o = o or (l and 3); rem Bitbelegungen "aufodern" o = o or (r and 12) OutPort[5,(o and 15)] wait v s = s - 1 ; rem Schrittzahl dekrementieren if s > 0 then goto rechts return rem *** LINKS - Drehung links links: o = 0 ; rem Ausgaberegister löschen r = rr[r] ; rem Bitmuster verschieben o = o or (l and 3); rem Bitbelegungen "aufodern" o = o or (r and 12) OutPort[5,(o and 15)] wait v s = s - 1 ; rem Schrittzahl dekrementieren if s > 0 then goto links return rem *** Ende der Unterprogramme