48
T.C. KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ PROGRAMLANABİLİR ZAMANLAYICI BİTİRME ÇALIŞMASI SULTAN ÜÇOK 203786 HAZİRAN,2011 TRABZON

PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

T.C.

KARADENİZ TEKNİK ÜNİVERSİTESİ

MÜHENDİSLİK FAKÜLTESİ

ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ

PROGRAMLANABİLİR ZAMANLAYICI

BİTİRME ÇALIŞMASI

SULTAN ÜÇOK

203786

HAZİRAN,2011

TRABZON

Page 2: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

T.C.

KARADENİZ TEKNİK ÜNİVERSİTESİ

MÜHENDİSLİK FAKÜLTESİ

ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ

PROGRAMLANABİLİR ZAMANLAYICI

BİTİRME ÇALIŞMASI

SULTAN ÜÇOK

203786

Öğr. Gör. Cahit ALTAN

HAZİRAN, 2011

TRABZON

Page 3: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr
Page 4: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

II

ÖNSÖZ

Büyük sabır ve fedakârlıklar göstererek bugünlere gelmemde büyük emeği olan değerli

aileme, çalışmalarım boyunca yardımını esirgemeyen sayın Oğuzhan Çakır’a ve sayın Tez

Hocam Cahit ALTAN’a teşekkürlerimi sunarım.

Page 5: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

III

İÇİNDEKİLER

Sayfa No

ÖNSÖZ II

İÇİNDEKİLER III

ÖZET V

SEMBOLLER VE KISALTMALAR VI

1. GİRİŞ 1

1.1. MİKRODENETLEYİCİLER 1

1.1.1. PIC16F84A Mikrodenetleyicisi 2

1.2. PIC16F84’Ü PROGRAMLAMAK İÇİN GEREKENLER 2

1.2.1. Metin Editörü 2

1.2.2. Assembler Programı 3

1.2.3. PIC Programlama Devre Kartı 3

1.2.4. Program Yükleme Yazılımı 3

1.3. PIC DONANIM ÖZELLİKLERİ 3

1.3.1. PIC Bellek Çeşitleri 3

1.3.2. PIC’lerin Dış Görünüşü 5

1.4. PIC16F84A’NIN ÖZELLİKLERİ 5

1.4.1. PIC16F84A’nın Yapısı 5

1.4.2. PIC16F84A’nın Pin Görünüşü 6

1.4.3. Besleme Gerilimi 8

Page 6: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

IV

1.4.4. CLOCK Uçları ve CLOCK Osilatörü Çeşitleri 9

1.4.5. Program Belleği 13

1.4.5.1.RAM Bellek 14

1.4.5.2 Yığın Hafıza 15

1.4.5.3 W Register 15

2. PIC PROGRAMLAMA 17

2.1. Pic Assembly Dilini Kullanarak Pic Programlama 17

2.2. Girintiler ve Program Bölümleri 17

2.3. Kesmeler 18

3. PROGRAMLANABİLİR TİMER 22

3.1. PIC16F84A İle Programlanabilir Timer 22

3.1.1. Butonlar 22

3.1.2. Display 23

3.2. Programlanabilir Zamanlayıcı Devre Şeması 31

3.3. P. Zamanlayıcı Devresinin Delikli Pertinanks Üzerinde Gerçeklemesi 32

3.4. Devrenin Karta Baskı Devresi 33

3.5. Devrenin Gerçeklenmesi 34

4. SONUÇLAR

5. KAYNAKLAR

Page 7: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

V

ÖZET

Programlanabilir Zamanlayıcıyı 74C92 buton sürücüsü, 7447 display sürücüsü ve

16F84A ile oluşturarak gerçekledim. Programda assembly dilini kullandım. Sırasıyla

programın editörde yazımı, Proteus da simülasyonu, board üzerinde denemesi ve son

olarak plaket üzerine yerleştirilerek hazır hale getirilmesi gerçekleştirme aşamalarını

oluşturdu.

Zaman insan hayatın da önemli yer teşkil eden bir kavramdır. Bundan dolayıdır ki

günümüzdeki çoğu cihazda artık bir zamanlayıcı mevcuttur. Programlanabilir zamanlayıcı

devresi günümüzde çoğu teknolojide kullanılır hale gelmiştir. Örneğin tıbbi cihazlardan

Buharlı Otoklav, okul saat sistemlerinde, skorbordlarda ve günlük hayatımızda mikrodalga

fırınlarda çalar saatlerde kullanımı oldukça yaygın olan cihazlardan birkaçıdır.

Page 8: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

VI

SEMBOLLER VE KISALTMALAR

Page 9: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

VII

Page 10: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

VIII

Page 11: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

IX

Page 12: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

X

Page 13: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

1. GİRİŞ

Çalışmamın konusu programlanabilen bir zamanlayıcı amaçlamaktadır.

Zamanlayıcılar FF’lerin arka arkaya sırayla bağlanması ile oluşturulmuş devrelerdir.

Girişlerine uygulanan saat darbelerini ikili tabana göre sayma işlemi yapar. Sayıcılar,

dijital ölçü, kumanda ve kontrol tesislerinin önemli elemanlarındandır.

1.1. MİKRODENETLEYİCİLER

Bir bilgisayar içerisinde bulunması gereken temel bileşenlerden RAM, I/O ünitesinin

tek bir chip içerisinde üretilmiş biçimine mikrodenetleyici (Microcontroller) denir.

Günümüz mikro denetleyicileri otomobillerde, kameralarda, cep telefonlarında, fax-

modem cihazlarında, fotokopi, radyo, TV, bazı oyuncaklar gibi sayılamayacak kadar pek

çok alanda kullanılmaktadır.

Günümüz mikro denetleyicileri birçok chip üreticisi tarafından üretilmektedir. Her

firma ürettiği chip'e farklı isimler vermektedir [1] . Örneğin Microchip firması ürettiklerine

PIC adını verir. Şekil 1.’de bir mikrodenetleyici sistemin temel bileşenlerinin blok

diyagramı gösterilmiştir.

Şekil1. Bir mikro denetleyici sistemin temel bileşenlerinin blok diyagramı

Page 14: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

2

1.1.1. PIC16F84A Mikrodenetleyisici

PIC açılım olarak Peripheral Interface Controller anlamına gelir [1] . Bu, lamba,

motor, role, ısı ve ışık sensörü gibi elemanların kontrolünü yapabilmesi anlamına

gelmektedir. PIC'ler, piyasada çok kolaylıkla ve ucuz olarak elde edilebilebilir.

PIC16F84A microdenetleyicisi toplam 35 komut kullanılarak programlanabilmektedir.

PIC16F84A mikrodenetleyicisinin program belleği flash teknolojisi ile üretilmiştir.

Flash memory teknolojisi ile üretilen bir belleğe yüklenen program, PIC'e uygulanan enerji

kesilse bile silinmez. PIC16F84'i programlayıp tekrar silinebilir ve yeniden program

yazılabilir.

1.2. PIC16F84’Ü PROGRAMLAMAK İÇİN GEREKENLER

PIC 16F84A mikrodenetleyicisinin programlamasıda ve uygulamalarda gereksinim

duyulanlar:

1. Bir metin editörünü

2. Bir assembler programı

3. PIC programlayıcı donanımı

4. PIC programlayıcı yazılımı.

5. PIC

6. Programlanmış PIC'i denemek için breadboard, güç kaynağı ve elektronik

elemanlar.

7. Programlanmış bir PIC'i deneme kartı.

1.2.1. Metin Editörü

Assembly dili komutlarını yazıp bir metin dosyası oluşturmak için NotPad editörünü

kullandım. Programı yazarken programa uygun olarak komut ve adresler arasında bir

tablık boşluk bırakarak yazdım.

Page 15: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

3

1.2.2. Assembler Programı

PIC Assembly dili adı verilen ve toplam 35 komuttan oluşan bir programlama dilidir.

Bu komutları basit bir editörde yazabiliyoruz. Ancak, ingilizce'deki bazı kelimelerin

kısaltmasından oluşan bu dilin komutlarını PIC'in anlayabileceği makine diline çeviren bir

programa ihtiyacımız vardır. Bu programa assembler adını veriyoruz.

1.2.3. PIC Programlama Devre Kartı

Programlanan PIC'i breadboard üzerinde kurulabileceği gibi devre de denenebilir. Özel

bir deneme kartı üzerinde de deneyemeye çalıştım fakat bu deneme kartları eski

bilgisayarlarda çalıştığı için PIC’i programlayamadı. Bunun yerine USB’li başka bir

programlama kartı kullandım yardım alarak.

1.2.4. Program Yükleme Yazılımı

MPASM tarafından derlenerek makine diline dönüştürülmüş assembly programı

kodlarının PIC'e yazdırılmasında kullanılan bir programa gereksinim vardır. Programlayıcı

yazılımları, PIC'i programlamak için kullanılan elektronik karta bağımlıdır. Her

programlayıcı yazılımı ile elimizde bulunan karta kod gönderemeyebiliriz. Genellikle

programlama kartı üreticileri, ürettikleri karta uygun yazılımı da birlikte sunarlar.

1.3. PIC Donanım Özellikleri

1.3.1 PIC Bellek Çeşitleri

Farklı özellikte program belleği bulunan PIC'ler microchip firması tarafından piyasaya

sürülmektedir. Bunlar:

1. Silinebilir ve programlanabilir bellek (Erasable PROgrammable Memory-

EPROM).

Page 16: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

4

2. Elektriksel olarak silinebilir ve programlanabilir bellek (Electrically Erasable

PROgrammable Memory-EEPROM). FLASH bellek olarak da adlandırılır.

3. Sadece okunabilir bellek (Read-Only Memory-ROM).

Her bir bellek tipinin kullanılacağı uygulamaya göre avantajları ve dezavantajları

vardır. Bu avantajlar; fiyat, hız, defalarca kullanmaya yatkınlık gibi faktörlerdir.

EPROM bellek hücrelerine elektrik sinyali uygulayarak kayıt yapılır. EPROM

üzerindeki enerji kesilse bile bu program bellekte kalır. Ancak silip yeniden başka bir

program yazmak için ultra-viole ışını altında belirli bir süre tutmak gerekir. Bu işlemler

EPROM silici denilen özel aygıtlarla yapılır. EPROM bellekli PIC'ler iki farklı ambalajlı

olarak bulunmaktadır:

Seramik ambalajlı ve cam pencereli olan tip, silinebilir olan tiptir.

Plastik ambalajlı ve penceresiz olan tipler ise silinemez (OTP) tiptir.

EEPROM, belleği bulunan bir PIC içerisine program yazmak için PIC programlayıcı

vasıtasıyla elektriksel sinyal gönderilir. EEPROM üzerindeki enerji kesilse bile bu

program bellekte kalır. Programı silmek veya farklı yeni bir program yazmak istendiğinde

PIC programlayıcıdan elektriksel sinyal gönderilir. Bu tip belleğe sahip olan PIC'ler

genellikle uygulama geliştirme amacıyla kullanılırlar. Microchip bu tip belleğe çoğu

zaman FLASH bellek olarak da adlandırmaktadır. Fiyatları silinemeyen tiplere göre biraz

pahalıdır. Bellek erişim hızları ise EPROM ve ROM'lara göre daha yavaştır. PIC 16F84'ler

bu tip program belleğine sahiptir.

ROM, program belleğine sahip PIC'lerin programları fabrikasyon olarak yazılırlar.

EPROM ve EEPROM eşdeğerlerine nazaran fiyatları oldukça düşüktür. Ancak fiyatının

düşüklüğünden dolayı gelen avantaj bazen çok pahalıya da mal olabilir. ROM bellekli PIC

programlarının fabrikasyon olarak yazılması nedeniyle PIC'in elde edilme süresi uzundur.

Bu tip PIC'ler çok miktarda üretilecek bir ürünün maliyetini düşürmek amacıyla seçilir.

Program hataları giderilemediği için uygulama geliştirmek için uygun değildir.

Page 17: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

5

1.3.2. PIC’lerin Dış Görünüşü

PIC'ler çok farklı ambalajlarla piyasaya sunulmaktadırlar.Bunlardan bir tanesi şekil

2.’de gösterilmiştir.

Şekil 2. PIC16F84A dış görünüşü

1.4. PIC16F84A’nın Özellikleri

1.4.1. PIC16F84A’nın Yapısı

PIC RISC ( Reduced Intruction Set Computer ) denilen azaltılmış komut sistemini

kullanmaktadır [2]. Bu sistem sayesinde komutlar daha sade ve daha azdır. Bir PIC’i

programlamak için 35 komut kullanılır.

PIC’de bir komutun işletimi, genellikle dışarıdan uygulanan clocklar ile

gerçekleştirilmektedir. Program belleği ( memory ) ( ROM ) ve data belleği ( memory )

birbirinden bağımsızdır. PIC16F84A’nın yapısı şekil 3.’de gösterildiği gibidir. Bu hafıza

yapısı ile her iki hafızada aynı anda çalıştırılabilmekte ve böylece işletim çok daha hızlı

olmaktadır. Data belleğinin genişliği yapıya göre değişiklik gösterir. ( Program belleği 14

Page 18: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

6

bit, data belleği 8 bit genişliğe sahiptir.) Çünkü 1 kelimenin makineye tanıtımı 14 bit ile

gerçekleştirilir.

Şekil 3. PIC16F84A’nın yapısı

1.4.2. PIC16F84A’nın Pin Görünüşü

Şekil 4. PIC16F84A’nın pin görünüşü

Page 19: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

7

Şekil 4.’de PIC’in pin numaraları verilmiştir.Bu sayede bağlantıları kolaylıkla

yapabilmekteyiz.

CMOS teknolojisi ile üretilmiş olan PIC16F84 çok az enerji harcar [1]. Flash belleğe

sahip olması nedeniyle clock girişine uygulanan sinyal kesildiğinde registerleri içerisindeki

veri aynen kalır. Clock sinyali tekrar verildiğinde PIC içerisindeki program kaldığı yerden

itibaren çalışmaya başlar. RA0-RA3 pinleri ve RB0-RB7 pinleri I/O portlandır. Bu

portlardan girilen dijital sinyaller vasıtasıyla PIC içerisinde çalışan programa veri girilmiş

olur. Program verileri değerlendirerek portları kullanmak suretiyle dış ortama dijital

sinyaller gönderir. Dış ortama gönderilen bu sinyallerin akımı yeterli olmadığı durumda

yükselteç devreleri (röle, transistör v.s) ile yükseltilerek kumanda edilecek cihaza

uygulanır. Portların maksimum sink ve source akımları tablo 1.’deki gibi aşağıda

verilmiştir. Bu akımlar genellikle bir LED sürmek için yeterlidir.

Tablo 1. Sink ve Source akımı değerleri

I/O pini

Sink akımı 25 mA

Source akımı 20 mA

Sink akımı, gerilim kaynağından çıkış potuna doğru akan akıma, source akımı ise

1/0 pininden GND ucuna doğru akan akıma denir.

Page 20: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

8

Şekil 5. PIC16F84A için besleme ve toprak bağlantısı

PIC16F84’ün çektiği akım, şekil 5.’de görüldüğü gibi besleme gerilimine, clock

girişine uygulanan sinyalin frekansına ve l/O pinlerindeki yüke bağlı olarak değişir. Tipik

olarak 4 MHz’lik clock frekansında çektiği akım 2 mA’ kadardır. Bu akım uyuma

modunda (Sleep mode) yaklaşık olarak 40 mikroA’ e düşer. Bilindiği gibi CMOS

entegrelerdeki giriş uçları muhakkak bir yere bağlanır. Bu nedenle kullanılmayan tüm

girişler besleme geriliminin +5V luk ucuna bağlanmalıdır.

1.4.3. Besleme Gerilimi

PIC'in besleme gerilimi şekil 6.’de gösterildiği gibi 5 ve 14 numaralı pinlerden

uygulanır. 5 numaralı Vdd ucu +5 V'a, 14 numaralı Vss ucu da toprağa bağlanır. PIC'e ilk

defa enerji verildiği anda meydana gelebilecek gerilim dalgalanmaları nedeniyle

istenmeyen arızaları önlemek amacıyla Vdd ile Vss arasına 0.1 F lık bir dekuplaj

kondansatörü bağlamak gerekir.

Page 21: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

9

Şekil 6. PIC16F84A’ya besleme geriliminin bağlanması

1.4.4. CLOCK Uçları ve CLOCK Osilatörü Çeşitleri

PIC belleğinde bulunan program komutlarının çalıştırılması için bir kare dalga

sinyale ihtiyaç vardır [1]. Bu sinyale clock sinyali denilir. PlC16F84'ün clock sinyal girişi

için kullanılan iki ucu vardır. Bunlar 15. Ve 16. bacaklardır. Bu uçlara farklı tipte

osilatörlerden elde edilen clock sinyalleri uygulanabilir. Clock osilatör tipleri tablo 2.’deki

gibi şöyledir:

Tablo 2. Clock osilatör tipleri

1. RC - Direnç/kondansatör (Resistor/Capacitor).

2. XT - Kristal veya seramik resonatör (Xtal).

3. HS - Yüksek hızlı kristal veya seramik resonatör (High Speed ).

4. LP - Düşük frekanslı kristal (Low Power).

Page 22: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

10

Seçilecek olan osilatör tipi PIC'in kontrol ettiği devrenin hız gereksinimine bağlı

olarak seçilir. Aşağıdaki tablo 3.’de hangi osilatör tipinin hangi frekans sınırları içerisinde

kullanılabileceğini gösterir.

Tablo 3. Osilatör tiplerinin frekans aralıkları

Osilatör tipi Frekans sınırı

RC 0 – 4 MHz

LP 5 – 200 KHz

XT 100 KHz – 4 MHz

HS (-04) 4 MHz

HS (-10) 4 – 10 MHz

HS (-20) 4 – 20 MHz

PIC'e bağlanan clock osilatörünün tipi __CONFIG _CP_OFF & _WDT_OFF &

_PWRTE_ON & _XT_OSC şeklinde programlama esnasında PIC içerisinde bulunan

konfigürasyon bitlerine yazılır.

RC clock osilatörü, PIC'in kontrol ettiği elektronik devredeki zamanlamanın çok

hassas olması gerekmediği durumda kullanılır. Belirlenen değerden yaklaşık %20 sapma

gösterebilirler. Bir direnç ve kondansatörden oluşan bu osilatörün maliyeti oldukça

düşüktür. OSC1 ucundan uygulanan clock frekansı R ve C değerlerine bağlıdır. Şekil 7.’de

RC osilatörün clock girişine bağlanışı ve tablo 4.’de de çeşitli R, C değerlerinde elde edilen

osilatör frekansları örnek olarak verilmiştir.

Page 23: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

11

Tablo 4. Çeşitli R, C değerlerinde elde edilen osilatör frekansları

Şekil 7. RC osilatörünün PIC’e bağlantısı

OSC1 ucundan uygulanan harici clock frekansının 1/4'ü OSC2 ucunda

görülür. Bu clock frekansı istenirse devrede kullanılan diğer bir elemanı sürmek için

kullanılabilir.

Kristal ve kondansatör kullanılarak yapılan osilatörler de zamanlamanın

önemli olduğu yerlerde kullanılır. Kristal osilatörlerin kullanıldığı devrelerde kristale

bağlanacak kondansatörün seçimine özen göstermek gerekır. Aşağıdaki tablo 5.’de hangi

Page 24: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

12

frekansta kaç (F lık kondansatör kullanılacağını gösteren tablo görülmektedir. Bu proje

de 4MHZ için 22pF kullandım.

Tablo 5. Kondansatör değerlerinin osilatör tiplerine bağlı olarak belirlenmesi

Seçilen kondansatör değerlerinin tablo 5.’deki değerlerden yüksek olması, elde

edilen kare dalgaların bozuk olmasına ve PIC'in çalışmamasına neden olur. C1 ve C2

kondansatörlerin değerleri birbirine eşit olmalıdır.

Şekil 8. Kristal ve kondansatörlerin PIC’e bağlantısı

Page 25: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

13

1.4.5. Program Belleği

Assembly’de kullanılan komutlarla yazılmış programın yüklendiği alandır [2]. Bu alan

PIC16F84’de EEPROM şeklindedir. Program yazıcısı kullanarak ROM’a programımızı

yazabiliriz. Çünkü elektrik sinyali ile yazılıp silinebilme özelliği vardır. Mikrodenetleyici

uygulayacağı komutları ve işlem sırasını bunun ilgili adreslerine bakarak uygular. İlgili

adresler ise PC ( Program Counter ) program sayıcında saklanır. Bir PIC’te ROM belleğe

yaklaşık 1 milyon defa program yazılabilir. Şekil 9.’da verilen program belleğinin genişliği

14 bittir. PIC16F84 program belleğinin 1024 ( 1K ) alanı, 000 dan 3FF kadar olan

adrestedir.

Şekil 9. Pic16F84A’nın program belleği

1.4.5.1 RAM Bellek (Veri Belleği)

Page 26: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

14

Veri belleği iki tip alandan oluşur. Birincisi özel fonksiyon ( Special Function Register )

( SFR ) yazmaç alanı(ki programda kullandığım özel bir registerdır ), ikincisi ise genel

amaçlı ( General Purpose Register) ( GPR ) yazmaçtır. SFR yazmacı işletim kontrolü

yapar.

Veri belleği banklar halinde bölümlenmiştir. Şekil 10.’da da görüldüğü gibi Bank 0 ve

Bank 1 olarak iki bank vardır. Her iki bankta da SFR ve GPR alanları bulunur. SFR

çevresel fonksiyonları kontrol eden registerlar için kullanılır. Bank bölümlemesinden

dolayı, bank seçimi için kontrol bitlerinin kullanımını gerektirir. Bu kontrol bitleri

STATUS registerinde bulunur.

Bank0’ı seçmek için RP0 bitini ( ki bu STATUS’un 5. biti oluyor ) temizlemek gerekir.

Aynı bitin kurulması ( set ) ile de BANK1 seçilmiş olur. Her iki bankın ilk on ikisinin

yerleşimi özel fonksiyon kaydı için ayrılmıştır. Kalanı ise statik RAM olarak genel amaçlı

kayıtları yürütmektedir

Şekil 10. RAM belleği yapısı(File Register haritası)

Page 27: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

15

1.4.5.2. Yığın Hafıza

PIC16F84, 8 derinliğinde ve 13 bit genişliğinde yığına (stack) sahiptir [2]. Bu yığın

alanı, program veya bilgi (data) yeri değildir ve direkt olarak okunamaz veya yazılamazlar.

Temel amacı program içerisinde bir alt programa geçiş olduğunda program sayacının

değerini saklamaktır.

CALL komutu işletildiğinde veya kesme uygulandığı zaman, 13 bitlik ( PC ) program

sayıcının tamamı, stack üzerine kopyalanır, bu işleme “pushed “ denir. Yığındaki bu adres

alt programlar çalışıp bittikten sonra en sonunda bulunan ‘RETLW, RETFIE veya

RETURN’ komutları ile stack’dan program sayasına aktarılır, bu işlemede “popped” denir.

Dolayısıyla program kaldığı yerden devam eder. Burada dikkat edilmesi gereken bir

programda iç içe en fazla 8 altprogram veya kesme kullanabiliriz. Fazla kullandığımız

takdirde yığın taşması dediğimiz ( stack overflow ) hatası belirir.

1.4.5.3. W Register

W ( working ) yazmacı bilgilerin geçici olarak depolandığı ve bilgilerin aktarılmasında

kullanılan bir kısımdır [2]. PIC’te yapılan tüm işlemler ve atamalar bunun üzerinden

yapılmak zorundadır. Direk olarak aktarılamayan yerlerde geçici bir register olarak

kullanılır. Aşağıdaki şekil 11.’de bir örneği verilmiştir.

Page 28: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

16

Şekil 11. W Register’ini kullanarak bilgi aktarılmasına bir örnek

Page 29: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

2. PIC PROGRAMLAMA

2.1. Pic Assembly Dilini Kullanarak Pic Programlama

Assembly dili, bir PIC'e yaptırılması istenen işlerin belirli kurallara göre yazılmış

komutlar dizisidir [1]. Assembly dili komutları ingilizce dilindeki bazı kısaltmalardan

meydana gelir. Bu kısaltmalar genellikle bir komutun çalışmasını ifade eden cümlenin baş

harflerinden oluşur.

2.2. Girintiler ve Program Bölümleri

Bir assembly programı temel olarak dört bölüme ayrılır. Bunlar şekil 12.’deki

görüldüğü gibi başlık, atama, program ve sonuç bölümleridir.

Şekil 12. Assembly dilinde programın yazılış şekli

Page 30: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

18

2.3 Kesmeler

PIC16F84A için 4 değişik kaynaktan kesme sinyali elde edilebilir.

Bunlar:

1-RB0/INT harici interrupt pini

2-Port B high level change.RB4,RB5,RB6,RB7 pinlerinin herhangibirinde meydana gelen

değişillikler

3-TMR0, 0xFF'den 0x00'a geçerkenoluşturduğu kesme

4-EEPROM yazma işlemi tamamlandığında oluşan kesme

Kesme sinyalinin aktif olabilmesi için GIE bitinin lojik-1 yapılması ve kesme şeklinin

seçilmesi gerekir.

Kesmeleri anlatabilmek için önce PIC16F84A’da bulunan register’ları tanıtmak gerekiyor.

Öncelikle STATUS Register’ı, banklar arası geçiş yapmakta kullanmaktayız. Şekil 13.de de

görüldüğü gibi bu register içeriğinde aritmetik lojik ünitesi(ALU) durumu, reset durumu ve

bank seçme bilgileri bulunur. 6.bit ve 5.bitler bank seçme bitleridir. Sıklıkla Bank0 ve Bank1

kullanılır ve bunun içinde bu bitler; Bank0 için ‘00’, Bank1 için ise ‘01’ olur.

Şekil 13. Status Register yapısı

Page 31: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

19

Option Register, 8 bitlik bir registerdir [2]. Şekil 14.’de de görüldüğü gibi bu register

ile TMR0/WDT’ye ait frekans bölme sayısı, B portu bitlerinin pull-up yapılma kontrolleri ve

harici kesmelerin ayarlanması gibi işlemler yapılır.

Şekil 14. Option Register yapısı

Bit7: RBPU

0: PortB Pull-Up disable

1: PortB Pull-Up enable

Bit6: INTEDG

0:PB0 düşen kenarda interrupt kabul eder.

1:PB0 yükselen kenarda interrupt kabul eder.

Bit5: T0CS

0:T0CKI den gelen darbeler Clock kabul edilir

1:Clock kaynagı XTAL in ürettigi dahili darbeler olur.

Bit4: T0SE (T0CS=1 ise)

0:T0CKI den gelen darbeler yükselen kenarda clock’u arttırır.

1: T0CKI den gelen darbeler düşen kenarda clock’u arttırır.

Page 32: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

20

Bit3: PSA

0:Prescaler TMR0 için ayarlı

1:Prescaler WDT için ayarlı

Bit2,1,0: Prescaler set etme

INTCON Register, intcon registeri yazılabilir ve okunabilir özel bir registerdir, ismini

INTerrupt CONtrol kelimelerinin kısaltılmış halinden alır. Bu register ile

INTERRUPT(Kesme) ayarlarını yaparız. Bu register ile her bir kesme ile ilgili bir bayrak

(flag) bulunur ve kesme ile ilgili ayarları bu bayraklar sayesinde yaparız. Şekil 15.’de

INTCON Register görülmektedir

Şekil 15. INTCON Register yapısı

GIE Tüm kesme işlemlerini etkin/iptal etme bayrağı

0: Tüm kesmeler iptal

1: Aktif yapılmış olan tüm kesmeler etkin

EEIE EEPROM belleğe yazma işlemi tamamlama kesmes

0: Geçersiz

1: Geçerli

TOIE TMR0 sayıcı kesmesini aktif yapma bayrağı

0: Geçersiz

1: Geçerli

Page 33: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

21

INTE Harici kesmeyi aktif yapma bayrağı

0: Geçersiz

1: Geçerli

RBIE PORTB (4, 5, 6, 7) deki değişiklik kesmesini aktif yapma bayrağı

0: Geçersiz

1: Geçerli

TOIF TMR0 sayıcısı zaman aşımı bayrağı

0: Zaman aşımı yok

1: Zaman aşımı var

INTF Harici kesme bayrağı

0: Harici kesme oluşmadı

0: Harici kesme oluştu

RBIF PORTB değişiklik bayrağı

0: RB4-RB7 uçlarının hiç birinde değişiklik yok

1: RB4-RB7 uçlarından en az birisinde değişiklik var.

Page 34: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

3. PROGRAMLANABİLİR ZAMANLAYICI

3.1. PIC16F84A İle Programlanabilir Zamanlayıcı

Programlanabilir Zamanlayıcı 3 kısımdan oluşur. Bunlar: Butonlar (Sayı Girişleri),

İşleme ve Display’de gösterme.

3.1.1. Butonlar

Kullandığım tuş sayısı 16 olduğu için bir buton entegresi olan 74C922 kullanarak daha

çok tuş kullanarak daha az portu işgal etmiş oldum.

74C922 Entegresi, 4 satır ve 4 sütun taramalı,16 tuşu kontrol eden CMOS yapılı buton

entegresidir [3]. 3V yada 15V gerilim altında çalışır. Çıkış bilgilerini tutan registeri vardır.

Yx hatları satırlar, Xx hatları sütunlardır. OE chip Enable ucudur ve Low aktiftir. OE low

olduğunda çıkış uçları, çıkış registerindaki bilgiyi gösterir. Herhangi bir tuş basılı ise

DA(Data Avaible) ucu lojik-1 olur. OE aktif olana kadar tuşun değeri veri çıkış uçlarında

görünmez.

Herhangi bir tuşa basıldığında 74C922'nin DA ucu lojik-0'dan lojik-1'e konum

değiştirir. RB0'a bağlı bu uç sayesinde PIC16F84A kesme sinyalini alır ve PC(Program

Counter) 0x04 adres değerini alır. Buradan goto klavye komutuna geçer ve böylece

program 'klavye' adlı kesme alt programından itibaren devam eder. Klavye alt programında

önce PortB'nin değeri okunur. Örneğin 3 tuşuna basılmış ise PortB'nin değeri '0011 0001'

olarak okunur. Üst dört bitte tuş bilgisi, alt dört bitte ise RB0 aktif vardır. Önemli olan tuş

bilgisidir. Üst dört bitin önemi yoktur. Bu yüzden SWAPF komutu ile üst dört bit ile alt

dört bit yer değiştirilir. Ve '0001 0011' halini alır. Son olarak üst dört bit, (0F)h ile AND

işlemi yapılır ve sıfırlanır. Sonuçta '0000 0011' yani 3 desimal değeri elde edilir ve bu

değer PortA'ya gönderilir. RETFIE komutu ile kesme alt programından çıkılır.

Page 35: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

23

Kesme alt programında iken PIC16F84A, otomatik olarak GIE bitini RETFIE komutuna

gelene kadar lojik-0 yapar. Böylece kesme alt programı işlenirken meydana gelecek ikinci bir

kesmeye izin verilmez.

3.1.2 Display

Burada kullanılan display’ler ortak anotludur.Display’leri sürmek için biir 7447 entegresi

kullanılır. Bu entegrenin kullanılmasının sebebi, rakamlardan sonraki veriler (9’dan sonraki

semboller) için de çıkış verebilmesidir. Böylece 4x4 klavyedeki her tuşa (F hariç) ait bir

sembol display’lerde görülebilir.

4x4 klavye devresindeki gibi tarama yöntemi kullanan program ile 4 display’i tek sürücü

ile kontrol edilebilir. Bunun için display’lerin ortak anod uçları hariç diğer segment uçları kısa

devre edilerek 100 ohm’luk direnç üzerinden 7447’ye bağlanır [3]. Bu durumda 7447’den

gelen bilgi hangi display’in ortak anodunda gerilim varsa o display’de görülecektir. 1

rakamını 7447’den gönderirken sadece MSB (en yüksek değerlikli, en soldaki) display’in

ortak anodunda gerilim olacak, diğerlerinde gerilim olmayacaktır. 2 rakamı ise onun

sağındaki display’de gözükmesi gerektiğinden bu display akif olurken diğerleri aktif

olmayacaktır. Bu şekilde Display’de rakamlar belirir.

PIC16F84A’nın tanıtımı ve komutlarının açıklanmasının ardından assembly dili kullanarak ‘Programlanabilir Zamanlayıcı’ programı aşağıdaki gibidir [3].

list p=16F84

#include <p16F84.inc>

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; konfigurasyon satırı

i equ 0x0C ; Dizi boyutu

_status equ 0x0D ; Status Register’in kopyası

_w equ 0x0E ; W Register’in kopyası

sayi equ 0x10 ; Display içeriği

Page 36: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

24

sn equ 0x1C ; 1 sn’lik sayaç

count equ 0x1D ; Display’ler için döngü

int2 equ 0x1E ; 2. Defa kesme

tus equ 0x1F ; Tuş değeri

RA4 equ 0x1B

org 0x00

goto basla ; Ana program

org 0x04

goto interrupt ; Kesme programı (1 sn)

basla;

clrwdt

call initial ; Portları kur

call clear ; Register içeriklerini sıfırla

tekrar call display ; Display’lere yaz

goto tekrar

initial;

bsf STATUS,RP0 ; Bank1’e geç

movlw 0xF0

movwf TRISB ; PortB’nin ilk 4 biti giriş,son 4 biti çıkış

movlw 0x00

movwf TRISA ; PortA çıkış

movlw b'10001000' ; GIE ve RBIE aktif

movwf INTCON ; INTCON Register’i kur

movlw b'10000100' ; Prescaler değeri 32,dahili komut saykılı seçili

movwf OPTION_REG

bcf STATUS,RP0 ; Bank0’a dön

clrf PORTA

return

Page 37: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

25

clear;

movlw sayi

movwf FSR ; İlk register adresini tut

movlw 0x0F ; 15 adet değişken

movwf i

sifir clrf INDF ; Sıfırla

incf FSR

decfsz i

goto sifir

return

display;

movlw 4 ; Sayı dizisinin boyutu

movwf i ; i < 4

movlw sayi ; Sayı dizisinin başlangıç adresini

movwf FSR ; FSR’ye yaz

movlw b'11111110' ; 1.Dijiti seç

movwf PORTB

tara movf INDF,W ; Dizinin elemanını W’ye yaz

iorwf RA4,W ; W ve F register içeriklerini OR yap

movwf PORTA ; PortA’dan gönder.

call timer_low ; Bir süre bekle

incf FSR ; Dizinin bir sonraki elemanının adresine ulaş

bsf STATUS,C ; Caryy set

rlf PORTB,F ; Aktif olan dijiti bir sola kaydır

decfsz i ; Dizinin son elemanına ulaşıldı mı?

goto tara ; Hayır. Taramaya devam et.

Return , Evet. Alt programdan çık.

timer_low;

movlw 0xFF

Page 38: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

26

movwf count ; 0xFF’ i , count’a yükle

next decfsz count,F ; Sonuç sıfır mı?

goto next ; Hayır. Next’e git

return ; Evet. Alt programdan çık.

İnterrupt;

movwf _w ; _w < w

movf STATUS,W

movwf _status ; _status < STATUS

btfss INTCON,RBIF ; Buton kesmesi var mı?

goto $+3 ; Hayır. Timer interrupt satırına git.

call klavye_interrupt ; Klavye interrupt alt programını çağır.

goto int_son ; İnterrup son işlemlerini yap.

btfsc INTCON,T0IF ; Timer interrupt’ı var mı?

call timer_interrupt ; Evet. Timer interrupt alt programına git

int_son movf _status,W ; STATUS değerini geri yükle

movwf STATUS

movf _w,W ; W değerini geri yükle

retfie ; İnterrupt programından çık

timer_interrupt;

bcf INTCON,T0IF ; T0IF bayrağını temizle

incf sn ; sn bir arttır.

movlw .125

subwf sn,W ; 1 sn ayarı

btfss STATUS,Z

goto int_son ; Hayır.

clrf sn ; Evet. Sn=0

decf sayi ; Sayi’yı bir eksilt

call test_FF ; Sonuç FF mi?

call test_0000 ; Displaydeki sayılar 0000 oldu mu?

Page 39: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

27

return

klavye_interrupt;

bcf INTCON,RBIF ; RBIF sıfırla

bcf INTCON,T0IF ; T0IF sıfırla

bcf RA4,4 ;

incf int2,F ; int2 bir arttır

btfsc int2,1 ; Tuş serbest bırakıldı mı?

goto kly_cik ; Evet. Klavye alt programından çık.

swapf PORTB,W ; PortB’nin üst 4 biti ile alt 4 bitini yer değiştir.

andlw 0x0F ; Üst 4 biti sıfırla

sublw 0x0F ; Sonuç F mi?

btfsc STATUS,Z ; Evet

goto kly_son ; Tuş serbest.Alt programdan çık

bcf INTCON,T0IE ; Rakamlar girilirken sayıcıyı durdur.T0IE pasif.

swapf PORTB,w ; PortB’nin üst 4 biti ile alt 4 bitini yer değiştir.

andlw 0x0F ; Üst 4 biti sıfırla

movwf tus ; sonucu PortA’ya gönder

sublw 0x0A ; Basılan tuş Enter mı?

btfss STATUS,Z

goto rakam

clrf sn

bsf INTCON,T0IE ; Rakam girildiğinde sayıcıyı yeniden başlat

goto kly_son ;

rakam movf sayi+2,W ; Dijitleri sola kaydır

movwf sayi+3 ; Yeni tuş değerini

movf sayi+1,W ; En sağdaki

movwf sayi+2 ; Dijite yaz

movf sayi,W

movwf sayi+1

Page 40: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

28

movf tus,W

movwf sayi

goto $+2 ; kly_son’a git

kly_cik clrf int2

kly_son return ; Klavye interrupt alt programından çık

test_FF;

movlw 0xFF

subwf sayi,W

btfss STATUS,Z ; Sayi[0]=255 mi?

goto a_son ; Hayır. Alt programdan çık.

movlw 9

movwf sayi ; Evet. Sayı[0]=9

decf sayi+1 ; Sayı[1] = Sayı[1] - 1

movlw 0xFF

subwf sayi+1,W

btfss STATUS,Z ; Sayi[1]=255 mi?

goto a_son ; Hayır. Alt programdan çık.

movlw 9

movwf sayi+1 ; Evet. Sayı[1]=9

decf sayi+2 ; Sayı[2] = Sayı[2] - 1

movlw 0xFF

subwf sayi+2,W

btfss STATUS,Z ; Sayi[2]=255 mi?

goto a_son ; Hayır. Alt programdan çık.

movlw 9

movwf sayi+2 ; Evet. Sayı[2]=9

decf sayi+3 ; Sayı[3] = Sayı[3] - 1

movlw 0xFF

subwf sayi+3,W ;

Page 41: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

29

btfss STATUS,Z ; Sayi[3]=255 mi?

goto a_son ; Hayır. Alt programdan çık.

movlw 9

movwf sayi+3 ; Evet. Sayı[3]=9

a_son return

test_0000; Tüm Displayler 0 mı ?

movf sayi,W

btfss STATUS,Z

goto t_end

movf sayi+1,W

btfss STATUS,Z

goto t_end

movf sayi+2,W

btfss STATUS,Z

goto t_end

movf sayi+3,W

btfss STATUS,Z

goto t_end

bsf RA4,4

bcf INTCON,T0IE ; Saymayı durdur.

t_end return

end

Programda değinilmesi gereken bir kısım vardır ki o da INDF ve FSR komutlarıdır.

İndirekt Adresleme: Dolaylı adresleme diğer adresleme türlerine göre biraz daha karışık ve

hata oranı daha fazladır. Bu adresleme türünde veri yazmak istediğimiz adresi başka bir

registerın içine yazıyoruz, bu exra registera yazdığımız adrese de başka bir register yardımıyla

veri yazabiliyoruz. İşte bu eksra registerlar; FSR ve INDF register’leridir.

FSR register: Veri aktarmak istediğimiz adresin taşındığı registerdır.

INDF register: FSR’nin adreslediği yere karşılık geliyor, RAM bellekte adresi bulunan

Page 42: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

30

fiziksel bir register değildir.

INDF registerını kullanan bir komut geldiğinde FSR’nin gösterdiği registerın içindeki

veriye ulaşmak için kullanılır.

Page 43: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

31

3.2. Programlanabilir Zamanlayıcı Devre Şeması

Aşağıda şekil 16.’da da görüldüğü gibi devrenin simülasyonunu Proteus’un ISIS programı

ile yaptım.

Şekil 16. Programlanabilir Zamanlayıcı’nın simülasyonu

Page 44: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

32

3.3. Programlanabilir Zamanlatıcı Devresinin Delikli Pertinanks Üzerinde

Gerçeklemesi

Şekil 17.’de de görüldüğü gibi devreyi öncelikle delikli perdinaksta gerçekleştirdim.

Şekil 17. Programlanabilir zamanlayıcı devresinin delikli pertinanks üzerinde gerçeklemesi

Page 45: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

33

3.4. Devrenin Karta Baskı Devresi

Devrenin şekil 18.’de olduğu gibi baskı devresini gerçekleştirdim.

Şekil 18. Programlanabilir Zamanlayıcı’nın devre baskısı

Page 46: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

34

3.5. Devrenin Gerçeklenmesi

Bütün aşamaları bitirdikten sonra şekil 19.’daki gibi devrenin baskı devresini plakete

ütü yöndemi ile geçirdim ve elemanları yerrleştirerek devreyi çalıştırdım.

Şekil 19. Devrenin son hali

Page 47: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

4. SONUÇLAR

Programlama aşamasında bir takım sonuçlarla karşılaştım. Devreyi gerçekleştirme

sürecinde 74C922 entegresini bulmak için çok zaman harcadım ve sonuç olarak projeyi

delikli pertinaks üzerinde gerçekledim. Daha sonra ISIS de çizilmiş devreyi Ares de

çizerek karta baskı devresini yaptım. 74C922 entegresi zor bulunan bir entegre olduğundan

onu devreye daha sonra ekleyeceğim. Devre bu şekilde de gerçek hayatta çalışır vaziyette

fakat buton sürücüsü olmadığından değişik simgelerle karşılaştım.

Devrenin son halini gerçekleştirdim. Devre istenildiği gibi çalışmaktadır.

Page 48: PROGRAMLANABİLİR ZAMANLAYICI · 2011-06-06 · t.c. karadenİz teknİk Ünİversİtesİ mÜhendİslİk fakÜltesİ elektrİk-elektronİk mÜhendİslİĞİ bÖlÜmÜ programlanabİlİr

5. KAYNAKLAR

[1] ALTINBAŞAK Orhan, ”Mikrodenetleyiciler ve PIC Programlama”, Altaş

Yayıncılık ve Elektronik,2006.

[2] BEREKET Metin,TEKİN Engin, “Mikroişlemciler PIC16F84 Uygulamaları”,

MEB Yayınları, 2005.

[3] KARAKAŞ, Hakan,”İleri PIC16F84 Uygulamaları”, Altaş Yayıncılık ve

Elektronik, 2002.