Kod po części wyglada tak:
Kod: Zaznacz cały
dioda equ P3.4
wire equ P3.5
brak_urzadzen_1_wire bit 20h
bit_znaku equ 21h
mlodszy_bajt equ 30h
starszy_bajt equ 31h
ulamkowa equ 52h
calkowita equ 53h
mov bit_znaku, #0
start:
lcall init_1_wire
petla:
mov A,#0CCh
lcall Zapisz_Bajt_1_Wire
mov A,#044h
lcall Zapisz_Bajt_1_Wire
mov B,#0
lcall opoznienie
mov B,#0
lcall opoznienie
lcall init_1_wire
mov A,#0CCh
lcall Zapisz_Bajt_1_Wire
mov A,#0BEh
lcall Zapisz_Bajt_1_Wire
lcall Czytaj_Bajt_1_Wire ; wczytanie LSB
mov mlodszy_bajt,A
lcall Czytaj_Bajt_1_Wire ; wczytanie MSB
lcall Init_1_Wire
mov starszy_bajt,A
mov A, starszy_bajt
mov R1, #mlodszy_bajt
xchd A,@R1
mov ulamkowa, A
mov A, @R1
swap A
mov calkowita, A
; wlacz jesli temperatura >= 25
cjne A, #25, porownaj
porownaj:
clr bit_znaku
jc next
setb bit_znaku
next:
mov C, bit_znaku
mov dioda,C
mov R0, #255
wait:
mov B, #0FFh
lcall Opoznienie
djnz R0, wait
stop: ljmp start
Opoznienie:
djnz B,Opoznienie
ret
END
Gdzie jest błąd ?
P.S. Chyba przyjdzie mi podłączyć wyświetlacz LED i sprawdzić co jest w ulamkowa, a co w calkowita...