Professional Documents
Culture Documents
Özellikleri:
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
8
TABLO 5.1: PORTA FONKSĐYONLARI
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
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ı
9
ÖRNEK 5.1: PORTB’YĐ ATAMAK
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-
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.
8
Şekil 6-3 : TMR0 Zamanlaması : Dahili Saat / Önölçücü 1:2
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ı
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.
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
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)
R = Okunabilir bit
W = Yazılabilir bit
S = Tamamlanmamış bit ,
“0” diye okunur.
-n = POR reset değeri
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ş
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)’
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.
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
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.
31
Tablo 8-3 : Program Sayacı ve STATUS Registeri Đçin Reset Durumu
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.
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.
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.
30
Şekil 8-16 : INT pini Kesme Zamanlaması
29
Örnek 8-1 : RAM’deki STATUS ve W registerini Koruma
29
Tablo 8-7 : Watchdog Timer ile Registerlerin Birleştirilmesi Özeti
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.
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
55
9.1 Komut Tanımları
Komuttan önce
W = 0x10
Komuttan sonra
W = 0x25
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
Komuttan önce
W = 0x17
FSR= 0xC2
Komuttan sonra
W = 0x17
FSR= 0x02
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
Komuttan önce
FLAG_REG= 0x0A
Komuttan sonra
FLAG_REG= 0x0A
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)
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
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
Komuttan önce
W = 0x5A
Komuttan sonra
W = 0x00
Z=1
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
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
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
Komuttan önce
W= 0x9A
Z =0
Komuttan sonra
W= 0xBF
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
Komuttan sonra
W= 0x5A
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
Komuttan önce
OPTION = 0xFF
W = 0x4F
Komuttan sonra
OPTION = 0x4F
W = 0x4F
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.
68
Kelimeler: 1
Döngüler: 2
Örnek: RETFIE
Komuttan sonra
PC = TOS
GIE = 1
Komuttan önce
W = 0x07
Komuttan sonra
W = k7’nin değeri
Komuttan sonra
69
PC= TOS
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
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
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
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
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.
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
↑ 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)
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)
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)
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.
80
Tablo 10-2 : Zamanlama Parametrelerine Bakış
Tüm zamanlar , şekilde gösterilen yüksek ve düşük ölçme noktaları arasında ölçülmüştür.
81
10.5 Zamanlama Diyagramları Ve Özellikleri
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ı
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ı
84
Şekil 10-6 : TIMER0 Saat(Clock) Zamanlaması
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
65
30