cenenzo Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 http://www.it.hiof.no/datateknikk/notater/timeoppgave2-forslag.html kan noen forklare meg hva dette har med bildet i oppg å gjøre? case 0xFE: PORTB = 0xF9 ; /* bryter 1 */ break; case 0xFD: PORTB = 0xA4; /* bryter 2 */ break; case 0xFB: PORTB = 0xB0; /* bryter 3 */ break; case 0xF7: PORTB = 0x99; /* bryter 4 */ break; case 0xEF: PORTB = 0x92; /* bryter 5 */ break; case 0xDF: PORTB = 0x83; /* bryter 6 */ break; case 0xBF: PORTB = 0xF8; /* bryter 7 */ break; case 0x7F: PORTB = 0X80; /* bryter 8 */ break; default: PORTB= 0XCD; klarer ikke forstå de heksadesimalene osv, skjønner ikke helt hvordan det illustrerer bilde i syvsegmentet. Lenke til kommentar
Emancipate Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 Tips: Konverter heksadesimaltallene til binærtall og se om du forstår mer da. Lenke til kommentar
cenenzo Skrevet 19. mars 2014 Forfatter Del Skrevet 19. mars 2014 Tips: Konverter heksadesimaltallene til binærtall og se om du forstår mer da. case 0xFD: PORTB = 0xA4; /* bryter 2 */ break; FD = 1111 1101 og A4 = 1010 0100 er dette i binære .. men jeg klarer fortsatt ikke å forholde disse binære tallene med syvsegmentet, hadde vært bra om du kunne forklart meg! har grublet lenge på dette. Lenke til kommentar
Emancipate Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 Jeg vet det heller ikke, og jeg tror man må ha litt bakgrunnsinformasjon. Lenke til kommentar
etse Skrevet 19. mars 2014 Del Skrevet 19. mars 2014 (endret) Tenk på 1 og 0 som av og på, så gir det mening. case 0xFE: PORTB = 0xF9 ; /* bryter 1 */ vi endrer dette til case 11111110: PORTB = 11111001 Legg merke til her at alle utenom den siste biten er 1. Dette er fordi noen har trykket på knappen som er er bundet til denne biten, dermed brutt kretsen (den er nå av) og dermed representert 0. PORTB er outputen knyttet til selve 7-segmentet. Her er alle utenom B og C satt til 1. Ved å la kun B og C på 7-segmentet lyse vil man få et et-tall. ------------------------------ prøv å sett opp alle de andre tallene på samme måte i binær og sjekk hvilke lamper de forskjellige bitene på PORTB vil få til å lyse så kanskje det blir litt klarere. Og tenk deg at hver av bokstene represeres med enten en 1 eller 0 (og er derfor 1 bit). ---------- Tar en til for å være snill: case 0xFD: <--- 11111101 Bryteren koblet til der det er en null trykket på, og siden det er bit nr.2 fra høyre som er null vet vi det er bryter 2 på tegningen, som er knyttet til denne biten. (husk at en enkel knapp er 1 bit med informasjon) PORTB = 0xA4; <----- 10100100 Siden 0 her betyr at lampen lyser ser vi av tegningen at dette betyr at lampene: A, B, D, E og G må lyse. Dette vil da forme et 2-tall. ----------- Oppgaven er forvirrende om du ser på heksadesimale-tall. Da det du egentlig holder på med ikke er tall, det er kun brytere som skal av og på. Hvor 1 betyr av og 0 betyr på. Så tenk binært og sett opp alle brukt i oppgaven Hex-verdiene som binær-tall på et kladdeark eller noe så blir det lettere å forstå. Endret 19. mars 2014 av etse Lenke til kommentar
cenenzo Skrevet 20. mars 2014 Forfatter Del Skrevet 20. mars 2014 Tenk på 1 og 0 som av og på, så gir det mening. case 0xFE: PORTB = 0xF9 ; /* bryter 1 */ vi endrer dette til case 11111110: PORTB = 11111001 Legg merke til her at alle utenom den siste biten er 1. Dette er fordi noen har trykket på knappen som er er bundet til denne biten, dermed brutt kretsen (den er nå av) og dermed representert 0. PORTB er outputen knyttet til selve 7-segmentet. Her er alle utenom B og C satt til 1. Ved å la kun B og C på 7-segmentet lyse vil man få et et-tall. ------------------------------ prøv å sett opp alle de andre tallene på samme måte i binær og sjekk hvilke lamper de forskjellige bitene på PORTB vil få til å lyse så kanskje det blir litt klarere. Og tenk deg at hver av bokstene represeres med enten en 1 eller 0 (og er derfor 1 bit). ---------- Tar en til for å være snill: case 0xFD: <--- 11111101 Bryteren koblet til der det er en null trykket på, og siden det er bit nr.2 fra høyre som er null vet vi det er bryter 2 på tegningen, som er knyttet til denne biten. (husk at en enkel knapp er 1 bit med informasjon) PORTB = 0xA4; <----- 10100100 Siden 0 her betyr at lampen lyser ser vi av tegningen at dette betyr at lampene: A, B, D, E og G må lyse. Dette vil da forme et 2-tall. ----------- Oppgaven er forvirrende om du ser på heksadesimale-tall. Da det du egentlig holder på med ikke er tall, det er kun brytere som skal av og på. Hvor 1 betyr av og 0 betyr på. Så tenk binært og sett opp alle brukt i oppgaven Hex-verdiene som binær-tall på et kladdeark eller noe så blir det lettere å forstå. Port B: 11111001 Tusen takk! så port B så er det egentlig tallene i rekkefølgen GFEDCBA? Tenk på 1 og 0 som av og på, så gir det mening. case 0xFE: PORTB = 0xF9 ; /* bryter 1 */ vi endrer dette til case 11111110: PORTB = 11111001 Legg merke til her at alle utenom den siste biten er 1. Dette er fordi noen har trykket på knappen som er er bundet til denne biten, dermed brutt kretsen (den er nå av) og dermed representert 0. PORTB er outputen knyttet til selve 7-segmentet. Her er alle utenom B og C satt til 1. Ved å la kun B og C på 7-segmentet lyse vil man få et et-tall. ------------------------------ prøv å sett opp alle de andre tallene på samme måte i binær og sjekk hvilke lamper de forskjellige bitene på PORTB vil få til å lyse så kanskje det blir litt klarere. Og tenk deg at hver av bokstene represeres med enten en 1 eller 0 (og er derfor 1 bit). ---------- Tar en til for å være snill: case 0xFD: <--- 11111101 Bryteren koblet til der det er en null trykket på, og siden det er bit nr.2 fra høyre som er null vet vi det er bryter 2 på tegningen, som er knyttet til denne biten. (husk at en enkel knapp er 1 bit med informasjon) PORTB = 0xA4; <----- 10100100 Siden 0 her betyr at lampen lyser ser vi av tegningen at dette betyr at lampene: A, B, D, E og G må lyse. Dette vil da forme et 2-tall. ----------- Oppgaven er forvirrende om du ser på heksadesimale-tall. Da det du egentlig holder på med ikke er tall, det er kun brytere som skal av og på. Hvor 1 betyr av og 0 betyr på. Så tenk binært og sett opp alle brukt i oppgaven Hex-verdiene som binær-tall på et kladdeark eller noe så blir det lettere å forstå. Port B: 11111001 Tusen takk! så port B så er det egentlig tallene i rekkefølgen GFEDCBA? hvis vi skulle sammenlignet til hvilken plass hver bit hører til? Lenke til kommentar
etse Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 (endret) Port B: 11111001 Tusen takk! så port B så er det egentlig tallene i rekkefølgen GFEDCBA? hvis vi skulle sammenlignet til hvilken plass hver bit hører til? Se på tegningen. Det er det den er til for å vise. Du ser her at bitsene ligger koblet til i rekkefølgen "A B C D E F G", men bilde sier ikke om den første biten er den lengstil høyre eller om det er den lengst til venstre. Men vi gjør som oppgaven og definerer. I løsningsforslaget har de sagt at Bit 0 er A. Så la oss si vi skal løse denne for tallet tre. Siden vi ønske å sjekke når knapp 3 er trykket inn har vi følgende på input: PORTA = 0b1111011 = 0xFB Vi ønsker å vise tallet tre og ser at for å få det til må diodene ABCDG lyse for å få dette til.(se på tegningene, lampene merket med de bokstavene vil forme et 3-tall). Vi setter derfor outputen til disse bittene fil 0 mens de andre er 1 G F E D C B A 0 1 1 0 0 0 0 Dette gir oss: PORTB = 0b0110000 = 0x30 I kode kan dette bli noe som: if(PORTA == 0xFB) PORTB = 0x30;forstod du tankegangen? Og for å svare på spørsmålet ditt: så port B så er det egentlig tallene i rekkefølgen GFEDCBA? I løsningsforslaget er det sånn. Men du kunne fint definert det i morsatt rekkefølge med mindre oppgaveteksten sa at Bit0 skulle være A. I den virkelige verden ville dette vært bestemt av enten hvordan du koblet opp utstyret eller av spesifikasjonene til displayet. (Og Bit0 betyr nummer 0 fra høyre, ikke fra venstre som man fort kan finne på å tenke) Endret 20. mars 2014 av etse 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å