PİC16Fxx mikrokontrollerində EEPROM yaddaşına müraciətin proqramlı təşkili
PIC16F84 daxilində enerjidən asılı olmayan 64B-lıq EEPROM yaddaşı verilənlər üçün nəzərdə tutulmuşdur.00H-3FH intervalında ünvanlaşdırılan bu yaddaş həcmi PIC-nin digər modellərində 256B-a qədər genişləndirilmişdir. EEPROM yaddaşa müraciət birbaşa deyil,RAM-nin Bank0/1-də yerləşən EEDATA,EEADR,EECON1,EECON2 kimi SPR registrləri vasitəsilə mümkündür. EEDATA və EEADR registrlərində EEPROM-da oxu/yazı əməliyyatları üçün uyğun olaraq verilənin və ünvanın kodları yadda saxlanılır. EECON1 və EECON2 idarəedici registrlərinin ayrı-ayrı bitləri EEPROM-a yazi/oxu prosesini idarə edir.Şək.4.36-da EECON1 registrinin strukturu göstərilmişdir.RD və WR bitləri proqramdan “1”edilməklə EEPROM-da uyğun olaraq konkret oxu və yazı proseslərinin başlanmasını müəyyənləşdirir..Lakin bu proseslər yekunlaşdıqdan sonra RD və WR bitləri avtomatik olaraq sıfırlanır.Yəni bu bitlər proqramdan yalnız “1” edilə və oxuna bilir. WREN biti baxılan proqramın müəyyən hissəsində EEPROM-a yazı üçün icazə verir.Qida gərginliyi verildiyi anda WREN=0 olur və sonradan EEPROM –a konkret yazma prosesindən əvvəl proqramdan WREN= “1” edilə bilər.Bununla da təsadüfi səhvlər nəticəsində EEPROM –a yazmanın qarşısı alınmış olur. EEPROM –a yazma prosesi normal başa çatdıqdan sonra avtomatik olaraq EEIF=”1” edilir. EEIF=”0” olması isə bu prosesin başa çatdırılmaması əlamətidir. EECON1 registrinin bitlərinin vəziyyəti ayrı-ayrılıqda təyin edildiyindən proqramın başlanğıcında o, bütövlükdə sifirlanmalıdır.Baytın EEPROM –a bilavasitə yazılması prosesində EECON2 registrinə əvvəlcə “55H”, müəyyən gecikmədən sonra isə “AAH” kodu yüklənir. EEPROM –dan baytın oxunması 1 əmr dövründə baş verdiyi halda, baytın yazılması qeyri-müəyyən vaxt tələb edir.
Şək.4.37 a və b-də baytın EEPROM –dan oxunması, yazılması və sonradan oxunması alqoritmlərinin blok-sxemləri göstərilmişdir.Burada gecikmə blokunda hasil edilən zaman intervalı oxu prosesi üçün 1 əmrin yerinə yetirilmə müddəti,yazma prosesi üçün daha böyük olmaqla təyin edilir. Proqramda baytın EEPROM –dan oxunmasının/yazilmasının bitməsi uyğun olaraq EECON1 registrində RD=”0”/ EEIF=”1” əlamətləri ilə yoxlanıllır. EEPROM –dan oxunmuş bayt hər iki halda PortB-yə bağlanmış LED-lərdə əks etdirilir.