05t3k4k3 Skrevet 5. juni 2007 Del Skrevet 5. juni 2007 Har fått i oppgåve i eksamen der eg skal lage eit program. Når nokon går in ei dør skal eit aukustisk signal gå og 8 diodar lyse frå høgre til venstre og tilbake 10 gångar. Har skreve programmet men det funkar ikkje .include"1200def.inc" ; Definerer. start1: ldi r19,$ff out ddrb,r19 ;utg ldi r19,$00 out ddrd,r19 ;inng ldi r18,$ff ldi r20,$fe rjmp start ; Naar pind,0 ikkje er trykt er den 1. start: sbic pind,0 ; pind,0 er ein folar rjmp start rjmp alarm ; Alarm. alarm: out portb,r20 rcall tidsf rjmp lys1 ; 1.Forste roteringa mot hogre. lys1: ror r18 out portb,r18 rcall tidsf rjmp lys2 ; 2.Forste roteringa mot venstre. lys2: rol r18 out portb,r18 rcall tidsf rjmp lys3 ; 3.Andre roteringa mot hogre. lys3: ror r18 out portb,r18 rcall tidsf rjmp lys4 ; 4.Andre roteringa mot venstre. lys4: rol r18 out portb,r18 rcall tidsf rjmp lys5 ; 5.Tredje roteringa mot hogre. lys5: ror r18 out portb,r18 rcall tidsf rjmp lys6 ; 6.Tredje roteringa mot venstre. lys6: rol r18 out portb,r18 rcall tidsf rjmp lys7 ; 7.Forste roteringa mot hogre. lys7: ror r18 out portb,r18 rcall tidsf rjmp lys8 ; 8.Forste roteringa mot venstre. lys8: rol r18 out portb,r18 rcall tidsf rjmp lys9 ; 9.Andre roteringa mot hogre. lys9: ror r18 out portb,r18 rcall tidsf rjmp lys10 ; 10.Andre roteringa mot venstre. lys10: rol r18 out portb,r18 rcall tidsf rjmp start ; Tidsforsinkelse. tidsf: ldi r16,$01 loop1: ldi r17,$02 loop2: nop dec r17 brne loop2 dec r16 brne loop1 ret Lenke til kommentar
Firesky Skrevet 5. juni 2007 Del Skrevet 5. juni 2007 Hvis du kunne sagt litt mer spesifikt hva den skal brukes til, og hva det er som ikke fungerer i koden så kan jeg godt hjelpe. Det er viktig å gi fra seg litt opplysninger før man poster, slik som hvilken arkitektur det er snakk om, i dette tilfellet AVR, å da er det litt greit å si hvilken chip man skal bruke osv. Nå så jeg det i koden at du hadde definert 1200, men allikevel Lenke til kommentar
Firesky Skrevet 5. juni 2007 Del Skrevet 5. juni 2007 Prøv denne: .include"1200def.inc" ; Definerer. start1: ldi r19,$ff out ddrb,r19;utg ldi r19,$00 out ddrd,r19;inng ldi r18,$ff ldi r20,$fe rjmp start ; Naar pind,0 ikkje er trykt er den 1. start: sbic pind,0; pind,0 er ein folar rjmp start //Dette er en rutine jeg har kalt 'alarmloop'. //Grunnen til det er fordi den gjør ikke noe annet //enn å loope 'alarm' rutinen 10 ganger. alarmloop: rcall alarm //kjør igjenom alarm rutinen en gang rcall tidsf //kjør tidsf rutinen en gang rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rcall alarm rcall tidsf rjmp start //hopp tilbake til start //denne rutinen har jeg kortet ned //slik at det blir litt mer oversiktlig //og at den roterer 8 ganger til venstre //og 8 ganger tilbake. alarm: out portb,r20 //spytt ut register 20 på port B rcall tidsf //kjør igjenom tidsf rutinen rol r18 //roter lysene/bitene i register 18 et hakk mot venstre out portb,r18 //spytt ut register 18 på port B rcall tidsf //kjør igjenom tidsf rutinen rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf ;Gå tilbake igjen ror r18 //denne er akuratt samme som rol bare her går den andre veien og roterer mot høyre out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ret //retuner til alarmloop ; Tidsforsinkelse. tidsf: ldi r16,$01 loop1: ldi r17,$02 loop2: nop dec r17 brne loop2 dec r16 brne loop1 ret Lenke til kommentar
05t3k4k3 Skrevet 6. juni 2007 Forfatter Del Skrevet 6. juni 2007 her er problem stillinga på oppgåva: * Følar i dør inn til klasseromet. * 8stk lys som skal rotere høgre/venstre/høgre 10 gangar for kvar inn-/utpassering * Eit aukustisk signal for kvar inn-/utpassering. har skreve litt om på programmet men det er ikkje heilt ferdi. Det fungerar å simulere det .include"1200def.inc" ; Definerer. start1: ldi r19,$ff out ddrb,r19;utg ldi r19,$00 out ddrd,r19;inng ldi r18,$ff ldi r20,$fe rjmp start ; Naar pind,0 ikkje er trykt er den 1. start: sbic pind,0; pind,0 er ein folar rjmp start ;Dette er en rutine eg har kalt 'lysloop'. ;Grunnen til det er fordi den gjor ikke noe annet ;enn aa loope 'lys' rutinen 10 ganger. lysloop: rcall lys ;kjor igjenom lys rutinen en gang rcall tidsf ;kjor tidsf rutinen en gang rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rcall lys rcall tidsf rjmp start ;hopp tilbake til start ;den roterer 8 ganger til venstre ;og 8 ganger tilbake. lys: out portb,r20 ;spyttar ut register 20 paa port B rcall tidsf ;kjor igjenom tidsf rutinen rol r18 ;roter lysene i register 18 et hakk mot venstre out portb,r18 ;spyttar ut register 18 paa port B rcall tidsf ;kjorer igjenom tidsf rutinen rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf rol r18 out portb,r18 rcall tidsf ;Gaa tilbake igjen ror r18 ;denne er akuratt samme som rol bare her gor den andre veien og roterer mot hoyre out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ror r18 out portb,r18 rcall tidsf ret ;retuner til lysloop ; Tidsforsinkelse. tidsf: ldi r16,$01 loop1: ldi r17,$02 loop2: nop dec r17 brne loop2 dec r16 brne loop1 ret Veit ikkje heilt om alle registera trengs? Lenke til kommentar
Frysning Skrevet 29. juli 2007 Del Skrevet 29. juli 2007 Anbefaler deg på det sterkeste å poste under elektronikk-forumet, fremfor her. Hvis du vil ha svar, that is. Sånn, i år. 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å