Here I am again
Die 16MHz habe ich eingestellt bekommen, allerdings etwas Kurios...
Hier
Bild hier
Sind 16MHz eingestellt, wobei hier
Bild hier
8MHz eingestellt sind - das Prozessor Fenster sagt 16MHz und es läuft auch doppelt so schnell wie mit 8MHz ...
Code:
PORTB <<= 1;
if (!PORTB){
PORTB = 1;
}
PORTB<<=1 shiftet (<<) die 1 durch den ganzen Port, aber warum bei jedem Zyklus das nächse? Und was genau macht die IF Anweisung?
Da steig ich - auch mit dem tutorial - noch nicht ganz durch.
Code:
uint8_t run=PINA&PINA0;
if(run==1){ // tu was }
Tut nicht- Erklärung? Vielleicht liegts am Code ... C/C++ hat dann doch ein zwei verschiedenheiten..
Code:
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
int main (void) {
DDRB = 0xff;
DDRA = 0x00;
uint8_t run=PINA&PINA0;
char auswahl='n';
while(1) { // MAINSCHLEIFE
if((PINA&(1<<PINA0))&&(auswahl=='n')){ auswahl='r';}
else if((PINA&(1<<PINA0))&&(auswahl=='r')){ auswahl='n'; }
else if((PINA&(1<<PINA0))&&(auswahl=='b')){ auswahl='c'; }
else if((PINA&(1<<PINA0))&&(auswahl=='c')){ auswahl='b'; }
else if((PINA&(1<<PINA1))&&(auswahl=='r')){ auswahl='b'; }
else if((PINA&(1<<PINA1))&&(auswahl=='b')){ auswahl='r'; }
switch(auswahl){
case 'r': // VORWÄRTS FWD
PORTB <<= 1;
if (!PORTB){
PORTB = 1;
}
break;
case 'b' : // RÜCKWÄRTS RWD
PORTB >>= 1;
if(!PORTB){
PORTB=128;
}
break;
}
} // MAINSCHLEIFEN ENDE
return 0;
}
Das tut soweit alles was ich will, auser der Variablen zuweisung.
Was ist daran C Untypisch? Es ist mit der Version vll ungemütlich geschrieben, Funktioniert aber tadellos
Lesezeichen