Hallo,
ich habe jetzt an meinem At-Mega128 ein Grafiklcd dran und habe da
(andere Thread) auch ein Menü gestaltet was auch funktioniert.
Jetzt habe ich z.b. an PortD mehere Ausgäng verschieden beschaltet die
auch über das Menü gesetzt werden.
Bit0-3 Steuersignale für einen eprom (Bankswitching , nur zur
ansteuerung für 16k Bänke)
Bit4-6 Ansteuerung eines GAL´s zur Steuerung einer Speicherkonfiguration
Bit7 Für eine einzelne Steuerleitungen.
Der gesamte Port wird auch im Eeprom in einer Variable abgelegt um die
Zustände nach dem Einschalten wieder zu setzen
NAch dem einschalten setze ich die Ports so
1 | setportd = eeprom_read_word(&setportde);
|
2 | setporte = eeprom_read_word(&setportee);
|
3 | PORTD = setportd;
|
4 | PORTE = setporte;
|
Was auch Funktioniert, die zustände werden auch richtig an den Pins
gesetzt.
Jetzt möchte ich z.b Für die Eprom Funktion Bit0-3 setzen was ich ja so
machen kann.
1 | PORTD &= ~(1<<PD0) | (1<<PD1) | (1<<PD2) | (1<<PD3);
|
2 | PORTD |= (1<<PD0);
|
Jetzt macht das setzen der zustände per Hand (binär) doch sehr viel
Arbeit. Einfach wäre natürlich das ganze Hexadezimal zu setzen
0x0 - 0xF .
Wenn ich jetzt 0xF0 z.b. setzen würde dann würde ich ja die Bits 4-7
verliereb.
Doch wie könnte ich das Realsieren ohne die Bits 4-7 zu verlieren?
Nach dem setzen soll dann der neue zustand der Ports in den EEprom
gespeichert werden, was auch schon funktioniert.
Das bitmanipulations Tut habe ich mir auch schon angesehen und so
funktioniert es ja schon.
Wenn man jetzt den hexwert binär wandeln könnte und dann bitweise
setzen, dann würde das auch funktionieren.
Hat jemand für mich nen Tipp der mich hier weiter bringen würde`?
TSchau ingo