Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

DS18B20 ILE 11 BITLIK CEVRIM

Başlatan XX_CİHAN_XX, 15 Mart 2006, 01:28:37

XX_CİHAN_XX

Arkadaşlar benım asm dılınde ds18b20 kontrolu ıle ılgılı bılgıye ıhtıyacım var 11 bitlik bır cevrım yapmam gerekıyor pdf ını ınceledım ama ıngılızcem yetersız oldugu ıcın pek faydalanamadım caşlısma mantıgı ıle ılgılı bılgısı olan yada hazır kodu olan arkadaslar bılgılerını paylasırlarsa cok sevınırım.Şimdiden herkese teşekkürler.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

oziant

sana aşagıda kendi kullandıgım asm rutinini geönderiyorum
kolay gelsin



;**********************************
;derece okuma bolumu
;**********************************
DERECE;
        CALL DSOKU;SENSOR OKU
        BCF STATUS,0
        btfsS input2,7;DERECE EKSİ
        GOTO$+8;İŞLEM
        comf input1,1;BURDA
        MOVF input1,0;
        MOVWF HESTEM;
        RRF HESTEM,1;
        MOVF HESTEM,0
        SUBLW D'128';
        MOVWF SICAKLIK;HESAPLAMADA KULANILCAKDEGER
        BTFSc input2,7;DERECE ARTI
        goto$+5;İŞLEM BURADA
        RRF input1,1
        MOVF input1,0  
        ADDLW D'128'
        MOVWF SICAKLIK;HESAPLAMADA KULANILCAKDEGER
        RETURN
;*******************************************
;DALLAS CHIP PROG ROUTION OKUMA -İSE İNPUT2 FF +İS
; +İSE 00 DEGER İNPUT1 DE + NORMAL - DE TERS CEVİR
;*******************************************

DSOKU
   call   DLSRST2
   movlw   0xcc      ;Skip ROM
   movwf   _DATA
   call   SENDDls

   movlw   0x44
   movwf   _DATA
   call   SENDDls
   
       
       movlw   0xff
   call   ENMSEC
   movlw   0xff
   call   ENMSEC
   movlw   0xff
   call   ENMSEC

   call   DLSRST2
   movlw   0xcc      ;Skip ROM
   movwf   _DATA
   call   SENDDls

   movlw   0xbe
   movwf   _DATA
   call   SENDDls
   call   RDDls
   movf   _DATA,w
   movwf   input1
   call   RDDls
   movf   _DATA,w
   movwf   input2

   RETURN
   
DLSRST2   bcf   DIO
   movlw   0xb7
   movwf   dlycnt
   decfsz   dlycnt,f
   goto   $-1
   bsf   STATUS,RP0   ;bank1
   bsf   DIO      ;PORTA,0 input
   bcf   STATUS,RP0   ;bank0
   movlw   0x17
   movwf   dlycnt
   decfsz   dlycnt,f
   goto   $-1
   btfsc   DIO
   goto   $-1
   movlw   0x01
   call   ENMSEC;450 USN OLACAK
   bsf   STATUS,RP0   ;bank1
   bcf   DIO      ;PORTA,0 OUTPUT
   bcf   STATUS,RP0   ;bank0
   return

SENDDls   movlw   0x08
   movwf   count2
SEND2   rrf   _DATA,f
   bcf   DIO
   movlw   0x03
   movwf   dlycnt
   decfsz   dlycnt,f
   goto   $-1
   btfsc   STATUS,C
   bsf   DIO
   movlw   0x14
   movwf   dlycnt
   decfsz   dlycnt,f
   goto   $-1
   bsf   DIO
   decfsz   count2,f
   goto   SEND2   
   
   return

RDDls   movlw   0x08
   movwf   count2
RD2   bcf   DIO
   movlw   0x01
   movwf   dlycnt
   decfsz   dlycnt,f
   goto   $-1
   bsf   STATUS,RP0   ;bank1
   bsf   DIO      ;PORTA,0 input
   bcf   STATUS,RP0   ;bank0
   bcf   STATUS,C
   btfsc   DIO
   bsf   STATUS,C
   movlw   0x17         
   movwf   dlycnt
   decfsz   dlycnt,f
   goto   $-1
   rrf   _DATA,f
   bsf   STATUS,RP0   ;bank1
   bcf   DIO      ;PORTA,0 output
   bcf   STATUS,RP0   ;bank0
   bsf   DIO
   decfsz   count2,f
   goto   RD2
   return   
ENMSEC  
       MOVLW   D'111'
       MOVWF cntmsec
EMSECL  
   NOP                  
   DECFSZ cntmsec,F    
   GOTO EMSECL          
   RETURN
MPLAB 5.62 ASM PROPİC 2

XX_CİHAN_XX

Yardımın için çok teşekkür ederim fakat birkaç sorum olacak.Programını ınceledım data alıp verme satırlarında aklıma takılmayan bır kısım yok cokta guzel yazılmıs fakat data haberlesme dongulerındekı zaman gecıkmelerı bana pek dogrusal gelmedı.ornegın ds nin datasheet inde 12 bitlik bır cevrım sıresı yaklasık 450ms olarak verılmıs fakat senın programında bu buyuklukte bır gecıkme yok tum zaman gecıkmelerı mmikrosaniyeler metebesınde ve datayı alırken her biti alısında data pınını cıkıs yapıyorsun yanı senın datta hattın alma sırasında her bıt okuyusunda gırıs - cıkıs olarak devamlı degısıyor.bunun sebebını cozemedım.Aklıma takılan son seyde sensore confıgurasyon bılgısını nerde yolluyorsun.Confıg. bilgisinden kastım sensore kac bıtlık cevrım yapması gerektıgını nasıl belırtıyorsun.Benım 11 veya 12 bıtlık yanı yuksek cozunurluklu bır cevrıme ıhtıyacım var su anda bu programın kac bıtlık cevrım yaptıgını anlıyamadım.Ama yazılım gayet profesyonel yazılmıs zaman kavramı ve cevrım cozunurlugu (confıg. bılgısı ) olaylarını pek anlıyamadım umarım sormak ıstedıgım seylerı anlatabılmısımdır sımdıden yardım eden ve bılgılerını apylasan herkese TESEKKURLER...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

oziant

bu yazılım  4 mhz kristale göre yazılmıştır

ayrıca sensörün üzerine bak
bu yazılım ds1820 içindir onunda hassasiyeti 0,5 derecedir
MPLAB 5.62 ASM PROPİC 2

XX_CİHAN_XX

DALLAS
18B20
Yazıyor sensorun ustunde ama haberlesme mantıgı farklı olmasa gerek hassasıyetı 0,5 derece olduguna gore 10 bitlik haberlesme yapıyor.pdf i incelediğimde 10 bitlik haberlesme için verilen cevrim suresı 187,5ms olarak gecıyor.Gerçi sen bu programı calıstırdıgına gore ortada sorun yok cok teşekkür ederım.Benım elimdeki sensore gore 12 bitlik cevrim nasıl yapabilirim tecrübesi olan arkadaşlar varsa cok sevınırım.Yardımların için çok sağol.Bu arada hala arayış içindeyim :(
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.