AVR Embedded Tutorial - Int to digits/de
From Free Pascal wiki
Jump to navigationJump to search
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
- Übersichtseite AVR Embedded Tutorial/de