sht11 18f452 de çalışmıyor

Başlatan ozgur0, 08 Şubat 2009, 22:28:44

ozgur0

arkadaşlar aynı program f877 çalışıyor ama 18f452 denediğimde herşey normal ama sht11 haberleşmiyor görmüyor.diğer fonksiyonlar normal
sht 11 18f452 çalıştıran varsa lütfen yardım şimdiden tşekkürler

gokhangokcen

öncelikle hoşgeldin.şimdi devrenin 877 ile çalışıpta 452 de çalışmaması gibi bir olasılık yok devre şeması vs varsa buraya koyarsan veya programı daha iyi yardımcı olunacaktır eminimki.İyi çalışmalar
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

berkay_yalan

Alıntı yapılan: "ozgur0"arkadaşlar aynı program f877 çalışıyor ama 18f452 denediğimde herşey normal ama sht11 haberleşmiyor görmüyor.diğer fonksiyonlar normal
sht 11 18f452 çalıştıran varsa lütfen yardım şimdiden tşekkürler
program 877 ye gore yazıldıysa 452 de calısmaz bunun ıcın yazılımında degısıklık yapacaksın kodlarını koyarsan yardımcı olurlar

ozgur0

değişiklilleri yaptım programdaki diğer işlevler çalışıyor sadece sht11 kısmı çalışmıyor ete nin sht11 kodlarını kullandım sadece sht 11 le haberleşmiyor

berkay_yalan

sht11 ın baglı oldugu portun port ayarını yapamamıssındır

ozgur0

bu program f877 çalışıyor ama 18f452 direk sensor yok kısmına gidiyor

asm
   __CONFIG _CONFIG1H, _HS_OSC_1H ; HS osc
   __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_27_2L & _PWRT_ON_2L ; Enable Brown out voltage detect
; Brown out voltage threshold 2.7 Volt
   __CONFIG _CONFIG2H, _WDT_OFF_2H   ; Disable watch dog timer
   __CONFIG _CONFIG3H, _CCP2MX_OFF_3H  ; Use default PORTC.1 for CCP2
   __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L ; enable stack overflow
; disable low-voltage programming mode
; disable background debugger
   __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L  ; disable code protect (user block)
   __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H   ; disable code protect (boot block)
   __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
; disable write protect (user block)
   __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H  ; disable Write protect CONFIG regs
; disable write protect boot block
; disable write protect Data EE
  __CONFIG _CONFIG7L, _EBTR0_OFF_7L   ; Disable table Read protect user block
  __CONFIG _CONFIG7H, _EBTRB_OFF_7H   ; Disable Read protect boot block enable
endasm

DEFINE  LCD_DREG   PORTB
DEFINE  LCD_DBIT   4
DEFINE  LCD_RSREG  PORTD
DEFINE  LCD_RSBIT  6
DEFINE  LCD_EREG   PORTD
DEFINE  LCD_EBIT   7
DEFINE  LCD_BITS   4
DEFINE  LCD_LINES  2
DEFINE  OSC 4

   X           VAR WORD
   KONTROL VAR     BYTE      
   ISI1    VAR     BYTE      
   ISI2    VAR     BYTE      
   U1      VAR     BYTE          
   U2      VAR     BYTE
   H0      VAR     HAM.BYTE0
   H1      VAR     HAM.BYTE1
   HAM      VAR       WORD
   RAW     VAR     WORD
   ISI     VAR     WORD
   P1      VAR     WORD
   P2      VAR     WORD
   P3      VAR     WORD              
   W       VAR     WORD
   CLK     VAR     PORTA.1
   DTA     VAR     PORTA.0  
   ISARET  VAR     BIT   'sensor değeri 0 ise artı, 1 ise eksi
   HATA    VAR     BIT
       
CLEAR
     ADCON1 = 7
     
     
   
 TRISA=%111100
 TRISB=%00001111
 trisc=%11110001
 TRISD=%00111100
 TRISE=%111
 


BASLA:  
       KONTROL=%00000011:HAM=0   'SICAKLIK ÖLÇME
       GOSUB OLCUMAL
      'HAM=4000 sıfır dereceye tekabül ediyor, HAM=3000 -10 derece oluyor.
       Gosub ISIHESAP
       
       KONTROL=%00000101:HAM=0 'RUTUBET ÖLÇME
       GOSUB OLCUMAL
       'HAM=3710 bu değer %100 rutubete eşdeğerdir.
       GOSUB RUTHESAP
       
LCDOut $FE,1
  LCDOut DEC2 ISI1,".",DEC1 ISI2,0,"C  R=",DEC U1,".",DEC1 U2,"%"
pause 1000
goto basla

T_START:
       Output DTA:Output CLK
       High DTA
       Low CLK
       Pause 1
       High CLK
       Low DTA
       Pause 1
       Low CLK
       Pause 1
       High CLK
       Pause 1
       High DTA
       Low CLK
       Return

'-----------------------------R E S E T -----------------------------------------------------------
RESET:  Output DTA:Output CLK':TRISA.0=0:TRISA.1=0'
       High DTA=1
       For W=0 TO 9
       High CLK
       Pause 1
       Low CLK
       Next W
       Return
'-----------------------SENSORE KOMUT GÖNDER -----------------------------------
OLCUMAL: GoSub T_Start
       ShiftOut DTA,CLK,1,[KONTROL]
       Input DTA
       PulsOut CLK,10
       HATA=0
       For W=0 TO 65500
          IF DTA=0 Then EXIT
       Next W
       HATA=1
EXIT:  IF HATA=1 Then
        GoSub SENSORYOK
      EndIF
      ShiftIn DTA,CLK,0,[H1]
      Output DTA
      Low DTA
      PulsOut CLK,10
      Input DTA
      ShiftIn DTA,CLK,0,[H0]
      PulsOut CLK,10
      Return
'----------------------ISI HESAP ALT PROGRAMI-----------------------------------      
ISIHESAP:  
          IF ham<4000 Then
             ISARET=1 'sıcaklık eksi değerde demek
             ISI1=(4000-HAM)/100
             ISI2=((4000-ham)//100)/10    
             GoTo ISISON
           EndIF
          ISI1=(HAM-4000)/100
          ISI2=((HAM-4000)//100)/10
ISISON:    IF HAM>16384 Then
            ISI1=0:ISI2=0
          EndIF  
   Return
'-------------------------RUTUBET HESAP ALT PROGRAMI-------------------------------------------------
RUTHESAP:  
          ISI=ISI1*10+ISI2
          p1=(26542-(54722**ham+ham))**ham-40      
          P2=655+(HAM*5)+(HAM**15917)        
          P3=(P2**(ISI+2480))-(P2**2730)+P1   ' kompanse edilmiş değer
          U1=p3/10:U2=p3//10
          IF ham>3710 Then
             u1=0:U2=0
             GoTo SENSORYOK
          EndIF  
          Return        
'----------------------------------------------------------------------------------  
       
SENSORYOK: LCDOut $FE,$02,"   SENSOR YOK   "
          LCDOut $FE,$C0," LUTFEN TAKINIZ "  
          Pause 1000                
          Return
end

berkay_yalan

semada koyarsan daha ıyı olur boylece kod takıp etmek zorunda kalmayız eger ısıs seması varsa daha ıyı olur

ve kodlarda code tag kullanırsan okunaklı olur

ozgur0

ısıs şeması yok ama ben açıklalayım

porta.0 sht11 dta
porta.1 sht11 clk

portb.4 ---7 arası lcd

benim atlatmak istediğim f877 bu şekil çalışıyor ama 18f452 sht 11 haberleşmiyor f877 452 arasında bir fark varmı komutları aynı değilmi
452 baska programlar denedim hepsi çalıştı ama sht11 çalışmadı

ozgur0

18f452 sht11 çalıştıran varmı

ozgur0

sanırım 18f452 adcon1=7 yeterli olmuyor portc yi kullandım çalıştı acaba anolog uçları dijitale çevirmek için başka kodda ekleniyormu

askuzucu

CMCON=7
denedin mi? iş görmüyor mu?(analog komperatorleri iptal eder)

ozgur0

cmcon=7 denedim sonuç aynı baska portlarda çalışıyor sadece porta ve porte de çalışmıyor

askuzucu

A ve E portlarının giriş yazmaçlarını 8 bit tanımla, bakalım sonuç değişecek mi?

TRISA=%111100
TRISB=%00001111
trisc=%11110001
TRISD=%00111100
TRISE=%111

yerine

TRISA=%00111100
TRISB=%00001111
trisc=%11110001
TRISD=%00111100
TRISE=%00000111

gibi...

ozgur0

değişiklik yok aynı kafayı üşütteceğim