Witam,
Mam problem z inicjalizacja magistrali 1-wire. Ponizej przedstawiam program ktory powiniem zainicjowac 1-wire i czujnik ds1820 powinien dac znak ze jest obecny w systemie:
;P0.0 to linia danych, na porcie P2 zapalam sobie diody dla sprawdzenia
; co sie wykonalo a co nie
org 00h
LJMP PROGRAM_GLOWNY
org 100h
PROGRAM_GLOWNY:
REPEAT:
CLR P0.0
LCALL CZEKAJ_600us
clr p2.0
SETB P0.0
LCALL CZEKAJ_30us
clr p2.1
JNB P0.0, SLAVE_OK
clr p2.2
SJMP REPEAT
SLAVE_OK:
clr p2.3
PETLA_GLOWNA:
NOP
SJMP PETLA_GLOWNA
;--------------- Opoznienia -------------------------------
CZEKAJ_20us:
MOV R6,#14
POWTORZ1:
DJNZ R6,POWTORZ1
RET
CZEKAJ_30us:
MOV R6,#20
POWTORZ2: ;jedno przelecenie petli trwa 1.5us
DJNZ R6,POWTORZ2 ; cykl trwa 0.75us, mam kwarc 16Mhz
RET
CZEKAJ_60us:
MOV R6,#40
POWTORZ3:
DJNZ R6,POWTORZ3
RET
CZEKAJ_80us:
MOV R6,#53
POWTORZ4:
DJNZ R6,POWTORZ4
clr p2.6
RET
CZEKAJ_600us:
MOV R6,#200
POWTORZ5:
NOP
NOP
DJNZ R6,POWTORZ5
clr p2.7
RET
END
Wydaje mi sie ze wszystko jest tak jak byc powinno, ale nie dziala
Probowalem z roznymi opoznieniami, a takze jako linie danych probowalem P1.0 P0.0 P3.0 i nic. DS1820 zasilam osobno, 4.7kOhm mam, poradzcie cos. Aha to wszystko na procku AT89S8252
Dzieki
Mam problem z inicjalizacja magistrali 1-wire. Ponizej przedstawiam program ktory powiniem zainicjowac 1-wire i czujnik ds1820 powinien dac znak ze jest obecny w systemie:
;P0.0 to linia danych, na porcie P2 zapalam sobie diody dla sprawdzenia
; co sie wykonalo a co nie
org 00h
LJMP PROGRAM_GLOWNY
org 100h
PROGRAM_GLOWNY:
REPEAT:
CLR P0.0
LCALL CZEKAJ_600us
clr p2.0
SETB P0.0
LCALL CZEKAJ_30us
clr p2.1
JNB P0.0, SLAVE_OK
clr p2.2
SJMP REPEAT
SLAVE_OK:
clr p2.3
PETLA_GLOWNA:
NOP
SJMP PETLA_GLOWNA
;--------------- Opoznienia -------------------------------
CZEKAJ_20us:
MOV R6,#14
POWTORZ1:
DJNZ R6,POWTORZ1
RET
CZEKAJ_30us:
MOV R6,#20
POWTORZ2: ;jedno przelecenie petli trwa 1.5us
DJNZ R6,POWTORZ2 ; cykl trwa 0.75us, mam kwarc 16Mhz
RET
CZEKAJ_60us:
MOV R6,#40
POWTORZ3:
DJNZ R6,POWTORZ3
RET
CZEKAJ_80us:
MOV R6,#53
POWTORZ4:
DJNZ R6,POWTORZ4
clr p2.6
RET
CZEKAJ_600us:
MOV R6,#200
POWTORZ5:
NOP
NOP
DJNZ R6,POWTORZ5
clr p2.7
RET
END
Wydaje mi sie ze wszystko jest tak jak byc powinno, ale nie dziala

Probowalem z roznymi opoznieniami, a takze jako linie danych probowalem P1.0 P0.0 P3.0 i nic. DS1820 zasilam osobno, 4.7kOhm mam, poradzcie cos. Aha to wszystko na procku AT89S8252
Dzieki