Gå til innhold

Spørsmål fra en nybegynner i AVRstudio.


Anbefalte innlegg

#include <avr/io.h>
#include <util/delay.h>

int main()
{
DDRB = 0xff; //Port B er koblet til lamper(utgang)
char teller = 0;
char tellerkopi = 0;
while(1)
{
 teller = teller + 1;
 tellerkopi = teller;
 tellerkopi = tellerkopi<<2;
 tellerkopi = tellerkopi & 0x78;
 PORTB = ~tellerkopi;
 _delay_ms(500);
}
}

 

Hei!

Har begynt lære meg C i faget mikroprosessor på skolen.

Oppgaven er som så: "I denne oppgaven skal du kople port A til bryterne, og port B til lamper (lysdiodene)."

 

Jeg sliter litt med å forstå 2 linjer av koden min, "tellerkopi = tellerkopi<<2;" og "tellerkopi = tellerkopi & 0x78". Den første linja er vel at tellerkopi skal enten være 1 eller 0 aldri 2, men hvorfor 2stk "<"?

Og i den andre linja er jeg litt lost, lærern viste meg men var dårlig til å forklare, noen som kan forklare meg ? :)

Lenke til kommentar
Videoannonse
Annonse

Hei!

Har begynt lære meg C i faget mikroprosessor på skolen.

Oppgaven er som så: "I denne oppgaven skal du kople port A til bryterne, og port B til lamper (lysdiodene)."

 

Jeg sliter litt med å forstå 2 linjer av koden min, "tellerkopi = tellerkopi<<2;" og "tellerkopi = tellerkopi & 0x78". Den første linja er vel at tellerkopi skal enten være 1 eller 0 aldri 2, men hvorfor 2stk "<"?

Og i den andre linja er jeg litt lost, lærern viste meg men var dårlig til å forklare, noen som kan forklare meg ? :)

 

X << Y betyr "Ta alle bit i X, og flytt dem Y ganger til venstre" (001 << 2 = 100)

X & Y betyr "Ta alle bit i X, Gi tilbake alle bit som er satt i både X og Y" (001 & 011 = 001)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...