Was meinst du mit

so ganz hab ich das leider noch nicht kapiert, wann ein befehl gelesen wird und wann er ausgeführt wird.
Prinzipiell werden alle Befehle nacheinander ausgeführt, Schritt für Schritt
wie sie im Programm stehen, es sein denn es gibt immer ein "Aber" es kommt ein Interrupt dazwischen. Dann wird nämlich Dein Programmablauf an der Stelle unterbrochen und die ISR, die Interrupt Service Routine, ausgeführt, es sein denn ... und da gibts dann wieder ein Aber, zumindest beim AVR, der Controller ist schon am Abarbeiten einer anderen ISR
Du hast eine Abfrage " = 20" drinnen für den Sekundenzähler, doch was passiert, wenn der Zähler 20 erreicht, aber in der Mainloop noch nicht wieder an der Abfragestelle ankommt und die ISR nochmal ausgelöst wird? ... er zählt auf 21 weiter und die Bedingung wird nicht ausgeführt, erst wieder wenn der Zähler die 255 überlaufen hat und wieder bei 0 anfängt zu zählen.

Probiers mal so:

Code:
$regfile = "attiny26.dat"
$crystal = 1000000

$hwstack = 32     ' default use 32 for the hardware stack
$swstack = 10      ' default use 10 for the SW stack
$framesize = 20

Ddrb = &B00011100                                           'Bit 0, 1 auf Eingang
Portb = &B00000011

Config Timer0 = Timer , Prescale = 1024   'Timer0 als timer definieren, teiler 1024                  '
On Timer0 Marke
Timer0 = 230n

Enable Timer0
Enable Interrupts

Const Preset = 5                                            'zählt von 1 bis 255



Dim Sekbyte As Byte
Dim Minbyte As Byte
Sekbyte = 0
Minbyte = 9

Do

If Sekbyte < 5 Then
 Portb.4 = 1
 Else
 Portb.4 = 0
End If

If Sekbyte > 19 Then
Decr Minbyte
Sekbyte = Sekbyte - 20
End If

If Minbyte = 0 Then
Minbyte = 9
End If

If Minbyte = 9 Then
Portb.3 = 1
Else
Portb.3 = 0
End If

Loop


Marke:
Timer0 = 230
If Pinb.0 = 0 Then
Incr Sekbyte
End If

Return
End