Hi, danke für die Antwort. Die hat schon viel geholfenHabe 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







Zitieren

Lesezeichen