1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
.include "def.s"
.equ LOC, 0x128
.equ FREQ, 0x80
.org 0x0000 ; reset interrupt
jmp init
.org 0x0040 ; timer 0 overflow interrupt
jmp tmrint
.org 0x0068
init:
; IO
sbi DDRB, 5
sbi DDRD, 2
cbi PORTB, 5
cbi PORTD, 2
; stack
ldi r16, STOFL
ldi r17, STOFH
out SPL, r16
out SPH, r17
; initial
ldi r16, 69
sts ADDR, r16
; timer
ldi r18, 0b00000001
out TCCR0B, r18
ldi r18, TOIE0
sts TIMSK0, r18
sei
rcall main
tmrint:
push r18
in r18, SREG
push r18
push r19
push r20
push r21
lds r20, LOC
ldi r21, FREQ
inc r20
cpse r20, r21
rjmp .stt
in r18, PORTD
ldi r19, (1 << 2)
eor r18, r19
out PORTD, r18
eor r20, r20
.stt:
sts LOC, r20
pop r21
pop r20
pop r19
pop r18
out SREG, r18
pop r18
sei
reti
main:
sei
ldi r17, 128
.loop:
lds r1, ADDR
in r6,TCNT0
cp r1, r17
breq .finloop
inc r1
sts ADDR, r1
rjmp .loop
.finloop:
in r13, PINB
in r14, PORTB
lds r16, ADDR
cpse r16, r17
cbi PORTB, 5
in r13, PINB
in r14, PORTB
rjmp main
|