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,3        ;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
    ldi tmp , 255
43
     out TCNT0, tmp      ;timer zählt bis 255
44
    ldi temp,0
45
    cp zahl,temp
46
    breq licht_aus        
47
             
48
49
licht_aus:
50
           ldi temp,0b11111111
51
       out portb,temp
52
       rjmp ende
53
54
  
55
Licht_80s:
56
57
      in sregsave ,SREG 
58
      push sregsave
59
      dec zahl
60
      pop sregsave
61
      out SREG,sregsave
62
      reti
63
64
65
ende:  
66
    
67
    rjmp ende