AVR Embedded Tutorial - Int to digits/de

From Free Pascal wiki
Revision as of 21:08, 3 December 2017 by Mathias (talk | contribs) (Created page with "{{Translate}} =Ausgabe auf Digits (7 Segmentanzeige)= ===Deklaration der Variablen=== <syntaxhighlight lang="pascal"> var Digit : array[0..3] of byte; // Werte der einzel...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Template:Translate

Ausgabe auf Digits (7 Segmentanzeige)

Deklaration der Variablen

var
  Digit  : array[0..3] of byte; // Werte der einzelnen Digits
  MyValue: Integer;             // Einen Integer der Ausgegeben werden soll.

Auf dem PC

Auf dem PC würde man die einzelnen Digits so berechnen.

  Digit[0] := MyValue div 1000;
  Digit[1] := MyValue div 100 mod 10;
  Digit[2] := MyValue div 10 mod 10;
  Digit[3] := MyValue mod 10;

Auf dem AVR

Da aber der ATmega keine Division kann und der ATtiny nicht mal Multiplikationen kennt, muss man dies folgendermassen berechnen.

  procedure IntToDigit(val: UInt16);
  var
    achr: byte;
    leer: boolean;
  begin

    // Tausender
    achr := 0;
    leer := True;
    while (val >= 1000) do begin
      Dec(val, 1000);
      Inc(achr);
      leer := False;
    end;
    if leer then begin
      achr := 16;
    end;
    Digit[0] := achr;

    // Hunderter
    achr := 0;
    while (val >= 100) do begin
      Dec(val, 100);
      Inc(achr);
      leer := False;
    end;
    if leer then begin
      achr := 16;
    end;
    Digit[1] := achr;

    // Zehner
    achr := 0;
    while (val >= 10) do begin
      Dec(val, 10);
      Inc(achr);
      leer := False;
    end;
    if leer then begin
      achr := 16;
    end;
    Digit[2] := achr;

    // Einer
    achr := 0;
    while (val >= 1) do begin
      Dec(val);
      Inc(achr);
    end;
    Digit[3] := achr;
  end;

Aufruf

IntToDigit(MyValue);

Ausgabe

Wie man die Digits auf dem AVR angeschlossenen 7-Segmentanzeigen ausgesiebt, siehe hier:

  • Multiplex - Multiplex anhand einer 4-fach Siebensegmentanzeige.


Siehe auch