; ********************************************************** ; * Mehr Action: LED-Blinker mit Verzoegerung * ; * (C)2005 by info@avr-asm-tutorial.net * ; ********************************************************** ; .INCLUDE "tn13def.inc" ; ; Schaltbild: ; ATMEL ATtiny13 ; ___ ____ ; ___ 1/ |_| |8 ;+5 Volt O--|___|----|Res Vcc|----O + 5 Volt ; | | ; |PB3 PB2| ; | |6 ___ ; |PB4 PB1|--|___|--|<|--O + 5 Volt ; 4| | 330 LED ; 0 Volt O----|Gnd PB0| ; |__________| ; ; Benutzte Register ; ; ZH:ZL (R31:R30) ist Zaehlregister fuer Verzoegerung ; ; Programm ; sbi DDRB,1 ; PB1 ist Ausgang loop: sbi PORTB,1 ; 1 Takt, Ausgang auf Eins (LED ist aus) ; ; Verzoegerungsschleife Eins ; Registerpaar Z = ZH:ZL wird von Null rueckwaerts auf Null gezaehlt ; loop1: sbiw ZL,1 ; 2 Takte, Ziehe von ZH:ZL eine 1 ab brne loop1 ; 2 Takte bei Sprung, 1 Takt bei Nicht-Sprung ; ; 65.535 mal zwei+zwei Takte plus 1 mal zwei+ein Takt = ; 262.143 Takte ; cbi PORTB,1 ; 1 Takt, Ausgang auf Null (LED ist an) ; ; Noch mal 262.143 Takte Verzoegerung ; loop2: sbiw ZL,1 ; Ziehe von ZH:ZL eine 1 ab brne loop2 ; wenn noch nicht Null, wiederhole ; ; Ende Verzoegerungsschleife ; rjmp loop ; 2 Takte, und das Ganze von vorne ; ; Zeitbilanz: ; Ausgang 1 setzen: 1 Takt ; Verzoegerungsschleife 1: 262.143 Takte ; Ausgang 0 setzen: 1 Takt ; Verzoegerungsschleife 2: 262.143 Takte ; Ruecksprung an Anfang: 2 Takte ; -------------------------------------- ; Summe 524.290 Takte ; ; ; Interner Taktgenerator ATtiny13 = 1.200.000 Takte pro Sekunde ; ; Blinkfrequenz: = 1.200.000 / 524.290 = 2,2888 Hz ; ; End of source code ;