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
|
|