
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
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 |