Şimdi Ara

termometre saat pic16f628a lı (2. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
30
Cevap
2
Favori
545
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: önceki 12
Sayfaya Git
Git
Giriş
Mesaj
  • karafetva K kullanıcısına yanıt

    teşekkürler arkadaşım ete beyin bas dosyasınızı düzenleyerek benim devreye göre çalışır hale getirdi uzaktan kumandayı iptal oldu lakin çalışır halde.


    termometre saat pic16f628a lı


    termometre saat pic16f628a lı




  • muhsin kamer kullanıcısına yanıt

    teşekkürler çalışırtırıldı bunu yapan adam herşeyi akıl etmiş uzaktan kumanda, rf kumanda, 57, 100mm tek devrede işi her türlü ihtiyacı düşünmüş.




    < Bu mesaj bu kişi tarafından değiştirildi babus0606 -- 22 Şubat 2023; 14:47:50 >
  • babus0606 B kullanıcısına yanıt

    Ücretsiz halloldu di mi?


    Bu arada foruma sadakat namına düzeltilme şeklini yani hata veren halini ve düzeltilmiş hallerini, düzeltilme yolunu konudan belirlemek önemli. Hem bu konuyu seyretmişlere hem de ****ine.

  • karafetva K kullanıcısına yanıt

    Katılıyorum yoksa paylaşılmamış olur amaç paylaşmak yardımlaşmak dolayısı ile anlaşılır olmalı herkese hayırlı günler dilerim.

  • karafetva K kullanıcısına yanıt

    forma resimler ufak boyutta rarlı dosyalar yüklenmiyor dosyalar ilk mesaja ekledim buradada ete hoca yazmıştı.

  • babus0606 B kullanıcısına yanıt

    Komut satırları yazı olarak yapıştırılıp, sorun çıkaran satır işaretlenip düzeltme satırı da ayrıca verilebilir.

  • karafetva K kullanıcısına yanıt

    asm nin içeriği


    '****************************************************************

    '* Name   : SAAT-TERMO.BAS                                   *

    '* Author : [Erol Tahir Erdal]                               *

    '* Notice : Copyright (c) 2005 [ETE]                         *

    '*         : All Rights Reserved                              *

    '* Date   : 31.07.2008                                       *

    '* Version : 1.0     LED (77)                                *

    '* Notes  : 3 pinden 595 leri süren yeni sistem              *

    '*         : YENİ MENÜ SİSTEMİ UYGULANDI EN SON MODEL         *

    '****************************************************************

    PORTA=0:portb=0     'dikkat*********************

    TRISB=0            ' Bu program DS1307 ye göredir..............

    TRISA=%11100000 

    '-----------------------------------------------------------------

    @ DEVICE pic16F628                      'işlemci 16F628A                               

    @ DEVICE pic16F628, WDT_Off             'Watch Dog timer açık

    @ DEVICE pic16F628, PWRT_ON            'Power on timer açık

    @ DEVICE pic16F628, PROTECT_OFF        'Kod Protek kapalı

    @ DEVICE pic16F628, MCLR_off           'MCLR pini kullanılMIYOR.

    @ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak

    '-----------------------------------------------------------------

    DEFINE OSC 4

    '-------------------------------------------------------------------------

    ON INTERRUPT GoTo KESME  'kesme oluşursa KESME adlı etikete git.

    OPTION_REG=%10000101  'Pull up dirençleri İPTAL- Bölme oranı 1/64.

    INTCON=%10100000 'Kesmeler aktif ve TMR0 kesmesi aktif

    TMR0=0

    CMCON=7 

    '----------------------------------------------------------------------------

    Comm_Pin   VAR   PortB.3    ' One-wire Data-Pin "DQ" PortB.0 da

    Busy       VAR BIT        ' Busy Status-Bit

    POZ        VAR BIT

    Z          VAR BIT

    W          VAR BIT

    U          VAR BIT

    T          VAR BIT

    GOR        VAR BYTE

    HAM        VAR   WORD       ' Sensör HAM okuma değeri

    ISI        VAR WORD       ' Hesaplanmış ISI değeri

    Float      VAR WORD       ' Holds remainder for + temp C display

    X          VAR WORD 

    Y          VAR BYTE 

    SAYI       VAR BYTE  

    SIGN_BITI  VAR HAM.Bit11  '  +/- sıcaklık İşaret biti, 1 = olursa eksi sıcaklık

    NEGAT_ISI  CON 1          ' Negatif_Cold = 1

    Deg        CON 223        ' ° işareti

    SIGN       VAR BYTE       ' ISI değeri için +/- işaret

    TEMP       VAR BYTE        ' Div32 bit hesap için geçici değişken

    SAYAC      VAR BYTE 50

    SN         VAR BYTE

    DAK        VAR BYTE

    SAAT       VAR BYTE

    GUN        VAR BYTE

    AY         VAR BYTE

    YIL        VAR BYTE

    MEM        var byte '

    HAFGUN     var byte '

    ONLAR      VAR BYTE

    BIRLER     VAR BYTE

    ESN        VAR BYTE

    SAAT_SURE  VAR BYTE

    ISI_SURE   VAR BYTE

    TAKV_SURE  VAR BYTE

    SUM        VAR BYTE

    '---------------------------------------------

    SYMBOL DTA=PortB.4

    SYMBOL CLK=PORTB.5

    symbol ST=PORTB.6

    SYMBOL RTC_DTA=PORTB.1

    SYMBOL RTC_CLK=PORTB.0

    'SYMBOL RTC_RST=PORTA.2

    symbol SEC  =PORTA.5 

    SYMBOL ASAGI =PORTA.6

    SYMBOL YUKARI=PORTA.7 

    '-----------------------------------------------------------------------------

    CLEAR 'tüm değişkenler sıfırlandı

    SAAT_SURE=12

    ISI_SURE=2

    TAKV_SURE=1  'TAKVİM EKRANDA KALMA SÜRESİ

    SUM=SAAT_SURE+ISI_SURE+TAKV_SURE

    'IF sec=0 then ZAM_AYAR

    ILK:

    gosub ekran0

    gosub sensoryaz

    gosub sensoroku


    GOSUB GECIKME

    '-----------------------------------------------------------------------------

    LOW PORTA.3

    gosub ZAMAN_OKU:esn=SN

    '-------------------------------------------------

    BASLA:


       IF SAYAC=31 AND Y<SAAT_SURE THEN HIGH PORTA.3

         GOSUB ZAMAN_OKU

         if ESN=sn then atla

         IF Y<SAAT_SURE THEN

            LOW porta.3

            GOSUB EKRAN0

         ENDIF


         IF Y=>(SAAT_SURE) AND Y<(SAAT_SURE+ISI_SURE) THEN

            GOSUB SENSOROKU

            GOSUB EKRAN1

         ENDIF


         IF Y=>(SAAT_SURE+ISI_SURE) then gosub EKRAN2

        Y=Y+1 : ESN=SN : SAYAC=0

         IF Y=SUM THEN Y=0


    ATLA: if SEC=0 THEN AYAR 'MODE TUŞUNA BASILMIŞ İSE AYAR'A GİT


          GOTO BASLA      

    '-----------------------alt programlar-------------------------------------------      

    TEKRAR:

          SHIFTOUT DTA,CLK,1,[SAYI]

          RETURN

    BAK_0:

          GOSUB AL

          IF Z=1 AND W=1 THEN SAYI=0 

          RETURN

    BAK_1:

          GOSUB AL

          IF Z=1 AND U=1 THEN SAYI=0            

          RETURN

    BAK_2:

          GOSUB AL

          IF Z=1 AND T=1 THEN SAYI=0            

          RETURN



    EKRAN0:         

    '       X= SN DIG 0 :GOSUB al:GOSUB TEKRAR

    '       X= sn DIG 1 :GOSUB al:GOSUB TEKRAR


           X= DAK DIG 0:GOSUB BAK_1:GOSUB TEKRAR

           X= DAK DIG 1 :GOSUB BAK_1:GOSUB TEKRAR

           u=0

           X= SAAT DIG 0 :GOSUB BAK_0:GOSUB TEKRAR

           X= SAAT DIG 1:GOSUB BAK_0:GOSUB TEKRAR

           w=0

           GOTO STYAZ


    AL:   LOOKUP X,[252,96,218,242,102,182,190,224,254,246,198,156],SAYI :RETURN



    EKRAN1:LOW PORTA.3

          X=11:GOSUB AL:GOSUB TEKRAR

    '      X=10:GOSUB AL:GOSUB TEKRAR

          SAYI=198

          IF SIGN="-" then SAYI=64

          gosub tekrar

          x=(ISI DIG 0):GOSUB AL:GOSUB TEKRAR

          x=(ISI DIG 1):GOSUB AL:GOSUB TEKRAR

    '      IF SIGN_BITI = NEGAT_ISI THEN

    '        SAYI=64

    '        else

    '        SAYI=0

    '        endif

    '      GOSUB TEKRAR

    '      SAYI=0

    '      GOSUB TEKRAR

          HIGH st:PAUSEUS 2:LOW st

          RETURN      


    EKRAN2:IF POZ=0 THEN HIGH porta.3

    '     X= YIL DIG 0:GOSUB BAK_2:GOSUB TEKRAR

    '   X= YIL DIG 1:GOSUB BAK_2:GOSUB TEKRAR

    '    T=0

    '    X= AY DIG 0:GOSUB BAK_1:GOSUB TEKRAR      

    '    X= AY DIG 1:GOSUB BAK_1:GOSUB TEKRAR

    '    U=0     

    '    X= GUN DIG 0:GOSUB BAK_0:GOSUB TEKRAR

    '    X= GUN DIG 1:GOSUB BAK_0:GOSUB TEKRAR

    '     w=0

         GOTO STYAZ     

    '-----------------------------------------------------

    'EKRAN_3:

    '       X= SN DIG 0:GOSUB BAK_1:GOSUB TEKRAR

    '       X= SN DIG 1 :GOSUB BAK_1:GOSUB TEKRAR

    '       u=0

    '       SAYI=0:GOSUB TEKRAR

    '       SAYI=SUM:GOSUB TEKRAR

    '       w=0


    STYAZ:     

           HIGH st:PAUSEUS 2:LOW st

           RETURN        

    '----------------------------------------------------- 

    'ZAM_AYAR:

    '       LOW PORTA.3:SN=0:POZ=1:SUM=6

    '       SN=SAAT_SURE:GOSUB EKRAN_3

    '       WHILE SEC=0:WEND


    'ZAM_BIR:

    '       W=1

    '       IF SEC=0 THEN ZAM_IKI

    '       IF YUKARI=0 THEN

    '         IF Z=0 THEN sn=SN+1

    '         IF SN=31 THEN SN=0      

    '       ENDIF            

    '       IF ASAGI=0 THEN

    '          IF Z=0 THEN SN=SN-1

    '          IF SN=255 THEN SN=30

    '       ENDIF

    '       Z=1-Z

    '       GOSUB EKRAN_3      

    '       GOSUB GECIKME

    '       GOTO ZAM_BIR


    'ZAM_IKI:

    '       SAAT_SURE=SN:SUM=91

    '       SN=ISI_SURE:GOSUB EKRAN_3

    '       WHILE SEC=0:WEND


    'ZAM_UC:

    '       W=1

    '       IF SEC=0 THEN ZAM_DORT

    '       IF YUKARI=0 THEN

    '         IF Z=0 THEN sn=SN+1

    '         IF SN=31 THEN SN=0      

    '       ENDIF            

    '       IF ASAGI=0 THEN

    '          IF Z=0 THEN SN=SN-1

    '          IF SN=255 THEN SN=30

    '       ENDIF

    '       Z=1-Z

    '       GOSUB EKRAN_3      

    '       GOSUB GECIKME

    '       GOTO ZAM_UC       


    'ZAM_DORT:

    '        ISI_SURE=SN

    '        SUM=SAAT_SURE+ISI_SURE

    '        Z=0:W=0:POZ=0

    '        WRITE 0,SAAT_SURE:PAUSE 10

    '        WRITE 1,ISI_SURE:PAUSE 10

    '        GOTO ILK  


    AYAR: 

          LOW PORTA.3:SN=0:POZ=1':GOSUB FLASH

          IF Y>10 THEN TARIHAYAR

          WHILE SEC=0

          WEND

    HOUR: W=1

          LOW PORTA.3

          IF SEC=0 THEN MINBIR

          IF YUKARI=0 THEN

             IF Z=0 THEN SAAT=SAAT+1

             IF SAAT=24 THEN SAAT=0      

           ENDIF  

           IF ASAGI=0 THEN

              IF Z=0 THEN SAAT=SAAT-1

              IF SAAT=255 THEN SAAT=23

           ENDIF

           Z=1-Z

           GOSUB EKRAN0  

           GOSUB GECIKME

           GOTO HOUR


    MINBIR: W=0:Z=0

           GOSUB EKRAN0

    '       GOSUB FLASH

           WHILE SEC=0

           WEND


    MINUTE: U=1       

          LOW PORTA.3

          IF SEC=0 THEN ara

           IF YUKARI=0 THEN

              IF Z=0 THEN DAK=DAK+1

              IF DAK=60 THEN DAK=0

           ENDIF

           IF ASAGI=0 THEN

              IF Z=0 THEN DAK=DAK-1

              IF DAK=255 THEN DAK=59             

           ENDIF

           Z=Z-1

           GOSUB EKRAN0

           GOSUB GECIKME

           GOTO MINUTE


    SECBIR: WHILE SEC=0

           WEND

           U=0

    GECIKME:

           FOR X=0 TO 3500

           PAUSEUS 5

           NEXT

           RETURN

    DELAY:

           FOR X=0 TO 1900

           PAUSEUS 10

           NEXT

           RETURN     


    ARA:   W=0:u=0:T=0:Z=0

           GOSUB FLASH

           Gosub EKRAN0

           HIGH PORTA.3

           WHILE SEC=0 

           wend

           MEM=SN:GOSUB TERSCEVIR:SN=SAYI

           MEM=DAK:GOSUB TERSCEVIR:DAK=SAYI

           MEM=SAAT:GOSUB TERSCEVIR:SAAT=SAYI

           MEM=GUN:GOSUB TERSCEVIR:GUN=SAYI

           MEM=AY:GOSUB TERSCEVIR:AY=SAYI

           MEM=YIL:GOSUB TERSCEVIR:YIL=SAYI

           GOSUB ZAMAN_YAZ

           GOSUB ZAMAN_OKU

           y=0:POZ=0

           goto BASLA


    FLASH:

         TOGGLE PORTA.3:GOSUB DELAY:TOGGLE PORTA.3:GOSUB DELAY

         TOGGLE PORTA.3:GOSUB DELAY:TOGGLE PORTA.3:GOSUB DELAY

         return

    '-------------------------------------------------------------------------------     

    TARIHAYAR: 

          WHILE SEC=0

          WEND

    GUNAL: W=1

          IF SEC=0 THEN AYBIR

          IF YUKARI=0 THEN

            IF Z=0 THEN GUN=GUN+1

             IF GUN=32 THEN GUN=1      

           ENDIF  

           IF ASAGI=0 THEN

             IF Z=0 THEN GUN=GUN-1

              IF GUN=255 THEN SAAT=31

           ENDIF

           Z=Z-1

           GOSUB EKRAN2 

           GOSUB GECIKME

           GOTO GUNAL


    AYBIR: W=0

    '       GOSUB FLASH

           WHILE SEC=0

           WEND


    AYAL: u=1

         IF SEC=0 THEN YILBIR

           IF YUKARI=0 THEN

              IF Z=0 THEN AY=AY+1

              IF AY=13 THEN AY=1

           ENDIF

           IF ASAGI=0 THEN

             IF Z=0 THEN AY=AY-1

              IF AY=255 THEN AY=12             

           ENDIF

           Z=Z-1

           GOSUB EKRAN2

           GOSUB GECIKME

           GOTO AYAL

    YILBIR: u=0

    '       gosub FLASH

           WHILE SEC=0:WEND

    YILAL: T=1      

          IF SEC=0 THEN ARA

           IF YUKARI=0 THEN

             IF Z=0 THEN YIL=YIL+1

              IF YIL=100 THEN YIL=0

           ENDIF

           IF ASAGI=0 THEN

            IF Z=0 THEN YIL=YIL-1

              IF YIL=255 THEN YIL=99             

           ENDIF

           Z=1-Z

           GOSUB EKRAN2

           GOSUB GECIKME

           GOTO YILAL               


    '----------------ISI SENSÖR OKUMA BÖLÜMÜ --------------------------------

    SENSOROKU:

    '          ham=$07d0:Gosub hesapla:RETURN 'NORMAL ÇALIŞMADA BU SATIR SİLİNECEK

              OWOUT  Comm_Pin, 1, [$CC, $44]' ISI değerini oku

    Bekle:

              OWIN   Comm_Pin, 0, [Busy]   ' Busy değerini oku

              IF     Busy = 0 THEN Bekle ' hala meşgulmü? , evet ise goto Bekle..!

              OWOUT  Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku

              OWIN   Comm_Pin, 0, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir.

              GOSUB  Hesapla

              RETURN


    SENSORYAZ:

             OWOUT  COMM_Pin, 1, [$CC, $4E, $00,$00,$31]

             return          


    Hesapla:                ' Ham değerden Santigrat derece hesabı

       Sign = "+"

       IF SIGN_BITI = NEGAT_ISI THEN

          Sign  = "-" 

          ham=($ffff-ham)+1

       endif

       ISI = HAM/16

       RETURN




    ZAMAN_OKU:


            I2CRead RTC_DTA, RTC_CLK,$D0,$00,[SN,DAK,SAAT,HAFGUN,GUN,AY,YIL,MEM]


            MEM=SN:GOSUB CEVIR:SN=SAYI

            MEM=DAK:GOSUB CEVIR:DAK=SAYI

            MEM=SAAT:GOSUB CEVIR:SAAT=SAYI

            MEM=GUN:GOSUB CEVIR:GUN=SAYI

            MEM=AY:GOSUB CEVIR:AY=SAYI

            MEM=YIL:GOSUB CEVIR:YIL=SAYI

    '        low RTC_RST

            return


    ZAMAN_YAZ:

             MEM=$10:SAAT.7=1

            I2CWrite RTC_DTA, RTC_CLK,$D0,$00,[SN,DAK,SAAT,HAFGUN,GUN,AY,YIL,MEM]


            PAUSEUS 10

            return


    CEVIR:

            ONLAR=MEM & %01110000

            ONLAR=ONLAR>>4

            BIRLER=MEM & %00001111

            SAYI=ONLAR*10+BIRLER

            RETURN 


    TERSCEVIR:               

            ONLAR=MEM DIG 1

            ONLAR=ONLAR<<4

            BIRLER=MEM DIG 0

            SAYI=ONLAR+BIRLER

            RETURN


    DISABLE

    KESME:IF POZ=1 then CIK

            SAYAC=SAYAC+1 'kesme sayacı 1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)

            IF Y>(SAAT_SURE) AND SAYAC=62 THEN

              Y=Y+1:SAYAC=0

              IF y=(SUM+1) THEN y=0

            ENDIF 


    CIK:    INTCON.2=0 'TMR0 Kesme bayrağı sıfırlanıyor

            RESUME

            ENABLE                 


    END





  • babus0606 B kullanıcısına yanıt

    Teşekkürler, incelemek isteyen imkan.

    Çalışmama sebebi tespit edildiyse o da eklenirse fena olmaz. yani ilk programda çalışmayı engelleyen neydi?

  • karafetva K kullanıcısına yanıt

    benim devredeki picin ayakları tutmuyor sürücülerde farklı model biri 20 ayaklı biri 24 ayaklı.

  • 
Sayfa: önceki 12
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.