Zeitschleife für ca 1s Pause in Asm

Gast #241231
Lesenswert?

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?
#241234
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren