You are on page 1of 12

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/319204098

PIC16F877A Temelli PLC

Book · January 2013

CITATIONS READS

0 1,891

1 author:

Murat Uzam
Yozgat Bozok University
158 PUBLICATIONS   2,142 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

An Image Interpreter for Vision-Based Logic Control of Manufacturing Plant View project

Optimal liveness-enforcing supervisors for automated manufacturing systems by structural analysis of Petri nets. View project

All content following this page was uploaded by Murat Uzam on 13 March 2018.

The user has requested enhancement of the downloaded file.


ÖNSÖZ
Programlanabilir lojik denetleyiciler (Programmable Logic Controllers – PLC) mikroişlemci veya
mikrodenetleyici temelli olarak üretilen otomasyon cihazlarıdır. PLC’ler 1970’lerin başından
itibaren endüstride çok yaygın olarak kullanılagelmektedir. PLC üreticileri değişik fonksiyonlara
sahip, farklı hafıza kapasiteleri olan, bir kaç giriş-çıkıştan binlerce giriş-çıkışa kadar değişik sayıda
giriş-çıkışı bulunan, farklı büyüklüklerde pek çok PLC üretip kullanıma sunmaktadır. PLC tasarımı
ve üretimi süreçleri, yazar tarafından son yıllarda yapılan çalışmalara kadar PLC üreticilerinin bir
sırrı olarak kalmıştır. Mikroişlemci temelli bir teknolojiye dayalı olarak gerçekleştirilen PLC’lerin
yerine getirdiği işlev kullanıcılar tarafından çok iyi bilinmesine karşın mikroişlemci veya
mikrodenetleyici temelli bir PLC’nin gerçekleştirilmesine dair (yazarın yapmış olduğu çalışmalar
hariç) rapor edilmiş ciddi bir çalışma mevcut değildir. Bu konuda yazar tarafından yapılan
çalışmalardan birisi Endüstri&Otomasyon Dergisinde (http://www.endustriotomasyon.com/) Aralık
2009 – Şubat 2011 arasında yayınlanmış olan 15 makaleden oluşan makale serisiyle bir PIC
mikrodenetleyicisi kullanılarak tasarlanmış ve gerçekleştirilmiş olan “16 girişli / 16 çıkışlı
PIC16F877A Temelli PIC PLC” çalışmasıdır. Bu kitap bahsi geçen bu 15 makalenin birleştirilmesi
sonucu oluşturulmuştur. Makalelerde açıklanan bilgilere ilave olarak programların daha iyi
anlaşılması için akış şemaları da kitaba eklenmiştir.

Bu kitap, başta öğrenciler ve piyasada çalışan mühendisler olmak üzere PLC ve endüstriyel
otomasyon alanında kendi özgün cihazlarını üretip kullanmayı düşünen herkese yardımcı olmak
amacıyla yazılmıştır.

Ülkemiz son yıllarda bir kalkınma hamlesi yapma gayreti içerisindedir. Bu bağlamda bu çalışmanın
ülkemizin kalkınma hamlesine yardımcı olması dileğiyle…

Prof. Dr. Murat UZAM

Mart 2013,
KAYSERİ

ii
PIC PLC PROJESİNİN GEÇMİŞİ VE KİTABIN KULLANIMI
Bu proje “bir PLC nasıl tasarlanır ve gerçekleştirilir?” sorusunun cevabı aranırken
gerçekleştirilmiştir. Bu sorunun cevabı, yazar tarafından yaklaşık 14 yıl önce “PICBIT” adındaki
bir projede kısmen bulunmuştur. Okuyucu internette “PICBIT” anahtar sözcüğüyle bir arama
yaparsa bu projeye ulaşacaktır. PICBIT, bir PIC16F84 mikrodenetleyicisi temelli, 5 girişli / 8
çıkışlı bir PLC projesidir. PICBIT’in “picbit.inc” adındaki dosyasında bu projeyi oluşturan temel
PLC makroları bulunmaktadır. Bu kitapta açıklanan “16 girişli / 16 çıkışlı PIC16F877A Temelli
PIC PLC” projesi, adı geçen bu PLC makrolarından esinlenilerek hazırlanmıştır. Tabii ki
PICBIT’te mevcut olmayan pek çok yeni özellik, gerçek bir PLC elde etmek amacıyla “16 girişli /
16 çıkışlı PIC16F877A Temelli PIC PLC” projesine dahil edilmiştir.

Okuyucu, yazarın [1]’de ifade edilen kitabını da inceleyebilir. [1]’de temel olarak üç konu
incelenmektedir. Öncelikle “PICBIT” yazılımı tanıtılarak, bu yazılım ve “PICBIT_PLC” donanımı
kullanılarak “lojik devreler” konularının deneysel olarak pekiştirilmesi hedeflenmiştir. İkinci
aşamada adı geçen yazılım ve donanımın, PLC konularının anlaşılması için kullanımı
incelenmiştir. Kitabın son kısmında ise PICBIT’in “picbit.inc” adındaki dosyasında bulunan temel
PLC makroları detaylı olarak açıklanmış ve uygulamaları incelenmiştir. Bu bağlamda burada
incelenecek olan konuların anlaşılmasına yardımcı olmak üzere [1]’deki kitaptan istifade edilebilir.

Bu kitapta açıklanan “16 girişli / 16 çıkışlı PIC16F877A Temelli PIC PLC” projesi ile ilgili olarak
Endüstri&Otomasyon dergisinde yayınlanan 15 makalenin detaylarına şu kaynaklardan ulaşılabilir:
[2 – 17]. Bu kitapta incelenen projenin benzeri, fakat PIC16F648A mikrodenetleyicisi ile
gerçekleştirilen PLC projesi, İngilizce makale dizisi olarak “Electronics World”
(http://www.electronicsworld.co.uk/) adlı bir dergide yayınlanmıştır [18 – 40]. Bu kitapta açıklanan
projeyle “Electronics World” dergisinde yayınlanmış olan projeyi kısaca karşılaştıralım.
“Electronics World” dergisinde yayınlanmış olan proje (dahili osilatörden elde edilen) 4 MHz’de
çalışan bir PIC16F648A mikrodenetleyicisi ile gerçekleştirilmiştir. Giriş/çıkış sayısı 8’in katları
olarak istenildiği kadar arttırılabilmektedir. Bu kitapta açıklanan proje ise 20 MHz’de çalışan bir
PIC16F877A mikrodenetleyicisi ile gerçekleştirilmiştir. Bu projede 16 giriş / 16 çıkış mevcuttur ve
bu sayı sabittir. Buna göre her iki projenin kendine göre üstün yanları mevcuttur.

Bu projede, endüstriyel PLC’lerdeki gibi bir grafik programlama arayüzü mevcut değildir. Bu
projede, PLC programları {Komut Listesi (Instruction List - IL) şeklinde ifade edilen PLC
programlama diline benzer şekilde} makrolar kullanılarak gerçekleştirilmektedir. Konu hakkında
yetenekli bir okuyucu, PIC16F877A temelli PIC PLC için bir PC programlama arayüzü
geliştirebilir.

Kitaptan en iyi şekilde faydalanmak için bazı ön bilgilere sahip olunması beklenmektedir.
Öncelikle bir PLC ile ilgili olarak hem donanım hem de yazılım hakkında temel seviyede bilgi
sahibi olmak gerekir. Kitapta geliştirilen kodlar, PIC ASSEMBLY dili kullanılarak MPLAB IDE
program geliştirme ortamında PIC16F877A mikrodenetleyicisi için elde edilmiştir. Bu sebeple
okuyucunun PIC ASSEMBLY dilini bilmesi, MPLAB IDE programıyla çalışmış olması ve
PIC16F877A mikrodenetleyicisi ile veya 8 bitlik başka bir PIC mikrodenetleyicisi ile daha önce
çalışmalar yapmış olması bu kitaptan azami şekilde faydalanmak için büyük kolaylık sağlayacaktır.
Bu kapsamda faydalı olacak bazı kaynaklar [41] ve [42]’de belirtilmiştir. Bu kaynaklar ve MPLAB
IDE’nin en son sürümü http://www.microchip.com/ internet sitesinden ücretsiz olarak temin
edilebilir.

iii
Kitabı oluşturan bölümler özetle aşağıda belirtilen içeriklere sahiptir.

1. Donanım: Bu bölümde 16 girişli / 16 çıkışlı PIC16F877A Temelli PIC PLC donanımı hakkında
detaylı bilgi verilmektedir.

2. Temel yazılım: Bu bölümde PIC16F877A temelli PIC PLC’nin temel yazılım yapısı
anlatılmaktadır. Bir PLC’nin tarama (scan) döngüsü şunlardan oluşur: 1. Girişleri al, 2. Kullanıcı
programını çalıştır, 3. Çıkışları güncelle. Ayrıca, PLC’deki tüm değişkenlerin tanımlanması ve
başlangıç şartlarına ayarlanması gerekir. PIC16F877A temelli PIC PLC’de gerekli tüm
fonksiyonlar PIC Assembly makroları olarak tanımlanmıştır. Bu bölümde, temel PIC PLC
makroları anlatılmaktadır.

3. Kontak ve Röle Temelli Makrolar: Bu bölümde kontak ve röle temelli şu makrolar


anlatılmaktadır: ld (load), ld_not (load_not), not, or, or_not, nor, and, and_not, nand, xor, xor_not,
xnor, out, out_not, in_out, inv_out, _set, _reset. Bu makrolar bir bitlik değişkenler (Boole
değişkenleri) için tanımlanmıştır.

4. Flip-Flop Makroları: Bu bölümde flip-flop temelli şu makrolar anlatılmaktadır: r_edge


(rising_edge – yükselen kenar), f_edge (falling_edge – düşen kenar), latch0, latch1, dff_r (rising
edge triggered D flip-flop – yükselen kenar tetiklemeli D flip-flop), dff_f (falling edge triggered D
flip-flop – düşen kenar tetiklemeli D flip-flop), tff_r (rising edge triggered T flip-flop – yükselen
kenar tetiklemeli T flip-flop), tff_f (falling edge triggered T flip-flop – düşen kenar tetiklemeli T
flip-flop), jkff_r (rising edge triggered JK flip-flop – yükselen kenar tetiklemeli JK flip-flop), jkff_f
(falling edge triggered JK flip-flop – düşen kenar tetiklemeli JK flip-flop).

5. Zamanlayıcı Makroları (Timer Macros): Bu bölümde şu zamanlayıcı makroları


anlatılmaktadır: TON_8 (ON delay timer – Düz zaman rölesi), TOF_8 (OFF delay timer – Ters
zaman rölesi), TP_8 (Pulse timer – pals zaman rölesi), TOS_8 (Oscillator timer – Osilatör zaman
rölesi).

6. Sayıcı Makroları (Counter Macros): Bu bölümde sayıcı temelli şu makrolar anlatılmaktadır:


CTU_8 {Up Counter – Yukarı (İleri) sayıcı}, CTD_8 {Down Counter – Aşağı (Geri) sayıcı},
CTUD_8 {Up/Down Counter – Yukarı/Aşağı (İleri/Geri) sayıcı}.

7. Karşılaştırma Makroları (Comparison Macros): Bu bölümde şu karşılaştırma makroları


anlatılmaktadır: R1 ve R2 gibi iki kaydedicinin (register’in) içeriği şu şekilde karşılaştırılabilir: GT
(Greater Than – büyük “>”), GE (Greater than or Equal to – büyük ya da eşit “≥”), EQ (EQual to
– eşit “=”), LT (Less Than – küçük “<”), LE (Less than or Equal to – küçük ya da eşit “≤”), NE
(Not Equal to – eşit değil “≠”). Benzer karşılaştırma makroları 8 bitlik bir kaydedicinin (8 bit
register – R) içeriği ile 8 bitlik sabit bir sayının (8 bit constant – K) karşılaştırılması için de
tanımlanmıştır.

8. Aritmetik Makroları: Bu bölümde şu aritmetik makroları anlatılmaktadır: R1 ve R2 gibi iki


kaydedicinin (register’in) içeriğine şu şekilde aritmetik işlemler uygulanabilir: ADD (topla), SUB
(subtract – çıkart), INC (increment – bir arttır), DEC (decrement – bir azalt). Benzer aritmetik
makrolar 8 bitlik bir kaydedicinin (8 bit register – R) içeriği ile 8 bitlik sabit bir sayı (8 bit constant
– K) için de tanımlanmıştır.

iv
9. Lojik Makroları: Bu bölümde şu lojik makroları anlatılmaktadır: inv_R, AND, NAND, OR,
NOR, XOR, XNOR. Bu makrolar, 8 bitlik bir kaydedici (register – R1) ile bir başka 8 bitlik
kaydediciye (R2) ya da 8 bitlik sabit bir sayıya (constant – K) uygulanabilmektedir.

10. Kaydırma ve Döndürme Makroları (Shift & Rotate Macros): Bu bölümde şu kaydırma ve
döndürme makroları anlatılmaktadır: SHIFT_R (R kaydedicisinin içeriğini sağa kaydır), SHIFT_L
(R kaydedicisinin içeriğini sola kaydır), ROTATE_R (R kaydedicisinin içeriğini sağa döndür),
ROTATE_L (R kaydedicisinin içeriğini sola döndür), SWAP (kaydedicinin ilk 4 bitini son 4 biti ile
değiştir).

11. Veri Seçici (Multiplexer) Makroları: Bu bölümde şu veri seçici makroları anlatılmaktadır:
mux_2_1 (2x1 MUX), mux_2_1_E (aktif 1 yetkileme girişli 2x1 MUX), mux_4_1 (4x1 MUX),
mux_4_1_E (aktif 1 yetkileme girişli 4x1 MUX), mux_8_1 (8x1 MUX), mux_8_1_E (aktif 1
yetkileme girişli 8x1 MUX).

12. Veri Dağıtıcı (DeMultiplexer) Makroları: Bu bölümde şu veri dağıtıcı makroları


anlatılmaktadır: Dmux_1_2 (1x2 DMUX), Dmux_1_2_E (aktif 1 yetkileme girişli 1x2 DMUX),
Dmux_1_4 (1x4 DMUX), Dmux_1_4_E (aktif 1 yetkileme girişli 1x4 DMUX), Dmux_1_8 (1x8
DMUX), Dmux_1_8_E (aktif 1 yetkileme girişli 1x8 DMUX).

13. Kod Çözücü (Decoder) Makroları: Bu bölümde şu kod çözücü makroları anlatılmaktadır:
decod_1_2 (1x2 kod çözücü), decod_1_2_AL (aktif 0 çıkışlı 1x2 kod çözücü),
decod_1_2_E(aktif 1 yetkileme girişli 1x2 kod çözücü), decod_1_2_E_AL (aktif 1 yetkileme girişli
ve aktif 0 çıkışlı 1x2 kod çözücü), decod_2_4 (2x4 kod çözücü), decod_2_4_AL(aktif 0 çıkışlı 2x4
kod çözücü), decod_2_4_E (aktif 1 yetkileme girişli 2x4 kod çözücü), decod_2_4_E_AL (aktif 1
yetkileme girişli ve aktif 0 çıkışlı 2x4 kod çözücü), decod_3_8 (3x8 kod çözücü), decod_3_8_AL
(aktif 0 çıkışlı 3x8 kod çözücü), decod_3_8_E (aktif 1 yetkileme girişli 3x8 kod çözücü),
decod_3_8_E_AL (aktif 1 yetkileme girişli ve aktif 0 çıkışlı 3x8 kod çözücü).

14. Öncelikli Kodlayıcı (Priority Encoder) Makroları: Bu bölümde şu öncelikli kodlayıcı


makroları anlatılmaktadır: encod_4_2_p (4x2 öncelikli kodlayıcı), encod_4_2_p_E (aktif 1
yetkileme girişli 4x2 öncelikli kodlayıcı), encod_8_3_p (8x3 öncelikli kodlayıcı), encod_8_3_p_E
(aktif 1 yetkileme girişli 8x3 öncelikli kodlayıcı), encod_dec_bcd_p [onluk sayıdan (desimalden)
BCD’ye (Binary Coded Decimal – İkili Kodlanmış Onlu) öncelikli kodlayıcı], encod_dec_bcd_p_E
(aktif 1 yetkileme girişli onluk sayıdan BCD’ye öncelikli kodlayıcı).

15. Bir Örnek: Bu bölümde PIC16F877A temelli PIC PLC kullanılarak uzaktan kumandalı bir
model kapının değişik çalışma senaryoları için kontrol edilmesi anlatılmaktadır.

v
Tablo 0.1’de bu kitapta anlatılan 16 girişli / 16 çıkışlı PIC16F877A temelli PIC PLC’nin genel
karakteristikleri özetlenmiştir.

Tablo 0.1 PIC16F877A temelli PIC PLC’nin genel karakteristikleri.


Bayt adresleri / Bit adresleri
Girişler/Çıkışlar/Fonksiyonlar
İlgili baytlar veya fonksiyon numaraları
16 ayrık giriş
I0, I0.0, I0.1, …, I0.7
(harici girişler: 5 V DC veya 24
I1 I1.0, I1.1, …, I1.7
V DC)
16 ayrık çıkış Q0, Q0.0, Q0.1, …, Q0.7
(röle kontağı çıkışları) Q1 Q1.0, Q1.1, …, Q1.7
M0, M0.0, M0.1, …, M0.7
M1, M1.0, M1.1, …, M1.7
M2, M2.0, M2.1, …, M2.7
64 dahili röle M3, M3.0, M3.1, …, M3.7
(hafıza bitleri – memory bits ) M4, M4.0, M4.1, …, M4.7
M5, M5.0, M5.1, …, M5.7
M6, M6.0, M6.1, …, M6.7
M7 M7.0, M7.1, …, M7.7
8 yükselen kenar algılayıcı RED r_edge (0, 1, …, 7)
8 düşen kenar algılayıcı FED f_edge (0, 1, …, 7)
8 yükselen kenar tetiklemeli
DFF_RED dff_r (0, 1, …, 7), regi,biti, rego,bito
D flip-flop
8 düşen kenar tetiklemeli
DFF_FED dff_f (0, 1, …, 7), regi,biti, rego,bito
D flip-flop
8 yükselen kenar tetiklemeli
TFF_RED tff_r (0, 1, …, 7), regi,biti, rego,bito
T flip-flop
8 düşen kenar tetiklemeli
TFF_FED tff_f (0, 1, …, 7), regi,biti, rego,bito
T flip-flop
8 yükselen kenar tetiklemeli jkff_r (0, 1, …, 7), regi,biti,
JKFF_RED
JK flip-flop rego,bito

8 düşen kenar tetiklemeli


JKFF_FED jkff_f (0, 1, …, 7), regi,biti, rego,bito
JK flip-flop

TON8, TON8+1, …, TON8_Q0,


8 düz zaman rölesi
TON8+7 TON8_Q1, …,
(on delay timer)
TON8_Q, TON8_RED TON8_Q7

vi
TOF8, TOF8+1, …, TOF8_Q0,
8 ters zaman rölesi
TOF8+7, TOF8_Q, TOF8_Q1, …,
(off delay timer)
TOF8_RED TOF8_Q7
TP8, TP8+1, …,
TP8_Q0,
8 pals zaman rölesi TP8+7, TP8_Q,
TP8_Q1, …,
(pulse timer) TP8_RED1,
TP8_Q7
TP8_RED2
TOS8, TOS8+1, …,
TOS8_Q0,
8 osilatör zaman rölesi TOS8+7,
TOS8_Q1, …,
(oscillator timer) TOS8_Q
TOS8_Q7
TOS8_RED
CV8, CTU8_Q0,
8 sayıcı (counter)
CV8+1, …, CV8+7, CTU8_Q1, …,
CTU8_Q7
CTU: İleri sayıcı
CTU8_Q, veya
(Up counter)
CTU8_RED, CTD8_Q0,
CTD8_Q1, …,
CTD:Geri sayıcı
CTD8_Q, CTD8_Q7
(Down counter)
CTD8_RED, veya
CTUD8_Q0,
CTUD:İleri/Geri sayıcı
CTUD8_Q, CTUD8_Q1, …,
(Up/Down counter)
CTUD8_RED, CTUD8_Q7
regi,biti : giriş biti ; rego,bito : çıkış biti

Önemli not: Her hangi bir anda hangi tür olduğuna bakılmaksızın toplamda sadece 8 tane sayıcı
kullanılabilir.

vii
İÇİNDEKİLER
sayfa
Bölüm 1 - PIC16F877A Mikrodenetleyicisi Temelli PIC PLC Donanımı ......................... 1

Bölüm 2 - Temel Yazılım .......................................................................................................... 7


2.1. PIC16F877A Temelli PIC PLC’nin Temel Yazılım Yapısı ............................................ 8
2.2. Kontak Atlaması Problemi ve PIC16F877A Temelli PIC PLC’de Giderilmesi ............. 13
2.3. PIC16F877A Temelli PIC PLC’nin Temel Makroları .................................................... 20
2.4. “initialize” Makrosu ....................................................................................................... 21
2.5. “get_inputs” Makrosu ..................................................................................................... 22
2.6. “send_outputs” Makrosu ................................................................................................ 23
2.7. Örnek Program ............................................................................................................... 24

Bölüm 3 - Kontak ve Röle Temelli Makrolar ........................................................................ 26


3.1. “ld” (load) Makrosu ......................................................................................................... 27
3.2. “ld_not” (load_not) Makrosu ............................................................................................ 28
3.3. “not” Makrosu ................................................................................................................... 29
3.4. “or” Makrosu .................................................................................................................... 30
3.5. “or_not” Makrosu ............................................................................................................. 31
3.6. “nor” Makrosu .................................................................................................................. 32
3.7. “and” Makrosu .................................................................................................................. 33
3.8. “and _not” Makrosu ......................................................................................................... 34
3.9. “nand” Makrosu ................................................................................................................ 35
3.10. “xor” Makrosu ................................................................................................................ 36
3.11. “xor_not” Makrosu ......................................................................................................... 37
3.12. “xnor” Makrosu .............................................................................................................. 38
3.13. “out” Makrosu ................................................................................................................ 39
3.14. “out_not” Makrosu ......................................................................................................... 40
3.15. “in_out” Makrosu ........................................................................................................... 41
3.16. “inv_out” Makrosu ......................................................................................................... 42
3.17. “_set” Makrosu ............................................................................................................... 43
3.18. “_reset”Makrosu ............................................................................................................. 44
3.19. Kontak ve Röle Temelli Makroların Kullanımıyla İlgili Örnekler ................................. 45

Bölüm 4 - Flip-Flop Makroları ................................................................................................ 51


4.1. “r_edge” Yükselen Kenar Algılama Makrosu ................................................................. 52
4.2. “f_edge” Düşen Kenar Algılama Makrosu ....................................................................... 54
4.3. “latch1” Aktif 1 Yetkileme Girişli D Mandalı Makrosu ………...................................... 56
4.4. “latch0” Aktif 0 Yetkileme Girişli D Mandalı Makrosu .................................................. 58
4.5. “dff_r” Yükselen Kenar Tetiklemeli D Flip-flop Makrosu ….......................................... 60
4.6. “dff_f” Düşen Kenar Tetiklemeli D Flip-flop Makrosu …............................................... 62
4.7. “tff_r” Yükselen Kenar Tetiklemeli T Flip-flop Makrosu ............................................... 64
4.8. “tff_f” Düşen Kenar Tetiklemeli T Flip-flop Makrosu ................................................... 66
4.9. “jkff_r” Yükselen Kenar Tetiklemeli JK Flip-flop Makrosu ............................................ 68
4.10. “jkff_f” Düşen Kenar Tetiklemeli JK Flip-flop Makrosu ............................................. 70
4.11. Flip-Flop Makrolarının Kullanımıyla İlgili Örnekler ……............................................ 72

viii
sayfa
Bölüm 5 - Zamanlayıcı Makroları ........................................................................................... 79
5.1. Düz Zaman Rölesi (On Delay Timer - TON) ................................................................... 83
5.2. “TON_8” 8 Bitlik Düz Zaman Rölesi Makrosu ………………....................................... 84
5.3. Ters Zaman Rölesi (Off Delay Timer - TOF) ................................................................... 86
5.4. “TOF_8” 8 Bitlik Ters Zaman Rölesi Makrosu ................................................................ 87
5.5. Pals Zaman Rölesi (Pulse Timer – TP) …….................................................................... 89
5.6. “TP_8” 8 Bitlik Pals Zaman Rölesi Makrosu ................................................................... 90
5.7. Osilatör Zaman Rölesi (Oscillator Timer – TOS) ............................................................ 92
5.8. “TOS_8” 8 Bitlik Osilatör Zaman Rölesi Makrosu .......................................................... 93
5.9. Zamanlayıcı Makrolarının Kullanımıyla İlgili Örnekler .................................................. 95

Bölüm 6 - Sayıcı Makroları ...................................................................................................... 99


6.1. Yükleme ve Taşıma Makroları ........................................................................................ 99
6.2. Sayıcı Makroları ............................................................................................................... 101
6.3. İleri Sayıcı (Up Counter – CTU) ...................................................................................... 105
6.4. “CTU_8” 8 bitlik İleri Sayıcı Makrosu ……..................................................................... 106
6.5. Geri Sayıcı (Down Counter – CTD) ................................................................................. 108
6.6. “CTD_8” 8 bitlik Geri Sayıcı Makrosu ............................................................................ 109
6.7. İleri/Geri Sayıcı (Up/Down Counter – CTUD) ................................................................ 111
6.8. “CTUD_8” 8 bitlik İleri/Geri Sayıcı Makrosu ……......................................................... 112
6.9. Sayıcı Makrolarının Kullanımıyla İlgili Örnekler ……………........................................ 115

Bölüm 7 - Karşılaştırma Makroları ........................................................................................ 123


7.1. “R1_GT_R2” Makrosu …................................................................................................. 124
7.2. “R1_GE_R2” Makrosu …................................................................................................ 125
7.3. “R1_ EQ_R2” Makrosu …............................................................................................... 126
7.4. “R1_ LT_R2” Makrosu …............................................................................................... 127
7.5. “R1_ LE_R2” Makrosu …................................................................................................ 128
7.6. “R1_ NE_R2” Makrosu …................................................................................................ 129
7.7. “R_GT_K” Makrosu …..................................................................................................... 130
7.8. “R_ GE_K” Makrosu ….................................................................................................... 131
7.9. “R_ EQ_K” Makrosu ….................................................................................................... 132
7.10. “R_ LT_K” Makrosu ….................................................................................................. 133
7.11. “R_LE_K” Makrosu …................................................................................................... 134
7.12. “R_NE_K” Makrosu ….................................................................................................. 135
7.13. Karşılaştırma Makrolarının Kullanımıyla İlgili Örnekler ............................................... 136

Bölüm 8 - Aritmetik Makroları .............................................................................................. 140


8.1. “R1addR2” Makrosu ……................................................................................................ 141
8.2. “RaddK” Makrosu ……................................................................................................... 142
8.3. “R1subR2” Makrosu ……................................................................................................ 143
8.4. “RsubK” Makrosu ……..................................................................................................... 144
8.5. “incR” Makrosu ……........................................................................................................ 145
8.6. “decR” Makrosu ……....................................................................................................... 146
8.7. Aritmetik Makrolarının Kullanımıyla İlgili Örnekler …................................................... 147

ix
sayfa
Bölüm 9 - Lojik Makroları ....................................................................................................... 152
9.1. “R1andR2” Makrosu ………............................................................................................ 153
9.2. “RandK” Makrosu ………................................................................................................ 154
9.3. “R1nandR2” Makrosu ……….......................................................................................... 155
9.4. “RnandK” Makrosu ……….............................................................................................. 156
9.5. “R1orR2” Makrosu ……….............................................................................................. 157
9.6. “RorK” Makrosu ……….................................................................................................. 158
9.7. “R1norR2” Makrosu …….…............................................................................................ 159
9.8. “RnorK” Makrosu …………............................................................................................ 160
9.9. “R1xorR2” Makrosu ………............................................................................................ 161
9.10. “RxorK” Makrosu ………….......................................................................................... 162
9.11. “R1xnorR2” Makrosu ………........................................................................................ 163
9.12. “RxnorK” Makrosu …..……........................................................................................... 164
9.13. “invR” Makrosu …………........................................................................................... 165
9.14. Lojik Makrolarının Kullanımıyla İlgili Örnek ……….................................................... 166

Bölüm 10 - Kaydırma ve Döndürme Makroları ..................................................................... 174


10.1. “shift_R” Makrosu …………......................................................................................... 175
10.2. “shift_L” Makrosu …………......................................................................................... 177
10.3. “rotate_R” Makrosu …………........................................................................................ 179
10.4. “rotate_L” Makrosu …………....................................................................................... 181
10.5. “Swap” Makrosu ……..................................................................................................... 183
10.6. Kaydırma ve Döndürme Makrolarının Kullanımıyla İlgili Örnekler ............................. 184

Bölüm 11 - Veri Seçici (Multiplexer) Makroları .................................................................... 200


11.1. “mux_2_1” Makrosu …………....................................................................................... 201
11.2. “mux_2_1_E” Makrosu ….…........................................................................................ 202
11.3. “mux_4_1” Makrosu …………...................................................................................... 204
11.4. “mux_4_1_E” Makrosu …………................................................................................. 206
11.5. “mux_8_1” Makrosu …………....................................................................................... 209
11.6. “mux_8_1_E” Makrosu ………….................................................................................. 212
11.7. Veri Seçici (Multiplexer) Makrolarının Kullanımıyla İlgili Örnekler …........................ 215

Bölüm 12 - Veri Dağıtıcı (Demultiplexer) Makroları ........................................................... 219


12.1. “Dmux_1_2” Makrosu .................................................................................................... 220
12.2. “Dmux_1_2_E” Makrosu ............................................................................................... 222
12.3. “Dmux_1_4” Makrosu .................................................................................................... 224
12.4. “Dmux_1_4_E” Makrosu .............................................................................................. 226
12.5. “Dmux_1_8” Makrosu .................................................................................................... 229
12.6. “Dmux_1_8_E” Makrosu .............................................................................................. 232
12.7. Veri Dağıtıcı (Demultiplexer) Makrolarının Kullanımıyla İlgili Örnekler .................... 235

x
sayfa
Bölüm 13 - Kod Çözücü (Decoder) Makroları ...................................................................... 240
13.1. “decod_1_2” Makrosu ………....................................................................................... 241
13.2. “decod_1_2_AL” Makrosu ………................................................................................ 243
13.3. “decod_1_2_E” Makrosu ………................................................................................... 245
13.4. “decod_1_2_E_AL” Makrosu ……............................................................................... 247
13.5. “decod_2_4” Makrosu ………........................................................................................ 249
13.6. “decod_2_4_AL” Makrosu ………................................................................................ 251
13.7. “decod_2_4_E” Makrosu ……….................................................................................... 253
13.8. “decod_2_4_E_AL” Makrosu ……............................................................................... 256
13.9. “decod_3_8” Makrosu ………....................................................................................... 259
13.10. “decod_3_8_AL” Makrosu ………............................................................................... 262
13.11. “decod_3_8_E” Makrosu ………................................................................................. 265
13.12. “decod_3_8_E_AL” Makrosu …….............................................................................. 268
13.13. Kod çözücü (Decoder) Makrolarının Kullanımıyla İlgili Örnekler …………............. 271

Bölüm 14 - Öncelikli Kodlayıcı (Priority Encoder) Makroları ............................................. 276


14.1. “encod_4_2_p” Makrosu …………............................................................................... 277
14.2. “encod_4_2_p_E” Makrosu …………........................................................................... 279
14.3. “encod_8_3_p” Makrosu …………............................................................................... 281
14.4. “encod_8_3_p_E” Makrosu …………........................................................................... 284
14.5. “encod_dec_bcd_p” Makrosu …………........................................................................ 287
14.6. “encod_dec_bcd_p_E” Makrosu ………........................................................................ 290
14.7. Öncelikli Kodlayıcı (Priority Encoder) Makrolarının Kullanımıyla İlgili Örnekler …. 293

Bölüm 15 - Bir Uygulama Örneği ........................................................................................... 299


15.1. Uzaktan Kumandalı Model Kapı Sistemi ……............................................................... 299
15.2. Model Kapı Sistemi İçin Kontrol Senaryoları ……….................................................... 303
15.3. Kontrol Senaryoları İçin Çözümler ……………............................................................. 303
15.4. 1nci Senaryo İçin Çözüm ……..………….................................................................. 303
15.5. 2nci Senaryo İçin Çözüm ……………………................................................................ 304
15.6. 3ncü Senaryo İçin Çözüm .……………………............................................................. 304
15.7. 4ncü Senaryo İçin Çözüm .…………………................................................................. 305
15.8. 5nci Senaryo İçin Çözüm ..……….……….................................................................... 306
15.9. 6ncı Senaryo İçin Çözüm ………………....................................................................... 307
15.10. 7nci Senaryo İçin Çözüm .…………………............................................................... 309
15.11. 8nci Senaryo İçin Çözüm .…………………................................................................. 310

Kaynakça ………………………….......................................................................................... 316

Dizin ……………………………….......................................................................................... 318

CD ROM’un İçeriği ..…….……….......................................................................................... 321

xi

View publication stats

You might also like