sprawdzanie warunku

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Badman
-
Posty: 36
Rejestracja: 12 sty 2010, 13:07
Lokalizacja: Góra

sprawdzanie warunku

Post autor: Badman » 19 sty 2011, 13:40

Do pomiaru temperatury używam cyfrowego termometru DS18B20. W symulacji na AVT 2250 mój program po przekroczeniu zadanej temperatury wyłączy diode poprze ustawienie stanu wysokiego na pinie (stan niski dioda świeci). Podobny kod załadowałem do AT89C2051 jednak nie działa to jak powinno, zwykle jak się świeci dioda to już nie gaśnie.

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
Tak sobie myślałem, że to wina użytych rezonatorów kwarcowych, dla 89C2051 użyłem 12 MHz, więc różne czasy opóźnień. Zmieniałem wartości opóźnień ale też to nic nie dało.
Gdzie jest błąd ? :)

P.S. Chyba przyjdzie mi podłączyć wyświetlacz LED i sprawdzić co jest w ulamkowa, a co w calkowita...

ODPOWIEDZ