Danke,
da steht zwar nichts von den Nachkommastellen aber dafür weiß ich nun wieviele Stellen die Variable hat.

Wie ich auf die Kommastellen gekommen bin:
Der Wert auf der Anzeige wird "falsch" angezeigt - zumindest wenn ich das mit Excel vergleiche: hab das nachgerechnet weil Excel einen glatten Wert errechnet hat (1111). Aber die Abweichung ist in Wirklichkeit MINIMAL! Excel sagt als Ergebnis 1111,0 und der µC hat 1110,99991. Anscheinend rechnet der µC "nur" mit 7nachkommastellen... Mal sehen, wenn der µC zu langsam wird rechne ich alles *1000 oder so um das Komma weg zubekommen (und weniger Leistung zu verschwenden)

Tobias

PS. hier noch mal der Komplette funktionierende Code falls jemand Interesse hat

Code:
'7 Segmentanzeige im multiplexbetrieb mit Analogeingang
' für die Anzeige wird ein kompletter Port (0-7 = 7Seg+DP) benötigt
' für Anzeigen mit gemeinsamer Anode
'
' Anschlüsse:
'                          7 Segmente = PB 0 - PB 7 (PB0=DP)
'                          4 Anzeigen = PC 4 - PC 1 (4 Anzeigen)
'                          5 Anzeigen = PC 5 - PC 1 (5 Anzeigen) PC5 = Einerstelle ganz rechts!!!!
'
'
'-------------------------------------------------------------------------------

$regfile = "m8def.dat"                                      'AT-Mega8
$crystal = 8000000                                          'Quarz: 8 MHz
'-------------------------------------------------------------------------------
'Konfiguration Ein- / Ausgänge
Ddrb = &B11111111                                           '1 Ausgang, 0 Eingang => Pin PB7-0 als Ausgang
Ddrc = &B1111110                                            '1 Ausgang, 0 Eingang => Pin PC6-1 als Ausgang; 0 als Eingang
Ddrd = &B11110001                                           '1 Ausgang, 0 Eingang => Pin PD7-4,0 als Ausgang; 1-3 als Eingang

'-------------------------------------------------------------------------------
'Konfiguration LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portc.6
Cursor Off Noblink
'-------------------------------------------------------------------------------
'Konfiguration ADC
Config Adc = Single , Prescaler = Auto , Reference = Avcc

'-------------------------------------------------------------------------------
'Konfiguration Timer0
Config Timer0 = Timer , Prescale = 1024
On Timer0 Timer0_isr
Const Timervorgabe0 = 245                                   '230                                   '312 mal / Sekunde!!!
Enable Timer0
Enable Interrupts


'-------------------------------------------------------------------------------
'Konfiguration Timer1
Config Timer1 = Timer , Prescale = 256
On Timer1 Timer1_isr
Const Timervorgabe1 = 55118                                 '3 mal / Sekunde!!!
Enable Timer1
Enable Interrupts


'-------------------------------------------------------------------------------
'Variablen Anzeige:
Dim Anfangswert As Long                                     'Anfangswert vom Benutzer
Dim Endwert As Long                                         'Endwert vom Benutzer
Dim Differenz As Long                                       'Endwert - Anfangswert
Dim Zergebnis_1 As Single                                   'Zwischenergebnis 1
Dim Zergebnis_2 As Single                                   'Zwischenergebnis 2
Dim Zergebnis_3 As Single                                   'Zwischenergebnis 2

Dim Wert As Long                                            ' (-2147483648 bis 2147483647)
Dim Wert_pos As Long                                        'gewandelter wert
Dim Negativ As Bit                                          'Merker = 1 wnn Wert negativ!

' variablen für die display routine
Dim Wertstr As String * 5
Dim Y As Byte
Dim Tempbyte As Byte
' Variable für Digitansteuerung
Dim Digit As Byte
'Anzeige im Ganzen
Dim Fivedigitdisplay As String * 5


'führende Nullen entfernen
Dim Digit_aus As Bit                                        'Merker =0 wenn Stelle =0



'ADC
Dim Analog_in0 As Word                                      'Word                                      '=0-1023 vom Analogeingang
Dim Pro1 As Integer
Dim Pro2 As Single
Dim Pro3 As Integer
Dim Proz_anzeige As Byte


'Variablen LCD
Dim Ani_1 As Integer                                        'Zähler für Startannimation LCD
Dim Ende As Word                                            'zum Animation beenden


'Variablen Taster
Dim S1 As Bit                                               'Schalter 1
Dim S2 As Bit                                               'Schalter 2
Dim S2_m As Bit
Dim S3 As Bit                                               'Schalter 3
Dim S3_m As Bit                                             'Schalter 3 MERKER
Dim Taste_s1 As Word

'Programmverteilung über Timer0
Dim Zeit As Word                                            'wird 312 mal / Sekunde mit 1 addiert


'Variablen zum testen......
Dim Test2 As Integer                                        'zum hochzählen zum testen
Dim Test As Integer


'-------------------------------------------------------------------------------
'Annimation LCD


Goto Sprung

Do
Cls


  For Ani_1 = 16 To 1 Step -1                               'Von 1 bis 16 wird gezählt
  Locate 1 , Ani_1                                          'Die entsprechende Position im Display anwählen.
  Lcd "> TOBIAS BLOME <"
  Waitms 250
  Next

  Locate 2 , 1
  Lcd "BI - EMR 10/2008"
  Waitms 500
  Locate 2 , 1
  Lcd "                "
  Waitms 500
  Locate 2 , 1
  Lcd "BI - EMR 10/2008"
  Waitms 500
  Locate 2 , 1
  Lcd "                "
  Waitms 500
  Locate 2 , 1
  Lcd "BI - EMR 10/2008"
  Wait 3



Loop Until Ende => 1

Sprung:
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Setzen:

Digit_aus = 0

'alle Segmente aus
Portb = 0
Digit = 0

'Benutzerangaben:
Anfangswert = -987                                          'Anfangswert vom Benutzer
Endwert = 1111                                              'Endwert vom Benutzer



Start Adc



Do





'---Programm aufteilen---
If Zeit => 150 Then                                         'also eine halbe Sekunde
Zeit = 0                                                    'Zeit zurücksetzen
End If







'---ENDE Programmaufteilung---




Loop


'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Sprungmarken
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------


'-------------------------------------------------------------------------------
Timer0_isr:                                                 'Timer1-Interruptroutine  (312 x pro Sekunde)
'-------------------------------------------------------------------------------
  Timer0 = Timervorgabe0

  Gosub 7seganzeige                                         'Routine für 7 Segmentanzeige

  Incr Zeit                                                 'Zeitgeber


  If S1 = 0 Then                                            'soll nur hochgezählt werden, wenn Taste links gedrückt
  Incr Taste_s1                                             'wenn taste lange gedrückt soll etwas passieren (LCD "e" wechsel)
  Else
  Taste_s1 = 0
  End If

  Return

'-------------------------------------------------------------------------------
Timer1_isr:                                                 'Timer1-Interruptroutine  (3 x pro Sekunde)
'-------------------------------------------------------------------------------
  Timer1 = Timervorgabe1

  Gosub Analog                                              'gosub springt zurück!





  Return

'-------------------------------------------------------------------------------
Analog:
'Analogeingänge Auslesen:
'-------------------------------------------------------------------------------

Analog_in0 = Getadc(0)                                      'Analog in Variable schreiben

  'Analogwert umrechnen: FORMEL = Anfangswert+(Analogeingang*((Endwert-Anfangswert)/1023))



  Differenz = Endwert - Anfangswert
  Zergebnis_1 = Differenz / 1023
  Zergebnis_2 = Analog_in0 * Zergebnis_1
  Zergebnis_3 = Anfangswert + Zergebnis_2
  Wert = Zergebnis_3 * 10                                   'damit bei einer Kommastelle auch eine RICHTIGE Kommastelle ist!





  If Wert < 0 Then                                          'wenn wert negativ
  Wert_pos = Wert * -1
  Negativ = 1
  Else
  Wert_pos = Wert
  Negativ = 0
  End If

Return


'-------------------------------------------------------------------------------
7seganzeige:
' Code 7 Segmentanzeige:
'-------------------------------------------------------------------------------



   'Formatiere das Display
   Wertstr = Str(wert_pos)
   Fivedigitdisplay = Format(wertstr , "   00")             'Nullen geben die Anzahl der Stellen an, damit die Stellen richtig gesetzt werden


   ' jeder Lauf durch die Hauptschleife zeigt ein anderes Digit
   Incr Digit

   Portb = 0                                                'Ghosting vermeiden
    If Digit = 5 Then                                       'mache das , bis 5 erreicht ist
   Digit = 0

   End If

   ' addiere 1 zum Digitcounter, weil MID 1-basiert ist
   Y = Digit + 1
   ' und hol das Digit, das wir brauchen
   Wertstr = Mid(fivedigitdisplay , Y , 1)


   'Anzeige auswählen
   Tempbyte = 2 ^ Digit                                     'Tempbyte = 1,2,4,8,16

   'Digitansteuerung auf portC: PC1-5
    Portc = Tempbyte * 2                                    'Umdreh   = 2,4,8,16,32




'Führende Nullen entfernen:




 'Dieser Teil erledigt die Wandlung in 7 Segment Code

 'Für Anzeigen mit gemeinsamer Anode
  Select Case Wertstr

           Case "0" : Portb = 126                           'NULL
           Case "1" : Portb = 12                            'EINS
           Case "2" : Portb = 182                           'ZWEI
           Case "3" : Portb = 158                           'DREI
           Case "4" : Portb = 204                           'VIER
           Case "5" : Portb = 218                           'FÜNF
           Case "6" : Portb = 250                           'SECHS
           Case "7" : Portb = 14                            'SIEBEN
           Case "8" : Portb = 254                           'ACHT
           Case "9" : Portb = 222                           'NEUN
           Case " " : Portb = 0                             'nichts - kein Segment
          'Case Else : Portb = 128                           'mittleres Segment
           Case Else : Portb = 226                          '"F"
  End Select





  'Komma setzen
  'If Portc = 2 Then Portb.0 = 1                             '4 Kommastellen
  'If Portc = 4 Then Portb.0 = 1                             '3 Kommastellen
  'If Portc = 8 Then Portb.0 = 1                             '2 Kommastellen
  If Portc = 16 Then Portb.0 = 1                            '1 Kommastelle


  'negatives Vorzeichen setzen / Minus
  If Portc = 2 Then                                         'wenn Pin gem. Anode ganz linke Stelle gesetzt
  If Wert < 0 Then                                          'wenn Wert kleiner 0
  Portb = 128                                               'Binär 1000 0000 -> Dezimal = 128 (nur Segment G)
  End If
  End If