помогите найти баг в коде
Добавлено: Вс июн 21, 2009 23:02:22
пример из обучаловки - бегущий огонек на AT90s2313
собственно сам код:
.include "2313def.inc"
.cseg
.org 0
ldi r16, ramend
out spl, r16
ldi r17, 0b11111111
out ddrb, r17
m1: ldi r18, 0b00000001
m3: rcall func
cpi r18, 0b10000000
breq m2
lsl r18
rjmp m3
m2: rcall func
cpi r18, 0b00000010
lsr r18
breq m3
rjmp m2
func: out portb, r18
ldi r20, 0
ldi r21, 0
ldi r22, 10
l: dec r20
brne l
dec r21
brne l
dec r22
brne l
ret
трабла такая - огонек проходит только "туда и обратно":
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
и все....
хотя должен снова и снова повторять...
собственно сам код:
.include "2313def.inc"
.cseg
.org 0
ldi r16, ramend
out spl, r16
ldi r17, 0b11111111
out ddrb, r17
m1: ldi r18, 0b00000001
m3: rcall func
cpi r18, 0b10000000
breq m2
lsl r18
rjmp m3
m2: rcall func
cpi r18, 0b00000010
lsr r18
breq m3
rjmp m2
func: out portb, r18
ldi r20, 0
ldi r21, 0
ldi r22, 10
l: dec r20
brne l
dec r21
brne l
dec r22
brne l
ret
трабла такая - огонек проходит только "туда и обратно":
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
01000000
00100000
00010000
00001000
00000100
00000010
00000001
и все....
хотя должен снова и снова повторять...