CCS C - Dahili EEPROM Kullanımı
Tanım : EEPROM (Electronically Erasable Programmable Read-Only Memory), küçük boyuttaki verileri kalıcı olarak saklamak için bilgisayar ya da diğer cihazlarda kullanılan bir yongadır. Boyutu daha büyük olan sabit verileri saklamak için ise flaş bellek gibi daha ekonomik yöntemler kullanılır. EEPROM, elektrikle yazılıp silinme özelliğine sahiptir.
write_eeprom (adres, veri) :
EEPROM adresine 1 byte veri yazmak için kullanılır.
int aboo67=2;
write_eeprom(1,aboo67); // EEPROM'un 0x01 adresine 2 yazıldı
değer = read_eeprom (adres)
EEPROM adresinden 1 byte veri okumak için kullanılır.
int aboo67;
aboo67 = read_eeprom(1); // EEPROM'un 0x01 adresindeki değer aboo67 degişkenine aktarıldı
Örnek ;
pic resetlendiğinde 7 segde en son kaldığı sayıyı göstercektir
//------------------------------------------------------------------------------
#include <16F876.h>// Kullanılcak denetleyicinin başlık dosyası tanımlanıyor
#include <stdio.h>
// Denetleyici konfigürasyon ayarları
#FUSES HS //High Speed
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay (clock=20000000) // Gecikme fonksiyonu için kullanılan osilatör frekansı
//------------------------------------------------------------------------------
const int digit[10]={0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90}; // 9
int sayi=0;
//------------------------------------------------------------------------------
void main () {
setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı
setup_timer_1(T1_DISABLED); // Timer1 devre dışı
setup_timer_2(T2_DISABLED,0,1); // Timer2 devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG girdi yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
sayi = read_eeprom(1); // EEPROM'un 0x01 adresi okunuyor
if (sayi>255){
sayi=0;
}
while(1){
if (input(pin_c0)==1){
sayi++;
delay_ms(250);
write_eeprom(1,sayi); // EEPROM'un 0x01 adresine degişken yazılıyor
}
if (sayi>9){
sayi=0;
}
output_b(digit[sayi]);
}
}
//------------------------------------------------------------------------------