1 | ; Blinklicht PB3/4 -> GND
|
2 | ; Taste PB1 -> GND
|
3 | ; Ton PB0 -> Kondensator -> Widerstand -> (evt.Transistor) -> Lautsprecher
|
4 |
|
5 |
|
6 | ; Attiny13 4.8Mhz / 8 (CKDIV8) =600Khz
|
7 |
|
8 | ; gruss herrmueller
|
9 |
|
10 |
|
11 | .include "tn13def.inc"
|
12 | .device AtTiny13
|
13 |
|
14 | rjmp RESET
|
15 | rjmp TastINT0;reti ; Int0-Interrupt
|
16 | reti ; PcInt0-Interrupt
|
17 | reti ; Timer/Counter 0 Overflow
|
18 | reti ; EEprom ready
|
19 | reti ; Analog Commarator
|
20 | reti ; Timer/Counter Compare Match A
|
21 | reti ; Timer/Counter Compare Match B
|
22 | reti ;rjmp Wdir ; reti ; Watchdog Timeout
|
23 | reti ; ADC Conversion complete
|
24 | reti
|
25 |
|
26 |
|
27 | .def temp = R16
|
28 | .def Zaehl= R17
|
29 |
|
30 |
|
31 | Reset:
|
32 | ldi temp,low(Ramend)
|
33 | out SPL,temp
|
34 | ldi temp,0b00011001 ; PB3/4 Led PB0 Ton -> Ausgang
|
35 | out DDRB,temp ; PB1 Taste -> Eingang
|
36 | ldi temp,0b00000110 ; Pullup
|
37 | out PortB,temp
|
38 | sei
|
39 |
|
40 | Ausschalten:
|
41 | ldi temp, (1<<INT0)
|
42 | out GIMSK,temp ; INT0 Taste freischalten
|
43 |
|
44 | ldi temp, (1<<SE)+(1<<SM1)+(0<<ISC01)
|
45 | out MCUCR,temp ; Sleep und INT0 low level
|
46 | sleep ;
|
47 |
|
48 | ;-----hier gehts nach Erwachen weiter. INT0 Taste Interr.Routine
|
49 |
|
50 | HauptWach:
|
51 | sbis PinB,1 ; Taste nicht gedr ->
|
52 | rjmp HauptWach ; warte bis Taste los
|
53 | rjmp BlinkStart ; Taste nicht gedr. ->
|
54 |
|
55 | ;----------Tasteninterrupt zum Einschalten nach sleep --------
|
56 | TastINT0:
|
57 | ; in Statusreg , Sreg
|
58 | ldi temp,0 ; interrupt ausschalten
|
59 | out GIMSK,temp
|
60 | ; out SREG, Statusreg
|
61 | reti
|
62 |
|
63 | ;-------------------------------------------------
|
64 |
|
65 | Blinkstart:
|
66 |
|
67 | ; Timer0 einstellen für Ton
|
68 | ldi temp, (1<<WGM01)|(1<<COM0A0) ; Toggle OC0A (PB0) on Compare Match (CTC Mode)
|
69 | out TCCR0A, temp
|
70 | ldi temp, (1<<CS01)|(0<<CS00) ; Takt 0,6MHz / Vorteiler 8
|
71 | out TCCR0B, temp
|
72 |
|
73 |
|
74 | ldi Zaehl,20 ; 20 mal
|
75 | Blinken:
|
76 | ldi temp, 151 ; c spielen an PB0
|
77 | out OCR0A, temp
|
78 |
|
79 | sbi PortB,3 ; 3 an
|
80 | rcall delay50ms
|
81 | cbi PortB,3 ; 3 aus
|
82 | rcall delay50ms
|
83 | sbi PortB,3 ; 3 an
|
84 | rcall delay50ms
|
85 | cbi PortB,3 ; 3 aus
|
86 | rcall delay50ms
|
87 |
|
88 | rcall delay50ms
|
89 | rcall delay50ms
|
90 | rcall delay50ms
|
91 | rcall delay50ms
|
92 |
|
93 | ldi temp, 114 ; f spielen an PB0
|
94 | out OCR0A, temp
|
95 | sbi PortB,4 ; 4 an
|
96 | rcall delay50ms
|
97 | cbi PortB,4 ; 4 aus
|
98 | rcall delay50ms
|
99 | sbi PortB,4 ; 4 an
|
100 | rcall delay50ms
|
101 | cbi PortB,4 ; 4 aus
|
102 | rcall delay50ms
|
103 |
|
104 | rcall delay50ms
|
105 | rcall delay50ms
|
106 | rcall delay50ms
|
107 | rcall delay50ms
|
108 |
|
109 | dec Zaehl
|
110 | brne Blinken
|
111 |
|
112 | clr temp
|
113 | out TCCR0B, temp ; Timer (Töne) ausschalten
|
114 | rjmp Ausschalten
|
115 |
|
116 | ;--------------------------------------
|
117 |
|
118 | Delay50ms:
|
119 | push R25
|
120 | push R30
|
121 | push R31
|
122 | ldi R25, 1 ;
|
123 | WGLOOP9: ldi R30, $63 ; 50ms
|
124 | WGLOOPa: ldi R31, $64
|
125 | WGLOOPb: dec R31
|
126 | brne WGLOOPb
|
127 | dec R30
|
128 | brne WGLOOPa
|
129 | dec R25
|
130 | brne WGLOOP9
|
131 | pop R31
|
132 | pop R30
|
133 | pop R25
|
134 | ret
|
135 |
|
136 | .exit
|