
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Christian, zunächst erst mal danke für Deine Mühe. ich konnte mit dem Progrämmchen noch nichts anfangen der hat mir immer andere Werte gebracht. Ich wußte auch nicht so recht wo ich ihn einsetzen sollte. Gruß Manfred. > Hallo Manfred, > > hier ein kleines Programm, dass Zahlen zwischen -9999 und 9999 formatiert als -999,9 bis 999,9 ausgibt. > > Beispielausgaben: > temp = 348, ausgabe " 34,8" > temp = 1348, ausgabe " 134,8" > temp = -38, ausgabe "- 3,8" > temp = -1234, ausgabe "-123,4" > > Das Programm lässt sich über die Konstanten LAENGE und POSKOMMA leicht an andere Zahlenbereich anpassen. > > Für Werte zwischen -32768 und 32767 muss LAENGE auf 10000 gesetzt werden (-999 bis 999 LAENGE auf 100, -99 bis 99 LAENGE auf 10). Mit POSKOMMA wird die Stelle definiert, an der das Komma erscheinen soll. Hierfür gilt z.B.: > > LAENGE = 1000, POSKOMMA = 1 -> 1,000 > LAENGE = 1000, POSKOMMA = 2 -> 10,00 > LAENGE = 1000, POSKOMMA = 3 -> 100,0 > LAENGE = 1000, POSKOMMA = 4 -> 1000, > > LAENGE = 10000, POSKOMMA = 4 -> 1000,0 > LAENGE = 10000, POSKOMMA = 3 -> 100,00 > > Entsprechend LAENGE muss noch die Laufweite der Schleife angepasst werden. Bei 1000 von 1 bis 4, bei 10000 von 1 bis 5, etc. Gegenüber dem Originalcode lässt sich diese Version hier leichter an eigene Bedürfnisse anpassen und ist flexibler. > > Grüße, > Christian > > DEFINE LEERZ &H20 > DEFINE KOMMA &H2C > DEFINE MINUS &H2D > DEFINE LAENGE 1000 > DEFINE POSKOMMA 3 > > DEFINE lcd_param BYTE > DEFINE i BYTE > DEFINE t WORD > DEFINE temp WORD > DEFINE b BYTE > > temp = -349 ' hier muss die Zahl rein, die ausgegeben werden soll > > b = 0 > t = LAENGE > lcd_param = LEERZ > IF temp<0 THEN lcd_param = MINUS > GOSUB LCD_WRITECHAR > for i=1 to 4 > lcd_param = abs(temp) / t > temp = abs(temp) mod t > t = t / 10 > IF lcd_param <> 0 THEN b = 1 > IF (b=0) THEN lcd_param = LEERZ > GOSUB LCD_WRITECHAR > lcd_param = KOMMA > IF i=POSKOMMA THEN GOSUB LCD_WRITECHAR > next i > > end > > #LCD_WRITECHAR > if lcd_param = MINUS then print "-"; > if lcd_param = LEERZ then print " "; > if lcd_param = KOMMA then print ","; > if lcd_param <> MINUS AND lcd_param <> LEERZ and lcd_param <> KOMMA then print lcd_param; > RETURN > > > > > > > > > Wer kann mir da helfen ! > > Das unten stehende Programm ist aus der E-A-M 6/98 s.66 > > Leider zeigt es nur ganze °C an und keine zehntel Grade. > > Bis zum kommer arbeitet das PRG. einwandfrei. > > Gruß Manfred Härtig > > > > WZT = Eingang1 -64 > > temp = WZT > > gosub writetemp 'dieses Unterprogramm ist ein absolutes Muß. > > pause 80 > > > > > > output = abs(temp) > > > > if temp < 0 then lcd_param = MINUS else lcd_param = LEERZ ' Minuszeichen oder Leerzeichen ausgeben > > gosub LCD_WRITECHAR > > > > ' 1.000-Dezimalstelle oder Leerzeichen E-A-M 6/98 s.66 > > if abs(temp) >= 1000 then lcd_param = NULL + output/1000 else lcd_param = LEERZ > > gosub LCD_WRITECHAR > > output = output mod 1000 > > ' Hunderter-Dezimalstelle oder Leerzeichen > > if abs(temp) >= 100 then lcd_param = NULL + output/100 else lcd_param = LEERZ > > gosub LCD_WRITECHAR > > output = output mod 100 > > ' Zehner-Dezimalstelle oder Leerzeichen E-A-M 6/98 s.66 > > if abs(temp) >= 10 then lcd_param = NULL + output/10 else lcd_param = LEERZ > > gosub LCD_WRITECHAR > > output = output mod 10 > > gosub LCD_WRITECHAR > > lcd_param = &H2c 'Kommer setzen > > gosub LCD_WRITECHAR > > > |
| Antwort schreiben |