.nolist ;List der Include-Datei unterdrücken .include "m8def.inc" ;Hardwaredefinitionen einbinden .list ;Programm listen .listmac ;Makros listen .equ clock=14745600 ;Taktfrequenz des AVR ;USART Baudrate .equ BAUD = 57600 .def null =r2 ;immer Null .def wl=r24 .def wh=r25 .cseg .org 0 ; hier geht das Programm los ; Interrupt-Vektoren ; rjmp reset ;Reset Handler reti; rjmp EXT_INT0 ;IRQ0 Handler reti; rjmp EXT_INT1 ;IRQ1 Handler reti; rjmp TIM2_COMP ;Timer2 Compare Handler reti; rjmp TIM2_OVF ;Timer2 Overflow Handler reti; rjmp TIM1_CAPT ;Timer1 Capture Handler rjmp TIM1_COMPA ;Timer1 CompareA Handler reti; rjmp TIM1_COMPB ;Timer1 CompareB Handler reti; rjmp TIM1_OVF ;Timer1 Overflow Handler reti; rjmp TIM0_OVF ;Timer0 Overflow Handler reti; rjmp SPI_STC ;SPI Transfer Complete Handler reti; rjmp USART_RXC ;USART RX Complete Handler reti; rjmp USART_UDRE ;UDR Empty Handler reti; rjmp USART_TXC ;USART TX Complete Handler reti; rjmp ADC ;ADC Conversion Complete Handler reti; rjmp EE_RDY ;EEPROM Ready Handler reti; rjmp ANA_COMP ;Analog Comparator Handler reti; rjmp TWSI ;Two-wire Serial Interface Handler reti; rjmp SPM_RDY ;Store Program Memory Ready Handler reset: ldi wl,low(ramend) ;Stackpointer initialisieren out SPL,wl ldi wl,high(ramend) out SPH,wl ;INTERNES RAM LÖSCHEN clr wl ldi xl,low(0x60) ;Beginn des RAM-Bereiches Low ldi xh,high(0x60) ;Beginn des RAM-Bereiches High ramclr: st x+,wl ;Speicherzelle löschen cpi xl,low(ramend+1) ;RAM-Ende (Low) erreicht? brne ramclr ;nein -> Schleife cpi xh,high(ramend+1) ;RAM-Ende (High) erreicht? brne ramclr ;nein -> Schleife ;Ports initialisieren ;portb als ausgang ldi wl,0b11111111 out ddrb,wl ;************ TIMER_COUNTER_2 FAST_PWM 8BIT clk1024*************** ldi wl,1<