Pic16f628 ve ds1302

erkan102

Üye
Katılım
8 Eki 2008
Mesajlar
10
Puanları
1
Yaş
39
Merhabalar,

Pic konusunda daha çok amatörüm. Bir kaç kitap aldım. hobi olarak evde akşamları birşeyler yapmaya çalışıyorum. Bir saat devresi gördüm internette. Devreyi proteus ta kurup kodları picbasicpro da derleyip deniyorum bir türlü çalıştıramadım. 1 haftadır hep aynı yerdeyim. çözemeyeceğimi anlayınca yardım istemeye karar verdim. Rica etsem bilen arkadaşlar kodları ve devreyi boş bir zamanda kontrol edebilirler mi?
 

Ekli dosyalar

  • saat.rar
    14.4 KB · Görüntüleme: 127
Devre çalışıyor.En azından isis de.
Yolladığın dosyada pic e hex dosyası yüklenmemiş(yolu gösterilmemiş).
Bununla ilgili proteus anlatımlarını okumanı öneriyorum.
Resimlere bak.
İsis de pic e sağ-sol tık , resimdeki bir pencere açılır.
Program File satırının sağ tarafında dosya resmi var tıklayınca bir pencere daha açılır ve orada , yolladığın dosyayı ve onun içerisindeki .hex uzantılı olanı gösterip onaylayacaksın.Birde pic çalışma (kristal) frekansını yazacaksın ki ne yapacağını bilsin.
Proteus simulasyon için kristale ve kondansatörlere gerek duymaz tıpkı besleme bacaklarına gerek olmadığı gibi.Şema karışık olmasın nasılsa herkes bunu bilir diyor.Gerçekde ise unutulmaması gereken şeyler.
Bundan sonra play tuşuna basınca simulasyon başlar , resimde görüldüğü gibi düzgün çalışıyor.

Bas uzantısını Micro Code Studio Plus adlı derleyici üretir-kullanır,forumda pic bölümünde biraz dolaşmanı öneriyorum.
 

Ekli dosyalar

  • Capture.JPG
    Capture.JPG
    95.7 KB · Görüntüleme: 66
  • Capture2.JPG
    Capture2.JPG
    64.5 KB · Görüntüleme: 31
7.4sp3 ve 7.2sp6 da çalışıyor.
Bu tip şeyler versiyonla değilde eklenen .dll - mod ve lib dosyaları ile alakalıdır.
DS projeler 6.7sp3 de bile çalşıyordu diye hatırlıyorum.Gerçi dikkatli olmak lazım 7 öncesi versiyon kullananlar hakkında gericilik kovuşturması açılıyormuşşş:)

Kodları yazana teşekkür etmek lazım.Ayrıntılı açıklamış her satırı.Yeni arkadaşlar için bulunmaz nimet.
.bas uzantısını açacak MCSP gibi bir şey yoksa not defteri ile açıp okuyabilirsiniz.
Aşağıya aktarıyorum.

Kod:
INCLUDE "MODEDEFS.BAS"
DEFINE	LCD_DREG	PORTB 'LCD'ye gidecek data hattının RB4'ten
DEFINE	LCD_DBIT	4 'başlayacağı belirtiliyor.
DEFINE	LCD_RSREG	PORTB 'LCD'ye karakter yazımıyla LCD'nin iç işlemlerini
DEFINE	LCD_RSBIT	2 'birbirinden ayıran RS bitine ayrılan port
DEFINE	LCD_EREG	PORTB 'LCD'ye karakter gönderildikten sonra karakterin
DEFINE	LCD_EBIT	3 'görünmesi için 1 olması gereken enable bitine
'ayrılan port
DEFINE	LCD_LINES	2 'LCD ekranın satır sayısı
DEFINE	LCD_BITS	4 'LCD'ye kaç bit üzerinden data aktarılacağı

RST var PORTA.0 'RA0	'a RST adını verdi.
IO var PORTA.2 'RA1	'e IO adını verdi.
SCLK var PORTA.1 	'RA2	'ye SCLK adını verdi.
TRISB=0 'LCD için B bacakları çıkış yapıldı.

rtcyear var byte
rtcday var byte
rtcmonth var byte
rtcdate var byte
rtchr var byte
rtcmin var byte
rtcsec var byte
rtccontrol var byte

Main:
LOW RST 'RST bacağını sıfırladı.
LOW SCLK 'SCLK bacağını sıfırladı.
rtcyear=$02 'rtcyear 'değişkenine 02h sayısını atadı.
rtcday=$06
rtcmonth=$04
rtcdate=$13
rtchr=$13
rtcmin=$42
rtcsec=$00
GOSUB SetTime 'SetTime program bloğunu çağırdı.
GOTO Main_Loop 'Main_Loop program bloguna gitti.

Main_Loop:
GOSUB GetTime 'GetTime program bloğunu çağırdı.
LCDOUT $fe,1 'Ekranı temizledi.
LCDOUT hex2 rtcmonth, "/", hex2 rtcdate, "/", hex2 rtcyear
'ay/gün/yıl şeklinde tarihi yazdı.
LCDOUT $fe, $c0 'İkinci satıra geçti
LCDOUT hex2 rtchr, ":", hex2 rtcmin, ":", hex2 rtcsec
'saat:dakika:saniye şeklinde zamanı yazdı.
Pause 300

GOTO Main_Loop

SetTime:
RST=1 'Reseti kaldırarak haberleşme hattını açtı.
SHIFTOUT IO, SCLK, LSBFIRST, [$8e, 0] 'DS1302'yi ayarlayama kodunu yolladı.
RST=0 'Resetleme
RST=1 'Reseti kaldırarak haberleşme hattını açtı.
SHIFTOUT IO, SCLK, LSBFIRST, [$be,rtcsec,rtcmin,rtchr,rtcdate,rtcmonth,rtcday,rtcyear, 0]
'DS1302'ye ayarlama yapılacağı bildirilmişti, şimdi de yeni zaman bilgileri yollandı.
RST=0 'Resetleme
Return

GetTime:
RST=1 'Reseti kaldırarak haberleşme hattını açtı.
SHIFTOUT IO, SCLK, LSBFIRST, [$bf ]
'DS1302'den zaman bilgisi alma kodunu yolladı.
SHIFTIN IO,SCLK,LSBPRE, [rtcsec, rtcmin, rtchr, rtcdate, rtcmonth, rtcday, rtcyear,rtccontrol]
'DS1302'den zaman bilgisi alınacağı bildirilmişti, şimdi de zaman bilgileri alındı.
RST=0 'Resetleme
RETURN
 
İlgilendiğiniz için teşekkür ederim arkadaşlar.

Musallim arkadaşın dediği gibi hex i pic a göstermiştim zaten, sadece rar yaparken sildim. Çünkü Sizin hdd deki yeri farklı olabileceği için, siz açarken bir anlamı olmayacaktı. Ben de de Eyupbakan daki gibi bir sonuç çıkıyor. bir haftadır denemediğim kod kalmadı.

İlginç olan şey bir sitede dsn ile birlikte hex kodunu buldum. Şuan iş yerinde olduğum için linkleri veremiyorum. antrak taydı sanırım. evdeki pc de açınca göndereyim. dsn i indirip proteusta açıyorum. hex i pic e gösteriyorum çok güzel çalışıyor. Aynı devreye benim gönderdiğim hex i uyarlayarak deniyorum çalışmıyor. değerler 00 geliyor. sanki ds1302 den zaman verisini alamıyormuş gibi. Bu durumda dll, mod ve library eksik olmuş olsa bu dsn de de çalışmaması gerekirdi diye düşünüyorum. işin içinden çıkamadım.

Eve gidince proteus versiyonuna bir bakıp yeniden cevap yazayım. Bu arada kodlar bana ait değil. Onunda linkini vereyim yazarına ayıp olmasın. :)

Cevaplar için tekrar teşekkür ederim...
 
Merhaba,

ISIS ın versiyonu 7.1 sp2 ymiş. Musallim sendeki DS1302 için çalışan dll, mod ve library dosyalarını paylaşman mümkün mü acaba? bir de onları yükleyip deniyeyim...
 
Arkadaşlar verdiğiniz bilgiler için çok teşekkür ederim.

Protesus 7.2 yi yukledim sorun çözüldü. belkide ihtiyaç olan model ve lib dosyaları bu versiyonda mevcuttu.

Saygılar, selamlar... :)
 
PM için çok teşekkür ederim Musallim. İyi geldi. :)

Selamlar...
 

Forum istatistikleri

Konular
128,212
Mesajlar
915,854
Kullanıcılar
449,990
Son üye
alpersirakaya

Yeni konular

Geri
Üst