Ich habe nun mal ein Code, der funktioniert. Aber selbst persönlich finde ich die Lösung nicht so gut. Vll habt ihr ja andere bessere Ideen:
z.B man viel nun nicht 0,5sek sondern auf 0,2sec Ein/AUS... Dann müsste man mit meinm Prog alles wieder anpassen.
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 Taktzaehler As Integer Dim 05takt As Bit Dim 10takt As Bit Dim 20takt As Bit Dim Merker1 As Bit Dim Merker2 As Bit Do W = Getadc(7) Locate 2 , 15 Lcd W ; " " Waitms 200 If W >= 400 Then Merker1 = 1 Else Merker1 = 0 End If If W <= 400 Then Merker2 = 1 Else Merker2 = 0 End If Loop Timer_irq: Timer0 = Timervorgabe If Taktzaehler >= 4000 Then Taktzaehler = 0 End If Taktzaehler = Taktzaehler + 1 If Taktzaehler >= 0 And Taktzaehler <= 500 Then 05takt = 1 10takt = 1 End If If Taktzaehler >= 500 And Taktzaehler <= 1000 Then 05takt = 0 10takt = 1 End If If Taktzaehler >= 1000 And Taktzaehler <= 1500 Then 05takt = 1 10takt = 0 End If If Taktzaehler >= 1500 And Taktzaehler <= 2000 Then 05takt = 0 10takt = 0 End If If 05takt = 1 And Merker1 = 1 Then Led2 = 0 Else Led2 = 1 End If If 10takt = 1 And Merker2 = 1 Then Led1 = 0 Else Led1 = 1 End If Return End







Zitieren

Lesezeichen