Ach sooo, so funktioniert das. Sorry ich mußte erst einmal ausprobieren wie das geht. Ich hoffe so ist es o.k.

Code:
'Tasten Aufwärts und Abwärts

$regfile = "89s8252.dat"
Config Lcd = 20 * 4
$lcd = &H8000
$lcdrs = &H8002
'$Sim
Cls Lcd
Cursor Off Noblink




Dim A As Integer                                              'Variable A = Arbeitszeit
Dim E As Byte                                                 'Variable zum ein und ausschalten Hindergrundbeleuchtung, LED Anzeige und Relai
Dim D As Byte                                                 'Varible D wird P1 für LED's
Dim N As Integer                                              'Varible N = Counter
Dim P As Integer                                              'Varible P = Pausenzeit
Dim Ba As Integer                                             'Variable für Basis PWM
Declare Sub Auf(a As Integer)
Declare Sub Aufb(a As Integer)
Config Watchdog = 2048

E = 255
P3 = E
D = 255
P1 = D
A = 0



If Ba > 0 And A > 0 Then Goto Ausgabe

While 1 = 1
   While P1.4 = 0                                             '
         Call Aufb()
         Cls Lcd
         Locate 1 , 1
         Lcd "Basiszeit"
         Locate 1 , 12
         Lcd Ba
   Wend

   While P1.5 = 0                                             '
         Call Abb()
         Cls Lcd
         Locate 1 , 1
         Lcd "Basiszeit"
         Locate 1 , 12
         Lcd Ba
   Wend

   While P1.0 = 0                                             '
         Call Auf()
         Cls Lcd
         Locate 1 , 1
         Lcd "Arbeitszeit"
         Locate 1 , 13
         Lcd A

   Wend

   While P1.1 = 0                                             '
         Call Ab()
         Cls Lcd
         Locate 1 , 1
         Lcd "Arbeitszeit"
         Locate 1 , 13
         Lcd A
   Wend
      If P1.2 = 0 Then Gosub Ausgabe                          'Nach Eingabe der Zeiten springe zu Ausgabe
Wend



Ausgabe:
   For N = A Downto 1
         'Start Watchdog
      P3.0 = 0                                                'Einschalten der Anzeige LED
      P3.2 = 0                                                'Einschalten des Relais
         Stop Watchdog
      Wait 1                                                  'Warte eine Sekunde
         Start Watchdog
      Cls Lcd
      Locate 1 , 1
      Lcd "Sollarbeit"   'Also genau hier bleibt das Programm stehen. Der Text Sollarbeit wird noch angezeigt 
      Delay
      Locate 1 , 13
      Lcd A
      Locate 3 , 1
      Lcd "Arbeit"
      Locate 3 , 11
         'Reset Watchdog
      Lcd N
         If P1.3 = 0 Then Goto Abbruch                        ' Ist Taste an P1.3 gedrückt wird die Ausgabe abgebrochen

   Next N

      P = Ba - A                                              'Hier wird die Pausenzeit aus Basisizeit und Arbeitszeit gebildet

   For N = P Downto 1
         'Start Watchdog
      P3.0 = 1                                                'Ausschalten der Anzeige LED
      P3.2 = 1                                                'Ausschalten des Relais
         Stop Watchdog
      Wait 1
      Cls Lcd
      Locate 1 , 1
      Lcd "Sollpause"
      Locate 1 , 13
      Lcd P
      Locate 3 , 1
      Lcd "Pause"
      Locate 3 , 11
      Lcd N
         If P1.3 = 0 Then Goto Abbruch
   Next N
         If A <> 0 Then Gosub Ausgabe                         'Endlosschleife für Ausgabe zum verlassen muß die Taste P1.3 gedrückt werden                        '

Return


Sub Aufb()
'If Ba = 600 Then Goto Fertigb
'If Ba > A Then Goto Fertigb
   Incr Ba                                                    'Aufwärtszählen der Basiszeit
   Waitms 500
   P3.1 = 0
   Fertigb:
End Sub

Sub Abb()
'If A = 0 Then Goto Endeb
   Decr Ba                                                    'Abwärtszählen der Basiszeit
   Waitms 500
Endeb:
End Sub


Sub Auf()
'If A > Ba Then Goto Fertig
   Incr A                                                     'Aufwärtszählen der Arbeitszeit
   Waitms 500
Fertig:
End Sub

Sub Ab()
If A = 0 Then Goto Ende                                       'Abbruchbedingung dass bis 0 und nicht bis minus abwärts gezählt wird
   Decr A                                                     'Abwärtszählen der Arbeitszeit
   Waitms 500
Ende:
End Sub


Abbruch:
Do
   Cls Lcd
   Locate 1 , 1
   Lcd "Abbruch"
   Wait 1
   Cls Lcd
   P3.0 = 1
   P3.1 = 1
   P3.2 = 1
Loop Until P1.4 = 0
Return
Vieleicht kannst Du mir auch etwas feedback geben, ob ich mit dem programmieren auf der richtigen Spur bin. Das ist mein erstes Projekt in Bascom.
Gruß, Harald
Was ich noch vergessen habe, nicht stören an den auskommentierten Stellen, die sind noch zum testen. Auch den Watchdog habe ich normalerweise nicht aktiviert.