Test_Tiny13.asm
1 | ;PWM-Test
| 2 |
| 3 | .include "tn13def.inc"
| 4 |
| 5 | .def TEMP1 = r16
| 6 | .def SAVE_SREG = r17
| 7 | .def PAUSE = r18
| 8 | .def PWM = r19
| 9 | .def LED = r20
| 10 | .def DIR = r21
| 11 |
| 12 |
| 13 |
| 14 | .org $000
| 15 |
| 16 | rjmp RESET ;Reset-Vektor
| 17 |
| 18 | .org $003
| 19 |
| 20 | rjmp TIMER1 ;Timer-Vektor
| 21 |
| 22 |
| 23 | RESET:
| 24 | ldi TEMP1, 0b00001000 ;I/O-Einstellung
| 25 | out DDRB, TEMP1 ;PB3 als Ausgang
| 26 |
| 27 | ldi TEMP1, 0b00000010 ;Vorteiler 0->001 8->010 64->011
| 28 | out TCCR0B, TEMP1
| 29 |
| 30 | ldi TEMP1, 0b00000010 ;Interrupt bei Timer0 Überlauf
| 31 | out TIMSK0, TEMP1
| 32 |
| 33 | clr PAUSE
| 34 | clr PWM
| 35 | clr LED
| 36 | clr DIR
| 37 |
| 38 | sei ;Interrrupts freigeben
| 39 |
| 40 |
| 41 | LOOP1:
| 42 | cpi PWM, 0
| 43 | brne LOOP2
| 44 | cbi PORTB, 3 ;LED an
| 45 |
| 46 | LOOP2:
| 47 | cp LED, PWM ;aktuelle Helligkeit erreicht?
| 48 | brne LOOP3 ;nein, weiter leuchten
| 49 | sbi PORTB, 3 ;ja, LED aus!
| 50 |
| 51 | LOOP3:
| 52 | inc PWM
| 53 | rjmp LOOP1
| 54 |
| 55 | TIMER1:
| 56 | in SAVE_SREG, SREG
| 57 | push SAVE_SREG
| 58 |
| 59 | cpi DIR, 0
| 60 | brne TIMER3
| 61 |
| 62 | cp PAUSE, LED ;LED +
| 63 | brne TIMER2
| 64 | inc LED
| 65 | clr PAUSE
| 66 | cpi LED, 255
| 67 | brne TIMER2
| 68 | inc DIR
| 69 |
| 70 | TIMER2:
| 71 | dec PAUSE
| 72 |
| 73 | pop SAVE_SREG
| 74 | out SREG, SAVE_SREG
| 75 |
| 76 | reti
| 77 |
| 78 | TIMER3:
| 79 | cp PAUSE, LED ;LED -
| 80 | brne TIMER4
| 81 | dec LED
| 82 | clr PAUSE
| 83 | cpi LED, 0
| 84 | brne TIMER4
| 85 | clr DIR
| 86 |
| 87 | TIMER4:
| 88 | dec PAUSE
| 89 |
| 90 | pop SAVE_SREG
| 91 | out SREG, SAVE_SREG
| 92 |
| 93 | reti
|
|