Devreye ait bütün dosyaları indirmek için tıklayınız.
Devrenin JALTURK kaynak kodları
INCLUDE 16F628_GENEL
INCLUDE DS1307
INCLUDE itele
INCLUDE ds18b20
;INCLUDE FORMAT
–PIN AYARLARI—————————————
VAR VOLATILE BIT ust IS Pin_A0
VAR VOLATILE BIT mod IS Pin_A2
Port_A_Yon = Hepsi_Giris
VAR VOLATILE BIT ses IS Pin_B6
Port_B_Yon = Hepsi_Cikis
—————————————————–
—————————————————–
—————————————————–
– DEĞİŞKEN TANIMLAMALARI—————————-
VAR BYTE saat_,dakika_,saniye_,gun_,ay_,yil_,haf_gun_
VAR BYTE saat22,saat11,dakika22,dakika11
VAR BYTE saat_kontrol,dakika_kontrol
—————————————————–
—————————————————–
—————————————————–
—————————————————–
CONST BYTE a_ = 0b_1111_1011 ;disp_de a harfi
CONST BYTE y_ = 0b_0111_0111 ;disp_de y harfi
CONST BYTE r_ = 0b_1000_1101 ;disp_de r harfi
—————————————————–
—————————————————–
—————————————————–
PROCEDURE ses_cik ( BYTE IN kere , BYTE IN frekans , BYTE IN ara)IS
WHILE kere>0 LOOP
FOR 100 LOOP
ses=high
Gecikme_10us(frekans)
ses=low
Gecikme_10us(frekans)
END LOOP
kere=kere-1
Gecikme_10ms(ara)
END LOOP
END PROCEDURE
PROCEDURE seg_yaz IS
disari_it(0,0,dakika11)
disari_it(0,0,dakika22)
disari_it(0,0,saat11)
disari_it(0,0,saat22)
END PROCEDURE
—————————————————–
—————————————————–
—————————————————–
PROCEDURE ayir IS
saat11=( saat_ << 4 ) >> 4
saat22= saat_ >> 4
dakika11=( dakika_ << 4 ) >> 4
dakika22= dakika_ >> 4
—————————————————–
saat11 = Ortak_Katot_Al( saat11, 0 )
saat22 = Ortak_Katot_Al( saat22, 0 )
dakika11 = Ortak_Katot_Al( dakika11, 0 )
dakika22 = Ortak_Katot_Al( dakika22, 0 )
END PROCEDURE
PROCEDURE ayir2(byte IN x1,byte IN x2,byte IN x3 , BYTE IN x4) IS
x3 = Ortak_Katot_Al( x3, 0 )
x4 = Ortak_Katot_Al( x4, 0 )
x1 = Ortak_Katot_Al( x1, 0 )
x2 = Ortak_Katot_Al( x2, 0 )
disari_it(0,0,x3)
disari_it(0,0,x4)
disari_it(0,0,x1)
disari_it(0,0,x2)
END PROCEDURE
—————————————————–
—————————————————–
—————————————————–
PROCEDURE saat_ayar IS –saat ayarlama
VAR BYTE s_a=0,s_u=0,d_a=0,d_u=0
saat_=0
dakika_=0
disari_it(0,1,r_)
disari_it(0,1,a_)
disari_it(0,1,y_)
disari_it(0,1,a_)
Gecikme_1s(2)
ayir
seg_yaz
—————————————————–
WHILE mod LOOP –saat ayarı
—————————————————–
IF !ust THEN
saat_=saat_+1
s_a=s_a+1
IF s_a==10 THEN
s_a=0
s_u=s_u+1
END IF
Gecikme_100ms(3)
IF saat_==24 THEN saat_=0 END IF
IF s_a==4 & s_u==2 THEN
s_a=0
s_u=0
END IF
ayir2(s_a,s_u,d_a,d_u)
END IF
—————————————————–
END LOOP
—————————————————–
Gecikme_100ms(5)
—————————————————–
WHILE mod LOOP –dakika ayarı
—————————————————–
IF !ust THEN
dakika_=dakika_+1
d_a=d_a+1
IF d_a==10 THEN
d_a=0
d_u=d_u+1
END IF
Gecikme_100ms(3)
IF dakika_==60 THEN dakika_=0 END IF
IF d_a==0 & d_u==6 THEN
d_a=0
d_u=0
END IF
ayir2(s_a,s_u,d_a,d_u)
END IF
END LOOP
—————————————————–
DS1307_Yaz(yil_,ay_,gun_,0,saat_,dakika_,0)
ds1307_oku(yil_,ay_,gun_,haf_gun_,saat_,dakika_,saniye_)
ayir
seg_yaz
Gecikme_100ms(4)
—————————————————–
END PROCEDURE
—————————————————–
—————————————————–
—————————————————–
PROCEDURE ds_yaz IS
CONST BYTE deg_o = 0b_1100_0111 ;disp_de derecenin noktasi
CONST BYTE deg_c = 0b_1001_1101 ;disp_de C harfi
CONST BYTE tire = 0b_0000_0011 ;disp_de – işareti
VAR BYTE derece , derece_a , derece_u
VAR BIT isaret
ds18B20_oku(derece,isaret)
derece = derece – 1
derece_u = derece / 10
IF derece_a!=0 THEN derece_a = ( derece%10 ) + 1 END IF
IF derece_a==0 THEN derece_a =derece%10 END IF
derece_u = Ortak_Katot_Al( derece_u , 0 )
derece_a = Ortak_Katot_Al( derece_a , 0 )
disari_it(0,1,deg_c)
disari_it(0,1,deg_o)
IF !isaret then
disari_it(0,0,derece_a)
disari_it(0,0,derece_u)
ELSE
disari_it(0,0,derece_a)
disari_it(0,1,tire)
END IF
Gecikme_500ms(10)
—————————————————–
FOR 10 LOOP
ds1307_oku(yil_,ay_,gun_,haf_gun_,saat_,dakika_,saniye_)
END LOOP
ayir
seg_yaz
END PROCEDURE
—————————————————–
—————————————————–
—————————————————–
;DS1307_Yaz(0,0,0,0,0,0,0)
ds1307_oku(yil_,ay_,gun_,haf_gun_,saat_,dakika_,saniye_)
ayir
seg_yaz
DS1820_COZUNURLUK_DEGISTIR(9) –ds18b20 10 BIT cozunurluk
—————————————————–
PortA = 0xFF
—————————————————–
—————————————————–
—————————————————–
————ANA PROGRAM BLOĞU————————
—————————————————–
FOREVER LOOP
—————————————————–
IF Mod == 0 THEN saat_ayar END IF –Eğer MOD’a basılırsa ayar moduna geç
—————————————————–
–DS1307 oku
ds1307_oku(yil_,ay_,gun_,haf_gun_,saat_,dakika_,saniye_)
IF saniye_==0×05 THEN ds_yaz END IF –eğer saniye 5 veya 59 ise
IF saniye_==0×35 THEN ds_yaz END IF — Displeylere sıcaklığı yaz
—————————————————–
IF dakika_kontrol!=dakika_ THEN –Dakika artarsa yapılacaklar
ayir –Gelen zaman verilerini alt ve üst iki nibble’a ayırdık
seg_yaz –Ayrılan Saat ve Dakika verilerini Displaylere yazar
END IF
dakika_kontrol = dakika_
—————————————————–
IF saat_kontrol!=saat_ THEN –Saat artarsa yapılacaklar
ses_cik(2,50,10)
END IF
saat_kontrol = saat_
—————————————————–
END LOOP –Ana program bloğu sonu
—————————————————–
—————————————————–
0 yorum:
Yorum Gönder