termometre saat pic16f628a lı (2. sayfa)
![](/static/forum/img/downicon.png)
![](/static/forum/img/upicon.png)
![](/static/forum/img/close.png)
-
-
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 > -
Ü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.
-
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.
-
forma resimler ufak boyutta rarlı dosyalar yüklenmiyor dosyalar ilk mesaja ekledim buradada ete hoca yazmıştı.
etepic
Saat Projeleri - Sayfa 23https://etepic.com/index.php/topic,71.msg46786/topicseen.html#msg46786 -
Komut satırları yazı olarak yapıştırılıp, sorun çıkaran satır işaretlenip düzeltme satırı da ayrıca verilebilir.
-
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
-
Teşekkürler, incelemek isteyen imkan.
Çalışmama sebebi tespit edildiyse o da eklenirse fena olmaz. yani ilk programda çalışmayı engelleyen neydi?
-
benim devredeki picin ayakları tutmuyor sürücülerde farklı model biri 20 ayaklı biri 24 ayaklı.
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X