Ich komm grad echt nicht weiter...
Hab hier mal den kompletten Quellcode. Ich hoffe, mir kann da jemand helfen...
Code:
' KOMFORTBLINKERMODUL
' V0.2 - René Brixel - 02.06.2008
'
'
' PB1 Ausgang Relais (High-Active)
' PB2 Ausgang Relais (High-Active)
'
' PD2 Eingang Blinkerhebel (Low-Activ)(INT0)
' PD3 Eingang Blinkerhebel (Low-Activ)(INT1)
' PD7 TimeSet (Low-Activ)
'---------- uC-Konfig ----------
$regfile = "m8def.dat" 'ATMega8
$crystal = 1000000 'Quarz: 1 MHz
'---------- Port-Konfig ----------
Ddrb = &B11111111 'Port B als Ausgang
Portb = &B00000000 'Port C komplett auf 0 setzen
Ddrd = &B00000000 'Port D als Eingang
Portd = &B11111111 'PullUp´s aktivieren
'---------- Interrupts ----------
Config Int0 = Low Level 'Konfiguriere Int0 auf Low Level
Config Int1 = Low Level 'Konfiguriere Int1 auf Low Level
Enable Interrupts 'Interrupts generell einschalten
Enable Int0 'Interrupt 1 einschalten
Enable Int1 'Interrupt 2 einschalten
On Int0 Blinkenl 'Subroutine Blinken Links
On Int1 Blinkenr 'Subroutine Blinken Rechts
'---------- Alias-Konfig ----------
Relaisl Alias Portb.1 'Relais Links; 1 = Aktiv
Relaisr Alias Portb.2 'Relais Rechts; 1 = Aktiv
Blinkerl Alias Pind.2 'Blinker Links; 0 = gedrückt
Blinkerr Alias Pind.3 'Blinker Rechts; 0 = gedrückt
Timeset Alias Pind.7 'Time Set; 0 = Aktiv (Jumper - gebrückt)
'---------- Variablen-Konfig ----------
Dim Hebelgedrueckt As Integer 'Schleifenvariable für blinken
Dim Gemessenezeit As Integer 'Selbsterklärend...
Dim I As Integer 'Zähler-Variable
Dim Richtung As Integer 'Welche Richtung wurde gedrückt? 1 = Links, 2 = Rechts
Richtung = 0
Gemessenezeit = 3000 'Testweiße 3 Sekunden
Gemessenezeit = Gemessenezeit / 100 'Für For-Schleife durch 100 teilen
'---------- Main ----------
Do
If Richtung = 1 Then 'Richtung Links
Relaisl = 1 'Relais Links einschalten
Hebelgedrueckt = 1 'Hebelgedrueckt zurücksetzen
For I = 1 To Gemessenezeit
Waitms 100
Next I
Do
If Blinkerl = 0 Then 'Wenn Blinker Links gedrückt...
nop
Else 'Wenn nicht, Relais Links ausschalten
Relaisl = 0 'Relais ausschalten
Hebelgedrueckt = 0
End If
Loop Until Hebelgedrueckt = 0 'Schleife solange, wie Hebelgedrueckt = 1
Richtung = 0
End If
If Richtung = 2 Then 'Richtung Rechts
Relaisr = 1 'Relais Rechts einschalten
Hebelgedrueckt = 1 'Hebelgedrueckt zurücksetzen
For I = 1 To Gemessenezeit
Waitms 100
Next I
Do
If Blinkerr = 0 Then 'Wenn Blinker Rechts gedrückt...
Nop
Else 'Wenn nicht, Relais Rechts ausschalten
Relaisr = 0 'Relais ausschalten
Hebelgedrueckt = 0
End If
Loop Until Hebelgedrueckt = 0 'Schleife solange, wie Hebelgedrueckt = 1
Richtung = 0
End If
Loop
End
'---------- Blinken Links ----------
Blinkenl:
Richtung = 1
Return
'---------- Blinken Rechts ----------
Blinkenr:
Richtung = 2
Return
Lesezeichen