led4.asm
1 | .NOLIST
| 2 | .include "tn13def.inc"
| 3 | .LIST
| 4 | ;
| 5 | ;.def temp = r16
| 6 | ;.def leds = r17
| 7 | ;.def SPL = $003D
| 8 | ;.equ TOIE0 = 1
| 9 | ;.equ CS01 = 1
| 10 | ;
| 11 | .org 0x0000
| 12 | rjmp main ; Reset
| 13 | reti ; Ext. Int.
| 14 | reti ; Pin Change Interrupt
| 15 | reti ; rjmp timer0_overflow Timer Counter Overflow
| 16 | reti ; EEPROM ready
| 17 | reti ; Analog Comp.
| 18 | reti ; Timer/Counter Compare Match A
| 19 | reti ; Timer/Counter Compare Match B
| 20 | reti ; Watchdog Timeout
| 21 | reti ; ADC Conversation Complete
| 22 |
| 23 | main: ldi r16, 0x07 ; PB0, PB1, PB2 = Ausgang
| 24 | out DDRB, r16
| 25 | cbi PORTB,2 ; PB2 auf HIGH für LED auf Zustand "AUS"
| 26 | ldi r16, 0x7f ; Oszillator 7F
| 27 | out 0x31, r16
| 28 | ldi r16, 0x03 ; TCCR0B Takt 4,8MHz/Vorteiler = 64
| 29 | out 0x33, r16
| 30 | ldi r16, 0x00 ; TIMSKO Bit2=1 Overflow Interrupt Timer 0 disable
| 31 | out 0x39, r16
| 32 | ldi r16, 0x10 ; TCCR0A OCR0B auf Togglemode für PB0
| 33 | out 0x2f, r16
| 34 |
| 35 | loop: ldi r19, 0x78 ; OCR0B auf 78H => 310Hz an PB0
| 36 | out 0x29, r19
| 37 | rcall zeit
| 38 | sbi PORTB,2 ; Blinken der LED an PB2 auf Low => LED ein
| 39 | ldi r19, 0x4c ; OCR0B auf 4CH => 430Hz an PB0
| 40 | out 0x29, r19
| 41 | rcall zeit
| 42 | cbi PORTB,2 ; Blinken der LED an PB2 auf HIGH => LED aus
| 43 | rjmp loop
| 44 |
| 45 | zeit: clr r16 ;Zeitverzögerung ca.1 Sekunde
| 46 | zeit0: inc r16
| 47 | clr r17
| 48 | zeit1: inc r17
| 49 | clr r18
| 50 | zeit2: inc r18
| 51 | cpi r18, 0xff
| 52 | brne zeit2
| 53 | cpi r17, 0xff
| 54 | brne zeit1
| 55 | cpi r16, 0x10
| 56 | brne zeit0
| 57 | ret
|
|