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 | sei
|
35 |
|
36 | Ausschalten:
|
37 | ldi temp,0b00000000 ; Alles auf Eingang
|
38 | out DDRB,temp ; PB1 Taste -> Eingang
|
39 | ldi temp,0b00000110 ; Pullup PB2=offen PB1= taste
|
40 | out PortB,temp ; PB 0=ton
|
41 |
|
42 | ldi temp, (1<<INT0)
|
43 | out GIMSK,temp ; INT0 Taste freischalten
|
44 |
|
45 | ldi temp, (1<<SE)+(1<<SM1)+(0<<ISC01)
|
46 | out MCUCR,temp ; Sleep und INT0 low level
|
47 | sleep ;
|
48 |
|
49 | ;-----hier gehts nach Erwachen weiter. INT0 Taste Interr.Routine
|
50 | ldi temp,0b00011001 ; PB3/4 Led PB0 Ton -> Ausgang
|
51 | out DDRB,temp ; PB1 Taste -> Eingang
|
52 | ldi temp,0b00000110 ; Pullup
|
53 | out PortB,temp
|
54 | HauptWach:
|
55 | sbis PinB,1 ; Taste nicht gedr ->
|
56 | rjmp HauptWach ; warte bis Taste los
|
57 | rjmp BlinkStart ; Taste nicht gedr. ->
|
58 |
|
59 | ;----------Tasteninterrupt zum Einschalten nach sleep --------
|
60 | TastINT0:
|
61 | ; in Statusreg , Sreg
|
62 | ldi temp,0 ; interrupt ausschalten
|
63 | out GIMSK,temp
|
64 | ; out SREG, Statusreg
|
65 | reti
|
66 |
|
67 | ;-------------------------------------------------
|
68 |
|
69 | Blinkstart:
|
70 |
|
71 | ; Timer0 einstellen für Ton
|
72 | ldi temp, (1<<WGM01)|(1<<COM0A0) ; Toggle OC0A (PB0) on Compare Match (CTC Mode)
|
73 | out TCCR0A, temp
|
74 | ldi temp, (1<<CS01)|(0<<CS00) ; Takt 0,6MHz / Vorteiler 8
|
75 | out TCCR0B, temp
|
76 |
|
77 |
|
78 | ldi Zaehl,20 ; 20 mal
|
79 | Blinken:
|
80 | ldi temp, 151 ; c spielen an PB0
|
81 | out OCR0A, temp
|
82 |
|
83 | sbi PortB,3 ; 3 an
|
84 | rcall delay50ms
|
85 | cbi PortB,3 ; 3 aus
|
86 | rcall delay50ms
|
87 | sbi PortB,3 ; 3 an
|
88 | rcall delay50ms
|
89 | cbi PortB,3 ; 3 aus
|
90 | rcall delay50ms
|
91 |
|
92 | rcall delay50ms
|
93 | rcall delay50ms
|
94 | rcall delay50ms
|
95 | rcall delay50ms
|
96 |
|
97 | ldi temp, 114 ; f spielen an PB0
|
98 | out OCR0A, temp
|
99 | sbi PortB,4 ; 4 an
|
100 | rcall delay50ms
|
101 | cbi PortB,4 ; 4 aus
|
102 | rcall delay50ms
|
103 | sbi PortB,4 ; 4 an
|
104 | rcall delay50ms
|
105 | cbi PortB,4 ; 4 aus
|
106 | rcall delay50ms
|
107 |
|
108 | rcall delay50ms
|
109 | rcall delay50ms
|
110 | rcall delay50ms
|
111 | rcall delay50ms
|
112 |
|
113 | dec Zaehl
|
114 | brne Blinken
|
115 |
|
116 | clr temp
|
117 | out TCCR0B, temp ; Timer (Töne) ausschalten
|
118 | rjmp Ausschalten
|
119 |
|
120 | ;--------------------------------------
|
121 |
|
122 | Delay50ms:
|
123 | push R25
|
124 | push R30
|
125 | push R31
|
126 | ldi R25, 1 ;
|
127 | WGLOOP9: ldi R30, $63 ; 50ms
|
128 | WGLOOPa: ldi R31, $64
|
129 | WGLOOPb: dec R31
|
130 | brne WGLOOPb
|
131 | dec R30
|
132 | brne WGLOOPa
|
133 | dec R25
|
134 | brne WGLOOP9
|
135 | pop R31
|
136 | pop R30
|
137 | pop R25
|
138 | ret
|
139 |
|
140 | .exit
|