Hier, aber ungetestet. Die Ports müssen angepasst werden, es fehlt der Kopf bezüglich Takt und Stack.
Evtl muss im Lichtschranken SUB jede 0 gegen eine 1 und jede 1 gegen eine 0 getauscht werden.
Code:
Dim Zeitrot as integer
Dim Zeitgruen as Integer
Dim DrehungLinks As Byte
Dim DrehungRechts As Byte
Dim Linksrechts As Byte
Links Alias Pind.3 'Eingang 1. Lichtschranke
Rechts Alias Pind.4 'Eingang 2. Lichtschranke
LEDgruen Alias Portd.5 'Ausgang grüne LED
LEDrot Alias Portd.6 ' Ausgang rote LED
ddrd =01100000
do
gosub Lichtschranke
if DrehungRechts >0 then
zeitrot = 32767
set ledrot
DrehungLinks =0
end if
if DrehungLinks >0 then
zeitgruen = 32767
set ledgruen
DrehungLinks = 0
end if
if zeitrot > -32767 then
decr zeitrot
else
reset ledrot
end if
if zeitgruen > -32767 then
decr zeitgruen
else
reset ledgruen
end if
loop
end
Lichtschranke:
If Linksrechts = 0 Then
If Links = 0 And Rechts = 1 Then
Linksrechts = 1
End If
If Rechts = 0 And Links = 1 Then
Linksrechts = 11
End If
End If
If Linksrechts = 1 And Links = 0 And Rechts = 0 Then
Linksrechts = 0
incr DrehungLinks
End If
If Linksrechts = 11 And Links = 0 And Rechts = 0 Then
Linksrechts = 0
incr DrehungRechts
End If
If Links = 1 And Rechts = 1 Then Linksrechts = 0
Return
Lesezeichen