Hallo Forum,

Ich möchte über einen Atmega8 3,686 Mhz getaktet.
Den Portd.3 alle 25ms abfragen ob dieser Port auf Masse liegt.
Dieses soll genau 10 Sekunden dauern.
Dann müsste ich ja 400 Werte bekommen, das ist nicht der Fall.
Ich bekomme mal 307,317,323,... Werte heraus nie die 400.
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


 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
Declare Sub Ledon
Declare Sub Main
Declare Sub Abfragen
Declare Sub Ende
Declare Sub Zler1

Enable Timer1
Enable Interrupts


Main:
'----------------------------------------------------------
'########   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
If Sekunden < 1 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

'------------------------------------------------------------
'#######   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
Kann mir jemand helfen welche Werte falsch sind.

mfg
Enterprise