Sayın üyeler, bu konularda çok yeniyim ve amatörüm. Sizden ricam 16f877 de eprom okumak ve yazmak isterim. bu konuda destek rica ediyorum. En iyi dileklerimle...
merhaba,
ChatGPT şöyle bir kod yazdı. Ne kadar çalışır bilemiyorum.
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) // 20 MHz kristal kullanıyorsanız ayarlayın
void eeprom_yaz(unsigned int8 adres, unsigned int8 veri) {
write_eeprom(adres, veri);
}
unsigned int8 eeprom_oku(unsigned int8 adres) {
return read_eeprom(adres);
}
void main() {
unsigned int8 adres = 0x00; // EEPROM başlangıç adresi
unsigned int8 veri = 0x55; // Yazılacak veri (örnek olarak 0x55)
eeprom_yaz(adres, veri); // EEPROM'a veri yaz
// EEPROM'dan veriyi oku ve kontrol et
if(eeprom_oku(adres) == veri) {
output_high(PIN_B0); // Veriyi doğru okuduysa B0 pinini HIGH yap
} else {
output_low(PIN_B0); // Hatalı okuma varsa B0 pinini LOW yap
}
while(TRUE);
}
------------------------------------------
okuma için de aşağıdaki kodu yazdı
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) // 20 MHz kristal kullanıyorsanız ayarlayın
void eeprom_yaz(unsigned int8 adres, unsigned int8 veri) {
write_eeprom(adres, veri);
}
unsigned int8 eeprom_oku(unsigned int8 adres) {
return read_eeprom(adres);
}
void main() {
unsigned int8 adres = 0x00; // EEPROM başlangıç adresi
unsigned int8 veri = 0x55; // Yazılacak veri (örnek olarak 0x55)
eeprom_yaz(adres, veri); // EEPROM'a veri yaz
// EEPROM'dan veriyi oku ve kontrol et
if(eeprom_oku(adres) == veri) {
output_high(PIN_B0); // Veriyi doğru okuduysa B0 pinini HIGH yap
} else {
output_low(PIN_B0); // Hatalı okuma varsa B0 pinini LOW yap
}
while(TRUE);
}
Açıklamalar:
eeprom_yaz Fonksiyonu: Belirli bir EEPROM adresine veri yazar.
eeprom_oku Fonksiyonu: Belirli bir EEPROM adresinden veri okur.
main Fonksiyonu: Veriyi EEPROM'a yazar, ardından doğru yazıldığını kontrol eder. Eğer veri doğru yazılmış ve okunmuşsa, PIN_B0 pinini yüksek yaparak bu durumu gösterir.
Bu örnek kod, 16F877'de EEPROM yazma ve okuma işlemlerini gerçekleştirir. Kullandığınız kristal frekansına göre #use delay(clock=20000000) satırını güncellemeyi unutmayın.
Şunu dedin:
CCS 16F877 eprom okuma kodu yaz
ChatGPT;
PIC16F877 mikrodenetleyicisi için CCS C derleyicisi kullanarak EEPROM'dan okuma işlemi gerçekleştiren bir örnek kod aşağıdaki gibidir:
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) // 20 MHz kristal kullanıyorsanız ayarlayın
unsigned int8 eeprom_oku(unsigned int8 adres) {
return read_eeprom(adres);
}
void main() {
unsigned int8 adres = 0x00; // Okunacak EEPROM adresi
unsigned int8 okunan_veri;
okunan_veri = eeprom_oku(adres); // EEPROM'dan veriyi oku
// Okunan veriye göre bir işlem yapabilirsiniz, örneğin PIN_B0'ı duruma göre kontrol edin
if(okunan_veri == 0x55) { // Örnek olarak 0x55 değeri ile karşılaştırma
output_high(PIN_B0); // Doğru veri okunursa B0 pinini HIGH yap
} else {
output_low(PIN_B0); // Yanlış veri okunursa B0 pinini LOW yap
}
while(TRUE); // Programın sürekli çalışmasını sağla
}
-------------------------
PIC16F877 mikrodenetleyicisi için CCS C derleyicisi kullanarak EEPROM'dan okuma işlemi gerçekleştiren bir örnek kod aşağıdaki gibidir:
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) // 20 MHz kristal kullanıyorsanız ayarlayın
unsigned int8 eeprom_oku(unsigned int8 adres) {
return read_eeprom(adres);
}
void main() {
unsigned int8 adres = 0x00; // Okunacak EEPROM adresi
unsigned int8 okunan_veri;
okunan_veri = eeprom_oku(adres); // EEPROM'dan veriyi oku
// Okunan veriye göre bir işlem yapabilirsiniz, örneğin PIN_B0'ı duruma göre kontrol edin
if(okunan_veri == 0x55) { // Örnek olarak 0x55 değeri ile karşılaştırma
output_high(PIN_B0); // Doğru veri okunursa B0 pinini HIGH yap
} else {
output_low(PIN_B0); // Yanlış veri okunursa B0 pinini LOW yap
}
while(TRUE); // Programın sürekli çalışmasını sağla
}
Açıklamalar:
eeprom_oku Fonksiyonu: EEPROM'un belirli bir adresinden veri okur ve değeri geri döndürür.
main Fonksiyonu: EEPROM'dan veriyi okur ve belirli bir değere göre (örneğin, 0x55) karşılaştırma yapar. Eğer okunan veri doğruysa PIN_B0 pinini HIGH yapar, aksi takdirde LOW yapar.
Kristal frekansınıza göre #use delay(clock=20000000) satırını güncellemeyi unutmayın. Bu örnekte, adres ve karşılaştırma değerlerini ihtiyacınıza göre değiştirebilirsiniz.
Merhaba burdaki kodu incelermisin
Eeprom write read (https://www.sifirzero.com/2020/11/kumbara-eeprom-ornek-uygulama-ccs.html)