;********************************************************************************** ;Beschreibung: ;Dieses Programm lässt eine LED am Pin0 des Ports B eines ATmega8 ;mit 2Hz blinken (Bei 4MHz Oszillator-Frequenz). ;Ein Timer (TC0) zählt nach oben bis zum Überlauf, woraufhin ;ein TC0-Überlauf-Interrupt erzeugt wird und zur "TIM0_OVF"-ISR verzweigt wird, ;die dann die LED ein- oder ausschaltet. ;********************************************************************************** .include "m8def.inc" ;Die Definitionsdatei des ATmega8 einfügen. .def temp = R16 ;Es werden in diesem Programm 2 Arbeitsregister benötigt. .def temp2 = R17 ;benötigt: R16 und R17 (ginge auch mit nur einem). rjmp RESET ; Reset Handler reti ; IRQ0 Handler reti ; IRQ1 Handler reti ; Timer2 Compare Handler reti ; Timer2 Overflow Handler reti ; Timer1 Capture Handler reti ; Timer1 CompareA Handler reti ; Timer1 CompareB Handler reti ; Timer1 Overflow Handler rjmp TIM0_OVF ; Timer0 Overflow Handler. Erzeugt ein Interrupt beim Timer0-Überlauf und springt zu "TIM0_OVF:"-ISR reti ; SPI Transfer Complete Handler reti ; USART RX Complete Handler reti ; UDR Empty Handler reti ; USART TX Complete Handler reti ; ADC Conversion Complete Handler reti ; EEPROM Ready Handler reti ; Analog Comparator Handler reti ; Two-wire Serial Interface Handler reti ; Store Program Memory Ready Handler reset: ldi temp, LOW(RAMEND) ;Initialisieren des StackPointers: out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ;Int. Oszillator kalibrieren: ldi temp, $C2 ;Diesen Wert im STK500-Steuerpanel ablesen unter "Advanced" (dort wird out OSCCAL, temp ;auch die gewünschte Frequenz des int. Oszillators eingestellt). ldi temp, 1<