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