licht_attiny_test.asm


1
.nolist
2
.include <tn2313def.inc>
3
.list
4
.cseg
5
.def zahl=r18
6
.def temp=r16
7
.def sregsave=r19
8
.def tmp=r21
9
.org 0x000  
10
11
12
      rjmp RESET
13
         rjmp RESET
14
      rjmp RESET
15
      rjmp RESET
16
      rjmp RESET
17
      rjmp RESET
18
      rjmp RESET
19
      rjmp Licht_80s
20
      rjmp RESET
21
      rjmp RESET
22
      rjmp RESET
23
      rjmp RESET
24
      rjmp RESET
25
      rjmp RESET
26
reset:  
27
  
28
    ldi zahl,1        ;legt die anzahl der umläufe fest
29
    ldi temp,128      ;gibt die interrupts frei
30
    out SREG,temp           
31
      ldi temp, low(ramend)  ;stackpointer initialisiert
32
      out spl, temp  
33
    ldi temp,0b11111111    ; portb ist ausgang
34
    out ddrb,temp      
35
    ldi temp,0b00000000
36
    out ddrd,temp      ;portd ist eingang    
37
    ldi Temp, 2        ;hier wird der timer interupt freigegeben
38
    out TIMSK, Temp  
39
    sei
40
    ldi temp,5
41
    out TCCR0,temp      ; mit 1024 geteilte frequenz
42
  
43
timer:  ldi tmp , 255
44
     out TCNT0, tmp      ;timer zählt bis 255
45
    ldi temp,0
46
    cp zahl,temp
47
    breq licht_aus
48
    rjmp timer
49
            
50
             
51
52
licht_aus:
53
           ldi temp,0b11111111
54
       out portb,temp
55
       rjmp ende
56
57
  
58
Licht_80s:
59
60
      in sregsave ,SREG 
61
      push sregsave
62
      dec zahl
63
      pop sregsave
64
      out SREG,sregsave
65
      reti
66
67
68
ende:  
69
    
70
    rjmp ende