Hallo
Ich brauche ein bischen hilfe mit mein programm es ist eine roll fenstersteuerung also fusstaster gedrückt fenster wird geöffnet , wieder fusstater gedrückt fenster wird geschlossen ,mit eine taste (teach) wird der weg das der motor fahren soll eingelernt , das fenster fährt zum endschalter stellt der eingelernter weg auf 0 , und fährt in die andere richtung bis man die teach taste los lässt , es funktioniert alles einwandfrei ,ich möchte jetzt wenn das fenster in bewegung ist und ich der fusstaster drücke das der motor stoppt , leider hab ich kein interrupt eingang mehr gibt es iergend am möglichkeit es zu machen , vielen dank in voraus ?
Code:
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 19200
Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Pinb.3 = Input
Config Pinb.4 = Input
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Portb.4 = 1

Config Pind.2 = Input
Config Pind.3 = Input
Config Pina.7 = Input
Porta.7 = 1
Portd.2 = 1
Portd.3 = 1
Config Portc = Output
Config Portd.4 = Output
Config Portd.6 = Output
Enc_a Alias Pind.2
Enc_b Alias Pind.3
Endschalter Alias Pinb.0
Fusstaster Alias Pinb.1
Eingang5 Alias Pinb.2
Eingang6 Alias Pinb.3
Eingang7 Alias Pinb.4
Taster Alias Pina.7

Ausgang1 Alias Portc.0
Ausgang2 Alias Portc.1
Ausgang3 Alias Portc.2
Ausgang4 Alias Portc.3
Ausgang5 Alias Portc.4
Ausgang6 Alias Portc.5
Ausgang7 Alias Portc.6
Ausgang8 Alias Portc.7

Reset_ Alias Portd.4
Dir_ Alias Portd.6

Config Timer0 = Timer , Prescale = 1024
Timer0 = 240
On Timer0 Isr_timer
Enable Timer0

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Config Lcdpin = Pin , Db4 = Porta.6 , Db5 = Porta.3 , Db6 = Porta.5 , Db7 = Porta.4 , E = Porta.2 , Rs = Porta.1
Config Lcd = 20 * 4
 Config Int0 = Rising
  Config Int1 = Falling
  On Int0 Encoder0
  On Int1 Encoder1
  Enable Int0
  Enable Int1                                               'Hardware Configuration
  Enable Interrupts
  Dim Bremsendefin As Long
Dim Wert As Long
Dim Weg As Long
Dim Weg_eprom As Eram Long
Dim Aufzu As Bit
Dim Besch As Byte
Dim Geschw As Word
Dim Bremsweg As Word
Dim Zuf As Bit
Dim Auf As Bit
Dim Beschlzu As Bit
Dim Beschlauf As Bit
Dim Freigabe As Bit
Dim Bremsende As Long
Dim Steigung As Byte
Dim Notaus As Bit
Dim Zaehler As Word
Dim Notaus2 As Bit
Geschw = 180
Bremsweg = 100
Steigung = 1









Weg = Weg_eprom
Zuf = 0

 Do

 Bremsende = Weg - 500
 Bremsendefin = Weg - Bremsende
 Print Fusstaster ; "    " ; Wert ; "    " ; "   " ; Besch ; "   " ; Weg
 If Taster = 0 Then
 Reset_ = 1
 Gosub Teach
 End If
 If Fusstaster = 0 Then
 Toggle Freigabe
 End If
If Fusstaster = 0 And Freigabe = 1 Or Zuf = 1 And Auf = 0 Then

Gosub Zu
End If

If Wert < Weg And Fusstaster = 0 And Freigabe = 0 Or Auf = 1 And Zuf = 0 Then

Gosub Auf

End If


Loop

Isr_timer:


Return




Zu:

Zuf = 1
Dir_ = 0
Reset_ = 1

If Besch < Geschw And Beschlzu = 0 And Endschalter = 1 Then
For Besch = 0 To Geschw Step 1
Pwm1a = Besch
Waitms 5
Next Besch
End If
If Wert < 500 Then
For Besch = Besch To 50 Step -1

Pwm1a = Besch
Waitms 5
Next Besch
Beschlzu = 1
If Endschalter = 0 Then
Reset_ = 0
Pwm1a = 0
Besch = 0


Beschlzu = 0
Zuf = 0
Waitms 300
Wert = 1
End If
End If
Return

Auf:

Auf = 1
Dir_ = 1
Reset_ = 1
If Besch < Geschw And Beschlauf = 0 Then
For Besch = 0 To Geschw Step 1
Pwm1a = Besch
Waitms 5
Next Besch
Beschlauf = 1
End If

If Wert > Bremsende Then
For Besch = Besch To 50 Step -1
Pwm1a = Besch
Waitms 5
Next Besch
If Wert >= Weg Or Notaus = 1 Then
Reset_ = 0
Pwm1a = 0
Besch = 0
Beschlauf = 0
Auf = 0

Waitms 300
Notaus = 0
End If
End If
Return


 Teach:
                                                   'unterprogram zum teachen
If Endschalter = 1 Then
Dir_ = 0
Do
Pwm1a = 150
Loop Until Endschalter = 0
Reset_ = 0
End If

If Endschalter = 0 Then
Reset_ = 1
Pwm1a = 0
Waitms 500
Wert = 0
Weg = 0
Do
Dir_ = 1
Pwm1a = 150
Loop Until Taster = 1
Pwm1a = 0
Reset_ = 0
Waitms 300
Weg_eprom = Wert
Weg = Wert
Freigabe = 0
End If
Return

 Encoder1:
  If Enc_a > Enc_b Then
  Decr Wert
  End If
  Return

  Encoder0:
  If Enc_b < Enc_a Then
  Incr Wert
  End If
  Return