Ben een atmega32 aan het programmeren maar nu krijg ik een probleem met de aansturing van een poort. de taal die gebruikt word is C, de compiler is avr gcc
ik heb bv PortC deze bestaat uit pinnen 0,1,2,3,4,5,6,7
deze stuurt meerdere 7 segments displays aan via een ca6161 en een 74hc138
als ik nu PORTC de laatste 5 pinnen wil veranderen in een waarde bv allemaal 1 en de eerste 3 in 0
dan kan ik dus doen PORTC=248.
maar als ik de status van de eerste 3 niet weet. kan ik niet een &= omdat dan de eerste onbekenden overschreven kunnen worden.
heb dus bv 101 01101 en ik wil dus de laatste 5 hoog maken dus 248 er bij. het resulataat moet dus 10111111 worden.
als ik dus zou doen PORTC|=248;
heb dus
10101101
00011111
----------------
10111111
en nu wil ik de eerste 3 veranderen in 000 en de laatste 5 ongemoeid laten
1011111
???????
------------
00011111 <--- dit moet het dus worden nu
dan worden toch de laatste overschreven of zie ik het verkeerd
heb het wel werkend nu door elk bit afzonderlijk te bekijken maar echt mooi is het niet. is hier een mooie oplossing voor ?
ik heb bv PortC deze bestaat uit pinnen 0,1,2,3,4,5,6,7
deze stuurt meerdere 7 segments displays aan via een ca6161 en een 74hc138
als ik nu PORTC de laatste 5 pinnen wil veranderen in een waarde bv allemaal 1 en de eerste 3 in 0
dan kan ik dus doen PORTC=248.
maar als ik de status van de eerste 3 niet weet. kan ik niet een &= omdat dan de eerste onbekenden overschreven kunnen worden.
heb dus bv 101 01101 en ik wil dus de laatste 5 hoog maken dus 248 er bij. het resulataat moet dus 10111111 worden.
als ik dus zou doen PORTC|=248;
heb dus
10101101
00011111
----------------
10111111
en nu wil ik de eerste 3 veranderen in 000 en de laatste 5 ongemoeid laten
1011111
???????
------------
00011111 <--- dit moet het dus worden nu
dan worden toch de laatste overschreven of zie ik het verkeerd
heb het wel werkend nu door elk bit afzonderlijk te bekijken maar echt mooi is het niet. is hier een mooie oplossing voor ?
[ Voor 28% gewijzigd door Verwijderd op 24-06-2005 22:18 ]