extIntrrpt.asm


1
.include "m8def.inc"
2
.def count = r17
3
.def temp = r16
4
5
.equ CLOCK = 4000000
6
.equ BAUD = 9600
7
.equ UBRRVAL = CLOCK/(BAUD*16)-1
8
9
.org 0x000      ; kommt ganz an den Anfang des Speichers
10
         rjmp RESET    ; Interruptvektoren überspringen
11
        ; und zum Hauptprogramm
12
         rjmp EXT_INT0    ; IRQ0 Handler
13
         reti EXT_INT1    ; IRQ1 Handler
14
         reti TIM2_COMP
15
         reti TIM2_OVF
16
         reti TIM1_CAPT    ; Timer1 Capture Handler
17
         reti TIM1_COMPA  ; Timer1 CompareA Handler
18
         reti TIM1_COMPB  ; Timer1 CompareB Handler
19
         reti TIM1_OVF    ; Timer1 Overflow Handler
20
         reti TIM0_OVF    ; Timer0 Overflow Handler
21
         reti SPI_STC    ; SPI Transfer Complete Handler
22
         reti USART_RXC    ; USART RX Complete Handler
23
         reti USART_DRE    ; UDR Empty Handler
24
         reti USART_TXC    ; USART TX Complete Handler
25
         reti ADC    ; ADC Conversion Complete Interrupt Handler
26
         reti EE_RDY    ; EEPROM Ready Handler
27
         reti ANA_COMP    ; Analog Comparator Handler
28
         reti TWSI    ; Two-wire Serial Interface Handler
29
         reti SPM_RDY    ; Store Program Memory Ready Handler
30
31
RESET:  ldi count, 0    ;hier beginnt das Hauptprogramm
32
  
33
  ldi temp, LOW(RAMEND)
34
         out SPL, temp
35
         ldi temp, HIGH(RAMEND)
36
         out SPH, temp
37
38
         ldi temp, 0b00000011  ;INT0  konfigurieren (rising edge)
39
         out MCUCR, temp
40
41
         ldi temp, 0b01000000  ;INT0 aktivieren
42
         out GICR, temp
43
44
        ; Baudrate einstellen
45
        ldi temp, LOW(UBRRVAL)
46
        out UBRRL, temp
47
        ldi temp, HIGH(UBRRVAL)
48
        out UBRRH, temp
49
50
        ; Frame-Format: 8 Bit
51
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
52
        out UCSRC, temp
53
54
        sbi UCSRB,TXEN                    ; TX aktivieren
55
         
56
  sei
57
  
58
Loop:  rjmp loop
59
60
EXT_INT0:  ldi temp, 'T'
61
    rcall serout   
62
    reti
63
64
serout:
65
  sbis UCSRA,UDRE    ; Warten bis UDR für das nächste
66
        ; Byte bereit ist
67
  rjmp serout
68
  out UDR, temp
69
  ret      ; zurück zum Hauptprogramm