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