You are on page 1of 76

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 CMOS Teknolojisi:
• 8 bitlik geniş veriyolu
• 1K*14 EEPROM program hafızası • Düşük güç,yüksek hız CMOS EEPROM
• 36*8 genel amaçlı register (SRAM) teknolojisi
• 64*8 chip üstünde EEPROM data hafızası • Bütünüyle statik dizayn
• 15 özel fonksiyonlu donanım registeri • Geniş aralıklı işletme voltajı:
• 8 düzeyde derin donanım deposu - Ticari : 2.0V-6.0V
• Direkt,endirekt ve bağımlı adresleme - Endüstriyel : 2.0V-6.0V
modları • Düşük güç tüketimi
• Dört kesinti kaynağı - < 2mA tipik @ 5V,4MHz
- Harici RB0/INT pini - 60 µA tipik @ 2V,32 kHz
- TMRO zamanlayıcı taşması - 26 µA tipik standby akımı @ 2V
- 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

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

2
Tablo 1-1 : PIC16C8X Sınıfı Araçlar

2.0 PIC16C84 AYGIT 2.1 Elektriksel Yolla Silinebilen


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

3
3.0 TASARIMA BAKIŞ
16CXX ailesinin yüksek performansı
adreslenebilir bir register değildir.
genelde RISC mikroişlemcilerinde bulunan bir
Yürürlüğe konan komuta bağlı olarak ,
takım tasarımsal özelliklerin bir
ALU Carry(C) , Digit Carry(DC) , Zero(Z)
sonucudur.Söze başlamak gerekirse ,
bitlerinin değerlerini etkileyebilir.C ve DC
PIC16CXX Harvard tasarımını kullanır.Bu
tasarım , program ve ayrık hafızalardan data bitleri çıkartmada borrow ve digit borrow out
girişlerini içerir.Yani aygıt , bir program işlevlerini görür.Komutlara örnek olarak
memory bus’ı ve bir data memory bus SUBLW ve SUBWF’ye bakınız.
içermektedir.Bu , program ve datanın aynı PIC16C84’ün basitleştirilmiş blok
hafıdaki (aynı bus üzerinden giriş) alışıldık diyagramı şekil 3-1’de gösterilmiştir.Buna
Von Neuman tasarımının bant genişliğini ilişkin pin tanımlamasıda Tablo 3-1’de
geliştirmiştir.Program ve data hafızasının verilmiştir.
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 ,

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 17 17 I/O TTL
RA1 18 18 I/O TTL
RA2 1 1 I/O TTL
RA3 2 2 I/O TTL
RA4/TOCKI 3 3 I/O ST TMR0 zamanlama/sayaç’a bir saat girişi olarak seçile-
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 programla-
yabilir.
RB0/INT 6 6 I/O TTL RB0/INT , harici bir kesme pini olarakta seçilebilir.
RB1 7 7 I/O TTL
RB2 8 8 I/O TTL
RB3 9 9 I/O TTL
RB4 10 10 I/O TTL Değişmede kesme pini(interrupt on change pin)
RB5 11 11 I/O TTL Değişmede kesme pini(interrupt on change pin)
RB6 12 12 I/O TTL/ST(1) Değişmede kesme pini.Seri programlama saati
RB7 13 13 I/O Değişmede kesme pini.Seri programlama bilgisi
VSS 5 5 P - Logic ve I/O pinleri için referans toprak
VDD 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 uygulamaya konur.Saatler ve komutun
yürürlüğe konma akışı Şekil 3-2’de
Döngüsü gösterilmiştir.

Saat girişi(OSC1’den) Q1,Q2,Q3,Q4 ş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 Q1’de yavaş yavaş arttırılır.Komut program
hafızasında toplanır ve Q4’ün içindeki komut
registerine yerleştirilir.Bu komutun Q1’den
Q4’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


içindeki program sayacının(PC) yavaş yavaş
Bir “komut döngüsü” 4 Q döngüsünden artmasıyla başlar.
oluşur.Komut getirme ve yerine koyma Yürürlüğe koyma döngüsünde getirilen
işleminde , diğer bir komut döngüsü ile kod komut , Q1 döngüsünün içindeki “komut
çözümü ve yerine koyma yapılırken bir komut register”i içine yazılır.Bu komut daha sonra Q2
döngüsü ile de yerine koyma getirme yapacak , Q3 , Q4 döngüleri esnasında çözülür ve
şekilde veri yollanır.Bununla beraber akı yürürlüğe konur.Data hafızasıQ2 esnasında
yoluna bağlı olarak her komut bir döngünün okunur(Operand okunur).Ve Q4 işlemdeyken
içersinde etkili bir şekilde yürürlüğe konur.Eğer yazılır(Gidilecek yere yazılır).
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ü Q1’in

7
4.0 HAFIZA
ORGANĐZASYONU
PIC16C84’de iki hafıza bloğu
vardır.Bunlar , program hafızası ve data Şekil 4-1 : Program Hafıza Haritası ve Depo
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.

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
tarafından aygıt işlemini kontrol etmek için
kullanılır.Bu registerler static RAM’dir.
Data hafızası 2 alana ayrılmıştır.Bunlar- Özel fonksiyon registerleri çekirdek ve
dan ilki özel fonksiyon registerleri (SFR) , çevresel gruplar olmak üzere 2 şekilde
ikincisi ise genel amaç registerleri (GPR) sınıflandırılabilir.Çekirdek fonksiyonları ile
alanlarıdır.SFR’ler cihazın işlemlerini kontrol ilintili olanlar bu bölümde
ederler. açıklanmıştır.Çevresel özelliklerin işlevi ile
Data hafızasının bölümleri(miktarları) alakalı olanları ise belirli özelliklerin
parçalara ayrılmıştır.Bu hem SFR hemde GPR anlatıldığı bölümde açıklanmıştır.
alanları için geçerlidir.GPR alanı genel amaçlı Şekil 4-2 : Register Dosya Haritası
RAM’in 116 byte’ından daha fazlasının
saklanmasına elverişlidir.SFR’nin bölümlen-
miş 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ıza-
sı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ı
Tamamlanmamış data hafıza bölgesi;
0 gibi okunur.
Bütün aygıtlar bir miktar genel amaç Not1:Fiziksel register değil.
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.

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
Güç Diğer tüm
Adres Đsim Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 üstündeki resetlerdeki
reset değer
değeri (not 3)
Bank 0
00h INDF FSR’nin içeriğini adres data hafızasında kullanır.(fiziki bir register ---- ---- ---- ----
değidir)
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 / RA3 RA2 RA1 RA0 ---x xxxx ---u uuuu
TOCKI
06h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 / 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 INTEDG T0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 1111
RBPU
82h PCL Program sayacının(PC) düşük değerli 8 biti(low order) 0000 0000 0000 0000
(2) 0001 1xxx 000q quuu
83h STATUS IRP RP1 RP0 TO PD Z DC C
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) ---- ---- ---- ----
(1) ---0 0000 ---0 0000
0Ah PCLATH - - - PC ‘ in üst 5 biti için yazma buffer’ı
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.Bu-
na 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) komutlar hiçbir STATUS register bitine etki
REGISTERI etmezler.

STATUS registerı , ALU’nun aritmetik Not1: IRP ve RP1 bitleri(STATUS <7:6>)


durumunu,RESET durumunu ve data hafızası PIC16C84 tarafından kullanılmazlar ve
için banka seçim bitini içerir.Her registerda silinmiş bir şekilde programlanmalıdırlar.Bu
olduğu gibi sSTATUS registerı da herhangi bitlerden genel amaçlı R1W bitlerinin
bir komut için gidilecek yer görevi görür.Eğer kullanımı tavsiye edilmez;çünkü bu yeni
STATUS registerı E,DC,C bitlerini ürünlerin yenilenmesinde, bazı uyumsuzlklara
etkileyecek bir komutun gideceği yer ise, o sebep olabilmektedir.
zaman bu 3 bite yazma yetkisi kaldırılır.Bu
bitler, aygıt mantığına bağlı olarak konur ya da Not2: C ve DC bitleri , borrow (ödünç) ve
silinir.Bunların yanında, TO ve PD bitleri elde bitleri olarak çıkarma işlemi
yazılamayan tiptedirler.Đşte bu noktada, görürler.SUBLW ve SUBWF komutlarına
STATUS registerının gideceği yer,komutun örnek olarak bakınız.
sonucuna bağlı olarak sanılandan farklı
olabilir. Not3: STATUS registerı, Z,DC ya da C
ÖrneğinCLRF STATUS ,üst 3 biti bitlerini etkileyecek bir komutun gideceği yer
temizleyip Z bitine yerleştirecektir.Bu durum, olduğu zaman,bu 3 bite yazma işlemi mümkün
STATUS registerını 000u u1uu olarak bırakır. kılınmamıştır.Belirlenmişbitler,cihaz mantığı-
Sadece BCF,BSF,SWAPF ve MOVWF na bağlı olarak yenilenecektirler.
komutları,STATUS Registerını değiştirmek
için kullanılmalıdır.(Tabvlo 9.2);Çünkü bu

Ş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: 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.

bit 4: 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

bit 3: 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

bit 2: 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

bit 1: 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

bit 0: 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 çeşitli kontrol bitlerini içeren,yazılabilen ve de
OPTION registerı ,TMR0/WDT ön- okunabilen tipte bir registerdır.
ölçücüsü,harici INT bölücüsü,TMR0 ve
PORTB üzerindeki zayıf Pull-up’ları ayarlayan 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: 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.

bit 6: INTEDG:Kesme köşe seçim biti


1=RB0/INT pininin artan köşesinde kesme
0=RB0/INT pininin azalan köşesinde kesme

bit 5: TOCS:TMR0 Saat(Clock) kaynağı seçim biti


1=RA4/T0CKI pini üzerinde geçiş
0=Dahili komut döngü saati(CLKOUT)

bit 4: 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ış

bit 3: PSA: Ön-ölçücü tayin biti


1=Ön-ölçücü,WDT’a tayin edilir
0=Ön-ölçücü,TMR0’a tayin edilir

bit 2-0: 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 Not: Enable biti ya da küresel(global) enable
biti GIE(INTCON<7>)’nin durumuna bağlı
INTCON registerı,bütün kesme kaynakları olmaksızın oluşabilecek bir kesme durumu
için olan çeşitli yetkilendirici bitleri(enable) gerçekleşirken,kesme durum tesbit bitleri
içeren ,okunabilir ve de yazılabilir türde bir (interrupt flag bit) devreye girer.
registerdır.

Ş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: INTE: RB0/INT Kesim Enable biti


1=RB0/INT kesmesine yetki verir
0=RB0/INT kesmesine yetkiyi kaldırır

bit 3: 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

bit 2: 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

bit 1: INTF: RB0/INT Kesim Flag biti


1=RB0/INT kesmesi meydana gelmiştir
0=RB0/INT kesmesi meydana gelmemiştir

bit 0: 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<4:3>’ün uygulaması geri dönme
komutları için talep edilmez.
PCLATH
Not: PIC16C84 program hafızası 1,2 ve 3
Program sayacı (PC) , 13 bit genişliğinde- (0800h-1FFFh) program sayfaları için
dir.Düşük byte PCL registeri , okunabilir ve kullanılan PCLATH<4:3> bitlerini siler.
yazılabilir bir registerdir.PC’nin yüksek byte’ı
, PCLATH registerinden gelir ve direkt olarak
okunamaz yada yazılamaz.PCLATH(PC latch
4.4 Depo(Stack)
high) registeri PC<12:8> için bir tutma
registeridir.PC yeni bir değerle yüklendiği PIC16C84 8 derinliğinde*13 bit genişli-
zaman PCLATH’ın içeriği program sayacının ğinde bir donanım deposuna sahiptir(Şekil 4-
üstteki byte’ına transfer edilir.Bu olay PCL’ye 1).Depo boşluğu ne bir programın ne de bir
yazılımda , CALL veya GOTO esnasında data boşluğunun parçası olmadığı gibi depo
olur.PC’nin yüksek bitleri Şekil 4-6’da depo işaretleyiçiside okunabilir ve yazılabilir
gösterildiği gibi PCLATH’dan yüklenmiştir. değildir.
Bir CALL komutu gerçekleştirildiğinde ya
Şekil 4-6 : Farklı Durumlarda PC’nin da bir kesmenin varlığı onaylandığında , tüm
Yüklenmesi 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.

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ı
4.3.1 Computed GOTO biçimindedir.Onuncu itmede ikinci itmenin
üstüne yazar.
(Hesaplanmış GOTO) Eğer depo efektif olarak dokuz kez
patlatılmışsa , PC değeri ilk patlamadan
Hesaplanmış GOTO , program sayacına bir sonraki ile aynıdır.
sapma(offset) eklenerek gerçekleştirilir
(ADDWF PCL).Bir tablo oluştururken Not: Deponun yetersiz akış durumlarını yada
hesaplanmış GOTO metodunu okuyunuz , eğer deponun taşma durumlarını bildirmek amaçlı
tablo yerleri PCL hafıza sınırları (herbir 256 hiçbir status biti yoktur.
kelime bloğu) ile çakışırsa dikkat edilmelidir.

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

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
Şekil 4-7 : Direkt/Endirekt Adresleme kullanılmaz.

9
5.0 I/O PORTLARI
PIC16C84 ,PORTA ve PORTB olmak
üzere 2 porta sahiptir.Bazı port pinleri cihazın ÖRNEK 5.1 PORTA’YI ATAMAK

üzerindeki diğer özellikleri için çeşitli CLRF PORTA ; Initialize


alternatif fonksiyonlarla yol seçtirilmiştirler. PORTA by
; setting output
5.1 PORTA ve TRISA ; data latches
Registerleri BSF
MOVLW
STATUS, RP0
0x0F
; Select Bank 1
; Value used to
; initialize
PORTA, 5-bitlik bir tutucudur.RA4, bir data
Schmitt Trigger girisşi ve bir açık boşalma ; direction
MOVWF TRISA ; Set RA<3:0>
çıkışıdır.Btün diğer RA port pinleri, TTL giriş as inputs
düzeylerine ve tam CMOS şıkış sürücülerine ; RA4 as
sahiptirler.Bütün pinler de, giriş ya da çıkış outputs
; TRISA<7:5>
şeklinde düzenleyerecek data komut are always
bitlerine(TRIS registerları) sahiptirler. ; read as ‘0’.
Bir TRISA bitini ayarlamak(=1),PORTA
pinini bir giriş haline getirecektir.Örneğin
haberleşme çıkış sürücüsünü yüksek empedans ŞEKĐL 5.2 RA4 Pininin Blok Diyagramı

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ı

Şekil 5-1’de I/O pinleri VDD ve VSS’e karşı


diyot korumalı.Şekil 5-2’de ise sadece VSS’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 Bu kesme, cihazı SLEEP modundan
uyandırabilir.Rutin kesme servisinde bulunan
PORTB, 8-bit genişliğinde çift yönlü bir kullanıcı, aşağıdaki biçimde kesmeyi silebilir:
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 a)PORTB’yi okuma(ya da yazma).Bu ,
sokar.TRISB registerında bulunan herhangi bir uyumsuzluk durumuna son verecektir.
bitin üstündeki ’0’, çıkış tutucusunu seçilen b)Flag biti RBIF’yi silmek.
pine yerleştirir. Bir uyumsuzluk durumu, RBIF bitinin
PORTB pinlerinin herbiri, zayıf bir dahili ayarlanmasını devam ettirecektir.PRTB’nin
pull-up’lara sahiptir.Tek bir kontrol biti, bütün okunması,uyumsuzluk durumunu sona
pull-up’ları çevirebilir.Bu, RBPU erdirecektir ve RBIF bitinin silinmesini
(OPTION<7>) bitini silerek yapılabilir.Zayıf mümkün kılacaktır.
pull-up ; port pini ,çıkış olarak ayarlandığı Bu 4 pin üzerindeki yazılımı
zaman otomatik olarak kapatılır.Pull- ayarlanabilir pull-up’lar, uyumsuzluk
up’lar,çalışma esnasında reset(Power-on özelliğindeki bu kesme ile birlikte tuş takımına
Reset) yapamazlar. kolay bir arabirim sağlar ve key-depression
PORTB pinlerinden dördü, RB7:RB4, durumundan uyandırır.
değişirken kesme(interrupt on change)
özelliğine sahiptir. Sadece giriş olarak Not1:PORTB’nin açılması sırasındaki bir
düzenlenmiş pinler böyle bir okuma işleminde (Q2 döngüsünün
kesmeninoluşmasını sağlayabilirler.(Örneğin başlangıcında) I/O pininde bir değişiklik
çıkış olarak düzenlenmiş herhangi bir gerçekleştirilmesi gerkiyorsa,RBIF kesme flag
RB/:RB4 pini,değişmede kesme biti ayarlanmayabilir.
mukayesesinden hariç tutulmuştur). Pinin giriş
modundaki değeri,PORTB’nin son
Değişmede kesme(interrupt on change)
okumasından elde edilen eski tutucu değeriyle
özelliği, key depression’dan uyandırma işlemi
kıyaslanmıştır.Pinlerin “uyumsuz” çıkışları
ve PORTB’nin yalnızca değişmede kesme
birlikte OR haline dönüştürülerek,RB portu
özelliği için kullanıldığı
değişim kesmesinin yaratılması sağlanmıştır.
durumlardatavsiyeedilmektedir. PORTB’nin
Şekil 5-3 : RB7:RB4 Pinleri Blok Diyagramı
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 VDD ve VSS’ 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
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.

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

Ş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. Önölçücü(prescaler) Timer0 modülü ve
• 8 bit’lik zamanlama/sayaç Watchdog Timer arasında paylaştırılmıştır.
• Okunabilirlik ve yazılabilirlik Önölçücü tayini yazılım içersinde PSA kont-
• 8 bit’lik yazılım programlama özelliğine rol biti(OPTION<3>)tarafından kontrol edilir.
sahip önölçücü(prescaler) PSA silme biti önölçücüyü Timer0 modülüne
• Dahili ve harici saat seçimi atayacaktır.Önölçücü yazılabilir yada okuna-
• FFh’dan 00h’a kadar taşma üzerinde bilir değildir.Önölçücü(Bölüm 6-3)Timer0
kesme modülüne atandığında önölçme değeri (1:2 ,
• Harici saat için kenar seçimi(edge select) 1:4 , ……. , 1:256) , yazılım seçilebilir.

Zamanlama modu T0CS biti silinerek 6.1 TMR0 Kesmesi


seçilir(OPTION<5>).Timer0 modülü her
komut döngüsünü (ön ölçücü olmaksızın) TMR0 kesmesi , TMR0 registerinin FFh
çoğaltacaktır.TMR0 registeri yazılırsa ; çoğal- -00h aralığında taşması durumunda yaratılır.
ma , sonraki iki döngüde engellenecektir(Şe- Bu taşma , T0IF bitini(INTCON<2>) ayarlar.
kil 6-2 , Şekil6-3).Kullanıcı , TMR0 registeri- Kesme , temizlemeyi mümkün kılan
ne ayarlanmış bir değer yazarak çalışabilir. T0IE(INTCON<5>)tarafından belirlenir(mas-
TOCS biti ayarlanarak sayaç modu seçile- ked).T0IF biti , yazılım içersinde bu kesme
bilir(OPTION<5>).Bu modda , TMR0 hem mümkün kılınmadan önce “Timer0 modülü
her türlü artışta hem de RA4/T0CS pini kenar rutin kesme serisi” tarafından temizlenmeli-
azalışında çoğalacaktır.Çoğalma kenarı ;T0 dir.SLEEP modu esnasında zamanlayıcı
kaynak kenar seçim biti , T0SE(OPTION<4>) kapatılmadan TMR0 kesmesi (Şekil 6-4)
tarafından kararlaştırılacaktır.Harici saat işlemciyi SLEEP’den uyandıramaz.
girişindeki sınırlamaların detayları Bölüm 6-
2’de anlatılacaktır.

Ş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 ayarlan-
masından zaman artar.TMR0 registeri 3 Tosc döngüsünden sonra tekrarlar(roll over).

9
6.2 TMR0’ın Harici Saatle genişliğinin aşılmasıdır.AC elektriki özellikler
kısmında 40-41 ve 42.parametrelere başvuru-
Kullanımı nuz.

TMR0 için bir harici saat girişi kullanıldı- 6.2.2 TMR0 Çoğalma Gecikmesi
ğında bazı talepleride beraberinde karşılamak
zorundadır.Harici saat talebi , dahili faz Önölçücü çıkışı dahili saatlerle senkronize
saati(Tosc) senkronizasyonuna bağlıdır.Aynı edildiğinden ötürü , Timer0 modülünün çoğal-
zamanda , TMR0 registerinin senkronizasyo- dığı zamanda harici saat kenarının zamanla-
nundan sonra anlık çoğalmasında bir gecikme- masında da küçük bir gecikme oluşacaktır.Şe-
de mevcuttur. kil 6-5’de harici saat kenarından zaman
artışına kadar olan gecikme gösterilmiştir.
6.2.1 Harici Saat
Senkronizasyonu 6.3 Önölçücü
Önölçücü kullanılmadığı zamanlarda harici Timer0 modülü için 8 bitlik bir sayaç da
saat girişi önölçücü çıkışının aynısıdır.RA4/ önölçücü olarak kullanılabilir(Watchdog Timer
T0CKI pininin dahili faz saatleri ile senkroni- için sonölçücü gibi).Kısaca ;bu sayaç , bu not-
zasyonu; dahili faz saatlerinin , Q2 ve Q4 dön- larda “önölçücü”olarak anılmaktadır.Dikkat
güleri üzerindeki önölçücü çıkışının modellen- edilmesi gereken bir husus da Timer0 modülü
mesiyle sağlanır(Şekil 6-5).Burada , T0CKI’ ve Watchdog Timer için karşılıklı , kendine
nin en az 2 Tosc (+ küçük bir RC gecikmesi) has tek bir önölçücünün bulunduğudur.Bura-
yüksekliğinde olması ve en az da 2 Tosc (+ dan , Timer0 modülü için bir önölçücü tayini ,
küçük bir RC gecikmesi) düşüklüğünde olması Watchdog Timer’ın bir önölçücüye sahip
gerekmektededir.Bahsi geçen cihazın elektriki olmadığı anlamına gelir.
tanımlamasına başvurunuz. PSA ve PS2:PS0 bitleri(OPTION<3:0>) ,
Bir önölçücü kullanıldığında harici saat önölçücü tayinine ve önölçme oranlarına karar
girişi asenkron bir dalga sayacı tipinde verirler.
önölçücü tarafından bölünmelidir.Bu sayede Timer0 modülüne tayin gerçekleştirildiğin-
önölçücü çıkışı simetrik olacaktır.Harici saatin de , Timer0 modülüne(Örneğin: CLRF 1 ,
modelleme talebini karşılayabilmesi için dalga MOVWF 1 , BSF 1 , ….vs.) yazılan tüm
sayacı hesap içine katılmak durumundadır. komutlar önölçücüyü silecektir.Bir WDT’ye
Đşte tam bu noktada , T0CKI’nin önölçücü tayin durumunda ise bir CLRWDT komutu ,
değeri tarafından bölünmüş en az 4 Tosc’luk önölçücüyü Watchdog Timer ile beraber
(+ küçük bir RC gecikmesi) bir peryoda sahip silecektir.Önölçücü , yazılabilir ya da okuna-
olması gerekir.T0CKI’nin yüksek ve düşük ilir değildir.
zamandaki tek talebi , m,n. 10ns’lik darbe
Şekil 6-5 : Harici Saat Đle TIMER0
Zamanlaması

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ı
ÖRNEK 6-2 : Önölçücü değişimi
Önölçücü tayini , bütünüyle yazılım
(WDT→TMR0)
kontrolu altındadır.(Örneğin: Program açılması
esnasında “on the fly” şeklinde değiştirilebilir.) CLRWDT ; WDT ve önölçücü silinir.
BSF STATUS, RP0 ; Bölüm 1
Not: Tasarlanmış bir cihaz RESET’ini MOVLW b’xxxx0xxx’ ; TMR0 , yeni ön-
engellemek için aşağıdaki komut sırası takip ölçücü değeri ve
saat kaynağı se-
edilerek önölçücü tayininin Timer0’dan çilir.
WDT’ye dağiştirilmesi sağlanmalıdır(Örnek 6- MOVWF OPTION ;
1).Bu sıra , WDT mümkün kılınmadığı BCF STATUS, RP0 ; Bölüm 0
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-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 oku-
nur.Taralı hücreler Timer0 ile
birleştirilmemiştir.

25
7.0 EEPROM DATA silinmesinin mümkünsüzlüğü , henüz tamam-
lanmamış bir yazma işleminin kaza ile sonlan-
HAFIZASI masını önler.
WREN biti , kurulduğunda bir yazma işle-
EEPROM data hafızası normal işletimde mine izin verir.Güç artışında WREN biti
(tam Vdd aralığında) okunabilir ve yazılabilir- temizdir.WRERR biti , bir MCLR reseti yada
dir.Bu hafıza register dosya boşluğunda direkt bir normal operasyon esnasında WDT time-out
olarak haritalanmamıştır.Bunun yerine , özel reseti tarafından yazma işlemi kesilirse kuru-
fonksiyon registerleri arasında endirekt olarak lur.Bu durumlarda reseti takiben , kullanıcı
adreslenmiştir.Bu hafıza okuma ve yazma için WRERR bitini kontrol edip tekrar yerine
4 tane SFR kullanmıştır.Bu registerler ; yazabilir.Data ve adres , EEDATA ve EEADR
• EECON1 registerleri içersinde değiştirilmeyeceklerdir.
• EECON2 EEIF kesme flag biti yazma tamalandığı
• EEDATA zaman kurulur.Bu , yazılım içinde temizlenmiş
olmalıdır.
• EEADR
EECON2 fiziksel bir register
EEDATA , read/write için 8 bitlik datayı
değildir.EECON2 bütün “0”ları
ve EEADR ‘de girilen EEPROM adresinin
okuyacaktır.EECON2 registeri EEPROM data
yerini elinde bulundurur.PIC16C84 aygıtları
yazması sırasında özel olarak kullanılır.
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 7.3 EEPROM Data Hafızasının
yazma izni verir.Bir byte yazma otomatik ola- Okunması
rak 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 Bir hafıza yerinin okunabilmesi için kul-
zamanı bir on-chip zamanlayıcısı tarafından lanıcı , EEADR registerine adresi yazmak ve
kontrol edilir.Yazma zamanı gerilim ve ısıyla bundan sonrada kontrol biti RD(EECON1<0>)
değişebileceği gibi chip’ten chip’e de değişebi- ’yi ayarlamalıdır.Data , EEDATA registeri
lir.Kesin limitler için lütfen AC özellikler içersindeki bir sonraki döngüde
kısmına bakınız. mevcuttur.Bundan dolayı , bir sonraki komut
Aygıt , kod korumalı olduğu zaman CPU içersinde okunabilir.EEDATA , bu değeri kul-
EEPROM data hafızasını okumaya ve yazma- lanıcı tarafından başka bir okuma ve yazma
ya devam edebilir.Aygıt programlayıcısı bun- işlemlerine kadar elinde bulundurur.
dan sonra bu hafızaya daha fazla erişim vere-
mez. ÖRNEK 7-1 : EEPROM Datasını Okuma

BCF STATUS , RP0 ; Bölüm 0


7.1 EEADR MOVLW CONFIG , ADDR ;
MOVWF EEADR ; Adres okuma
BSF STATUS , RP0 ; Bölüm 1
EEADR registeri max. 250 byte’lık BSF EECON1 , RD ; EE okuma
EEPROM datasını adresleyebilir.EEPROM da- BCF STATUS , RP0 ; Bölüm 0
tasının yalnız ilk 64 byte’ı yerine getirilir. MOVF EEDATA , W ; W=EEDATA
Ü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 7.4 EEPROM Data Hafızasına
anlamına gelir. Yazma
7.2 EECON1 ve EECON2 Bir EEPROM data yerine yazmada kulla-
Registerleri nıcı ilk olarak EEADR registerine adresi ve de
EEDATA registerine datayı yazmalıdır.Daha
EECON1 fiziki yolla yerine getirilmiş 5 sonra kullanıcı her byte için yazmanın başlatıl-
adet düşük emir biti ile birlikte kontrol registe- masında belirli belirli bir sırayı takip etmelidir.
ri görevini yapar.Üst 3 bit varolmayan bitler-
dir ve “0” olarak okunurlar.
RD ve WR kontrol bitleri okuma ve yaz-
mayı başlatırlar.Bu bitler silinemezler ve yal-
nızca yazılımda kurulabilirler.Yazma ve oku-
ma işleminin tamamlanmasında donanım içeri-
sinden silinirler.WR bitinin yazılımdan

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

27
Şekil 7-1 : EECON1 Registeri (88h Adresi)

U U U R/W-0 R/W-x R/W-0 R/S-0 R/S-x


- - - EEIF WRERR WREN WR RD
bit7 bit0

R = Okunabilir bit
W = Yazılabilir bit
S = Tamamlanmamış bit ,
“0” diye okunur.
-n = POR reset değeri

bit 7:5 Tamamlanmamış : “0” olarak okunur.

bit 4 EEIF : EEPROM Write Operation Interrupt Flag bit (EEPROM yazma işlemi kesme flag
biti)
1 = Yazma işlemi tamamlanmış(Yazılımdan silinmiş olmalı)
0 = Yazma işlemi tamamlanmamış ya da başlatılmamış

bit 3 WRERR : EEPROM Error Flag Bit (EPROM hata bayrak biti)
1 = Yazma işlemi erken sonlandırılmış(bir MCLR reseti ya da normal işlem esnasında WDT
reseti)
0 = Yazma operasyonu tamamlanmış

bit 2 WREN : EEPROM Write Enable Bit (EEPROM yazma yetki biti)
1 = Yazma döngülerine izin verilmiş
0 = Data EEPROM yazması engellenmiş

bit 1 WR : Write Control Bit (Yazma kontrol biti)


1 = Yazma döngüsü başlaması (Bu bit herbir yazma tamamlandığında donanım tarafından
silinir.WR biti yazılım tarafından sadece kurulabilir(silinmez).

bit 0 RD : Read Control bit (Okuma kontrol biti)


1 = EEPROM’da okuma başlaması (Okumayı bir döngü alır.RD donanım içinden silinemez.
RD biti yazılım içerisinden sadece kurulur(silinmez)
0 = EEPROM okuması başlamamıştır

Tablo 7-1 : Data EEPROM ile bitleri/registerleri birleştirme

Kısaltmalar : x = Bilinmeyen u = Değişmemiş - = Tamamlanmamış , “0” olarak okunur


q = duruma bağlı değişken
Taralı hücreler EEPROM datasında kullanılmıyor.

28
8.0 CPU’NUN KENDĐNE dir.Bu tasarım , cihazı güç kaynağı sabitlenir-
ken reset’te tutar.Bu iki on-chip zamanlayıcı-
ÖZGÜ ÖZELLĐKLERĐ sıyla çoğu uygulamada harici reset devresine
ihtiyaç duyulmamaktadır.
Bir mikrokontrolörü diğerlerinden farklı SLEEP modu çok düşük akımlı güç
kılan realtime uygulamaların gerektirdiği özel azaltma modu önerir.Kullanıcı , SLEEP’
devrelerdir.PIC16C84; Sistem güvenirliğinin den uyanıp harici reset , Watchdog timer time-
max. hale getirilmesi , harici bileşenlerin out’u ya da bir kesmeye geçebilir.Uygulamaya
elenmesinde maliyetin min. hale getirilmesi , uyacak parçayı sağ-
güç tasarruf işletim modlarının sağlanması ve layan bazı osilatör seçenekleri vardır.LP kristal
kod korumasının sağlanması amaçlarıyla seçeneği güç tasarrufu yaparken , LC osilatör
örnekleyebileceğimiz bazı özelliklere seçeneğide sistem maliyetinde tasarruf
sahiptir.Bu tarz özellikler aşağıda da belirtil- yapar.Konfigürasyon bitlerinden oluşmuş bir
miştir; kurulum çeşitli seçeneklerin seçiminde
• OSC seçimi kullanılır.
• Reset
- Power-on Reset (POR) 8.1 Konfigürasyon Bitleri
- Power-up Timer (PWRT)
- Oscillator Start-up Timer (OST)
Konfigürasyon bitleri programlanabi-
• Kesmeler lir (“0” olarak okunur) yada değişik aygıt
• Watchdog Timer (WDT) konfigürasyonlarını seçmek amacıyla
• SLEEP programlanmamış halde bırakılabilir(“1”
• Kod Koruması olarak okunur).Bu bitler program hafıza
• ID yerleri yeri 2007h’da haritalanır.2007h adresi ,
• Devre içi seri programlama kullanıcı program hafıza boşluğunun
PIC16C84 yalnızca konfigürasyon bitleri ötesindedir.Ve özel test/konfigürasyon
tarafından kapatılabilen bir Watchdog Timer’a hafıza boşluğuna (2000h-3FFFh) aittir.Bu
sahiptir.Arttırılmış güvenilirlik için kendi RC boşluk sadece programla-ma esnasında
osilatörünü çalıştırır.Güç arttırımında (power- erişimdedir.
up) lüzumlu gecikme-
leri öneren 2 zamanlayıcı vardır.Bunlardan biri R = Okunabilir bit
P = Programlanabilir bit
osilatör başlangıç zamanlayıcısı(OST) U = Tamamlanmamış bit,”1” olarak
’dır.Bu zamanlayıcı kristal osilatör sabit olana oku-
kadar chip’i reset’te tutmak için nur.
-n = POR reset değeri
tasarlanmıştır.Diğeride 72msn’lik (nomi-
u = Değiştirilmemiş
nal) sabit gecikmeyi sağlayan (yalnızca güç
arttırımında) power-up timer(PWRT)’

Şekil 8-1 : Konfigürasyon kelimesi

bit 13:5 Tamamlanmamış : “1” olarak b WDTE : Watchdog Timer Enable


okunur. bit 2 Bit(WDT yetki biti)
1 = WDT yetkili
bit 4 CP : Code Protection bit (Kod ko- 0 = WDT yetkisiz
ruma biti) FOSC1:FOSC0 : Oscillator
1 = Kod koruma kapalı b Selection bit(Osilatör seçim biti)
bit 1:0 11 = RC osilatör
0 = Tüm hafıza kod korumalı 10 = HS osilatör
bit 3 PWRTE : Power-up Timer Enable 01 = XT osilatör
Bit(Güç artım zamanı 00 = LP osilatör
Yetki biti)
1 = Güç arttırımı yetkili
0 = Güç arttırımı yetkisiz

28
8.2 Osilatör Tablo 8-1 : Seramik Resonator Đçin
PIC16C84 Kapasitör Seçimi
Konfigürasyonları
Test Edilmiş Aralıklar
Mod Frekans OSC1/C1 OSC2/C2
8.2.1 Osilatör Tipleri
455 kHz 47-100 pf 47-100 pf
XT 2.0 MHz 15-33 pf 15-33 pf
PIC16C84 4 farklı osilatör modunda 4.0 MHz 15-33 pf 15-33 pf
işletilebilir.Kullanıcı , 2 konfigürasyon bi- 8.0 MHz 15-33 pf 15-33 pf
ni (FOSC1 ve FOSC2) aşağıdaki 4 modu HS 10.0 MHz 15-33 pf 15-33 pf
seçmek için programlayabilir. Not :
• LP Low Power Crystal C1 ve C2’nin tavsiye edilen değerleri , test edil-
miş olan aralıklarla aynıdır.Yüksek kapasite , osi-
• XT Crystal /Resonator latörün stabilitesini arttırır fakat aynı zamanda da
• HS High Speed Crystal /Resonator başlatma(start-up) süresini de arttırır.Bu değerler , sadece
• RC Resistor/Capacitor tasarım için bir kolaylık sağlar.Her rezo-
natörün kendine özgü karakteristikleri olduğun-
dan dolayı kulanıcı harici bileşenlerin uygun değerleri için
8.2.2 Kristal Osilatör/Seramik üreticiye danışılmalıdır.
Osilatör Rezonatör Testi
XT , LP veya HS modlarında , 455kHz Panasonic EFO-A455K04B ±
osilasyonu yerleştirmek için bir kristal ya da 0.3%
seramik resonator , OSC1/CLKIN ve 2.0 MHz Murata Erie CSA2.00MG ±
OSC2/CLKOUT pinlerine bağlanırlar. 0.5%
4.0 MHz Murata Erie CSA4.00MG ±
Şekil 8-2 : Kristal/Seramik Resonator Đşlemi 0.5%
8.0 MHz Murata Erie CSA8.00MT ±
0.5%
10.0 MHz Murata Erie CSA10.00MTZ ±
0.5%
Hiçbir resonatörde kapasitör yerleştirilmemiştir.

Tablo 8-2 : Kristal Osilatör Đçin PIC16C84


Not 1: Tablo 8-1 ve Tablo 8-2’de görülen C1 Kapasitör Seçimi
ve C2 değerleri tavsiye edilir.
2: Seri resistör(RS) , AT şerit kesme kris- Mod Frekans OSC1/C1 OSC2/C2
talleri için gerekebilir. 32 kHz 68-100 pf 68-100 pf
XP 200 kHz 15-33 pf 15-33 pf
3: Kristal seçeneği ile RF değişebilir.
100 kHz 100-150 pf 100-150 pf
PIC16C84 osilatör dizaynı , paralel kesim XT 2 MHz 15-33 pf 15-33 pf
kristalinin kullanımını gerektirir.Seri kesim 4 MHz 15-33 pf 15-33 pf
kristalinin kullanımı kristal üreticilerinin özel- 4 MHz 15-33 pf 15-33 pf
liklerinin dışında bir frekans verebilir.XT , LP HS 10 MHz 15-33 pf 15-33 pf
ya da HS modlarında iken cihaz OSC1/CLKIN Not :
pininin sürümü için bir harici saat kaynağına Yüksek kapasite , osilatörün stabilitesini arttırır fakat aynı
zamanda da başlama süresini de arttırır.Bu değerler , sadece
sahip olabilir.(Şekil 8-3) tasarım için bir kolaylık sağlar.HS ve yerine göre XT mo-
dundayken , düşük sürüm seviyesine sahip ve bu seviyeyi
Şekil 8-3 : Harici Saat Girişi Đşlemi(HS , XT aşan kristallerden sakınmak için Rs’e ihtiyaç
ya da LP osilatör konfigürasyonu) duyulabilir.Her kristalin kendine özgü karakteristikleri
olduğundan dolayı , kullanıcı harici bileşenlerin uygun
değerleri için üreticiye danışmalıdır.
Kristal Testleri
32.768 kHz Epson C-001R32.768K- ±20 PPM
A
100 kHz Epson C-2 100.00 KC-P ±20 PPM
200 kHz STD XTL 200.000 KHz ±20 PPM
1.0 MHz ECS ECS-10-13-2 ±50 PPM
2.0 MHz ECS ECS-20-S-2 ±50 PPM
4.0 MHz ECS ECS-40-S-4 ±50 PPM
10.0 MHz ECS ECS-100-S-4 ±50 PPM

29
8.2.3 Harici Kristal Osilatör Devresi 8.2.4 RC Osilatör
Ya bir önceden paketlenmiş osilatör Duyarlı olmayan zamanlama uygulamala-
kullanılabilir ya da basit bir TTL kapalı rında RC cihaz seçeneği ek maliyet tasarrufları
osilatör devresi inşa edilebilir.Önceden sunar.RC osilatör frekansı ; Kaynak gerilimi-
paketlenmiş osilatörler geniş bir işletim aralığı nin , direnç değerlerinin (Rext) , kapasite değer-
ve de daha iyi bir stabilite sağlarlar.Đyi dizayn lerinin (Cext) ve de işletme sıcaklığının bir
edilmiş bir kristal osilatörü TTL kapılarıyla fonksiyonudur.Bununla beraber ; osilatör fre-
birlikte iyi bir performans verecektir.Kristal kansı , normal işlem parametresi değişimine
osilatör devrelerinin 2 tipi mevcuttur;Biri seri bağlı olarak üniteden üniteye değişim
rezonanslı biri de paralel rezonanslı. gösterir.Bundan başka , paket tipleri arasındaki
Şekil 8-4’de paralel rezonanslı bir lead frame capacitance farklılığı da osilasyon
osilatör devresi görülmektedir.Devre , kristalin frekansını özellikle düşük Cext(harici kapasite)
ana frekansının kullanımı için değerlerini etkiler.Kullanıcı , harici R ve C bi-
tasarlanmıştır.74AS04 inverteri bir paralel leşenlerinin toleranslarına bağlı olarak hesap
osilatörün gerektirdiği 180° ‘lik faz farklılaşmasını da almalıdır.Şekil 8-6 bir
değiştirmesini gerçekleştirir.4,7 kΩ’luk direnç PIC16C84’e bağlanmış R/C kombinasyonunu
,stabilite için negatif geribesleme sağlar.10 göstermektedir.2,2 kΩ’un altındaki Rext(Harici
kΩ’luk potansiyometre doğrusal düzlemde direnç) değerleri için osilatör işlemi sabitlene-
74AS04’ü etkiler.Bu olay , harici osilatör meyebilir ya da tümüyle durdurulabilir.Çok
tasarımlarında kullanılabilir. yüksek Rext değerleri için (Örneğin 1MΩ)
osilatör sese , rutubete ve sızıntıya karşı duyar-
Şekil 8-4 : Paralel Rezonantlı Harici Kristal lı hale gelir.Burada Rext’in 3kΩ ve 100 kΩ
Kristal Osilatör Devresi arasında tutulması tavsiye edilir.
Osilatör başka bir haricikapasitörü
(Cext=0pf) işletmemesine rağmen biz gürültü
ve stabilite sebeplerinden dolayı yukarıdaki
değerlerde 20pf’ın kullanılmasını tavsiye
ederiz.Küçük ya da başka harici kapasite
olmaksızın , osilasyon frekansı PCB işlem iz-
leme kapasitesi yada paket lead frame
kapasitesi gibi harici kapasitelerdeki
değişmelere bağlı olarak dinamik bir şekilde
farklılaşma gösterebilir.
Normal işlem değişimine bağlı
olarak bölümden bölüme RC frekans
farklılaşması için elektriksel tanımlar
bölümüne bakınız.Farklılaşma büyük R ve
Şekil 8-5 , seri rezonanslı osilatör devresini
küçük C için daha büyüktür. (kaçak akım
göstermektedir.Bu devre de kristalin ana fre-
farklılaşması RC frekansını R için daha fazla
kansının kullanılması için tasarlanmıştır.Đnver-
etkileyeceğinden).(Girişkapasitesininfarklılaş-
ter , 180° ‘lik faz değişiminigerçekleştirir.330
ması RC frekansındakinden daha büyük bir
kΩ’luk dirençler , kendi doğrusal düzlemlerin- etkiye sahip olduğundan).
deki inverterleri etkilemek negatif geri besle- 4’e bölünmüş , OSC2/CLKOUT
meyi sağlarlar. pininde bulunan osilatör frekansı test amaçlı
Şekil 8-5 : Seri Rezonantlı Harici Seri Osilatör yada diğer mantığı senkronize etmek için
Devresi kullanılabilir.(Dalga formunu görmek için
Şekil 3-2’ye bakınız)
Şekil 8-6 : RC Osilatör Modu

Not: Aygıt osilatörü RC modunda iken OSC1


pinini harici bir saatle sürmeyiniz.Yoksa cihaza zarar
verebilirsiniz.

30
8.3 Reset Bazı registerler herhangi bir reset
durumundan etkilenmezler , durumları bir
POR resetinde bilinmez ve herhangi başka bir
PIC16C84 , değişik reset türleri arasında resette de değiştirilmemiştir.Diğer registerlerin
farklılık gösterir; çoğu “reset durumu” şeklindeki POR , MCLR
• Power-on Reset (POR) yada normal işlem esnasındaki WDT reset’i ve
• MCLR normal işlem esnasında reset SLEEP esnasındaki MCLR resetinde resetlen-
• MCLR SLEEP esnasında reset miştirler.SLEEP esnasında WDT resetinden
• WDT Reset(normal işlem esnasında) onlar etkilenmez.Çünkü bu resetin normal işle-
• WDT Uyanma (SLEEP esnasında) timi yeniden başlattığı görülür.
Şekil 8-7 on-chip reset devresinin basitleşti- Tablo 8-3’de program sayacı(PC) ve
rilmiş bir blok diyagramını göstermektedir. STATUS registeri için gerekli reset koşulları-
Elekriki tanımlar MCLR pini için gerekli olan nın tanımları verilmiştir.Tablo 8-4 de tüm
pals genişliğini belirler. registerlerin reset durumlarının tam tanımları
verilmiş bulunmaktadır.
TO ve PD bitleri farklı reset durumlarında
(Bölüm 8-7) değişik biçimde ayarlanmış yada
temizlenmiştirler.Bu bitler yazılımda resetin
doğasının belirlenmesinde kullanılmıştır.

Şekil 8-7 : On-chip reset devresinin


Basitleştirilmiş blok diyagramı

31
Tablo 8-3 : Program Sayacı ve STATUS Registeri Đçin Reset Durumu

Kısaltma : u = Değişmemiş x = Bilinmeyen


Not: Uyanma gerçekleşdiği zaman kesme olur ve GIE biti kurulur , kesme vektörü ile PC yüklenir
(0004h).

Tablo 8-4 : Tüm Registerler Đçin Reset Durumları

Kısaltma : u =Değişmemiş x = Bilinmeyen - = Tamamlanmamışbit , “0” olarak okunur


q = Duruma bağımlı değer
Not 1: INTCON içindeki bir veya birçok bit etkileyecetir.(Wake-up nedeniyle)
2: Uyanma(wke-up) gerçekleştiği zaman kesme olur ve GIE biti kurulur,kesme vektörü ile PC
yüklenir(0004h).
3: Herbir özel durum için reset değerleri Tablo 8-3’de listelenmiştir.

30
8.4 Power-on Reset (POR) VDD çok yavaş arttığında TPWRT time-out’u
ve TOST time-out’unun VDD’nin son değerine
ulaşmadan zamanını doldurması olasıdır.Bu
VDD artışı gözlendiği zaman chip üstünde durumda(Şekil 8-12) haricibir Power-on Reset
bir Power-on Reset pulse’I yaratılır(1,2-1,7 V devresine ihtiyaç duyulabilir(Şekil 8-13).
aralığında ).POR’dan avantaj sağlayabilmek
için yalnızca MCLR pini direkt(yada bir direnç Şekil 8-8 : Harici Power-on Reset Devresi
aracılığıyla) olarak VDD’ye bağlanır.Bu , genel- (Düşük VDD güç artışı için)
likle Power-on Reset’i yaratmak için kullanı-
lan harici RC bileşenlerini elimine edecektir.
VDD için min. bir artış zamanı , bu özelliği işle-
tebilmek için ilişkilendirilmelidir.Detaylar için
elektriksel tanımlar bölümüne bakınız.
Cihaz normal operasyonuna başladığında
(Reset durumundan çıkar) cihaz işletim para-
metreleri(gerilim , frekans , ısı, …..) , işlemin
onaylanması amacıyla tanıtılmalıdır.Eğer bu Not 1: Harici Power-on Reset devresine , yal-
koşullarla buluşulmamışsa cihaz ,işletim nızca VDD power-up (Güç artımı) hızı
koşulları ile buluşana kadar resette tutulmalı- çok yavaş olduğu zaman gereksinim
dır. duyulur.
POR devresi , VDD azaldığında dahili bir
2: R<40 kΩ durumu , R üzerindeki geri-
reset üretmez. lim düşümünün 0,2V’u aşmaması a-
macı ile tavsiye edilmektedir(MCLR
8.5 Power-up Timer (PWRT) pini üzerindeki max. kaçak akım 5mA
Güç Artım Zamanlayıcısı ‘dir.).Daha geniş bir gerilim düşümü ,
MCLR pini üzerindeki VIH değerini
alacaktır.
Güç artım zamanlayıcısı (PWRT) , POR’ 3: R1=100Ω ‘dan 1 kΩ’a kadar olan du-
dan sabit 72ms’lik nominal time-out (TPWRT) rumu , MCLR’den harici kapasitör C’
sağlar(Şekil 8-9 , 8-10 , 8-11 , 8-12).Güç artım ye doğru herhangi bir akım akışını sı-
zamanlayıcısı , bir dahili RC osilatörü üzerin- nırlandıracaktır. (MCLR pininin ,ESD
den işletilir.PWRT aktif olduğu sürece chip re- yada EOS’e bağlı olarak bozulması
set durumunda tutulur.PWRT gecikmesi , (breakdown) olayında)
VDD’nin kabul edilebilir bir düzeyde artmasına
izin verir.(Mümkün olan istisnalar , şekil 8-12’
de gösterilmiştir.)
Konfigürasyon biti PWRTE , PWRT’yi
devreye sokup devreden çıkartabilir.(Şekil 8-1)
Güç artımı zaman gecikmesi TPWRT ; ısı ve
işlem farklılıklarına bağlı olarak chip’ten chip’
e değişecektir.Detaylar için DC parametreleri-
ne bakınız.

8.6 Osilatör Start-up Timer(OST)


Osilatör Başlangıç
Zamanlayıcısı

Osilatör başlangıç zamanlayıcısı (OST) ,


PWRT gecikmesi bittikten sonra 1024 osilatör
döngü gecikmesi’ni (OSC1 girişinden) sağlar
(Şekil 8-9 , 8-10 , 8-11 , 8-12).Bu , kristal osi-
latörü yada rezonatörün başlama ve dengelen-
me durumlarını teyit eder.
OST time-out (TOST) , yalnızca XT , LP ve
HS modlarında ve sadece Power-on ya da
SLEEP modundan uyanma durumlarında yü-
rürlüğe komur.

29
Şekil 8-9 : Güç Artımında(power-up) time-out Aralığı (MCLR VDD ‘ye Bağlı Değil) : 1.Durum

Şekil 8-10 : Güç Artımında time-out Aralığı (MCLR VDD’ye Bağlı Değil) : 2.Durum

29
Şekil 8-11 : Güç Artımında time-out Aralığı (MCLR VDD’ye Bağlı) : Hızlı VDD Artış Zamanı

Şekil 8-12 : Güç Artımında time-out Aralığı (MCLR VDD’ye Bağlı ) : Yavaş VDD Artış Zamanı

VDD çok yavaş yükseldiği zaman TPWRT time-out’u ve TOST time-out’u , VDD final değerine gelmeden
önce sona erirler.Bu örnekte V1≥VDD ise chip resete uygundur.

30
8.7 Time-Out Sırası Ve Güç 8.8 Brown-Out’da Reset
Düşümü(Power Down)
Durum Bitleri ( T0 / PD ) Brown-out , cihaz gücü(VDD) min. değeri-
ne indiği zaman(Sıfıra değil) ve tekrar geri
döndüğü zaman oluşan bir durumdur.Aygıt
Güç artımında (Şekil 8-9 , 8-10 , 8-11 , 8- brown-out olayında resetlenmelidir.
12) time-out sırası şu şekilde olur:Öncelikle Bir brown-out oluştuğunda PIC16C84 ci-
PWRT time-out’u , POR süresini doldurduktan hazlarını resetlemek için Şekil 8-13 ve Şekil 8-
sonra yürürlüğe konur.Daha sonra OST aktif 14’de gösterilen harici brown-out koruma dev-
hale geçirilir.Toplam time-out , osilatör konfi- releri inşa edilebilir.
gürasyonu ve PWRTE konfigürasyon biti
durumuna bağlı olarak değişim gösterir.Örne- Şekil 8-13 : Brown-out Koruması Devre-1
ğin , PWRT’nin işlemden çıkarıldığı RC mo-
dunda hiçbir zaman time-out olmayacaktır.

Tablo 8-5 : Çeşitli Konumlarda Time-Out


Osilatör Güç Artımı SLEEP’den
Konfigü- (Power-up) Çıkma
rasyonu PWRT PWRT (Wake-up)
Yetkili Yetkisiz
XT ,HS 72 ms + 1024 Tosc 1024 Tosc
,LP 1024 Tosc
RC 72 ms - -
Bu devrede;VDD ,VZ =Zener Gerilimi değerinin
Time-out’lar POR reset pals’inden oluşa- altına indiği zaman reset aktifleşir.
cağından ötürü , eğer MCLR olabildiğince dü-
şük bir uzunlukta tutulabilirse time-out’lar za- Şekil 8-14 : Brown-out Koruması Devre-2
man aşımına uğrayacaktır.Daha sonra MCLR’
nin yükseğe getirilmesi ile birlikte çok hızlı bir
şekilde yürürlüğe konmalar başlayacaktır(Şekil
8-9).Bu , birden fazla PIC16CXX cihazlarının
paralel çalıştırılması durumlarında test amaçlı
ve senkronizasyonla ilgili deneylerde kullanış-
lıdır.
Tablo 8-6’da T0 ve PD bitlerinin önemi
vurgulanmıştır.Tablo 8-3’de bazı özel reset ko-
şullarının listesi vardır.Ve Tablo 8-4’de de tüm Bu brown-out devresi daha az masraflıdır , bu-
registerler için reset koşulları listelenmiştir. nunla birlikte daha az doğrudur.VDD aşağıda
bulunan değerin altına düştüğünde Q1 transis-
Tablo 8-6 : STATUS Bitleri Ve Anlamları törü kesime gider.

TO PD Durum VDD*{ R1/(R1+R2)}=0,7 V


1 1 Power-on Reset
0 x POR ‘da T0 kurulur.
x 0 POR ‘da PD kurulur.
0 1 WDT Reset (Normal işletimde)
0 0 WDT Wake-up
1 1 MCLR Reset normal işletimde
1 0 SLEEP ya da SLEEP den kesme
uyanması esnasında MCLR Reset

29
8.9 Kesmeler
Not 1:
PIC16C84 , 4 tane kesme kaynağına sa- Bağımsız kesme flag bitleri , haberleşme mas-
hiptir: ke biti yada GIE bitinin durumuna bağlı ol-
• Harici kesme RB0/INT pini maksızın ayarlanırlar.
• TMR0 taşma kesmesi Not 2:
• PORTB değişim kesmeleri (RB7:RB4 pin- Küresel(global) kesme devreye alma biti(GIE)
leri) temizlenirken bir kesme oluşursa , GIE biti
• EEPROM yazma tamamlama kesmesi kasti olmadan kullanıcının kesme servis rutini
Kesme kontrol registeri (INTCON) , flag ile devreye alınabilir(RETFIE komutu).Bunun
bitlerindeki bireysel kesme taleplerini kayıt oluşmasına sebep olacak olaylar;
eder.Bu aynı zamanda bireysel ve küresel ke- 1. Bir kesme tanınırken GIE bitini bir komut
sim yürürlüğe koyma bitlerini de içerir. temizlerse
Küresel kesim yürülüğe konma biti , GIE 2. Kesme vektörüne program ulaşırsa ve
(INTCON<7>) tüm maskelenmiş kesmeleri kesme servis rutinini açarsa
devreye sokar(ayarlanır ise) yada tüm kesmele- 3. Kesme servis rutini , RETFIE komutunun
ri devreden çıkartır(temizlenmiş ise).Bağımsız açılması ile tamamlanır.Bu , GIE bitinin
kesmeler , INTCON Registerindeki kendi ha- ayarlanmasını (kesmeleri devreye koyma-
berleşme yürürlüğe koyma bitleri aracılığıyla sını) ve programın devreden çıkartma kes-
devreden çıkartılabilirler.GIE biti resette te- melerine sebep olan komuta geri
mizlenir. dönmesine neden olur.
“Kesmeden geri dönme” komutu RETFIE , Kesmelerin küresel olarak yetkisizleştirilmesi-
kesmeleri tekrar devreye alan GIE bitini ayar- ni sağlayana metod;
lar ayarlamaz rutin kesmeden çıkar. • GIE bitinin aşağıda gösterilen koddaki
RB0/INT pin kesmesi , RB port değişim gibi bir komutla temizlenmesini sağlayan
kesmesi ve TMR0 taşma kesim flagları metod:
INTCON registeri içersinde bulunurlar. LOOP BCF INTCON , GIE ; Tüm kesmeler
Bir kesmeye başvurulduğunda ; GIE biti , yetkisiz
BTFSC INTCON , GIE ; Tüm kesmeler
herhangi başka bir kesmeyi devreden çıkartır , Yetkisizmi?
geri dönme adresi depo üzerine itilir ve PC GOTO LOOP ; Hayır , tekrar dene
0004h ile yüklenir.Harici kesme olayları için ; Evet , program akışı
(RB0/INT pini yada PORTB değişim kesmesi devam
gibi) düşünülen ama henüz gerçekleşmemiş
kesmeler , 3 yada 4 komut döngüleri halinde
bulunurlar.
Tam olarak bağlantı , kesme olayının ger-
çekleşmesine bağlıdır(Şekil 8-16).Tasarlama
bir ve iki döngü komutları için aynı olacaktır.
Kesme servis rutinindeki kesme kaynağı , ke-
sim flag bitlerinde yapılan seçimle kararlaştırı-
lır.Kesme flag bitleri , sonsuz kesme taleple-
rinden korunmak için tekrar devreye alma
kesmelerinden önce yazılım içinden temizlen-
melidir.

Şekil 8-15 : Kesme Mantığı

30
Şekil 8-16 : INT pini Kesme Zamanlaması

Not 1: INTF flağı buaraya örnektir(her Q1’de)


2: “Tcy =Komut döngü zamanı”nda kesme gecikmesi=3-4Tcy’dir.Gecikme , aynı komutta(PC) tek
yada 2 komut döngüsüdür.
3: CLKOUT sadece RC modunda geçerlidir.
4: Min. INT pulse genişliği için AC özelliklere başvurunuz.
5: INTF , Q4-Q1 döngüleri esnasında herhagi bir zaman kurulmasıyla yetkilendirilir.

8.9.1 INT Kesmesi alma bitinin yerleştirilmesi/temizlenmesi


yoluyla devreye alınabilir yada devreden
RB0/INT pinindeki harici kesme köşe te- çıkartılabilir.
tiklemelidir.Ya INTEDG bitinin(OPTION<6>)
ayarlanmasında artış gösterir yada INTEDG Not 1: PORTB’nin açılmasında bir okuma
biti temizlendiğinde azalış gösterir.RB0/INT işlemi gerçekleşiyorken (Q2 döngüsünün
pini üzerinde geçerli bir köşe gözükürse , başlaması ) , I/O pini üzerinde bir deği-
INTF biti (INTCON<1>) kurulur.Bu kesme şim olması gerekiyorsa , RBIF kesme
INTE(INTCON<4>) kontrol bitinin temizlen- flag biti ayarlanamayabilir.
mesiyle devreden çıkartılabilir.INTF flag biti
bu kesmeyi devreden çıkartmadan kesme ser- 8.10 Kesmeler Esnasında Genel
vis rutini üzerinden yazılım içersinden temiz-
lenmelidir.INT kesmesi , işlemciyi SLEEP mo-
Durumun Saklanması
dundan uyandırabilir(Bölüm8.12).Bu yalnızca
INTE biti SLEEP önceliğine konduğu durum- Bir kesme esnasında sadece geri dönme
da gerçekleşir.GIE bitinin durumu , işlemcinin PC değeri depoda saklanır.Çoğunlukla , kulla-
wake-up’ı(uyanma) takiben kesme vektörüne nıcılar bir kesme esnasında anahtar register
uzanıp uzanmayacağına karar verir. değerlerini saklamak isterler(Örneğin W regis-
teri ve STATUS registeri).Bu , yazılımda yeri-
8.9.2 TMR0 Kesmesi ne getirilir.
Örnek 8-1’de STATUS ve W registerleri-
TMR0’daki bir taşma(FFh-00h) , T0IF nin değerleri saklanmış ve tekrar depolanmış
(INTCON<2>) flag bitini kuracaktır.Kesme , tır.Kullanıcı tanımlı registerler W_TEMP ve
T0IE (INTCON<5>) devreye alma bitinin yer- STATUS_TEMP , W ve STATUS register de-
leştirilmesi/temizlenmesi yoluyla devreye alı- ğerleri için geçici depolama yerleridir.
bilir yada devreden kaldırılabilir(Bölüm 6.0). Örenek 8-1’de aşağıdakiler yapılmaktadır:
a) W registerini depolar
b) STATUS registerini STATUS_TEMP’de
8.9.3 PORTB RB Kesmesi depolar
c) Kesme servis rutin kodunu açar
PORTB<7:4> üzerindeki bir giriş d) STATUS (ve Depo seçim biti) registerini
değişimi , RBIF (INTCON<0>) flag bitini yeniden depolar
kurar.Kesme , RBIE (INTCON<3>) devreye e) W registerini yeniden depola

29
Örnek 8-1 : RAM’deki STATUS ve W registerini Koruma

PUSH MOVWF W_TEMP ; W , TEMP registerine kopyalanır


SWAPF STATUS , W ; Swap durumu W içinde korunur
MOVWF STATUS _TEMP ; STATUS_TEMP registerinde durum
korunur
ISR : :
: ; Kesme servis rutini
: ; Gereken depo düzenlenmelidir
: ;
POP SWAPF STATUS_TEMP , W ; STATUS_TEMP registeri ve W için-
deki sonlandırılımış yere tekrar depola
MOVWF STATUS ; W’yi STATUS Registeri içini gönder
; (Orjinal kısımda depoyu kur)
SWAPF W_TEMP , F ; W_TEMP ve W_TEMP içinde sonlan-
mış yere tekrar depola
SWAPF W_TEMP , W ; W_TEMP ve W içinde sonlanmış yere
tekrar depola

8.11 Watchdog Timer (WDT)


lılıklarıyla değişir(DC tanımlar bölümüne ba-
kınız).Eğer daha uzun time-out peryodları ar-
Watchdog Timer , başka harici bileşenler zulanıyorsa 1:128’e kadarlık bölüm oranlı bir
talep etmeyen serbest çalışan on-chip RC osi- önölçücü ;WDT’ye, OPTION Registerine yazı-
latörüdür.RC osilatörü , OSC1/CLKIN pininin lım kontrolünün yazılması şartıyla atanabilir.
RC osilatöründen ayrılmıştır.Yani ; WDT , Böylece 2-3 sn’ye kadar olan time-out peryot-
OSC1/CLKIN ve OSC2/CLKOUT pinlerinde- ları gerçekleştirilebilir.
ki saat(clock) dursa bile çalışacaktır.Örneğin , CLRWDT ve SLEEP komutları WDT’yi
SLEEP komutu yürürlüğe konduğu durumlar- ve sonölçücüyü(Eğer WDT’ye atanırsa) temiz-
da buna rastlanır.Normal işletim esnasında bir ler ve time-out yada bir reset koşulunun oluş-
WDT time-out’u bir cihaz reset’i yaratacaktır. masından korur. STATUS Registeri içindeki
Eğer cihaz SLEEP modunda ise bir WDT T0 biti bir WDT time-out’una bağlı olarak te-
wake-up’ı(uyanma) cihazın uyanmasını ve mizlenecektir.
normal işetimine devam etmesine sebep
olur.WDT , konfigürasyon biti olan WDTE’nin 8.11.2 WDT Programlama Kabulleri
“0” olarak daimi bir şekilde programlanmasıy-
la yetkisizleştirilebilir.(Bölüm 8.1)
En kötü koşulların(VDD=min. , sıcaklık=
8.11.1 WDT Peryodu max. , max. WDT önölçücüsü) WDT time-
WDT , 18 msn’lik bir nominal time-out out’unun oluşmasından önce bir kaç saniye sü-
peryoduna sahiptir(önölçücü olmaksızın).Time receği de göz önüne alınmalıdır.
–out peryodları ısı , VDD ve kısmen işlem fark-
Şekil 8-17: WDT Blok Diyagramı

29
Tablo 8-7 : Watchdog Timer ile Registerlerin Birleştirilmesi Özeti

Kısaltma : x = Bilinmiyor.Taralı hücreler WDT tarafından kullanılmaz.

8.12 Güç Koruma Modu(SLEEP) 8.12.2 SLEEP Modundan Kalkış


(Wake-up)
Cihazdan güç kesilebilir (SLEEP) ve
daha sonrada çalıştırılabilir(SLEEP modundan Cihaz , SLEEP modundan aşağıdaki olay-
kalkma). ların birini kullanarak kalkabilir;
1. MCLR pini üzerindeki harici reset girişi
8.12.1 SLEEP 2. WDT kalkışı (Eğer WDT yetkilendirilirse)
3. RB0/INT pininden kesme , RB port deği-
mi yada data EEPROM yazma tamamla-
Güç koruma moduna SLEEP komutunun ması
yürürlüğe konması ile girilir. Çevresel fonksiyonlar , SLEEP esnasında
Yetki verildiği anda Watchdog Timer sili- kesmeler yaratamazlar.Çünkü hiçbir on-chip Q
nir(Zira çalışmasına devam eder) ,PD biti saati mevcut değildir.
(STATUS<3>) silinir , T0 biti (STATUS<4>) Đlk olay (MCLR Reseti)bir cihaz resetine
kurulur ve osilatör sürücüsü kapatılır.I/O port- sebep olacaktır.Diğer 2 olay da programın yü-
ları SLEEP komutu açılmadan önceki durum- rürlüğe konmasınınbir devamı olarak yorumla-
larını korurlar(Yüksek,düşük sürüm yada nır.T0 ve PD bitleri , bir cihaz resetinin sebebi-
yüksek empedans). yetinin belirlenmesinde kullanılabilir.PD
SLEEP modundaki en düşük akım tüketimi biti(güç artımında kurulur.) SLEEP yürürlüğe
için bütün I/O pinlerini ya VDD yada VSS de konduğu zaman temizlenir.T0 biti , WDT time
yerleştiriniz(I/O pinlerinden harici devre akımı –out oluşur ise(ve wake-up’a sebep olursa) te-
olmaksızın) ve harici saatleri yetkisizleştiriniz. mizlenir.
Seyyar girişler yüzünden oluşan açma kapama SLEEP komutu yürürlüğe konurken bir
akımlarını önlemek için , I/O pinleri (bunlar sonraki komut(PC+1) önceden alınır.Cihazın
yüksek empedans girişleridir) harici olarak bir kesme olayındayken uyanması için buna i-
yükseğe yada düşüğe çekilmelidirler.T0CKI lişkin yetki biti kurulmalıdır(yetki verilmeli-
girişi de VDD yada VSS‘de olmalıdır.PORTB dir).Kalkma(wake-up) , GIE bitinin durumuna
üzerindeki on-chip pull-up’larından(çekmeler) bakmaksızın ortaya çıkar.GIE biti silinirse(
gelen katılımlarda hesaba katılmalıdır. yetkisi kaldırılırsa) , cihaz SLEEP komutundan
MCLR pini lojik yüksek düzeyinde olmalı- sonraki komutuyla devam edecektir.GIE biti
dır(V1HMC).WDT time-out’u tarafından yaratı- kurulur ise cihaz , komutu SLEEP komutundan
lan bir RESET’in MCLR pinini düşüğe sürme- sonra yürürlüğe koyar ve kesme adresine doğ-
yeceği bilinmelidir. ru dallara ayrılır(004h).SLEEP komutunun
ardından gelen komutun yürülüğe konmasının
istenmediği durumlarda kullanıcı SLEEP ko-
mutundan sonra bir NOP’a sahip olmalıdır.

Şekil 8-18 : SLEEP Đle Kesme Arasında Kalkma(Wake-up)

30
Şekil 8-18 ile ilgili not:
1. XT , HS yada LP osilatör modu farzedilir.
2. TOST=1024TOSC(ölçek çizilmeden).Bu gecikme RC osilatör modu için yoktur.
3. GIE=”1” farzedilir.Bu olay wake-up’dan sonra , rutin kesmede işlemci atlamasında gerçekleşir.
Eğer GIE=”0” ise yerine koyma devam eder.
4. CLKOUT , bu osilatör modunda geçerli değildir.Fakat zamanlama başvurusu için burada
gösterilmiştir.
ID yerinin en az 4 tanımlı biti kullanıma açık-
tır.
8.12.3 Kesmeleri Kullanarak ROM cihazları için bu değerlere yalnızca
Kalkış(wake-up) ROM koduyla birlikte başvurulabilir.

Küresel kesmeler yetkisizleştirildiğinde 8.15 Devre Đçi Seri Programlama


(GIE silindiğinde) ve hem kesme yetki bitine
hem de kesme flag biti takımına herhangi bir PIC16C84 mikrokontrolörleri son uygula-
kesme kaynağı sahip ise aşağıdakiler oluşacak- ma devresindeyken seri olarak programlanabi-
tır. lirler.Bu , saat ve data için 2 hat ve güç , toprak
• Kesme , SLEEP komutunun açılmasından ve programlama gerilimi içinde ayrı 3 hat ile
önce oluşursa , SLEEP komutu bir NOP basitçe yapılabilir.
olarak tamamlanacaktır.Burada WDT ve Cihaz , RB6 ve RB7 pinlerinin düşük tutul-
WDT sonölçücüsü silinmeyecek , T0 biti masıyla bir program/doğrulanma moduna yer-
kurulmayacak ve PD bitleride silinmeye- leştirilebilir(MCLR pininin VIL ‘den VIIH’a art-
cektir. tırılması sürecinde).RB6 programlama saati ve
• Kesme , bir SLEEP komutunun yürürlüğe RB7 ‘de programlama hafızası olurlar.Hem
konması esnasında yada sonrasında mey- RB6 hem de RB7 bu modda Schmitt Trigger
dana geldiği takdirde cihaz hemen SLEEP girişleridir.
modundan kalkacaktır.SLEEP komutu Reset’ten sonra cihazı programlama/doğru-
kalkıştan önce bütünüyle yürürlüğe kona- lama moduna yerleştirmek için , program sa-
caktır.Burada WDT ve WDT sonölçücüsü yacı (PC) 00h yerini işaret eder.6 bit’lik komut
silinecektir , T0 biti kurulacaktır ve PD cihaza sağlanır.Ve daha sonrada 14 bit’lik
biti desilinecektir. program datası cihaza yada cihazdan temin
Flag bitleri , SLEEP komutunun yürürlüğe edilir(Yükle yada oku-yaz komutlarını kullana-
konmasından önce kontrol edilseler bile flag rak).
bitleri için SLEEP komutunun tamamlanma- Şekil 8-19 : Tipik Sistem Đçi Seri Programlama
sından önce kurulma ihtimali mevcuttur.Bir Bağlantısı
SLEEP komutunun yürürlüğe konup konmadı-
ğını kararlaştırmak için PD biti test edilir.Eğer
PD biti kurulmuşsa SLEEP komutu bir NOP
olarak yürürlüğe konmuş demektir.
WDT bitinin silindiğinin garanti altına a-
lınması için SLEEP komutundan önce bir
CLR/WDT komutu yürürlüğe konmalıdır.

8.13 Program Doğrulanması/Kod


Koruması

Kod koruma bitleri programlanmamışsa ,


on-chip program hafızası doğrulama amaçla-
rıyla okunabilir.
8.14 ID Yerleri ROM cihazlar için , program hafızası ve data
EEPROM hafızası okunabilir fakat sadece data
Kontrol sonucu yada diğer kod tanım sayı- EEPROM hafızası programlanabilir.
larının saklanması için 4 hafıza yeri (2000h-
2003h) ID yeri olarak tasarlanmıştır.Bu yerler ,
normal yürürlüğe konma esnasında işletilebilir
değildir.Lakin sadece program/doğrulanma es-
nasında okunabilir ve yazılabilirdir.Yalnızca

30
9.0 KOMUT SETĐ ÖZETĐ ∈ Kurma
Herbir PIC16C84 komutu ;Komut tipini Đtalics Kullanıcını sınırladığı değer(font courier)
belirleyen OPCODE ve komutların işletimini Komut seti , yüksek ortogonaldır ve üç te-
daha iyi belirleyen bir yada birden fazla mel katagori şeklinde gruplanmıştır:
OPERAND içinde bölünmüş 14 bit’lik kelime- • Byte-oriented
dir.Tablo 9-2’de byte-orient’leri , bit orient’leri
• Bit-oriented
, literal ve kontrol işlemleri şeklinde listelen-
• Literal ve kontrol
miş PIC16CXX komut seti özeti verilmiştir.
Test şartı doğru olmadıkça yada program
Tablo 9-1’de de opcode-alan tanımlamaları gö-
sayacı (PC) komut meydana geldiğinde değiş-
rülmektedir.
memişse tüm komutlar tek komur döngüsü ile
Byte-oriented komutları : “f ” , bir dosya re-
yerine getirilir.Bu yerine getirmeyi , 2. döngü-
gisteri işaretleyicisi ve “d ” de gidilecek yer
nün NOP’u yerine getirmesi ile 2 komut
işaretleyicisini temsil etmektedir.Dosya regis-
döngüsü sağlar.Herbir döngü , 4 osilatör per-
ter işaretleyicisi , komut tarafından hangi dos-
yodundan meydana gelir.Bu nedenle , 4 MHz
ya registerinin kullanılacağını belirler.
osilatör frekansı için normal komut yerine
Gidilecek yer işaretleyicisi , işlemin sonu-
cunun nereye yerleştirileceğini belirler.Eğer , getirme zamanı 1µs’dir.Bu komut yerine getir-
“d ” sıfır ise , sonuç W registerinin içine yer- me zamanı , program dalları için 2µs’dir.
leştirilecektir.”d “ 1 ise sonuç komut tarafından Tablo 9-2’deki liste , Microchip’s düzenle-
belirlenecek bir dosya registerinde yer bula- yicisi(MPASM) tarafından tanıtılmıştır.
caktır. Şekil 9-1 genel formatlı komutlar gösteril-
Bit-oriented komutları : “b” , işlem tarafın- miştir.
dan etkilenen bitlerin adedini seçen bir bit-alan Not : Gelecek PIC16CXX ürünleri ile uygun
işaretleyecisini temsil eder.”f “ , bitinin bulun- ileriye yönelik korumada OPTION ve TRIS
duğu dosyanın adresini temsil eder. komutları kullanılmaz.
Literal ve Kontrol Đşlemleri: “k “ , 8 veya 11 Tüm örneklerde kullanıcı heksadesimal
bit’lik sabit yada literal değeri temsil eder. sayıyla temsil edilen formatı takip eder.
0xhh (h heksadesimal dijiti belli eder)
Tablo 9-1 : OPCODE Alan Tanımları
Şekil 9-1 : Komutlar Đçin Genel Format
Alan Tanım
f Register dosya adresi(0*00’dan 0*0Fh ‘a Byte-oriented dosya register işlemleri
W Çalışma registeri(akümülatör) 13 8 7 6 0
b 8 bit’lik dosya registerinede bit adresi OPCODE d F(File#)
k Literal alan , değişmez data yada etiket
d= 0 Gidilecek yer W için
x Don’t care yeri(=0 yada1) d= 1 Gidilecek yer f için
Bu kurma , x=0 ile kod oluşturur. f = 7 bit’lik dosya register adresi
d Gidilecek yerin seçimi;d=0 : W’de mey-
dana gelmiş depo , d=1 :Dosya regiteri Bit-oriented dosya register işlemleri
f’de meydana gelmiş depo d=1 ihmal 13 10 9 7 6 0
label Etiket ismi OPCODE b(BIT#) f(FILE#)
TOS Büyük yığın
b = 3 bit’lik bit adresi
PC Program sayacı f = 7 bitlik dosya register adresi
PCLATH Program sayacı yüksek tutması
GIE Global kesme yetki biti Literal ve Kontrol Đşlemleri
WDT Watchdog timer/Counter
General
T0 Time-out biti 13 8 7 0
PD Güç azaltım biti OPCODE k(literal)
dest Gidilecek yer(ya W registeri yada özel
dosya register yeri) k = 8 bit’lik hazır değer
[] Options CALL ve GOTO komutları sadece
() Gerçek anlam 13 11 10 0
→ Atamak OPCODE k(literal)
<> Register dosya alanı
k= 11 bit’lik hazır değer

30
Tablo 9-2 : Komut Seti Özeti
Mnemonic , Description Cycles 14-Bit Opcode Status Notes
Operands Msb Lsb Affected
ADDWF f ,d Add W and f 1 00 0111 dfff ffff C , DC , Z 1,2
ANDWF f ,d AND W with f 1 00 0101 dfff ffff Z 1,2
CLRF F Clear f 1 00 0001 1fff ffff Z 2
CLRW - Clear W 1 00 0001 0000 0011 Z
COMF f ,d Complement f 1 00 1001 dfff ffff Z 1,2
DECF f ,d Decrement f 1 00 0011 dfff ffff Z 1,2
DECFSZ f ,d Decrement f , Skip if 0 1(2) 00 1011 dfff ffff None 1,2 ,3
INCF f ,d Increment f 1 00 1010 dfff ffff Z 1,2
INCFSZ f ,d Increment f , Skip if 0 1(2) 00 1111 dfff ffff None 1,2,3
IORWF f ,d Inclusive OR W with f 1 00 0100 dfff ffff Z 1,2
MOVF f ,d Move f 1 00 1000 dfff ffff Z 1,2
MOVWF f Move W to f 1 00 0000 1fff ffff None
NOP - No Operation 1 00 0000 0xx0 0000 None
RLF f ,d Rotate left f through carry 1 00 1101 dfff ffff C 1,2
RRF f ,d Rotate right f through carry 1 00 1100 dfff ffff C 1,2
SUBWF f ,d Subtract W from f 1 00 0010 dfff ffff C , DC , Z 1,2
SWAPF f ,d Swap nibbes in f 1 00 1110 dfff ffff None 1,2
XORWF f ,d Exclusive OR W with 1 00 0110 dfff ffff Z 1,2
BIT-ORIENTED FILE REGISTER OPERATIONS
BCF f,b Bit Clear f 1 01 00bb bfff ffff None 1,2
BSF f,b Bit Set f 1 01 01bb bfff ffff None 1,2
BTFSC f,b Bit Test f , Skip if Clear 1(2) 01 10bb bfff ffff None 3
BTFSS f,b Bit Test f , Skip if Set 1(2) 01 11bb bfff ffff None 3
LITERAL AND CONTROL OPERATIONS
ADDLW k Add literal and W 1 11 111x kkkk kkkk C , DC , Z
ANDLW k AND literal with W 1 11 1001 kkkk kkkk Z
CALL k Call subroutine 2 10 0kkk kkkk kkkk

CLRWDT - Clear Watchdog Timer 1 00 0000 0110 0100 T0 , PD

GOTO k Go to address 2 10 1kkk kkkk kkkk None


IORLW k Inclusive OR literal with W 1 11 1000 kkkk kkkk Z
MOVLW k Move literal to W 1 11 00xx kkkk kkkk None
RETFIE - Return from interrupt 2 00 0000 0000 1001 None
RETLW k Return with literal in W 2 11 01xx kkkk kkkk None
RETURN - Return from subroutine 2 00 0000 0000 1000 None
SLEEP - Go to standby mode 1 00 0000 0110 0011 T0 , PD
SUBLW k Subtract W from literal 1 11 110x kkkk kkkk C , DC , Z
XORLW k Exclusive OR literal with W 1 11 1010 kkkk kkkk Z
Not 1: I/O registeri , fonksiyonu kendi kendine değiştirdiği zaman (Örnek ; MOVF PORTB , 1 ) kulla-
lan değer , kendi pinlerindeki temsil edilen değer olur.Örnek ; Eğer tutulan data, girişten dolayı
pinlerin düzenlenmesi ve harici cihaz tarafından düşük sürülmesi için “1” ise bu data “0” ile geri
yazılmış olur.
2: Eğer bu komut TMR0 registerinde yerine getirilir ise (ve , uygulanabilir d=1) önölçücü , eğer
TMR0 düzenlenmişse temizlenmiş olmalıdır.
3: Eğer program sayacı (PC) değiştirilmiş yada şarta bağlı test doğru ise bu komut 2 döngüye ihti-
yaç duyar.Đkinci döngü NOP’u yerine getirir.

55
9.1 Komut Tanımları

ADDLW Yazım ve W’yu Ekle


Dizim: [label] ADDLW k
Operandlar: 0≤k≤255
Đşlem: (W)+k → (W)
Etkilenen Durum: C,DC,Z
Kodlama: 11 111x kkkk kkkk
Tanım: W registerının içeriği 8-bitlik
Yazımsal ‘k’ya eklenir ve W
Registerına geri konur.
Kelimeler: 1
Döngüler: 1
Örnek: ADDLW 0x15

Komuttan önce
W = 0x10
Komuttan sonra
W = 0x25

ADDWF W ve f’nin Ekle


Dizim: [label] ADDWF f,d
Operandlar: 0≤k≤127
d∈[0,1]
Đşlem: (W)+(f) → (dest)
Etkilenen Durum: C,DC,Z
Kodlama: 00 0111 dfff ffff
Tanım: W registerının içeriğini ‘f’ye
ekle.Eğer’d’ 0 ise, sonuç W
registerının içerisinde
depolanır.’d’ 1 ise,sonuç ‘f’
registerının içerisinde geri
saklanır.
Kelimeler: 1
Döngüler: 1
Örnek: ADDWF FSR, 0

Komuttan önce
W = 0x17
FSR= 0xC2
Komuttan sonra
W = 0xD9
FSR= 0xC2

56
ANDLW W ile birlikte yazımı ANDle
Dizim: [label] ANDLW k
Operandlar: 0≤k≤255
Đşlem: (W).AND.(k) → (W)
Etkilenen Durum: Z
Kodlama: 11 1001 kkkk kkkk
Tanım: W registerının içeriği 8-bitlik
Yazımsal ‘k’ ile AND’lenir.
Sonuç,W Registerına geri
konur.
Kelimeler: 1
Döngüler: 1
Örnek: ANDLW 0x5F

Komuttan önce
W = 0xA3
Komuttan sonra
W = 0x03

ANDWF W’yu f ile ANDle


Dizim: [label] ADDLW k
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (W).AND.(f) → (dest)
Etkilenen Durum: Z
Kodlama: 00 0101 dfff ffff
Tanım: W registerını ‘f’ registerı ile
ANDle.Eğer ‘d’ 0 ise, sonuç
W registerı içinde saklanır.
Eğer ‘d’ 1 ise, sonuç ‘f’
registerı içinde geri saklanır.
Kelimeler: 1
Döngüler: 1
Örnek: ANDWF FSR, 1

Komuttan önce
W = 0x17
FSR= 0xC2
Komuttan sonra
W = 0x17
FSR= 0x02

BCF Bit Clear f


Dizim: [label] BCF f,b

57
Operandlar: 0≤f≤127
Đşlem: 0→ (f<b>)
Etkilenen Durum: Yok
Kodlama: 01 00bb bfff ffff
Tanım: ‘f’ içindeki ‘b’ biti silinir.
Kelimeler: 1
Döngüler: 1
Örnek: BCF FLAG_REG,7

Komuttan önce
FLAG_REG = 0xC7
Komuttan sonra
FLAG_REG = 0x47

BSF Bit SET f


Dizim: [label] BSF f,b
Operandlar: 0≤f≤127
0≤b≤7
Đşlem: 1 → (f<b>)
Etkilenen Durum: Yok
Kodlama: 01 01bb bfff ffff
Tanım: ‘f’ registerı içindeki ‘b’ biti
set edilir.
Kelimeler: 1
Döngüler: 1
Örnek: BSF FLAG_REG, 7

Komuttan önce
FLAG_REG= 0x0A
Komuttan sonra
FLAG_REG= 0x0A

BTFSC f bit testi,Clear ise atla


Dizim: [label] BTFSC f,b
Operandlar: 0≤f≤127

58
0≤b≤7
Đşlem: F(<b>)=0 ise atla
Etkilenen Durum: Yok
Kodlama: 01 10bb bfff ffff
Tanım: Eğer ‘f’ registerı içindeki ‘b’
biti 0 ise,bir sonraki komut
atlanır.
Eğer ‘b’ biti 0 ise, mevcut
komutun açılması esnasında ,
bir sonraki komut getirilir.Ve
2 döngülük komut yapmak
yerine bir NOP açılır.
Kelimeler: 1
Döngüler: 1(2)

Örnek: HERE BTFSC FLAG,1


FALSE GOTO PROCESS_CODE
TRUE •


Komuttan önce
PC = address HERE
Komuttan sonra
if FLAG<1>=0,
PC=address TRUE
if FLAG<1>=1,
PC=address FALSE

BTFSS Bit Test f,Set ise atla


Dizim: [label] BTFSS f,b
Operandlar: 0≤f≤127
0≤b≤127

59
Đşlem: Eğer (f<b>)=1 ise atla
Etkilenen Durum: Yok
Kodlama: 01 11bb bfff ffff
Tanım: Eğer ‘f’ registerı içindeki ‘b’
biti 0 ise,bir sonraki komut
atlanır.
Eğer ‘b’ biti 0 ise, mevcut
komutun açılması esnasında ,
bir sonraki komut getirilir.Ve
2 döngülük komut yapmak
yerine bir NOP açılır
Kelimeler: 1
Döngüler: 1(2)
Örnek: HERE BTFSC FLAG,1
FALSE GOTO PROCESS_CODE
TRUE •


Komuttan önce
PC = address HERE
Komuttan sonra
if FLAG<1>=0,
PC=address FALSE
if FLAG<1>=1,
PC=address TRUE

CALL YARI-Rutin Çağır


(Subroutine Call)
Dizim: [label] CALL k
Operandlar: 0≤k≤2047
Đşlem: (PC)+1 → TOS,
k → (PC<10:0>),
(PCLATH<4:3>)→(PC<12:11>)
Etkilenen Durum: Yok
Kodlama: 10 0kkk kkkk kkkk
Tanım: Yarı-rutin çağır.Đlk olarak,
geri-dönüş adresi(PC+1)
depo üzerine itilir.Onbir bitlik
çabuk adres, PC bitleri<10:0>
içerisine yüklenir.PC’ın üst
bitleri, PCLATH’den
yüklenir.CALL, iki döngülük
bir komuttur.
Kelimeler: 1
Döngüler: 2
Örnek: HERE CALL THERE

Komuttan önce
PC = address HERE
Komuttan sonra
PC = address THERE
TOS = address HERE

CLRF Clear f
Dizim: [label] CLRF f
Operandlar: 0≤f≤127
Đşlem: 00h → (f)

60
1→Z
Etkilenen Durum: Z
Kodlama: 00 0001 1fff ffff
Tanım: ‘f’ registerının içeriği silinir
ve Z biti kurulur.(set)
Kelimeler: 1
Döngüler: 1
Örnek: CLRF FLAG_REG

Komuttan önce
FLAG_REG = 0x5A
Komuttan sonra
FLAG_REG = 0x00
Z =1

CLRW W Registerını Sil(Clear)


Dizim: [label] CLRW
Operandlar: Yok
Đşlem: 00h → (W)
1→Z
Etkilenen Durum: Z
Kodlama: 00 0001 0000 0011
Tanım: W registerı silinir.Sıfır biti set
edilir.
Kelimeler: 1
Döngüler: 1
Örnek: CLRW

Komuttan önce
W = 0x5A
Komuttan sonra
W = 0x00
Z=1

CLRWDT Watchdog Timer’ı Sil


Dizim: [label] CLRWDT
Operandlar: Yok
Đşlem: 00h → WDT
0 → WDT ön-ölçücüsü

61
1 → T0
1 → PD
Etkilenen Durum: C,DC,Z
Kodlama: 00 0000 0110 0100
Tanım: CLRWDT komutu,Watchdog
Timer’ı reset eder.Bu
komut,aynı zamanda
WDT’nin önölçücüsünün de
resetlenmesine sebep olur.T0
ve PD durum bitleri de set
edilir.
Kelimeler: 1
Döngüler: 1
Örnek: CLRWDT

Komuttan önce
WDT sayacı = ?
Komuttan sonra
WDT sayacı = 0x00
WDT ön-ölçücüsü = 0
T0 = 1
PD = 1

COMF F’i tümle


Dizim: [label] COMF f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f) → (dest)
Etkilenen Durum: Z
Kodlama: 00 1001 dfff ffff
Tanım: ‘f’ registerının içeriği
tümlenmiştir.Eğer’d’ 0 ise,
sonuç W registerının
içerisinde depolanır.’d’ 1
ise,sonuç ‘f’ registerının
içerisinde geri saklanır.
Kelimeler: 1
Döngüler: 1
Örnek: COMF REG1,0

Komuttan önce
REG1= 0x13
Komuttan sonra
REG1= 0x13
W= 0xEC

DECF Azalan f
Dizim: [label] DECF f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f) – 1 → (dest)
Etkilenen Durum: Z
Kodlama: 00 0011 dfff ffff

62
Tanım: Azalan ‘f’ registerı.Eğer d ‘0’
ise,sonuç W registerında geri
saklanır.
Kelimeler: 1
Döngüler: 1
Örnek: DECF CNT, 1

Komuttan önce
CNT = 0x01
Z=0
Komuttan sonra
CNT = 0x00
Z=1

DECFSZ Azalan f, 0 ise atla


Dizim: [label] DECFSZ f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f)–1→ (dest);sonuç=0 ise atla
Etkilenen Durum: Yok
Kodlama: 00 1011 dfff ffff
Tanım: ‘f’ registerının içeriği
azaltılmıştır.Eğer’d’ 0 ise,
sonuç W registerının
içerisinde depolanır.’d’ 1
ise,sonuç ‘f’ registerının
içerisinde geri saklanır.Sonuç
0 ise,bir sonraki komut (bu
zaten tutulmuştur) atılır.
Kelimeler: 1
Döngüler: 1(2)
Örnek: HERE DECFSZ CNT,1
GOTO LOOP
CONTINUE •


Komuttan önce
PC = address HERE
Komuttan sonra
CNT= CNT-1
if CNT= 0
PC= address CONTINUE
if CNT≠0,
PC=address HERE+1

GOTO Adres’e git


Dizim: [label] GOTO k
Operandlar: 0≤k≤2047
Đşlem: k → (PC<10:0>)
(PCLATH <4:3>)→
(PC<12:11>)
Etkilenen Durum: Yok
Kodlama: 10 1kkk kkkk kkkk

63
Tanım: GOTO,koşulsal bir kol
değildir.11-bit’lik acele değer,
PC bitlerinin<10:0> içerisine
yüklenir.PC’ın üst bitleri,
PCLATH<4:3>’ten
yüklenir.GOTO, iki döngülük
bir komuttur.
Kelimeler: 1
Döngüler: 2
Örnek: GOTO THERE
Komuttan sonra
PC = Address THERE

INCF Artan F
Dizim: [label] INCF f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f) + 1→ (dest)
Etkilenen Durum: Z
Kodlama: 00 1010 dfff ffff
Tanım: ‘f’ registerının içeriği
tümlenmiştir.Eğer’d’ 0 ise,
sonuç W registerının
içerisinde depolanır.’d’ 1
ise,sonuç ‘f’ registerının
içerisinde geri saklanır.
Kelimeler: 1
Döngüler: 1
Örnek: INCF CNT,1

Komuttan önce
CNT= 0xFF
Z =0
Komuttan sonra
CNT= 0x00
Z= 0xEC
INCFSZ Artan f , 0 ise atla
Dizim: [label] INCFSZ f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f)+1→(dest),sonuç=0 ise atla
Etkilenen Durum: Yok
Kodlama: 00 1111 dfff ffff
Tanım: ‘f’ registerının içeriği
arttırılmıştır.Eğer’d’ 0 ise,

64
sonuç W registerının
içerisinde depolanır.’d’ 1
ise,sonuç ‘f’ registerının
içerisinde geri saklanır.Sonuç
0 ise,bir sonraki komut (bu
zaten tutulmuştur) atılır.Đki
döngülük bir komut yapma
yerine, bir NOP açılır.
Kelimeler: 1
Döngüler: 1(2)
Örnek: HERE INCFSZ CNT,
1
GOTO LOOP
CONTINUE •


Komuttan önce
PC = addressHERE
Komuttan sonra
CNT = CNT+1
Eğer CNT= 0 ise,
PC= addressCONTINUE
Eğer CNT≠0 ise,
PC=addressHERE +1

IORLW W ile birlikte kapsayan OR


yazımı
Dizim: [label] IORLW k
Operandlar: 0≤k≤255
Đşlem: (W).OR.(k)→ (W)
Etkilenen Durum: Z
Kodlama: 11 1000 kkkk kkkk
Tanım: W registerının içeriği 8-bitlik
yazımsal ‘k’ ile OR’lanır.
Sonuç,W Registerına geri
konur.
Kelimeler: 1
Döngüler: 1
Örnek: IORLW 0x35

Komuttan önce
W= 0x9A
Z =0
Komuttan sonra
W= 0xBF

IORWF f ile W’nun Or şelinde


kapsanması
Dizim: [label] IORWF f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (W).OR.(f) → (W)
Etkilenen Durum: Z
Kodlama: 00 0100 dfff ffff
Tanım: W registerını, ‘f’ registerı ile
OR şeklinde kapsa.Eğer d ‘0’

65
ise,sonuç W registerında
saklanır. Eğer d ‘1’ ise,sonuç
‘f’ registerında geri saklanır.
Kelimeler: 1
Döngüler: 1
Örnek: IORWF RESULT, 0

Komuttan önce
RESULT = 0x13
W = 0x91
Komuttan sonra
RESULT = 0x13
W = 0x93

MOVLW Yazım’ı W’ya yolla


Dizim: [label] MOVLW k
Operandlar: 0≤k≤255
Đşlem: k → (W)
Etkilenen Durum: Yok
Kodlama: 11 00XX kkkk kkkk
Tanım: 8-bitlik yazımsal ‘k’, W
registerına yüklenir.Don’t
care’ler, O’lar şeklinde
toplanacaktır.
Kelimeler: 1
Döngüler: 1
Örnek: MÖVLW 0x5A

Komuttan sonra
W= 0x5A

MOVF f’yi kaydır


Dizim: [label] MOVF f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f) → (dest)
Etkilenen Durum: Z
Kodlama: 00 1000 dfff ffff
Tanım: ‘f’ registerının içeriği
gidilecek yere kaydırılmıştır.
Eğer’d’ 0 ise, gidilecek yer W
registerıdır.d=1 ise,gidilecek

66
yer ‘f’ file registerının
kendisidir.d=1 durumu, status
flag’I Z etkilendiğinden
dolayı bir file registerını test
etmekte kullanılabilir.
Kelimeler: 1
Döngüler: 1
Örnek: MOVF FSR, 0

Komuttan sonra
W=FSR registerındaki değer

MOVWF W’yu f’ye kaydır


Dizim: [label] MOVWF f
Operandlar: 0≤f≤127
Đşlem: (W)→ (f)
Etkilenen Durum: Yok
Kodlama: 00 0000 1fff ffff
Tanım: Datayı W registerından ‘f’
registerına kaydır.
Kelimeler: 1
Döngüler: 1
Örnek: MOVWF OPTION

Komuttan önce
OPTION = 0xFF
W = 0x4F
Komuttan sonra
OPTION = 0x4F
W = 0x4F

NOP Đşlem yok


Dizim: [label] NOP
Operandlar: Yok
Đşlem: Yok
Etkilenen Durum: Yok
Kodlama: 00 0000 0xx0 0000
Tanım: Yok
Kelimeler: 1
Döngüler: 1
Örnek: NOP

67
SEÇENEK Option Registerını Yükle
Dizim: [label] OPTION
Operandlar: Yok
Đşlem: (W) → OPTION
Etkilenen Durum: Yok
Kodlama: 00 0000 0110 0010
Tanım: W registerının içeriği,
OPTION registerı içinde
yüklenmiştir.Bu komut,
PIC16C5X ürünleri ile kod
uyumluluğu için sağlanmıştır.
OPTION, yazılabilir/
okunabilir bir register
olduğundan dolayı, kullanıcı
bu registerı direkt
adresliyebilir.
Kelimeler: 1
Döngüler: 1
Not: Đleriye yönelik uyumluluğu
sağlamak amacıyla ,gelişen
PIC16CXX ürünleriyle bu
komutu kullanmayınız.

RETFIE Kesmeden geri dön


Dizim: [label] RETFIE
Operandlar: Yok
Đşlem: TOS → (PC)
1 → GIE
Etkilenen Durum: Yok
Kodlama: 00 0000 0000 1001
Tanım: Yığın, açılmıştır ve yığının
tepesi (TOS) PC’ye
yüklenmiştir.Kesmeler,
küresel kesme enable bitinin
konmasıyla enable
edilirler.Bu, iki döngülük bir
komuttur.

68
Kelimeler: 1
Döngüler: 2
Örnek: RETFIE

Komuttan sonra
PC = TOS
GIE = 1

RETLW Yazımı, W’a geri döndür


Dizim: [label] RETLW k
Operandlar: 0≤k≤255
Đşlem: (k) → (W)
TOS → (PC)
Etkilenen Durum: Yok
Kodlama: 11 01xx kkkk kkkk
Tanım: W registerı sekiz-bit’lik
yazımsal ‘k’ ile yüklüdür.
Program sayacı yığının
tepesinden yüklüdür.Bu, iki
döngülük bir komuttur.
Kelimeler: 1
Döngüler: 2
Örnek: CALL TABLE ;W contains
Table
;offset value
• ;W now has
• value

TABLE ADDWF PC ;W=offset
RETLW k1 ;Begin table
RETLW k2 ;



RETLW kn ;End of table

Komuttan önce
W = 0x07
Komuttan sonra
W = k7’nin değeri

RETURN Yarı-rutin’den geri dön


Dizim: [label] RETURN
Operandlar: Yok
Đşlem: TOS → (PC)
Etkilenen Durum: Yok
Kodlama: 00 0000 0000 0000
Tanım: Yarı rutinden geri dönYığın,
açılmıştır ve yığının tepesi
(TOS) PC’ye yüklenmiştir.
Bu,iki döngülük bir komuttur.
Kelimeler: 1
Döngüler: 2
Örnek: RETURN

Komuttan sonra

69
PC= TOS

RLF f’i Carry aracılığıyla sola


döndür
Dizim: [label] RLF f,d
Operandlar: 0≤f≤127
d∈ [0,1]
Đşlem: Aşağıdaki tanıma bakınız.
Etkilenen Durum: C
Kodlama: 00 1101 dfff ffff
Tanım: f registerının içeriği Carry
flag’i içinden bir bit sola
kaydırılır.Eğer ‘d’ 0 ise, sonuç
W registerının içerisine
yerleştrilir.Eğer ‘d’ 1 ise,
sonuç ‘f’ registerının içerisnde
geri depolanır.
C f Registerı

Kelimeler: 1
Döngüler: 1
Örnek: RLF REG1,0
Komuttan önce
REG1 = 1110 0110
C =0
Komuttan sonra
REG1 = 1110 0110
W = 1100 1100
C =1
RRF f ’i Carry aracılığıyla sağa
döndür
Dizim: [label] RLF f,d
Operandlar: 0≤f≤127
d∈ [0,1]
Đşlem: Aşağıdaki tanıma bakınız.
Etkilenen Durum: C
Kodlama: 00 1100 dfff ffff
Tanım: f registerının içeriği Carry
flag’i içinden bir bit sağa
kaydırılır.Eğer ‘d’ 0 ise, sonuç
W registerının içerisine
yerleştrilir.Eğer ‘d’ 1 ise,
sonuç ‘f’ registerının içerisnde
geri depolanır.
C f Registerı

70
Kelimeler: 1
Döngüler: 1
Örnek: RRF REG1,0

Komuttan önce
REG1 = 1110 0110
C =0
Komuttan sonra
REG1 = 1110 0110
W = 0111 0011
C =1

SLEEP Standby moduna gir


Dizim: [label] SLEEP
Operandlar: Yok
Đşlem: 00h → WDT
0 → WDT ön-ölçücüsü
1 → TO

0 → PD
Etkilenen Durum: TO , PD
Kodlama: 00 0000 0110 0011
Tanım: Güç yok durum biti (PD) clear
edilir.Time-out durum biti
(TO)ise yerleştirilir.Watchdog
zamanlayıcısı ve önölçücü
silinir.Đşlemci,SLEEP
moduna,ozilatr durdurulduğu
zaman girer.
Kelimeler: 1
Döngüler: 1
Örnek: SLEEP

SUBLW W’yu yazımdan çıkartmak


Dizim: [label] SUBLW k
Operandlar: 0≤k≤255
Đşlem: k – (W) → (W)
Etkilenen Durum: C,DC,Z
Kodlama: 11 110x kkkk kkkk
Tanım: W registerı(2’nin tümleyeni
metodu ile) sekiz bitlik ‘k’
yazımından çıkartılır. Sonuç,
W registerı içerisine
yerleştirilir.
Kelimeler: 1
Döngüler: 1
Örnek 1: SUBLW 0x02

Komuttan önce
W=1

71
C=1
Komuttan sonra
W=1
Örnek 2: C = 1,sonuç pozitif
Komuttan önce
W=2
C =?
Komuttan sonra
W=0
C = 1,sonuç sıfır
Örnek 3: Komuttan önce
W=3
C =?
Komuttan sonra
W = FF
C = 0,sonuç negatif

SUBWF W’yu f’den çıkartmak


Dizim: [label] SUBWF f,d
Operandlar: 0≤f≤127
d∈[0,1]
Đşlem: (f) – (W) → (dest)
Etkilenen Durum: C,DC,Z
Kodlama: 00 0010 dfff ffff
Tanım: W registerı(2’nin tümleyeni
metodu ile) ‘f’ registerından
çıkartılır.’d’ 0 ise, sonuç ‘f’
registerı içerisinde geri
saklanır.
Kelimeler: 1
Döngüler: 1
Örnek 1: SUBWF REG1,1

Komuttan önce
REG1 = 3

72
W=2
C=?
Komuttan sonra
REG1 = 1
W=2
C = 1,sonuç pozitif
Örnek 2: Komuttan önce
REG1 = 2
W=2
C =?
Komuttan sonra
REG1 = 0
W=2
Örnek 3: C = 1,sonuç sıfır
Komuttan önce
REG1 = 1
W=2
C =?
Komuttan sonra
REG1 = FF
W=2
C = 0,sonuç negatif

SWAPF f ’i takas et
Dizim: [label] SWAPF f,d
Operandlar: 0≤k≤255
d∈[0,1]
Đşlem: (f<3:0>)→(dest<7:4>),
(f<7:4>)→(dest<3:0>)
Etkilenen Durum: Yok
Kodlama: 00 1110 dfff ffff
Tanım: ‘f’registerının yüksek ve alçak
baytları dönüştürülür.’d’ 0
ise,sonuç W registerı içine
yerleştirilir.Eğer ‘d’ 1
ise,sonuç ‘f’ registerı içine
yerleştirilir.
Kelimeler: 1
Döngüler: 1
Örnek: SWAP F REG, 0

Komuttan önce

73
REG1 = 0xA5
Komuttan sonra
REG1 = 0xA5
REG1 = 0x5A

TRIS TRIS Registerını Yükle


Dizim: [label] TRIS
Operandlar: 5≤f≤7
Đşlem: (W) → TRIS register (f)
Etkilenen Durum: Yok
Kodlama: 00 0000 0110 0fff
Tanım: Bu komut, PIC16C5X
ürünleri ile kod uyumluluğu
için sağlanmıştır.TRIS
registerları, yazılabilir/
okunabilir registerlar
olduklarından dolayı,
kullanıcı bu registerları direkt
adresliyebilir.

Kelimeler: 1
Döngüler: 1
Not: Đleriye yönelik uyumluluğu
sağlamak amacıyla ,gelişen
PIC16CXX ürünleriyle bu
komutu kullanmayınız.

XORLW W ile EXOR yazımı


Dizim: [label] XORLW k
Operandlar: 0≤k≤255
Đşlem: (W) .XOR. k → (W)
Etkilenen Durum: Z
Kodlama: 11 1010 kkkk kkkk
Tanım: W registerının içeriği, sekiz
bitlik ‘k’ yazımı ile
EXORlanır. Sonuç W
registerı içine yerleştirilir.
Kelimeler: 1
Döngüler: 1
Örnek: XORLW 0xAF

Komuttan önce
W = 0xB5
Komuttan sonra
W = 0x1A

74
XORWF f ile W’nun EXORlanması
Dizim: [label] XORWF f,d
Operandlar: 0≤k≤127
d∈[0,1]
Đşlem: (W) .XOR. (f) → (dest)
Etkilenen Durum: Z
Kodlama: 00 0110 dfff ffff
Tanım: W registerının içeriği, ‘f’
registerı ile EXORlanır.Eğer
‘d’ 0 ise, sonuç W registerı
içinde depolanır.Eğer ‘d’ 1 ise
,sonuç ‘f’ registerı içine geri
yerleştirilir.
Kelimeler: 1
Döngüler: 1
Örnek: XORWF REG 1

Komuttan önce
REG = 0xAF
W = 0xB5
Komuttan sonra
REG = 0x1A
W = 0xB5

75
10.0 PIC16C84 ĐÇĐN ELEKTRĐKSEL KARAKTERĐSTĐKLER

Kesin Max. Sınırlar ↑

Çevreleyen ısı değeri ……….. -55 °C + 125 °C


Depolanan sıcaklık ……….. -65 °C + 150 °C
VSS ile ilgili olarak VDD voltajı ……….. -0.3 + 7.5 V
VSS ile ilgili olarak MCLR voltajı (2) ……….. -0.3 + 14 V
VSS ile ilgili olarak diğer tüm pinlerdeki voltaj ……….. -0.6 V (VDD +0.6 V)
Dağıtılan toplam güç (1) ……….. 800 mW
VSS pini çıkışı max. akımı ……….. 150 mA
VDD pini giriş max. akımı ……….. 100 mA
Giriş tutma akımı , IIK (V1<0 ya da V1>VDD) ……….. ± 20 mA
Çıkış tutma akımı , IOK(VO<0 ya da VO>VDD) ……….. ± 20 mA
Herhangi bir I/O pini tarafından yıkılan(sunk) max. çıkış akımı ……….. 25 mA
Herhangi bir I/O pini tarafından kaynaklanan max. çıkış akımı ……….. 20 mA
PORTA tarafından yıkılan(sunk) max. akım ……….. 80 mA
PORTA tarafından kaynaklanan max. akım ……….. 50 mA
PORTB tarafından yıkılan(sunk) max. akım ……….. 150 mA
PORTB tarafından kaynaklanan max. akım ……….. 100 mA

Not 1: Güçkaybı aşağıdaki gibi hesaplanır :


Pdis=VDD∗{IDD-ΣIOH}+Σ{(VDD-VOH)∗IOH}+Σ(VOl∗IOL)
Not 2: MCLR pinindeki 80 mA’den büyük akımları meydana getiren VSS’in altındaki gerilim darbeleri,
tutmaya neden olur.Böylece , MCLR pinine “düşük” bir düzey uygulanırken bu pini direkt ola-
rak VSS’e çekmek yerine 50-100Ω’lk bir seri direnç kullanılmalıdır.

↑ Not : Aşağıda listelenen “kesin max. değerler” altındaki zorlamalar cihaza daimi zarar verebilir.Bu ,
yukarıdaki işlem listelerinde ifade edilen özelliklerde belirtilmemiş olan , cihazın yalnız başına
zorlama değeri ve fonksiyonel işletimidir.Genişletilmiş peryodlarda max. oran koşullarına ulaş-
mak cihazın güvenirliliğini etkileyebilir.

Tablo 10-1 : Frekans Đşlemi ve Osilatör Konfigürasyonu Đçin Referans Cihaz Şartları

Not 1: Taranmış kısımlarda , fonksiyonluluk için test edilmiş osilatör seçimleri belirtilmiştir.Lakin
bunlar , min./max. özelliklerini bildirmektedir.Đstenilen özellikleri sağlayan cihaz tipinin kulla-
nıcı tarafından seçilmesi tavsiye edilir.

76
10.1 DC KARAKTERĐSTĐKLER : PIC16C84-04 (Ticari , Endüstriyel)
PIC16C84-10 (Ticari , Endüstriyel)

* Bu parametreler karakterize edilmiş fakat test edilmemiştir.


↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

Not 1: RAM datası kaybedilmeden SLEEP modunda VDD’nin azaltılması için bu limit geçerli-
dir.
2: Kaynak akımı esas olarak işletme voltajı ve frekansının bir fonksiyonudur.I/O pininin
yüklenmesi ve anahtarlama değeri , osilatör tipi , dahili kod açma örneği ve ısı gibi diğer
etkenler de akım tüketimine tesir ederler.Aktif işletim modundaki tüm IDD ölçüleri için
test koşulları ;
OSC1=Kenardan kenara harici karedalga ; tüm I/O pinleri tetiklenmiş , değerleri VDD’ye
çekilmiştir , T0CKI=VDD
MCLR=VDD;WDT yetkili/yetkisiz şeklinde belirtilmiştir.
3: SLEEP modundaki güç azaltım (Power down) akımı osilatör tipine bağlı değildir.Güç
azaltım akımı , SLEEP modu çalışma bölgesinde , tüm yüksek empedans durumundaki I/O
pinlerinde ölçülür ve VDD ya da VSS’e bağlanır.
4: RC osilatör konfigürasyonu için , Rext üzerinden geçen akımı içermez.Dirençden geçen a-
kım kΩ mertebesindeki Rext ile IR=VDD/2Rext formülünden hesaplanır.

77
10.2 DC KARAKTERĐSTĐKLER : PIC16LC84-04 (Ticari , Endüstriyel)

* Bu parametreler karakterize edilmiş fakat test edilmemiştir.


↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

1: RAM datası kaybedilmeden SLEEP modunda VDD’nin azaltılması için bu limit geçerli-
Not
dir.
2: Kaynak akımı esas olarak işletme voltajı ve frekansının bir fonksiyonudur.I/O pininin
yüklenmesi ve anahtarlama değeri , osilatör tipi , dahili kod açma örneği ve ısı gibi diğer
etkenler de akım tüketimine tesir ederler.Aktif işletim modundaki tüm IDD ölçüleri için
test koşulları ;
OSC1=Kenardan kenara harici karedalga ; tüm I/O pinleri tetiklenmiş , değerleri VDD’ye
çekilmiştir , T0CKI=VDD
MCLR=VDD;WDT yetkili/yetkisiz şeklinde belirtilmiştir.
3: SLEEP modundaki güç azaltım (Power down) akımı osilatör tipine bağlı değildir.Güç
azaltım akımı , SLEEP modu çalışma bölgesinde , tüm yüksek empedans durumundaki I/O
pinlerinde ölçülür ve VDD ya da VSS’e bağlanır.
4: RC osilatör konfigürasyonu için , Rext üzerinden geçen akımı içermez.Dirençden geçen a-
kım kΩ mertebesindeki Rext ile IR=VDD/2Rext formülünden hesaplanır.

78
10.3 DC KARAKTERĐSTĐKLER : PIC16C84-04 (Ticari , Endüstriyel)
PIC16C84-10 (Ticari , Endüstriyel)
PIC16LC84-04 (Ticari , Endütriyel)

* Bu parametreler karakterize edilmiş fakat test edilmemiştir.


↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

1: RC osilatör konfigürasyonundaki OSC1/CLKIN pini bir Schmitt Trigger girişidir.


Not
PIC16C84’ün RC modunda harici saat ile sürülmesi tavsiye edilmemektedir.
2: MCLR pini üzerindeki kısadevre akımı , bütünüyle , uygulanan voltaj seviyesine bağlıdır.
Belirlenen düzeyler normal işletme koşullarını temsil etmektedir.Daha yüksek kaçak akım-
ları , farklı giriş gerilimlerinde ölçülebilir.
3: Negatif akımın pinden dışarıya doğru geldiği kabul edilmektedir.
4: Kullanıcı , 2 özellikten daha iyi olanını kullanabilir.

79
10.4 DC KARAKTERĐSTĐKLER : PIC16C84-04 (Ticari , Endüstriyel)
PIC16C84-10 (Ticari , Endüstriyel)
PIC16LC84-04 (Ticari , Endütriyel)

↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

1: Kullanıcı , kesmeleri kullanmalıdır ya da yazma döngüsünün tamamlandığını sağlamak


Not
için EEIF ya da WR bitlerinden birini seçmelidir.

80
Tablo 10-2 : Zamanlama Parametrelerine Bakış

Zamanlama parametre sembolleri , aşağıda verilen formatlar takip edilerek yaratılmıştır.


1. TppS2ppS
2. TppS
T
F Frequencey T Time
Düşük durum(lowercase) sembolleri(pp) ve anlamları
pp . . .
2 to os , osc OSC1
ck CLKOUT ost oscillator start-up timer
cy cycle time pwrt power-up timer
io I/O port rbt RB∗pins
inp INT pin t0 T0CKI
mc MCLR wdt watchdog timer
Yüksek durum(uppercase) sembolleri ve anlamları
. . .
S
F Fall P Period
H High R Rise
I Invalid(hi-empedance) V Valid
L Low Z Hi-empedance

Şekil 10-1 : Ölçüm Parametre Bilgileri

Tüm zamanlar , şekilde gösterilen yüksek ve düşük ölçme noktaları arasında ölçülmüştür.

Şekil 10-2 : Yükleme Durumları

81
10.5 Zamanlama Diyagramları Ve Özellikleri

Şekil 10-3 : Harici Saat Zamanlaması

Tablo 10-3 : Harici Saat Zamanlaması Đhtiyaçları

* Bu parametreler karakterize edilmiş fakat test edilmemiştir.


↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

1: Komut döngü peryodu (Tcy) , giriş osilatör zamanı taban peryodunun 4 katına eşittir.Belir-
Not
lenmiş değerlerin tümü , cihaz çalışma kodlu işletim koşullarının altındaki belirlenmiş osi-
latörün tanımlama datasına dayanmaktadır.Belirlenmiş bu sınırların açılması osilatörün ka-
rarsız çalışmasında ve/veya beklenen akım tüketimindeki daha yüksek değerlerde meydana
gelebilir.Bütün cihazlar , “min.” değerlerde çalıştırabilmek için OSC1 pinine uygulanan ha-
rici bir saat ile test edilir.Harici saat girişi kullanıdığında “max.” döngü zaman limiti tüm
cihazlar için “DC”dir(saat olmadan).

82
Şekil 10-4 : CLKOUT ve I/O Zamanlaması

Bütün testler belirlenmiş kapasitif yüklerle yapılmalıdır.

Tablo 10-4 : CLKOUT ve I/O Zamanlama Đhtiyaçları

* Bu parametreler karakterize edilmiş fakat test edilmemiştir.


↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

Not
1: Ölçüler , CLKOUT çıkışının 4∗Tosc olduğu yerlerde ve RC modunda iken alınmıştır.

83
Şekil 10-5 : Reset , Watchdog Timer , Osilatör Başlama Zamanı Ve Güç Artımı Zamanlayıcıları

Tablo 10-5 : Reset , Watchdog Timer , Osilatör Başlama Zamanı ve Güç Artımı Zamanlayıcı
Đhtiyaçları

* Bu parametreler karakterize edilmiş fakat test edilmemiştir.


↑ Başka bir durum bildirilmedikçe “Typ” kolonundaki data , 5.0V-25°C değerindedir.Bu parametreler
yalnızca tasarımda yol gösterme içindir.

84
Şekil 10-6 : TIMER0 Saat(Clock) Zamanlaması

Tablo 10-6 : TIMER0 Saat Đhtiyaçları

85
11.0 PĐN UYUMLULUĞU ebatlarına sahip olan cihazların tümü pin uyarlı
değildir;örneğin,PIC16C52,PIC16C63 ile
Aynı paket tipi ve VDD ,VSS‘a ve MCLR uyumlu olmasına karşın PIC16C55 ile uyumlu
pin yerlerine sahip olan cihazlar, pin uyumlu değildir.
olarak tanımlanır.Bu durum, bu değişik Pin uyumluluğu, cihazların aynı zellikleri
cihazları aynı soket içinde işleme sokmayı sağladığı manâsına gelmez.Örnek
mümkün kılar.Uyumlu cihazlar, uygulama olarak,PIC16C54,PIC16C71 ile pin uyumlu
soketi içinde öngörülen belirli işlemlere imkân olmasına karşın A/D dönüştürücüsüne,PORTB
verilmesi için yalnızca küçük yazılım üzeridneki zayıf Pull-up’lara ya da kesmelere
modifikasyonarına ihtiyaç duyarlar (örnek, sahip değildir.
PIC16C56 ve PIC16 C61 cihazları).Aynı paket

Tablo 10-1: Pin uyumlu cihazlar

Pin uyumlu cihazlar Paket


PIC12C508,PIC12C509 8-pin
PIC16C54,PIC16C54A, 18-pin
PIC16CR54A, 24-pin
PIC16C56,
PIC16C58A,PIC16CR58A,
PIC16C61,
PIC16C554,PIC16C556,PIC16C558,
PIC16C620,PIC16C621,PIC16C622,
PIC16C710,PIC16C71,PIC16C711,
PIC16F83,PIC16CR83,
PIC16C84,PIC16F84A,PIC16CR84
PIC16C55, 28-pin
PIC16C57,PIC16CR57B
PIC16C62,PIC16CR62, PIC16C62A,PIC16C63, 28-pin
PIC16C72,PIC16C73,PIC16C73A
PIC16C64,PIC16CR64,PIC16C64A, 40-pin
PIC16C65,PIC16C65A
PIC16C74,PIC16C74A
PIC17C42,PIC17CR42,PIC17C42A, 40-pin
PIC17C43,PIC17CR43,PIC17C44
PIC16C923,PIC16C924 64/68-pin

65
30

You might also like