robo.asm


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