- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Ausgabe eines Bytes auf ein LCD dauert länger als die Ausgabe eines Strings?

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638

    Ausgabe eines Bytes auf ein LCD dauert länger als die Ausgabe eines Strings?

    Anzeige

    Praxistest und DIY Projekte
    Hallo!


    Ich sitze hier vor folgender, seltsam anmutenden Beobachtung:
    Laut Simulator benötigen folgende Ausgaben auf ein HD44780-LCD diese Zeit:
    Lcd Bytevar; ":" (eine Byte-Variable und ein Doppelpunkt): 3,467 ms
    Lcd Stringvar; "C" (ein String*5 und das Zeichen "C"): 0,190 ms

    Controller: AtMega8 @ 1 Mhz internal RC-Clock

    Hängt dies damit zusammen, dass die Byte-Variable zerlegt und einzelne ASCII-Zeichen daraus gewonnen werden müssen?
    Grüße
    Thomas

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Thomas E. Beitrag anzeigen
    Hängt dies damit zusammen, dass die Byte-Variable zerlegt und einzelne ASCII-Zeichen daraus gewonnen werden müssen?
    Jo!

    PS Warum muss man denn min. 10 Zeichen als Antwort eingeben?

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Hallo for_ro!


    Danke für deine Antwort. Nach weiteren Versuchen bin ich dann auch selber darauf gekommen, als ich eine String-Variable anlegte und die Byte-Variable per "STR" in die String-Variable konvertierte, welche ich dann ausgegeben habe. Laut Simulator dauert dieser Vorgang fast exakt so lange wie die direkte Ausgabe einer Byte-Variable.

    Also werde ich wohl damit leben müssen.
    Grüße
    Thomas

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Thomas E. Beitrag anzeigen
    Also werde ich wohl damit leben müssen.
    Nicht unbedingt.
    Die Str() Funktion ist halt für allgemeine Konvertierungen gemacht. Geht es nur um Bytes, könntest du die
    $LIB "MCSBYTE.LIB"
    in dein Programm einbinden. Dann wird die Konvertierung wesentlich schneller durchgeführt.
    Allerdings ist dann jede Konvertierung nach Strings auf Byte eingeschränkt. Kommt darauf an, was du sonst noch in deinem Programm machst.
    Falls das nicht geht, kannst du dir natürlich auch leicht eine eigene Byte-spezifische Str() Funktion machen.
    Ohne Anspruch auf das Optimum nur zum Darstellen der Idee z.B. so:
    Code:
    function my_str(byval b as byte) as string
       local s as string*3
       if b>199 then
          s="2"
          b=b-200
       elseif b>99 then
          s="1"
          b=b-100
       else           'falls führende Nullen ausgegeben werden sollen
          s="0"       'ansonsten rausnehmen
       endif
       while b>9      b =b-10
          incr c
       wend
       b=b+48
       if s <> "" then
          c=c+48
          s=s+chr(c)+chr(b)
       else
          s=chr(b)
       endif
       my_str=s
    end function
    Geändert von for_ro (20.03.2012 um 23:26 Uhr)

Ähnliche Themen

  1. Ausgabe eines Textes auf TV
    Von Trabukh im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 369
    Letzter Beitrag: 24.11.2010, 12:48
  2. Ungewöhnliche Ausgabe eines Arrays
    Von Hikh'var im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 27.11.2008, 12:25
  3. Flashen des Atmega16 dauert eine minute oder länger. Normal?
    Von Bammel im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 19.03.2007, 18:13
  4. Ausgabe am Port eines PSOC µC!!
    Von nister im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 21.12.2005, 10:24
  5. TV-Ausgabe eines Bildes?
    Von millioneer im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 06.12.2004, 17:25

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen