Ylajali Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 Hei! Jeg ble trukket opp til prøveeksamen i mikrokontroller og fikk som oppgave å programmere et trafikklys for så å koble det over på et Bread Board/ Project Board. Har skrevet ferdig koden og montert opp selve trafikklyset (med leds og motstander etc), og alt fungerer fint. På selve prøveeksamen skal jeg derimot forklare hva de forskjellige kommandoene gjør, og hvorfor jeg har brukt dem. Sliter litt med å forklare denne her (i og med at jeg kopierte den fra nettet); Loop: movlw d'130' ;1 x 254 x 10 = 2540 movwf Delay ;1 x 254 x 10 = 2540 decfsz Delay,f ;1 x 130 x 254 x 10 = 330200 GOTO $-1 ;2 x 130 x 254 x 10 = 660400 decfsz Delay1,f ;1 x 254 x 10 = 2540 goto Loop ;2 x 254 x 10 = 5080 decfsz Delay2,f ;1 x 10 goto Loop ;2 x 10 movlw d'10' movwf Delay2 return Kan noen fortelle kort om hva movlw, movwf og decfsz gjør? Det er en 1 sekunds loop btw. Lenke til kommentar
RaaneHolmg Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er. Lenke til kommentar
Lufen Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 http://www.microchip.com/forums/m194368.aspx <-- Første svar på google etter "decfsz assembly". 1 Lenke til kommentar
Ylajali Skrevet 11. desember 2011 Forfatter Del Skrevet 11. desember 2011 Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er. Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/. Lenke til kommentar
Thomas. Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 To change register at once we use two command : MOVLW b'00001111' MOVWF PORTB This will move binary 00001111 to PORTB register. In assembly, we cannot put a number to a register directly. To do this we use accumulator(W) register. MOVLW means "move literal to accumulator". The literal is the constant comes after command (here b'00001111'). And, MOVWF means "move accumulator to register". The name of register comes after command (here PORTB). decfsz: http://stackoverflow.com/a/4976575 1 Lenke til kommentar
David Brown Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er. Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/. Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet? Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger. Lenke til kommentar
Ylajali Skrevet 11. desember 2011 Forfatter Del Skrevet 11. desember 2011 Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er. Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/. Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet? Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger. For det første; vi har ingen lærerbøker som omhandler temaet assembly, og vi har heller ikke fått tilgang til noen form for nettsider om det. Læreren vår har heller ikke definert hva slags assembly kode det er snakk om. Og hvor har du det fra at jeg går på universitetet? Jeg går VG2 DataEl, og har ingen planer om å jobbe med det her i fremtiden. 1 Lenke til kommentar
David Brown Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er. Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/. Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet? Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger. For det første; vi har ingen lærerbøker som omhandler temaet assembly, og vi har heller ikke fått tilgang til noen form for nettsider om det. Læreren vår har heller ikke definert hva slags assembly kode det er snakk om. Og hvor har du det fra at jeg går på universitetet? Jeg går VG2 DataEl, og har ingen planer om å jobbe med det her i fremtiden. Hvis du har fått en eksamoppgave på et emne der du har hatt ingen opplæring, ingen bøker, ingen tilgang til nettsider, og ingen andre informasjon er det kun to forklaring - enten er læreren din udugelig, ellers har du ikke følgt med på noe. Uansett kan ingen hjelpe deg ved å forklare om denne koden. Og det spiller ingen rolle om du er på skolen eller på universitet. Det er <i>du</i> som har ansvar for din utdanning, og din framtid. Det er noe alvorlig galt når du skal ta en eksam og du tar utgangspunkt i kopiering fra nettet på noe du ikke har peiling på. Lenke til kommentar
Ylajali Skrevet 11. desember 2011 Forfatter Del Skrevet 11. desember 2011 Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er. Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/. Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet? Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger. For det første; vi har ingen lærerbøker som omhandler temaet assembly, og vi har heller ikke fått tilgang til noen form for nettsider om det. Læreren vår har heller ikke definert hva slags assembly kode det er snakk om. Og hvor har du det fra at jeg går på universitetet? Jeg går VG2 DataEl, og har ingen planer om å jobbe med det her i fremtiden. Hvis du har fått en eksamoppgave på et emne der du har hatt ingen opplæring, ingen bøker, ingen tilgang til nettsider, og ingen andre informasjon er det kun to forklaring - enten er læreren din udugelig, ellers har du ikke følgt med på noe. Uansett kan ingen hjelpe deg ved å forklare om denne koden. Og det spiller ingen rolle om du er på skolen eller på universitet. Det er <i>du</i> som har ansvar for din utdanning, og din framtid. Det er noe alvorlig galt når du skal ta en eksam og du tar utgangspunkt i kopiering fra nettet på noe du ikke har peiling på. Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå? Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere. Lenke til kommentar
David Brown Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå? Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere. Har du skrevet resten av koden i C? Eller var det til en annen mikrokontroller? Fordi du kan ikke ha skrevet noe som helst i assembly på en PIC uten at du forstår "movlw" og "movwf", og man kommer ikke så veldig langt uten "decfsz". Kokker det hele ned til at du har skrevet et program i C for en ikke-nevnt mikrokontroller, men du viste ikke hvordan du skulle få en 1-sekund pause, og har dermed kopiert tilfeldig assembly kode til en tilfeldig mikrokontroller fra en tilfeldig webside? Lenke til kommentar
Ylajali Skrevet 11. desember 2011 Forfatter Del Skrevet 11. desember 2011 (endret) Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå? Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere. Har du skrevet resten av koden i C? Eller var det til en annen mikrokontroller? Fordi du kan ikke ha skrevet noe som helst i assembly på en PIC uten at du forstår "movlw" og "movwf", og man kommer ikke så veldig langt uten "decfsz". Kokker det hele ned til at du har skrevet et program i C for en ikke-nevnt mikrokontroller, men du viste ikke hvordan du skulle få en 1-sekund pause, og har dermed kopiert tilfeldig assembly kode til en tilfeldig mikrokontroller fra en tilfeldig webside? Det spiller da ingen rolle, jeg vil bare ha movlw, movwf og decfsz forklart inn med teskje. Koden min består mye av bsf, bcf, crlf, call, goto osv. Endret 11. desember 2011 av joalim Lenke til kommentar
David Brown Skrevet 11. desember 2011 Del Skrevet 11. desember 2011 Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå? Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere. Har du skrevet resten av koden i C? Eller var det til en annen mikrokontroller? Fordi du kan ikke ha skrevet noe som helst i assembly på en PIC uten at du forstår "movlw" og "movwf", og man kommer ikke så veldig langt uten "decfsz". Kokker det hele ned til at du har skrevet et program i C for en ikke-nevnt mikrokontroller, men du viste ikke hvordan du skulle få en 1-sekund pause, og har dermed kopiert tilfeldig assembly kode til en tilfeldig mikrokontroller fra en tilfeldig webside? Det spiller da ingen rolle, jeg vil bare ha movlw, movwf og decfsz forklart inn med teskje. Koden min består mye av bsf, bcf, crlf, call, goto osv. Nei, det godtar jeg ikke. Selv om det er 15 år siden jeg programmert i PIC assembly, og har muligens glemt et par detaljer, kan jeg ikke uten videre akseptere påstand at du har skrevet selv et enkelt trafikklys program i PIC assembly uten å ha forstått "movlw" og "movwf". Jeg kan forstå at det er mulig å skrive et slikt program der det kun er i pause funksjonen at man bruke disse instruksjoner - men du kan ikke ha lest om og lært om måten PIC cpu'en fungere for å skrive programmet selv uten at du også har vært bort i "movlw" og "movwf". Du har selv sagt at du ikke har lærebøker eller nettsider som omtale assembly, og at du ikke en gang vet hvilke type assembly det er snakk om. Man skriver ikke assembly kode uten å vite hva slags assembly det er. Konklusjonen må da være at du ikke har skrevet noen ting av programmet, og har bare kopierte den. Lenke til kommentar
Ylajali Skrevet 11. desember 2011 Forfatter Del Skrevet 11. desember 2011 Huff, jeg fatter ikke hvorfor du skal slå deg vrang og bry deg om hvordan jeg har skrevet koden. Selv om du sikkert er bitter over manglende ingeniører med kunnskap, så trenger du ikke bekymre deg for at jeg fyller de rekkene enda mer. Jeg er bare ute etter et svar, og forventer ikke at folk skal blande seg inn om jeg kan pensumet eller ikke. Det er mitt problem, og derfor har du ingenting med det å gjøre. Takk for at du brukte tiden på å kverulere istedenfor å komme med ett anstending svar. end 1 Lenke til kommentar
David Brown Skrevet 12. desember 2011 Del Skrevet 12. desember 2011 Huff, jeg fatter ikke hvorfor du skal slå deg vrang og bry deg om hvordan jeg har skrevet koden. Selv om du sikkert er bitter over manglende ingeniører med kunnskap, så trenger du ikke bekymre deg for at jeg fyller de rekkene enda mer. Jeg er bare ute etter et svar, og forventer ikke at folk skal blande seg inn om jeg kan pensumet eller ikke. Det er mitt problem, og derfor har du ingenting med det å gjøre. Takk for at du brukte tiden på å kverulere istedenfor å komme med ett anstending svar. end Det er et problem for hele samfunnet om studenter jukser - selv om du ikke kommer til å bruke dette faget profesjonelt. Du er jo bare et barn - du tror sikkert at det ikke betyr noe, og til og med at du kan lure folk med kopi-og-lim hjemmelekser. Jeg håper bare at du våkner opp til realitet før du skaper problemer for deg selv og andre. Lenke til kommentar
Ylajali Skrevet 12. desember 2011 Forfatter Del Skrevet 12. desember 2011 (endret) Huff, jeg fatter ikke hvorfor du skal slå deg vrang og bry deg om hvordan jeg har skrevet koden. Selv om du sikkert er bitter over manglende ingeniører med kunnskap, så trenger du ikke bekymre deg for at jeg fyller de rekkene enda mer. Jeg er bare ute etter et svar, og forventer ikke at folk skal blande seg inn om jeg kan pensumet eller ikke. Det er mitt problem, og derfor har du ingenting med det å gjøre. Takk for at du brukte tiden på å kverulere istedenfor å komme med ett anstending svar. end Det er et problem for hele samfunnet om studenter jukser - selv om du ikke kommer til å bruke dette faget profesjonelt. Du er jo bare et barn - du tror sikkert at det ikke betyr noe, og til og med at du kan lure folk med kopi-og-lim hjemmelekser. Jeg håper bare at du våkner opp til realitet før du skaper problemer for deg selv og andre. Hvor mange ganger må jeg si det; det er bare 'loop'-koden som jeg har kopiert. Det er 12 av 135 linjer, og kan da umulig kvalifiseres som juks nå som jeg i tillegg bruker tiden på å lære den? Politikk kan du diskutere om i dets respektive forum, jeg er ikke interessert i å høre om hva du mener, selv om jeg ser poenget ditt. Alt jeg ønsket da jeg åpnet denne tråden var å lære noe. Til dere som ønsker å hjelpe; har skjønt movlw og movwf nå (takk for link, +1), så da er det bare decfsz igjen (skal ta en titt på linken, Thomas). Hele koden er i tillegg omskrevet med hjelp fra lærer (movlw er mye nyttigere en bsf og bcf i og med at jeg kan definere flere utganger samtidig istedenfor en og en, og koden ble nesten fire ganger så kort). Hele koden for dem som er interessert: #include <P16F690.inc> __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF &_BOD_OFF & _IESO_OFF & _FCMEN_OFF) cblock 0x20 Delay Delay1 Delay2 endc org 0 Start: BSF STATUS,RP0 MOVLW b'00001000' ;Setter knappen som input (RA3), og resten som output (RA0, RA1, RA2, RA4 og RA5). MOVWF TRISA BCF PORTC,0 BCF STATUS,RP0 Fase1: MOVLW b'00010001' ;Rødt lys fotjenger, grønt lys bil. Holdes til knappen trykkes MOVWF PORTA Knapp: BTFSC PORTA,3 ;Knappen sjekker om den er trykket. Hvis ja, går den til Fase2. Hvis nei, går den tilbake. GOTO $-1 Call Tosek Fase2: MOVLW b'00010010' ;Rødt lys fotjenger, gult lys bil. MOVWF PORTA Call Tresek Fase3: MOVLW b'00010100' ;Rødt lys fotjenger, rødt lys bil. MOVWF PORTA Call Tosek Fase4: MOVLW b'00100100' ;Grønt lys fotjenger, rødt lys bil. MOVWF PORTA Call Nisek Fase5: MOVLW b'00100100' ;Grønt lys blink fotjenger, rødt lys bil. MOVWF PORTA BSF PORTC,0 Call Blink MOVLW b'00000100' MOVWF PORTA BCF PORTC,0 Call Blink MOVLW b'00100100' MOVWF PORTA BSF PORTC,0 Call Blink MOVLW b'00000100' MOVWF PORTA BCF PORTC,0 Call Blink MOVLW b'00100100' MOVWF PORTA BSF PORTC,0 Call Blink MOVLW b'00000100' MOVWF PORTA BCF PORTC,0 Call Blink MOVLW b'00100100' MOVWF PORTA BSF PORTC,0 Call Blink MOVLW b'00000100' MOVWF PORTA BCF PORTC,0 Call Blink MOVLW b'00100100' MOVWF PORTA BSF PORTC,0 Call Blink MOVLW b'00000100' MOVWF PORTA BCF PORTC,0 Call Blink Fase6: MOVLW b'00010100' ;Rødt lys fotjenger, rødt lys bil. MOVWF PORTA Call Tresek Fase7: MOVLW b'00010110' ;Rødt lys fotjenger, gult og rødt lys bil. MOVWF PORTA Call Tosek CLRF PORTA GOTO Fase1 Tosek: MOVLW d'20' MOVWF Delay2 GOTO Loop Tresek: MOVLW d'30' MOVWF Delay2 GOTO Loop Nisek: MOVLW d'90' MOVWF Delay2 GOTO Loop Blink: MOVLW d'4' MOVWF Delay2 GOTO Loop Loop: MOVLW d'130' MOVWF Delay DECFSZ Delay,f GOTO $-1 DECFSZ Delay1,f GOTO Loop DECFSZ Delay2,f GOTO Loop Return end Endret 12. desember 2011 av joalim Lenke til kommentar
TheClown Skrevet 30. mai 2012 Del Skrevet 30. mai 2012 Ikke at jeg egentlig har noe her å gjøre, samt at denne tråden er gammel. Men for noen drittsekker dere er (no offense), hvorfor kunne dere ikke svart fyren. Ikke rart disse forumene nesten ikke blir brukt (null) 2 Lenke til kommentar
etse Skrevet 30. mai 2012 Del Skrevet 30. mai 2012 I enkelte tilfeller trenger for å høre den harde sannheten. I dette tilfellet virket TS som en person som bare hadde kopierte koden fra nettet og ikke gjort noe innsats for å lære dette selv. 1 Lenke til kommentar
Valkyrex Skrevet 25. juni 2012 Del Skrevet 25. juni 2012 Jeg hadde emne nå (høgskole) hvor vi holdt på med asm programmering. Når vi ikke forstod en instruksjon, så var beskjeden fra læreren enkel: SE I DATABLADET... Og der finner man ALT, hva den gjør, hvordan, osv osv. Hver PIC mikrokontroller har et datablad, og det skal ikke så mye til å skjønne at: Hmm, det er noe her jeg ikke forstår, åja, da søker jeg det opp på internett (eventuelle kilder der er, andre forum, produsentens dokumentasjon, ol). Når noen er så late at de ikke engang gidder å selv lete frem svaret, og bare blank insisterer å få svaret servert: let them burn... Lenke til kommentar
TMB Skrevet 25. juni 2012 Del Skrevet 25. juni 2012 wow David Brown, butthurt much? Lenke til kommentar
Valkyrex Skrevet 25. juni 2012 Del Skrevet 25. juni 2012 (endret) Butthurt very much indeed (da ikke han, men de fleste av oss her). Men det er jo noe i det som flere av oss sier: gjør jobben / leksa dine, ikke forvent å få alt servert =) Endret 25. juni 2012 av Valkyrex 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å