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 |
| 27 | ldi r16, 0x7f ; Oszillator 7F
| 28 | out OSCCAL, r16
| 29 |
| 30 | ldi r16, 0x03 ; TCCR0B Takt 4,8MHz/Vorteiler = 64
| 31 | out TCCR0B, r16
| 32 |
| 33 | ldi r16, 0x00 ; TIMSKO Overflow Interrupt Timer 0 disable
| 34 | out TIMSK0, r16
| 35 |
| 36 | ldi r16, 0x10 ; TCCR0A Register OCR0B auf Togglemode für PB0
| 37 | out TCCR0A, r16
| 38 |
| 39 | loop: ldi r19, 0x78 ; 4,8MHz / Vorteiler 64 /120/2 => 312Hz an PB0
| 40 | out OCR0B, r19
| 41 |
| 42 | rcall zeit
| 43 |
| 44 | sbi PORTB,2 ; Blinken der LED an PB2 auf Low => LED ein
| 45 |
| 46 | ldi r19, 0x4c ; 4,8MHz / Vorteiler 64 /76/2 => 493Hz an PB0
| 47 | out OCR0B, r19
| 48 |
| 49 | rcall zeit
| 50 |
| 51 | cbi PORTB,2 ; Blinken der LED an PB2 auf HIGH => LED aus
| 52 |
| 53 | rjmp loop
| 54 |
| 55 | zeit: clr r16 ;Zeitverzögerung ca.1 Sekunde
| 56 | zeit0: inc r16
| 57 | clr r17
| 58 | zeit1: inc r17
| 59 | clr r18
| 60 | zeit2: inc r18
| 61 | cpi r18, 0x01
| 62 | brne zeit2
| 63 | cpi r17, 0x01
| 64 | brne zeit1
| 65 | cpi r16, 0x01
| 66 | brne zeit0
| 67 | ret
|
|