hi lars,
also abhängig von deiner Taktfrequenz also dem Systemtakt vom Oszillator
hast du mit diesem Code eine Verzögerung
du greifst auf den 16bit Zähler zurück und kannst den Controller 6535
mal lehr eine Schleife abarbeiten lassen. jeder Durchlauf der Schleife
umfasst 4 Taktzyklen des Controllers, daraus resultierend die
Periodenzeit multipliziert mit 65535 dann hast du deine Pausenzeit,
;**********Zeitfunktion****************
;**********generated by hansen*********
ldi zh,high(65535) ; High-Byte auf höchsten Speicherbereich setzen
ldi zl,low(65535) ; Low-Byte " "
Zaehler: ; Beginn der Zählerschleife
sbiw zl,1 ;subtrahiert den Wert 1 von ZL
brne Zaehler ;Springe solange zu Zaehler bis ZL=ZH
;somit läuft das ding 65535 mal durch
;**************************************************
Nachteil solch eines Software-Zählers ist,dass Du während dieser
Pausenzeit dem Controller ausser seinen Interrupts nix machen lassen
kannst. es sei denn du setzt ne Eingangsportabfrage in die
Zählerschleife um in diese Zeifunktion eingreifen zu können. Noch besser
wie ich dass hier dir gezeigt habe ist der Hardware - Timer, viel besser
und vorallem durch den Timer-Interrupt bist du total flexibel in deinem
Programm.
wenn Du noch weitere Fragen hast, dann nix wie her damit, hab mich seit
nem Monat mit nem AVR rumgeplagt hab jetzt e bissele ahnung von der
sache.
tschö,
hansen