Timer_irq solltest du net in die Do Loop Schleife schreiben.
Außerdem hast du 2 verschachtelte Do Loop Schleifen. Du brauchst nur eine.

Und wenn du willst, dass dein Programm nur innerhalb der 5 Minuten ausgeführt wird solltest du überprüfen ob Variable Led ungleich 0 ist, sprich 1.

Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600

Config Portb.0 = Output
Config Pinc.0 = Input
Config Portb.1 = Output
Config Pinc.1 = Input
Config Pinc.2 = Input

Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1

Dim I As Integer
Dim Led As Integer
Led = 0

Config Timer0 = Timer , Prescale = 1024

On Timer0 Timer_irq

Const Timervorgabe = 100

Enable Timer0
Enable Interrupts



Do


   If Portc.2 = 1 Then
   If Led = 0 Then Led = 1
   If Led = 1 Then Led = 0
   End If

   Waitms 1



   If Led = 1 Then

      If Pinc.0 = 1 Then
      Portb.0 = 1
      Portb.1 = 0
      Portb.1 = 0
      Else
      Portb.0 = 0
      Wait 3
      Portb.1 = 1
      Wait 5
      Portb.1 = 0
      Wait 3
      End If

      If Pinc.1 = 1 Then
      Portb.2 = 1
      Portb.3 = 0
      Portb.3 = 0
      Else
      Portb.2 = 0
      Wait 3
      Portb.3 = 1
      Wait 5
      Portb.3 = 0
      Wait 3
      End If

   End If

Loop



Timer_irq:
   Timer0 = Timervorgabe
   If I = 30000 Then
      Led = 0
      I = 0
   Elseif Led = 1 Then
      Incr I
   End If

Return
So dürfte es funktionieren.

MfG