Witam, napisałem prawie całą obsługę tegoż urządzenia w assemblerze, ale niestety po odbiorze bajtów scratchpada mam same zera, podejrzewam, że problem leży w procedurzeodbioru bajtu, prosze spojrzeć:
To jest fragment części zapisującej odbierany bajt, sbr i cbr nie chcą zapisywać wartości wykrytych przez sbic, czy są jakieś inne komendy które zapiszą bit w rejestrze?np w najmłodszym bicie, później przesunięcie w prawo i następny bit, tak aż do ośmiu, ma ktoś pomysł na rozwiązanie tego problemu?
readbyte:
push R16
push R17
push R18
clr R18
clr R16
ldi R17,8
read:
cbi PORTB, 0
sbi DDRB, 0
ldi R18, 1
rcall waits ;procedura mikrosekundowa
cbi DDRB, 0
ldi R18, 14
rcall waits
sbic PINB, PINB0 ;sprawdza stan na porcie gdzie jest podłączona szyna 1-wire;
brne dalej
rcall zapisz0
rjmp dalej1
dalej:
rcall zapisz1
dalej1:
ldi R18, 45
rcall waits
lsr R16 ;przesuwa rejestr zapisujący bajt w prawo
dec R17
brne read
sts bajt2, R16
pop R18
pop R17
pop R16
ret
zapisz1: ;według mnie tu jest błąd, ponieważ te procedury nie chcą zapisać wartości wykrytej przez testowanie portu B, jak to naprawić?
sbr R16, 1
ret
zapisz0:
cbr R16, 0
retTo jest fragment części zapisującej odbierany bajt, sbr i cbr nie chcą zapisywać wartości wykrytych przez sbic, czy są jakieś inne komendy które zapiszą bit w rejestrze?np w najmłodszym bicie, później przesunięcie w prawo i następny bit, tak aż do ośmiu, ma ktoś pomysł na rozwiązanie tego problemu?
