16f628a ve ds1307 Saat&Tarih

Başlatan rck8942, 23 Ağustos 2009, 12:58:28

cetinkaya

Arkadaslar bu devreyi calistiramadim breadboarda kurdum ancak devre calismadi bi göz atarmisiniz kod larin dogru olup olmadigina dair. Sicaklik sensörü olarak ds18b20 kullandim proteusta calisti ama gercekte lcd de birsey göremiyorum.Ayrica ds1307 de 3 voltluk pili takmadim. +5V ile ds18b20 "dq" arasinda 4.7 kOhm koydum.

[/URL][/img]

Kod:

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 23.08.2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628A  
@ DEVICE pic16F628A, WDT_OFF 
@ DEVICE pic16F628A, PWRT_ON 
@ DEVICE pic16F628A, PROTECT_OFF 
@ DEVICE pic16F628A, HS_OSC 
Define OSC	4

CMCON=7
TRISA=%00010000
TRISB=%11000011

SYMBOL SCL=PORTA.7
SYMBOL SDA=PORTA.6
SYMBOL DQ=PORTB.6


OS VAR BYTE
SANIYE VAR BYTE
S1 VAR BYTE
S2 VAR BYTE
DAKIKA VAR BYTE
D1 VAR BYTE
D2 VAR BYTE
SAAT VAR BYTE
SA1 VAR BYTE
SA2 VAR BYTE
GUNADI VAR BYTE
GUN VAR BYTE
G1 VAR BYTE
G2 VAR BYTE
AY VAR BYTE
A1 VAR BYTE
A2 VAR BYTE
YIL VAR BYTE
Y1 VAR BYTE
Y2 VAR BYTE

ISI VAR WORD
HAM VAR WORD
TA1 VAR WORD
TA2 VAR WORD
TA3 VAR WORD
TA4 VAR WORD
TA5 VAR WORD



GA1 VAR BIT
GA2 VAR BIT
GA3 VAR BIT
GA4 VAR BIT
GA5 VAR BIT
OS.BIT7=0
GA2=0
GA4=0
I2CWRITE SDA,SCL,$D0,$00,[OS]
PAUSE 200
BASLA:

I2CREAD SDA,SCL,$D0,$00,[SANIYE,DAKIKA,SAAT,GUNADI,GUN,AY,YIL]

S1=SANIYE//16
S2=SANIYE-S1
S2=S2//15

D1=DAKIKA//16
D2=DAKIKA-D1
D2=D2//15

SA1=SAAT//16
SA2=SAAT-SA1
SA2=SA2//15

G1=GUN//16
G2=GUN-G1
G2=G2//15

A1=AY//16
A2=AY-A1
A2=A2//15

Y1=YIL//16
Y2=YIL-Y1
Y2=Y2//15 

IF PORTB.1=1 THEN GA4=0
IF GA4=1 THEN BASLA

LCDOUT $FE,$80,#SA2,#SA1,":",#D2,#D1,":",#S2,#S1
LCDOUT $FE,$C8,#G2,#G1,".",#A2,#A1,".",#Y2,#Y1
DEM:
IF GUNADI=1 THEN LCDOUT $FE,$88," PAZAR  "
IF GUNADI=2 THEN LCDOUT $FE,$88," PZRTESI"
IF GUNADI=3 THEN LCDOUT $FE,$88," SALI   "
IF GUNADI=4 THEN LCDOUT $FE,$88," CRSAMBA"
IF GUNADI=5 THEN LCDOUT $FE,$88," PRSEMBE"
IF GUNADI=6 THEN LCDOUT $FE,$88," CUMA   "
IF GUNADI=7 THEN LCDOUT $FE,$88," CMRTESI"
IF GA5=1 THEN RETURN

IF GA1=1 THEN RETURN
IF PORTB.1=0 THEN AYAR1
 
OWOUT DQ,1,[$CC,$44]
DONGU:
OWIN DQ,4,[ISI]
IF ISI=0 THEN DONGU 
OWOUT DQ,1,[$CC,$BE]
OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE]

IF HAM.BIT11=0 THEN HESAPLA
IF HAM.BIT11=1 THEN HESAPLA1
GOTO BASLA






AYAR1:GA1=1:GA2=1
GOTO AYAR2

AYAR2:
IF PORTB.7=0 THEN DAKIKA=DAKIKA+$01
IF DAKIKA.1=1 AND DAKIKA.3=1 THEN DAKIKA=DAKIKA+$10
IF DAKIKA.1=1 AND DAKIKA.3=1 THEN DAKIKA=DAKIKA-$0A
IF DAKIKA=$60 THEN DAKIKA=$00
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$83," "," "
PAUSE 80
LCDOUT $FE,$83,#D2,#D1
PAUSE 300
IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR2
IF PORTB.1=0 THEN GOTO AYAR3
GOTO AYAR2



AYAR3:
GA2=1 
GOTO AYAR4


AYAR4:
IF PORTB.7=0 THEN SAAT=SAAT+$01
IF SAAT.1=1 AND SAAT.3=1 THEN SAAT=SAAT+$10
IF SAAT.1=1 AND SAAT.3=1 THEN SAAT=SAAT-$0A
IF SAAT=$24 THEN SAAT=$00
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$80," "," "
PAUSE 80
LCDOUT $FE,$80,#SA2,#SA1
PAUSE 300

IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR4
IF PORTB.1=0 THEN AYAR5
GOTO AYAR4



AYAR5:
GA2=1
GOTO AYAR6


AYAR6: GA5=1
IF PORTB.7=0 THEN GUNADI=GUNADI+$01
IF GUNADI=$08 THEN GUNADI=$01
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$89,"       "
PAUSE 80
GOSUB DEM
PAUSE 300
IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR6
IF PORTB.1=0 THEN AYAR7
GOTO AYAR6


AYAR7:GA2=1:GA5=0
GOTO AYAR8


AYAR8:
IF PORTB.7=0 THEN GUN=GUN+$01
IF GUN.1=1 AND GUN.3=1 THEN GUN=GUN+$10
IF GUN.1=1 AND GUN.3=1 THEN GUN=GUN-$0A
IF (AY=$01 OR ay=$03 OR ay=$05 OR ay=$7 OR ay=$08 OR ay=$10 OR ay=$12) AND GUN=$32 THEN GUN=$01
IF (AY=$04 OR ay=$06 OR ay=$09 OR ay=$11) AND GUN=$31 THEN GUN=$01

IF (YIL=$08 OR YIL=$12 OR YIL=$16 OR YIL=$20) AND GUN=$30 THEN GUN=$01
IF (YIL=$07 OR YIL=$09 OR YIL=$10 OR YIL=$11 OR YIL=$13 OR YIL=$14 OR YIL=$15 OR YIL=$17 OR YIL=$18 OR YIL=$19 OR YIL=$21) AND GUN=$29 THEN GUN=$01

IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$C8," "," "
PAUSE 80
LCDOUT $FE,$C8,#G2,#G1
PAUSE 300

IF PORTB.1=1  THEN GA2=0
IF GA2=1 THEN AYAR8
IF PORTB.1=0 THEN AYAR9
GOTO AYAR8




AYAR9:
ga2=1
GOTO AYAR10


AYAR10:
IF PORTB.7=0 THEN AY=AY+$01
IF AY.1=1 AND AY.3=1 THEN AY=AY+$10
IF AY.1=1 AND AY.3=1 THEN AY=AY-$0A
IF AY=$13 THEN AY=$01
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$CB," "," "
PAUSE 80
LCDOUT $FE,$CB,#A2,#A1
PAUSE 300

IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR10
IF PORTB.1=0 THEN AYAR11
GOTO AYAR10


AYAR11:
GA2=1
GOTO AYAR12




AYAR12:
IF PORTB.7=0 THEN YIL=YIL+$01
IF YIL.1=1 AND YIL.3=1 THEN YIL=YIL+$10
IF YIL.1=1 AND YIL.3=1 THEN YIL=YIL-$0A
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$CE," "," "
PAUSE 80
LCDOUT $FE,$CE,#Y2,#Y1
PAUSE 300

IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR12
IF PORTB.1=0 THEN AYAR13
GOTO AYAR12

AYAR13:
GA1=0:GA4=1
GOTO BASLA


HESAPLA:
TA2=HAM.LOWBYTE
TA2=TA2//16
TA2=TA2/2
TA2=TA2*125
ta2=ta2/10


TA1=HAM//16
TA1=HAM-TA1
TA1=TA1/16


LCDOUT $FE,$C0,"+",#TA1,".",#TA2

GOTO BASLA




HESAPLA1:
TA3=$FFFF-HAM+1
TA4=TA3//16
TA4=TA4/2
TA4=TA4*125
ta4=ta4/10


TA5=TA3//16
TA5=TA3-TA5
TA5=TA5/16

LCDOUT $FE,$C0,"-",#TA5,".",#TA4

GOTO BASLA 




AYAR0:PAUSE 200:
I2CWRITE SDA,SCL,$D0,$00,[SANIYE,DAKIKA,SAAT,GUNADI,GUN,AY,YIL]

GOSUB BASLA
RETURN
END

ete

Gördüğüm bazı hataları yazayım belki onları düzeltince çalışır.
Başka hata varsa onlarıda sonra yazmaya çalışacağım.

TRISA= komutunda 4. biti 1 yapmışsın onu sıfır oalrak düzelt. Oraya LCD bağlı.

Devreyi kristalle çalıştıracak isen DS1307 yi başka pinlere bağla. Çünki sigorta tanımlamalarında

@ DEVICE pic16F628A, HS_OSC
kullanmışsın. Bu tanımlama 10MHz ve yukarısı kristal bağlantıları içindir. Kristal ise PortA.6 ve PortA.7 pinlerine bağlanır.

Devreyi şekilde çizdiğin şekilde kullanacak isen tanımlamayı aşağıdaki şekilde değiştir.

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

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

tnen

Ustadlar merhabalar;
Bu DS1307 nin backup pili bağlı olduğu halde (3V) enerji kestiğimde neden DS1307 nin osc si duruyor. Yani mesela enerjiyi 12:05 de kestim ve yarım saat sonra tekrar verdiğimde normalde 12:35 olması gerekirken 12:05 den devam ediyor.Sorun nedir acaba bi fikri olan var mı?
not: Program şu anda yanımda değil ondan ekleyemedim.

Ziya

Alıntı yapılan: "tnen"Ustadlar merhabalar;
Bu DS1307 nin backup pili bağlı olduğu halde (3V) enerji kestiğimde neden DS1307 nin osc si duruyor. Yani mesela enerjiyi 12:05 de kestim ve yarım saat sonra tekrar verdiğimde normalde 12:35 olması gerekirken 12:05 den devam ediyor.Sorun nedir acaba bi fikri olan var mı?
not: Program şu anda yanımda değil ondan ekleyemedim.
Durmaz. Birincisi olayın mantığına ters. İkincisi benim yaptığım kartta kullandığım 1307 şehirler arası yolculuk bile yapıyor, saat durmuyor.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

cetinkaya

Alıntı yapılan: "ete"Gördüğüm bazı hataları yazayım belki onları düzeltince çalışır.
Başka hata varsa onlarıda sonra yazmaya çalışacağım.

TRISA= komutunda 4. biti 1 yapmışsın onu sıfır oalrak düzelt. Oraya LCD bağlı.

Devreyi kristalle çalıştıracak isen DS1307 yi başka pinlere bağla. Çünki sigorta tanımlamalarında

@ DEVICE pic16F628A, HS_OSC
kullanmışsın. Bu tanımlama 10MHz ve yukarısı kristal bağlantıları içindir. Kristal ise PortA.6 ve PortA.7 pinlerine bağlanır.

Devreyi şekilde çizdiğin şekilde kullanacak isen tanımlamayı aşağıdaki şekilde değiştir.

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

Ete

hocam cevabiniz icin tesekkür ederim dediginiz gibi port a yi komple cikis yaptim. osilator olarak bu kodu yazdim
DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
ve breadboardda denedim yine olmadi lcd birsey göstermiyor sadece lcd deki 5x7 noktalar bazen bi yanip sönüyor ondada hepsi değil saygilar sensör olarakta ds18b20 kullaniyorum kodlar uygunmudur onun icin ? hayirli ramazanlar

cetinkaya

Aktüel Sema & kod sorun halen devam ediyor!!



************************************************************
@ DEVICE pic16f628a , INTRC_OSC_NOCLKOUT
@ DEVICE pic16f628a , MCLR_OFF

CMCON=7
TRISA=%00000000
TRISB=%11000011

SYMBOL SCL=PORTA.7
SYMBOL SDA=PORTA.6
SYMBOL DQ=PORTB.6

OS VAR BYTE
SANIYE VAR BYTE
S1 VAR BYTE
S2 VAR BYTE
DAKIKA VAR BYTE
D1 VAR BYTE
D2 VAR BYTE
SAAT VAR BYTE
SA1 VAR BYTE
SA2 VAR BYTE
GUNADI VAR BYTE
GUN VAR BYTE
G1 VAR BYTE
G2 VAR BYTE
AY VAR BYTE
A1 VAR BYTE
A2 VAR BYTE
YIL VAR BYTE
Y1 VAR BYTE
Y2 VAR BYTE

ISI VAR WORD
HAM VAR WORD
TA1 VAR WORD
TA2 VAR WORD
TA3 VAR WORD
TA4 VAR WORD
TA5 VAR WORD

GA1 VAR BIT
GA2 VAR BIT
GA3 VAR BIT
GA4 VAR BIT
GA5 VAR BIT
OS.BIT7=0
GA2=0
GA4=0
I2CWRITE SDA,SCL,$D0,$00,[OS]
PAUSE 200
BASLA:

I2CREAD SDA,SCL,$D0,$00,[SANIYE,DAKIKA,SAAT,GUNADI,GUN,AY,YIL]

S1=SANIYE//16
S2=SANIYE-S1
S2=S2//15

D1=DAKIKA//16
D2=DAKIKA-D1
D2=D2//15

SA1=SAAT//16
SA2=SAAT-SA1
SA2=SA2//15

G1=GUN//16
G2=GUN-G1
G2=G2//15

A1=AY//16
A2=AY-A1
A2=A2//15

Y1=YIL//16
Y2=YIL-Y1
Y2=Y2//15 

IF PORTB.1=1 THEN GA4=0
IF GA4=1 THEN BASLA

LCDOUT $FE,$80,#SA2,#SA1,":",#D2,#D1,":",#S2,#S1
LCDOUT $FE,$C8,#G2,#G1,".",#A2,#A1,".",#Y2,#Y1
DEM:
IF GUNADI=1 THEN LCDOUT $FE,$88," PAZAR  "
IF GUNADI=2 THEN LCDOUT $FE,$88," PZRTESI"
IF GUNADI=3 THEN LCDOUT $FE,$88," SALI   "
IF GUNADI=4 THEN LCDOUT $FE,$88," CRSAMBA"
IF GUNADI=5 THEN LCDOUT $FE,$88," PRSEMBE"
IF GUNADI=6 THEN LCDOUT $FE,$88," CUMA   "
IF GUNADI=7 THEN LCDOUT $FE,$88," CMRTESI"
IF GA5=1 THEN RETURN

IF GA1=1 THEN RETURN
IF PORTB.1=0 THEN AYAR1
 
OWOUT DQ,1,[$CC,$44]
DONGU:
OWIN DQ,4,[ISI]
IF ISI=0 THEN DONGU 
OWOUT DQ,1,[$CC,$BE]
OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE]

IF HAM.BIT11=0 THEN HESAPLA
IF HAM.BIT11=1 THEN HESAPLA1
GOTO BASLA


AYAR1:GA1=1:GA2=1
GOTO AYAR2

AYAR2:
IF PORTB.7=0 THEN DAKIKA=DAKIKA+$01
IF DAKIKA.1=1 AND DAKIKA.3=1 THEN DAKIKA=DAKIKA+$10
IF DAKIKA.1=1 AND DAKIKA.3=1 THEN DAKIKA=DAKIKA-$0A
IF DAKIKA=$60 THEN DAKIKA=$00
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$83," "," "
PAUSE 80
LCDOUT $FE,$83,#D2,#D1
PAUSE 300
IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR2
IF PORTB.1=0 THEN GOTO AYAR3
GOTO AYAR2


AYAR3:
GA2=1 
GOTO AYAR4


AYAR4:
IF PORTB.7=0 THEN SAAT=SAAT+$01
IF SAAT.1=1 AND SAAT.3=1 THEN SAAT=SAAT+$10
IF SAAT.1=1 AND SAAT.3=1 THEN SAAT=SAAT-$0A
IF SAAT=$24 THEN SAAT=$00
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$80," "," "
PAUSE 80
LCDOUT $FE,$80,#SA2,#SA1
PAUSE 300

IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR4
IF PORTB.1=0 THEN AYAR5
GOTO AYAR4


AYAR5:
GA2=1
GOTO AYAR6


AYAR6: GA5=1
IF PORTB.7=0 THEN GUNADI=GUNADI+$01
IF GUNADI=$08 THEN GUNADI=$01
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$89,"       "
PAUSE 80
GOSUB DEM
PAUSE 300
IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR6
IF PORTB.1=0 THEN AYAR7
GOTO AYAR6


AYAR7:GA2=1:GA5=0
GOTO AYAR8

AYAR8:
IF PORTB.7=0 THEN GUN=GUN+$01
IF GUN.1=1 AND GUN.3=1 THEN GUN=GUN+$10
IF GUN.1=1 AND GUN.3=1 THEN GUN=GUN-$0A
IF (AY=$01 OR ay=$03 OR ay=$05 OR ay=$7 OR ay=$08 OR ay=$10 OR ay=$12) AND GUN=$32 THEN GUN=$01
IF (AY=$04 OR ay=$06 OR ay=$09 OR ay=$11) AND GUN=$31 THEN GUN=$01

IF (YIL=$08 OR YIL=$12 OR YIL=$16 OR YIL=$20) AND GUN=$30 THEN GUN=$01
IF (YIL=$07 OR YIL=$09 OR YIL=$10 OR YIL=$11 OR YIL=$13 OR YIL=$14 OR YIL=$15 OR YIL=$17 OR YIL=$18 OR YIL=$19 OR YIL=$21) AND GUN=$29 THEN GUN=$01

IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$C8," "," "
PAUSE 80
LCDOUT $FE,$C8,#G2,#G1
PAUSE 300

IF PORTB.1=1  THEN GA2=0
IF GA2=1 THEN AYAR8
IF PORTB.1=0 THEN AYAR9
GOTO AYAR8


AYAR9:
ga2=1
GOTO AYAR10


AYAR10:
IF PORTB.7=0 THEN AY=AY+$01
IF AY.1=1 AND AY.3=1 THEN AY=AY+$10
IF AY.1=1 AND AY.3=1 THEN AY=AY-$0A
IF AY=$13 THEN AY=$01
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$CB," "," "
PAUSE 80
LCDOUT $FE,$CB,#A2,#A1
PAUSE 300

IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR10
IF PORTB.1=0 THEN AYAR11
GOTO AYAR10

AYAR11:
GA2=1
GOTO AYAR12

AYAR12:
IF PORTB.7=0 THEN YIL=YIL+$01
IF YIL.1=1 AND YIL.3=1 THEN YIL=YIL+$10
IF YIL.1=1 AND YIL.3=1 THEN YIL=YIL-$0A
IF PORTB.7=0 THEN GOSUB AYAR0

LCDOUT $FE,$CE," "," "
PAUSE 80
LCDOUT $FE,$CE,#Y2,#Y1
PAUSE 300

IF PORTB.1=1 THEN GA2=0
IF GA2=1 THEN AYAR12
IF PORTB.1=0 THEN AYAR13
GOTO AYAR12

AYAR13:
GA1=0:GA4=1
GOTO BASLA

HESAPLA:
TA2=HAM.LOWBYTE
TA2=TA2//16
TA2=TA2/2
TA2=TA2*125
ta2=ta2/10

TA1=HAM//16
TA1=HAM-TA1
TA1=TA1/16

LCDOUT $FE,$C0,"+",#TA1,".",#TA2

GOTO BASLA


HESAPLA1:
TA3=$FFFF-HAM+1
TA4=TA3//16
TA4=TA4/2
TA4=TA4*125
ta4=ta4/10

TA5=TA3//16
TA5=TA3-TA5
TA5=TA5/16

LCDOUT $FE,$C0,"-",#TA5,".",#TA4

GOTO BASLA 

AYAR0:PAUSE 200:
I2CWRITE SDA,SCL,$D0,$00,[SANIYE,DAKIKA,SAAT,GUNADI,GUN,AY,YIL]

GOSUB BASLA
RETURN
END

nurim



Devrede ve programda bir iki ufak değişiklik yaptım, isis'te çalışıyor.Bu durumda gerçek devre kurulduğunda da çalışması gerekir.
Eğer çalışmıyorsa bağlantıları ve kullandığın malzemeyi gözden geçir derim.


@ DEVICE pic16F628A  
@ DEVICE pic16F628A, WDT_OFF 
@ DEVICE pic16F628A, PWRT_ON 
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT 'dahili osilatör  
'@ DEVICE pic16F628A, HS_OSC 'kristal bağlamak için
 
Define OSC   4 
CMCON=7 
TRISA=%00000000 
TRISB=%11110010

SYMBOL SCL=PORTB.4
SYMBOL SDA=PORTB.5 
SYMBOL DQ =PORTB.6 

OS VAR BYTE 
SANIYE VAR BYTE 
S1 VAR BYTE 
S2 VAR BYTE 
DAKIKA VAR BYTE 
D1 VAR BYTE 
D2 VAR BYTE 
SAAT VAR BYTE 
SA1 VAR BYTE 
SA2 VAR BYTE 
GUNADI VAR BYTE 
GUN VAR BYTE 
G1 VAR BYTE 
G2 VAR BYTE 
AY VAR BYTE 
A1 VAR BYTE 
A2 VAR BYTE 
YIL VAR BYTE 
Y1 VAR BYTE 
Y2 VAR BYTE 
ISI VAR WORD 
HAM VAR WORD 
TA1 VAR WORD 
TA2 VAR WORD 
TA3 VAR WORD 
TA4 VAR WORD 
TA5 VAR WORD 
GA1 VAR BIT 
GA2 VAR BIT 
GA3 VAR BIT 
GA4 VAR BIT 
GA5 VAR BIT 
OS.BIT7=0 
GA2=0 
GA4=0 
I2CWRITE SDA,SCL,$D0,$00,[OS] 
PAUSE 200 

BASLA: 
PAUSE 100
I2CREAD SDA,SCL,$D0,$00,[SANIYE,DAKIKA,SAAT,GUNADI,GUN,AY,YIL] 

S1=SANIYE//16 
S2=SANIYE-S1 
S2=S2//15 

D1=DAKIKA//16 
D2=DAKIKA-D1 
D2=D2//15 

SA1=SAAT//16 
SA2=SAAT-SA1 
SA2=SA2//15 

G1=GUN//16 
G2=GUN-G1 
G2=G2//15 

A1=AY//16 
A2=AY-A1 
A2=A2//15 

Y1=YIL//16 
Y2=YIL-Y1 
Y2=Y2//15 

IF PORTB.1=1 THEN GA4=0 
IF GA4=1 THEN BASLA 

LCDOUT $FE,$80,#SA2,#SA1,":",#D2,#D1,":",#S2,#S1 
LCDOUT $FE,$C8,#G2,#G1,".",#A2,#A1,".",#Y2,#Y1 
DEM: 
IF GUNADI=1 THEN LCDOUT $FE,$88," PAZAR  " 
IF GUNADI=2 THEN LCDOUT $FE,$88," PZRTESI" 
IF GUNADI=3 THEN LCDOUT $FE,$88," SALI   " 
IF GUNADI=4 THEN LCDOUT $FE,$88," CRSAMBA" 
IF GUNADI=5 THEN LCDOUT $FE,$88," PRSEMBE" 
IF GUNADI=6 THEN LCDOUT $FE,$88," CUMA   " 
IF GUNADI=7 THEN LCDOUT $FE,$88," CMRTESI" 

IF GA5=1 THEN RETURN 
IF GA1=1 THEN RETURN 
IF PORTB.1=0 THEN AYAR1 
  
OWOUT DQ,1,[$CC,$44] 
DONGU: 
OWIN DQ,4,[ISI] 
IF ISI=0 THEN DONGU 
OWOUT DQ,1,[$CC,$BE] 
OWIN DQ,2,[HAM.LOWBYTE,HAM.HIGHBYTE] 
IF HAM.BIT11=0 THEN HESAPLA 
IF HAM.BIT11=1 THEN HESAPLA1 
GOTO BASLA 

AYAR1:GA1=1:GA2=1 
GOTO AYAR2 

AYAR2: 
IF PORTB.7=0 THEN DAKIKA=DAKIKA+$01 
IF DAKIKA.1=1 AND DAKIKA.3=1 THEN DAKIKA=DAKIKA+$10 
IF DAKIKA.1=1 AND DAKIKA.3=1 THEN DAKIKA=DAKIKA-$0A 
IF DAKIKA=$60 THEN DAKIKA=$00 
IF PORTB.7=0 THEN GOSUB AYAR0 

LCDOUT $FE,$83," "," " 
PAUSE 80 
LCDOUT $FE,$83,#D2,#D1 
PAUSE 300 
IF PORTB.1=1 THEN GA2=0 
IF GA2=1 THEN AYAR2 
IF PORTB.1=0 THEN GOTO AYAR3 
GOTO AYAR2 

AYAR3: 
GA2=1 
GOTO AYAR4 

AYAR4: 
IF PORTB.7=0 THEN SAAT=SAAT+$01 
IF SAAT.1=1 AND SAAT.3=1 THEN SAAT=SAAT+$10 
IF SAAT.1=1 AND SAAT.3=1 THEN SAAT=SAAT-$0A 
IF SAAT=$24 THEN SAAT=$00 
IF PORTB.7=0 THEN GOSUB AYAR0 

LCDOUT $FE,$80," "," " 
PAUSE 80 
LCDOUT $FE,$80,#SA2,#SA1 
PAUSE 300 

IF PORTB.1=1 THEN GA2=0 
IF GA2=1 THEN AYAR4 
IF PORTB.1=0 THEN AYAR5 
GOTO AYAR4 

AYAR5: 
GA2=1 
GOTO AYAR6 

AYAR6: GA5=1 
IF PORTB.7=0 THEN GUNADI=GUNADI+$01 
IF GUNADI=$08 THEN GUNADI=$01 
IF PORTB.7=0 THEN GOSUB AYAR0 

LCDOUT $FE,$89,"       " 
PAUSE 80 
GOSUB DEM 
PAUSE 300 
IF PORTB.1=1 THEN GA2=0 
IF GA2=1 THEN AYAR6 
IF PORTB.1=0 THEN AYAR7 
GOTO AYAR6 

AYAR7:GA2=1:GA5=0 
GOTO AYAR8 

AYAR8: 
IF PORTB.7=0 THEN GUN=GUN+$01 

IF GUN.1=1 AND GUN.3=1 THEN GUN=GUN+$10 
IF GUN.1=1 AND GUN.3=1 THEN GUN=GUN-$0A 

IF (AY=$01 OR ay=$03 OR ay=$05 OR ay=$7 OR ay=$08 OR ay=$10 OR ay=$12) AND GUN=$32 THEN GUN=$01 
IF (AY=$04 OR ay=$06 OR ay=$09 OR ay=$11) AND GUN=$31 THEN GUN=$01 

IF (YIL=$08 OR YIL=$12 OR YIL=$16 OR YIL=$20) AND GUN=$30 THEN GUN=$01 
IF (YIL=$07 OR YIL=$09 OR YIL=$10 OR YIL=$11 OR YIL=$13 OR YIL=$14 OR YIL=$15 OR YIL=$17 OR YIL=$18 OR YIL=$19 OR YIL=$21) AND GUN=$29 THEN GUN=$01 

IF PORTB.7=0 THEN GOSUB AYAR0 

LCDOUT $FE,$C8," "," " 
PAUSE 80 
LCDOUT $FE,$C8,#G2,#G1 
PAUSE 300 

IF PORTB.1=1  THEN GA2=0 
IF GA2=1 THEN AYAR8 
IF PORTB.1=0 THEN AYAR9 
GOTO AYAR8 

AYAR9: 
ga2=1 
GOTO AYAR10 

AYAR10: 
IF PORTB.7=0 THEN AY=AY+$01 
IF AY.1=1 AND AY.3=1 THEN AY=AY+$10 
IF AY.1=1 AND AY.3=1 THEN AY=AY-$0A 
IF AY=$13 THEN AY=$01 
IF PORTB.7=0 THEN GOSUB AYAR0 

LCDOUT $FE,$CB," "," " 
PAUSE 80 
LCDOUT $FE,$CB,#A2,#A1 
PAUSE 300 

IF PORTB.1=1 THEN GA2=0 
IF GA2=1 THEN AYAR10 
IF PORTB.1=0 THEN AYAR11 
GOTO AYAR10 

AYAR11: 
GA2=1 
GOTO AYAR12 

AYAR12: 
IF PORTB.7=0 THEN YIL=YIL+$01 
IF YIL.1=1 AND YIL.3=1 THEN YIL=YIL+$10 
IF YIL.1=1 AND YIL.3=1 THEN YIL=YIL-$0A 
IF PORTB.7=0 THEN GOSUB AYAR0 

LCDOUT $FE,$CE," "," " 
PAUSE 80 
LCDOUT $FE,$CE,#Y2,#Y1 
PAUSE 300 

IF PORTB.1=1 THEN GA2=0 
IF GA2=1 THEN AYAR12 
IF PORTB.1=0 THEN AYAR13 
GOTO AYAR12 

AYAR13: 
GA1=0:GA4=1 
GOTO BASLA 

HESAPLA: 
TA2=HAM.LOWBYTE 
TA2=TA2//16 
TA2=TA2/2 
TA2=TA2*125 
ta2=ta2/10 
TA1=HAM//16 
TA1=HAM-TA1 
TA1=TA1/16 

LCDOUT $FE,$C0,"+",#TA1,".",#TA2 
GOTO BASLA 

HESAPLA1: 
TA3=$FFFF-HAM+1 
TA4=TA3//16 
TA4=TA4/2 
TA4=TA4*125 
ta4=ta4/10 
TA5=TA3//16 
TA5=TA3-TA5 
TA5=TA5/16 

LCDOUT $FE,$C0,"-",#TA5,".",#TA4 
GOTO BASLA 

AYAR0:PAUSE 200: 
I2CWRITE SDA,SCL,$D0,$00,[SANIYE,DAKIKA,SAAT,GUNADI,GUN,AY,YIL] 

GOSUB BASLA 
RETURN 
END


Kolay gelsin
nurim
"Bilgi paylaştıkça artar ,acı ve keder paylaştıkça azalır"

cetinkaya

sensör olarak ds1822 yi kullanmiyorum ds18b20 kullaniyorum ikisi icindemi gecerli bu kodlar ? onu anlayamadim.

nurim

Alıntı yapılan: "rck8942"sensör olarak ds1822 yi kullanmiyorum ds18b20 kullaniyorum ikisi icindemi gecerli bu kodlar ? onu anlayamadim.

Hem DS1822, ve hemde DS18B20, ile çalışıyor....




Kolay gelsin
nurim
"Bilgi paylaştıkça artar ,acı ve keder paylaştıkça azalır"

cetinkaya

nuri hocam devreyi proteusta simule edemiyorum sizin devrenin aynisi cizdim olmadi 7.6 sp0 kullaniyorum.

nurim

Alıntı yapılan: "rck8942"nuri hocam devreyi proteusta simule edemiyorum sizin devrenin aynisi cizdim olmadi 7.6 sp0 kullaniyorum.

Çalışan dosya örneğini,B U R A D A N İndirebilirsin.
Ben 7.5 SP3 kullanıyorum.

Kolay gesin
nurim
"Bilgi paylaştıkça artar ,acı ve keder paylaştıkça azalır"

cetinkaya

Tesekkürler hocam emeğinize saglik ama simulasyonda derece hep 23.5 24.5 vs. hep .5 li gösteriyor gercektede böyle olmasin ?

nurim

Alıntı yapılan: "rck8942"Tesekkürler hocam emeğinize saglik ama simulasyonda derece hep 23.5 24.5 vs. hep .5 li gösteriyor gercektede böyle olmasin ?

İsiste "DS18B20" için değer değişimi ,o şekilde ayarlanmış.Gerçekte DS18B20 öyle çıkış vermez.

Kolay gelsin
nurim
"Bilgi paylaştıkça artar ,acı ve keder paylaştıkça azalır"

cetinkaya

hocam devreyi kurdum breadboarda yanliz lcd de sadece
20:20:20
            20.20.20   gösteriyor ? sorun nerde olabilir sizce ? gün adini ve dereceyi hic göstermiyor butonlara basinca ayarlama yapamiyorum. yardimci olursaniz sevinirim

nurim

Alıntı yapılan: "rck8942"hocam devreyi kurdum breadboarda yanliz lcd de sadece
20:20:20
            20.20.20   gösteriyor ? sorun nerde olabilir sizce ? gün adini ve dereceyi hic göstermiyor butonlara basinca ayarlama yapamiyorum. yardimci olursaniz sevinirim


By nurim

Bağlantılara dikkat DS1307, ve DS18B20 doğru bağlanmamışsa yada çalışmıyorlarsa çıkış bu şekilde oluyor.

Kolay gelsin
nurim
"Bilgi paylaştıkça artar ,acı ve keder paylaştıkça azalır"