Yüksek Performanslı RISC CPU Özellikleri: CMOS Teknolojisi: Dış Yüzeysel Özellikler: Özel Mikrokontrolör Özellikleri: 1.



Benzer belgeler
# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür.

PIC Mikrodenetleyicileri

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

PIC 16F877 nin kullanılması

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

BÖLÜM Mikrodenetleyicisine Giriş

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

LCD (Liquid Crystal Display )

W SAYAC SAYAC SAYAC. SAYAC= ise, d=0 W

Bank değiştirme Bir banktan diğerine geçmek için STATUS register denilen özel registerin 5. ve 6. bitinin durumunu değiştirmek gerekir.

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

Komutların İşlem Süresi

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

B.Ç. / E.B. MİKROİŞLEMCİLER

Hacettepe Robot Topluluğu

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

KONFİGÜRASYON BİTLERİ

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

8086 nın Bacak Bağlantısı ve İşlevleri. 8086, 16-bit veri yoluna (data bus) 8088 ise 8- bit veri yoluna sahip16-bit mikroişlemcilerdir.

Adres Yolu (Address Bus) Bellek Birimi. Veri Yolu (Databus) Kontrol Yolu (Control bus) Şekil xxx. Mikrodenetleyici genel blok şeması

William Stallings Computer Organization and Architecture 9 th Edition

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

LCD (Liquid Crystal Display)

KANPUR/microcontrollers/micro/ui/Course_home3_16.htm Yrd.Doç. Dr.

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI

PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

PROGRAMLANABİLİR ZAMANLAYICI

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

KESME (INTERRUPT) NEDİR?

P IC 16F877. Program. Belleği

Bu yürütme, Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

PIC16F877A nın Genel Özellikleri

BÖLÜM 1: MİKRODENETLEYİCİLER

Mikro denetleyicili Uygulama devresi bileşenleri

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

PIC TABANLI, 4 BASAMAKLI VE SER

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

5.Eğitim E205. PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628:

BÖLÜM 1

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI. Temel olarak bir PIC içerisinde de iki tür hafıza bulunur:

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

1. PORTB ye bağlı 8 adet LED i ikili sayı sisteminde yukarı saydıracak programı

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

BİLİŞİM TEKNOLOJİLERİ

Bir mikroişlemci temel olarak üç kısımdan oluşur. Bunlar merkezi işlem birimi (CPU), giriş çıkış birimi (G/Ç) ve bellektir.

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

MİKROİŞLEMCİ (MİKROPROSESÖR - CPU) NEDİR? Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

YILDIZ TEKNİK ÜNİVERSİTESİ ELEKTRİK - ELEKTRONİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ. EasyPic6 Deney Seti Kullanım Kılavuzu

9. MERKEZİ İŞLEM BİRİM MODÜLÜ TASARIMI

MİKROİŞLEMCİ (Microprocessor) NEDİR?

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-Final Kısmı

BÖLÜM 1 ALT PROGRAMLAR 1.1.ALTPROGRAM NEDİR?

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

BM-311 Bilgisayar Mimarisi

BSF STATUS,5 ;bank1 e geçiş CLRF TRISB ;TRISB= BCF STATUS,5 ;bank0 a geçiş

MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil Bahar-Final

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

Mikroişlemcili Sistemler ve Laboratuvarı

BELLEKLER. Kelime anlamı olarak RAM Random Access Memory yani Rastgele Erişilebilir Bellek cümlesinin kısaltılması ile oluşmuş bir tanımdır.

Bellekler. Mikroişlemciler ve Mikrobilgisayarlar

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk bit 07FF kullanıcının program alanı

Sistem Programlama. Seri ve Paralel Port Kullanımı:

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil Bahar-Vize

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

Hacettepe Robot Topluluğu

TIMER. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

EasyPic 6 Deney Seti Tanıtımı

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2

1) PLSY / DPLSY : Bu komut ile istenilen frekansta istenilen pals adedini üretir.

Haftalık Ders Saati Okul Eğitimi Süresi

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir?

PIC Mikro denetleyiciler ve Programlama. Öğr.Gör.Bülent ÇOBANOĞLU

Deney 8: ALU da Aritmetik Fonksiyonlar

Şekil. 64 Kelimelik Yığıtın Blok Şeması

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

İşletim Sistemleri (Operating Systems)

1. Ders Giriş. Mikroişlemcili Sistem Uygulamaları

MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ BİTİRME ÖDEVİ

Transkript:

Yüksek Performanslı RISC CPU Özellikleri: Öğrenmek için yalnızca 35 tek kelime komutları Đki dönüşümlü program komutları haricindeki bütün komutlar tek dönüşümde (400 ns @ 10 MHz) Đşletim hızı DC-10 MHz saat girişi DC-400 ns komut dönüşümü 14 bitlik geniş komutlar 8 bitlik geniş veriyolu 1K*14 EEPROM program hafızası 36*8 genel amaçlı register (SRAM) 64*8 chip üstünde EEPROM data hafızası 15 özel fonksiyonlu donanım registeri 8 düzeyde derin donanım deposu Direkt,endirekt ve bağımlı adresleme modları Dört kesinti kaynağı - Harici RB0/INT pini - TMRO zamanlayıcı taşması - PORTB <7:4> değişim kesintisi - Data EEPROM yazma taşması 1.000.000 EEPROM data hafızası ERASE/WRITE döngüleri EEPROM hafıza geçerliliği 40 yıldan fazla CMOS Teknolojisi: Düşük güç,yüksek hız CMOS EEPROM teknolojisi Bütünüyle statik dizayn Geniş aralıklı işletme voltajı: - Ticari : 2.0V-6.0V - Endüstriyel : 2.0V-6.0V Düşük güç tüketimi - < 2mA tipik @ 5V,4MHz - 60 µa tipik @ 2V,32 khz - 26 µa tipik standby akımı @ 2V Dış Yüzeysel Özellikler: 13 I/O pini ile bağımsız komut kontrolu Direkt LED sürücüsü için yüksek akımda indirme/çıkarma - Her pin için max. 25 ma lik indirme - Her pin için max. 20 ma lik bindirme TMRO: 8 bitlik programlanabilir ön derecelendirici ile 8 bitlik zamanlayıcı/sayac Özel Mikrokontrolör Özellikleri: Power-on Reset (POR) Power-up Timer (PWRT) Oscillator Start-up Timer (OST) Güvenli işlemler için chip üstünde olan RC osilatör ile Watchdog Timer (WDT) Kod koruması Güç korumalı SLEEP modu Seçilebilir osilatör seçenekleri Seri sistem içi programlama (iki pin yolu ile) 1.0 GENEL TANIMLAR 1

PIC16C84 düşük maliyetli, yüksek performanslı, CMOS, bütünüyle statik, 8 bitlik bir mikrokontrolördür. Bütün PIC16/17 mikrokontrolörleri gelişmiş bir RISC tasarımı içerir.pic16cxx cihazları geliştirilmiş çekirdek(temel) özellikleri, 8 düzeyde derin depolama (stack) ve çoğul dahili ve harici kesme kaynaklarına sahiptir.harvard tasarımının ayrık komut ve data taşıyıcıları (data bus) 14 bit genişliğindeki kelime komutlarını 8 bitlik ayrı bir data taşıyıcısı ile beraber içerir.2 basamaklı komut veriyolu, bütün komutların tek bir dönüşümde uygulamaya konulmasına izin verir.(đki dönüşümlü program dalları gerektirenler hariç).toplam 35 komut (azaltılmış komut seti) mevcuttur.bunlara ek olarak, yüksek performans seviyesini sağlamak için kullanılan geniş bir register seti de kullanılmaktadır. PIC16CXX mikrokontrolörleri tipik olarak 2:1 kod sıkıştırması ve kendi sınıflarındaki diğer 8 bitlik mikrokontrolörlerin üzerinde 2:1 lik hız geliştirmesinde (10Mhz) sağlarlar. PIC16C84 36 byte lık RAM, 64 byte lık data EEPROM hafızası ve 13 I/O pinine sahiptir.zamanlayıcı/sayaç da mevcuttur. PIC16CXX ailesi harici bileşenleri aza indirmek için bir takım özelliklerde içermektedir.bunlar maliyeti düşürmek, sistem güvenirliliğinin sağlanması ve güç tüketiminin azaltılması şeklinde sayılabilir.düşük maliyet çözümünü sağlayan tek pinli RC osilatör,güç tasarrufunu max. yapan LP osilatörü, standart kristal olan XT ve yüksek hız kristalleri için olan HS bu dört tane osilatör seçenekleridir.sleep modu güçten tasarrufu sağlar.kullanıcı, harici - dahili kesme ve yenilemelerle chipi uyku modundan uyandırabilir.güvenirliği yüksek Watchdog Timer, chip üzerinde bulunan RC osilatörü ile yazılımların kilitlenmesine karşı koruma sağlar. PIC16C84 EEPROM program hafızası, prototipleme ve üretim için kullanılan aynı cihaz paketinde sağlanmaktadır.devre içi tekrar programlanbilmesi, kodun uygulamanın sonunda cihaz çıkarılmadan yenilenmesine izin verir.bu durum, birçok uygulamanın geliştirilmesinde, cihazların kolaylıkla elde edilemeyeceği yerlerde kullanılabilir.ancak, prıtotiplerde kod yenilemeleri gerektirebilir.bu aynı zamanda kodun yenilenmesini gerektirebilen uzaktan uygulamalar için de kullanışlı bir faaliyettir.(oran enformasyonu gibi) Tablo 1-1 de PIC16C84 özellikleri listeler halinde verilmiştir.ve Ek-F de bütün mikrocip mikrokontrolörlerin özellikleri de verilmiştir. Şekil 3-1 de PIC16C84 ün sadeleştirilmiş blok diyagramı verilmiştir. PIC16C84 yüksek hızlı otomotiv ve motor kontrol uygulamalarından düşük güç uzaktan kumanda sensörleri, elektronik kilitler, güvenlik araçları ve akıllı kartlara kadar olan geniş bir uygulama alanına mükemmel bir şekilde uymaktadır.eeprom teknolojisi uygulama programlarının (transmitter kodları, motor hızları, alıcı frekansları güvenlik kodları, v.s ) istenilen özelliklerde olabildiğince hızlı ve geçerli yapılmasını mümkün kılar.small footprint packages, bu mikrokontrolör serisini, boş alan sınırlamalarıyla birlikte tüm uygulamalarda, mükemmel yapmaktadır.düşük maliyet, düşük güç, yüksek performans, kullanım kolaylığı ve I/O esnekliği PIC16C84 ün mikrokontrolör kullanımının daha önce düşünülmediği yerlerde(örneğin zamanlama fonksiyonları, seri iletişim, yakalama ve mukayese, PWM fonksiyonları ve yardımcı işlemci uygulamaları) bile çok yönlü olmasını sağlar. Seri sistem içi programlama özellikleri(2 pin üzerinden) ürünün düzenleme ve test edilmesi esnekliğini sağlar.bu özellik bir ürünün seri hale getirilmesinde, yer ayarlama datasında kullanılır yada cihazın tesliminden önce mevcut olanaklar dahilinde programlanmasını sağlar. 1-1 Sınıf Ve Đleriye Yönelik Uyumluluk PIC16C5X mikrokontrolör ailesi ile tanışık olanlar 16C84 ün 16C5X tasarımının geliştirilmiş versiyonu olduğunu bilirler.geliştirmelerin detaylı bir listesi Ek- A da verilmiştir.16c5x için yazılmış olan kod 16C84 ün portlarına kolaylıkla uygulanbilir.(ek-b) 1-2 Gelişim Desteği PIC16CXX ailesi, tam özellikli bir macro assembler, bir yazılım simulatörü, bir devre içi emulatör, düşük maliyetli geliştirme programlayıcısı ve tam özellikli bir programlayıcı tarafından desteklenir.bir C derleyicisi ve bulanık mantık destek araçlarıda mevcuttur. 2

Tablo 1-1 : PIC16C8X Sınıfı Araçlar 2.0 PIC16C84 AYGIT DEĞĐŞĐKLĐKLERĐ Frekans aralıkları ve paket seçeneklerinde bir değişiklik mevcuttur.uygulama ve üretim gereksinmeleine bağlı olarak belirli aygıt seçeneği bu bölümdeki bilgiden yararlanılarak seçilebilir.aygıt numarasıyla gösterilen 2 çeşit aygıt tipi vardır. 1. PIC16C84 deki C : Bu aygıtlar EEPROM program hafızasına sahiptirler ve standart voltaj aralığında işletilirler. 2. PIC16LC84 deki LC : Bu aygıtlar EEPROM program hafızasına sahiptir ve genişletilmiş voltaj aralığında işletilirler. 2.1 Elektriksel Yolla Silinebilen Aygıtlar Bu aygıtlar düşük maliyetli plastik paketlerde talep edilirler,hatta aygıt silinebilir ve tekrar programlanabilir.bu, aynı aygıtın prototip geliştirilmesinde ve pilot programlarda aynen üretimde olduğu gibi kullanılmasını sağlar.elektriksel yolla silinebilen aygıtların başka bir özelliğide Microchip s PICSTART Plus ya da PROMATE II programlayıcı gibi aygıt programlayıcıları tarafından silinebilmeleri ve tekrar devre üstünde programlanabilmeleridir. 3

3.0 TASARIMA BAKIŞ 16CXX ailesinin yüksek performansı genelde RISC mikroişlemcilerinde bulunan bir takım tasarımsal özelliklerin bir sonucudur.söze başlamak gerekirse, PIC16CXX Harvard tasarımını kullanır.bu tasarım, program ve ayrık hafızalardan data girişlerini içerir.yani aygıt, bir program memory bus ı ve bir data memory bus içermektedir.bu, program ve datanın aynı hafıdaki (aynı bus üzerinden giriş) alışıldık Von Neuman tasarımının bant genişliğini geliştirmiştir.program ve data hafızasının ayrılması, 8 bit genişliğindeki data kelimesinin daha farklı bir şekilde boyutlnadırılmasını sağlayan komutlara izin verir.pic16cxx opcode ları 14 bit genişliğindedir.ve tek kelime komutlarını uygulanabilir kılar.tam bir 14 bit genişliğindeki program memory bus ı 14 bitlik bir komutu tek döngüde toplar.2 basamaklı veri yolu, komutların toparlanması ve uygulamaya konulması durumlarında örtüşür.(örnek 3-1)Sonuç olarak, tüm komutlar tek bir döngüde açılır.(400 ns@ 10 MHz) (program dalları hariç) PIC16C84, 1K*14 program hafızasını adresler.bütün program hafızası dahilidir. PIC16CXX aygıtları, register dosyalarını yada data hafızasını direkt yada endirekt yolla adresler.program sayacını içeren bütün özel fonksiyonel registerler data hafızasında haritalanmıştır.ortogonal(simetrik) bir komut seti, herhangi bir adresleme modunu kullanan herhangi bir register üzerinde herhangi bir işlemin taşınmasını mümkün kılar.bu simetri tabiatı ve özel optimal durumlar ın azlığı, PIC16CXX ile programlamayı yeteri kadar verimli hale getirmiştir.ek olarak şunuda söyleyebiliriz ki öğrenme eğrisi gözel görülür bir şekilde azaltılmıştır. PIC16CXX aygıtları 8 bitlik ALU ve çalışma registerlerini içermektedir.alu, genel amaçlı bir aritmetik birimdir.herhangi bir register dosyası ile çalışma registerindeki data arasında aritmetik ve Boolean fonksiyonları gerçekleştirilir. ALU 8 bit genişliğinde ve toplama, çıkartma, kaydırma ve mantıksal işlemler yapabilmektedir.başka bir durum söz konusu değilse aritmetik işlemler doğasında 2 nin tümleyenidir.2 operandlı komutlarda tipik olarak 1 operand çalışma registeridir(w register) ve diğer operand dosya registeri yada acil bir sabittir.tek operandlı komutlarda, operand ya W registeridir yada dosya registeridir. W registeri, ALU işlemlerinde kullanılan 8 bitlik bir çalışma registeridir.bu, adreslenebilir bir register değildir. Yürürlüğe konan komuta bağlı olarak, ALU Carry(C), Digit Carry(DC), Zero(Z) bitlerinin değerlerini etkileyebilir.c ve DC bitleri çıkartmada borrow ve digit borrow out işlevlerini görür.komutlara örnek olarak SUBLW ve SUBWF ye bakınız. PIC16C84 ün basitleştirilmiş blok diyagramı şekil 3-1 de gösterilmiştir.buna ilişkin pin tanımlamasıda Tablo 3-1 de verilmiştir. 4

Şekil 3-1: PIC16C84 Blok Diyagramı 5

Tablo 3-1: PIC16C8X Çıkış Pini Tanımlamaları Pin Name DIP SOIC I/O/P Buffer Tipi Tanımlama No. No. Tipi OSC1/CLKIN 16 16 I ST/CMOS (1) Kristal osilatör girişi/harici saat kaynağı girişi OSC2/CLKOUT 15 15 O - Kristal osilatör çıkışı/kristal yada resonatorun kristal osilatör moduna bağlantıları.rc modunda, OSC2 pini, OSC1 in frekansının ¼ üne sahip olan CLKOUT a çıkışlar.ve komut döngüsü oranını belirler. MCLR 4 4 I/P ST Ana temizleme(reset) girişi/programlama voltaj girişi. Bu pin cihazın aktiv low kurucusudur. PORTA çift yönlü I/O portudur. RA0 RA1 RA2 RA3 RA4/TOCKI 17 18 1 2 3 17 18 1 2 3 I/O I/O I/O I/O I/O TTL TTL TTL TTL ST TMR0 zamanlama/sayaç a bir saat girişi olarak seçile- RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 6 7 8 9 10 11 12 13 6 7 8 9 10 11 12 13 I/O I/O I/O I/O I/O I/O I/O I/O TTL TTL TTL TTL TTL TTL TTL/ST (1) bilir.çkış açık oluklu(open drain) tiptedir. PORTB çift yönlü I/O portudur.portb, tüm girişler üzerindeki zayıf dahili pull-up için yazılım programlayabilir. RB0/INT, harici bir kesme pini olarakta seçilebilir. Değişmede kesme pini(interrupt on change pin) Değişmede kesme pini(interrupt on change pin) Değişmede kesme pini.seri programlama saati Değişmede kesme pini.seri programlama bilgisi V SS 5 5 P - Logic ve I/O pinleri için referans toprak V DD 14 14 P - Logic ce I/O pinleri için pozitif kaynak Kısaltmalar: I=Input O = Output I/O=Input/Output P=Power - = not used TTL = TTL input ST=Schmitt Trigger input Not 1: Bu buffer, RC osilatör modunda ve CMOS girişine göre ayarlandığında bir Schmitt Trigger girişi görevi yapar. Not 2: Bu buffer, seri programlama modunda kullanıldığında bir Schmitt Trigger girişi görevi görür. 6

3.1 Zamanlama Planı/Komut Döngüsü uygulamaya konur.saatler ve komutun yürürlüğe konma akışı Şekil 3-2 de gösterilmiştir. Saat girişi(osc1 den) Q 1,Q 2,Q 3,Q 4 şeklinde isimlendirilmiş tekrar turlaması olmayan çeyrek saatler yaratmak için dahili bir şekilde 4 e bölünmüştür.dahili olarak program sayacı (PC) her Q 1 de yavaş yavaş arttırılır.komut program hafızasında toplanır ve Q 4 ün içindeki komut registerine yerleştirilir.bu komutun Q 1 den Q 4 e takip esnasında şifresi çözülür ve Şekil 3-2 : Saat/Komut Döngüsü Örnek 3-1 : Komut Veriyolu Akışı Program dalları hariç tüm komutlar tek döngüde gerçekleşir.yeni komutla getirme ve yeri koyma işlemi yapılırken veriyolundan getirme komutunun akması esnasında 2 döngü sağlanmış olur. 3.2 Komut Akışı/Veriyollama Bir komut döngüsü 4 Q döngüsünden oluşur.komut getirme ve yerine koyma işleminde, diğer bir komut döngüsü ile kod çözümü ve yerine koyma yapılırken bir komut döngüsü ile de yerine koyma getirme yapacak şekilde veri yollanır.bununla beraber akı yoluna bağlı olarak her komut bir döngünün içersinde etkili bir şekilde yürürlüğe konur.eğer bir komut program sayacının değişmesine neden olursa(örneğin GOTO), bu durumda komutu tamamlamak için 2 döngü istenir(örnek 3.1).Bir getirme döngüsü Q 1 in içindeki program sayacının(pc) yavaş yavaş artmasıyla başlar. Yürürlüğe koyma döngüsünde getirilen komut, Q 1 döngüsünün içindeki komut register i içine yazılır.bu komut daha sonra Q 2, Q 3, Q 4 döngüleri esnasında çözülür ve yürürlüğe konur.data hafızasıq 2 esnasında okunur(operand okunur).ve Q 4 işlemdeyken yazılır(gidilecek yere yazılır). 7

4.0 HAFIZA ORGANĐZASYONU PIC16C84 de iki hafıza bloğu vardır.bunlar, program hafızası ve data hafızasıdır.her bloğun kendi bus ı vardır.bu şekilde her bloğa giriş aynı osilatör döngüsü esnasında oluşabilir. Data hafızası genel amaçlı RAM ve özel fonksiyonlu registerler(sfrs) şeklinde ikiye ayrılır.çekirdek(core) i kontrol eden SFRs lerin işletilmesi burada tanımlanmıştır.çevresel modüllerin kontrol edilmesinde kullanılan SFRs ler, herbir bağımsız çevresel modülü tartışan bölümde tanımlanmıştır. Data hafıza alanı data EEPROM hafızasını da içerir.bu hafıza, data hafızasının içersine direkt olarak haritalanmak yerine endirekt olarak haritalanmıştır.bu, data EEPROM hafızası (Read/Write) nın adresini belirlemekte kullanılan bir endirekt adres belirteçidir.64 byte lik data EEPROM hafızası 0h-3Fh adres aralığına sahiptir.eeprom hafızası üzerinde daha fazla ayrıntı için Bölüm7.0 a bakınız. Şekil 4-1 : Program Hafıza Haritası ve Depo 4.1 Program Hafıza Organizasyonu PIC16CXX, 8K*14 program hafıza alanını adresleme yeteneğine sahip 13 bitlik bir program sayacına(pc) sahiptir.pic16c84 için yalnızca ilk 1K*14 (0000h-03FFh) değerleri fiziksel olarak gerçekleştirilmiştir(şekil 4-1).Fiziksel gerçekleştirilmiş adres seviyesini aşan bir yere giriş wraparound olayına neden olur.örneğin;20h, 420h, 820h, C20h, 1020h, 1420h, 1820h ve 1C20h aynı komutu alacaktır. Sıfırlama vektörü 0000h da ve kesme vektörüde 0004h dadır. 8

4.2 Data Hafıza Organizasyonu Data hafızası 2 alana ayrılmıştır.bunlardan ilki özel fonksiyon registerleri (SFR), ikincisi ise genel amaç registerleri (GPR) alanlarıdır.sfr ler cihazın işlemlerini kontrol ederler. Data hafızasının bölümleri(miktarları) parçalara ayrılmıştır.bu hem SFR hemde GPR alanları için geçerlidir.gpr alanı genel amaçlı RAM in 116 byte ından daha fazlasının saklanmasına elverişlidir.sfr nin bölümlenmiş alanları çevresel fonksiyonları kontrol eden registerler içindir.depolama,depo seçimi için kontrol bitlerinin kullanılmasını talep eder.bu kontrol bitleri STATUS registerinde yer alır.şekil 4-2 de data hafızası organizasyonu haritası gösterilmiştir. MOVWF ve MOVF komutları W registerinden gelen değerleri ( F ) register dosyasındaki herhangi bir yere gönderir ve vice-versa işlemi yapılır.tüm data hafızasına, herbir register dosyasının kesin adresini kullanarak direkt yolla veya dosya seçim registeri(fsr) üzerinden endirekt olarak erişilebilir.endirekt adreslemede, data hafızasında kısımlara ayrılmış alanların içine erişebilmek için RP1:RP0 bitlerindeki tanıtılmış değerler kullanılır.data hafızası genel amaç registerlerini ve özel fonksiyon registerlerini içeren 2 kısım olarak bölümlendirilmiştir.bölüm0(bank 0), RP0 bitini(status<5>)temizlemekte kullanılır. RP0 bitini ayarlamak Bölüm1(Bank1) i seçer.her depo 7Fh (128 byte) a kadar çıkabilir.her depodaki ilk 12 alan özel fonksiyon registerleri için ayrılmıştır.geri kalanlar ise static RAM olarak tedarik edilen genel amaç registerleridir. 4.2.1 Genel Amaçlı Register Dosyası Bütün aygıtlar bir miktar genel amaç register (GPR) alanına sahiptirler.her GPR 8 bit genişliğindedir.ve FSR den ya direkt yada endirekt olarak yetkilendirilebilir.(bölüm 4.5) Depo1 deki(bank1) GPR adresleri Depo0 daki adreslere haritalanmıştır.örnek olarak, 0Ch yada 08h adres yerleri aynı GPR ye yetkilendirilir. tarafından aygıt işlemini kontrol etmek için kullanılır.bu registerler static RAM dir. Özel fonksiyon registerleri çekirdek ve çevresel gruplar olmak üzere 2 şekilde sınıflandırılabilir.çekirdek fonksiyonları ile ilintili olanlar bu bölümde açıklanmıştır.çevresel özelliklerin işlevi ile alakalı olanları ise belirli özelliklerin anlatıldığı bölümde açıklanmıştır. Şekil 4-2 : Register Dosya Haritası Tamamlanmamış data hafıza bölgesi; 0 gibi okunur. Not1:Fiziksel register değil. 4.2.2 Özel Fonksiyon Registerleri Özel fonksiyon registerleri (Şekil 4-2 ve Tablo 4-1) CPU ve çevresel fonksiyonlar 9

TABLO 4-1 : Register Dosya Özeti Adres Đsim Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bank 0 00h INDF FSR nin içeriğini adres data hafızasında kullanır.(fiziki bir register değidir) Güç üstündeki reset değeri Diğer tüm resetlerdeki değer (not 3) ---- ---- ---- ---- 01h TMR0 8 bitlik eş zamanlı saat/sayıcı xxxx xxxx uuuu uuuu 02h PCL Program sayacının(pc) değerli dizinli 8 biti(low order) 0000 0000 0000 0000 03h STATUS (2) IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu 04h FSR Endirekt data hafıza adres belirteci 0 xxxx xxxx uuuu uuuu 05h PORTA - - - RA4 / TOCKI 06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 / RA3 RA2 RA1 RA0 ---x xxxx ---u uuuu xxxx xxxx uuuu uuuu INT 07h Tamamlanmamış(unimplemented) yer, 0 olarak okunur. ---- ---- ---- ---- 08h EEDATA EEPROM data registeri xxxx xxxx uuuu uuuu 09h EEADR EEPROM adres registeri xxxx xxxx uuuu uuuu 0Ah PCLATH - - - PC (1) in üst 5 biti için yazma buffer ı ---0 0000 ---0 0000 0Bh INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u Bank 1 80h INDF FSR nin içeriğini adres data hafızasında kullanır.(fiziki bir register ---- ---- ---- ---- değildir.) 81h OPTION RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 82h PCL Program sayacının(pc) düşük değerli 8 biti(low order) 0000 0000 0000 0000 83h STATUS (2) IRP RP1 RP0 TO PD Z DC C 0001 1xxx 000q quuu 84h FSR Endirekt data hafıza adres belirteci 0 xxxx xxxx uuuu uuuu 85h TRISA - - - PORTA data yön registeri ---1 1111 ---1 1111 86h TRISB PORTB data yön registeri 1111 1111 1111 1111 87h Tamamlanmamış(unimplemented) yer, 0 olarak okunur. ---- ---- ---- ---- 88h EECON1 - - - EEIF WRER WRN WR RD ---0 x000 ---0 q000 89h EECON2 EEPROM kontrol registeri 2 (fiziki bir register deği) ---- ---- ---- ---- 0Ah PCLATH - - - PC (1) in üst 5 biti için yazma buffer ı ---0 0000 ---0 0000 0Bh INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u Kısaltma : x = Bilinmeyen u = Değiştirilmemiş - = Tamamlanmamış 0 gibi okunur. q = Değer, duruma bağlı değişir. NOT 1: Program sayacının üst byte I direkt olarak yürürlüğe konulmaz.pclath, PC<12:8> için bir tutsak registerdir.pclath ın içerikleri program sayacının üst byte ına transfer edilebilir.buna karşılık PC<12:8> in içerikleri, PCLATH e transfer edilemez. 2: STATUS registerindeki TO ve PD status bitleri, MCLR reset I tarafından etkilenmezler. 3: Diğer (power-up) olmayan resetlerde ; MCLR den harici reset ve Watchdog Timer reseti bulunur. 8

4.2.2.1 DURUM(STATUS) REGISTERI STATUS registerı, ALU nun aritmetik durumunu,reset durumunu ve data hafızası için banka seçim bitini içerir.her registerda olduğu gibi sstatus registerı da herhangi bir komut için gidilecek yer görevi görür.eğer STATUS registerı E,DC,C bitlerini etkileyecek bir komutun gideceği yer ise, o zaman bu 3 bite yazma yetkisi kaldırılır.bu bitler, aygıt mantığına bağlı olarak konur ya da silinir.bunların yanında, TO ve PD bitleri yazılamayan tiptedirler.đşte bu noktada, STATUS registerının gideceği yer,komutun sonucuna bağlı olarak sanılandan farklı olabilir. ÖrneğinCLRF STATUS,üst 3 biti temizleyip Z bitine yerleştirecektir.bu durum, STATUS registerını 000u u1uu olarak bırakır. Sadece BCF,BSF,SWAPF ve MOVWF komutları,status Registerını değiştirmek için kullanılmalıdır.(tabvlo 9.2);Çünkü bu komutlar hiçbir STATUS register bitine etki etmezler. Not1: IRP ve RP1 bitleri(status <7:6>) PIC16C84 tarafından kullanılmazlar ve silinmiş bir şekilde programlanmalıdırlar.bu bitlerden genel amaçlı R1W bitlerinin kullanımı tavsiye edilmez;çünkü bu yeni ürünlerin yenilenmesinde, bazı uyumsuzlklara sebep olabilmektedir. Not2: C ve DC bitleri, borrow (ödünç) ve elde bitleri olarak çıkarma işlemi görürler.sublw ve SUBWF komutlarına örnek olarak bakınız. Not3: STATUS registerı, Z,DC ya da C bitlerini etkileyecek bir komutun gideceği yer olduğu zaman,bu 3 bite yazma işlemi mümkün kılınmamıştır.belirlenmişbitler,cihaz mantığına bağlı olarak yenilenecektirler. ŞEKĐL 4-3: DURUM REGISTERI(ADRES 03h,83h) R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-X R/W-X R/W-X IRP RP1 RP0 T0 PD Z DC C bit7 bit0 bit 7: IRP:Register Bankası Seçim biti(endirekt adreslemede kullanılır) 0=Banka 0,1 (00h-FFh) 1=Banka 2,3 (100h-1FFh) IRP biti,pic16c8x tarafından kullanılmaz.irp, kullanılmamış bir durumda bulunmalıdır. bit 6-5: bit 4: bit 3: bit 2: bit 1: bit 0: RP1:RP0:Register Banka Seçim bitleri(direkt adreslemede kullanılır) 00=Banka 0 (00h-7Fh) 01=Banka 1 (80h-FFh) 10=Banka 2 (100h-17Fh) 11=Banka 3 (180h-1FFh) Her banka 128 baytlıktır.sadece RP0, PIC16C8X tarafından kullanılır. RP1, kullanılmamış bir durumda bulunmalıdır. TO:Time-out biti 1=Güç var modu(power-up),clrwdt komutundan ya da SLEEP komutundan sonra 0=Bir WDT time-out u oluşur PD: Güç yok modu (power down) biti 1=Güç yok durumundan ya da CLRWDT komutundan sonra 0=SLEEP komutunun yürürlüğe konması ile birlikte Z: Sıfır biti 1=Bir aritmetik ya da mantık işleminin sonucu sıfırdır 0=Bir aritmetik ya da mantık işleminin sonucu sıfır değildir DC: Basamak elde/ödünç biti(addwf ve ADDLW komutları için)(ödünç için polaritenin tersi alınır) 1=Oluşan sonucun dördüncü düşük emir bitinden bir elde çıkarımı(carry-out) 0=Sonucun dördüncü düşük emir bitinden bir elde çıkarımı yoktur C: Elde/ödünç biti(addwf ve ADDLW komutları için) 1=Oluşan sonucun en belirli bitinden bir elde çıkarımı(carry-out) 0=Sonucun en belirili bitinden bir elde çıkarımı yoktur Not: Ödünç için kutup ters çevrilir.đkinci operandın ikiye tümleyeni ile toplanarak, bir çıkarma işlemi gerçekleştirilir. Çevirme(rotate) komutları (RRF,RLF) komutları için, bu bit,kaynak registerının ya yüksek ya da düşük biti ile yüklenir. 11

4.2.2.2 SEÇENEK(OPTION) REGISTERI OPTION registerı,tmr0/wdt önölçücüsü,harici INT bölücüsü,tmr0 ve PORTB üzerindeki zayıf Pull-up ları ayarlayan çeşitli kontrol bitlerini içeren,yazılabilen ve de okunabilen tipte bir registerdır. Not:Ön-ölçücü WDT(PSA= 1 ) a tayin edildiğinde TMR0, 1:1 önceden tayinine sahip olur. ŞEKĐL 4-4: SEÇENEK REGISTERI(ADRES 81h) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit7 bit0 bit 7: bit 6: bit 5: bit 4: bit 3: bit 2-0: RBPU:PORTB Pull-up enable biti 1=PORTB Pull-up lar disable durumundadırlar(yetki vermeme) 0=PORTB Pull-up lar enable durumundadırlar(yetki verme) IRP biti,pic16c8x tarafından kullanılmaz.irp, kullanılmamış bir durumda bulunmalıdır. INTEDG:Kesme köşe seçim biti 1=RB0/INT pininin artan köşesinde kesme 0=RB0/INT pininin azalan köşesinde kesme TOCS:TMR0 Saat(Clock) kaynağı seçim biti 1=RA4/T0CKI pini üzerinde geçiş 0=Dahili komut döngü saati(clkout) T0SE: TMR0 Kaynak köşe seçim biti 1=RA4/T0CKI pini üzerindeki yüksekten-düşüğe geçiş üzerindeki artış 0=RA4/T0CKI pini üzerindeki düşükten-yükseğe geçiş üzerindeki artış PSA: Ön-ölçücü tayin biti 1=Ön-ölçücü,WDT a tayin edilir 0=Ön-ölçücü,TMR0 a tayin edilir PS2:PS0:Ön-ölçücü oran seçim bitleri Bit Değeri TMR0 Oranı WDT Oranı 000 1 : 2 1 : 1 001 1 : 4 1 : 2 010 1 : 8 1 : 4 011 1 : 16 1 : 8 100 1 : 32 1 : 16 101 1 : 64 1 : 32 110 1 : 128 1 : 64 111 1 : 256 1 : 128 8

4.2.2.3 INTCON REGISTERI INTCON registerı,bütün kesme kaynakları için olan çeşitli yetkilendirici bitleri(enable) içeren,okunabilir ve de yazılabilir türde bir registerdır. Not: Enable biti ya da küresel(global) enable biti GIE(INTCON<7>) nin durumuna bağlı olmaksızın oluşabilecek bir kesme durumu gerçekleşirken,kesme durum tesbit bitleri (interrupt flag bit) devreye girer. ŞEKĐL 4-5: INTCON REGISTERI(ADRES 0Bh,8Bh) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-x GIE EEIE T0IE INTE RBIE T0IF INTF RBIF bit7 bit0 bit 7: GIE:Globak Kesme biti 1=Tüm dönüştürülmemiş kesmelere yetki verir 0=Tüm kesmeleri yetkisizleştir Not:Kesme biçiminin işlemini görmek için,bölüm 8.5 e bakınız. bit 6: EEIE:EE Yazma Tamamlama Kesim Enable biti R = Okunabilir bit 1=EE yazma tamamlama kesmesine yetki verir W = Yazılabilir bit 0=EE yazma tamamlama kesmesine yetkiyi kaldırır U = Tamamlanmamış bit 0 olarak okunur. bit 5: TOIE:TMR0 Taşma(Overflow) Kesim Enable biti -n = POR reset değeri 1=TMR0 kesmesini yetkilendirir 0=TMR0 kesmesine yetkiyi kaldırır bit 4: bit 3: bit 2: bit 1: bit 0: INTE: RB0/INT Kesim Enable biti 1=RB0/INT kesmesine yetki verir 0=RB0/INT kesmesine yetkiyi kaldırır RBIE: RB Port Değişim Kesim Enable biti 1=RB Port Değişim Kesim bitine yetki verir 0=RB Port Değişim Kesim bitine yetkiyi kaldırır T0IF: TMR0 taşma kesim flag biti 1=TMR0 taşmıştır(yazılımın içinden silinmesi gerekiyor) 0=TMR0 taşmamıştır INTF: RB0/INT Kesim Flag biti 1=RB0/INT kesmesi meydana gelmiştir 0=RB0/INT kesmesi meydana gelmemiştir RBIF: RB Port Değişim Kesim Enable biti 1=RB7:RB4 pinlerinden en az bir tanesinin durumu değişti(yazılım içinden silinmesi gerekiyor) 0=RB7:RB4 pinlerinden hiç bir tanesinde durum değişikliği yoktur. 9

4.3 Program Sayacı: PCL ve PCLATH Program sayacı (PC), 13 bit genişliğindedir.düşük byte PCL registeri, okunabilir ve yazılabilir bir registerdir.pc nin yüksek byte ı, PCLATH registerinden gelir ve direkt olarak okunamaz yada yazılamaz.pclath(pc latch high) registeri PC<12:8> için bir tutma registeridir.pc yeni bir değerle yüklendiği zaman PCLATH ın içeriği program sayacının üstteki byte ına transfer edilir.bu olay PCL ye yazılımda, CALL veya GOTO esnasında olur.pc nin yüksek bitleri Şekil 4-6 da gösterildiği gibi PCLATH dan yüklenmiştir. Şekil 4-6 : Farklı Durumlarda PC nin Yüklenmesi PCLATH<4:3> ün uygulaması geri dönme komutları için talep edilmez. Not: PIC16C84 program hafızası 1,2 ve 3 (0800h-1FFFh) program sayfaları için kullanılan PCLATH<4:3> bitlerini siler. 4.4 Depo(Stack) PIC16C84 8 derinliğinde*13 bit genişliğinde bir donanım deposuna sahiptir(şekil 4-1).Depo boşluğu ne bir programın ne de bir data boşluğunun parçası olmadığı gibi depo depo işaretleyiçiside okunabilir ve yazılabilir değildir. Bir CALL komutu gerçekleştirildiğinde ya da bir kesmenin varlığı onaylandığında, tüm 13 bitlik PC deponun üzerine itilir.return, RETLW, yada RETFIE komutu açıldığında, depo patlatılır(popped).pclath, bir itme yada patlatma durumundan etkilenmez. Not: Đtme yada patlama diye isimlendirilen bir mnemonics komutu yoktur.bunlar CALL, RETURN, RETLW ve RETFIE komutlarının açılmasıyla oluşan olaylardır yada bir kesme adresinin yönlendirilmesiyle oluşan durumlardır. 4.3.1 Computed GOTO (Hesaplanmış GOTO) Hesaplanmış GOTO, program sayacına bir sapma(offset) eklenerek gerçekleştirilir (ADDWF PCL).Bir tablo oluştururken hesaplanmış GOTO metodunu okuyunuz, eğer tablo yerleri PCL hafıza sınırları (herbir 256 kelime bloğu) ile çakışırsa dikkat edilmelidir. Depo, dairesel arabellek(buffer) işlemi görür.bu, deponun 8 kez itilmesinden sonra dokuzuncu itilmede ilk itilmeden sonra saklanmış olan değerin üzerine yazılması biçimindedir.onuncu itmede ikinci itmenin üstüne yazar. Eğer depo efektif olarak dokuz kez patlatılmışsa, PC değeri ilk patlamadan sonraki ile aynıdır. Not: Deponun yetersiz akış durumlarını yada deponun taşma durumlarını bildirmek amaçlı hiçbir status biti yoktur. 4.3.2 Program Hafıza Sayfalaması PIC16C84 ün 1K lık program hafızası mevcuttur.call ve GOTO komutları 11 bitlik adres aralığına sahiptirler.bu 11 bitlik adres aralığı, 2K boyutundaki program hafıza sayfasıyla birlikte bir dala(branch) izin verir.bu sayfalama bitleri PCLATH<4:3> bitlerinden gelir(şekil 4-6).Bir CALL yada GOTO komutunu gerçekleştirirken kullanıcı, bu sayfa bitlerinin (PCLATH<4:3>) istenilen program hafıza sayfasına programlanmasını sağlamalıdır.eğer CALL komutu(yada kesmesi) açılırsa, tüm 13 bitlik PC depo(stack) üzerine itilir.bu noktada 8

4.5 Endirekt Adresleme: INDF ve FSR Registerleri INDF registerleri fiziki bir register değidir.indf adres registerleri, FSR registerinin bulunduğu adresi adresleyen registerdir(fsr nin yer belirtecidir).đşte bu olaya endirekt adresleme denir. ÖRNEK 4-1: Endirekt Adresleme 05 Register dosyası 10h değerini içerir. 06 Register dosyası 0Ah değerini içerir. 05 değerini FSR registerine yükleyiniz. INDF registerinin okunması 0Ah lık bir değer olarak geri dönecektir. FSR registerinin bir değerinde(fsr=06) artması. INDF registerinin okunması sonucu 0Ah lık bir değer şekline geri dönecektir. INDF nin kendisinin endirekt olarak(fsr=0) okunuşu 00h ı üretecektir. INDF registerine endirekt yolla yazma (STATUS bitlerinin etkilenmesi ihtimali olduğu bilinerek) bir işlem dışı olay şeklinde sonuçlanır. Örnek 4-2 de endirekt adresleme kullanılarak yapılmış 20h-20Fh RAM yerlerini temizlemekte kullanılan basit bir program gösterilmiştir. ÖRNEK 4-2:Endirekt Adresleme Kullanılarak RAM in Temizlenmesi mowlw 0*20 ; initialize pointer movwf FSR ; to RAM NEXT clrf INDF ; clear INDF register incf FSR ; inc pointer btfss FSR,4 ; all done? goto NEXT ; NO, clear next CONTINUE : ;YES, continue Şekil 4-7 : Direkt/Endirekt Adresleme Efektif 9 bit adresi 8 bitlik FSR registeri ve IRP biti (STATUS<7>) sıralanarak elde edilir(bk. Şekil 4-7).Ama IRP, PIC16C84 te kullanılmaz. 9

5.0 I/O PORTLARI PIC16C84,PORTA ve PORTB olmak üzere 2 porta sahiptir.bazı port pinleri cihazın üzerindeki diğer özellikleri için çeşitli alternatif fonksiyonlarla yol seçtirilmiştirler. 5.1 PORTA ve TRISA Registerleri PORTA, 5-bitlik bir tutucudur.ra4, bir Schmitt Trigger girisşi ve bir açık boşalma çıkışıdır.btün diğer RA port pinleri, TTL giriş düzeylerine ve tam CMOS şıkış sürücülerine sahiptirler.bütün pinler de, giriş ya da çıkış şeklinde düzenleyerecek data komut bitlerine(tris registerları) sahiptirler. Bir TRISA bitini ayarlamak(=1),porta pinini bir giriş haline getirecektir.örneğin haberleşme çıkış sürücüsünü yüksek empedans moduna yerleştiriniz.bir TRISA bitini (=0) temizlemek, haberleşen PORTA pinini bir çıkış durumuna getirecektir.örneğin çıkış tutucusunun içeriğini, seçilen pine yerleştiriniz. PORTA registerlarını okumak demek, pinlerin durumunu okumak demektir;halbuki PORTA ya yazmak,port tutucusuna yazmak manasına gelmektedir.bütün yazma işlemleri okuma-çevirim-yazma operasyonları şeklindedir.yani bir porta yazmak demek, port pininin önce okunduğu,daha sonra da bu değerin çevrime uğradığı ve en sonunda da port data tutucusuna yazıldığı anlamına gelir. RA4 pini, TMR0 saat girişi ile yol seçtirilmiştir.şekil 5.1 : RA3:RA0 Pinleri Blok Diyagramı ÖRNEK 5.1 PORTA YI ATAMAK CLRF PORTA ; Initialize PORTA by ; setting output ; data latches BSF STATUS, RP0 ; Select Bank 1 MOVLW 0x0F ; Value used to ; initialize data ; direction MOVWF TRISA ; Set RA<3:0> as inputs ; RA4 as outputs ; TRISA<7:5> are always ; read as 0. ŞEKĐL 5.2 RA4 Pininin Blok Diyagramı Şekil 5-1 de I/O pinleri V DD ve V SS e karşı diyot korumalı.şekil 5-2 de ise sadece V SS e karşı diyot korumalı Not: 500kHz den düşük işletimde çalışan kristal osilatör konfigürasyonlarında, cihaz PORTA<0> durumuna getirişdiğinde, dahili Q- clock parazitiyaratabilir.bu,rcmodunda çalışan harici bir saatte oluşmaz.bu olayı engellemek için RA0 pini sabit tutulmalıdır; örneğin giriş/çıkış modunda RA0 pini açılmamalıdır. 8

TABLO 5.1: PORTA FONKSĐYONLARI Đsim Bit0 Buffer Tipi Fonksiyon RA0 bit0 TTL Giriş/Çıkış RA1 bit1 TTL Giriş/Çıkış RA2 bit2 TTL Giriş/Çıkış RA3 bit3 TTL Giriş/Çıkış RA4/TOCKI bit4 ST Giriş/Çıkış ya da TMR0 için harici clock girişi. Çıkış, açık drain tipindedir. TABLO 5.2: PORTA ĐLE BĐRLEŞTĐRĐLMĐŞ REGISTERLARIN ÖZETĐ Adres Đsim Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Power-on Diğer Reset deki resetlerdeki Değer Değer 05h PORTA --- --- --- RA4/T0CKI RA3 RA2 RA1 RA0 ---x xxxx ---u uuuu 85h TRISA --- --- --- TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 ---1 1111 ---1 1111 Kısaltma: x=bilinmeyen u=değiştirilmemiş - =çoğaltılmamış; 0 olarak okunur.----- hücreler arttırılmamıştır, 0 olarak okunur. 8

5.2 PORTB ve TRISB Registerleri PORTB, 8-bit genişliğinde çift yönlü bir porttur.haberleşme data yönü registerı TRISB dir. TRISB registerında bulunan herhangi bir bitin üstünedeki 1,haberleşen çıkış sürücüsünü yüksek empedans moduna sokar.trisb registerında bulunan herhangi bir bitin üstündeki 0, çıkış tutucusunu seçilen pine yerleştirir. PORTB pinlerinin herbiri, zayıf bir dahili pull-up lara sahiptir.tek bir kontrol biti, bütün pull-up ları çevirebilir.bu, RBPU (OPTION<7>) bitini silerek yapılabilir.zayıf pull-up ; port pini,çıkış olarak ayarlandığı zaman otomatik olarak kapatılır.pullup lar,çalışma esnasında reset(power-on Reset) yapamazlar. PORTB pinlerinden dördü, RB7:RB4, değişirken kesme(interrupt on change) özelliğine sahiptir. Sadece giriş olarak düzenlenmiş pinler böyle bir kesmeninoluşmasını sağlayabilirler.(örneğin çıkış olarak düzenlenmiş herhangi bir RB/:RB4 pini,değişmede kesme mukayesesinden hariç tutulmuştur). Pinin giriş modundaki değeri,portb nin son okumasından elde edilen eski tutucu değeriyle kıyaslanmıştır.pinlerin uyumsuz çıkışları birlikte OR haline dönüştürülerek,rb portu değişim kesmesinin yaratılması sağlanmıştır. Şekil 5-3 : RB7:RB4 Pinleri Blok Diyagramı Bu kesme, cihazı SLEEP modundan uyandırabilir.rutin kesme servisinde bulunan kullanıcı, aşağıdaki biçimde kesmeyi silebilir: a)portb yi okuma(ya da yazma).bu, uyumsuzluk durumuna son verecektir. b)flag biti RBIF yi silmek. Bir uyumsuzluk durumu, RBIF bitinin ayarlanmasını devam ettirecektir.prtb nin okunması,uyumsuzluk durumunu sona erdirecektir ve RBIF bitinin silinmesini mümkün kılacaktır. Bu 4 pin üzerindeki yazılımı ayarlanabilir pull-up lar, uyumsuzluk özelliğindeki bu kesme ile birlikte tuş takımına kolay bir arabirim sağlar ve key-depression durumundan uyandırır. Not1:PORTB nin açılması sırasındaki bir okuma işleminde (Q 2 döngüsünün başlangıcında) I/O pininde bir değişiklik gerçekleştirilmesi gerkiyorsa,rbif kesme flag biti ayarlanmayabilir. Değişmede kesme(interrupt on change) özelliği, key depression dan uyandırma işlemi ve PORTB nin yalnızca değişmede kesme özelliği için kullanıldığı durumlardatavsiyeedilmektedir. PORTB nin değişmede kesme özelliği kullanılırken sorgulanması tavsiye edilen bir durum değildir. Şekil 5-4: RB3:RB0 Pinleri Blok Diyagramı Şekil 5-3 ve 5-4 de 1: TRISB= 1 hafif çekme yetkili(eğer OPTION registerindeki RBPU= 0 ise 2: I/O pinleri V DD ve V SS karşı diyot korumalı 9

ÖRNEK 5.1: PORTB YĐ ATAMAK CLRF PORTA ; Initialize PORTA by ; setting output ; data latches BSF STATUS, RP0 ; Select Bank 1 MOVLW 0x0F ; Value used to ; initialize data ; direction MOVWF TRISA ; Set RB<3:0> as inputs ; RB<5:4> as outputs ; RB<7:6> as inputs TABLO 5.3: PORTB FONKSĐYONLARI Đsim Bit Buffer Tipi Giriş/Çıkış Mevcudiyet Fonksiyonu RBO/INT bit0 TTL Giriş/Cıkış pini ya da harici kesme girişi.dahili yazılımla programlanabilir zayıf pull-up. RB1 bit1 TTL Giriş/Cıkış pini.dahili yazılımla programlanabilir zayıf pull-up. RB2 bit2 TTL Giriş/Cıkış pini.dahili yazılımla programlanabilir zayıf pull-up. RB3 bit3 TTL Giriş/Cıkış pini.dahili yazılımla programlanabilir zayıf pull-up. RB4 bit4 TTL Giriş/Cıkış pini(değişmede kesmeli).dahili yazılımla programlanabilir zayıf pull-up. RB5 bit5 TTL Giriş/Cıkış pini(değişmede kesmeli).dahili yazılımla programlanabilir zayıf pull-up. RB6 bit6 TTL/ST Giriş/Cıkış pini(değişmede kesmeli).dahili yazılımla programlanabilir zayıf pull-up. RB7 bit7 TTL/ST Giriş/Cıkış pini(değişmede kesmeli).dahili yazılımla programlanabilir zayıf pull-up. Kısaltma: TTL= TTL giriş ST= Schmitt Trigger Not 1: Seri programlama modu kullanıldığı zaman tampon Schmitt Trigger girişidir. TABLO 5.4: PORTB ĐLE BĐRLEŞTĐRĐLMĐŞ REGĐSTERLARIN ÖZETĐ Power-on Diğer Resetler- Adres Đsim Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Reset'deki deki değer 06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT xxxx xxxx uuuu uuuu 86h TRISB TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 1111 1111 1111 1111 81h OPTION RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111 Kısaltma: x=bilinmeyen u=değiştirilmemiş.taranmış hücreler,portb tarafından kullanılmaz. değer 10

5.3 I/O Programlama Kabulleri 5.3.1 Çift Yönlü I/O Portları Yazmada kullanılan herhangi bir komut öncelikle bir okuma işleminden geçecektir.buna müteakiben de bir yazma işlemi meydana gelecektir.bcf ve BSF komutları,örnek olarak registerı CPU içinde oku;bit işlemini açar ve sonucu registera geriyazmada kullanılırlar.bu komutların hem girişi, hem de çıkışı tanımlanmış bir porta uygulanması esnasında tedbir alınmalıdır.örneğin, PORTB nin bit5 inin üzerindeki bir BSF işlemi,portb nin 8 bitinin tamamının CPU içine okunmasına neden olacaktır.daha sonra BSF işlemi,bit 5 üzerinde yerini alacaktır ve PORTB çıkış tutucularına yazılacaktır.portb nin başka bir biti, bir çift-yönlü I/O pini olarak kullanılırsa ve bu aynı zamanda bir giriş olarak da tanımlanırsa pin üzerindeki giriş sinyali sunumu,cpu içine okunacaktır.ve bu pinin data tutucusuna,önceki içeriğin üstüne tekrar yazılacaktır(overwrite).pin,input modunda kaldığı sürece hiçbir problem oluşmaz.zaten,bit0 çıkış moduna çevrildiğinde data tutucusu bilinmez bir duruma gelmiş olacaktır. Port registerının okunması demek,port pinlerinin değerlerinin okunması demektir.port registerının yazılması da port pinlerinin değerlerinin yazılması demektir.bir port üzerinde oku-çevir-yaz komutları uygulanırken(örneğin BCF,BSF,vs.),port pinlerinin değerleri okunur.đstenilen işlem, bu değer üzerinden yapılır ve bu değer port tutucusuna yazılır. Düşük ya da yüksek aktif çıkış verilen bir pin,bu pin üzerindeki düzeyin değiştirilmesi amacıyla aynı anda harici cihazlarda sürülmemelidir( wired-or, wired- and ).So- nuçta oluşan yüksek akım çıkışı, çipe zarar verebilir. 5.3.2 I/O Portları Üzerinde Ardışıl Đşlemler Bir I/O portuna asli yazma olayı, bir komut döngüsünün sonunda meydana gelir.halbuki okuma için data, komut döngüsünün başında geçerli olmak zorundadır(şekil 5.5).Đşte bu noktada, aynı I/O portunun üzerine bir okuma ile takip edilen yazma işlemi taşınırken,dikkat sarf edilmelidir.ardıiık komutlar,pin voltajının bir sonraki komutun CPU içine yazılmasının gerçekleştirilmesinden önce stabilize edilmelidir.yoksa pinin önceki durumu,yeni bir durum hâline getirilmekten çok CPU içinde okunma şeklinde gerçekleşir.şüpheye düşüldüğü zaman, bu komutları,bu I/O portunu çalıştırmayan bir NOP ya da başka bir komutla ayırmak gerekir. Örnek 5.3 te 2 ardışık oku-çeviryaz(örneğin BCF,BSF,vs.) komutlarının bir I/O portu üzerindeki etkisi gösterilmiştir. ÖRNEK 5.3 BĐR I/O PORTU ÜZERĐNDEKĐ OKU ÇEVĐR-YAZ KOMUTLARI ;Initial PORT settings: PORTB<7:4> Inputs ; PORTB<3:0> Outputs ;PORTB<7:6> have external pull-ups and are ;not connected to other circuitry ; ; PORT latch PORT pins ; ---------- --------- BCF PORTB, 7 ; 01pp ppp 11pp ppp BCF PORTB, 6 ; 10pp ppp 11pp ppp BSF STATUS, RP0 ; BCF TRISB, 7 ; 10pp ppp 11pp ppp BCF TRISB, 6 ; 10pp ppp 10pp ppp ; ;Note that the user may have expectes the ;pin values to be 00pp ppp.the 2nd BCF ;caused RB7 to be latched as the pin value ;(high). Şekil 5-5: Ardışıl I/O Đşlemi 8

6.0 TIMER0 MODÜLÜ VE TMR0 REGĐSTERĐ Timer0 modülü zamanlama/sayacı aşağıdaki özelliklere sahiptir. 8 bit lik zamanlama/sayaç Okunabilirlik ve yazılabilirlik 8 bit lik yazılım programlama özelliğine sahip önölçücü(prescaler) Dahili ve harici saat seçimi FFh dan 00h a kadar taşma üzerinde kesme Harici saat için kenar seçimi(edge select) Zamanlama modu T0CS biti silinerek seçilir(option<5>).timer0 modülü her komut döngüsünü (ön ölçücü olmaksızın) çoğaltacaktır.tmr0 registeri yazılırsa ; çoğalma, sonraki iki döngüde engellenecektir(şekil 6-2, Şekil6-3).Kullanıcı, TMR0 registerine ayarlanmış bir değer yazarak çalışabilir. TOCS biti ayarlanarak sayaç modu seçilebilir(option<5>).bu modda, TMR0 hem her türlü artışta hem de RA4/T0CS pini kenar azalışında çoğalacaktır.çoğalma kenarı ;T0 kaynak kenar seçim biti, T0SE(OPTION<4>) tarafından kararlaştırılacaktır.harici saat girişindeki sınırlamaların detayları Bölüm 6-2 de anlatılacaktır. Önölçücü(prescaler) Timer0 modülü ve Watchdog Timer arasında paylaştırılmıştır. Önölçücü tayini yazılım içersinde PSA kontrol biti(option<3>)tarafından kontrol edilir. PSA silme biti önölçücüyü Timer0 modülüne atayacaktır.önölçücü yazılabilir yada okunabilir değildir.önölçücü(bölüm 6-3)Timer0 modülüne atandığında önölçme değeri (1:2, 1:4,., 1:256), yazılım seçilebilir. 6.1 TMR0 Kesmesi TMR0 kesmesi, TMR0 registerinin FFh -00h aralığında taşması durumunda yaratılır. Bu taşma, T0IF bitini(intcon<2>) ayarlar. Kesme, temizlemeyi mümkün kılan T0IE(INTCON<5>)tarafından belirlenir(masked).t0if biti, yazılım içersinde bu kesme mümkün kılınmadan önce Timer0 modülü rutin kesme serisi tarafından temizlenmelidir.sleep modu esnasında zamanlayıcı kapatılmadan TMR0 kesmesi (Şekil 6-4) işlemciyi SLEEP den uyandıramaz. Şekil 6-1 : TMR0 Blok Diyagramı Not1: T0CS, T0SE, PS2, PS1, PS0 ve PSA bitlerioptionregisterineyerleştirilmiştir. 2: Önölçücü (prescaler) Watchdog Timer ile paylaştırılmıştır. Şekil 6-2 : TMR0 Zamanlaması : Dahili Saat / Önölçücüsüz 8

Şekil 6-3 : TMR0 Zamanlaması : Dahili Saat / Önölçücü 1:2 Şekil 6-4 : TMR0 Kesme Zamanlaması Not 1: T0IF kesme bayrağı(flag) buraya örnektir(her Q1) 2: Kesme gecikmesi=3.25 Tcy, Tcy=Komut döngü zamanı. 3: CLKOUT sadece RC osilatör modunda geçerli 4: Zamanlama saatinde(senkronize devreden sonra), T0IF bitinin hemen FFh dan 00h a ayarlanmasından zaman artar.tmr0 registeri 3 Tosc döngüsünden sonra tekrarlar(roll over). 9

6.2 TMR0 ın Harici Saatle Kullanımı TMR0 için bir harici saat girişi kullanıldığında bazı talepleride beraberinde karşılamak zorundadır.harici saat talebi, dahili faz saati(tosc) senkronizasyonuna bağlıdır.aynı zamanda, TMR0 registerinin senkronizasyonundan sonra anlık çoğalmasında bir gecikmede mevcuttur. 6.2.1 Harici Saat Senkronizasyonu Önölçücü kullanılmadığı zamanlarda harici saat girişi önölçücü çıkışının aynısıdır.ra4/ T0CKI pininin dahili faz saatleri ile senkronizasyonu; dahili faz saatlerinin, Q2 ve Q4 döngüleri üzerindeki önölçücü çıkışının modellenmesiyle sağlanır(şekil 6-5).Burada, T0CKI nin en az 2 Tosc (+ küçük bir RC gecikmesi) yüksekliğinde olması ve en az da 2 Tosc (+ küçük bir RC gecikmesi) düşüklüğünde olması gerekmektededir.bahsi geçen cihazın elektriki tanımlamasına başvurunuz. Bir önölçücü kullanıldığında harici saat girişi asenkron bir dalga sayacı tipinde önölçücü tarafından bölünmelidir.bu sayede önölçücü çıkışı simetrik olacaktır.harici saatin modelleme talebini karşılayabilmesi için dalga sayacı hesap içine katılmak durumundadır. Đşte tam bu noktada, T0CKI nin önölçücü değeri tarafından bölünmüş en az 4 Tosc luk (+ küçük bir RC gecikmesi) bir peryoda sahip olması gerekir.t0cki nin yüksek ve düşük zamandaki tek talebi, m,n. 10ns lik darbe Şekil 6-5 : Harici Saat Đle TIMER0 Zamanlaması genişliğinin aşılmasıdır.ac elektriki özellikler kısmında 40-41 ve 42.parametrelere başvurunuz. 6.2.2 TMR0 Çoğalma Gecikmesi Önölçücü çıkışı dahili saatlerle senkronize edildiğinden ötürü, Timer0 modülünün çoğaldığı zamanda harici saat kenarının zamanlamasında da küçük bir gecikme oluşacaktır.şekil 6-5 de harici saat kenarından zaman artışına kadar olan gecikme gösterilmiştir. 6.3 Önölçücü Timer0 modülü için 8 bitlik bir sayaç da önölçücü olarak kullanılabilir(watchdog Timer için sonölçücü gibi).kısaca ;bu sayaç, bu notlarda önölçücü olarak anılmaktadır.dikkat edilmesi gereken bir husus da Timer0 modülü ve Watchdog Timer için karşılıklı, kendine has tek bir önölçücünün bulunduğudur.buradan, Timer0 modülü için bir önölçücü tayini, Watchdog Timer ın bir önölçücüye sahip olmadığı anlamına gelir. PSA ve PS2:PS0 bitleri(option<3:0>), önölçücü tayinine ve önölçme oranlarına karar verirler. Timer0 modülüne tayin gerçekleştirildiğinde, Timer0 modülüne(örneğin: CLRF 1, MOVWF 1, BSF 1,.vs.) yazılan tüm komutlar önölçücüyü silecektir.bir WDT ye tayin durumunda ise bir CLRWDT komutu, önölçücüyü Watchdog Timer ile beraber silecektir.önölçücü, yazılabilir ya da okunailir değildir. Not 1: Gecikme TMR0 saat giriş deiğişiminin 3 Tosc den 7 Tosc ye artmasından itibaren (Qsüresi=Tosc). Bununla beraber,tmr0 girişindeki iki kenar arasındaki sürenin ölçümündeki hata =+- 4 Toscmax. 2: Önölçücü yok ise harici saat kullanılır. 3: Örnekler olduğu zamanoklar belirteçtir.kısa clock pulselerinede örnekler başarısız olabilir. 8

Şelik 6-6 : TMR0 / WDT Önölçücü Blok Diyagramı Not : T0CS, T0SE, PSA, PS2:PS0 bitleri OPTION registeri içindedir. 8

6.3.1 Önölçücü Tayininin Açılması Önölçücü tayini, bütünüyle yazılım kontrolu altındadır.(örneğin: Program açılması esnasında on the fly şeklinde değiştirilebilir.) Not: Tasarlanmış bir cihaz RESET ini engellemek için aşağıdaki komut sırası takip edilerek önölçücü tayininin Timer0 dan WDT ye dağiştirilmesi sağlanmalıdır(örnek 6-1).Bu sıra, WDT mümkün kılınmadığı durumlarada dahi takip edilmelidir.önölçücüyü WDT den Timer0 a değiştirmek için de Örnek 6-2 de verilen sıra takip edilmelidir. ÖRNEK 6-2 : Önölçücü değişimi (WDT TMR0) CLRWDT ; WDT ve önölçücü silinir. BSF STATUS, RP0 ; Bölüm 1 MOVLW b xxxx0xxx ; TMR0, yeni önölçücü değeri ve saat kaynağı seçilir. MOVWF OPTION ; BCF STATUS, RP0 ; Bölüm 0 ÖRNEK 6-1: Önölçücü değişimi (TMR0 WDT) BCF STATUS, RP0 ; Bölüm 0 CLRF TMR0 ; TMR0 ve önölçücü silinir. BSF STATUS, RP0 ; Bölüm 1 CLRWDT ; WDT silinir. MOVLW b xxxx1xxx ; yeni seçilir. MOVWF OPTION ; önölçücü değeri BCF STATUS, RP0 ; Bölüm 0 Tablo 6-1 : TMR0 ile Registerleri Birleştirme Kısalmalar: x = Bilinmeyen u= Değişmeyen - =Tamamlanmamış, 0 diye okunur.taralı hücreler Timer0 ile birleştirilmemiştir. 25

7.0 EEPROM DATA HAFIZASI EEPROM data hafızası normal işletimde (tam V dd aralığında) okunabilir ve yazılabilirdir.bu hafıza register dosya boşluğunda direkt olarak haritalanmamıştır.bunun yerine, özel fonksiyon registerleri arasında endirekt olarak adreslenmiştir.bu hafıza okuma ve yazma için 4 tane SFR kullanmıştır.bu registerler ; EECON1 EECON2 EEDATA EEADR EEDATA, read/write için 8 bitlik datayı ve EEADR de girilen EEPROM adresinin yerini elinde bulundurur.pic16c84 aygıtları 0h dan 3Fh a kadarlık bir adres aralığı ile 64 byte lık data EEPROM una sahiptir. EEPROM data hafızası, byte a okuma ve yazma izni verir.bir byte yazma otomatik olarak yeri siler ve yeni datayı yazar(yazmadan önce silme).eeprom data hafızası yüksek erase/write döngüleri için oranlanmıştır.yazma zamanı bir on-chip zamanlayıcısı tarafından kontrol edilir.yazma zamanı gerilim ve ısıyla değişebileceği gibi chip ten chip e de değişebilir.kesin limitler için lütfen AC özellikler kısmına bakınız. Aygıt, kod korumalı olduğu zaman CPU EEPROM data hafızasını okumaya ve yazmaya devam edebilir.aygıt programlayıcısı bundan sonra bu hafızaya daha fazla erişim veremez. 7.1 EEADR EEADR registeri max. 250 byte lık EEPROM datasını adresleyebilir.eeprom datasının yalnız ilk 64 byte ı yerine getirilir. Üst 2 bit adres çözücüdür.bu ; iki bitin, adresin 64 byte lık hafıza boşluğunda yer aldığını onaylaması için 0 olması gerektiği anlamına gelir. 7.2 EECON1 ve EECON2 Registerleri EECON1 fiziki yolla yerine getirilmiş 5 adet düşük emir biti ile birlikte kontrol registeri görevini yapar.üst 3 bit varolmayan bitlerdir ve 0 olarak okunurlar. RD ve WR kontrol bitleri okuma ve yazmayı başlatırlar.bu bitler silinemezler ve yalnızca yazılımda kurulabilirler.yazma ve okuma işleminin tamamlanmasında donanım içerisinden silinirler.wr bitinin yazılımdan silinmesinin mümkünsüzlüğü, henüz tamamlanmamış bir yazma işleminin kaza ile sonlanmasını önler. WREN biti, kurulduğunda bir yazma işlemine izin verir.güç artışında WREN biti temizdir.wrerr biti, bir MCLR reseti yada bir normal operasyon esnasında WDT time-out reseti tarafından yazma işlemi kesilirse kurulur.bu durumlarda reseti takiben, kullanıcı WRERR bitini kontrol edip tekrar yerine yazabilir.data ve adres, EEDATA ve EEADR registerleri içersinde değiştirilmeyeceklerdir. EEIF kesme flag biti yazma tamalandığı zaman kurulur.bu, yazılım içinde temizlenmiş olmalıdır. EECON2 fiziksel bir register değildir.eecon2 bütün 0 ları okuyacaktır.eecon2 registeri EEPROM data yazması sırasında özel olarak kullanılır. 7.3 EEPROM Data Hafızasının Okunması Bir hafıza yerinin okunabilmesi için kullanıcı, EEADR registerine adresi yazmak ve bundan sonrada kontrol biti RD(EECON1<0>) yi ayarlamalıdır.data, EEDATA registeri içersindeki bir sonraki döngüde mevcuttur.bundan dolayı, bir sonraki komut içersinde okunabilir.eedata, bu değeri kullanıcı tarafından başka bir okuma ve yazma işlemlerine kadar elinde bulundurur. ÖRNEK 7-1 : EEPROM Datasını Okuma BCF MOVLW MOVWF BSF BSF BCF MOVF STATUS, RP0 CONFIG, ADDR EEADR STATUS, RP0 EECON1, RD STATUS, RP0 EEDATA, W ; ; ; ; ; ; ; Bölüm 0 Adres okuma Bölüm 1 EE okuma Bölüm 0 W=EEDATA 7.4 EEPROM Data Hafızasına Yazma Bir EEPROM data yerine yazmada kullanıcı ilk olarak EEADR registerine adresi ve de EEDATA registerine datayı yazmalıdır.daha sonra kullanıcı her byte için yazmanın başlatılmasında belirli belirli bir sırayı takip etmelidir. 26

ÖRNEK 7-2 : EEPROM Datası Yazma BSF BCF BSF MOVLW MOVWF MOVLW MOVWF BSF STATUS, RP0 INTCON, GIE EECON1, WREN 55h EECON2 AAh EECON2 EECON1, WR ; ; ; ; ; ; ; ; Bölüm 1 INT ler yetkisiz Yazma yetkili 55h ı yazma AAh ı yazma WR bitini kurma yazmaya başlama INT ler yetkisiz BSF INTCON, GIE ; Kalın yazılı komutlar istenen sıralamayı belirtmektedir. Her byte için yukarıdaki sıra tam olarak takip edilmediği zaman yazma başlamayacaktır(eecon2 ye 55h ın yazılması, EECON2 ye AAh ın yazılması ve daha sonra da WR bitinin ayarlanması ).Bu kod bölümü esnasında kesmelerin yetkisizleştirilmesi tavsiye edilir. Ek olarak, EECON1 içindeki WREN biti yazmaya ayarlanmalıdır.bu mekanizma, hatalı (beklenmeyen)kod açılmasına(örneğin kayıp programlar) bağlı olarak kazara EEPROM datasına yazmaları önler.kullanıcı, her zaman WREN bitini boşta bulundurmalıdır(eeprom un güncelleştirilmesi durumu hariç).wren biti donanım tarafından silinmez. Bir yazma sırasının başlatılmasından sonra, WREN bitinin silinmesi yazma döngüsünü etkilemeyecektir.wren biti ayarlanmadıkça WR bitininde ayarlanması engellenecektir. Yazma döngüsünün tamamlanmasında WR biti donanım içersinde temizlenecektir ve EE yazma tamamlama kesme flag biti (EEIF) ayarlanacaktır.kullanıcı ya bu kesmeyi mümkün hale getirecektir ya da bu biti oya sunacaktır.eeif, yazılım tarafından temizlenmelidir. Not: Data EEPROM hafızası E/W döngü zamanı, 10ms lik tanımlamayı (tipik) duruma bağlı olarak aşabilir.yazma döngüsünün tamamlandığını onaylayabilmek için EE kesmesini kullanınız ya da WR biti ni (EECON<1>) oya sununuz.bu olayın ikiside yazma döngüsünün tamamlanmasını belirler. 7.5 Yazmanın Doğrulanması Uygulamaya bağlı olarak EEPROM datasına yazılan değerin doğrulanması iyi bir programlama denemesi sonucunda talep edilebilir (Örnek 7-3).Bu doğrulanan değer, istenen değer olmak durumundadır.bu EEPROM bitinin tanımlanan limit yakınında vurgulandığı uygulamalarda kullanılmalıdır. Genelde EEPROM yazma hatası 1 olarak yazılan fakat geri döndüğünde 0 olarak okunan bir bit şeklinde olacaktır(kaçak bite bağlı olarak). ÖRNEK 7-3 : Yazma Doğrulaması BCF : : MOVF BSF READ BSF BCF STATUS, RP0 EEDATA, W STATUS, RP0 EECON1, RD STATUS, RP0 ; ; ; ; ; ; ; Bölüm 1 Her kod buraya gidebilir. Bölüm 0 da olmalı Bölüm 1 Evet,yazılan değer o- kunur. Bölüm 0 ; Yazılan (W registerindeki) ve okunan (EEDATA daki) değer aynı mı? ; SUBWF BTFSS GOTO : : EEDATA, W STATUS, Z WRITE_ERR ; ; ; ; ; 0 farklı mı? Hayır,Yazma hatası Evet,Yazma iyi Program devam 7.6 Kışkırtıcı Yazmalara Karşı Koruma Cihazın data EEPROM hafızasına yazmak istemeyeceği durumlar vardır.kışkırtıcı EEPROM yazmalarından korunmak için çeşitli mekanizmalar inşa edilmiştir.güç arttırımında (power-up) WREN temizlenir.bununla beraber güç arttırma zamanlayıcısıda (72ms lik süre) EEPROM yazmasını önler. Yazım başlatma sırası ve WREN biti birlikte brown-out, powerglitch ya da yazılım fonksiyonsuzluğu gibi kazayla olabilecek yazmaları önler. 7.7 Kod Koruması Esnasında Data Đşlemi Cihaz kod korumalı olduğu zaman; CPU, data EEPROM una karıştırılmamış datayı okuyabilir ve yazabilir.rom cihazları için 2 kod koruma biti vardır(bölüm 8.1).Bir tane ROM program hafızası içindir ve diğeride data EEPROM hafızası içindir. 7.8 Güç Tüketim Kabulleri Not : EEADR<7:6> bitlerinin temizlenmesi tavsiye edilmektedir.bu bitlerin herbirinin ayarlanması durumunda cihazın max. I DD akımı, ikiside silindiği durumdakinden daha çoktur.tanımı 400µA dir.eeadr<7:6> nın silinmesiyle beraber max. değeri 150µA dir. 27