Hallo zusammen,
ich bin zwar neu bei AVRCO, programmiere aber schon einige Jahre in Pascal/Delphi...
Neuerdings mache ich was mit Microcontrollern (XMega u.s.),
Dabei habe ich eine Problem:
Ich möchte Taster einlesen( 8 * 128 ) und
möchte Leds (8 * 128) über Schieberegister ein- und ausschalten.
Die Ein- und Ausgabe funktionieren schön. Dabei verwende ich Port A in ganzer Breite zum einlesen
der Taster und Port B zum ansteuern der LED.
An jedem Ausgang der Ports hängen dann bis zu 16 Schieberegister (LS595 bzw LS165).
Das ergibt zusammen also etwa ziemlich genau 1024 bit.
Damit ich mit den Daten (Taster) geschickter hantieren kann,
muss ich zu Beginn meiner Manipulationen etwas umsortieren.
Da fangen mit AVRCO die Probleme an. (oder ich nicht weiß wie es geht)
Ich finde keine elegante Möglichkeit der bitweisen Bearbeitung der Tasten/LED-Daten
Bisher hatte ich das ganze in BASCOM-AVR gelöst.
Wenn man aber mal mit Pascal gearbeitet hat will man sich ja nicht mit Basic ärgern.
Aber da gibt's eine elegante Möglichkeit.
Da gibt's Formulierungen wie:
LEDDAT[Index].pinnr := 1 or 0;
oder
LEDDAT[Index].pinnr := LEDDAT[Index+1].pinnr+1;
Hat jemand eine Idee wie solche Zuweisungen in AVRCO geschickt formuliert werden können?
Bisher helfe ich mir mit einer Procedure die aber bestimmt einiges an Zeit und Speicher frisst.
procedure setb( var abyte: byte; aBit : byte; value : boolean);
var m : byte;
begin
if value then
m := %00000001;
if abit > 0 then
m := m rol abit;
endif;
abyte := abyte or m;
else
m := %11111110;
if abit > 0 then
m := m rol abit;
endif;
abyte := abyte and m;
endif;
end;
eine ähnliche Prozedur gibt es dann auch noch für Word.
Wenn jemand eine geschickten Ansatz für dieses Problem könnte er mir sehr helfen.
Gruß grech
ich bin zwar neu bei AVRCO, programmiere aber schon einige Jahre in Pascal/Delphi...
Neuerdings mache ich was mit Microcontrollern (XMega u.s.),
Dabei habe ich eine Problem:
Ich möchte Taster einlesen( 8 * 128 ) und
möchte Leds (8 * 128) über Schieberegister ein- und ausschalten.
Die Ein- und Ausgabe funktionieren schön. Dabei verwende ich Port A in ganzer Breite zum einlesen
der Taster und Port B zum ansteuern der LED.
An jedem Ausgang der Ports hängen dann bis zu 16 Schieberegister (LS595 bzw LS165).
Das ergibt zusammen also etwa ziemlich genau 1024 bit.
Damit ich mit den Daten (Taster) geschickter hantieren kann,
muss ich zu Beginn meiner Manipulationen etwas umsortieren.
Da fangen mit AVRCO die Probleme an. (oder ich nicht weiß wie es geht)
Ich finde keine elegante Möglichkeit der bitweisen Bearbeitung der Tasten/LED-Daten
Bisher hatte ich das ganze in BASCOM-AVR gelöst.
Wenn man aber mal mit Pascal gearbeitet hat will man sich ja nicht mit Basic ärgern.
Aber da gibt's eine elegante Möglichkeit.
Da gibt's Formulierungen wie:
LEDDAT[Index].pinnr := 1 or 0;
oder
LEDDAT[Index].pinnr := LEDDAT[Index+1].pinnr+1;
Hat jemand eine Idee wie solche Zuweisungen in AVRCO geschickt formuliert werden können?
Bisher helfe ich mir mit einer Procedure die aber bestimmt einiges an Zeit und Speicher frisst.
procedure setb( var abyte: byte; aBit : byte; value : boolean);
var m : byte;
begin
if value then
m := %00000001;
if abit > 0 then
m := m rol abit;
endif;
abyte := abyte or m;
else
m := %11111110;
if abit > 0 then
m := m rol abit;
endif;
abyte := abyte and m;
endif;
end;
eine ähnliche Prozedur gibt es dann auch noch für Word.
Wenn jemand eine geschickten Ansatz für dieses Problem könnte er mir sehr helfen.
Gruß grech