Letztendlich sollte das doch auch so gehen mit der Wartezeit für das LCD ohne die main loop aufzuhalten ?
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 Taktzaehler1000 As Integer
Do
If Timer0_flag = 1 Then
Taktzaehler02 = Taktzaehler02 + 1
Taktzaehler05 = Taktzaehler05 + 1
Taktzaehler1000 = Taktzaehler1000 + 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
If Taktzaehler1000 = 1000 Then
W = Getadc(7)
Locate 2 , 15
Lcd W ; " "
Taktzaehler1000 = 0
End If
Loop
Timer_irq:
Timer0 = Timervorgabe
Timer0_flag = 1
Return
End
Lesezeichen