cenenzo Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 int main(void) { unsigned char les_bryter; DDRA = 0x00; /* PORTA som inn-port */ DDRB = 0xFF; /* PORTB som ut-port */ while(1) { les_bryter = PINA; switch(les_bryter) { 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; } } } Her er løsningsforslaget, men jeg klarer ikke helt å skjønne hva 0x7F er , og hva 0X80 , de delene der, så kunne noen vær så snill å kmomentere koden, slikt at jeg kan få en forklaring? http://www.nullptr.me/2011/09/13/0xcd-0xdd-understanding-windows-memory-codes-2/#.UxnQjvl5NPU har lest litt av dette, men gir fortsatt ikke mening. Lenke til kommentar
Hårek Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 Den leser en port (PINA) til variabelen les_bryter. En port, og en char, består av 8 bit. Med 8 bit kan du telle fra 0 til 255, eller 0 til 0xFF med hexadesimal representasjon. Her er det tydeligvis negativ logikk, dvs en bryter som er av leser høy, en bryter som er på leser 0. Alle brytere av gir da 0xFF på porten. Verdien 0x7F (binært 0111.1111) betyr at bryter 8 er på. PORTB er en utgang. 0x80 (dvs bit 8 på) sendes ut på porten når bryter 8 er på. Den linken din er overhodet ikke relevant her, er vel bare noe du fant ved å Google hex verdier? Lenke til kommentar
cenenzo Skrevet 7. mars 2014 Forfatter Del Skrevet 7. mars 2014 0xFE: PORTB = 0xF9 men hvilket hensyn har disse delene her i koden? det jeg ikke helt forstod Lenke til kommentar
Hårek Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 "Hvilket hensyn"? Forstår ikke formuleringen. Bryter 1 gir verdien 0xF9 på output. Det er ganske rett fram. Lenke til kommentar
cenenzo Skrevet 7. mars 2014 Forfatter Del Skrevet 7. mars 2014 (endret) "Hvilket hensyn"? Forstår ikke formuleringen. Bryter 1 gir verdien 0xF9 på output. Det er ganske rett fram. http://www.it.hiof.no/datateknikk/notater/timeoppgave2-forslag.html dette er oppgaven, altså den delen der, hvilken hører det til i det oppgaven spørr om? altså , hvorfor gir den den outputten? hvis den skal telle fra 1-8 Endret 7. mars 2014 av cenenzo Lenke til kommentar
Hårek Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 Litt innsats på å tenke selv? "Segment A er koblet til bit 0, segment B er koblet til bit 1 " Hvilke segmenter er det da som lyser når du har 0xF9? 1 Lenke til kommentar
cenenzo Skrevet 7. mars 2014 Forfatter Del Skrevet 7. mars 2014 Litt innsats på å tenke selv? "Segment A er koblet til bit 0, segment B er koblet til bit 1 "[/size] Hvilke segmenter er det da som lyser når du har 0xF9? Nå ble jeg faktisk usikker ... Beklager , forstod iallfall at FFFF 1001 er F9? Lenke til kommentar
Hårek Skrevet 8. mars 2014 Del Skrevet 8. mars 2014 Ja, hvis man legger godviljen til. Du må se forskjellen på hex og binær. "FFFF 1001" gir ingen mening. Lenke til kommentar
cenenzo Skrevet 8. mars 2014 Forfatter Del Skrevet 8. mars 2014 Ja, hvis man legger godviljen til. Du må se forskjellen på hex og binær. "FFFF 1001" gir ingen mening. 1111 1001 da? men tallet blir vell ikke 1 da?? må jeg regne om med 2 komponement osv? Lenke til kommentar
Hårek Skrevet 8. mars 2014 Del Skrevet 8. mars 2014 1111 1001 er riktig binært. En byte kan bety flere ting. Det kan være positive og negative verdier, og i såfall må man regne med 2s komplement. Men her er det I/O porter, og den variable er deklarert som unsigned char. Det er ingen grunn til å dra inn negative verdier og utregninger. Det eneste du trenger å tenke på her at hver enkelt bit er 0 eller 1, og er koblet til et lys som er av eller på. Lenke til kommentar
cenenzo Skrevet 9. mars 2014 Forfatter Del Skrevet 9. mars 2014 1111 1001 er riktig binært. En byte kan bety flere ting. Det kan være positive og negative verdier, og i såfall må man regne med 2s komplement. Men her er det I/O porter, og den variable er deklarert som unsigned char. Det er ingen grunn til å dra inn negative verdier og utregninger. Det eneste du trenger å tenke på her at hver enkelt bit er 0 eller 1, og er koblet til et lys som er av eller på. okay, så hvordan kan dette si meg at den første bryteren lyser opp 1 tall? er ikke helt sikker på om jeg skjønner det helt, fordi jeg tenker hele tiden at binære tallet skal være 1 slik at bryter 1 slås på som 1. Nettet er heller ikke særlig til hjelp. Lenke til kommentar
Hårek Skrevet 9. mars 2014 Del Skrevet 9. mars 2014 Du må da se på hardware som er tilkoblet. Loop tilbake til post #6 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å