1 | .include "m16def.inc"
|
2 |
|
3 | .def temp = r16
|
4 | .def aktwert = r18
|
5 | .equ step = 1
|
6 |
|
7 | .org $000
|
8 | rjmp main ;Reset Handler
|
9 | .org $002
|
10 | rjmp EXT_INT0 ;IRQ0 Handler
|
11 | .org $004
|
12 | rjmp EXT_INT1 ;IRQ1 Handler
|
13 | .org $006
|
14 | reti ;rjmp TIM2_COMP ;Timer2 Compare Handler
|
15 | .org $008
|
16 | reti ;rjmp TIM2_OVF ;Timer2 Overflow Handler
|
17 | .org $00A
|
18 | reti ;rjmp TIM1_CAPT ;Timer1 Capture Event Handler
|
19 | .org $00C
|
20 | reti ;rjmp TIM1_COMPA ;Timer1 Compare A Handler
|
21 | .org $00E
|
22 | reti ;rjmp TIM1_COMPB ;Timer1 Compare B Handler
|
23 | .org $010
|
24 | reti ;rjmp TIM1_OVF ;Timer1 Overflow Handler
|
25 | .org $012
|
26 | reti ;rjmp TIM0_OVF ;Timer0 Overflow Handler
|
27 | .org $014
|
28 | reti ;rjmp SPI_STC ;SPI Transfer Complete Handler
|
29 | .org $016
|
30 | reti ;rjmp USART_RXC ;USART RX Complete Handler
|
31 | .org $018
|
32 | reti ;rjmp USART_UDRE ;UDR Empty Handler
|
33 | .org $01A
|
34 | reti ;rjmp USART_TXC ;USART TX Complete Handler
|
35 | .org $01C
|
36 | reti ;rjmp ADC ;Analog Conversion Complete
|
37 | .org $01E
|
38 | reti ;rjmp EE_RDY ;EEPROM Ready
|
39 | .org $020
|
40 | reti ;rjmp ANA_COMP ;Analog Comparator Handler
|
41 | .org $022
|
42 | reti ;rjmp TWI ;Two-Wire Serial Interface
|
43 | .org $024
|
44 | reti ;rjmp EXT_INT2 ;IRQ2 Handler
|
45 | .org $026
|
46 | reti ;rjmp TIM0_COMP ;Timer0 Comnpare Handler
|
47 | .org $028
|
48 | reti ;rjmp SPM_RDY ;Store Program Memory Ready
|
49 |
|
50 | main:
|
51 |
|
52 | ;Stackpointer 0
|
53 | ldi temp, LOW(RAMEND)
|
54 | out SPL, temp
|
55 | ldi temp, HIGH(RAMEND)
|
56 | out SPH, temp
|
57 |
|
58 |
|
59 | ;Aus/Eingänge
|
60 | ldi temp, 8
|
61 | out DDRB, temp ; Ausgang
|
62 | ldi temp, 0x00
|
63 | out PORTB, temp
|
64 |
|
65 | ;PWM
|
66 | ldi temp, (1<<WGM00) | (1<<WGM01) | (1<<CS02) | (1<<COM01); Einstellungen siehe Seite 81-83
|
67 | out TCCR0, temp
|
68 |
|
69 | ldi aktwert, 23 ;Startwert, entspricht ca. 1,5ms
|
70 | out OCR0, aktwert
|
71 |
|
72 | ldi temp, 0b00001010
|
73 | out MCUCR, temp
|
74 |
|
75 | ldi temp, 0b11000000
|
76 | out GICR, temp
|
77 | ;Interrupts freigeben
|
78 | sei ; Interrupts allgemein aktivieren
|
79 |
|
80 | ende:
|
81 |
|
82 | rjmp ende
|
83 |
|
84 | EXT_INT0:
|
85 | ldi temp, 31 ;wert 31 entspricht ca. 2ms
|
86 | cp aktwert, temp
|
87 | breq PC+4
|
88 | ldi temp, step
|
89 | add aktwert, temp
|
90 | out OCR0, aktwert
|
91 | reti
|
92 |
|
93 | EXT_INT1:
|
94 | ldi temp, 15 ;wert 15 entspricht ca. 1ms
|
95 | cp aktwert, temp
|
96 | breq PC+4
|
97 | ldi temp, step
|
98 | sub aktwert, temp
|
99 | out OCR0, aktwert
|
100 | reti
|