Hallo
Ich habe jetzt versucht es mit der Methode mit String umzusetzen doch ich habe ein paar Probleme damit.
Und zwar muss ich die Variable Ergebnis als Double deklarieren damit keine Fehler angezeigt werden.
Zudem zeigt mir Bascom an dass 29% Speicher benutzt werden. Das heißt ich kann das Ganze nicht mehr kompilieren weil ich nur die Demo habe.
Wenn ich den Befehl Lcd Ergebnis weglasse nimmt das Programm nur 20% in Anspruch.
Ich war mir bei der Deklaration von Rechnung auch nicht ganz sicher ob das stimmt.
Hier der Quellcode
Code:$regfile = "M16def.dat" ' use the Mega16 $crystal = 1000000 Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5 Config Lcd = 16 * 2 Initlcd Config Pinb.0 = Input 'Zahl 0 Config Pinb.1 = Input 'Zahl 1 Config Pinb.2 = Input 'Zahl 2 Config Pinb.3 = Input 'Zahl 3 Config Pinb.4 = Input 'Zahl 4 Config Pind.0 = Input 'Zahl 5 Config Pind.1 = Input 'Zahl 6 Config Pind.2 = Input 'Zahl 7 Config Pind.3 = Input 'Zahl 8 Config Pind.4 = Input 'Zahl 9 Config Pind.5 = Input 'Plus Config Pind.7 = Input 'Minus Config Pina.6 = Input 'Mal Config Pina.7 = Input 'Geteilt Config Pinc.7 = Input 'DELETE Config Pinc.6 = Input 'AC Config Pinc.5 = Input '= Config Pinc.4 = Input 'Komma Config Pinc.3 = Input 'Shift Config Pinc.2 = Input 'x Hoch y Config Pinc.0 = Output ' Beleuchtung Portb.0 = 1 'Zahl 0 Portb.1 = 1 'Zahl 1 Portb.2 = 1 'Zahl 2 Portb.3 = 1 'Zahl 3 Portb.4 = 1 'Zahl 4 Portd.0 = 1 'Zahl 5 Portd.1 = 1 'Zahl 6 Portd.2 = 1 'Zahl 7 Portd.3 = 1 'Zahl 8 Portd.4 = 1 'Zahl 9 Portd.5 = 1 'Plus Portd.7 = 1 'Minus Porta.6 = 1 'Mal Porta.7 = 1 'Geteilt Portc.7 = 1 'Beleuchtung Portc.6 = 1 'AC Portc.5 = 1 '= Portc.4 = 1 'Komma Portc.3 = 1 'Shift Portc.2 = 1 'x Hoch y Dim Positionzeile As Integer Dim Positionspalte As Integer Dim Stelle As Integer Dim Ergebnis As Double Dim X As Integer Positionzeile = 1 Positionspalte = 1 Dim Rechnung$ As String * 15 Rechnung$ = String(15 , 65) Do If Positionspalte > 16 Then Positionzeile = 2 Waitms 50 End If If Positionzeile > 2 Then Positionzeile = 1 Waitms 50 End If If Pinb.0 = 0 Then Cursor Off Locate Positionzeile , Positionspalte ' Zahl 0 schreiben Lcd "0" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "0" Waitms 300 End If If Pinb.1 = 0 Then 'Zahl 1 schreiben Cursor Off Locate Positionzeile , Positionspalte Lcd "1" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "1" Waitms 300 End If If Pinb.2 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "2" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "2" Waitms 300 End If If Pinb.3 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "3" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "3" Waitms 300 End If If Pinb.4 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "4" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "4" Waitms 300 End If If Pind.0 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "5" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "5" Waitms 300 End If If Pind.1 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "6" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "6" Waitms 300 End If If Pind.2 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "7" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "7" Waitms 300 End If If Pind.3 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "8" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "8" Waitms 300 End If If Pind.4 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "9" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "9" Waitms 300 End If If Pind.5 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "+" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "+" Waitms 300 End If If Pind.7 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "-" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "-" Waitms 300 End If If Pina.6 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "x" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "x" Waitms 300 End If If Pina.7 = 0 Then Cursor Off Locate Positionzeile , Positionspalte Lcd "/" Positionspalte = Positionspalte + 1 Rechnung$ = Rechnung$ + "/" Waitms 300 End If If Pinc.6 = 0 Then Cls Cursor Off Positionspalte = 1 Positionzeile = 1 Waitms 300 End If If Pinc.7 = 0 Then Portc.0 = 1 Wait 7 Portc.0 = 0 Wait 4 End If If Pinc.5 = 0 Then Rechnung$ = Rechnung$ + "=" Waitms 300 Lcd Ergebnis End If For Stelle = 1 To Len(rechnung$) If Mid(rechnung$ , Stelle , 1) = "+" Then Ergebnis = Val(mid(rechnung$ , 1 , Stelle)) + Val(mid(rechnung$ , Stelle + 1 , Len(rechnung$))) End If Next Stelle Loop
Kann man den Code noch irgendwie ändern dass ich wenigstens die vier Grundrechenarten in Bascom schaffe zu flashen ?
Mfg
David







Zitieren

Lesezeichen