; ************************************************************** ; * Der Timer blinkt alleine * ; * (C)2005 by 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| ; |__________| ; ; Register definitions ; .DEF rmp = R16 ; Multipurpose register ; ; Programmbeginn ; ; Internen Prozessortakt durch 32 teilen ; Takt = 9,6 MHz / 32 = 300 kHz ; ldi rmp,0b10000000 ; Vorteiler-Bit auf Eins setzen out CLKPR,rmp ldi rmp,0b00000101 ; Prozessorvorteiler auf 32 setzen out CLKPR,rmp ; ; PB1=OC0B als Ausgang setzen ; sbi DDRB,1 ; ; 8-Bit-Timer mit 300 kHz Prozessortakt mit Vorteiler durch 1024 ; 300 kHz / 1024 = 293 Hz, / 147 = 2 Hz, /2 = 1 Hz ; ldi rmp,147 ; Setze Compare A auf 147 (Ende Zaehler) out OCR0A,rmp ldi rmp,74 ; Setze Compare B auf halben Timer-Wert out OCR0B,rmp ldi rmp,0b00010010 ; CTC, toggle Ausgang B bei Compare Match out TCCR0A,rmp ldi rmp,0b00000101 ; Vorteiler durch 1024, Timer starten out TCCR0B,rmp ldi rmp,0b00100000 ; SLEEP Modus ermoeglichen out MCUCR,rmp sleep ; Prozessor schlafen legen ; Unsinn ; End of source code ;