also ... wenn ich mir die hilfe von Bascom zum thema debounce so ansehe, komme ich zu dem schluss, dass das so nicht gehen kann, wie du es eingegeben hast. ich denke du musst ein label setzten statt der sub-prozedur.

Code:
$regfile = "m8def.dat" 
$crystal = 3686400                                          'Quarz: 3,6864 MHz 

Ddrc = &B00000000 
Ddrd = &B00000001                                           'Int0 als Eingang konfiguriert - Programmiertaste 
Portc = &B00001111 
Portd.4 = 1                                                 'Pull-Up von Int0 an 
Portd.3 = 1                                                 'Pull-Up von PD3 an 

Config Scl = Portc.5                                        'SCL-Port auf Port C.5 
Config Sda = Portc.4                                        'SDA-Port auf Port C.4 


Config Lcd = 40 * 4                                         'Anzeigemodus 40 x 4 Zeichen 
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , E = Portb.1 , E2 = Portb.2 , Rs = Portb.3 


Declare Sub Temperaturen                                    'Sub für Programmierung in zweiter Ebene 
Declare Sub Schaltzeiten                                    'Sub für Programmierung in zweiter Ebene 
Declare Sub Prog_auswahl                                    'Sub für Programmier-Auswahl 
Declare Sub Wert_hoch                                       'Sub Temperatur hochzählen 
Declare Sub Wert_runter                                     'Sub Temperatur runterzählen 
Declare Sub Speichern                                       'Werte speichern 
Declare Sub Pfeil_rechts                                    'Auswahl für Programmiermodus Pfeil nach rechts 
Declare Sub Pfeil_links                                     'Auswahl für Programmiermodus Pfeil nach links 
Declare Sub Programm 


Dim ___lcdno As Bit                                         'Umschaltbyte für Anzeige 0=Chip 1; 1=Chip 2 
Dim W_adr_1 As Byte                                         'Schreibadresse vom PCF8574(1) 
Dim R_adr_1 As Byte                                         'Leseadresse vom PCF8574(1) 
Dim Dat_1 As Byte                                           'Datenwerte vom PCF8574(1) 
Dim W_adr_2 As Byte                                         'Schreibadresse vom PCF8574(2) 
Dim R_adr_2 As Byte                                         'Leseadresse vom PCF8574(2) 
Dim W_adr_3 As Byte                                         'Schreibadresse vom PCF8591(1) 
Dim R_adr_3 As Byte                                         'Leseadresse vom PCF8591(1) 
Dim T_boiler As Byte                                        'Temperatur vom Boiler 
Dim T_puffer As Byte                                        'Temperatur vom Puffer 


'******************** LCD initialisieren 
___lcdno = 0                                                'auf Chip 1 schalten 
Initlcd                                                     'die beiden oberen Zeilen initialisieren 
Cls 
Locate 1 , 1 
Lcd "Ausen Vorlauf Boiler Puffer"                           'Beschriftung der ersten Zeile 
Cursor Off 





Do 

   ___lcdno = 0                                             'auf Chip 1 schalten 
   Locate 2 , 1 
      Lcd "Test Test Test" 

   Debounce Pind.4 , 0 , Programm , Sub 

Loop 

end  ;  ----->>>>>   hier ein end

Programm :  ; <--------------------------- hier das label

Portd.0 = Not Portd.0 

   ___lcdno = 0                                                'auf Chip 1 schalten 
Initlcd                                                     'die beiden oberen Zeilen initialisieren 
Cls 
Locate 1 , 1 
Lcd "Programm"                                              'Beschriftung der ersten Zeile 
Waitms 200 

return ;<----------------------   hier das return

so ist es zumindest in der help beschrieben