morgen, ich bin Einsteiger in der Programmierung vom AVR-Mikrocontroller mit C-Sprache. Ist es möglich die verschiedene Pin eines Port in einer for-Schleife abzufragen? Ich will die Zustände des Portpins wissen und dann mit neue Werte setzen. for(int i= 0; i <8; i++){ if ( PINC & (1<<PINC[i]) ) { /* tu was */ } } Auf alle Hilfe wäre ich dankbar
paul schrieb: > abzufragen? Ich will die Zustände des Portpins wissen und dann mit neue > Werte setzen. > for(int i= 0; i <8; i++){ > if ( PINC & (1<<PINC[i]) ) { Fast. Mittels PINC kriegst du alle 8 Bit des Ports. Aus diesen 8 Bit klamüserst du dir mit dem & das dich interessierende heruas. Dazu brauchst du eine Maske in der alle Bits 0 sind, bis auf das eine Bit, das dich interessiert. Das muss 1 sein uint8_t Value = PINC; for( uint8_t i = 0; i < 8; ++i ) if( Value & ( 1 << i ) ) { /* tu was */ http://www.mikrocontroller.net/articles/Bitmanipulation
> ( 1 << i )
Das ist aber auf den Atmels sehr langsam, weil der µC dafür kein
passeneden Befehlt kennt.
uint8_t Value = PINC;
for( uint8_t i = 0; i < 8; ++i )
if( Value & 1 ) ) {
/* tu was */
}
Value =>>1;
}
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.