Joffii Skrevet 19. september 2012 Del Skrevet 19. september 2012 #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
GeirGrusom Skrevet 19. september 2012 Del Skrevet 19. september 2012 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå