Hallo, da ich neu auf dem gebiet des MC bin, habe ich mal eine Frage, ob mir jemand einmal Assembler code fuer 1s pause posten kann.Es handelt sich um einen ATMEGA8 mit einem 16Mhz Oszillator. Danke im vorraus ! Mark
Es gibt im Prinzip zwei Möglichkeiten. Entweder machst du es mit einem Timer, dann kannst du während der Wartezeit noch was anderes tun oder den Mikrocontroller zur Stromersparnis in den Schlafmodus schalten, oder du baust einfach eine Warteschleife. Wie genau muß das mit der Sekunde denn sein?
Bzw. soll das ne Uhr werden? Oder welchen Zweck verfolgst du ;)
eine led die blinken soll, habe aber schon was passendes und funtionierendes vorerst gefunden.
Muss nur ein mal im Programm aufgerufen werden
1 | init_16timer:
|
2 | ldi r16,(1<<CS12)|(0<<CS11)|(0<<CS10);;CLK/256 Timer-Vorteiler |
3 | out TCCR1B,r16 |
4 | ret
|
Und das jedes mal wenn gewartet werden soll: [c]wait: ldi r16,0x00 ;Timerlöschen out TCNT1H,r16 out TCNT1L,r16 ldi r16, (1<<TOV1);TOV1-Flag löschen out TIFR,r16 wait_loop: in r16, TIFR sbrs r16,TOV1 rjmp wait_loop ret[c] Mit einem 16MHz-Quarz wartet die routine ca 1.05s
Die Codesammlung ist nicht dazu da, Fragen zu stellen, sondern, wie ja der Name sagt, Code zu posten. Deshalb kannst Du hier auch Code dazu finden: http://www.mikrocontroller.net/forum/read-4-57760.html#new Peter
schau mal mit googel , da gibt es ein programm "avrdelay". da kannst die zeit eingeben, die mhz und bekommst dann als asm-source die warteschleife heraus. mfg pebisof
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.