Google mal nach "AVR Delay Loop" für Assembler.
Hi!
Da es ja kein Assembler Forum gibt poste ich es hier.
Hab mir gestern mal ein AT90S2313 gekauft und hab auch gleich mal ein Tut gelesen... Ich programmiere die Dinger mit Assembler. Jetzt wollt ich mir ein Wechselblinker basteln. Das Problem ist das wenn ich einfach:
mache, ist es ja logisch das es aussieht als wenn beide LEDs die ganzen Zeit leuchten.Code:.nolist .include "2313def.inc" .list ldi r16, 0b00000101 out DDRD, r16 looping: ldi r16, 0b00000001 out PORTD, r16 ldi r16, 0b00000100 out PORTD, r16 rjmp looping
Also brauch ich irgendwie ein Unterprogramm,was so 0,5 Secs wartet... Wie kann man das Proggen?
Mfg
Elektronik303
Google mal nach "AVR Delay Loop" für Assembler.
Der Code funzt aber komischerweiße nich:
Müsste doch eigentlich klappen?!Code:.nolist .include "2313def.inc" .list ldi r16, 0b00000101 out DDRD, r16 looping: ;Blink-Schleife ldi r16, 0b00000001 out PORTD, r16 rcall delaymsec ldi r16, 0b00000100 out PORTD, r16 rcall delaymsec rjmp looping delaymsec: ldi R16, $12 WGLOOP0: ldi R17, $BC WGLOOP1: ldi R18, $C4 WGLOOP2: dec R18 brne WGLOOP2 dec R17 brne WGLOOP1 dec R16 brne WGLOOP0 nop nop ret
Für welche Zeit ist die Schleife denn berechnet?
0,5 Secs bei 4Mhz...
Ja, müsste eigendlich funktionieren.Müsste doch eigentlich klappen?!
Nur so eine Idee ...
Es wäre nicht schlecht, vorher den Stackpointer und den RAM zu initialisieren.
Code:ldi r16,low(ramend) ;Stackpointer setzen out spl,r16 ldi r16,high(ramend) out sph,r16 ldi yl,0x60 ;Beginn des RAM ldi yh,0 clr r16 init: st y+,r16 ;RAM-löschen cpi yl,low(ramend+1) brne init cpi yh,high(ramend+1) brne init
Sorry, aber wenn ich deinen Code bei mir einfüge, sagt er mir da wär ein Fehler drin...
Und ich habe was lustiges rausgefunden... Mein AVR macht nur dann Wechselblinker, wenn er auch lust drauf hat... Heute z.b. Ging der Wechselblinker für ungefähr 1. Minute dann ist er auch wieder ausgegangen... Ich hab die Batterie nochmal neu drangemacht und es ging immernoch nicht. Das ist mir ein Rätsel. Glaubt ihr das Teil ist kaputt und ich sollte ein neues holen? Die Schaltung kann nicht falsch sein...
Lesezeichen