hallo rolf,
danke für deine antwort!
allerdings funktioniert das so nicht
ich habe hier mal meinen code, vielleicht kannst du dir das ja mal ansehen?!?!
währe nett von dir!
das gilt natürlich für alle
im prinzip möchte ich ja nur, dass der code in case 3 bis zu einem tastendruck (der dafür sorgt, dass das prog zu einem anderem case springt) ausgeführt wird und dann soll der andere case-code laufen.Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 10 $framesize = 40 Declare Function Tastenabfrage() As Byte Declare Sub Batteriespannung() Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Lcdbus = 4 Config Adc = Single , Prescaler = Auto Config Pina.7 = Input Porta.7 = 1 Config Timer1 = Timer , Prescale = 1024 Enable Timer1 Enable Interrupts Timer1 = 49910 On Timer1 Isr_von_timer1 Config Timer0 = Counter , Edge = Falling Enable Timer0 Timer0 = 255 On Timer0 Isr_von_timer0 Dim A As Integer Dim Taste As Byte Dim Volt As Single Dim Secu As Single Dim Minu As Single Dim Hour As Single Dim X As Single Dim Tasten_flag As Byte Dim F As Single Dim T As Single Dim Freq As Single Dim N As Long Const Ref = 5 / 1023 A = 1 X = 1 Secu = 00 Minu = 00 Hour = 00 T = 0 Tasten_flag = 0 F = 0 Cls Locate 1 , 4 Lcd "Daten-Terminal " Locate 2 , 1 Lcd "Zeit = " Locate 2 , 8 Lcd Hour ; Minu ; Secu Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Tasten_flag = 0 Call Batteriespannung Case 2 Tasten_flag = 0 Writeeeprom Secu , 1 Writeeeprom Minu , 10 Writeeeprom Volt , 20 Case 3 For N = 1 To 100000000 Freq = F / T Cls Locate 1 , 1 Lcd "Sekunden = " ; T Locate 2 , 1 Lcd "Signale = " ; F Locate 3 , 1 Lcd "==> Frequenz = " Locate 4 , 1 Lcd Freq ; If Taste <> 3 Then Tasten_flag = 1 Exit For End If If Tasten_flag = 1 Then Exit For End If Wait 1 Next N Case 4 Tasten_flag = 0 If Secu = 60 Then Secu = 00 Minu = Minu + 1 Elseif Minu = 60 Then Minu = 00 Hour = Hour + 1 End If Cls Locate 2 , 1 Lcd "Zeit = " Locate 2 , 8 Lcd Hour ; Minu ; Secu ; Waitms 10 Case 5 Tasten_flag = 0 Readeeprom Secu , 1 Readeeprom Volt , 20 Cls Locate 1 , 4 Lcd " Daten-Terminal " Locate 2 , 1 Lcd Secu ; " Sekunden " Locate 3 , 1 Lcd Minu ; " Minuten " Locate 4 , 1 Lcd Volt ; " Volt " End Select End If Loop Isr_von_timer1: Timer1 = 49910 Incr Secu Incr T Return Isr_von_timer0: Timer0 = 255 Incr F Return Function Tastenabfrage() As Byte Local Ws As Word Tastenabfrage = 0 Start Adc Ws = Getadc(7) If Ws < 500 Then Select Case Ws Case 400 To 450 Tastenabfrage = 1 Case 330 To 380 Tastenabfrage = 2 Case 260 To 305 Tastenabfrage = 3 Case 180 To 220 Tastenabfrage = 4 Case 90 To 130 Tastenabfrage = 5 End Select End If End Function Sub Batteriespannung() Local W As Word Start Adc W = Getadc(6) Volt = W * Ref Volt = Volt * 5.2941 Cls Locate 1 , 1 Lcd "Die aktuelle " Locate 2 , 1 Lcd "Spannung betraegt: " Locate 3 , 1 Lcd Volt ; " Volt " Waitms 100 End Sub
gruß
chris







Zitieren

Lesezeichen