Hi, danke für die Antwort. Die hat schon viel geholfen Habe das Programm noch nicht testen können, aber ich denke so meinst du das? Meine ISR läuft nur alle 1ms über und somit auch 500ms, 200ms in der Zählervariable.

Aber wenn ich nun z.B. das Display nur alle Sek bzw hier halbe Sekunde aktualisieren möchte, ist das doch in meinem Code falsch, dann würden die LED nicht mehr richtig blinken wg der Wartezeit oder?
Wie um gehe ich nun sowas?
Ich hatte mal gelesen, kontinuerliche LCD Routinen sind nicht vorteilhaft (wg Zykluszeit??)!

Code:
$eeprom
$eepromhex
$regfile = "m32def.dat"                                     ' Prozessortyp ATmega32
$crystal = 16000000                                         ' Taktrate
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 4800


Config Portb.2 = Output
Led1 Alias Portb.2
Config Portb.3 = Output
Led2 Alias Portb.3


Config Lcd = 20 * 2
 Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.5 , Rs = Porta.4
  Cls
  Cursor Off


Config Timer0 = Timer , Prescale = 64
On Timer0 Timer_irq
Const Timervorgabe = 6
Enable Timer0
Enable Interrupts



Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Dim W As Word
Dim Taktzaehler02 As Integer
Dim Taktzaehler05 As Integer
Dim Timer0_flag As Bit
Timer0_flag = 0


Do

W = Getadc(7)

Locate 2 , 15
Lcd W ; " "
Waitms 500      'Was ist wenn hier die Zeit nun auf 500ms stehen würde?


If Timer0_flag = 1 Then
Taktzaehler02 = Taktzaehler02 + 1
Taktzaehler05 = Taktzaehler05 + 1
Timer0_flag = 0
End If

If Taktzaehler02 = 200 Then
Toggle Led1
Taktzaehler02 = 0
End If

If Taktzaehler05 = 500 Then
Toggle Led2
Taktzaehler05 = 0
End If


Loop

Timer_irq:
  Timer0 = Timervorgabe

  Timer0_flag = 1

Return
End