Pic 16f628a da write komutu kullanmak

Başlatan karbal656, 15 Ocak 2008, 11:53:37

karbal656

Herkese merhaba siteye yeni üye oldum.pic basic hakkında biraz bilgim var.  
16f628a da write komutuyla hafızaya bilgi kaydetmek istiyorum . Ama bunu tuşlarla yapmak istiyorum. örnek kodlar varmı acaba . yardımcı olursanız sevinirim

ete

O kadar az bilgi vermişsinki bu soruya ancak şöyle bir cevap verilebilir.
Eeproma ne yazmak istiyorsan belirle ve birde basılacak tuş belirle ve tuşa basılıp basılmadığını kontrol et. Basılmış ise write komutu ile yazılacakları eeproma yaz.

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

karbal656

ete hocam ilgin için teşekkürler.
kısaca düşündüğüm program şöyle birşey: iki adet röleyi kontrol eden bir zaman rölesi.
1. röle eproma kayıtlı süre doluca devreden çıkacak.bu esnada 2. röle
devreye girecek ve oda epromdaki veriye göre bir süre sonra devreden çıkacak.
yani amacım pic'in enerjisi kesilse dahi kullanıcı tarafından ayarlanan sürenin değişmemesi.  kısacası bir kere ayarlandımı hep o ayarda çalışsın. ikinci bir ayara kadar.
şimdiden teşekürler.

ete

Yine eksik bilgi.
Kayıtlı süre dediğin şey muhtemelen bir tuş takımından ayarlanacak. Kısaca bir artır tuşu birde azalt tuşu bulunacak. Bu gibi durumlarda 3 adet tuş organize etmek en doğrusu olur. Ayar menüsüne girmek için SEC tuşuna basılır. Bundan sonra artır tuşu süreyi artırır, azalt tuşu süreyi azaltır. Yeniden sec tuşuna basılıncada ayarlanan süre eeproma kayıt edilir ve çalışma moduna dönülür.
Sanırım böyle bir şey yapmak istiyorsun.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

karbal656

evet  Ete hocam aynen öyle. Yalnız write ve read ile alakalı örnek bi kod yazarsan sevinirim. byte tipi değişken kullanıcam.

ete

Write komutu;
Write adres,byte  şeklinde kullanılıyor. Adres kısmına eepromun fiziksel adresi yazılmalı byte kısmına ise byte cinsinden değer taşıyan değişken adı yazılmalıdır. Her yazma komutundan sonra yaklaşık 10ms lik bir gecikme koyularak yazma işleminin bittiğinden emin olunmalıdır.
Örnek, 15 nolu eeprom adresine  SURE bilgisini yazalım.
WRITE 15,SURE
PAUSE 10

Read komutu ise benzer şekilde
Read adres,byte    şeklinde kullanılmaktadır. Okunacak bilgiye ait fiziksel adres ,adres kısmına yazılacak ve ilgili adresten okunacak bilgide byte isimli değişkene aktarılacaktır.  Okumada ayrıca gecikme vermeye gerek yoktur.
Örnek 15 nolu adresten SURE bilgisini okuyalım.
READ 15,SURE

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

karbal656

Ete hocam cevaplarınız için çok teşekkürler. Hayatınızda başarılar dilerim.

Karbal656

bulut86

PEKİ BU YAZABİLCEĞİMİZ ADRESLER DATASHEETDE YAZMIYOR GİBİ GÖRÜNÜYOR 256 BYTE OLURSA PİC KAPASİTESİ 0DEN 255E KADAR İSTEDİĞİMİZİ YAZABİLİYORUZ ANLAMINA GELİYOR DEİLMİ BİRDE YAZDIĞIMIZI NASIL TEYİT EDEBİLİRİZ VE SİLERKEN KAÇ ADET $FF YÜKLEMEK GEREKİR.ŞUNUN GİBİ;
DATA  @0,$FF,$FF....GİBİ KAÇTANE YAZICAM BUNA NERDEN BAKALBİLİRİM

bulut86

Alıntı yapılan: "bulut86"PEKİ BU YAZABİLCEĞİMİZ ADRESLER DATASHEETDE YAZMIYOR GİBİ GÖRÜNÜYOR 256 BYTE OLURSA PİC KAPASİTESİ 0DEN 255E KADAR İSTEDİĞİMİZİ YAZABİLİYORUZ ANLAMINA GELİYOR DEİLMİ BİRDE YAZDIĞIMIZI NASIL TEYİT EDEBİLİRİZ VE SİLERKEN KAÇ ADET $FF YÜKLEMEK GEREKİR.ŞUNUN GİBİ;
DATA  @0,$FF,$FF....GİBİ KAÇTANE YAZICAM BUNA NERDEN BAKALBİLİRİM


demiştim yazımı geri alıyorum.kendi soruma kendim cevap vereyim 8 adet arkadslar :oops:

ete

Eeprom kapasiteleri genellikle data sheetlerin ilk sayfasında yer alır. Ya bir tablo şeklinde yada yazılı olarak Eeprom Data başlığı altında 128x8  şeklinde ifade edilir. 8 bitlik 128 adres var demektir (0-127) buda sizin 0-127 adet 8 bitlik bilgi yazabileceğiniz anlamına gelir. Bu verdiğim örnek 16F628 için idi.

16F84 için 64 bytes of Eeprom data deniyor data sheet de. Buda sizin 0-63 arası 8 bitlik bilgi yazabileceiğiniz anlamına gelmektedir.
Aynı şekilde diğer piclerin data sheetlerine bakarsan orada kapasiteleri muhakkak görmen gerekir.

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

bulut86

evet hocam tüüh yaa kaçırdım boşuna yeni başlık açtım.neyse çok teşekkür ederim size bir sorum daha olacak.ben 16f877anın içine veriyi yazıp yazmadığımı nasıl teyit edebilirim

ete

Ancak geriye okuyarak teyid edersin. Başka yolu yok.
Okuyup yazılan ile karşılaştırırsın olur biter.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

bulut86

güzel yazmışsınızda nasıl olacak o ;)

ete

877 içine derken eeprom alanını kast ettiğini varsaymıştım. Umarım öyledir.
Bunu yapmak için yukarıdaki mesajların birinde açıklamıştım.
Write adres,data   şeklinde eeproma yazar,  Read Adres,Data şeklinde de okunur. Her yazma komutundan sonra 10 ms lik bir gecikme koymayı ihmal etmeyin.
Diyelimki 20 nolu adrese SURE isimli bir değişkenle 128 bilgisini yazıyorsun.

WRITE 20,SURE:PAUSE 10
READ 20,TEMP
IF SURE=TEMP THEN TAMAM YAZILDI


kolay Gelsin ,mesajları iyi takip et.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

bulut86

'KESMEK PROGRAM İÇİNDE BİR ARTIYOR VE HER DEFASINDA
'EEPROMA YAZILIYOR


TEYİDET:
READ    0,SURE
IF SURE=KESMEK   THEN
PAUSE 1
LCDOUT $FE,1, "YAZDI"
GOSUB ZAMAN

'ŞEKLİNDE TEYİD EDİYORUM OKE AMA ŞİMDİDE HAFIZAYI SİLEMİYORUM KULLANDIĞIM TEKNİĞİDE YAZIYIM İSTERSENİZ

DATA   @0,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
PAUSE 10