Ich fasse das mal zusammen:
-Do...Loop mit Hauptprogramm
-LCD-ISR z.b. über Timer&Bit setzen
(Programm nicht getestet, sollte aber funktionieren)
Code:
$regfile = "m8def.dat"
$crystal = 8000000
Config Portb.0 = Output
Dim Anzeige as Bit
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 36736 'ca 2x / sec
Enable Timer1
Enable Interrupts
On Timer1 Timer_ISR
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portd.5 , Rs = Portd.4
Config Lcdbus = 4
Cursor Off
Cls
Do
Toggle Portb.0
if Anzeige = 1 then
Anzeige = 0
goto LCD_ISR
End if
Loop
LCD_ISR:
Locate 1 , 1 : Lcd "1,22929"
Return
Timer_ISR:
Timer1 = 36736
Anzeige = 1
Return
Das LCD aktualisiert 2 mal pro Sekunde - das sollte eigendlich ausreichen...
Wenn du das Signal an deinem Ausgang (Portb.0) mit einem Oszi ansiehst wirst du sehen, dass immer wenn das LCD aktualisiert wird der Ausgang etwas "hängt" das lässt sich nur ändern, wenn du den Ausgang selber über einen Timer laufen lässt(ich weiß ja nicht wie zeitkritisch dein Programm wird).
Tobias
Lesezeichen