Erst mal Hardware:
Deine Pins am AVR sollten z.B. Pull-Up Widerstände haben, somit sind die schon mal HI.
Die Schalter legen dann den Pin jewiels auf Masse (Low).
Die beien Ports sind auf INPUT gesetzt?
So wie es jetzt mit C Programmierung aussieht (Sorry) amer allgemein:
Erst mal den Wert in Variablen übertragen (nicht die Port-Variablen verwenden)
Ich gehe mal davon aus dass die Schalter offen sind (Eingaänge also HI)
z.B. X und Y
Dann musst Du die beiden unterscheidlichen Ports in einer Variable vereinen
um ungewünschtes zu filtern erst mal mit AND
erst mal X = port_D and 11100000 REM (D7, D6, D5)
dann Y = port_B and 00000001 REM (B0)
jetzt schiebst Du X um 4- Bit nach rechts REM = 00001110
nun noch Y zu X verodern
X = X OR Y REM = 00001111
Nun hast Du den Wert in X stehen.
Wie das ganze in C zu scheiben ist kannst Du dann bestimmt umsetzen.
Lesezeichen