Gibt es einen empfehlenswerteren Weg als lokale Variablen?
Mir fiel auch auf, dass die Locals Ihre Werte nach Ablauf der Funktion behalten und beim nächsten Aufruf immer noch zur Verfügung stehen, d.h. in meinem Fall jedes Mal wieder auf 0 gesetzt werden müssen.
Wie auch immer. Anbei nochmal mein gesamtes Programm mit der Funktion.
Kurzfassung: Das Ganze hat einen Servo an den Ports C und ein Wintek (Pollin) Display an Port B. An Port D hole ich mir Schalterzustände mit denen ich die Servoposition einstellen kann. In der ersten Display-Zeile wird der Prozentuale Wert angegeben, in der zweiten Zeile der Balken. Funktionsaufruf ist mit Prozentwert und Maximal möglicher Balkenlänge.
Code:$crystal = 8000000 $framesize = 32 ' die Größe des Frames $swstack = 320 ' die Größe des Software-stacks $hwstack = 32 ' die Größe des Hardware-Stacks Config Lcd = 20 * 4 'Anzeigemodus 40 x 4 Zeichen Config Lcdpin = Pin , E = Portb.6 , Rs = Portb.7 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E2 = Portb.5 Dim ___lcdno As Byte Config Servos = 1 , Servo1 = Portc.0 , Reload = 10 , Timer = Timer0 Config Portb = Output Config Portd = Input Dim X As Byte , Mini As Byte , Maxi As Byte , Ausgabe As Byte , Temp As Byte Dim P As Single , P2 As Integer Enable Interrupts Declare Function Balken(byval Prozent As Single , Byval Laenge As Byte) As String ___lcdno = 1 Initlcd Cls ___lcdno = 0 Initlcd Cls Cursor Off Portd = 1 Mini = 40 Maxi = 155 X = Maxi - Mini X = X / 2 X = X + Mini Do P = Maxi - Mini P = P / 100 P2 = X - mini P = P2 / P P = Round(p) If Pind.0 = 0 Then Temp = X + 2 If Temp <= Maxi Then X = X + 2 End If If Pind.1 = 0 Then Temp = X - 2 If Temp => Mini Then X = X - 2 End If If Pind.2 = 0 Then Temp = X + 10 If Temp <= Maxi Then X = Maxi End If If Pind.3 = 0 Then Temp = X - 10 If Temp => Mini Then X = Mini End If Locate 1 , 1 Lcd P Locate 2 , 1 Lcd Balken(p , 20) Servo(1) = X Loop End Function Balken(byval Prozent As Single , Byval Laenge As Byte) Local Temp1 As Single Local Temp2 As Single Local Temp3 As String * 40 Laenge = Laenge - 2 Temp1 = Prozent * Laenge Temp1 = Temp1 / 100 If Prozent <= 1 Then Temp3 = "" Else Temp3 = "#" For Temp2 = 1 To Temp1 Step 1 Temp3 = Temp3 + "#" Next Balken = Temp3 + " " End Function







Zitieren

Lesezeichen