Hi,

wenn ich folgendes Programm brenne, dann läuft das Programm nicht.

Code:
'### Controller Definition ###
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 4800
$hwstack = 32
$swstack = 8
$framesize = 24

'### Dim Variablen ###
Dim Ein As Bit                                              ' Startvariable
Dim I As Byte
Dim B As Byte                                               'Nachfolgende Dims sind für Temperatur
Dim W As Word
Dim Dg As Integer
Dim Min1 As Integer
Dim Min2 As Integer
Dim Max1 As Integer
Dim Max2 As Integer
Dim Dsid1(8) As Byte
Dim Sc(9) As Byte
Dim Temp_$ As String * 6
Dim Temp_$2 As String * 10
Dim Tempsend As String * 10
Dim Temp1mal As Bit
Dim Ttlwert As Bit                                          ' TTL Variable 1 Bit
Dim Zaehlerirq0 As Long
Dim Impulseprosekunde As Long                               ' Variable für Drehzahl
Dim Zeitwert As Long
Dim Drehzahl As Long
Dim Drehzahlanzeige As Long
Dim Drehzahlsend As String * 3
Dim Drehzahlformat As String * 4
Dim Drehzahlformat1 As String * 4
Dim Backlight As Byte
Dim Zeitmessung As Word                                     ' Ab hier Variablen für abstand
Dim Entfernung As Word
Dim Text As String * 10
Dim Entfernungneu As Word
Dim Entfernungsend As String * 3

'### Declare Subs ###
Declare Sub Init
Declare Sub Convallt
Declare Sub Tempmodul
Declare Function Decigrades(byval Sc(9) As Byte ) As Integer
Declare Sub Fullstand

'### Grafikroutine ###
$lib "glcdks108.lib"
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Ce = 1 , Ce2 = 0 , Cd = 2 , Rd = 3 , Reset = 4 , Enable = 5
Cls

'### Portkonfiguration ###
Config Portb.0 = Output
Config Pinb.2 = Input
Config Portb.3 = Input
Config Portb.4 = Output
Ledpower Alias Portb.0
Resetbutton Alias Pinb.3
Lcdpower Alias Portb.4
Config 1wire = Portd.6

Ledpower = 1
'Ocr2 = 255


'### Interrupts ###
Config Int2 = Falling
Config Int0 = Change
Config Int1 = Rising
Enable Interrupts
Enable Int2
On Int2 Powerbutton
'Enable Int0
On Int0 Ttl
'Enable Int1
On Int1 Irq0

'### Timer ###
Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Timer , Prescale = 256
Config Timer2 = Pwm , Compare Pwm = Clear Up , Pwm = On , Prescale = 8

On Timer1 Timer_irq
Const Timervorgabe = 3036

'### Boot ###
Ein = 0
Temp1mal = 0
Zeitwert = 0
Drehzahl = 0
Drehzahlanzeige = 0
Zaehlerirq0 = 0
Impulseprosekunde = 0



'Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                         ' Display ausschalten

'### Start ###
Starting:
If Ein = 1 Then Goto Systemstart
Goto Starting

'### Main ###
Main:
Debounce Resetbutton , 0 , Resetmachen , Sub
If Ein = 0 Then Goto Systemend
Wait 1
Call Tempmodul
Wait 1
Call Fullstand
Goto Main

'### Powerbutton Int2 ###
Powerbutton:
Toggle Ledpower

Return

'### Include Dateien ###
$include "system.bas"
$include "kay.font"

Lcdmain:
$bgf "lcdmain.bgf"

Lcdsplash:
$bgf "splash.bgf"

Lcdreset:
$bgf "reset.bgf"

Ende:
$bgf "end.bgf"
hier die dazugehörige System.bas :

Code:
'### Systemstart ###
Systemstart:

   Ledpower = 1
   Waitms 500
   Ledpower = 0
   Waitms 500
   Ledpower = 1
   Waitms 500
   Ledpower = 0
   Waitms 500
   Ledpower = 1
   Waitms 500
   Ledpower = 0
   Waitms 500
   Ledpower = 1

   Drehzahlanzeige = 0
   Lcdpower = 1
   Portd.7 = 1


   Waitms 100
   Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2                      ' Display einschalten
   Cls
   Showpic 0 , 0 , Lcdsplash
   For Backlight = 0 To 255
      Ocr2 = Backlight
      Waitms 25
   Next Backlight
   Showpic 0 , 0 , Lcdmain
   Setfont Kay
   Lcdat 2 , 11 , "'C"
   Lcdat 2 , 41 , "mm"
   Lcdat 2 , 72 , "Upm"
   Lcdat 2 , 102 , "0/1"

   'Lcdat 3 , 38 , "100"
   Lcdat 3 , 73 , "  0"
   'Lcdat 3 , 106 , "1"

   Enable Timer1


   Enable Int0
   Enable Int1

   Dsid1(1) = 1wsearchfirst()

   If Pind.2 = 1 Then
      Lcdat 3 , 106 , "1"
      Ttlwert = 1
   Else
   If Pind.2 = 0 Then
      Lcdat 3 , 106 , "0"
      Ttlwert = 0
   End If
   End If

   Goto Main

'### Systemend ###
Systemend:

   Disable Int0
   Disable Int1
   Disable Timer1


   Ein = 0
   Temp1mal = 0
   Zeitwert = 0
   Drehzahl = 0
   Drehzahlanzeige = 0
   Zaehlerirq0 = 0
   Impulseprosekunde = 0


   Ledpower = 0
   Waitms 500
   Ledpower = 1
   Waitms 500
   Ledpower = 0
   Waitms 500
   Ledpower = 1
   Waitms 500
   Ledpower = 0
   Waitms 500
   Ledpower = 1
   Waitms 500
   Ledpower = 0

   Showpic 0 , 0 , Ende

   For Backlight = 255 To 0 Step -1
      Ocr2 = Backlight
      Waitms 15
   Next Backlight
   Cls
   Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2                      ' Display ausschalten
   Waitms 100
   Lcdpower = 0
   Portd.7 = 0

Goto 0

'--- Temperaturmodul --
Sub Tempmodul

Call Convallt                                               ' "Convert ALL T on the 1w-bus"
  Waitus 200 : Waitus 200 : Waitus 200 : Waitus 200         'if you use 2-wire, could be reduced to 200us

  1wverify Dsid1(1)                                         'Issues the "Match ROM "
  'Locate 1 , 1
  'If Err = 1 Then
  '  Lcdat 3 , 4 , "Err     "                                'Err = 1 if something is wrong
  'Elseif Err = 0 Then                                       'lcd " Sensor found"
    1wwrite &HBE
    Sc(1) = 1wread(9)                                       'read bytes into array
    If Sc(9) = Crc8(sc(1) , 8) Then
       Dg = Decigrades(sc(9))

         Temp_$ = Str(dg)
         Temp_$ = Format(temp_$ , "+#0.0")
         Tempsend = Str(dg)
         Tempsend = Format(tempsend , "+#00.0")
         Temp_$2 = Temp_$ + " "

         If Temp1mal = 0 Then
         Lcdat 3 , 4 , "Check"
         Temp1mal = 1
         Else
         If Temp1mal = 1 Then
         Lcdat 3 , 4 , Temp_$2
         End If
         End If

  End If


  Waitms 500

End Sub

'--- Temperatur konvertieren ---
Sub Convallt
   1wreset                                                  ' reset the bus
   1wwrite &HCC                                             ' skip rom
   1wwrite &H44                                             ' Convert T

End Sub

'--- Funktion zum auslesen des Temperatursensors ---
Function Decigrades(byval Sc(9) As Byte)
Dim Tmp As Byte , T As Integer , T1 As Integer

   Tmp = Sc(1) And 1                                        ' 0.1C precision
      If Tmp = 1 Then Decr Sc(1)
      T = Makeint(sc(1) , Sc(2))
      'Print Hex(t)
      'Print T

      T = T * 50                                            'here we calculate the 1/10 precision like
      T = T - 25                                            'DS18S20 data sheet
      T1 = Sc(8) - Sc(7)
      T1 = T1 * 100
      T1 = T1 / Sc(8)
      T = T + T1
      Decigrades = T / 10


End Function

'--- TTL abfragen ---
Ttl:

   If Pind.2 = 1 Then
      Lcdat 3 , 106 , "1"
      Ttlwert = 1
   Else
   If Pind.2 = 0 Then
      Lcdat 3 , 106 , "0"
      Ttlwert = 0
   End If
   End If

Return

'--- Irq für drehzahlsensor ---
Irq0:
Incr Zaehlerirq0
Incr Drehzahl
Return

'--- Timer irq für Drehzahlsensor ---
Timer_irq:
Timer1 = Timervorgabe
Impulseprosekunde = Zaehlerirq0
Zaehlerirq0 = 0
Incr Zeitwert


   Drehzahlformat = Str(drehzahlanzeige)
   Drehzahlsend = Format(drehzahlformat , "000")


   'Lcdat 3 , 38 , Zeitwert

   If Zeitwert = 10 Then Print Tempsend ; ";" ; Entfernungsend ; ";" ; Drehzahlsend ; ";" ; Ttlwert
   If Zeitwert = 20 Then Print Tempsend ; ";" ; Entfernungsend ; ";" ; Drehzahlsend ; ";" ; Ttlwert
   If Zeitwert = 30 Then Print Tempsend ; ";" ; Entfernungsend ; ";" ; Drehzahlsend ; ";" ; Ttlwert
   If Zeitwert = 40 Then Print Tempsend ; ";" ; Entfernungsend ; ";" ; Drehzahlsend ; ";" ; Ttlwert
   If Zeitwert = 50 Then Print Tempsend ; ";" ; Entfernungsend ; ";" ; Drehzahlsend ; ";" ; Ttlwert

   If Zeitwert = 60 Then

   Drehzahlanzeige = Drehzahl
   Drehzahlformat = Str(drehzahlanzeige)
   Drehzahlsend = Format(drehzahlformat , "000")

   Print Tempsend ; ";" ; Entfernungsend ; ";" ; Drehzahlsend ; ";" ; Ttlwert



  If Drehzahlanzeige < 9 Then
     Drehzahlformat = "  " + Drehzahlformat
    Lcdat 3 , 73 , Drehzahlformat
  End If

  If Drehzahlanzeige > 9 And Drehzahlanzeige < 99 Then
     Drehzahlformat = " " + Drehzahlformat
   Lcdat 3 , 73 , Drehzahlformat
  End If

  If Drehzahlanzeige > 99 Then
     Lcdat 3 , 73 , Drehzahlformat
  End If

  'Lcdat 3 , 72 , Drehzahlformat


   Zeitwert = 0
   Drehzahl = 0

End If
Return

'--- Resetmachen ---
Resetmachen:
Disable Timer1
Disable Int0
Disable Int1

Cls
Showpic 0 , 0 , Lcdreset
Setfont Kay
Wait 1
Lcdat 4 , 15 , "TemperatUr"
Waitms 500
Lcdat 4 , 80 , "OK"
Wait 1
Lcdat 5 , 15 , "Fullstand"
Waitms 500
Lcdat 5 , 80 , "OK"
Wait 1
Lcdat 6 , 15 , "Drehzahl"
Waitms 500
Lcdat 6 , 80 , "OK"
Wait 1
Lcdat 7 , 15 , "TTL"
Waitms 500
Lcdat 7 , 80 , "OK"
Wait 2

Zeitwert = 0
Drehzahl = 0
Drehzahlanzeige = 0
Zaehlerirq0 = 0
Impulseprosekunde = 0


Cls
Showpic 0 , 0 , Lcdmain

Lcdat 2 , 11 , "'C"
   Lcdat 2 , 41 , "mm"
   Lcdat 2 , 72 , "Upm"
   Lcdat 2 , 102 , "0/1"
   Lcdat 3 , 73 , "  0"
   'Lcdat 3 , 37 , "0"

If Pind.2 = 1 Then
      Lcdat 3 , 106 , "1"
      Ttlwert = 1
   Else
   If Pind.2 = 0 Then
      Lcdat 3 , 106 , "0"
      Ttlwert = 0
   End If
   End If
Enable Timer1
Enable Int0
Enable Int1


Return

'--- Sub für Füllstand ---
Sub Fullstand

Portd.5 = 0
Pulseout Portd , 5 , 40
Pulsein Zeitmessung , Pind , 5 , 1
Zeitmessung = Zeitmessung * 10
Entfernung = Zeitmessung / 5.8
Entfernungneu = 181 - Entfernung

If Entfernungneu > 3000 Then
   Entfernungneu = 0
End If

Text = Str(entfernungneu)
Entfernungsend = Format(text , "000")

If Entfernungneu < 9 Then
   Text = "  " + Text
   Lcdat 3 , 37 , Text
End If

If Entfernungneu > 9 And Entfernungneu < 99 Then
   Text = " " + Text + " "
   Lcdat 3 , 37 , Text
End If

If Entfernungneu > 99 Then
   Lcdat 3 , 37 , Text
End If


End Sub
Brenne ich aber ein kleines Programm, wie z.B. das hier dann läuft das kleine programm.

Code:
'### Controller Definition ###
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 4800
$hwstack = 32
$swstack = 10
$framesize = 40

Config Int2 = Falling
On Int2 Blinken
Enable Int2
Enable Interrupts

'--- Ports ---
Config Portb.0 = Output


Do
nop
Loop


Blinken:
Toggle Portb.0
Return
Im großen Programm warte ich, bis Int2 auf 0 geht und dann kommt der Systemstart. Vor 2 Wochen hat noch alles geklappt und nun garnichts mehr. Ich bin am verzweifeln.

Sitze daran schon mehr als 6 Stunden und find den Fehler nicht. Wo liegt denn mein Fehler ? Wäre nett, wenn mir jemand helfen könnte. Danke

mfg Kay