002.asm


1
; ******************************************************
2
; BASIC .ASM template file for AVR
3
; ******************************************************
4
5
.include "D:\PROGRA~3\VMLAB\include\m8def.inc"
6
7
; Define here the variables
8
;
9
10
.equ CLOCK = 14745600
11
.equ BAUD = 9600
12
.equ UBRRVAL = CLOCK/(BAUD*16)-1
13
14
.equ INTERVAL = 0.25
15
.equ PRESCALER = 1024
16
.equ OCVAL = (INTERVAL*CLOCK)/PRESCALER
17
18
.def temp = r16
19
.def sumH = r25
20
.def sumL = r24
21
22
; Define here Reset and interrupt vectors, if any
23
24
.org 0x000                    ; kommt ganz an den Anfang des Speichers
25
         rjmp start           ; Interruptvektoren überspringen
26
                              ; und zum Hauptprogramm
27
      reti      ; IRQ0 Handler
28
      reti      ; IRQ1 Handler
29
      reti
30
      reti
31
      reti      ; Timer1 Capture Handler
32
      rjmp TIM1_COMPA  ; Timer1 CompareA Handler
33
      reti      ; Timer1 CompareB Handler
34
      reti      ; Timer1 Overflow Handler
35
      reti      ; Timer0 Overflow Handler
36
      reti      ; SPI Transfer Complete Handler
37
      reti      ; USART RX Complete Handler      
38
      reti      ; UDR Empty Handler
39
      reti      ; USART TX Complete Handler
40
      reti      ; ADC Conversion Complete Interrupt Handler
41
      reti      ; EEPROM Ready Handler
42
      reti      ; Analog Comparator Handler
43
      reti      ; Two-wire Serial Interface Handler
44
      reti      ; Store Program Memory Ready Handler
45
46
47
start:
48
  ; stack
49
  ldi temp, LOW(RAMEND)
50
  out SPL, temp
51
  ldi temp, HIGH(RAMEND)
52
  out SPH, temp
53
54
  ldi temp, 0xFF
55
  out DDRD, temp
56
  
57
  ldi temp, 0xFF
58
  out PORTD, temp
59
  
60
  ;output compare werte
61
  ldi temp, HIGH(OCVAL)
62
  out OCR1AH, temp
63
  ldi temp, LOW(OCVAL)
64
  out OCR1AL, temp
65
66
  ; ctc und prescaler
67
  ldi temp, 0b00000000
68
  out TCCR1A, temp
69
  ldi temp, 0b00001101
70
  out TCCR1B, temp
71
  
72
  ; timer interrups
73
  ldi temp, 0b00010000
74
  out TIMSK, temp
75
  
76
  ; baudrate
77
  ldi temp, LOW(UBRRVAL)
78
  out UBRRL, temp
79
  ldi temp, HIGH(UBRRVAL)
80
  out UBRRH, temp
81
82
  ; frameformat
83
  ldi temp, (1<<URSEL)|(3<<UCSZ0)
84
  out UCSRC, temp
85
  
86
  ; tx aktivieren
87
  sbi UCSRB,TXEN
88
  
89
  sei
90
91
92
loop:
93
  rjmp loop
94
95
96
serout:
97
  sbis UCSRA,UDRE
98
  rjmp serout      ; Warten
99
  out UDR, temp
100
  ret
101
102
103
TIM1_COMPA:
104
  push temp
105
  ;adiw sumH:sumL, 1
106
  ;mov temp, sumH
107
  ;rcall serout
108
  ;mov temp, sumL
109
  ;rcall serout
110
  ldi temp, 'a'
111
  rcall serout
112
  ldi temp, 10
113
  rcall serout
114
  ldi temp, 13
115
  rcall serout  
116
  pop temp
117
  reti