Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

CCS EPROM ÖRNEK ARES

Başlatan dursunyaman, 26 Temmuz 2013, 20:51:45

dursunyaman

S.A ARKADAŞLAR BİR TÜRLÜ BAŞARAMADIM CCS İLE DAHİLİ EPROMA İSTEDĞİMİ YAZIP OKUYA BİLİYORUM..

255 e kadar 255 den yüksek sayıları değişkene yazmıyor okumuyor

16f877 ile harici eproma yaz oku örneği varsa yardımlarınızı bekliyorum..

harici eproma deneme veya 998899 şeklinde bilgileri yazıp okumam lazım..  değişkene atayıp


int deneme1


deneme1=1989 verisini girdim
harici eproma deneme1 bilgisinini yazmak

daha sonra 16f877 ile buton yardımı ile  deneme1 değişkenindeki veriyi çekip ekrana yazmak istiyorum


not: dahili epromda bunu yapabilirken 255 sınırına yakalandım 255 den sonrası yazmıyor tek haneli oluyor

ilginize teşekkür ederim saygılar

pwm.c

dahili eeproma 8 bitten büyük değerler yazmak için
#include <internal_eeprom.c>

kütübhanesini kullan.

dosya içinde fonksiyon kullanım örneğini yazmışlar:
Alıntı Yap////                                                                        ////
////   void write_int1_eeprom(address, int8 bitPosition, int1 data)         ////
////     Call to write one bit of data                                      ////
////                                                                        ////
////   int1 read_int1_eeprom(address, int8 bitPosition)                     ////
////     Call to read one bit of data                                       ////
////                                                                        ////
////                                                                        ////
////   void write_int16_eeprom(address, int16 data)                         ////
////     Call to write a 16 bit integer                                     ////
////                                                                        ////
////   void write_int16_eeprom(address, int16 data)                         ////
////     Call to read a 16 bit integer                                      ////
////                                                                        ////
////                                                                        ////
////   void write_int32_eeprom(address, int32 data)                         ////
////     Call to write a 32 bit integer                                     ////
////                                                                        ////
////   int16 read_int32_eeprom(address)                                     ////
////     Call to read a 32 bit integer                                      ////
////                                                                        ////
////                                                                        ////
////   void write_float_eeprom(address, float data)                         ////
////     Call to write a 32 bit floating point number                       ////
////                                                                        ////
////   float read_float_eeprom(address)                                     ////
////     Call to read a 32 bit floating point number                        ////
////                                                                        ////
////  PCD only:                                                             ////
////   void write_int48_eeprom(address, int48 data)                         ////
////     Call to write a 48 bit integer                                     ////
////                                                                        ////
////   int48 read_int48_eeprom(address)                                     ////
////     Call to read a 48 bit integer                                      ////
////                                                                        ////
////   void write_int64_eeprom(address, int64 data)                         ////
////     Call to write a 64 bit integer                                     ////
////                                                                        ////
////   int64 read_int64_eeprom(address)                                     ////
////     Call to read a 64 bit integer                                      ////
////                                                                        ////
////   void write_float48_eeprom(address, float48 data)                     ////
////     Call to write a 48 bit floating point number                       ////
////                                                                        ////
////   float48 read_float48_eeprom(address)                                 ////
////     Call to read a 48 bit floating point number                        ////
////                                                                        ////
////   void write_float64_eeprom(address, float64 data)                     ////
////     Call to write a 64 bit floating point number                       ////
////                                                                        ////
////   float64 read_float64_eeprom(address)                                 ////
////     Call to read a 64 bit floating point number                        ////
////                                                                        ////
_/\/\/\_ -[ı- -ı>|- -|ı|ı|ı- -ı< -||- -l[]l-

sadogan

Ccs int tipini 8 bit işlemcilerde 8 bit kabul eder.
değişken tiplerini incelemeni öneririm
 
int16 deneme1,okunan;
   deneme1=1989;
   write_eeprom(1,deneme1>>8);
   write_eeprom(2,deneme1);
   okunan=(int16)read_eeprom(1)*256+read_eeprom(2);

tacettin

ccs c nin içindeki help ten make8 fonksiyonunu incele... önce elindeki 16 bitlik yada 32 bitlik verileri 8bitlik değişkenlere ayır... daha sonra eproma yaz...geri okurken de bunları birleştirmek için make16 yada make32 yi kullan...

Murat Mert

#4
//------------------EEPROM YAZMA 8 BIT------------------------------------------------
void kaydet (int adres,int deger)
{
write_eeprom(adres,deger);
}

//------------------EEPROM YAZMA 16 BIT------------------------------------------------

void kaydet_16 (int adres,int16 deger)
{
write_eeprom(adres,make8(deger,0));
write_eeprom(adres+1,make8(deger,1));
}

//--------- OKUMA ICINDE BU KODLARI KULLANDIM------------

//-----------------8BIT EEPROM OKUMA--------------------------------------------
void oku (int adres ,int deger)
{
 deger=read_eeprom(adres);
}
//-----------------16 BITEEPROM OKUMA-------------------------------------------
void oku_16 (int adres ,int16 deger)
{
 make8(deger,0)=read_eeprom(adres);
 make8(deger,1)=read_eeprom(adres+1);
}


8 bit yazma için kod:
int temp_set;
temp_set=28;
adres=12;/// yazmak istediğin adres
kaydet(12,temp_set);


8 bit okuma için
set_temp=oku(12,deger);


16 bit yazma için 2 ad adres kullanılır o yüzden yazdığın adresten sonraki adresi başka yerde kullanamazsın
int16 sayi;
sayı=15000;
adres=10;
kaydet_16(adres,sayi);


16 bit okuma için
sayi=oku_16(adres,deger);
mert07

dursunyaman

SONSUZ TEŞEKKÜRLERİMİ SUNUYORUM  BU KODLARI KISA ZAMANDA UYGULAMAYA GEÇECEĞİM . bu dahili eprom için sanırım birde şu harici eprom için bir örnek yayınlaya bilirmisiniz bu konuda benim gibi bir çok acemi veya bu işe yeni başlayanlar için yararlı olur

yapmak istediğim proje.....
int telefonu = 05367777777
int tc = 123456666
int no = 5566666

butona1 tıkladım eproma yazdı
buton2 tıkladım

değişkenleri oku ekrana yazdır

tekrar teşekür ediyorum herkese saygılarımı sunuyorum

dursunyaman

S.A malesef burdaki verilen kodlar hiç bir şekilde olmadı yapmakistediğim

telefon : 05367888888
tc : 124566999
yas : 99

şeklinde veri yaz okumak kendi yapmış olduğum uygulamayı sizinle paylaşıyorum harici ve dahili eprom yaz oku
burda herşey normal fakat önemli olan burda verilerin okunup yazılabilmesi istedğim verileri yazamıyorum okuyamıyorum 60 000 e kadar yaz oku normal fakat her nedense bir türlü istenilen girilen verileri okuyup yazamıyorum ilgili çalışmayı paylaşıyorum umarım yardımlarınızı esirgemessiniz sayın hocalarım mümkünse uygulama olarak yardımalrınızı bekliyorum kodlarla olmuyor bit türlü......... tekrar teşekkürlerimi sunuyorum..

NOT :    TELEFON TC KIMLIK YAS BİLGİLERİNİ YAZIP DAHA SONRA LCD EKRANDA OKUMAK İSTİYORUM
ÖRNEKDE BUTTON1 E YAZMAYI YAPTIM  BUTTON2 YE OKUMAYI   !!!!!!!!!!!! ACABA GİRİLEN VERİ TAMAM OLUYORDA GOSTERIRKEN LCD MI DESTEKLEMIYOR FAKAT SABIT OLARAK TELEFON = 0536 7899999 VERIP LC DE YE OKUTABİLİYORUM DEĞİŞKENLERE TELEFONU AKTARAMIYORUM  1789 TAMAM AMA 053699999999  GİBİ BİLGİYİ GİREMIYORUM ÇALIŞMALARIMI HARICI VE DAHILI OLARAK AYRI AYRI YAPTIM

http://dosya.co/b03d710c6f9e0657/YARDIM_EPROM.rar
:'(