Hallo,

Habe versucht deine Aussage um zu setzen.
Habe warscheinlich etwas nicht richtig verstanden.
Das Hauptprogramm fängt erst bei Ledon: an.
Die Definition P3 habe ich jetzt nur einmal.
Habe eine FOR Next Schleife eingebaut das war glaube ich nicht richtig.
Den Zusammenhang vom Interupt ins Programmspringen habe ich noch nicht richtig verstanden wo ?
Kannst du mir vielleicht zeigen wo ich die Änderungen machen soll.


Code:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600                                                'Baudrate der UART: 9600 Baud

'Config Timer1 = Timer , Prescale = 64
'On Timer1 Timer_irq
'Const Timervorgabe = 7936                                   ' Const 7936

Config Timer1 = Timer , Prescale = 8
On Timer1 Timer_irq
Const Timervorgabe = 54016 

 Ddrd = &B00000000
 Ddrc = &B11111111
Portd = &B11111111


Dim Sekunden As Byte
Dim P3 As Byte
Dim P4 As Byte
Dim A As Byte
Dim T0 As Long
Dim T1 As Long
Dim E1 As Long
Dim Durchl40 As Long
Declare Sub Durchlauf10s
Declare Sub Ledon
Declare Sub Main
Declare Sub Abfragen
Declare Sub Ende
Declare Sub Zler1

Enable Timer1
Enable Interrupts


Main:

P3 = Pind.3

'----------------------------------------------------------
'########   einschalten Portd.2  ####################
'----------------------------------------------------------
Do
  Debounce Pind.2 , 0 , Abfragen , Sub                      'Entprellt
Loop


'----------------------------------------------------------
'########   Abfrage des Portd.3  ###################
'----------------------------------------------------------
Abfragen:

Portc.3 = 1                                                 

A = 0

Do

Zler1:

Waitms 25

'P3 = Pind.3

If P3 = 0 Then
    Portc.1 = 1                                             'Led An
'    Portc.2 = 1                                             ' Summer an Portc.2 an
    A = A + 1
    Print " A " ; A
  If A = 8 Then
     Goto Ledon
  End If
      Goto Zler1
    Else
    Portc.1 = 0                                             'Led Aus
'    Portc.2 = 0                                             ' Summer an Portc.2 aus
    A = 0
End If


Loop

'----------------------------------------------------------
'############ Led und Summer  #############################
'----------------------------------------------------------

Ledon:

T0 = 0
T1 = 0

Print "S"                                                   'Senden ein S über RS232
Sekunden = 0                                                ' Sek auf 0 stellen dass die 10 S

'Do
For I = 1 to 40

If Sekunden < 10 Then
   Portc.0 = 1                                              'Led zeigt 10 Sek.an
'   Print "  " ; Sekunden                                   ' Kontrolle der Skunden
    Else
    Portc.0 = 0                                             'Led wird aus geschaltet
'    Sekunden = 0                                            'Sekunden werden auf 0 gestzt
   Goto Ende
End If

'Print Pind.4 ; "  "                                        ' Kontrolle des Portsd.4
P4 = Pind.3
  If P4 = 1 Then
'     Print "0"                                              'Senden ein 0 über RS232
     Portc.1 = 0                                            ' Led aus Portc.1
     Portc.2 = 0                                            ' Summer an Portc.2 aus
     T0 = T0 + 1
     Print "0" ; " " ; T0
   Else
'   Print "1"                                                'Senden ein 1 über RS232
     Portc.1 = 1                                            ' Led ein Portc.1
     Portc.2 = 1                                            ' Summer an Portc.2 ein
     T1 = T1 + 1
     Print "1" ; " " ; T1
       End If

'Waitms 25                                                   ' Abfrage alle 25 ms
'Loop

Next I

'------------------------------------------------------------
'#######   Ende  ###############
'------------------------------------------------------------

Ende:

E1 = T0 + T1
Print "E"                                                   'Senden ein E über RS232
Print "  "
Print "  "
Print "   Treffer = " ; T1
Print " N.Treffer = " ; T0
Print "  "
Print "   Gesammt = " ; E1
Print "  "
Print "   Sekunde = " ; Sekunden
Print "  "
Print "  "

T0 = 0
T1 = 0
Sekunden = 0

Portc.1 = 0                                                 ' Led an Portc.1 aus
Portc.2 = 0                                                 ' Summer aus Portc.2
Portc.3 = 0                                                 ' Laser einschalten

Goto Main

'-------------------------------------------------------------
'##########   Timer Skundenbasis #############################
'-------------------------------------------------------------

Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
Return

End
mfg
Enterprise