Hallo.
So, ich hab jetzt das programm nochmal komplett anders aufgebaut (ohne GOTOs) und es funktioniert auch. Jetzt wollt ich wissen, ob das vom "Stiel" her so OK ist. Wär nett, wenn einer von euch das mal kurz überfliegen könnte.
mfg MarkusCode:$regfile = "2313def.dat" $crystal = 3686400 $baud = 9600 Dim Zaehler As Byte Ddrd.2 = 1 'motor rechts vorwärts Ddrd.3 = 1 'motor rechts rückwärts Ddrd.4 = 1 'motor links vorwärts Ddrd.5 = 1 'motor links rückwärts Ddrb.6 = 1 'enable rechts Ddrb.7 = 1 'enable links Ddrb.0 = 0 'taster links vorne Ddrb.1 = 0 'taster mitte vorne Ddrb.2 = 0 'taster rechts vorne Portb.0 = 1 Portb.1 = 1 Portb.2 = 1 Mrechtsvor Alias Portd.2 Mrechtsrueck Alias Portd.3 Mlinksvor Alias Portd.4 Mlinksrueck Alias Portd.5 Enablerechts Alias Portb.6 Enablelinks Alias Portb.7 Schalterlinks Alias Pinb.0 Schaltermitte Alias Pinb.1 Schalterrechts Alias Pinb.2 Config Timer0 = Timer , Prescale = 1024 Enable Timer0 Start Timer0 Enable Interrupts On Timer0 Ontimer Enablelinks = 1 Enablerechts = 1 Do If Schalterlinks = 1 And Schaltermitte = 1 And Schalterrechts = 1 Then Print "g" Gosub Gerade End If If Schalterlinks = 0 Then Print "L" Zaehler = 0 Gosub Links End If If Schaltermitte = 0 Then Print "M" Zaehler = 0 Gosub Mitte End If If Schalterrechts = 0 Then Print "R" Zaehler = 0 Gosub Rechts End If Loop Gerade: Mlinksvor = 0 Mlinksrueck = 0 Mrechtsvor = 0 Mrechtsrueck = 0 Waitms 100 Do Mlinksvor = 1 Mlinksrueck = 0 Mrechtsvor = 1 Mrechtsrueck = 0 If Schalterlinks = 0 Or Schaltermitte = 0 Or Schalterrechts = 0 Then Return End If Loop Links: Mlinksvor = 0 Mlinksrueck = 0 Mrechtsvor = 0 Mrechtsrueck = 0 Waitms 100 Do If Schaltermitte = 0 Or Schalterrechts = 0 Then Return End If If Zaehler <= 33 Then Mlinksvor = 0 Mlinksrueck = 1 Mrechtsvor = 0 Mrechtsrueck = 1 Else Mlinksvor = 1 Mlinksrueck = 0 Mrechtsvor = 0 Mrechtsrueck = 1 End If If Zaehler = 70 Then Return End If Loop Mitte: Mlinksvor = 0 Mlinksrueck = 0 Mrechtsvor = 0 Mrechtsrueck = 0 Waitms 100 Do If Schalterlinks = 0 Or Schalterrechts = 0 Then Return End If If Zaehler <= 33 Then Mlinksvor = 0 Mlinksrueck = 1 Mrechtsvor = 0 Mrechtsrueck = 1 Else Mlinksvor = 1 Mlinksrueck = 0 Mrechtsvor = 0 Mrechtsrueck = 1 End If If Zaehler = 90 Then Return End If Loop Rechts: Mlinksvor = 0 Mlinksrueck = 0 Mrechtsvor = 0 Mrechtsrueck = 0 Waitms 100 Do If Schalterlinks = 0 Or Schaltermitte = 0 Then Return End If If Zaehler <= 33 Then Mlinksvor = 0 Mlinksrueck = 1 Mrechtsvor = 0 Mrechtsrueck = 1 Else Mlinksvor = 0 Mlinksrueck = 1 Mrechtsvor = 1 Mrechtsrueck = 0 End If If Zaehler = 70 Then Return End If Loop Ontimer: Incr Zaehler Return
Edit: Achja, ich hab jetzt keine Relais mehr, sondern nen L293D, deswegen sind die pinbelegungen jetzt etwas anders.







Zitieren

Lesezeichen