servo.asm


1
.include "m8def.inc"
2
3
#define   temp  r16
4
5
6
7
8
9
10
.org 0x000
11
       rjmp start
12
.org INT0addr                 ; External Interrupt0 Vector Address
13
       reti                   
14
.org INT1addr                 ; External Interrupt1 Vector Address
15
       reti                   
16
.org OC2addr                  ; Output Compare2 Interrupt Vector Address
17
       reti                   
18
.org OVF2addr                 ; Overflow2 Interrupt Vector Address
19
       reti
20
.org ICP1addr                 ; Input Capture1 Interrupt Vector Address
21
       reti                   
22
.org OC1Aaddr                 ; Output Compare1A Interrupt Vector Address
23
       reti                   
24
.org OC1Baddr                 ; Output Compare1B Interrupt Vector Address
25
       reti                   
26
.org OVF1addr                 ; Overflow1 Interrupt Vector Address
27
       rjmp timer1
28
.org OVF0addr                 ; Overflow0 Interrupt Vector Address
29
       reti
30
.org SPIaddr                  ; SPI Interrupt Vector Address
31
       reti                   
32
.org URXCaddr                 ; USART Receive Complete Interrupt Vector Address
33
       reti                   
34
.org UDREaddr                 ; USART Data Register Empty Interrupt Vector Address
35
       reti                   
36
.org UTXCaddr                 ; USART Transmit Complete Interrupt Vector Address
37
       reti                   
38
.org ADCCaddr                 ; ADC Interrupt Vector Address
39
       reti                   
40
.org ERDYaddr                 ; EEPROM Interrupt Vector Address
41
       reti                   
42
.org ACIaddr                  ; Analog Comparator Interrupt Vector Address
43
       reti                   
44
.org TWIaddr                  ; Irq. vector address for Two-Wire Interface
45
       reti                                 
46
.org SPMRaddr                 ; SPM complete Interrupt Vector Address
47
       reti                   
48
49
50
51
52
53
54
start:
55
56
  ldi    temp,    LOW(RAMEND)
57
  out    SPL,    temp
58
  ldi    temp,    HIGH(RAMEND)
59
  out    SPH,    temp
60
61
  ldi    temp,    0xFF
62
  out    DDRB,    temp
63
  rcall  loadtimer
64
  ldi    temp,    1<<CS12
65
  out    TCCR1B,    temp
66
  ldi    temp,    1<<TOIE1
67
  out    TIMSK,    temp
68
  ldi    temp,    (1<<COM1A1)| (1<<COM1A0) | (1<<WGM11) | (1<<WGM10); 
69
  out    TCCR1A,    temp
70
71
  ldi    temp,    0x03
72
  out    OCR1AH,    temp
73
  ldi    temp,    0xeF
74
  out    OCR1AL,    temp
75
76
77
78
79
loop: rjmp loop
80
81
82
timer1:
83
    rcall loadtimer
84
    reti
85
86
87
88
loadtimer:
89
      cli
90
      ldi    temp,    0x63
91
      out    TCNT1H,    temp
92
      ldi    temp,    0x00
93
      out    TCNT1L,    temp
94
      sei
95
96
      ret