;==================================================================== ;Titel: Belichtungstimer ;Datei: ATmega8-Belichtungstimer.asm ;Autor: Alexander Sewergin ;Datum: 29.07.2006 ;Eingebunden: m8def.inc ;==================================================================== ;Deklarationsteil ;==================================================================== .INCLUDE "m8def.inc" .CSEG ;CodeSegment .ORG 0x000 ;ab Adresse 0x0000 im Programm-Speicher ;==================================================================== ;Interrupt Vektoren (Sprungadresse bei Interrupt/Reset) ;==================================================================== RJMP Initalisierung ;0x0000 Reset RETI ;0x0001 INT0 RETI ;0x0002 INT1 RETI ;0x0003 TIMER2 COMP RETI ;0x0004 TIMER2 OVF (Overflow) RETI ;0x0005 TIMER1 CAPT RETI ;0x0006 TIMER1 COMPA RETI ;0x0007 TIMER1 COMPB RJMP T1OVF ;0x0008 TIMER1 OVF (Overflow) RJMP T0OVF ;0x0009 TIMER0 OVF (Overflow) RETI ;0x0010 SPI, STC RETI ;0x0011 USART, RXC RETI ;0x0012 USART, UDRE RETI ;0x0013 USART, TXC RETI ;0x0014 ADC RETI ;0x0015 EE_RDY RETI ;0x0016 ANA_COMP RETI ;0x0017 TWI RETI ;0x0018 SPM_RDY ;==================================================================== ;Definition ;==================================================================== .DEF temp=r16 ;Definiere Register 16 als "temp" ;==================================================================== ;Port-Belegung ;==================================================================== LDI temp, 0xFF OUT DDRB, temp ;==================================================================== ;Initalisierung ;==================================================================== Initalisierung: LDI temp, 128 OUT MCUCR, temp ;SLEEP-Enable / IDLE Mode LDI temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse (STACK) OUT SPL, temp LDI temp, HIGH(RAMEND);High-Byte der obersten RAM-Adresse (STACK) OUT SPH, temp SEI ;INTERRUPT-Enable LDI temp, 5 ;OUT TCCR0, temp ;TIMER-COUNTER0 Prescaler = 1024 OUT TIMSK, temp ;TIMER-COUNTER0 Overflow Interrupt-Enable 1 (bit 0 = 1) ;TIMER-COUNTER1 Overflow Interrupt-Enable (bit 2= +4) ; --- ; 5 LDI temp, 2 OUT TCCR1B,temp ;TIMER-COUNTER1 Prescaler = 8 LDI ZL, LOW(Segment*2) ; Low-Byte der Adresse in Z-Pointer LDI ZH, HIGH(Segment*2) ; High-Byte der Adresse in Z-Pointer RJMP Main ;==================================================================== ;Hauptschleife: ;==================================================================== Main: lpm mov r16, r0 out PORTB, r16 RJMP Main ;==================================================================== ;Timer0 Overflow Interrupt Schleife ( 8-Bit) ;==================================================================== T0OVF: RETI ;==================================================================== ;Timer1 Overflow Interrupt Schleife ( 16-Bit) ;==================================================================== T1OVF: inc ZL RETI Segment: .db 0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0